Exemple #1
0
        public void SetLevel1HitPoints()
        {
            var constitutionModifier = (int)AbilityScores.getAbilityScoreModifier(AbilityScores.GetConstitutionScore());

            switch (ClassDetails.Name)
            {
            default: throw new Exception("invalid characterClass provided");

            case "Barbarian": HitPoints = 12 + constitutionModifier; break;

            case "Bard": HitPoints = 8 + constitutionModifier; break;

            case "Cleric": HitPoints = 8 + constitutionModifier; break;

            case "Druid": HitPoints = 8 + constitutionModifier; break;

            case "Fighter": HitPoints = 10 + constitutionModifier; break;

            case "Monk": HitPoints = 8 + constitutionModifier; break;

            case "Paladin": HitPoints = 10 + constitutionModifier; break;

            case "Ranger": HitPoints = 10 + constitutionModifier; break;

            case "Rogue": HitPoints = 8 + constitutionModifier; break;

            case "Sorcerer": HitPoints = 6 + constitutionModifier; break;

            case "Warlock": HitPoints = 8 + constitutionModifier; break;

            case "Wizard": HitPoints = 6 + constitutionModifier; break;
            }

            // The Hill Dwarf subrace hit point maximum increases by 1
            if (this.RaceDetails.SubRace == "Hill Dwarf")
            {
                HitPoints += 1;
            }

            // Sorcerer Draconic Ancestry
            if (this.ClassDetails.SorcerousOrigin == "Draconic")
            {
                HitPoints += 1;
            }
        }
Exemple #2
0
 public void CalculateInitiative()
 {
     Initiative = (int)AbilityScores.getAbilityScoreModifier("DEX");
 }
Exemple #3
0
        public void CalculateArmorClass()
        {
            int armorClassValue = ClassDetails.Armor.BaseArmorClass;

            // Check from barbarian/Unarmored Defense
            var isBarbarian = (this.ClassDetails.Name == "Barbarian") ? true : false;
            var isFighter   = (this.ClassDetails.Name == "Fighter") ? true : false;
            var isMonk      = (this.ClassDetails.Name == "Monk") ? true : false;
            var isSorcerer  = (this.ClassDetails.Name == "Sorcerer") ? true : false;
            var isWizard    = (this.ClassDetails.Name == "Wizard") ? true : false;

            // This will need to be expanded to take into account the type of shield held at a future date
            var isHoldingShield = (this.ClassDetails.Shield != null);

            if (isBarbarian)
            {
                // This should check for armor
                ArmorClass = 10
                             + (int)AbilityScores.getAbilityScoreModifier("DEX")
                             + (int)AbilityScores.getAbilityScoreModifier("CON");
                return;
            }

            if (isFighter)
            {
                // Checks to see if Fighter has Defence fighting style and has armor equipped
                if (this.ClassDetails.FightingStyle == "Defense" && this.ClassDetails.Armor.Name != null)
                {
                    armorClassValue += 1;
                }
            }

            if (isMonk)
            {
                // Double checks to make sure no armor is equipped
                if (this.ClassDetails.Armor.Name == null)
                {
                    ArmorClass = 10
                                 + (int)AbilityScores.getAbilityScoreModifier("DEX")
                                 + (int)AbilityScores.getAbilityScoreModifier("WIS");
                    return;
                }
            }

            if (isSorcerer)
            {
                // Checks SorcerousOrigin for Draconic
                // Draconic Sorcerous Origin Unarmored AC = 13 + Dex mod
                if (this.ClassDetails.Armor.Name == null)
                {
                    ArmorClass = 13
                                 + (int)AbilityScores.getAbilityScoreModifier("DEX");
                    return;
                }
            }

            if (isWizard)
            {
                // Wizards shouldn't start with any armor
                if (this.ClassDetails.Armor.Name == null)
                {
                    ArmorClass = 10
                                 + (int)AbilityScores.getAbilityScoreModifier("DEX");
                    return;
                }
            }

            if (isHoldingShield)
            {
                armorClassValue += 2;
            }

            if (ClassDetails.Armor.AdditionalModifier != null)
            {
                var modValue        = ClassDetails.Armor.AdditionalModifier;
                var abilityScoreMod = AbilityScores.getAbilityScoreModifier(modValue);
                armorClassValue += (int)abilityScoreMod;
            }

            ArmorClass = armorClassValue;
        }
Exemple #4
0
        public void SetSkillsAndSavingThrows()
        {
            // SKILLS
            var Intelligence = (int)AbilityScores.getAbilityScoreModifier(AbilityScores.GetIntelligenceScore());
            var Strength     = (int)AbilityScores.getAbilityScoreModifier(AbilityScores.GetStrengthScore());
            var Constitution = (int)AbilityScores.getAbilityScoreModifier(AbilityScores.GetConstitutionScore());
            var Dexterity    = (int)AbilityScores.getAbilityScoreModifier(AbilityScores.GetDexterityScore());
            var Wisdom       = (int)AbilityScores.getAbilityScoreModifier(AbilityScores.GetWisdomScore());
            var Charisma     = (int)AbilityScores.getAbilityScoreModifier(AbilityScores.GetCharismaScore());

            var skillAndMods = new Dictionary <string, int>();

            skillAndMods["athletics"]      = Strength;
            skillAndMods["acrobatics"]     = Dexterity;
            skillAndMods["sleightOfHand"]  = Dexterity;
            skillAndMods["arcana"]         = Intelligence;
            skillAndMods["stealth"]        = Dexterity;
            skillAndMods["history"]        = Intelligence;
            skillAndMods["nature"]         = Intelligence;
            skillAndMods["religion"]       = Intelligence;
            skillAndMods["animalHandling"] = Wisdom;
            skillAndMods["insight"]        = Wisdom;
            skillAndMods["medicine"]       = Wisdom;
            skillAndMods["perception"]     = Wisdom;
            skillAndMods["survival"]       = Wisdom;
            skillAndMods["deception"]      = Charisma;
            skillAndMods["intimidation"]   = Charisma;
            skillAndMods["investigation"]  = Intelligence;
            skillAndMods["performance"]    = Charisma;
            skillAndMods["persuasion"]     = Charisma;

            // Add prof bonus

            var profBonuses = ClassDetails.GetProficiencies()["Skills"];

            foreach (var skill in profBonuses)
            {
                if (skillAndMods.ContainsKey(skill))
                {
                    skillAndMods[skill] += ClassDetails.GetProficiencyBonus();
                }
            }

            Skills = skillAndMods;

            // SAVING THROWS

            var savingThrowProfs = ClassDetails.GetProficiencies()["Saving Throws"];

            var savingThrows = new Dictionary <string, int>()
            {
                { "Strength", Strength },
                { "Dexterity", Dexterity },
                { "Constitution", Constitution },
                { "Intelligence", Intelligence },
                { "Wisdom", Wisdom },
                { "Charisma", Charisma }
            };

            foreach (var savingThrow in savingThrowProfs)
            {
                if (skillAndMods.ContainsKey(savingThrow))
                {
                    savingThrows[savingThrow] += ClassDetails.GetProficiencyBonus();
                }
            }

            SavingThrows = savingThrows;
        }