diff options
| author | Shauren <shauren.trinity@gmail.com> | 2023-08-02 00:12:16 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2023-08-02 00:12:16 +0200 |
| commit | 8594fcfe8a0085a087bce510e3b4cb14f632434f (patch) | |
| tree | 67eb3e764b43c3c64fc3bba86f0607f6f8384c8b /src/server/scripts/Northrend | |
| parent | 9cdf3530f41e18fc815e7b164e40c01a18c3d757 (diff) | |
Scripts/Spells: Converted some damage calculating scripts to use new hooks as examples
Diffstat (limited to 'src/server/scripts/Northrend')
4 files changed, 18 insertions, 31 deletions
diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp index 9bafcb59c1a..49bd36ced27 100644 --- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp @@ -241,19 +241,19 @@ private: // 68793, 69050 - Magic's Bane class spell_bronjahm_magic_bane : public SpellScript { - void RecalculateDamage(SpellEffIndex /*effIndex*/) + void CalculateDamage(Unit const* victim, int32& damage, int32& /*flatMod*/, float& /*pctMod*/) const { - if (GetHitUnit()->GetPowerType() != POWER_MANA) + if (victim->GetPowerType() != POWER_MANA) return; int32 const maxDamage = GetCaster()->GetMap()->IsHeroic() ? 15000 : 10000; - int32 newDamage = GetEffectValue() + (GetHitUnit()->GetMaxPower(POWER_MANA) / 2); - SetEffectValue(std::min<int32>(maxDamage, newDamage)); + int32 newDamage = damage + (victim->GetMaxPower(POWER_MANA) / 2); + damage = std::min(maxDamage, newDamage); } void Register() override { - OnEffectLaunchTarget += SpellEffectFn(spell_bronjahm_magic_bane::RecalculateDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); + CalcDamage += SpellCalcDamageFn(spell_bronjahm_magic_bane::CalculateDamage); } }; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp index 4781352a380..51527f3e9b9 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp @@ -1288,16 +1288,16 @@ class spell_blood_council_shadow_prison : public AuraScript // 72999 - Shadow Prison class spell_blood_council_shadow_prison_damage : public SpellScript { - void AddExtraDamage(SpellEffIndex /*effIndex*/) + void CalculateDamage(Unit const* victim, int32& /*damage*/, int32& flatMod, float& /*pctMod*/) const { - if (Aura* aur = GetHitUnit()->GetAura(GetSpellInfo()->Id)) + if (Aura const* aur = victim->GetAura(GetSpellInfo()->Id)) if (AuraEffect const* eff = aur->GetEffect(EFFECT_1)) - SetEffectValue(GetEffectValue() + eff->GetAmount()); + flatMod += eff->GetAmount(); } void Register() override { - OnEffectLaunchTarget += SpellEffectFn(spell_blood_council_shadow_prison_damage::AddExtraDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); + CalcDamage += SpellCalcDamageFn(spell_blood_council_shadow_prison_damage::CalculateDamage); } }; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp index 84a20b7b4a9..31a37e313a8 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp @@ -1880,13 +1880,6 @@ class spell_igb_cannon_blast : public SpellScript // 69402, 70175 - Incinerating Blast class spell_igb_incinerating_blast : public SpellScript { -public: - spell_igb_incinerating_blast() - { - _energyLeft = 0; - } - -private: void StoreEnergy() { _energyLeft = GetCaster()->GetPower(POWER_ENERGY) - 10; @@ -1897,19 +1890,19 @@ private: GetCaster()->SetPower(POWER_ENERGY, 0); } - void CalculateDamage(SpellEffIndex /*effIndex*/) + void CalculateDamage(Unit const* /*victim*/, int32& /*damage*/, int32& flatMod, float& /*pctMod*/) const { - SetEffectValue(GetEffectValue() + _energyLeft * _energyLeft * 8); + flatMod += _energyLeft * _energyLeft * 8; } void Register() override { OnCast += SpellCastFn(spell_igb_incinerating_blast::StoreEnergy); AfterCast += SpellCastFn(spell_igb_incinerating_blast::RemoveEnergy); - OnEffectLaunchTarget += SpellEffectFn(spell_igb_incinerating_blast::CalculateDamage, EFFECT_1, SPELL_EFFECT_SCHOOL_DAMAGE); + CalcDamage += SpellCalcDamageFn(spell_igb_incinerating_blast::CalculateDamage); } - uint32 _energyLeft; + int32 _energyLeft = 0; }; // 69487 - Overheat diff --git a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp index 4dfca6ae6d7..3374e1776b6 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp @@ -438,24 +438,18 @@ class spell_oculus_shock_lance : public SpellScript return ValidateSpellInfo({ SPELL_AMBER_SHOCK_CHARGE }); } - void CalcDamage(SpellEffIndex /*effIndex*/) + void CalculateDamage(Unit const* victim, int32& /*damage*/, int32& flatMod, float& /*pctMod*/) const { - int32 damage = GetEffectValue(); - if (Unit* target = GetHitUnit()) + if (AuraEffect const* shockCharges = victim->GetAuraEffect(SPELL_AMBER_SHOCK_CHARGE, EFFECT_0, GetCaster()->GetGUID())) { - if (AuraEffect const* shockCharges = target->GetAuraEffect(SPELL_AMBER_SHOCK_CHARGE, EFFECT_0, GetCaster()->GetGUID())) - { - damage += shockCharges->GetAmount(); - shockCharges->GetBase()->Remove(AURA_REMOVE_BY_ENEMY_SPELL); - } + flatMod += shockCharges->GetAmount(); + shockCharges->GetBase()->Remove(AURA_REMOVE_BY_ENEMY_SPELL); } - - SetEffectValue(damage); } void Register() override { - OnEffectLaunchTarget += SpellEffectFn(spell_oculus_shock_lance::CalcDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); + CalcDamage += SpellCalcDamageFn(spell_oculus_shock_lance::CalculateDamage); } }; |
