diff options
-rw-r--r-- | sql/updates/world/3.3.5/2025_07_22_01_world.sql | 15 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 44 |
2 files changed, 59 insertions, 0 deletions
diff --git a/sql/updates/world/3.3.5/2025_07_22_01_world.sql b/sql/updates/world/3.3.5/2025_07_22_01_world.sql new file mode 100644 index 00000000000..091648e3571 --- /dev/null +++ b/sql/updates/world/3.3.5/2025_07_22_01_world.sql @@ -0,0 +1,15 @@ +-- +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ( +'spell_gen_knock_away_threat_reduction_100', +'spell_gen_knock_away_threat_reduction_50', +'spell_gen_knock_away_threat_reduction_25'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(10101, 'spell_gen_knock_away_threat_reduction_100'), +(18670, 'spell_gen_knock_away_threat_reduction_50'), +(18945, 'spell_gen_knock_away_threat_reduction_50'), +(18813, 'spell_gen_knock_away_threat_reduction_25'), +(25778, 'spell_gen_knock_away_threat_reduction_25'); + +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_gen_revive_self'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(32343, 'spell_gen_revive_self'); 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); |