aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoroffl <11556157+offl@users.noreply.github.com>2025-07-22 18:05:14 +0300
committerGitHub <noreply@github.com>2025-07-22 17:05:14 +0200
commitcfa9fb701a7d5ec14750f55d1fa30247e8c0def9 (patch)
treed1d8dcbc428238eafd9c23de17dc869d3ee6eb9b /src
parent761786ca1882b331d19b8c0c5c1e9f9fcf226e14 (diff)
Scripts/Spells: Implement Revive Self & Knock Away spells (#31069)
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp44
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);