public override void UpdateSpell() { float td = (1f + PriestInformation.GetTwinDisciplines(character.PriestTalents.TwinDisciplines)); healBonus = (1f + stats.BonusHealingDoneMultiplier) * td; base.UpdateSpell(); DirectHealCalcs(); if (stats.PriestSpec == ePriestSpec.Spec_Disc) { // Prayer of Healing has Absorbs for Hit and Crit float da = PriestInformation.GetDivineAegis(character.PriestTalents.DivineAegis) * (1f + stats.ShieldDiscipline); AbsorbMinHit = DirectHealMinHit * da; AbsorbMaxHit = DirectHealMaxHit * da; AbsorbAvgHit = DirectHealAvgHit * da; AbsorbMinCrit *= 2; AbsorbMaxCrit *= 2; AbsorbAvgCrit *= 2; AbsorbAvg = AbsorbAvgHit * (1f - CritChance) + AbsorbAvgCrit * CritChance; } if (character.PriestTalents.GlyphofPrayerofHealing) { OverTimeTicks = 2; OverTimeTickPeriod = 3; OverTimeDuration = OverTimeTicks * OverTimeTickPeriod; OverTimeHealHit = DirectHealAvgHit * 0.2f * td; OverTimeHealCrit = DirectHealAvgCrit * 0.2f * td; OverTimeHealAvg = OverTimeHealHit * (1f - CritChance) + OverTimeHealCrit * CritChance; HasOverTimeHeal = true; } }
protected void DivineAegis() { float da = PriestInformation.GetDivineAegis(character.PriestTalents.DivineAegis) * (1f + stats.ShieldDiscipline); AbsorbMinCrit = DirectHealMinCrit * da; AbsorbMaxCrit = DirectHealMaxCrit * da; AbsorbAvgCrit = DirectHealAvgCrit * da; AbsorbAvg = AbsorbAvgHit * (1f - CritChance) + AbsorbAvgCrit * CritChance; HasAbsorb = true; }
public override void UpdateSpell() { healBonus = (1f + stats.BonusHealingDoneMultiplier) * (1f + PriestInformation.GetTwinDisciplines(character.PriestTalents.TwinDisciplines)) * (1f + PriestInformation.GetImprovedRenew(character.PriestTalents.ImprovedRenew)) * (character.PriestTalents.GlyphofRenew ? 1.1f : 1.0f); base.UpdateSpell(); float spellPowerBonus = stats.SpellPower * BaseOverTimeCoefficient; OverTimeHealHit = (BaseOverTimeValue + spellPowerBonus) * healBonus; OverTimeHealCrit = OverTimeHealHit * CritMultiplier; OverTimeHealAvg = OverTimeHealHit * (1f - CritChance) + OverTimeHealCrit * CritChance; float haste = (1f + stats.SpellHaste); OverTimeTickPeriod = BaseOverTimeTickPeriod / haste; // You get k more ticks for a hot/dot that has m ticks at 0% haste if your haste is higher than (2k-1)/2m. OverTimeTicks = (float)Math.Floor(BaseOverTimeTicks * haste + 0.5f); OverTimeDuration = OverTimeTickPeriod * OverTimeTicks; HasOverTimeHeal = true; if (character.PriestTalents.DivineAegis > 0) { float da = PriestInformation.GetDivineAegis(character.PriestTalents.DivineAegis) * (1f + stats.ShieldDiscipline); AbsorbMinCrit = AbsorbMaxCrit = AbsorbAvgCrit = OverTimeHealCrit * da; AbsorbAvg = AbsorbAvgHit * (1f - CritChance) + AbsorbAvgCrit * CritChance; HasAbsorb = true; } if (character.PriestTalents.DivineTouch > 0) { DirectHealMinHit = DirectHealMaxHit = DirectHealAvgHit = OverTimeHealHit * OverTimeTicks; DirectHealMinCrit = DirectHealMaxCrit = DirectHealAvgCrit = OverTimeHealCrit * OverTimeTicks; DirectHealAvg = DirectHealAvgHit * (1f - CritChance) + DirectHealAvgCrit * CritChance; HasDirectHeal = true; if (stats.PriestSpec == ePriestSpec.Spec_Disc) { DivineAegis(); } else if (stats.PriestSpec == ePriestSpec.Spec_Holy) { EchoOfLight(); } } }