public void SorcSubGen(PlayerClass pc, PlayerStat ps)
        {
            int subclassnum = rand.Next(0, 1);

            switch (subclassnum)
            {
            case 0:
                pc.SubClassName = "Draconic Bloodline";
                break;

            case 1:
                pc.SubClassName = "Wild Magic";
                break;
            }
        }
        public PlayerClass(int level, PlayerStat stats)
        {
            // Class Selector will select and determine class, passing it to a class function
            // class function will be child of this class
            // HP should be calculated within the class
            int Level = level;

            // Generate these numbers and update stat sheet.
            // Function needed to gernate ASI result should include pushing ASI to PlayerStats in random selection per each level;
            // ASI = ASIGen(Level, Stats);
            ASI = 0;

            // Proficiensies should be true and the selected profic should be true in PlayerStat;
            // Proficiencies = ProGen(Level, Stats);
            Proficiencies = false;

            // Generate Hp and update PlayerStat, happen in each Player class;
            ClassHP = 0;
        }
        public void WarlockSubGen(PlayerClass pc, PlayerStat ps)
        {
            int subclassnum = rand.Next(2, 3);

            switch (subclassnum)
            {
            case 0:
                pc.SubClassName = "The Archfey";
                break;

            case 1:
                pc.SubClassName = "The Great Old One";
                break;

            case 2:
                pc.SubClassName = "The Fiend";
                break;
            }
        }
        public PlayerStat Wizard(int level, PlayerStat Stats, PlayerClass pClass)
        {
            int Level    = level;
            int NumOfPro = 2;

            // Skills: Choose { "Arcana", "History", "Insight", "Investigation", "Medicine", "Religion"};
            int[] SkillList = { 5, 4, 6, 8, 9, 14 };
            Proficiencies = ProGen(Level, Stats, NumOfPro, SkillList);
            // ASI assignment
            Stats          = ASIGen(Level, Stats, pClass);
            Stats.IntSaveB = true;
            Stats.WisSaveB = true;
            // Hp Generation
            int Base   = 6;
            int ConMod = Stats.ConMod;

            ClassHP          = HPCalc(Level, Base, ConMod);
            Stats.HitPoints += ClassHP;
            WizSubGen(pClass, Stats);
            return(Stats);
        }
        public PlayerStat Warlock(int level, PlayerStat Stats, PlayerClass pClass)
        {
            int Level    = level;
            int NumOfPro = 2;

            // Skills: Choose { "Arcana", "Deception", "History", "Intimidation", "Investigation", "Nature",  "Religion"};
            int[] SkillList = { 5, 3, 4, 7, 8, 10, 14 };
            Proficiencies = ProGen(Level, Stats, NumOfPro, SkillList);
            // ASI assignment
            Stats          = ASIGen(Level, Stats, pClass);
            Stats.WisSaveB = true;
            Stats.ChaSaveB = true;
            // Hp Generation
            int Base   = 8;
            int ConMod = Stats.ConMod;

            ClassHP          = HPCalc(Level, Base, ConMod);
            Stats.HitPoints += ClassHP;
            WarlockSubGen(pClass, Stats);
            return(Stats);
        }
        public PlayerStat Sorcerer(int level, PlayerStat Stats, PlayerClass pClass)
        {
            int Level    = level;
            int NumOfPro = 2;

            // Skills: Choose {"Arcana","Deception","Insight","Intimidation", "Persuasion", "Religion"};
            int[] SkillList = { 5, 3, 6, 7, 13, 14 };
            Proficiencies = ProGen(Level, Stats, NumOfPro, SkillList);
            // ASI assignment
            Stats          = ASIGen(Level, Stats, pClass);
            Stats.ConSaveB = true;
            Stats.ChaSaveB = true;
            // Hp Generation
            int Base   = 6;
            int ConMod = Stats.ConMod;

            ClassHP          = HPCalc(Level, Base, ConMod);
            Stats.HitPoints += ClassHP;
            SorcSubGen(pClass, Stats);
            return(Stats);
        }
        public PlayerStat Rogue(int level, PlayerStat Stats, PlayerClass pClass)
        {
            int Level    = level;
            int NumOfPro = 4;

            // Skills: Choose { "Acrobatics", "Athletics", "Deception","Insight","Intimidation","Investigation", "Perception", "Performance", "Persuasion", "SleightofHand", "Stealth"};
            int[] SkillList = { 2, 1, 3, 6, 7, 8, 11, 12, 13, 15, 16 };
            Proficiencies = ProGen(Level, Stats, NumOfPro, SkillList);
            // ASI assignment
            Stats          = ASIGen(Level, Stats, pClass);
            Stats.IntSaveB = true;
            Stats.DexSaveB = true;
            // Hp Generation
            int Base   = 8;
            int ConMod = Stats.ConMod;

            ClassHP          = HPCalc(Level, Base, ConMod);
            Stats.HitPoints += ClassHP;
            RogueSubGen(pClass, Stats);
            return(Stats);
        }
        public PlayerStat Ranger(int level, PlayerStat Stats, PlayerClass pClass)
        {
            int Level    = level;
            int NumOfPro = 3;

            // Skills: Choose {"AnimalHandling","Athletics","Insight","Investigation","Nature", "Perception", "Stealth", "Survival"};
            int[] SkillList = { 0, 1, 6, 8, 10, 11, 16, 17 };
            Proficiencies = ProGen(Level, Stats, NumOfPro, SkillList);
            // ASI assignment
            Stats          = ASIGen(Level, Stats, pClass);
            Stats.StrSaveB = true;
            Stats.DexSaveB = true;
            // Hp Generation
            int Base   = 10;
            int ConMod = Stats.ConMod;

            ClassHP          = HPCalc(Level, Base, ConMod);
            Stats.HitPoints += ClassHP;
            RangerSubGen(pClass, Stats);
            return(Stats);
        }
        public PlayerStat Paladin(int level, PlayerStat Stats, PlayerClass pClass)
        {
            int Level    = level;
            int NumOfPro = 2;

            // Skills: Choose { "Athletics","Insight","Intimidation","Medicine", "Persuasion", "Religion"};
            int[] SkillList = { 1, 6, 7, 9, 13, 14 };
            Proficiencies = ProGen(Level, Stats, NumOfPro, SkillList);
            // ASI assignment
            Stats          = ASIGen(Level, Stats, pClass);
            Stats.WisSaveB = true;
            Stats.ChaSaveB = true;
            // Hp Generation
            int Base   = 10;
            int ConMod = Stats.ConMod;

            ClassHP          = HPCalc(Level, Base, ConMod);
            Stats.HitPoints += ClassHP;
            PaladinSubGen(pClass, Stats);
            return(Stats);
        }
        public PlayerStat Monk(int level, PlayerStat Stats, PlayerClass pClass)
        {
            int Level    = level;
            int NumOfPro = 2;

            // Skills: Choose  { "Acrobatics","Athletics","History","Insight","Religion", "SleightofHand", "Stealth"}
            int[] SkillList = { 2, 1, 4, 6, 14, 15, 16 };
            Proficiencies = ProGen(Level, Stats, NumOfPro, SkillList);
            // ASI assignment
            Stats          = ASIGen(Level, Stats, pClass);
            Stats.StrSaveB = true;
            Stats.DexSaveB = true;
            // Hp Generation
            int Base   = 8;
            int ConMod = Stats.ConMod;

            ClassHP          = HPCalc(Level, Base, ConMod);
            Stats.HitPoints += ClassHP;
            MonkSubGen(pClass, Stats);
            return(Stats);
        }
        public PlayerStat Fighter(int level, PlayerStat Stats, PlayerClass pClass)
        {
            int Level    = level;
            int NumOfPro = 2;

            // Skills: Choose{ "Acrobatics", "AnimalHandling","Athletics","History","Insight","Intimidation","Perception", "Survival"};
            int[] SkillList = { 2, 0, 1, 4, 6, 7, 11, 17 };
            Proficiencies = ProGen(Level, Stats, NumOfPro, SkillList);
            // ASI assignment
            Stats          = ASIGen(Level, Stats, pClass);
            Stats.StrSaveB = true;
            Stats.ConSaveB = true;
            // Hp Generation
            int Base   = 10;
            int ConMod = Stats.ConMod;

            ClassHP          = HPCalc(Level, Base, ConMod);
            Stats.HitPoints += ClassHP;
            FighterSubGen(pClass, Stats);
            return(Stats);
        }
        public PlayerStat Druid(int level, PlayerStat Stats, PlayerClass pClass)
        {
            int Level    = level;
            int NumOfPro = 2;

            // Skills: Choose { "AnimalHandling", "Arcana", "Insight", "Medicine", "Nature", "Perception", "Religion", "Survival"};
            int[] SkillList = { 0, 5, 6, 9, 10, 11, 14, 17 };
            Proficiencies = ProGen(Level, Stats, NumOfPro, SkillList);
            // ASI assignment
            Stats          = ASIGen(Level, Stats, pClass);
            Stats.IntSaveB = true;
            Stats.WisSaveB = true;
            // Hp Generation
            int Base   = 8;
            int ConMod = Stats.ConMod;

            ClassHP          = HPCalc(Level, Base, ConMod);
            Stats.HitPoints += ClassHP;
            DruidSubGen(pClass, Stats);
            return(Stats);
        }
        public PlayerStat Cleric(int level, PlayerStat Stats, PlayerClass pClass)
        {
            int Level    = level;
            int NumOfPro = 2;

            // Skills:{"History", "Insight", "Medicine", "Religion"};
            int[] SkillList = { 4, 6, 7, 9, 14 };
            Proficiencies = ProGen(Level, Stats, NumOfPro, SkillList);
            // ASI assignment
            Stats          = ASIGen(Level, Stats, pClass);
            Stats.WisSaveB = true;
            Stats.ChaSaveB = true;
            // Hp Generation
            int Base   = 8;
            int ConMod = Stats.ConMod;

            ClassHP          = HPCalc(Level, Base, ConMod);
            Stats.HitPoints += ClassHP;
            ClericSubGen(pClass, Stats);
            return(Stats);
        }
        public PlayerStat Bard(int level, PlayerStat Stats, PlayerClass pClass)
        {
            ClassName = "Bard";
            int Level    = level;
            int NumOfPro = 3;

            // Skills: Choose two fro{ "Acrobatics", "AnimalHandling", "Arcana", "Athletics", "Deception", "History","Insight","Intimidation","Investigation", "Medicine", "Nature", "Perception", "Performance", "Persuasion", "Religion", "SleightofHand", "Stealth", "Survival"};
            int[] SkillList = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 };
            pClass.Proficiencies = ProGen(Level, Stats, NumOfPro, SkillList);
            Stats.DexSaveB       = true;
            Stats.ChaSaveB       = true;
            // ASI assignment
            Stats = ASIGen(Level, Stats, pClass);
            // Hp Generation
            int Base   = 8;
            int ConMod = Stats.ConMod;

            pClass.ClassHP   = HPCalc(Level, Base, ConMod);
            Stats.HitPoints += ClassHP;
            BardSubGen(pClass, Stats);
            return(Stats);
        }
        public PlayerStat Barbarian(int level, PlayerStat Stats, PlayerClass pClass)
        {
            ClassName = "Barbarian";
            int Level    = level;
            int NumOfPro = 2;

            // Skills: { "AnimalHandling", "Athletics", "Intimidation", "Nature", "Perception", "Survivial" };
            int[] SkillList = { 0, 1, 7, 10, 11, 17 };
            Proficiencies  = ProGen(Level, Stats, NumOfPro, SkillList);
            Stats.StrSaveB = true;
            Stats.ConSaveB = true;
            // ASI assignment
            Stats = ASIGen(Level, Stats, pClass);
            // Hp Generation
            int Base   = 12;
            int ConMod = Stats.ConMod;

            ClassHP          = HPCalc(Level, Base, ConMod);
            Stats.HitPoints += ClassHP;
            BarbSubGen(pClass, Stats);
            return(Stats);
        }
        public void WizSubGen(PlayerClass pc, PlayerStat ps)
        {
            int subclassnum = rand.Next(4, 5);

            switch (subclassnum)
            {
            case 0:
                pc.SubClassName = "School of Abjuration";
                break;

            case 1:
                pc.SubClassName = "School of Conjuration";
                break;

            case 2:
                pc.SubClassName = "School of Divination";
                break;

            case 3:
                pc.SubClassName = "School of Enchantment";
                break;

            case 4:
                pc.SubClassName = "School of Evocation";
                break;

            case 5:
                pc.SubClassName = "School of Illusion";
                break;

            case 6:
                pc.SubClassName = "School of Necromancy";
                break;

            case 7:
                pc.SubClassName = "School of Transmutation";
                break;
            }
        }