public override void CalculateAttributeBonuses() { int levelBonus = 0; if (CurrentLevel > 130) { levelBonus = 2; } else if (CurrentLevel > 140) { levelBonus = 3; } int ptmBonus = GetPtmBonus(); //Unblessed attributes (WIAS) used to calculate bless attribute mod foreach (var attribute in Attributes) { attribute.WarriorBonus = TimeWarriorBonus / 2; attribute.LevelBonus = levelBonus; attribute.BlessBonus = 0; } Bless.LevelBonus = levelBonus; Bless.PtmBonus = 0; Bless.SetAttributeBonus(Attributes); if (Blessed) { //Calculate attribute bonus from unblessed bless mod foreach (var attribute in Attributes) { attribute.BlessBonus = (int)((double)Bless.Mod / 4); } //Calculate bless mod from bless Bless.SetAttributeBonus(Attributes); } base.CalculateAttributeBonuses(); //Arbitrary bonuses added for balance //Makes PTMs less linear foreach (var skill in Skills) { skill.LevelBonus = levelBonus; if (skill.Type == Skill.Types.MagicShield && CurrentLevel > 140) { skill.LevelBonus -= 1; } if (skill.Type != Skill.Types.Hitpoints && skill.Type != Skill.Types.Endurance && skill.Type != Skill.Types.Mana && skill.Type != Skill.Types.Profession) { skill.PtmBonus = ptmBonus; } } }
private void CalculateAttributeBonuses() { int levelBonus = CurrentLevel > 160 ? 1 : 0; int ptmBonus = GetPtmBonus(); int tacBonus = GetTacticsSkillBonus(); //will be 0 if not shown int tacImmBonus = GetTacticsSkillBonus(true); //will be 0 if not shown //Unblessed attributes (WIAS) used to calculate bless attribute mod foreach (var attribute in Attributes) { attribute.WarriorBonus = TimeWarriorBonus / 2; attribute.LevelBonus = levelBonus; attribute.BlessBonus = 0; } Tactics.LevelBonus = levelBonus; //Calculate bless mod from unblessed WIAS Bless.LevelBonus = levelBonus; Bless.PtmBonus = 0; Bless.SetAttributeBonus(Attributes, tacBonus); if (Blessed) { //Calculate attribute bonus from unblessed bless mod foreach (var attribute in Attributes) { attribute.BlessBonus = (int)((Bless.Mod + (Tactics.Mod * 0.125)) / 4); } //Calculate bless mod from bless Bless.SetAttributeBonus(Attributes, tacBonus); } foreach (var skill in Skills) { skill.LevelBonus = levelBonus; if (skill.Type == Skill.Types.Attack || skill.Type == Skill.Types.Parry || skill.Type == Skill.Types.Warcry || skill.Type == Skill.Types.Freeze || skill.Type == Skill.Types.Lightning || skill.Type == Skill.Types.Fire) { skill.SetAttributeBonus(Attributes, tacBonus); } else if (skill.Type == Skill.Types.Immunity) { skill.SetAttributeBonus(Attributes, tacImmBonus); } else { if (skill.Type == Skill.Types.Bless) { skill.SetAttributeBonus(Attributes, (int)(Tactics.Mod * 0.125)); } else { skill.SetAttributeBonus(Attributes); } } if (skill.Type != Skill.Types.Hitpoints && skill.Type != Skill.Types.Endurance && skill.Type != Skill.Types.Mana && skill.Type != Skill.Types.Profession) { skill.PtmBonus = ptmBonus; } } }