public void AddShadowModifiers(SpellModifiers modifiers) { modifiers.AddMultiplicativeMultiplier( Stats.BonusShadowDamageMultiplier); modifiers.AddAdditiveMultiplier( Talents.ShadowMastery * .03f); if (Options.GetActiveRotation().Contains("Shadow Bolt") || (Options.GetActiveRotation().Contains("Haunt") && Talents.Haunt > 0)) { modifiers.AddMultiplicativeTickMultiplier( Talents.ShadowEmbrace * .01f * 3f); } if (CastSpells.ContainsKey("Haunt")) { modifiers.AddMultiplicativeTickMultiplier( ((Haunt)CastSpells["Haunt"]).GetAvgTickBonus()); } if (Pet is Succubus) { float bonus = Talents.MasterDemonologist * .01f; modifiers.AddMultiplicativeMultiplier(bonus); modifiers.AddCritChance(bonus); } }
public void AddShadowModifiers(SpellModifiers modifiers) { modifiers.AddMultiplicativeMultiplier(Stats.BonusShadowDamageMultiplier); modifiers.AddMultiplicativeMultiplier(Affliction ? .3f : 0f); // Shadow Mastery modifiers.AddMultiplicativeMultiplier(Demonology ? .15f : 0f); if (Affliction) { modifiers.AddAdditiveTickMultiplier(.1304f + (CalcMastery() - 8f) * .0163f); } if (CalcOpts.GetActiveRotation().Contains("Shadow Bolt") || (CalcOpts.GetActiveRotation().Contains("Haunt") && Talents.Haunt > 0)) { // we assume a steady state of 3 stacks float[] talentEffects = { 0f, .03f, .04f, .05f }; modifiers.AddMultiplicativeTickMultiplier(talentEffects[Talents.ShadowEmbrace] * 3f); } if (CastSpells.ContainsKey("Haunt")) { modifiers.AddMultiplicativeTickMultiplier(((Haunt)CastSpells["Haunt"]).GetAvgTickBonus()); } }
// Kitchen Sink Constructor public Spell( CharacterCalculationsWarlock mommy, MagicSchool magicSchool, SpellTree spellTree, float percentBaseMana, float baseCastTime, float cooldown, float recastPeriod, bool canMiss, float avgDirectDamage, float directCoefficient, float addedDirectMultiplier, float baseTickDamage, float numTicks, float tickCoefficient, float addedTickMultiplier, bool canTickCrit, float bonusCritChance, float bonusCritMultiplier) { Mommy = mommy; MagicSchool = magicSchool; MySpellTree = spellTree; ManaCost = mommy.BaseMana * percentBaseMana; BaseCastTime = baseCastTime; BaseDamage = avgDirectDamage; Cooldown = cooldown; RecastPeriod = recastPeriod; CanMiss = canMiss; DirectCoefficient = directCoefficient; BaseTickDamage = baseTickDamage; NumTicks = numTicks; TickCoefficient = tickCoefficient; CanTickCrit = canTickCrit; SimulatedStats = new Dictionary<string, SimulatedStat>(); WarlockTalents talents = mommy.Talents; SpellModifiers = new SpellModifiers(); SpellModifiers.AddMultiplicativeDirectMultiplier(addedDirectMultiplier); SpellModifiers.AddMultiplicativeTickMultiplier(addedTickMultiplier); SpellModifiers.AddCritChance(bonusCritChance); SpellModifiers.AddCritBonusMultiplier(bonusCritMultiplier); }
public void AddShadowModifiers(SpellModifiers modifiers) { modifiers.AddMultiplicativeMultiplier(Stats.BonusShadowDamageMultiplier); modifiers.AddMultiplicativeMultiplier(Affliction ? .3f : 0f); // Shadow Mastery modifiers.AddMultiplicativeMultiplier(Demonology ? .15f : 0f); if (Affliction) { modifiers.AddAdditiveTickMultiplier(.1304f + (CalcMastery() - 8f) * .0163f); } if (CalcOpts.GetActiveRotation().Contains("Shadow Bolt") || (CalcOpts.GetActiveRotation().Contains("Haunt") && Talents.Haunt > 0)) { // we assume a steady state of 3 stacks float[] talentEffects = { 0f, .03f, .04f, .05f }; modifiers.AddMultiplicativeTickMultiplier(talentEffects[Talents.ShadowEmbrace] * 3f); } if (CastSpells.ContainsKey("Haunt")) { modifiers.AddMultiplicativeTickMultiplier(((Haunt)CastSpells["Haunt"]).GetAvgTickBonus()); } }