aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-08-02 00:12:16 +0200
committerShauren <shauren.trinity@gmail.com>2023-08-02 00:12:16 +0200
commit8594fcfe8a0085a087bce510e3b4cb14f632434f (patch)
tree67eb3e764b43c3c64fc3bba86f0607f6f8384c8b
parent9cdf3530f41e18fc815e7b164e40c01a18c3d757 (diff)
Scripts/Spells: Converted some damage calculating scripts to use new hooks as examples
-rw-r--r--src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp10
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp10
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp8
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp15
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp16
-rw-r--r--src/server/scripts/Shadowlands/Torghast/spell_torghast.cpp8
-rw-r--r--src/server/scripts/Spells/spell_azerite.cpp6
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp14
-rw-r--r--src/server/scripts/Spells/spell_priest.cpp28
9 files changed, 37 insertions, 78 deletions
diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp
index c9285fe98db..1f3d62327c8 100644
--- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp
+++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp
@@ -126,18 +126,14 @@ class boss_rajaxx : public CreatureScript
// 25599 - Thundercrash
class spell_rajaxx_thundercrash : public SpellScript
{
- void HandleDamageCalc(SpellEffIndex /*effIndex*/)
+ static void HandleDamageCalc(Unit const* victim, int32& damage, int32& /*flatMod*/, float& /*pctMod*/)
{
- int32 damage = GetHitUnit()->GetHealth() / 2;
- if (damage < 200)
- damage = 200;
-
- SetEffectValue(damage);
+ damage = victim->CountPctFromCurHealth(50);
}
void Register() override
{
- OnEffectLaunchTarget += SpellEffectFn(spell_rajaxx_thundercrash::HandleDamageCalc, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
+ CalcDamage += SpellCalcDamageFn(spell_rajaxx_thundercrash::HandleDamageCalc);
}
};
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);
}
};
diff --git a/src/server/scripts/Shadowlands/Torghast/spell_torghast.cpp b/src/server/scripts/Shadowlands/Torghast/spell_torghast.cpp
index f1911ac9c53..adbcbe4b4d9 100644
--- a/src/server/scripts/Shadowlands/Torghast/spell_torghast.cpp
+++ b/src/server/scripts/Shadowlands/Torghast/spell_torghast.cpp
@@ -102,16 +102,16 @@ class spell_torghast_touch_of_the_unseen : public AuraScript
// 305060 - Yel'Shir's Powerglove
class spell_torghast_yelshirs_powerglove : public SpellScript
{
- void HandleEffect(SpellEffIndex /*effIndex*/)
+ void CalculateDamage(Unit const* /*victim*/, int32& /*damage*/, int32& /*flatMod*/, float& pctMod) const
{
if (SpellInfo const* triggeringSpell = GetTriggeringSpell())
if (Aura const* triggerAura = GetCaster()->GetAura(triggeringSpell->Id))
- SetEffectValue(GetEffectValue() * triggerAura->GetStackAmount());
+ pctMod *= triggerAura->GetStackAmount();
}
void Register() override
{
- OnEffectLaunchTarget += SpellEffectFn(spell_torghast_yelshirs_powerglove::HandleEffect, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
+ CalcDamage += SpellCalcDamageFn(spell_torghast_yelshirs_powerglove::CalculateDamage);
}
};
@@ -313,7 +313,7 @@ class spell_torghast_potent_potion_calc : public SpellScript
void SetValue(SpellEffIndex effIndex)
{
SetEffectValue(sSpellMgr->AssertSpellInfo(SPELL_LABEL_SPIRITUAL_REJUVENATION_POTION, GetCastDifficulty())->GetEffect(effIndex)
- .CalcValue(GetCaster(), nullptr, GetHitUnit()));;
+ .CalcValue(GetCaster(), nullptr, GetHitUnit()));
}
void Register() override
diff --git a/src/server/scripts/Spells/spell_azerite.cpp b/src/server/scripts/Spells/spell_azerite.cpp
index cc375591d3b..760bcaa515a 100644
--- a/src/server/scripts/Spells/spell_azerite.cpp
+++ b/src/server/scripts/Spells/spell_azerite.cpp
@@ -464,10 +464,10 @@ class spell_item_echoing_blades_damage : public SpellScript
return ValidateSpellEffect({ { SPELL_ECHOING_BLADES_TRAIT, EFFECT_2 } });
}
- void CalculateDamage(SpellEffIndex /*effIndex*/)
+ void CalculateDamage(Unit const* /*victim*/, int32& damage, int32& /*flatMod*/, float& /*pctMod*/) const
{
if (AuraEffect const* trait = GetCaster()->GetAuraEffect(SPELL_ECHOING_BLADES_TRAIT, EFFECT_2))
- SetHitDamage(trait->GetAmount() * 2);
+ damage = trait->GetAmount() * 2;
}
void ForceCritical(Unit const* /*victim*/, float& critChance)
@@ -477,7 +477,7 @@ class spell_item_echoing_blades_damage : public SpellScript
void Register() override
{
- OnEffectLaunchTarget += SpellEffectFn(spell_item_echoing_blades_damage::CalculateDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
+ CalcDamage += SpellCalcDamageFn(spell_item_echoing_blades_damage::CalculateDamage);
OnCalcCritChance += SpellOnCalcCritChanceFn(spell_item_echoing_blades_damage::ForceCritical);
}
};
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp
index be1fd4ae318..34352ba96c6 100644
--- a/src/server/scripts/Spells/spell_generic.cpp
+++ b/src/server/scripts/Spells/spell_generic.cpp
@@ -1056,23 +1056,15 @@ private:
// 64208 - Consumption
class spell_gen_consumption : public SpellScript
{
- void HandleDamageCalc(SpellEffIndex /*effIndex*/)
+ void CalculateDamage(Unit const* /*victim*/, int32& damage, int32& /*flatMod*/, float& /*pctMod*/) const
{
- Creature* caster = GetCaster()->ToCreature();
- if (!caster)
- return;
-
- int32 damage = 0;
- if (SpellInfo const* createdBySpell = sSpellMgr->GetSpellInfo(caster->m_unitData->CreatedBySpell, GetCastDifficulty()))
+ if (SpellInfo const* createdBySpell = sSpellMgr->GetSpellInfo(GetCaster()->m_unitData->CreatedBySpell, GetCastDifficulty()))
damage = createdBySpell->GetEffect(EFFECT_1).CalcValue();
-
- if (damage)
- SetEffectValue(damage);
}
void Register() override
{
- OnEffectLaunchTarget += SpellEffectFn(spell_gen_consumption::HandleDamageCalc, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
+ CalcDamage += SpellCalcDamageFn(spell_gen_consumption::CalculateDamage);
}
};
diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp
index 1b3fc16ff3c..36b6584076c 100644
--- a/src/server/scripts/Spells/spell_priest.cpp
+++ b/src/server/scripts/Spells/spell_priest.cpp
@@ -968,23 +968,15 @@ class spell_pri_power_of_the_dark_side_damage_bonus : public SpellScript
return ValidateSpellInfo({ SPELL_PRIEST_POWER_OF_THE_DARK_SIDE });
}
- void HandleLaunchTarget(SpellEffIndex effIndex)
+ void CalculateDamageBonus(Unit* /*victim*/, int32& /*damage*/, int32& /*flatMod*/, float& pctMod) const
{
if (AuraEffect* powerOfTheDarkSide = GetCaster()->GetAuraEffect(SPELL_PRIEST_POWER_OF_THE_DARK_SIDE, EFFECT_0))
- {
- PreventHitDefaultEffect(effIndex);
-
- float damageBonus = GetCaster()->SpellDamageBonusDone(GetHitUnit(), GetSpellInfo(), GetEffectValue(), SPELL_DIRECT_DAMAGE, GetEffectInfo());
- float value = damageBonus + damageBonus * GetEffectVariance();
- value *= 1.0f + (powerOfTheDarkSide->GetAmount() / 100.0f);
- value = GetHitUnit()->SpellDamageBonusTaken(GetCaster(), GetSpellInfo(), value, SPELL_DIRECT_DAMAGE);
- SetHitDamage(value);
- }
+ AddPct(pctMod, powerOfTheDarkSide->GetAmount());
}
void Register() override
{
- OnEffectLaunchTarget += SpellEffectFn(spell_pri_power_of_the_dark_side_damage_bonus::HandleLaunchTarget, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
+ CalcDamage += SpellCalcDamageFn(spell_pri_power_of_the_dark_side_damage_bonus::CalculateDamageBonus);
}
};
@@ -997,23 +989,15 @@ class spell_pri_power_of_the_dark_side_healing_bonus : public SpellScript
return ValidateSpellInfo({ SPELL_PRIEST_POWER_OF_THE_DARK_SIDE });
}
- void HandleLaunchTarget(SpellEffIndex effIndex)
+ void CalculateHealingBonus(Unit* /*victim*/, int32& /*healing*/, int32& /*flatMod*/, float& pctMod) const
{
if (AuraEffect* powerOfTheDarkSide = GetCaster()->GetAuraEffect(SPELL_PRIEST_POWER_OF_THE_DARK_SIDE, EFFECT_0))
- {
- PreventHitDefaultEffect(effIndex);
-
- float healingBonus = GetCaster()->SpellHealingBonusDone(GetHitUnit(), GetSpellInfo(), GetEffectValue(), HEAL, GetEffectInfo());
- float value = healingBonus + healingBonus * GetEffectVariance();
- value *= 1.0f + (powerOfTheDarkSide->GetAmount() / 100.0f);
- value = GetHitUnit()->SpellHealingBonusTaken(GetCaster(), GetSpellInfo(), value, HEAL);
- SetHitHeal(value);
- }
+ AddPct(pctMod, powerOfTheDarkSide->GetAmount());
}
void Register() override
{
- OnEffectLaunchTarget += SpellEffectFn(spell_pri_power_of_the_dark_side_healing_bonus::HandleLaunchTarget, EFFECT_0, SPELL_EFFECT_HEAL);
+ CalcHealing += SpellCalcHealingFn(spell_pri_power_of_the_dark_side_healing_bonus::CalculateHealingBonus);
}
};