From 5ed83ed27c676ae2dcf661409550ce0fcbffe5c8 Mon Sep 17 00:00:00 2001 From: offl <11556157+offl@users.noreply.github.com> Date: Fri, 9 May 2025 01:10:43 +0300 Subject: Scripts/Spells: Get rid of some database spell scripts (#30915) --- .../scripts/Northrend/zone_borean_tundra.cpp | 63 +++++++++ src/server/scripts/Northrend/zone_dalaran.cpp | 39 ++++++ src/server/scripts/Northrend/zone_dragonblight.cpp | 93 +++++++++++++ .../scripts/Northrend/zone_grizzly_hills.cpp | 44 ++++++ src/server/scripts/Northrend/zone_icecrown.cpp | 81 +++++++++++ src/server/scripts/Northrend/zone_zuldrak.cpp | 151 +++++++++++++++++++++ 6 files changed, 471 insertions(+) (limited to 'src/server/scripts/Northrend') diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp index 2c7870b4834..1678b4867b5 100644 --- a/src/server/scripts/Northrend/zone_borean_tundra.cpp +++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp @@ -1729,6 +1729,67 @@ class spell_borean_tundra_arcane_prisoner_rescue : public SpellScript } }; +/*###### +## Quest 11896: Weakness to Lightning +######*/ + +enum WeaknessToLightning +{ + SPELL_POWER_OF_THE_STORM = 46424 +}; + +// 46550 - Weakness to Lightning: On Quest Complete +class spell_borean_tundra_weakness_to_lightning_on_quest_complete : public SpellScript +{ + PrepareSpellScript(spell_borean_tundra_weakness_to_lightning_on_quest_complete); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_POWER_OF_THE_STORM }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetHitUnit()->RemoveAurasDueToSpell(SPELL_POWER_OF_THE_STORM); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_borean_tundra_weakness_to_lightning_on_quest_complete::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +/*###### +## Quest 11711: Coward Delivery... Under 30 Minutes or it's Free +######*/ + +// 45958 - Signal Alliance +class spell_borean_tundra_signal_alliance : public SpellScript +{ + PrepareSpellScript(spell_borean_tundra_signal_alliance); + + bool Validate(SpellInfo const* spellInfo) override + { + return ValidateSpellInfo( + { + uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()), + uint32(spellInfo->GetEffect(EFFECT_1).CalcValue()) + }); + } + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + if (caster->HasAura(uint32(GetEffectInfo(EFFECT_0).CalcValue()))) + caster->CastSpell(caster, uint32(GetEffectValue())); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_borean_tundra_signal_alliance::HandleDummy, EFFECT_1, SPELL_EFFECT_DUMMY); + } +}; + void AddSC_borean_tundra() { RegisterCreatureAI(npc_beryl_sorcerer); @@ -1756,4 +1817,6 @@ void AddSC_borean_tundra() RegisterSpellScript(spell_borean_tundra_neural_needle); RegisterSpellScript(spell_borean_tundra_prototype_neural_needle); RegisterSpellScript(spell_borean_tundra_arcane_prisoner_rescue); + RegisterSpellScript(spell_borean_tundra_weakness_to_lightning_on_quest_complete); + RegisterSpellScript(spell_borean_tundra_signal_alliance); } diff --git a/src/server/scripts/Northrend/zone_dalaran.cpp b/src/server/scripts/Northrend/zone_dalaran.cpp index f07d65e94f5..0634794a35e 100644 --- a/src/server/scripts/Northrend/zone_dalaran.cpp +++ b/src/server/scripts/Northrend/zone_dalaran.cpp @@ -32,6 +32,7 @@ Script Data End */ #include "Player.h" #include "ScriptedCreature.h" #include "ScriptedGossip.h" +#include "SpellScript.h" #include "WorldSession.h" /******************************************************* @@ -255,8 +256,46 @@ private: EventMap events; }; +// 54620 - Teleport Crystal: Teleport to Dalaran AICast Script +class spell_dalaran_teleport_to_dalaran : public SpellScript +{ + PrepareSpellScript(spell_dalaran_teleport_to_dalaran); + + void HandleScript(SpellEffIndex /*effIndex*/) + { + /// @todo: replace this with spell + if (Player* target = GetHitUnit()->ToPlayer()) + target->TeleportTo(571, 5807.75f, 588.063f, 660.939f, 1.64659f); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_dalaran_teleport_to_dalaran::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +// 58622 - Teleport to Lake Wintergrasp +class spell_dalaran_teleport_to_lake_wintergrasp : public SpellScript +{ + PrepareSpellScript(spell_dalaran_teleport_to_lake_wintergrasp); + + void HandleScript(SpellEffIndex /*effIndex*/) + { + /// @todo: replace this with spell + if (Player* target = GetHitUnit()->ToPlayer()) + target->TeleportTo(571, 5386.05f, 2840.97f, 418.675f, 3.14159f); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_dalaran_teleport_to_lake_wintergrasp::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + void AddSC_dalaran() { RegisterCreatureAI(npc_mageguard_dalaran); RegisterCreatureAI(npc_minigob_manabonk); + RegisterSpellScript(spell_dalaran_teleport_to_dalaran); + RegisterSpellScript(spell_dalaran_teleport_to_lake_wintergrasp); } diff --git a/src/server/scripts/Northrend/zone_dragonblight.cpp b/src/server/scripts/Northrend/zone_dragonblight.cpp index 18d74441370..537d80d6bb7 100644 --- a/src/server/scripts/Northrend/zone_dragonblight.cpp +++ b/src/server/scripts/Northrend/zone_dragonblight.cpp @@ -974,6 +974,96 @@ class spell_dragonblight_corrosive_spit : public AuraScript } }; +/*###### +## Quest 12065, 12066: The Focus on the Beach +######*/ + +enum TheFocusOnTheBeach +{ + SPELL_LEY_LINE_INFORMATION_01 = 47391 +}; + +// 47393 - The Focus on the Beach: Quest Completion Script +class spell_dragonblight_focus_on_the_beach_quest_completion_script : public SpellScript +{ + PrepareSpellScript(spell_dragonblight_focus_on_the_beach_quest_completion_script); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_LEY_LINE_INFORMATION_01 }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetCaster()->RemoveAurasDueToSpell(SPELL_LEY_LINE_INFORMATION_01); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_dragonblight_focus_on_the_beach_quest_completion_script::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +/*###### +## Quest 12083, 12084: Atop the Woodlands +######*/ + +enum AtopTheWoodlands +{ + SPELL_LEY_LINE_INFORMATION_02 = 47473 +}; + +// 47615 - Atop the Woodlands: Quest Completion Script +class spell_dragonblight_atop_the_woodlands_quest_completion_script : public SpellScript +{ + PrepareSpellScript(spell_dragonblight_atop_the_woodlands_quest_completion_script); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_LEY_LINE_INFORMATION_02 }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetCaster()->RemoveAurasDueToSpell(SPELL_LEY_LINE_INFORMATION_02); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_dragonblight_atop_the_woodlands_quest_completion_script::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +/*###### +## Quest 12107, 12110: The End of the Line +######*/ + +enum TheEndOfTheLine +{ + SPELL_LEY_LINE_INFORMATION_03 = 47636 +}; + +// 47638 - The End of the Line: Quest Completion Script +class spell_dragonblight_end_of_the_line_quest_completion_script : public SpellScript +{ + PrepareSpellScript(spell_dragonblight_end_of_the_line_quest_completion_script); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_LEY_LINE_INFORMATION_03 }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetCaster()->RemoveAurasDueToSpell(SPELL_LEY_LINE_INFORMATION_03); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_dragonblight_end_of_the_line_quest_completion_script::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + void AddSC_dragonblight() { RegisterCreatureAI(npc_commander_eligor_dawnbringer); @@ -992,4 +1082,7 @@ void AddSC_dragonblight() RegisterSpellScript(spell_dragonblight_surge_needle_teleporter); RegisterSpellScript(spell_dragonblight_fill_blood_unholy_frost_gem); RegisterSpellScript(spell_dragonblight_corrosive_spit); + RegisterSpellScript(spell_dragonblight_focus_on_the_beach_quest_completion_script); + RegisterSpellScript(spell_dragonblight_atop_the_woodlands_quest_completion_script); + RegisterSpellScript(spell_dragonblight_end_of_the_line_quest_completion_script); } diff --git a/src/server/scripts/Northrend/zone_grizzly_hills.cpp b/src/server/scripts/Northrend/zone_grizzly_hills.cpp index 040dae075e1..29153f0ef0a 100644 --- a/src/server/scripts/Northrend/zone_grizzly_hills.cpp +++ b/src/server/scripts/Northrend/zone_grizzly_hills.cpp @@ -953,6 +953,45 @@ class spell_warhead_fuse : public AuraScript } }; +enum +{ + SPELL_ENVISION_DRAKURU_01 = 47118, + SPELL_ENVISION_DRAKURU_02 = 47150, + SPELL_ENVISION_DRAKURU_03 = 47317, + SPELL_ENVISION_DRAKURU_04 = 47406, + SPELL_ENVISION_DRAKURU_05 = 50440 +}; + +// 47117 - Script Cast Summon Image of Drakuru +// 47149 - Script Cast Summon Image of Drakuru 02 +// 47316 - Script Cast Summon Image of Drakuru 03 +// 47405 - Script Cast Summon Image of Drakuru 04 +// 50439 - Script Cast Summon Image of Drakuru 05 +class spell_grizzly_hills_script_cast_summon_image_of_drakuru : public SpellScript +{ + PrepareSpellScript(spell_grizzly_hills_script_cast_summon_image_of_drakuru); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ _triggeredSpellId }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetHitUnit()->CastSpell(GetHitUnit(), _triggeredSpellId); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_grizzly_hills_script_cast_summon_image_of_drakuru::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } + + uint32 _triggeredSpellId; + +public: + explicit spell_grizzly_hills_script_cast_summon_image_of_drakuru(uint32 triggeredSpellId) : _triggeredSpellId(triggeredSpellId) { } +}; + void AddSC_grizzly_hills() { RegisterCreatureAI(npc_emily); @@ -970,4 +1009,9 @@ void AddSC_grizzly_hills() RegisterSpellScript(spell_warhead_detonate); RegisterSpellScript(spell_vehicle_warhead_fuse); RegisterSpellScript(spell_warhead_fuse); + RegisterSpellScriptWithArgs(spell_grizzly_hills_script_cast_summon_image_of_drakuru, "spell_grizzly_hills_script_cast_summon_image_of_drakuru_01", SPELL_ENVISION_DRAKURU_01); + RegisterSpellScriptWithArgs(spell_grizzly_hills_script_cast_summon_image_of_drakuru, "spell_grizzly_hills_script_cast_summon_image_of_drakuru_02", SPELL_ENVISION_DRAKURU_02); + RegisterSpellScriptWithArgs(spell_grizzly_hills_script_cast_summon_image_of_drakuru, "spell_grizzly_hills_script_cast_summon_image_of_drakuru_03", SPELL_ENVISION_DRAKURU_03); + RegisterSpellScriptWithArgs(spell_grizzly_hills_script_cast_summon_image_of_drakuru, "spell_grizzly_hills_script_cast_summon_image_of_drakuru_04", SPELL_ENVISION_DRAKURU_04); + RegisterSpellScriptWithArgs(spell_grizzly_hills_script_cast_summon_image_of_drakuru, "spell_grizzly_hills_script_cast_summon_image_of_drakuru_05", SPELL_ENVISION_DRAKURU_05); } diff --git a/src/server/scripts/Northrend/zone_icecrown.cpp b/src/server/scripts/Northrend/zone_icecrown.cpp index 0d4481cb673..1e0d24e7717 100644 --- a/src/server/scripts/Northrend/zone_icecrown.cpp +++ b/src/server/scripts/Northrend/zone_icecrown.cpp @@ -937,6 +937,84 @@ class spell_icecrown_summon_freed_crusader : public SpellScript } }; +/*###### +## Quest 13236, 13395: Army of the Damned +######*/ + +enum ArmyOfTheDamned +{ + SPELL_GIFT_OF_THE_LICH_KING = 58915, + SPELL_CONSUME_MINIONS = 58919 +}; + +// 58916 - Gift of the Lich King +class spell_icecrown_gift_of_the_lich_king : public SpellScript +{ + PrepareSpellScript(spell_icecrown_gift_of_the_lich_king); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_GIFT_OF_THE_LICH_KING }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetCaster()->CastSpell(GetHitUnit(), SPELL_GIFT_OF_THE_LICH_KING); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_icecrown_gift_of_the_lich_king::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +// 58917 - Consume Minions +class spell_icecrown_consume_minions : public SpellScript +{ + PrepareSpellScript(spell_icecrown_consume_minions); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_CONSUME_MINIONS }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetCaster()->CastSpell(GetHitUnit(), SPELL_CONSUME_MINIONS); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_icecrown_consume_minions::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +/*###### +## Quest 12995: Leave Our Mark +######*/ + +enum LeaveOurMark +{ + NPC_LEAVE_OUR_MARK_KILL_CREDIT_BUNNY = 30220 +}; + +// 23301 - Ebon Blade Banner +class spell_icecrown_ebon_blade_banner : public SpellScript +{ + PrepareSpellScript(spell_icecrown_ebon_blade_banner); + + void HandleScript(SpellEffIndex /*effIndex*/) + { + if (Player* caster = GetCaster()->ToPlayer()) + caster->KilledMonsterCredit(NPC_LEAVE_OUR_MARK_KILL_CREDIT_BUNNY); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_icecrown_ebon_blade_banner::HandleScript, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + void AddSC_icecrown() { RegisterCreatureAI(npc_argent_valiant); @@ -951,4 +1029,7 @@ void AddSC_icecrown() RegisterSpellScript(spell_icecrown_through_the_eye_the_eye_of_the_lk); RegisterSpellScript(spell_icecrown_through_the_eye_kill_credit_to_master); RegisterSpellScript(spell_icecrown_summon_freed_crusader); + RegisterSpellScript(spell_icecrown_gift_of_the_lich_king); + RegisterSpellScript(spell_icecrown_consume_minions); + RegisterSpellScript(spell_icecrown_ebon_blade_banner); } diff --git a/src/server/scripts/Northrend/zone_zuldrak.cpp b/src/server/scripts/Northrend/zone_zuldrak.cpp index 389ebc14da4..04be09d4f51 100644 --- a/src/server/scripts/Northrend/zone_zuldrak.cpp +++ b/src/server/scripts/Northrend/zone_zuldrak.cpp @@ -906,6 +906,153 @@ class spell_zuldrak_chains_of_the_scourge : public SpellScript } }; +/*###### +## Quest 12721: Rampage +######*/ + +enum Rampage +{ + SPELL_RAMPAGE_SUMMON_AKILZON = 52934, + SPELL_RAMPAGE_SUMMON_HALAZZI = 52935, + SPELL_RAMPAGE_SUMMON_JANALAI = 52936, + SPELL_RAMPAGE_SUMMON_NALORAKK = 52937 +}; + +// 52933 - Rampage: Summon Zul'Aman Gods Master +class spell_zuldrak_rampage_summon_zulaman_gods_master : public SpellScript +{ + PrepareSpellScript(spell_zuldrak_rampage_summon_zulaman_gods_master); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo( + { + SPELL_RAMPAGE_SUMMON_AKILZON, + SPELL_RAMPAGE_SUMMON_HALAZZI, + SPELL_RAMPAGE_SUMMON_JANALAI, + SPELL_RAMPAGE_SUMMON_NALORAKK + }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + caster->CastSpell(caster, SPELL_RAMPAGE_SUMMON_AKILZON); + caster->CastSpell(caster, SPELL_RAMPAGE_SUMMON_HALAZZI); + caster->CastSpell(caster, SPELL_RAMPAGE_SUMMON_JANALAI); + caster->CastSpell(caster, SPELL_RAMPAGE_SUMMON_NALORAKK); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_zuldrak_rampage_summon_zulaman_gods_master::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +/*###### +## Quest 12627: Breaking Through Jin'Alai +######*/ + +enum BreakingThroughJinAlai +{ + SPELL_BREAKING_THROUGH_SUMMON_AKILZON = 51861, + SPELL_BREAKING_THROUGH_SUMMON_JANALAI = 52452, + SPELL_BREAKING_THROUGH_SUMMON_HALAZZI = 52453, + SPELL_BREAKING_THROUGH_SUMMON_NALORAKK = 52454 +}; + +// 51862 - Breaking Through Jin'Alai: Summon Zul'Aman Gods Master +class spell_zuldrak_breaking_through_summon_zulaman_gods_master : public SpellScript +{ + PrepareSpellScript(spell_zuldrak_breaking_through_summon_zulaman_gods_master); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo( + { + SPELL_BREAKING_THROUGH_SUMMON_AKILZON, + SPELL_BREAKING_THROUGH_SUMMON_JANALAI, + SPELL_BREAKING_THROUGH_SUMMON_HALAZZI, + SPELL_BREAKING_THROUGH_SUMMON_NALORAKK + }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + caster->CastSpell(caster, SPELL_BREAKING_THROUGH_SUMMON_AKILZON); + caster->CastSpell(caster, SPELL_BREAKING_THROUGH_SUMMON_JANALAI); + caster->CastSpell(caster, SPELL_BREAKING_THROUGH_SUMMON_HALAZZI); + caster->CastSpell(caster, SPELL_BREAKING_THROUGH_SUMMON_NALORAKK); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_zuldrak_breaking_through_summon_zulaman_gods_master::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +/*###### +## Quest 12630: Kickin' Nass and Takin' Manes +######*/ + +enum KickinNassAndTakinManes +{ + SPELL_SUMMON_NASS = 51865 +}; + +// 51864 - Player Summon Nass +// 51889 - Quest Accept Summon Nass +class spell_zuldrak_summon_nass : public SpellScript +{ + PrepareSpellScript(spell_zuldrak_summon_nass); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_SUMMON_NASS }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetHitUnit()->CastSpell(GetHitUnit(), SPELL_SUMMON_NASS); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_zuldrak_summon_nass::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +/*###### +## Quest 12730: Convocation at Zol'Heb +######*/ + +enum ConvocationAtZolHeb +{ + SPELL_AKALIS_STUN = 52989 +}; + +// 53010 - Convocation at Zol'Heb: Removef Akali's Stun +class spell_zuldrak_remove_akalis_stun : public SpellScript +{ + PrepareSpellScript(spell_zuldrak_remove_akalis_stun); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_AKALIS_STUN }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetHitUnit()->RemoveAurasDueToSpell(SPELL_AKALIS_STUN); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_zuldrak_remove_akalis_stun::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + void AddSC_zuldrak() { RegisterCreatureAI(npc_released_offspring_harkoa); @@ -925,4 +1072,8 @@ void AddSC_zuldrak() RegisterSpellScript(spell_zuldrak_cocooned_on_quest); RegisterSpellScript(spell_zuldrak_scourgewagon_explosion); RegisterSpellScript(spell_zuldrak_chains_of_the_scourge); + RegisterSpellScript(spell_zuldrak_rampage_summon_zulaman_gods_master); + RegisterSpellScript(spell_zuldrak_breaking_through_summon_zulaman_gods_master); + RegisterSpellScript(spell_zuldrak_summon_nass); + RegisterSpellScript(spell_zuldrak_remove_akalis_stun); } -- cgit v1.2.3