protected float CalcMeleeDamage(bool canGlance, float bonusDamage) { int level = Mommy.Options.TargetLevel; int levelDelta = level - 80; float characterSheetDamage = BaseMeleeDamage + DamagePerAttackPower * CalcAttackPower() + bonusDamage; float combatTableModifier = CalcMeleeHitChance() + CalcMeleeCrit() - StatConversion.WHITE_DODGE_CHANCE_CAP[levelDelta]; if (canGlance) { combatTableModifier -= .3f * StatConversion.WHITE_GLANCE_CHANCE_CAP[levelDelta]; } float armorModifier = 1 - StatConversion.GetArmorDamageReduction( level, StatConversion.NPC_ARMOR[levelDelta], Stats.ArmorPenetration, // arpen debuffs 0f, // arpen buffs 0f); // arpen rating return(characterSheetDamage * combatTableModifier * armorModifier * MeleeModifiers.GetFinalDirectMultiplier()); }
protected virtual void FinalizeModifiers() { TotalModifiers.AddMultiplicativeMultiplier(Stats.BonusDamageMultiplier); MeleeModifiers.AddMultiplicativeMultiplier(Stats.BonusPhysicalDamageMultiplier); if (Mommy.Character.Race == CharacterRace.Orc) { TotalModifiers.AddMultiplicativeMultiplier(.05f); } }
public void CalcStats1() { WarlockTalents talents = Mommy.Talents; //Stats.Strength = 453f; //Stats.Agility = 883f; Stats.SpellPower = CalcSpellPower(); Stats.AttackPower = CalcAttackPower(); Stats.PhysicalCrit = .0328f; Stats.Accumulate(Mommy.PetBuffs); FinalizeModifiers(); SpecialModifiers.Accumulate(TotalModifiers); MeleeModifiers.Accumulate(TotalModifiers); Stats.SpellHaste = GetHasteWithProcs(s => s.SpellHaste); Stats.PhysicalHaste = GetHasteWithProcs(s => s.PhysicalHaste); }
public void CalcStats1() { // Stam & Int have to happen in this stage, so that Demonic // Knowledge is in effect when calculating the benefit of a // Demonic Pact proc. // Crit has to happen in this stage, so that Empowered Imp gives // the warlocks the right amount of crit. WarlockTalents talents = Mommy.Talents; float vitality = talents.FelVitality * .05f; float tacticsCrit = .02f * talents.DemonicTactics + .1f * talents.ImprovedDemonicTactics * (Mommy.CalcSpellCrit() - Mommy.Stats.SpellCritOnTarget); Stats = new Stats() { Stamina = BaseStamina + StaminaCoef * Mommy.CalcStamina(), Intellect = BaseIntellect + IntellectCoef * Mommy.CalcIntellect(), Strength = 297f, Agility = 90f, BonusStaminaMultiplier = vitality, BonusIntellectMultiplier = vitality, SpellCrit = BaseSpellCrit + tacticsCrit + Mommy.Stats.Warlock2T9, SpellPower = BaseSpellPower, AttackPower = BaseAttackPower, PhysicalCrit = .0329f + tacticsCrit + Mommy.Stats.Warlock2T9, }; Stats.Accumulate(Mommy.PetBuffs); Mommy.Add4pT10(TotalModifiers); FinalizeModifiers(); SpecialModifiers.Accumulate(TotalModifiers); MeleeModifiers.Accumulate(TotalModifiers); Stats.SpellHaste = GetHasteWithProcs(s => s.SpellHaste); Stats.PhysicalHaste = GetHasteWithProcs(s => s.PhysicalHaste); }
protected float CalcMeleeDamage(bool canGlance, float bonusDamage) { int level = Mommy.CalcOpts.TargetLevel; int levelDelta = level - Mommy.CalcOpts.PlayerLevel; if (levelDelta > 3) { levelDelta = 3; } float characterSheetDamage = BaseMeleeDamage + DamagePerAttackPower * CalcAttackPower() + bonusDamage; float combatTableModifier = CalcMeleeHitChance() + CalcMeleeCrit() - StatConversion.WHITE_DODGE_CHANCE_CAP[levelDelta]; if (canGlance) { combatTableModifier -= .3f * StatConversion.WHITE_GLANCE_CHANCE_CAP[levelDelta]; } float armorModifier = 1f - StatConversion.GetArmorDamageReduction(level, StatConversion.NPC_ARMOR[levelDelta], Stats.TargetArmorReduction, 0f); return(characterSheetDamage * combatTableModifier * armorModifier * MeleeModifiers.GetFinalDirectMultiplier()); }