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; } }
public void CalculateInitiative() { Initiative = (int)AbilityScores.getAbilityScoreModifier("DEX"); }
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; }
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; }