diff options
author | offl <11556157+offl@users.noreply.github.com> | 2025-07-22 18:05:14 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-07-22 17:05:14 +0200 |
commit | cfa9fb701a7d5ec14750f55d1fa30247e8c0def9 (patch) | |
tree | d1d8dcbc428238eafd9c23de17dc869d3ee6eb9b /src | |
parent | 761786ca1882b331d19b8c0c5c1e9f9fcf226e14 (diff) |
Scripts/Spells: Implement Revive Self & Knock Away spells (#31069)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index e019cb9cc8e..ab852ecba75 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -2171,6 +2171,29 @@ class spell_gen_injured : public SpellScript } }; +// To be added: 19633, 20686, 23382, 31389, 32959 +class spell_gen_knock_away_threat_reduction : public SpellScript +{ + PrepareSpellScript(spell_gen_knock_away_threat_reduction); + +public: + explicit spell_gen_knock_away_threat_reduction(int32 threatPercent) : _threatPercent(threatPercent) { } + +private: + int32 _threatPercent; + + void HandleScript(SpellEffIndex /*effIndex*/) + { + if (GetCaster()->CanHaveThreatList()) + GetCaster()->GetThreatManager().ModifyThreatByPercent(GetHitUnit(), -_threatPercent); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_gen_knock_away_threat_reduction::HandleScript, EFFECT_2, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + class spell_gen_lifeblood : public AuraScript { PrepareAuraScript(spell_gen_lifeblood); @@ -3322,6 +3345,23 @@ class spell_gen_replenishment_aura : public AuraScript } }; +// 32343 - Revive Self +class spell_gen_revive_self : public SpellScript +{ + PrepareSpellScript(spell_gen_revive_self); + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + GetCaster()->SetFullHealth(); + GetCaster()->SetFullPower(POWER_MANA); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_gen_revive_self::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + enum SeaforiumSpells { SPELL_PLANT_CHARGES_CREDIT_ACHIEVEMENT = 60937 @@ -4718,6 +4758,9 @@ void AddSC_generic_spell_scripts() RegisterSpellScript(spell_gen_hate_to_50); RegisterSpellScript(spell_gen_hate_to_75); RegisterSpellScript(spell_gen_injured); + RegisterSpellScriptWithArgs(spell_gen_knock_away_threat_reduction, "spell_gen_knock_away_threat_reduction_100", 100); // 10101 + RegisterSpellScriptWithArgs(spell_gen_knock_away_threat_reduction, "spell_gen_knock_away_threat_reduction_50", 50); // 18670, 18945 + RegisterSpellScriptWithArgs(spell_gen_knock_away_threat_reduction, "spell_gen_knock_away_threat_reduction_25", 25); // 18813, 25778 RegisterSpellScript(spell_gen_lifeblood); RegisterSpellScriptWithArgs(spell_gen_lifebloom, "spell_hexlord_lifebloom", SPELL_HEXLORD_MALACRASS_LIFEBLOOM_FINAL_HEAL); RegisterSpellScriptWithArgs(spell_gen_lifebloom, "spell_tur_ragepaw_lifebloom", SPELL_TUR_RAGEPAW_LIFEBLOOM_FINAL_HEAL); @@ -4763,6 +4806,7 @@ void AddSC_generic_spell_scripts() RegisterSpellScript(spell_gen_remove_on_health_pct); RegisterSpellScript(spell_gen_remove_on_full_health); RegisterSpellScript(spell_gen_remove_on_full_health_pct); + RegisterSpellScript(spell_gen_revive_self); RegisterSpellScript(spell_gen_seaforium_blast); RegisterSpellScript(spell_gen_spectator_cheer_trigger); RegisterSpellScript(spell_gen_spirit_healer_res); |