diff options
| author | offl <11556157+offl@users.noreply.github.com> | 2025-11-04 23:37:06 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-04 22:37:06 +0100 |
| commit | d1a2f20b56aebc220b48560dfcd0e6bb72e90f7e (patch) | |
| tree | 1492bf52e03333d62853dcd41970cd4595fad6f9 /src/server/scripts/Northrend | |
| parent | 899ac9e04e84192297fdd06278a8a0643f70b47d (diff) | |
Scripts/Spells: Migrate some spell linked spells to spell scripts (#31279)
Diffstat (limited to 'src/server/scripts/Northrend')
6 files changed, 293 insertions, 1 deletions
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp index a16ba46f84d..4812a7c1d69 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp @@ -723,6 +723,48 @@ class spell_powering_up : public SpellScript }; // 65684, 67176, 67177, 67178 - Dark Essence +class spell_twin_valkyr_dark_essence : public AuraScript +{ + PrepareAuraScript(spell_twin_valkyr_dark_essence); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_LIGHT_ESSENCE }); + } + + void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->RemoveAurasDueToSpell(sSpellMgr->GetSpellIdForDifficulty(SPELL_LIGHT_ESSENCE, GetTarget())); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_twin_valkyr_dark_essence::AfterApply, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + +// 65686, 67222, 67223, 67224 - Light Essence +class spell_twin_valkyr_light_essence : public AuraScript +{ + PrepareAuraScript(spell_twin_valkyr_light_essence); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_DARK_ESSENCE }); + } + + void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->RemoveAurasDueToSpell(sSpellMgr->GetSpellIdForDifficulty(SPELL_DARK_ESSENCE, GetTarget())); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_twin_valkyr_light_essence::AfterApply, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + +// 65684, 67176, 67177, 67178 - Dark Essence // 65686, 67222, 67223, 67224 - Light Essence class spell_valkyr_essences : public AuraScript { @@ -860,6 +902,8 @@ void AddSC_boss_twin_valkyr() RegisterSpellScript(spell_bullet_controller); RegisterSpellScript(spell_powering_up); + RegisterSpellScript(spell_twin_valkyr_dark_essence); + RegisterSpellScript(spell_twin_valkyr_light_essence); RegisterSpellScript(spell_valkyr_essences); RegisterSpellScript(spell_power_of_the_twins); } diff --git a/src/server/scripts/Northrend/Gundrak/boss_eck.cpp b/src/server/scripts/Northrend/Gundrak/boss_eck.cpp index 650704cb64d..1374f164eb3 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_eck.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_eck.cpp @@ -17,6 +17,7 @@ #include "ScriptMgr.h" #include "ScriptedCreature.h" +#include "SpellScript.h" #include "gundrak.h" enum Texts @@ -30,7 +31,9 @@ enum Spells SPELL_ECK_BITE = 55813, // Eck bites down hard, inflicting 150% of his normal damage to an enemy. SPELL_ECK_SPIT = 55814, // Eck spits toxic bile at enemies in a cone in front of him, inflicting 2970 Nature damage and draining 220 mana every 1 sec for 3 sec. SPELL_ECK_SPRING_1 = 55815, // Eck leaps at a distant target. --> Drops aggro and charges a random player. Tank can simply taunt him back. - SPELL_ECK_SPRING_2 = 55837 // Eck leaps at a distant target. + SPELL_ECK_SPRING_2 = 55837, // Eck leaps at a distant target. + + SPELL_ECK_RESIDUE = 55817 }; enum Events @@ -108,7 +111,29 @@ private: bool _berserk; }; +// 55814 - Eck Spit +class spell_eck_spit : public AuraScript +{ + PrepareAuraScript(spell_eck_spit); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_ECK_RESIDUE }); + } + + void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->CastSpell(GetTarget(), SPELL_ECK_RESIDUE, true); + } + + void Register() override + { + AfterEffectRemove += AuraEffectRemoveFn(spell_eck_spit::AfterRemove, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE, AURA_EFFECT_HANDLE_REAL); + } +}; + void AddSC_boss_eck() { RegisterGundrakCreatureAI(boss_eck); + RegisterSpellScript(spell_eck_spit); } diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp index 838baad156b..2142d6b8577 100644 --- a/src/server/scripts/Northrend/zone_borean_tundra.cpp +++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp @@ -2009,6 +2009,36 @@ class spell_borean_tundra_taxi_coldarra_ledge_to_transitus_shield : public AuraS } }; +/*###### +## Quest 11712: Re-Cursive +######*/ + +enum ReCursive +{ + SPELL_SUMMON_FIZZCRANK_SURVIVOR = 46022 +}; + +// 45980 - Re-Cursive Transmatter Injection +class spell_borean_tundra_re_cursive_transmatter_injection : public SpellScript +{ + PrepareSpellScript(spell_borean_tundra_re_cursive_transmatter_injection); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_SUMMON_FIZZCRANK_SURVIVOR }); + } + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + GetCaster()->CastSpell(GetCaster(), SPELL_SUMMON_FIZZCRANK_SURVIVOR); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_borean_tundra_re_cursive_transmatter_injection::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + void AddSC_borean_tundra() { RegisterCreatureAI(npc_beryl_sorcerer); @@ -2044,4 +2074,5 @@ void AddSC_borean_tundra() RegisterSpellScript(spell_borean_tundra_land_mine_barrier); RegisterSpellScript(spell_borean_tundra_taxi_amber_ledge_to_beryl_point_platform); RegisterSpellScript(spell_borean_tundra_taxi_coldarra_ledge_to_transitus_shield); + RegisterSpellScript(spell_borean_tundra_re_cursive_transmatter_injection); } diff --git a/src/server/scripts/Northrend/zone_dragonblight.cpp b/src/server/scripts/Northrend/zone_dragonblight.cpp index fec320bea96..c33babd7ea4 100644 --- a/src/server/scripts/Northrend/zone_dragonblight.cpp +++ b/src/server/scripts/Northrend/zone_dragonblight.cpp @@ -1095,6 +1095,36 @@ class spell_dragonblight_toaluus_spiritual_incense : public AuraScript } }; +/*###### +## Quest 24545: The Sacred and the Corrupt +######*/ + +enum TheSacredAndTheCorrupt +{ + SPELL_KNOCKDOWN = 13360 +}; + +// 70653 - Lich King Zap Player +class spell_dragonblight_lich_king_zap_player : public SpellScript +{ + PrepareSpellScript(spell_dragonblight_lich_king_zap_player); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_KNOCKDOWN }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetHitUnit()->CastSpell(GetHitUnit(), SPELL_KNOCKDOWN, true); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_dragonblight_lich_king_zap_player::HandleScript, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + void AddSC_dragonblight() { RegisterCreatureAI(npc_commander_eligor_dawnbringer); @@ -1118,4 +1148,5 @@ void AddSC_dragonblight() RegisterSpellScript(spell_dragonblight_atop_the_woodlands_quest_completion_script); RegisterSpellScript(spell_dragonblight_end_of_the_line_quest_completion_script); RegisterSpellScript(spell_dragonblight_toaluus_spiritual_incense); + RegisterSpellScript(spell_dragonblight_lich_king_zap_player); } diff --git a/src/server/scripts/Northrend/zone_grizzly_hills.cpp b/src/server/scripts/Northrend/zone_grizzly_hills.cpp index 32017d9f486..05b106d8027 100644 --- a/src/server/scripts/Northrend/zone_grizzly_hills.cpp +++ b/src/server/scripts/Northrend/zone_grizzly_hills.cpp @@ -1099,6 +1099,87 @@ class spell_grizzly_hills_rage_of_jinarrak : public AuraScript } }; +// 61613 - Gan'jo Ressurection +class spell_grizzly_hills_ganjo_ressurection : public SpellScript +{ + PrepareSpellScript(spell_grizzly_hills_ganjo_ressurection); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_ON_THE_OTHER_SIDE }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetHitUnit()->RemoveAurasDueToSpell(SPELL_ON_THE_OTHER_SIDE); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_grizzly_hills_ganjo_ressurection::HandleScript, EFFECT_0, SPELL_EFFECT_APPLY_AURA); + } +}; + +/*###### +## Creature 26853 (Makki Wintergale) (if quest 'Shifting Priorities' (12763) is completed) +######*/ + +enum MakkiWintergale +{ + SPELL_FLIGHT_ONEQUAH_TO_LIGHTS_BREACH = 53289 +}; + +// 53288 - Flight - Onequah to Light's Breach +class spell_grizzly_hills_flight_onequah_to_lights_breach : public AuraScript +{ + PrepareAuraScript(spell_grizzly_hills_flight_onequah_to_lights_breach); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_FLIGHT_ONEQUAH_TO_LIGHTS_BREACH }); + } + + void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->CastSpell(GetTarget(), SPELL_FLIGHT_ONEQUAH_TO_LIGHTS_BREACH); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_grizzly_hills_flight_onequah_to_lights_breach::AfterApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + +/*###### +## Creature 26876 (Samuel Clearbook) (if quest 'Reallocating Resources' (12770) is completed) +######*/ + +enum SamuelClearbook +{ + SPELL_FLIGHT_WESTFALL_TO_LIGHTS_BREACH = 53310 +}; + +// 53311 - Flight - Westfall to Light's Breach +class spell_grizzly_hills_flight_westfall_to_lights_breach : public AuraScript +{ + PrepareAuraScript(spell_grizzly_hills_flight_westfall_to_lights_breach); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_FLIGHT_WESTFALL_TO_LIGHTS_BREACH }); + } + + void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->CastSpell(GetTarget(), SPELL_FLIGHT_WESTFALL_TO_LIGHTS_BREACH); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_grizzly_hills_flight_westfall_to_lights_breach::AfterApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + void AddSC_grizzly_hills() { RegisterCreatureAI(npc_emily); @@ -1125,4 +1206,7 @@ void AddSC_grizzly_hills() RegisterSpellScript(spell_grizzly_hills_escape_from_silverbrook_summon_worgen); RegisterSpellScript(spell_grizzly_hills_hand_over_reins); RegisterSpellScript(spell_grizzly_hills_rage_of_jinarrak); + RegisterSpellScript(spell_grizzly_hills_ganjo_ressurection); + RegisterSpellScript(spell_grizzly_hills_flight_onequah_to_lights_breach); + RegisterSpellScript(spell_grizzly_hills_flight_westfall_to_lights_breach); } diff --git a/src/server/scripts/Northrend/zone_icecrown.cpp b/src/server/scripts/Northrend/zone_icecrown.cpp index 006d9e31a7e..4c44123a173 100644 --- a/src/server/scripts/Northrend/zone_icecrown.cpp +++ b/src/server/scripts/Northrend/zone_icecrown.cpp @@ -1189,6 +1189,32 @@ class spell_icecrown_summon_soul_moveto_bunny : public SpellScript ## Quest 13086: The Last Line Of Defense ######*/ +enum TheLastLineOfDefense +{ + SPELL_POWERING_UP_THE_CORE = 57608 +}; + +// 57387 - Argent Cannon Assault +class spell_icecrown_argent_cannon_assault : public SpellScript +{ + PrepareSpellScript(spell_icecrown_argent_cannon_assault); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_POWERING_UP_THE_CORE }); + } + + void HandleAfterCast() + { + GetCaster()->CastSpell(GetCaster(), SPELL_POWERING_UP_THE_CORE, true); + } + + void Register() override + { + AfterCast += SpellCastFn(spell_icecrown_argent_cannon_assault::HandleAfterCast); + } +}; + // 57385 - Argent Cannon // 57412 - Reckoning Bomb class spell_icecrown_cannons_target : public SpellScript @@ -1495,6 +1521,55 @@ class spell_icecrown_burst_at_the_seams_52510 : public SpellScript } }; +/*###### +## Quest 13082: The Boon of A'dal +######*/ + +enum TheBoonOfAdal +{ + SPELL_SUMMON_SPIRIT_OF_BRIDENBRAD = 57747, + SPELL_SEE_QUEST_INVISIBILITY_1 = 57745, + SPELL_SUMMON_ADAL = 57746, + SPELL_SUMMON_MORI = 57782, + SPELL_SUMMON_KURI = 57786, + SPELL_SUMMON_LIGHT_BUNNY = 57773 +}; + +// 57787 - Forcecast Bridenbrad Ascension +class spell_icecrown_forcecast_bridenbrad_ascension : public SpellScript +{ + PrepareSpellScript(spell_icecrown_forcecast_bridenbrad_ascension); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo( + { + SPELL_SUMMON_SPIRIT_OF_BRIDENBRAD, + SPELL_SEE_QUEST_INVISIBILITY_1, + SPELL_SUMMON_ADAL, + SPELL_SUMMON_MORI, + SPELL_SUMMON_KURI, + SPELL_SUMMON_LIGHT_BUNNY + }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + Unit* target = GetHitUnit(); + target->CastSpell(target, SPELL_SUMMON_SPIRIT_OF_BRIDENBRAD); + target->RemoveAurasDueToSpell(SPELL_SEE_QUEST_INVISIBILITY_1); + target->CastSpell(target, SPELL_SUMMON_ADAL); + target->CastSpell(target, SPELL_SUMMON_MORI); + target->CastSpell(target, SPELL_SUMMON_KURI); + target->CastSpell(target, SPELL_SUMMON_LIGHT_BUNNY); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_icecrown_forcecast_bridenbrad_ascension::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + void AddSC_icecrown() { RegisterCreatureAI(npc_argent_valiant); @@ -1518,6 +1593,7 @@ void AddSC_icecrown() RegisterSpellScript(spell_icecrown_grab_fake_soldier); RegisterSpellScript(spell_icecrown_summon_frost_wyrm); RegisterSpellScript(spell_icecrown_summon_soul_moveto_bunny); + RegisterSpellScript(spell_icecrown_argent_cannon_assault); RegisterSpellScript(spell_icecrown_cannons_target); RegisterSpellScript(spell_icecrown_bested_trigger); RegisterSpellScript(spell_icecrown_burst_at_the_seams_59576); @@ -1526,4 +1602,5 @@ void AddSC_icecrown() RegisterSpellScript(spell_icecrown_area_restrict_abom); RegisterSpellScript(spell_icecrown_assign_credit_to_master); RegisterSpellScript(spell_icecrown_burst_at_the_seams_52510); + RegisterSpellScript(spell_icecrown_forcecast_bridenbrad_ascension); } |
