protected void UpdateDefence(DefenceID defence) { // Base Defence _defences[(int)defence] = 10; // Add half a level _defences[(int)defence] += GetHalfLevel(); switch (defence) { case DefenceID.ArmorClass: break; case DefenceID.Fortitude: // Add higher of SRT/CON _defences[(int)defence] += GetAbilityScore(AbilityID.Strength) > GetAbilityScore(AbilityID.Constitution) ? GetModifier(AbilityID.Strength) : GetModifier(AbilityID.Constitution); break; case DefenceID.Reflex: // Add higher of DEX/INT _defences[(int)defence] += GetAbilityScore(AbilityID.Dexterity) > GetAbilityScore(AbilityID.Intelligence) ? GetModifier(AbilityID.Dexterity) : GetModifier(AbilityID.Intelligence); break; case DefenceID.Will: // Add higher of WIS/CHA _defences[(int)defence] += GetAbilityScore(AbilityID.Wisdom) > GetAbilityScore(AbilityID.Charisma) ? GetModifier(AbilityID.Wisdom) : GetModifier(AbilityID.Charisma); break; } }
public int GetDefence(DefenceID defence) { UpdateDefence(defence); return(_defences[(int)defence]); }