diff options
author | offl <11556157+offl@users.noreply.github.com> | 2025-05-09 21:18:02 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-05-09 20:18:02 +0200 |
commit | 71a8e05fed91714373e6c885709867cac77045bb (patch) | |
tree | ec970a3f4a2178cd5706177a78be59ee814be9ec | |
parent | 5ed83ed27c676ae2dcf661409550ce0fcbffe5c8 (diff) |
Scripts/Spells: Implement generic spell script to cancel aura by id from spell effect basepoints (#30908)
5 files changed, 36 insertions, 66 deletions
diff --git a/sql/updates/world/3.3.5/2025_05_09_00_world.sql b/sql/updates/world/3.3.5/2025_05_09_00_world.sql new file mode 100644 index 00000000000..9daa49f9c42 --- /dev/null +++ b/sql/updates/world/3.3.5/2025_05_09_00_world.sql @@ -0,0 +1,15 @@ +-- +UPDATE `spell_script_names` SET `ScriptName` = 'spell_gen_cancel_aura' WHERE `ScriptName` = 'spell_love_is_in_the_air_fragrant_air_analysis'; -- 70192 +UPDATE `spell_script_names` SET `ScriptName` = 'spell_gen_cancel_aura' WHERE `ScriptName` = 'spell_storm_peaks_remove_collapsing_cave_aura'; -- 55693 +UPDATE `spell_script_names` SET `ScriptName` = 'spell_gen_cancel_aura' WHERE `ScriptName` = 'spell_deathbringer_remove_marks'; -- 72257 + +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_gen_cancel_aura' AND `spell_id` IN (45604,56923,59556,60654,69171,69298,70079,69098); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(45604, 'spell_gen_cancel_aura'), +(56923, 'spell_gen_cancel_aura'), +(59556, 'spell_gen_cancel_aura'), +(60654, 'spell_gen_cancel_aura'), +(69171, 'spell_gen_cancel_aura'), +(69298, 'spell_gen_cancel_aura'), +(70079, 'spell_gen_cancel_aura'), +(69098, 'spell_gen_cancel_aura'); diff --git a/src/server/scripts/Events/love_is_in_the_air.cpp b/src/server/scripts/Events/love_is_in_the_air.cpp index c79aea25f16..2eb6c184f62 100644 --- a/src/server/scripts/Events/love_is_in_the_air.cpp +++ b/src/server/scripts/Events/love_is_in_the_air.cpp @@ -158,27 +158,6 @@ enum SomethingStinks SPELL_HEAVILY_PERFUMED = 71507 }; -// 70192 - Fragrant Air Analysis -class spell_love_is_in_the_air_fragrant_air_analysis : public SpellScript -{ - PrepareSpellScript(spell_love_is_in_the_air_fragrant_air_analysis); - - bool Validate(SpellInfo const* spellInfo) override - { - return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); - } - - void HandleScript(SpellEffIndex /*effIndex*/) - { - GetHitUnit()->RemoveAurasDueToSpell(uint32(GetEffectValue())); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_love_is_in_the_air_fragrant_air_analysis::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); - } -}; - // 71507 - Heavily Perfumed class spell_love_is_in_the_air_heavily_perfumed : public AuraScript { @@ -346,7 +325,6 @@ void AddSC_event_love_is_in_the_air() { RegisterSpellScript(spell_love_is_in_the_air_romantic_picnic); RegisterSpellScript(spell_love_is_in_the_air_create_heart_candy); - RegisterSpellScript(spell_love_is_in_the_air_fragrant_air_analysis); RegisterSpellScript(spell_love_is_in_the_air_heavily_perfumed); RegisterSpellScript(spell_love_is_in_the_air_recently_analyzed); RegisterSpellScript(spell_love_is_in_the_air_sample_satisfaction); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp index 04ddea79fe6..6b26046ca7d 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp @@ -1222,23 +1222,6 @@ class spell_deathbringer_boiling_blood : public SpellScript } }; -// 72257 - Remove Marks of the Fallen Champion -class spell_deathbringer_remove_marks : public SpellScript -{ - PrepareSpellScript(spell_deathbringer_remove_marks); - - void HandleScript(SpellEffIndex effIndex) - { - PreventHitDefaultEffect(effIndex); - GetHitUnit()->RemoveAurasDueToSpell(uint32(GetEffectValue())); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_deathbringer_remove_marks::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); - } -}; - class achievement_ive_gone_and_made_a_mess : public AchievementCriteriaScript { public: @@ -1272,7 +1255,6 @@ void AddSC_boss_deathbringer_saurfang() RegisterSpellScript(spell_deathbringer_blood_nova); RegisterSpellScript(spell_deathbringer_blood_nova_targeting); RegisterSpellScript(spell_deathbringer_boiling_blood); - RegisterSpellScript(spell_deathbringer_remove_marks); // Achievements new achievement_ive_gone_and_made_a_mess(); diff --git a/src/server/scripts/Northrend/zone_storm_peaks.cpp b/src/server/scripts/Northrend/zone_storm_peaks.cpp index f2052873bf5..8011dee62a3 100644 --- a/src/server/scripts/Northrend/zone_storm_peaks.cpp +++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp @@ -1048,31 +1048,6 @@ class spell_player_mount_wyrm : public AuraScript }; /*###### -## Quest 12823: A Flawless Plan -######*/ - -// 55693 - Remove Collapsing Cave Aura -class spell_storm_peaks_remove_collapsing_cave_aura : public SpellScript -{ - PrepareSpellScript(spell_storm_peaks_remove_collapsing_cave_aura); - - bool Validate(SpellInfo const* spellInfo) override - { - return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); - } - - void HandleScript(SpellEffIndex /*effIndex*/) - { - GetHitUnit()->RemoveAurasDueToSpell(uint32(GetEffectValue())); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_storm_peaks_remove_collapsing_cave_aura::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); - } -}; - -/*###### ## Quest 12987: Mounting Hodir's Helm ######*/ @@ -1293,7 +1268,6 @@ void AddSC_storm_peaks() RegisterSpellScript(spell_claw_swipe_check); RegisterSpellScript(spell_fatal_strike); RegisterSpellScript(spell_player_mount_wyrm); - RegisterSpellScript(spell_storm_peaks_remove_collapsing_cave_aura); RegisterSpellScript(spell_storm_peaks_read_pronouncement); RegisterSpellScript(spell_storm_peaks_bear_flank_master); RegisterSpellScript(spell_storm_peaks_bear_flank_fail); diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 8edb09cc60a..b1ab38a8020 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -703,6 +703,26 @@ class spell_gen_burning_depths_necrolyte_image : public AuraScript } }; +class spell_gen_cancel_aura : public SpellScript +{ + PrepareSpellScript(spell_gen_cancel_aura); + + bool Validate(SpellInfo const* spellInfo) override + { + return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetHitUnit()->RemoveAurasDueToSpell(uint32(GetEffectValue())); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_gen_cancel_aura::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + enum CannibalizeSpells { SPELL_CANNIBALIZE_TRIGGERED = 20578 @@ -4585,6 +4605,7 @@ void AddSC_generic_spell_scripts() RegisterSpellScriptWithArgs(spell_gen_break_shield, "spell_gen_break_shield"); RegisterSpellScriptWithArgs(spell_gen_break_shield, "spell_gen_tournament_counterattack"); RegisterSpellScript(spell_gen_burning_depths_necrolyte_image); + RegisterSpellScript(spell_gen_cancel_aura); RegisterSpellScript(spell_gen_cannibalize); RegisterSpellScript(spell_gen_chains_of_ice); RegisterSpellScript(spell_gen_chaos_blast); |