Exemplo n.º 1
0
        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;
            }
        }
Exemplo n.º 2
0
        public override void UpdateSpell()
        {
            float shieldBonus = (1f + PriestInformation.GetImprovedPowerWordShield(character.PriestTalents.ImprovedPowerWordShield))
                                * (1f + PriestInformation.GetTwinDisciplines(character.PriestTalents.TwinDisciplines))
                                * (1f + stats.ShieldDiscipline);
            float spellPowerBonus = stats.SpellPower * BaseDirectCoefficient;

            base.UpdateSpell();
            Cooldown = BaseCooldown - PriestInformation.GetSoulWarding(character.PriestTalents.SoulWarding);

            AbsorbMinHit = AbsorbMaxHit = AbsorbAvgHit = (BaseDirectValue + spellPowerBonus) * shieldBonus;

            if (character.PriestTalents.GlyphofPowerWordShield)
            {
                DirectHealMinHit  = DirectHealMaxHit = DirectHealAvgHit = AbsorbAvgHit * 0.2f;
                DirectHealMinCrit = DirectHealMaxCrit = DirectHealAvgCrit = AbsorbAvgHit * 0.2f * CritMultiplier;
                DirectHealAvg     = DirectHealAvgHit * (1f - CritChance) + DirectHealAvgCrit * CritChance;
                HasDirectHeal     = true;
                if (stats.PriestSpec == ePriestSpec.Spec_Disc)
                {
                    DivineAegis();
                }
                else if (stats.PriestSpec == ePriestSpec.Spec_Holy)
                {
                    EchoOfLight();
                }
            }

            AbsorbAvg = AbsorbAvgHit + AbsorbAvgCrit * CritChance;
        }
Exemplo n.º 3
0
 public override void UpdateSpell()
 {
     healBonus = (1f + stats.BonusHealingDoneMultiplier)
                 * (1f + PriestInformation.GetTwinDisciplines(character.PriestTalents.TwinDisciplines));
     base.UpdateSpell();
     DirectHealCalcs();
 }
Exemplo n.º 4
0
 public override void UpdateSpell()
 {
     healBonus = (1f + stats.BonusHealingDoneMultiplier)
                 * (1f + PriestInformation.GetTwinDisciplines(character.PriestTalents.TwinDisciplines));
     if (character.PriestTalents.GlyphofPrayerOfMending && Targets == 1)
     {
         healBonus *= 1.6f;
     }
     base.UpdateSpell();
     Cooldown = BaseCooldown;
     DirectHealCalcs();
 }
Exemplo n.º 5
0
        public override void UpdateSpell()
        {
            healBonus = (1f + stats.BonusHealingDoneMultiplier)
                        * (1f + PriestInformation.GetTwinDisciplines(character.PriestTalents.TwinDisciplines));

            base.UpdateSpell();
            Cooldown = BaseCooldown - (character.PriestTalents.GlyphofPenance ? 2f : 0f);

            float spellPowerBonus = stats.SpellPower * BaseDirectCoefficient;

            DirectHealCalcs();
        }
Exemplo n.º 6
0
        public override void UpdateSpell()
        {
            healBonus = (1f + stats.BonusHealingDoneMultiplier)
                        * (1f + PriestInformation.GetTwinDisciplines(character.PriestTalents.TwinDisciplines));

            base.UpdateSpell();
            Cooldown = BaseCooldown;
            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;

            DirectHealCalcs();
        }
Exemplo n.º 7
0
        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();
                }
            }
        }
Exemplo n.º 8
0
        public override void UpdateSpell()
        {
            healBonus = (1f + stats.BonusHealingDoneMultiplier)
                        * (1f + PriestInformation.GetTwinDisciplines(character.PriestTalents.TwinDisciplines));

            base.UpdateSpell();
            Cooldown = BaseCooldown;

            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;
        }