private void LoadData(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog();

            dialog.InitialDirectory = @"C:\";
            dialog.Filter           = "mm files (*.mm)|*.mm";
            dialog.RestoreDirectory = true;

            if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                Data jsonMonster = new Data();
                jsonMonster = JsonConvert.DeserializeObject <Data>(System.IO.File.ReadAllText(dialog.FileName));
                TraitsList.Items.Clear();
                Monster.Input(jsonMonster);

                foreach (Ability item in Monster._Abilities)
                {
                    TraitsList.Items.Add("Ability: " + item.Title);
                }

                foreach (Attack item in Monster._Attacks)
                {
                    TraitsList.Items.Add("Attack: " + item.Title);
                }

                foreach (string language in Monster._Languages)
                {
                    TraitsList.Items.Add("Language: " + language);
                }

                foreach (string senses in Monster._Senses)
                {
                    TraitsList.Items.Add("Sense: " + senses);
                }

                foreach (string CImmunity in Monster.ConditionImmunities)
                {
                    TraitsList.Items.Add("Condition Immunity: " + CImmunity);
                }

                foreach (string DImmunities in Monster.DamageImmunities)
                {
                    TraitsList.Items.Add("Damage Immunity: " + DImmunities);
                }

                foreach (string DResistance in Monster.DamageResistances)
                {
                    TraitsList.Items.Add("Damage Resistance: " + DResistance);
                }

                foreach (string DVulnerability in Monster.DamageVulnerability)
                {
                    TraitsList.Items.Add("Damage Vulnerability: " + DVulnerability);
                }

                foreach (string SavingThrow in Monster.SavingThrowBonuses)
                {
                    string temp      = SavingThrow.Split(' ')[0];
                    int    tempBonus = 0;
                    int.TryParse(SavingThrow.Split('+')[1], out tempBonus);

                    switch (temp)
                    {
                    case "Str":
                        StrSaveBonusUpDown.Value = tempBonus;
                        break;

                    case "Dex":
                        DexSaveBonusUpDown.Value = tempBonus;
                        break;

                    case "Con":
                        ConSaveBonusUpDown.Value = tempBonus;
                        break;

                    case "Int":
                        IntSaveBonusUpDown.Value = tempBonus;
                        break;

                    case "Wis":
                        WisSaveBonusUpDown.Value = tempBonus;
                        break;

                    case "Cha":
                        ChaSaveBonusUpDown.Value = tempBonus;
                        break;
                    }
                }

                foreach (string SkillBonus in Monster.SkillBonuses)
                {
                    TraitsList.Items.Add(SkillBonus);
                }
            }
        }
 private void DexterityAttackButton_Click(object sender, EventArgs e)
 {
     HitDiceBonusDamage.Value = Convert.ToInt32(Monster.StatMod(Monster.DEX));
     AttackBonusUpDown.Value  = Convert.ToInt32(Monster.StatMod(Monster.DEX)) + Monster.CR.profBonus;
 }
        private void GenerateMonsterData()
        {
            if (Monster.output.Count > 0)
            {
                Monster.Clear();
            }

            int.TryParse(ProfBonus.Text, out Monster.proficency);

            Monster.CreatureName  = MonsterNameTextBox.Text;
            Monster.CreatureSize  = SizeDropDown.Text;
            Monster.CreatureAlign = AlignmentDropDown.Text;
            Monster.CreatureType  = TypeDropDown.Text;

            if (!String.IsNullOrEmpty(TagDropDown.Text))
            {
                Monster.CreatureType += " (" + TagDropDown.Text + ")";
            }

            Monster.STR = (int)StrUpDown.Value;
            Monster.DEX = (int)DexUpDown.Value;
            Monster.CON = (int)ConUpDown.Value;
            Monster.INT = (int)IntUpDown.Value;
            Monster.WIS = (int)WisUpDown.Value;
            Monster.CHA = (int)ChaUpDown.Value;

            Monster.Speed = SpeedUpDown.Value.ToString();
            if (burrowUpDown.Value > 0)
            {
                Monster.Speed += ", Burrow: " + burrowUpDown.Value;
            }
            if (ClimbUpDown.Value > 0)
            {
                Monster.Speed += ", Climb: " + ClimbUpDown.Value;
            }
            if (FlyUpDown.Value > 0)
            {
                Monster.Speed += ", Fly: " + FlyUpDown.Value;
            }
            if (HoverCheckBox.Checked)
            {
                Monster.Speed += " (Hover)";
            }
            if (SwimUpDown.Value > 0)
            {
                Monster.Speed += ", Swim: " + SwimUpDown.Value;
            }

            Monster.AC = ACUpDown.Value + " " + ACSourceTextBox.Text;
            Monster.HP = HitDieTextBox.Text;
            Monster.CR = ChallengeRatingDropDown.Text;

            foreach (string item in TraitsList.Items)
            {
                switch (item.Split(':')[0])
                {
                case "Skill":
                    Monster.AddSkillBonus(item);
                    break;

                case "Skill+":
                    Monster.AddSkillBonus(item);
                    break;

                case "Damage Vulnerability":
                    Monster.AddDamageVulnerabilities(item.Split(':')[1].Trim());
                    break;

                case "Damage Resistance":
                    Monster.AddDamageResistance(item.Split(':')[1].Trim());
                    break;

                case "Damage Immunity":
                    Monster.AddDamageImmunity(item.Split(':')[1].Trim());
                    break;

                case "Condition Immunity":
                    Monster.AddConditionImmunity(item.Split(':')[1].Trim());
                    break;

                case "Language":
                    Monster._Languages.Add(item.Split(':')[1].Trim());
                    break;

                case "Sense":
                    Monster._Senses.Add(item.Split(':')[1].Trim());
                    break;
                }
            }

            if (StrSaveBonusUpDown.Value > 0)
            {
                Monster.AddSavingThrow("Str +" + StrSaveBonusUpDown.Value);
            }
            if (DexSaveBonusUpDown.Value > 0)
            {
                Monster.AddSavingThrow("Dex +" + DexSaveBonusUpDown.Value);
            }
            if (ConSaveBonusUpDown.Value > 0)
            {
                Monster.AddSavingThrow("Con +" + ConSaveBonusUpDown.Value);
            }
            if (IntSaveBonusUpDown.Value > 0)
            {
                Monster.AddSavingThrow("Int +" + IntSaveBonusUpDown.Value);
            }
            if (WisSaveBonusUpDown.Value > 0)
            {
                Monster.AddSavingThrow("Wis +" + WisSaveBonusUpDown.Value);
            }
            if (ChaSaveBonusUpDown.Value > 0)
            {
                Monster.AddSavingThrow("Cha +" + ChaSaveBonusUpDown.Value);
            }

            ShowMonster();
        }
 private void StrengthAttackButton_Click(object sender, EventArgs e)
 {
     //Console.WriteLine(Monster.CR.AttackBonus + " " + Monster.CR.profBonus);
     HitDiceBonusDamage.Value = Convert.ToInt32(Monster.StatMod(Monster.STR));
     AttackBonusUpDown.Value  = Convert.ToInt32(Monster.StatMod(Monster.STR)) + Monster.CR.profBonus;
 }