コード例 #1
0
ファイル: Character.cs プロジェクト: PeterVoege/DnD-Duel-Sim
        public Character(ref DiceRoller rng, string shortName, string longName, int level, int maxHP, int HP, Race race, Background background, int[] stats, bool[] combatProficiencies, bool[] skillProficiencies, bool[] saveProficiencies) // and so on
        {
            _rng              = rng;
            _shortName        = shortName;
            _longName         = longName;
            _level            = level;
            _maxHP            = maxHP;
            _HP               = HP;
            _hitDice          = level;
            _status           = CharStatus.Normal;
            _deathSavesPassed = 0;
            _deathSavesFailed = 0;
            _race             = race;
            _background       = background;
            _str              = stats[0];
            _dex              = stats[1];
            _con              = stats[2];
            _int              = stats[3];
            _wis              = stats[4];
            _cha              = stats[5];
            /// Proficiencies (not properly initialized)
            // By default fighter gets: all armor, shields, simple/martial weapons, str/con saves, and two selected skills.
            _combatProficiencies = combatProficiencies;

            // 18 different skills
            _skillProfiencies = skillProficiencies;
            //_skillProfiencies = new bool[18] { false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false };

            // 6 different saves
            _saveProficiencies = saveProficiencies;
            //_saveProficiencies = new bool[6] { false, false, false, false, false, false };
        }
コード例 #2
0
 public Fighter(ref DiceRoller rng) : base(ref rng)
 {
     _rng        = rng;
     _level      = 1;
     _maxHP      = 10;
     _HP         = 10;
     _hitDice    = 1;
     _race       = Race.Human;
     _background = Background.Soldier;
     _str        = 10;
     _dex        = 10;
     _con        = 10;
     _int        = 10;
     _wis        = 10;
     _cha        = 10;
 }
コード例 #3
0
 public DuelSetupForm()
 {
     InitializeComponent();
     _rng = new DiceRoller();
 }
コード例 #4
0
ファイル: CharRace.cs プロジェクト: PeterVoege/DnD-Duel-Sim
        // Short name, long name.
        public static Tuple <string, string> GetRandomName(Race race, ref DiceRoller rng)
        {
            // Dwarf names
            string[]   dwarfMaleNames   = new string[] { "Adrik", "Alberich", "Baern", "Barendd", "Brottor", "Bruenor", "Dain", "Darrak", "Delg", "Eberk", "Einkil", "Fargrim", "Flint", "Gardain", "Harbek", "Kildrak", "Morgran", "Orsik", "Oskar", "Rangrim", "Rurik", "Taklinn", "Thoradin", "Thorin", "Tordek", "Traubon", "Travok", "Ulfgar", "Veit", "Vondal" };
            string[]   dwarfFemaleNames = new string[] { "Amber", "Artin", "Audhild", "Bardryn", "Dagnal", "Diesa", "Eldeth", "Falkrunn", "Finellen", "Gunnloda", "Gurdis", "Helja", "Hlin", "Kathra", "Kristryd", "Ilde", "Liftrasa", "Mardred", "Riswynn", "Sannl", "Torbera", "Torgga", "Vistra" };
            string[][] dwarfFirstNames  = new string[][] { dwarfMaleNames, dwarfFemaleNames };

            string[] dwarfLastNames = new string[] { "Balderk", "Battlehammer", "Brawnanvil", "Dankil", "Fireforge", "Frostbeard", "Gorunn", "Holderhek", "Ironfist", "Loderr", "Lutgehr", "Rumnaheim", "Strakeln", "Torunn", "Ungart" };

            // Elf names
            string[] elfMaleNames   = new string[] { "Adran", "Aelar", "Aramil", "Arannis", "Aust", "Beiro", "Berrian", "Carrie", "Enialis", "Erdan", "Erevan", "Galinndan", "Hadarai", "Heian", "Himo", "Immeral", "Ivellios", "Laucian", "Mindartis", "Paelias", "Peren", "Quarion", "Riardon", "Rolen", "Soveliss", "Thamior", "Tharivol", "Theren", "Varis" };
            string[] elfFemaleNames = new string[] { "Adrie", "Althaea", "Anastrianna", "Andraste", "Antinua", "Bethrynna", "Birel", "Caelynn", "Drusilia", "Enna", "Felosial", "Ielenia", "Jelenneth", "Keyleth", "Leshanna", "Lia", "Meriele", "Mialee", "Naivara", "Quelenna", "Quillathe", "Sariel", "Shanairra", "Shava", "Silaqui", "Theirastra", "Thia", "Vadania", "Valanthe", "Xanaphia" };
            // Child names, unused:
            string[] elfChildNames = new string[] { "Ara", "Bryn", "Del", "Eryn", "Faen", "Innil", "Lael", "Mella", "Naill", "Naeris", "Phann", "Rael", "Rinn", "Sai", "Syllin", "Thia", "Vall" };
            string[] elfLastNames  = new string[] { "Amakiir", "Amastacia", "Galanodel", "Holimion", "Ilphelkiir", "Liadon", "Meliamne", "Naïlo", "Siannodel", "Xiloscient" };

            string[][] elfFirstNames = new string[][] { elfMaleNames, elfFemaleNames };

            // Halfling names
            string[] halflingMaleNames   = new string[] { "Alton", "Ander", "Cade", "Corrin", "Eldon", "Errich", "Finnan", "Garret", "Lindal", "Lyle", "Merric", "Milo", "Osborn", "Perrin", "Reed", "Roscoe", "Wellby" };
            string[] halflingFemaleNames = new string[] { "Andry", "Bree", "Callie", "Cora", "Euphemia", "Jillian", "Kithri", "Lavinia", "Lidda", "Merla", "Nedda", "Paela", "Portia", "Seraphina", "Shaena", "Trym", "Vani", "Verna" };
            string[] halflingLastNames   = new string[] { "Brushgather", "Goodbarrel", "Greenbottle", "High-hill", "Hilltopple", "Leagallow", "Tealeaf", "Thorngage", "Tosscobble", "Underbough" };

            string[][] halflingFirstNames = new string[][] { halflingMaleNames, halflingFemaleNames };

            // Human names
            string[] CalishiteMaleNames    = new string[] { "Aseir", "Bardeid", "Haseid", "Khemed", "Mehmen", "Sudeiman", "Zasheir" };
            string[] CalishiteFemaleNames  = new string[] { "Atala", "Ceidil", "Hama", "Jasmal", "Meilil", "Seipora", "Yasheira", "Zasheida" };
            string[] CalishiteLastNames    = new string[] { "Basha", "Dumein", "Jassan", "Khalid", "Mostana", "Pashar", "Rein" };
            string[] ChondathanMaleNames   = new string[] { "Darvin", "Dorn", "Evendur", "Gorstag", "Grim", "Helm", "Malark", "Morn", "Randal", "Stedd" };
            string[] ChondathanFemaleNames = new string[] { "Arveene", "Esvele", "jhessail", "Kerri", "Lureene", "Miri", "Rowan", "Shandri", "Tessele" };
            string[] ChondathanLastNames   = new string[] { "Amblecrown", "Buckman", "Dundragon", "Evenwood", "Greycastle", "Tallstag" };
            string[] DamaranMaleNames      = new string[] { "Bar", "Fodel", "Glar", "Grigor", "Igan", "Ivor", "Kosef", "Mival", "Orel", "Pavel", "Sergor" };
            string[] DamaranFemaleNames    = new string[] { "Alethra", "Kara", "Katernin", "Mara", "Natali", "Olma", "Tana", "Zora" };
            string[] DamaranLastNames      = new string[] { "Bersk", "Chernin", "Dotsk", "Kulenov", "Marsk", "Nemetsk", "Shemov", "Starag" };
            string[] IlluskanMaleNames     = new string[] { "Ander", "Blath", "Bran", "Frath", "Geth", "Lander", "Luth", "Malcer", "Stor", "Taman", "Urth" };
            string[] IlluskanFemaleNames   = new string[] { "Amafrey", "Betha", "Cefrey", "Kethra", "Mara", "Olga", "Silifrey", "Westra" };
            string[] IlluskanLastNames     = new string[] { "Brightwood, Helder, Hornraven, Lackman, Stormwind, Windrivver" };
            string[] MulanMaleNames        = new string[] { "Aoth", "Bareris", "Ehput-Ki", "Kethoth", "Mumed", "Ramas", "So-Kehur", "Thazar-De", "Urhur" };
            string[] MulanFemaleNames      = new string[] { "Arizima", "Chathi", "Nephis", "Nulara", "Murithi", "Sefris", "Thola", "Umara", "Zolis" };
            string[] MulanLastNames        = new string[] { "Ankhalab", "Anskuld", "Fezim", "Hahpet", "Nathandem", "Sepret", "Uuthrakt" };
            string[] RashemiMaleNames      = new string[] { "Borivik", "Faurgar", "Jandar", "Kanithar", "Madislak", "Ralmevik", "Shaumar", "Vladislak" };
            string[] RashemiFemaleNames    = new string[] { "Fyevarra", "Hulmarra", "Immith", "Imzel", "Navarra", "Shevarra", "Tammith", "Yuldra" };
            string[] RashemiLastNames      = new string[] { "Chergoba", "Dyernina", "Iltazyara", "Murnyethara", "Stayanoga", "Ulmokina" };
            string[] ShouMaleNames         = new string[] { "An", "Chen", "Chi", "Fai", "Jiang", "Jun", "Lian", "Long", "Meng", "On", "Shan", "Shui", "Wen" };
            string[] ShouFemaleNames       = new string[] { "Bai", "Chao", "Jia", "Lei", "Mei", "Qiao", "Shui", "Tai" };
            string[] ShouLastNames         = new string[] { "Chien", "Huang", "Kao", "Kung", "Lao", "Ling", "Mei", "Pin", "Shin", "Sum", "Tan", "Wan" };
            string[] TuramiMaleNames       = new string[] { "Anton", "Diero", "Marcon", "Pieron", "Rimardo", "Romero", "Salazar", "Umbero" };
            string[] TuramiFemaleNames     = new string[] { "Balama", "Dona", "Faila", "Jalana", "Luisa", "Marta", "Quara", "Selise", "Vonda" };
            string[] TuramiLastNames       = new string[] { "Agosto", "Astorio", "Calabra", "Domine", "Falone", "Marivaldi", "Pisacar", "Ramondo" };
            // Tethyrians have no unique names.

            string[][] humanMaleNames   = new string[][] { CalishiteMaleNames, ChondathanMaleNames, DamaranMaleNames, IlluskanMaleNames, MulanMaleNames, RashemiMaleNames, ShouMaleNames, TuramiMaleNames };
            string[][] humanFemaleNames = new string[][] { CalishiteFemaleNames, ChondathanFemaleNames, DamaranFemaleNames, IlluskanFemaleNames, MulanFemaleNames, RashemiFemaleNames, ShouFemaleNames, TuramiFemaleNames };

            string[][][] humanFirstNames = new string[][][] { humanMaleNames, humanFemaleNames };

            string[][] humanLastNames = new string[][] { CalishiteLastNames, ChondathanLastNames, DamaranLastNames, IlluskanLastNames, MulanLastNames, RashemiLastNames, ShouLastNames, TuramiLastNames };

            // Dragonborn names
            string[] dragonbornMaleNames   = new string[] { "Arjhan", "Balasar", "Bharash", "Donaar", "Ghesh", "Heskan", "Kriv", "Medrash", "Mehen", "Nadarr", "Pandjed", "Patrin", "Rhogar", "Shamash", "Shedinn", "Tarhun", "Torinn" };
            string[] dragonbornFemaleNames = new string[] { "Akra", "Biri", "Daar", "Farideh", "Harann", "Havilar", "Jheri", "Kava", "Korinn", "Mishann", "Nala", "Perra", "Raiann", "Sora", "Surina", "Thava", "Uadjit" };
            // Child names, unused:
            string[] dragonbornChildNames = new string[] { "Climber", "Earbender", "Leaper", "Pious", "Shieldbiter", "Zealous" };
            string[] dragonbornLastNames  = new string[] { "Clethtinthiallor", "Daardendrian", "Delmirev", "Drachedandion", "Fenkenkabradon", "Kepeshkmolik", "Kerrhylon", "Kimbatuul", "Linxakasendalor", "Myastan", "Nemmonis", "Norixius", "Ophinshtalajiir", "Prexijandilin", "Shestendeliath", "Turnuroth", "Verthisathurgiesh", "Yarjerit" };

            string[][] dragonbornFirstNames = new string[][] { dragonbornMaleNames, dragonbornFemaleNames };

            // Gnome names
            string[] gnomeMaleNames   = new string[] { "Alston", "Alvyn", "Boddynock", "Brocc", "Burgell", "Dimble", "Eldon", "Erky", "Fonkin", "Frug", "Gerbo", "Gimble", "Glim", "Jebeddo", "Kellen", "Namfoodle", "Orryn", "Roondar", "Seebo", "Sindri", "Warryn", "Wrenn", "Zook" };
            string[] gnomeFemaleNames = new string[] { "Bimpnottin", "Breena", "Caramip", "Carlin", "Donella", "Duvamil", "Ella", "Ellyjobell", "Ellywick", "Lilli", "Loopmottin", "Lorilla", "Mardnab", "Nissa", "Nyx", "Oda", "Orla", "Roywyn", "Shamil", "Tana", "Waywocket", "Zanna" };
            // Nicknames, unused.
            string[] gnomeNicknames = new string[] { "Aleslosh", "Ashhearth", "Badger", "Cloak", "Doublelock", "Filchbatter", "Fnipper", "Ku", "Nim", "Oneshoe", "Pock", "Sparklegem", "Stumbleduck" };
            string[] gnomeLastNames = new string[] { "Beren", "Daergel", "Folkor", "Garrick", "Nackle", "Murnig", "Ningel", "Raulnor", "Scheppen", "Timbers", "Turen" };

            string[][] gnomeFirstNames = new string[][] { gnomeMaleNames, gnomeFemaleNames };

            // Orc names
            string[] orcMaleNames   = new string[] { "Dench", "Feng", "Gell", "Henk", "Holg", "Imsh", "Keth", "Krusk", "Mhurren", "Ront", "Shump", "Thokk" };
            string[] orcFemaleNames = new string[] { "Baggi", "Emen", "Engong", "Kansif", "Myev", "Neega", "Ovak", "Ownka", "Shautha", "Sutha", "Vola", "Volen", "Yevelda" };

            string[][] orcFirstNames = new string[][] { orcMaleNames, orcFemaleNames };

            // Tiefling names
            string[] tieflingMaleNames   = new string[] { "Akmenos", "Amnon", "Barakas", "Damakos", "Ekemon", "Iados", "Kairon", "Leucis", "Melech", "Mordai", "Morthos", "Pelaios", "Skamos", "Therai" };
            string[] tieflingFemaleNames = new string[] { "Akta", "Anakis", "Bryseis", "Criella", "Damaia", "Ea", "Kallista", "Lerissa", "Makaria", "Nemeia", "Orianna", "Phelaia", "Rieta" };
            string[] tieflingVirtueNames = new string[] { "Art", "Carrion", "Chant", "Creed", "Despair", "Excellence", "Fear", "Glory", "Hope", "Ideal", "Music", "Nowhere", "Open", "Poetry", "Quest", "Random", "Reverence", "Sorrow", "Temerity", "Torment", "Weary" };

            string[][] tieflingNames = new string[][] { tieflingMaleNames, tieflingFemaleNames, tieflingVirtueNames };

            switch (race)
            {
            case Race.HillDwarf:
            case Race.MountainDwarf:
                int    gender    = rng.CoinFlip() - 1;
                int    index1    = rng.CustomDice(dwarfFirstNames[gender].Length) - 1;
                int    index2    = rng.CustomDice(dwarfLastNames.Length) - 1;
                string shortName = dwarfFirstNames[gender][index1];
                string longName  = shortName + " " + dwarfLastNames[index2];
                return(Tuple.Create(shortName, longName));

            case Race.HighElf:
            case Race.WoodElf:
            case Race.DarkElf:
                gender    = rng.CoinFlip() - 1;
                index1    = rng.CustomDice(elfFirstNames[gender].Length) - 1;
                index2    = rng.CustomDice(elfLastNames.Length) - 1;
                shortName = elfFirstNames[gender][index1];
                longName  = shortName + " " + elfLastNames[index2];
                return(Tuple.Create(shortName, longName));

            case Race.LightfootHalfling:
            case Race.StoutHalfling:
                gender    = rng.CoinFlip() - 1;
                index1    = rng.CustomDice(halflingFirstNames[gender].Length) - 1;
                index2    = rng.CustomDice(halflingLastNames.Length) - 1;
                shortName = halflingFirstNames[gender][index1];
                longName  = shortName + " " + halflingLastNames[index2];
                return(Tuple.Create(shortName, longName));

            case Race.Human:
                gender = rng.CoinFlip() - 1;
                int ethnicity = rng.d8() - 1;
                index1    = rng.CustomDice(humanFirstNames[gender][ethnicity].Length) - 1;
                index2    = rng.CustomDice(humanLastNames[ethnicity].Length) - 1;
                shortName = humanFirstNames[gender][ethnicity][index1];
                longName  = shortName + " " + humanLastNames[ethnicity][index2];
                // Inverted order for Shou ethnicity
                if (ethnicity == 6)
                {
                    longName = humanLastNames[ethnicity][index2] + " " + shortName;
                }
                return(Tuple.Create(shortName, longName));

            case Race.Dragonborn:
                gender    = rng.CoinFlip() - 1;
                index1    = rng.CustomDice(dragonbornFirstNames[gender].Length) - 1;
                index2    = rng.CustomDice(dragonbornLastNames.Length) - 1;
                shortName = dragonbornFirstNames[gender][index1];
                longName  = shortName + " " + dragonbornLastNames[index2];
                return(Tuple.Create(shortName, longName));

            case Race.ForestGnome:
            case Race.RockGnome:
                gender = rng.CoinFlip() - 1;
                index1 = rng.CustomDice(gnomeFirstNames[gender].Length) - 1;
                index2 = rng.CustomDice(gnomeLastNames.Length) - 1;
                int index3 = rng.CustomDice(gnomeNicknames.Length) - 1;
                shortName = gnomeNicknames[index3];
                longName  = gnomeFirstNames[gender][index1] + " \"" + shortName + "\" " + gnomeLastNames[index2];
                return(Tuple.Create(shortName, longName));

            case Race.HalfElf:
                gender    = rng.CoinFlip() - 1;
                ethnicity = rng.d8() - 1;
                if (rng.CoinFlip() == 1)     // Human first name, elf last name
                {
                    index1    = rng.CustomDice(humanFirstNames[gender][ethnicity].Length) - 1;
                    index2    = rng.CustomDice(elfLastNames.Length) - 1;
                    shortName = humanFirstNames[gender][ethnicity][index1];
                    longName  = shortName + " " + elfLastNames[index2];
                }
                else     // Elf first name, Human last name.
                {
                    index1    = rng.CustomDice(elfFirstNames[gender].Length) - 1;
                    index2    = rng.CustomDice(humanLastNames[ethnicity].Length) - 1;
                    shortName = elfFirstNames[gender][index1];
                    longName  = shortName + " " + humanLastNames[ethnicity][index2];
                }
                return(Tuple.Create(shortName, longName));

            case Race.HalfOrc:
                gender = rng.CoinFlip() - 1;
                if (rng.CoinFlip() == 1)     // Human name
                {
                    ethnicity = rng.d8() - 1;
                    index1    = rng.CustomDice(humanFirstNames[gender][ethnicity].Length) - 1;
                    index2    = rng.CustomDice(humanLastNames[ethnicity].Length) - 1;
                    shortName = humanFirstNames[gender][ethnicity][index1];
                    longName  = shortName + " " + humanLastNames[ethnicity][index2];
                }
                else     // Orc name (no last name)
                {
                    index1    = rng.CustomDice(orcFirstNames[gender].Length) - 1;
                    shortName = orcFirstNames[gender][index1];
                    longName  = shortName;
                }

                return(Tuple.Create(shortName, longName));

            case Race.Tiefling:
                gender    = rng.CustomDice(3) - 1;  // Virtue names aren't a gender, but eh, close enough.
                index1    = rng.CustomDice(tieflingNames[gender].Length) - 1;
                shortName = tieflingNames[gender][index1];
                return(Tuple.Create(shortName, shortName));    // No last name for tieflings.

            default:
                return(Tuple.Create("Mystery man", "Mystery man"));
            }
        }