From 2dc126b0df69fae558261d3df94f3e9040aed8ad Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Tue, 9 Nov 2021 11:45:27 +0100 Subject: [PATCH] refactor(Scripts/Spells): convert spell_quest into new system (#9064) --- src/server/scripts/Spells/spell_quest.cpp | 3405 ++++++++------------- 1 file changed, 1333 insertions(+), 2072 deletions(-) diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp index 5206b44fd..75a1347a9 100644 --- a/src/server/scripts/Spells/spell_quest.cpp +++ b/src/server/scripts/Spells/spell_quest.cpp @@ -32,75 +32,58 @@ #include "SpellScript.h" #include "Vehicle.h" -// Ours -class spell_q11065_wrangle_some_aether_rays : public SpellScriptLoader +class spell_q11065_wrangle_some_aether_rays : public SpellScript { -public: - spell_q11065_wrangle_some_aether_rays() : SpellScriptLoader("spell_q11065_wrangle_some_aether_rays") { } + PrepareSpellScript(spell_q11065_wrangle_some_aether_rays); - class spell_q11065_wrangle_some_aether_rays_SpellScript : public SpellScript + SpellCastResult CheckCast() { - PrepareSpellScript(spell_q11065_wrangle_some_aether_rays_SpellScript); + // if thane is present and not in combat - allow cast + if (Unit* target = GetExplTargetUnit()) + if (target->GetHealthPct() < 40.0f) + return SPELL_CAST_OK; - SpellCastResult CheckCast() - { - // if thane is present and not in combat - allow cast - if (Unit* target = GetExplTargetUnit()) - if (target->GetHealthPct() < 40.0f) - return SPELL_CAST_OK; - - return SPELL_FAILED_CASTER_AURASTATE; - } - - void Register() override - { - OnCheckCast += SpellCheckCastFn(spell_q11065_wrangle_some_aether_rays_SpellScript::CheckCast); - } - }; - - SpellScript* GetSpellScript() const override - { - return new spell_q11065_wrangle_some_aether_rays_SpellScript(); + return SPELL_FAILED_CASTER_AURASTATE; } - class spell_q11065_wrangle_some_aether_rays_AuraScript : public AuraScript + void Register() override { - PrepareAuraScript(spell_q11065_wrangle_some_aether_rays_AuraScript) - void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) - { - Unit* ar = GetTarget(); - if (ar && ar->ToCreature()) - { - if (GetCaster() && GetCaster()->ToPlayer()) - { - Player* player = GetCaster()->ToPlayer(); + OnCheckCast += SpellCheckCastFn(spell_q11065_wrangle_some_aether_rays::CheckCast); + } +}; - player->KilledMonsterCredit(23343); - if (Creature* cr = GetCaster()->SummonCreature(23343, ar->GetPositionX(), ar->GetPositionY(), ar->GetPositionZ(), ar->GetOrientation(), TEMPSUMMON_TIMED_DESPAWN, 180000)) - { - cr->CastSpell(player, 40926, true); - cr->GetMotionMaster()->MoveFollow(player, 5.0f, 2 * M_PI * rand_norm()); - ar->ToCreature()->DespawnOrUnsummon(500); - } +class spell_q11065_wrangle_some_aether_rays_aura : public AuraScript +{ + PrepareAuraScript(spell_q11065_wrangle_some_aether_rays_aura) + void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + Unit* ar = GetTarget(); + if (ar && ar->ToCreature()) + { + if (GetCaster() && GetCaster()->ToPlayer()) + { + Player* player = GetCaster()->ToPlayer(); + + player->KilledMonsterCredit(23343); + if (Creature* cr = GetCaster()->SummonCreature(23343, ar->GetPositionX(), ar->GetPositionY(), ar->GetPositionZ(), ar->GetOrientation(), TEMPSUMMON_TIMED_DESPAWN, 180000)) + { + cr->CastSpell(player, 40926, true); + cr->GetMotionMaster()->MoveFollow(player, 5.0f, 2 * M_PI * rand_norm()); + ar->ToCreature()->DespawnOrUnsummon(500); } } } + } - void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) - { - SetDuration(5000); - } - - void Register() override - { - OnEffectApply += AuraEffectApplyFn(spell_q11065_wrangle_some_aether_rays_AuraScript::HandleEffectApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); - OnEffectRemove += AuraEffectRemoveFn(spell_q11065_wrangle_some_aether_rays_AuraScript::HandleEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); - } - }; - - AuraScript* GetAuraScript() const override + void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { - return new spell_q11065_wrangle_some_aether_rays_AuraScript(); + SetDuration(5000); + } + + void Register() override + { + OnEffectApply += AuraEffectApplyFn(spell_q11065_wrangle_some_aether_rays_aura::HandleEffectApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + OnEffectRemove += AuraEffectRemoveFn(spell_q11065_wrangle_some_aether_rays_aura::HandleEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); } }; @@ -112,342 +95,249 @@ enum eDrakuru NPC_DRAKURU = 28016, }; -class spell_image_of_drakuru_reagent_check : public SpellScriptLoader +class spell_image_of_drakuru_reagent_check : public SpellScript { -public: - spell_image_of_drakuru_reagent_check() : SpellScriptLoader("spell_image_of_drakuru_reagent_check") { } + PrepareSpellScript(spell_image_of_drakuru_reagent_check); - class spell_image_of_drakuru_reagent_check_SpellScript : public SpellScript + void HandleDummyEffect(SpellEffIndex /*effIndex*/) { - PrepareSpellScript(spell_image_of_drakuru_reagent_check_SpellScript); + Unit* caster = GetCaster(); + if (!caster || !caster->ToPlayer()) + return; + Player* player = caster->ToPlayer(); - void HandleDummyEffect(SpellEffIndex /*effIndex*/) + float dist = player->GetDistance(3385, -1807, 114); + if (dist < 40.0f) { - Unit* caster = GetCaster(); - if (!caster || !caster->ToPlayer()) - return; - Player* player = caster->ToPlayer(); - - float dist = player->GetDistance(3385, -1807, 114); - if (dist < 40.0f) - { - caster->ToPlayer()->GroupEventHappens(QUEST_SUBJECT_TO_INTERPRETATION, caster); - caster->CastSpell(caster, 47118, false); - return; - } - - dist = player->GetDistance(4244, -2025, 238); - if (dist < 40.0f) - { - caster->CastSpell(caster, 47150, false); - return; - } - - dist = player->GetDistance(4524, -3472, 228); - if (dist < 40.0f) - { - caster->ToPlayer()->GroupEventHappens(QUEST_MY_HEART_IS_IN_YOUR_HANDS, caster); - caster->CastSpell(caster, 47317, false); - return; - } - - dist = player->GetDistance(4599, -4877, 48); - if (dist < 40.0f) - { - caster->CastSpell(caster, 47406, false); - return; - } - - dist = player->GetDistance(-236, -614, 116); - if (dist < 40.0f) - { - caster->CastSpell(caster, 50440, false); - return; - } + caster->ToPlayer()->GroupEventHappens(QUEST_SUBJECT_TO_INTERPRETATION, caster); + caster->CastSpell(caster, 47118, false); + return; } - void Register() override + dist = player->GetDistance(4244, -2025, 238); + if (dist < 40.0f) { - OnEffectHitTarget += SpellEffectFn(spell_image_of_drakuru_reagent_check_SpellScript::HandleDummyEffect, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const override - { - return new spell_image_of_drakuru_reagent_check_SpellScript(); - }; -}; - -class spell_q12014_steady_as_a_rock : public SpellScriptLoader -{ -public: - spell_q12014_steady_as_a_rock() : SpellScriptLoader("spell_q12014_steady_as_a_rock") { } - - class spell_q12014_steady_as_a_rock_SpellScript : public SpellScript - { - PrepareSpellScript(spell_q12014_steady_as_a_rock_SpellScript); - - void HandleFinish() - { - Unit* caster = GetCaster(); - if (!caster || !caster->ToPlayer()) // caster cant be null, but meh :p - return; - - if (caster->ToPlayer()->GetQuestStatus(12014 /*QUEST_STEADY_AS_A_ROCK*/) == QUEST_STATUS_INCOMPLETE) - { - float x = caster->GetPositionX() + 3.0f * cos(caster->GetOrientation()); - float y = caster->GetPositionY() + 3.0f * sin(caster->GetOrientation()); - float o = caster->GetOrientation() < M_PI ? caster->GetOrientation() + M_PI : caster->GetOrientation() - M_PI; - caster->SummonGameObject(188367, x, y, caster->GetPositionZ(), o, 0.0f, 0.0f, 0.0f, 0.0f, 60000); - } + caster->CastSpell(caster, 47150, false); + return; } - void Register() override + dist = player->GetDistance(4524, -3472, 228); + if (dist < 40.0f) { - AfterCast += SpellCastFn(spell_q12014_steady_as_a_rock_SpellScript::HandleFinish); - } - }; - - SpellScript* GetSpellScript() const override - { - return new spell_q12014_steady_as_a_rock_SpellScript(); - }; -}; - -class spell_q11026_a11051_banish_the_demons : public SpellScriptLoader -{ -public: - spell_q11026_a11051_banish_the_demons() : SpellScriptLoader("spell_q11026_a11051_banish_the_demons") { } - - class spell_q11026_a11051_banish_the_demons_AuraScript : public AuraScript - { - PrepareAuraScript(spell_q11026_a11051_banish_the_demons_AuraScript) - - void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) - { - Unit* ar = GetTarget(); - if (ar && !ar->IsAlive()) - ar->CastSpell(ar, 40828, true); // Banish kill credit + caster->ToPlayer()->GroupEventHappens(QUEST_MY_HEART_IS_IN_YOUR_HANDS, caster); + caster->CastSpell(caster, 47317, false); + return; } - void Register() override + dist = player->GetDistance(4599, -4877, 48); + if (dist < 40.0f) { - // aura spell only - if (m_scriptSpellId == 40825) - OnEffectRemove += AuraEffectRemoveFn(spell_q11026_a11051_banish_the_demons_AuraScript::HandleEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + caster->CastSpell(caster, 47406, false); + return; } - }; - AuraScript* GetAuraScript() const override - { - return new spell_q11026_a11051_banish_the_demons_AuraScript(); + dist = player->GetDistance(-236, -614, 116); + if (dist < 40.0f) + { + caster->CastSpell(caster, 50440, false); + return; + } } - class spell_q11026_a11051_banish_the_demons_SpellScript : public SpellScript + void Register() override { - PrepareSpellScript(spell_q11026_a11051_banish_the_demons_SpellScript); - - void HandleScriptEffect(SpellEffIndex /*effIndex*/) - { - if (Unit* target = GetHitUnit()) - if (Unit* owner = target->ToTempSummon()->GetSummonerUnit()) - if (owner->GetTypeId() == TYPEID_PLAYER) - owner->ToPlayer()->KilledMonsterCredit(23327); // Some trigger, just count - } - - void Register() override - { - // script effect only - if (m_scriptSpellId == 40828) - OnEffectHitTarget += SpellEffectFn(spell_q11026_a11051_banish_the_demons_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); - } - }; - - SpellScript* GetSpellScript() const override - { - return new spell_q11026_a11051_banish_the_demons_SpellScript(); - }; -}; - -class spell_q10525_vision_guide : public SpellScriptLoader -{ -public: - spell_q10525_vision_guide() : SpellScriptLoader("spell_q10525_vision_guide") { } - - class spell_q10525_vision_guide_AuraScript : public AuraScript - { - PrepareAuraScript(spell_q10525_vision_guide_AuraScript) - - void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) - { - SetDuration(75 * IN_MILLISECONDS); - } - - void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) - { - if (Player* target = GetTarget()->ToPlayer()) - { - target->AreaExploredOrEventHappens(10525); // Vision Guide quest - target->GetMotionMaster()->MovementExpired(); - target->CleanupAfterTaxiFlight(); - target->NearTeleportTo(2283.267f, 5987.395f, 142.4f, 3.80f); - } - } - - void Register() override - { - OnEffectApply += AuraEffectApplyFn(spell_q10525_vision_guide_AuraScript::HandleEffectApply, EFFECT_0, SPELL_AURA_TRANSFORM, AURA_EFFECT_HANDLE_REAL); - AfterEffectRemove += AuraEffectRemoveFn(spell_q10525_vision_guide_AuraScript::HandleEffectRemove, EFFECT_0, SPELL_AURA_TRANSFORM, AURA_EFFECT_HANDLE_REAL); - } - }; - - AuraScript* GetAuraScript() const override - { - return new spell_q10525_vision_guide_AuraScript(); + OnEffectHitTarget += SpellEffectFn(spell_image_of_drakuru_reagent_check::HandleDummyEffect, EFFECT_0, SPELL_EFFECT_DUMMY); } }; -class spell_q11322_q11317_the_cleansing : public SpellScriptLoader +class spell_q12014_steady_as_a_rock : public SpellScript { -public: - spell_q11322_q11317_the_cleansing() : SpellScriptLoader("spell_q11322_q11317_the_cleansing") { } + PrepareSpellScript(spell_q12014_steady_as_a_rock); - class spell_q11322_q11317_the_cleansing_AuraScript : public AuraScript + void HandleFinish() { - PrepareAuraScript(spell_q11322_q11317_the_cleansing_AuraScript) + Unit* caster = GetCaster(); + if (!caster || !caster->ToPlayer()) // caster cant be null, but meh :p + return; - void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + if (caster->ToPlayer()->GetQuestStatus(12014 /*QUEST_STEADY_AS_A_ROCK*/) == QUEST_STATUS_INCOMPLETE) { - Unit* ar = GetCaster(); - if (ar && ar->ToPlayer()) + float x = caster->GetPositionX() + 3.0f * cos(caster->GetOrientation()); + float y = caster->GetPositionY() + 3.0f * sin(caster->GetOrientation()); + float o = caster->GetOrientation() < M_PI ? caster->GetOrientation() + M_PI : caster->GetOrientation() - M_PI; + caster->SummonGameObject(188367, x, y, caster->GetPositionZ(), o, 0.0f, 0.0f, 0.0f, 0.0f, 60000); + } + } + + void Register() override + { + AfterCast += SpellCastFn(spell_q12014_steady_as_a_rock::HandleFinish); + } +}; + +class spell_q11026_a11051_banish_the_demons_aura : public AuraScript +{ + PrepareAuraScript(spell_q11026_a11051_banish_the_demons_aura) + + void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + Unit* ar = GetTarget(); + if (ar && !ar->IsAlive()) + ar->CastSpell(ar, 40828, true); // Banish kill credit + } + + void Register() override + { + // aura spell only + if (m_scriptSpellId == 40825) + OnEffectRemove += AuraEffectRemoveFn(spell_q11026_a11051_banish_the_demons_aura::HandleEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + +class spell_q11026_a11051_banish_the_demons : public SpellScript +{ + PrepareSpellScript(spell_q11026_a11051_banish_the_demons); + + void HandleScriptEffect(SpellEffIndex /*effIndex*/) + { + if (Unit* target = GetHitUnit()) + if (Unit* owner = target->ToTempSummon()->GetSummonerUnit()) + if (owner->GetTypeId() == TYPEID_PLAYER) + owner->ToPlayer()->KilledMonsterCredit(23327); // Some trigger, just count + } + + void Register() override + { + // script effect only + if (m_scriptSpellId == 40828) + OnEffectHitTarget += SpellEffectFn(spell_q11026_a11051_banish_the_demons::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +class spell_q10525_vision_guide : public AuraScript +{ + PrepareAuraScript(spell_q10525_vision_guide) + + void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + SetDuration(75 * IN_MILLISECONDS); + } + + void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + if (Player* target = GetTarget()->ToPlayer()) + { + target->AreaExploredOrEventHappens(10525); // Vision Guide quest + target->GetMotionMaster()->MovementExpired(); + target->CleanupAfterTaxiFlight(); + target->NearTeleportTo(2283.267f, 5987.395f, 142.4f, 3.80f); + } + } + + void Register() override + { + OnEffectApply += AuraEffectApplyFn(spell_q10525_vision_guide::HandleEffectApply, EFFECT_0, SPELL_AURA_TRANSFORM, AURA_EFFECT_HANDLE_REAL); + AfterEffectRemove += AuraEffectRemoveFn(spell_q10525_vision_guide::HandleEffectRemove, EFFECT_0, SPELL_AURA_TRANSFORM, AURA_EFFECT_HANDLE_REAL); + } +}; + +class spell_q11322_q11317_the_cleansing : public AuraScript +{ + PrepareAuraScript(spell_q11322_q11317_the_cleansing) + + void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + Unit* ar = GetCaster(); + if (ar && ar->ToPlayer()) + { + if (ar->ToPlayer()->GetQuestStatus(11317) == QUEST_STATUS_INCOMPLETE || ar->ToPlayer()->GetQuestStatus(11322) == QUEST_STATUS_INCOMPLETE) + ar->SummonCreature(27959, 3032.0f, -5095.0f, 723.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000); + + ar->SetStandState(UNIT_STAND_STATE_SIT); + } + } + + void Register() override + { + OnEffectApply += AuraEffectApplyFn(spell_q11322_q11317_the_cleansing::HandleEffectApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + +class spell_q10714_on_spirits_wings : public SpellScript +{ + PrepareSpellScript(spell_q10714_on_spirits_wings); + + uint8 count; + bool Load() override + { + count = 0; + return true; + } + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + if (Creature* target = GetHitCreature()) + if (target->GetSpawnId() == 77757 || target->GetSpawnId() == 78693) { - if (ar->ToPlayer()->GetQuestStatus(11317) == QUEST_STATUS_INCOMPLETE || ar->ToPlayer()->GetQuestStatus(11322) == QUEST_STATUS_INCOMPLETE) - ar->SummonCreature(27959, 3032.0f, -5095.0f, 723.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000); - - ar->SetStandState(UNIT_STAND_STATE_SIT); + count++; + if (count == 2) + if (GetCaster() && GetCaster()->ToPlayer()) + GetCaster()->ToPlayer()->KilledMonsterCredit(22383); } - } + } - void Register() override - { - OnEffectApply += AuraEffectApplyFn(spell_q11322_q11317_the_cleansing_AuraScript::HandleEffectApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); - } - }; - - AuraScript* GetAuraScript() const override + void Register() override { - return new spell_q11322_q11317_the_cleansing_AuraScript(); + OnEffectHitTarget += SpellEffectFn(spell_q10714_on_spirits_wings::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; -class spell_q10714_on_spirits_wings : public SpellScriptLoader +class spell_q10720_the_smallest_creature : public SpellScript { -public: - spell_q10714_on_spirits_wings() : SpellScriptLoader("spell_q10714_on_spirits_wings") { } + PrepareSpellScript(spell_q10720_the_smallest_creature); - class spell_q10714_on_spirits_wings_SpellScript : public SpellScript + void HandleScriptEffect(SpellEffIndex /*effIndex*/) { - PrepareSpellScript(spell_q10714_on_spirits_wings_SpellScript); - - uint8 count; - bool Load() override - { - count = 0; - return true; - } - - void HandleDummy(SpellEffIndex /*effIndex*/) - { - if (Creature* target = GetHitCreature()) - if (target->GetSpawnId() == 77757 || target->GetSpawnId() == 78693) - { - count++; - if (count == 2) - if (GetCaster() && GetCaster()->ToPlayer()) - GetCaster()->ToPlayer()->KilledMonsterCredit(22383); - } - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_q10714_on_spirits_wings_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const override - { - return new spell_q10714_on_spirits_wings_SpellScript(); - }; -}; - -class spell_q10720_the_smallest_creature : public SpellScriptLoader -{ -public: - spell_q10720_the_smallest_creature() : SpellScriptLoader("spell_q10720_the_smallest_creature") { } - - class spell_q10720_the_smallest_creature_SpellScript : public SpellScript - { - PrepareSpellScript(spell_q10720_the_smallest_creature_SpellScript); - - void HandleScriptEffect(SpellEffIndex /*effIndex*/) - { - if (GetCaster() && GetHitUnit()) - if (Player* player = GetCaster()->GetCharmerOrOwnerPlayerOrPlayerItself()) - player->KilledMonsterCredit(GetHitUnit()->GetEntry()); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_q10720_the_smallest_creature_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); - } - }; - - SpellScript* GetSpellScript() const override - { - return new spell_q10720_the_smallest_creature_SpellScript(); - }; -}; - -class spell_q13086_last_line_of_defence : public SpellScriptLoader -{ -public: - spell_q13086_last_line_of_defence() : SpellScriptLoader("spell_q13086_last_line_of_defence") { } - - class spell_q13086_last_line_of_defence_SpellScript : public SpellScript - { - PrepareSpellScript(spell_q13086_last_line_of_defence_SpellScript); - - bool Load() override { _triggerSpellId = 0; return true; } - - void HandleDummy(SpellEffIndex effIndex) - { - if (effIndex == EFFECT_0) - _triggerSpellId = GetSpellInfo()->Effects[effIndex].CalcValue(); - - PreventHitEffect(effIndex); - } - - void HandleAfterCast() - { - if (WorldLocation const* loc = GetExplTargetDest()) - GetCaster()->CastSpell(loc->GetPositionX(), loc->GetPositionY(), loc->GetPositionZ(), _triggerSpellId, true); - } - - void Register() override - { - OnEffectLaunch += SpellEffectFn(spell_q13086_last_line_of_defence_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - OnEffectLaunch += SpellEffectFn(spell_q13086_last_line_of_defence_SpellScript::HandleDummy, EFFECT_1, SPELL_EFFECT_DUMMY); - AfterCast += SpellCastFn(spell_q13086_last_line_of_defence_SpellScript::HandleAfterCast); - } - - private: - uint32 _triggerSpellId; - }; - - SpellScript* GetSpellScript() const override - { - return new spell_q13086_last_line_of_defence_SpellScript(); + if (GetCaster() && GetHitUnit()) + if (Player* player = GetCaster()->GetCharmerOrOwnerPlayerOrPlayerItself()) + player->KilledMonsterCredit(GetHitUnit()->GetEntry()); } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_q10720_the_smallest_creature::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +class spell_q13086_last_line_of_defence : public SpellScript +{ + PrepareSpellScript(spell_q13086_last_line_of_defence); + + bool Load() override { _triggerSpellId = 0; return true; } + + void HandleDummy(SpellEffIndex effIndex) + { + if (effIndex == EFFECT_0) + _triggerSpellId = GetSpellInfo()->Effects[effIndex].CalcValue(); + + PreventHitEffect(effIndex); + } + + void HandleAfterCast() + { + if (WorldLocation const* loc = GetExplTargetDest()) + GetCaster()->CastSpell(loc->GetPositionX(), loc->GetPositionY(), loc->GetPositionZ(), _triggerSpellId, true); + } + + void Register() override + { + OnEffectLaunch += SpellEffectFn(spell_q13086_last_line_of_defence::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + OnEffectLaunch += SpellEffectFn(spell_q13086_last_line_of_defence::HandleDummy, EFFECT_1, SPELL_EFFECT_DUMMY); + AfterCast += SpellCastFn(spell_q13086_last_line_of_defence::HandleAfterCast); + } + +private: + uint32 _triggerSpellId; }; enum eShadowVaultDecree @@ -455,117 +345,90 @@ enum eShadowVaultDecree NPC_THANE_UFRANG = 29919, }; -class spell_q12943_shadow_vault_decree : public SpellScriptLoader +class spell_q12943_shadow_vault_decree : public SpellScript { -public: - spell_q12943_shadow_vault_decree() : SpellScriptLoader("spell_q12943_shadow_vault_decree") { } + PrepareSpellScript(spell_q12943_shadow_vault_decree); - class spell_q12943_shadow_vault_decree_SpellScript : public SpellScript + SpellCastResult CheckRequirement() { - PrepareSpellScript(spell_q12943_shadow_vault_decree_SpellScript); + // if thane is present and not in combat - allow cast + Unit* caster = GetCaster(); + if (Creature* thane = caster->FindNearestCreature(NPC_THANE_UFRANG, 30.0f)) + if (!thane->IsInCombat()) + return SPELL_CAST_OK; - SpellCastResult CheckRequirement() - { - // if thane is present and not in combat - allow cast - Unit* caster = GetCaster(); - if (Creature* thane = caster->FindNearestCreature(NPC_THANE_UFRANG, 30.0f)) - if (!thane->IsInCombat()) - return SPELL_CAST_OK; + return SPELL_FAILED_CASTER_AURASTATE; + } - return SPELL_FAILED_CASTER_AURASTATE; - } - - void HandleScriptEffect(SpellEffIndex /*effIndex*/) - { - Unit* caster = GetCaster(); - if (Creature* thane = caster->FindNearestCreature(NPC_THANE_UFRANG, 30.0f)) - thane->AI()->AttackStart(caster); - } - - void Register() override - { - OnCheckCast += SpellCheckCastFn(spell_q12943_shadow_vault_decree_SpellScript::CheckRequirement); - OnEffectHitTarget += SpellEffectFn(spell_q12943_shadow_vault_decree_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); - } - }; - - SpellScript* GetSpellScript() const override + void HandleScriptEffect(SpellEffIndex /*effIndex*/) { - return new spell_q12943_shadow_vault_decree_SpellScript(); + Unit* caster = GetCaster(); + if (Creature* thane = caster->FindNearestCreature(NPC_THANE_UFRANG, 30.0f)) + thane->AI()->AttackStart(caster); + } + + void Register() override + { + OnCheckCast += SpellCheckCastFn(spell_q12943_shadow_vault_decree::CheckRequirement); + OnEffectHitTarget += SpellEffectFn(spell_q12943_shadow_vault_decree::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); } }; -class spell_q10769_dissension_amongst_the_ranks : public SpellScriptLoader +class spell_q10769_dissension_amongst_the_ranks_aura : public AuraScript { -public: - spell_q10769_dissension_amongst_the_ranks() : SpellScriptLoader("spell_q10769_dissension_amongst_the_ranks") { } + PrepareAuraScript(spell_q10769_dissension_amongst_the_ranks_aura) - class spell_q10769_dissension_amongst_the_ranks_AuraScript : public AuraScript + void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { - PrepareAuraScript(spell_q10769_dissension_amongst_the_ranks_AuraScript) - - void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + Unit* ar = GetTarget(); + if (ar) { - Unit* ar = GetTarget(); - if (ar) - { - if (ar->getGender() == GENDER_MALE) - ar->CastSpell(ar, 38225, true); - else - ar->CastSpell(ar, 38227, true); - } + if (ar->getGender() == GENDER_MALE) + ar->CastSpell(ar, 38225, true); + else + ar->CastSpell(ar, 38227, true); } - - void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) - { - Unit* ar = GetTarget(); - if (ar) - { - if (ar->getGender() == GENDER_MALE) - ar->RemoveAurasDueToSpell(38225); - else - ar->RemoveAurasDueToSpell(38227); - } - } - - void Register() override - { - if (m_scriptSpellId == 38224) - { - OnEffectApply += AuraEffectApplyFn(spell_q10769_dissension_amongst_the_ranks_AuraScript::HandleEffectApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); - OnEffectRemove += AuraEffectRemoveFn(spell_q10769_dissension_amongst_the_ranks_AuraScript::HandleEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); - } - } - }; - - class spell_q10769_dissension_amongst_the_ranks_SpellScript : public SpellScript - { - PrepareSpellScript(spell_q10769_dissension_amongst_the_ranks_SpellScript); - - void HandleScriptEffect(SpellEffIndex /*effIndex*/) - { - if (Unit* target = GetHitUnit()) - if (Player* player = target->GetCharmerOrOwnerPlayerOrPlayerItself()) - if (player->HasAura(38224)) - player->KilledMonsterCredit(22051); - } - - void Register() override - { - if (m_scriptSpellId == 38223) - OnEffectHitTarget += SpellEffectFn(spell_q10769_dissension_amongst_the_ranks_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); - } - }; - - AuraScript* GetAuraScript() const override - { - return new spell_q10769_dissension_amongst_the_ranks_AuraScript(); } - SpellScript* GetSpellScript() const override + void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { - return new spell_q10769_dissension_amongst_the_ranks_SpellScript(); - }; + Unit* ar = GetTarget(); + if (ar) + { + if (ar->getGender() == GENDER_MALE) + ar->RemoveAurasDueToSpell(38225); + else + ar->RemoveAurasDueToSpell(38227); + } + } + + void Register() override + { + if (m_scriptSpellId == 38224) + { + OnEffectApply += AuraEffectApplyFn(spell_q10769_dissension_amongst_the_ranks_aura::HandleEffectApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + OnEffectRemove += AuraEffectRemoveFn(spell_q10769_dissension_amongst_the_ranks_aura::HandleEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } + } +}; + +class spell_q10769_dissension_amongst_the_ranks : public SpellScript +{ + PrepareSpellScript(spell_q10769_dissension_amongst_the_ranks); + + void HandleScriptEffect(SpellEffIndex /*effIndex*/) + { + if (Unit* target = GetHitUnit()) + if (Player* player = target->GetCharmerOrOwnerPlayerOrPlayerItself()) + if (player->HasAura(38224)) + player->KilledMonsterCredit(22051); + } + + void Register() override + { + if (m_scriptSpellId == 38223) + OnEffectHitTarget += SpellEffectFn(spell_q10769_dissension_amongst_the_ranks::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } }; enum q11520Roots @@ -574,14 +437,9 @@ enum q11520Roots SPELL_SUMMON_RAZORTHORN_ROOT = 44941, }; -class spell_q11520_discovering_your_roots : public SpellScriptLoader -{ -public: - spell_q11520_discovering_your_roots() : SpellScriptLoader("spell_q11520_discovering_your_roots") { } - - class spell_q11520_discovering_your_roots_SpellScript : public SpellScript + class spell_q11520_discovering_your_roots : public SpellScript { - PrepareSpellScript(spell_q11520_discovering_your_roots_SpellScript); + PrepareSpellScript(spell_q11520_discovering_your_roots); void HandleDummy(SpellEffIndex /*effIndex*/) { @@ -595,114 +453,86 @@ public: void Register() override { - OnEffectHitTarget += SpellEffectFn(spell_q11520_discovering_your_roots_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + OnEffectHitTarget += SpellEffectFn(spell_q11520_discovering_your_roots::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; - SpellScript* GetSpellScript() const override - { - return new spell_q11520_discovering_your_roots_SpellScript(); - }; -}; - -class spell_quest_dragonmaw_race_generic : public SpellScriptLoader +class spell_quest_dragonmaw_race_generic : public SpellScript { -public: - spell_quest_dragonmaw_race_generic() : SpellScriptLoader("spell_quest_dragonmaw_race_generic") { } + PrepareSpellScript(spell_quest_dragonmaw_race_generic); - class spell_quest_dragonmaw_race_generic_SpellScript : public SpellScript + bool Load() override { - PrepareSpellScript(spell_quest_dragonmaw_race_generic_SpellScript); - - bool Load() override - { - _x = _y = _z = 0.0f; - return true; - } - - SpellCastResult RelocateDest() - { - Unit* caster = GetCaster(); - float o = Position::NormalizeOrientation(caster->GetOrientation() + frand(0.0f, 2 * M_PI)); - float dist = frand(5.0f, 30.0f); - _x = caster->GetPositionX() + dist * cos(o); - _y = caster->GetPositionY() + dist * sin(o); - _z = caster->GetPositionZ() + frand(-10.0f, 15.0f); - GetSpell()->m_targets.SetDst(_x, _y, _z, 0.0f, caster->GetMapId()); - return SPELL_CAST_OK; - } - - void ChangeDest(SpellEffIndex effIndex) - { - PreventHitDefaultEffect(effIndex); - Unit* caster = GetCaster(); - if (Creature* trigger = caster->SummonCreature(23356, _x, _y, _z, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 1500)) - { - trigger->CastSpell(trigger, GetSpellInfo()->Effects[effIndex].TriggerSpell, true); - if (GetSpellInfo()->Effects[effIndex].TriggerSpell == 41064) - trigger->CastSpell(trigger, 41284, true); - } - } - - void Register() override - { - OnCheckCast += SpellCheckCastFn(spell_quest_dragonmaw_race_generic_SpellScript::RelocateDest); - OnEffectHit += SpellEffectFn(spell_quest_dragonmaw_race_generic_SpellScript::ChangeDest, EFFECT_0, SPELL_EFFECT_TRIGGER_MISSILE); - } - - private: - float _x, _y, _z; - }; - - SpellScript* GetSpellScript() const override - { - return new spell_quest_dragonmaw_race_generic_SpellScript(); + _x = _y = _z = 0.0f; + return true; } + + SpellCastResult RelocateDest() + { + Unit* caster = GetCaster(); + float o = Position::NormalizeOrientation(caster->GetOrientation() + frand(0.0f, 2 * M_PI)); + float dist = frand(5.0f, 30.0f); + _x = caster->GetPositionX() + dist * cos(o); + _y = caster->GetPositionY() + dist * sin(o); + _z = caster->GetPositionZ() + frand(-10.0f, 15.0f); + GetSpell()->m_targets.SetDst(_x, _y, _z, 0.0f, caster->GetMapId()); + return SPELL_CAST_OK; + } + + void ChangeDest(SpellEffIndex effIndex) + { + PreventHitDefaultEffect(effIndex); + Unit* caster = GetCaster(); + if (Creature* trigger = caster->SummonCreature(23356, _x, _y, _z, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 1500)) + { + trigger->CastSpell(trigger, GetSpellInfo()->Effects[effIndex].TriggerSpell, true); + if (GetSpellInfo()->Effects[effIndex].TriggerSpell == 41064) + trigger->CastSpell(trigger, 41284, true); + } + } + + void Register() override + { + OnCheckCast += SpellCheckCastFn(spell_quest_dragonmaw_race_generic::RelocateDest); + OnEffectHit += SpellEffectFn(spell_quest_dragonmaw_race_generic::ChangeDest, EFFECT_0, SPELL_EFFECT_TRIGGER_MISSILE); + } + +private: + float _x, _y, _z; }; -class spell_q11670_it_was_the_orcs_honest : public SpellScriptLoader +class spell_q11670_it_was_the_orcs_honest : public SpellScript { -public: - spell_q11670_it_was_the_orcs_honest() : SpellScriptLoader("spell_q11670_it_was_the_orcs_honest") { } + PrepareSpellScript(spell_q11670_it_was_the_orcs_honest); - class spell_q11670_it_was_the_orcs_honest_SpellScript : public SpellScript + void HandleScriptEffect() { - PrepareSpellScript(spell_q11670_it_was_the_orcs_honest_SpellScript); + if (GetSpellInfo()->Id != 45759) + return; - void HandleScriptEffect() - { - if (GetSpellInfo()->Id != 45759) - return; - - if (Unit* caster = GetCaster()) - caster->CastSpell(caster, caster->getGender() == GENDER_MALE ? 45760 : 45762, true); - } - - SpellCastResult CheckTarget() - { - if (GetSpellInfo()->Id != 45742) - return SPELL_CAST_OK; - - if (!GetCaster() || !GetCaster()->HasAura((GetCaster()->getGender() == GENDER_MALE ? 45760 : 45762))) - { - SetCustomCastResultMessage(SPELL_CUSTOM_ERROR_NEED_WARSONG_DISGUISE); - return SPELL_FAILED_CUSTOM_ERROR; - } + if (Unit* caster = GetCaster()) + caster->CastSpell(caster, caster->getGender() == GENDER_MALE ? 45760 : 45762, true); + } + SpellCastResult CheckTarget() + { + if (GetSpellInfo()->Id != 45742) return SPELL_CAST_OK; - } - void Register() override + if (!GetCaster() || !GetCaster()->HasAura((GetCaster()->getGender() == GENDER_MALE ? 45760 : 45762))) { - OnCheckCast += SpellCheckCastFn(spell_q11670_it_was_the_orcs_honest_SpellScript::CheckTarget); - AfterHit += SpellHitFn(spell_q11670_it_was_the_orcs_honest_SpellScript::HandleScriptEffect); + SetCustomCastResultMessage(SPELL_CUSTOM_ERROR_NEED_WARSONG_DISGUISE); + return SPELL_FAILED_CUSTOM_ERROR; } - }; - SpellScript* GetSpellScript() const override + return SPELL_CAST_OK; + } + + void Register() override { - return new spell_q11670_it_was_the_orcs_honest_SpellScript(); - }; + OnCheckCast += SpellCheckCastFn(spell_q11670_it_was_the_orcs_honest::CheckTarget); + AfterHit += SpellHitFn(spell_q11670_it_was_the_orcs_honest::HandleScriptEffect); + } }; enum eTestFlight @@ -740,95 +570,84 @@ static Position ShooterPos[] = {1917.16f, 5581.52f, 269.23f, 0.11f}, }; -class spell_quest_test_flight_charging : public SpellScriptLoader +class spell_quest_test_flight_charging : public AuraScript { -public: - spell_quest_test_flight_charging() : SpellScriptLoader("spell_quest_test_flight_charging") { } + PrepareAuraScript(spell_quest_test_flight_charging) - class spell_quest_test_flight_charging_AuraScript : public AuraScript + void OnApplySelf(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { - PrepareAuraScript(spell_quest_test_flight_charging_AuraScript) + GetTarget()->CastSpell(GetTarget(), SPELL_TELEPORT_VISUAL, true); + GetTarget()->CastSpell(GetTarget(), SPELL_CANNON_CHARGING_PORT, true); + } - void OnApplySelf(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + void PerformKick() + { + if (Player* player = GetTarget()->ToPlayer()) { + Creature* shooter = player->FindNearestCreature(NPC_GNOME_SHOOTER, 20.0f); + if (!shooter) + return; + + uint8 task = 0; + uint32 spellId = 0; + for (; task < 4; ++task) + if (shooter->GetDistance(ShooterPos[task]) < 1.0f) + break; + + switch (task) + { + case 0: + spellId = SPELL_SOARING_10557; + break; + case 1: + spellId = SPELL_SOARING_10710; + break; + case 2: + spellId = SPELL_SOARING_10711; + break; + case 3: + spellId = SPELL_SOARING_10712; + break; + } + + player->RemoveAurasDueToSpell(SPELL_CANNON_CHARGING_PORT); + shooter->CastSpell(player, spellId, true); + } + } + + void HandleEffectPeriodicSelf(AuraEffect const* aurEff) + { + if (aurEff->GetTickNumber() == 1) + { + GetTarget()->SummonCreature(NPC_CANNON_TARGET, 1919.99f, 5581.97f, 272.30f, 5.27f, TEMPSUMMON_TIMED_DESPAWN, 12000); + if (Creature* cannon = GetTarget()->FindNearestCreature(NPC_CANNON, 40.0f)) + cannon->CastSpell(cannon, SPELL_CANNON_CHANNEL, false); + } + if (aurEff->GetTickNumber() == 6) + PerformKick(); + } + + void HandleEffectPeriodicPlatform(AuraEffect const* aurEff) + { + if (aurEff->GetTickNumber() == 1) + GetTarget()->CastSpell(GetTarget(), SPELL_CANNON_CHARGING_STATE2, true); + else if (aurEff->GetTickNumber() == 2) + GetTarget()->CastSpell(GetTarget(), SPELL_CANNON_CHARGING_STATE3, true); + else if (aurEff->GetTickNumber() == 3) + GetTarget()->CastSpell(GetTarget(), SPELL_CANNON_CHARGING_STATE4, true); + else if (aurEff->GetTickNumber() == 5) GetTarget()->CastSpell(GetTarget(), SPELL_TELEPORT_VISUAL, true); - GetTarget()->CastSpell(GetTarget(), SPELL_CANNON_CHARGING_PORT, true); - } + } - void PerformKick() - { - if (Player* player = GetTarget()->ToPlayer()) - { - Creature* shooter = player->FindNearestCreature(NPC_GNOME_SHOOTER, 20.0f); - if (!shooter) - return; - - uint8 task = 0; - uint32 spellId = 0; - for (; task < 4; ++task) - if (shooter->GetDistance(ShooterPos[task]) < 1.0f) - break; - - switch (task) - { - case 0: - spellId = SPELL_SOARING_10557; - break; - case 1: - spellId = SPELL_SOARING_10710; - break; - case 2: - spellId = SPELL_SOARING_10711; - break; - case 3: - spellId = SPELL_SOARING_10712; - break; - } - - player->RemoveAurasDueToSpell(SPELL_CANNON_CHARGING_PORT); - shooter->CastSpell(player, spellId, true); - } - } - - void HandleEffectPeriodicSelf(AuraEffect const* aurEff) - { - if (aurEff->GetTickNumber() == 1) - { - GetTarget()->SummonCreature(NPC_CANNON_TARGET, 1919.99f, 5581.97f, 272.30f, 5.27f, TEMPSUMMON_TIMED_DESPAWN, 12000); - if (Creature* cannon = GetTarget()->FindNearestCreature(NPC_CANNON, 40.0f)) - cannon->CastSpell(cannon, SPELL_CANNON_CHANNEL, false); - } - if (aurEff->GetTickNumber() == 6) - PerformKick(); - } - - void HandleEffectPeriodicPlatform(AuraEffect const* aurEff) - { - if (aurEff->GetTickNumber() == 1) - GetTarget()->CastSpell(GetTarget(), SPELL_CANNON_CHARGING_STATE2, true); - else if (aurEff->GetTickNumber() == 2) - GetTarget()->CastSpell(GetTarget(), SPELL_CANNON_CHARGING_STATE3, true); - else if (aurEff->GetTickNumber() == 3) - GetTarget()->CastSpell(GetTarget(), SPELL_CANNON_CHARGING_STATE4, true); - else if (aurEff->GetTickNumber() == 5) - GetTarget()->CastSpell(GetTarget(), SPELL_TELEPORT_VISUAL, true); - } - - void Register() override - { - if (m_scriptSpellId == SPELL_CANNON_CHARGING_SELF) - { - OnEffectApply += AuraEffectApplyFn(spell_quest_test_flight_charging_AuraScript::OnApplySelf, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL); - OnEffectPeriodic += AuraEffectPeriodicFn(spell_quest_test_flight_charging_AuraScript::HandleEffectPeriodicSelf, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL); - } - else - OnEffectPeriodic += AuraEffectPeriodicFn(spell_quest_test_flight_charging_AuraScript::HandleEffectPeriodicPlatform, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL); - } - }; - - AuraScript* GetAuraScript() const override + void Register() override { - return new spell_quest_test_flight_charging_AuraScript(); + if (m_scriptSpellId == SPELL_CANNON_CHARGING_SELF) + { + OnEffectApply += AuraEffectApplyFn(spell_quest_test_flight_charging::OnApplySelf, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL); + OnEffectPeriodic += AuraEffectPeriodicFn(spell_quest_test_flight_charging::HandleEffectPeriodicSelf, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL); + } + else + OnEffectPeriodic += AuraEffectPeriodicFn(spell_quest_test_flight_charging::HandleEffectPeriodicPlatform, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL); } }; @@ -838,190 +657,134 @@ enum qFallFromGrace SPELL_SCARLET_RAVEN_PRIEST_IMAGE_FEMALE = 48761 }; -class spell_q12274_a_fall_from_grace_costume : public SpellScriptLoader +class spell_q12274_a_fall_from_grace_costume : public SpellScript { -public: - spell_q12274_a_fall_from_grace_costume() : SpellScriptLoader("spell_q12274_a_fall_from_grace_costume") {} + PrepareSpellScript(spell_q12274_a_fall_from_grace_costume) - class spell_q12274_a_fall_from_grace_costume_SpellScript : public SpellScript + bool Validate(SpellInfo const* /*SpellEntry*/) override { - PrepareSpellScript(spell_q12274_a_fall_from_grace_costume_SpellScript) + return ValidateSpellInfo({ SPELL_SCARLET_RAVEN_PRIEST_IMAGE_MALE, SPELL_SCARLET_RAVEN_PRIEST_IMAGE_FEMALE }); + } - bool Validate(SpellInfo const* /*SpellEntry*/) override + void HandleScript(SpellEffIndex /*effIndex*/) + { + if(Unit* target = GetHitUnit()) { - return ValidateSpellInfo({ SPELL_SCARLET_RAVEN_PRIEST_IMAGE_MALE, SPELL_SCARLET_RAVEN_PRIEST_IMAGE_FEMALE }); - } - - void HandleScript(SpellEffIndex /*effIndex*/) - { - if(Unit* target = GetHitUnit()) + if(Player* p = target->ToPlayer()) { - if(Player* p = target->ToPlayer()) - { - p->CastSpell(p, p->getGender() == GENDER_FEMALE ? SPELL_SCARLET_RAVEN_PRIEST_IMAGE_FEMALE : SPELL_SCARLET_RAVEN_PRIEST_IMAGE_MALE, false); - } + p->CastSpell(p, p->getGender() == GENDER_FEMALE ? SPELL_SCARLET_RAVEN_PRIEST_IMAGE_FEMALE : SPELL_SCARLET_RAVEN_PRIEST_IMAGE_MALE, false); } } + } - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_q12274_a_fall_from_grace_costume_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); - } - }; - - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_q12274_a_fall_from_grace_costume_SpellScript(); + OnEffectHitTarget += SpellEffectFn(spell_q12274_a_fall_from_grace_costume::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); } }; -class spell_q13369_fate_up_against_your_will : public SpellScriptLoader +class spell_q13369_fate_up_against_your_will : public SpellScript { -public: - spell_q13369_fate_up_against_your_will() : SpellScriptLoader("spell_q13369_fate_up_against_your_will") {} + PrepareSpellScript(spell_q13369_fate_up_against_your_will) - class spell_q13369_fate_up_against_your_will_SpellScript : public SpellScript + void HandleScript(SpellEffIndex effIndex) { - PrepareSpellScript(spell_q13369_fate_up_against_your_will_SpellScript) + PreventHitDefaultEffect(effIndex); + GetCaster()->CastSpell(GetCaster(), GetEffectValue(), true); + } - void HandleScript(SpellEffIndex effIndex) - { - PreventHitDefaultEffect(effIndex); - GetCaster()->CastSpell(GetCaster(), GetEffectValue(), true); - } - - SpellCastResult CheckRequirement() - { - // Fate, Up Against Your Will (13369) - if (Unit* caster = GetCaster()) - if (caster->GetTypeId() == TYPEID_PLAYER && caster->ToPlayer()->GetQuestStatus(13369) >= QUEST_STATUS_COMPLETE) - return SPELL_CAST_OK; - return SPELL_FAILED_DONT_REPORT; - } - - void Register() override - { - OnCheckCast += SpellCheckCastFn(spell_q13369_fate_up_against_your_will_SpellScript::CheckRequirement); - OnEffectHitTarget += SpellEffectFn(spell_q13369_fate_up_against_your_will_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); - } - }; - - SpellScript* GetSpellScript() const override + SpellCastResult CheckRequirement() { - return new spell_q13369_fate_up_against_your_will_SpellScript(); + // Fate, Up Against Your Will (13369) + if (Unit* caster = GetCaster()) + if (caster->GetTypeId() == TYPEID_PLAYER && caster->ToPlayer()->GetQuestStatus(13369) >= QUEST_STATUS_COMPLETE) + return SPELL_CAST_OK; + return SPELL_FAILED_DONT_REPORT; + } + + void Register() override + { + OnCheckCast += SpellCheckCastFn(spell_q13369_fate_up_against_your_will::CheckRequirement); + OnEffectHitTarget += SpellEffectFn(spell_q13369_fate_up_against_your_will::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); } }; -class spell_q11198_take_down_tethyr : public SpellScriptLoader +class spell_q11198_take_down_tethyr : public SpellScript { -public: - spell_q11198_take_down_tethyr() : SpellScriptLoader("spell_q11198_take_down_tethyr") {} + PrepareSpellScript(spell_q11198_take_down_tethyr) - class spell_q11198_take_down_tethyr_SpellScript : public SpellScript + void HandleScript(SpellEffIndex effIndex) { - PrepareSpellScript(spell_q11198_take_down_tethyr_SpellScript) - - void HandleScript(SpellEffIndex effIndex) - { - PreventHitDefaultEffect(effIndex); - if (Unit* unit = GetHitUnit()) - if (unit->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC)) - return; - GetCaster()->CastCustomSpell(42576 /*SPELL_CANNON_BLAST*/, SPELLVALUE_BASE_POINT0, GetEffectValue(), GetCaster(), true); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_q11198_take_down_tethyr_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); - } - }; - - SpellScript* GetSpellScript() const override - { - return new spell_q11198_take_down_tethyr_SpellScript(); - } -}; - -class spell_q11653_youre_not_so_big_now : public SpellScriptLoader -{ -public: - spell_q11653_youre_not_so_big_now() : SpellScriptLoader("spell_q11653_youre_not_so_big_now") {} - - class spell_q11653_youre_not_so_big_now_SpellScript : public SpellScript - { - PrepareSpellScript(spell_q11653_youre_not_so_big_now_SpellScript) - - void HandleScript(SpellEffIndex effIndex) - { - PreventHitDefaultEffect(effIndex); - Unit* target = GetHitUnit(); - if (!target || target->GetTypeId() != TYPEID_UNIT) + PreventHitDefaultEffect(effIndex); + if (Unit* unit = GetHitUnit()) + if (unit->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC)) return; + GetCaster()->CastCustomSpell(42576 /*SPELL_CANNON_BLAST*/, SPELLVALUE_BASE_POINT0, GetEffectValue(), GetCaster(), true); + } - static uint32 const spellPlayer[5] = - { - 45674, // Bigger! - 45675, // Shrunk - 45678, // Yellow - 45682, // Ghost - 45684 // Polymorph - }; - - static uint32 const spellTarget[5] = - { - 45673, // Bigger! - 45672, // Shrunk - 45677, // Yellow - 45681, // Ghost - 45673 // Polymorph - }; - - if (roll_chance_i(30)) - GetCaster()->CastSpell(GetCaster(), spellPlayer[urand(0, 4)], true); - else - target->CastSpell(target, spellTarget[urand(0, 4)], true); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_q11653_youre_not_so_big_now_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); - } - }; - - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_q11653_youre_not_so_big_now_SpellScript(); + OnEffectHitTarget += SpellEffectFn(spell_q11198_take_down_tethyr::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); } }; -class spell_q10985_light_of_the_naaru : public SpellScriptLoader +class spell_q11653_youre_not_so_big_now : public SpellScript { -public: - spell_q10985_light_of_the_naaru() : SpellScriptLoader("spell_q10985_light_of_the_naaru") { } + PrepareSpellScript(spell_q11653_youre_not_so_big_now) - class spell_q10985_light_of_the_naaru_AuraScript : public AuraScript + void HandleScript(SpellEffIndex effIndex) { - PrepareAuraScript(spell_q10985_light_of_the_naaru_AuraScript); + PreventHitDefaultEffect(effIndex); + Unit* target = GetHitUnit(); + if (!target || target->GetTypeId() != TYPEID_UNIT) + return; - bool CheckProc(ProcEventInfo& eventInfo) + static uint32 const spellPlayer[5] = { - Unit* target = eventInfo.GetActionTarget(); - return target && target->GetFaction() == 1843; // Xinef: Illidari demons faction - } + 45674, // Bigger! + 45675, // Shrunk + 45678, // Yellow + 45682, // Ghost + 45684 // Polymorph + }; - void Register() override + static uint32 const spellTarget[5] = { - DoCheckProc += AuraCheckProcFn(spell_q10985_light_of_the_naaru_AuraScript::CheckProc); - } - }; + 45673, // Bigger! + 45672, // Shrunk + 45677, // Yellow + 45681, // Ghost + 45673 // Polymorph + }; - AuraScript* GetAuraScript() const override + if (roll_chance_i(30)) + GetCaster()->CastSpell(GetCaster(), spellPlayer[urand(0, 4)], true); + else + target->CastSpell(target, spellTarget[urand(0, 4)], true); + } + + void Register() override { - return new spell_q10985_light_of_the_naaru_AuraScript(); + OnEffectHitTarget += SpellEffectFn(spell_q11653_youre_not_so_big_now::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +class spell_q10985_light_of_the_naaru : public AuraScript +{ + PrepareAuraScript(spell_q10985_light_of_the_naaru); + + bool CheckProc(ProcEventInfo& eventInfo) + { + Unit* target = eventInfo.GetActionTarget(); + return target && target->GetFaction() == 1843; // Xinef: Illidari demons faction + } + + void Register() override + { + DoCheckProc += AuraCheckProcFn(spell_q10985_light_of_the_naaru::CheckProc); } }; -// Theirs class spell_generic_quest_update_entry_SpellScript : public SpellScript { PrepareSpellScript(spell_generic_quest_update_entry_SpellScript); @@ -1083,36 +846,25 @@ enum ThaumaturgyChannel SPELL_THAUMATURGY_CHANNEL = 21029 }; -class spell_q2203_thaumaturgy_channel : public SpellScriptLoader +class spell_q2203_thaumaturgy_channel : public AuraScript { -public: - spell_q2203_thaumaturgy_channel() : SpellScriptLoader("spell_q2203_thaumaturgy_channel") { } + PrepareAuraScript(spell_q2203_thaumaturgy_channel); - class spell_q2203_thaumaturgy_channel_AuraScript : public AuraScript + bool Validate(SpellInfo const* /*spellInfo*/) override { - PrepareAuraScript(spell_q2203_thaumaturgy_channel_AuraScript); + return ValidateSpellInfo({ SPELL_THAUMATURGY_CHANNEL }); + } - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_THAUMATURGY_CHANNEL }); - } - - void HandleEffectPeriodic(AuraEffect const* /*aurEff*/) - { - PreventDefaultAction(); - if (Unit* caster = GetCaster()) - caster->CastSpell(caster, SPELL_THAUMATURGY_CHANNEL, false); - } - - void Register() override - { - OnEffectPeriodic += AuraEffectPeriodicFn(spell_q2203_thaumaturgy_channel_AuraScript::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL); - } - }; - - AuraScript* GetAuraScript() const override + void HandleEffectPeriodic(AuraEffect const* /*aurEff*/) { - return new spell_q2203_thaumaturgy_channel_AuraScript(); + PreventDefaultAction(); + if (Unit* caster = GetCaster()) + caster->CastSpell(caster, SPELL_THAUMATURGY_CHANNEL, false); + } + + void Register() override + { + OnEffectPeriodic += AuraEffectPeriodicFn(spell_q2203_thaumaturgy_channel::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL); } }; @@ -1124,41 +876,30 @@ enum Quest5206Data SPELL_CREATE_BONE_DUST = 17270 }; -class spell_q5206_test_fetid_skull : public SpellScriptLoader +class spell_q5206_test_fetid_skull : public SpellScript { -public: - spell_q5206_test_fetid_skull() : SpellScriptLoader("spell_q5206_test_fetid_skull") { } + PrepareSpellScript(spell_q5206_test_fetid_skull); - class spell_q5206_test_fetid_skull_SpellScript : public SpellScript + bool Load() override { - PrepareSpellScript(spell_q5206_test_fetid_skull_SpellScript); + return GetCaster()->GetTypeId() == TYPEID_PLAYER; + } - bool Load() override - { - return GetCaster()->GetTypeId() == TYPEID_PLAYER; - } - - bool Validate(SpellInfo const* /*spellEntry*/) override - { - return ValidateSpellInfo({ SPELL_CREATE_RESONATING_SKULL, SPELL_CREATE_BONE_DUST }); - } - - void HandleDummy(SpellEffIndex /*effIndex*/) - { - Unit* caster = GetCaster(); - uint32 spellId = roll_chance_i(50) ? SPELL_CREATE_RESONATING_SKULL : SPELL_CREATE_BONE_DUST; - caster->CastSpell(caster, spellId, true, nullptr); - } - - void Register() override - { - OnEffectHit += SpellEffectFn(spell_q5206_test_fetid_skull_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const override + bool Validate(SpellInfo const* /*spellEntry*/) override { - return new spell_q5206_test_fetid_skull_SpellScript(); + return ValidateSpellInfo({ SPELL_CREATE_RESONATING_SKULL, SPELL_CREATE_BONE_DUST }); + } + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + uint32 spellId = roll_chance_i(50) ? SPELL_CREATE_RESONATING_SKULL : SPELL_CREATE_BONE_DUST; + caster->CastSpell(caster, spellId, true, nullptr); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_q5206_test_fetid_skull::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; @@ -1174,58 +915,47 @@ enum Quests6124_6129Data DESPAWN_TIME = 30000 }; -class spell_q6124_6129_apply_salve : public SpellScriptLoader +class spell_q6124_6129_apply_salve : public SpellScript { -public: - spell_q6124_6129_apply_salve() : SpellScriptLoader("spell_q6124_6129_apply_salve") { } + PrepareSpellScript(spell_q6124_6129_apply_salve); - class spell_q6124_6129_apply_salve_SpellScript : public SpellScript + bool Load() override { - PrepareSpellScript(spell_q6124_6129_apply_salve_SpellScript); + return GetCaster()->GetTypeId() == TYPEID_PLAYER; + } - bool Load() override - { - return GetCaster()->GetTypeId() == TYPEID_PLAYER; - } - - void HandleDummy(SpellEffIndex /*effIndex*/) - { - Player* caster = GetCaster()->ToPlayer(); - if (GetCastItem()) - if (Creature* creatureTarget = GetHitCreature()) + void HandleDummy(SpellEffIndex /*effIndex*/) + { + Player* caster = GetCaster()->ToPlayer(); + if (GetCastItem()) + if (Creature* creatureTarget = GetHitCreature()) + { + uint32 newEntry = 0; + switch (caster->GetTeamId()) { - uint32 newEntry = 0; - switch (caster->GetTeamId()) - { - case TEAM_HORDE: - if (creatureTarget->GetEntry() == NPC_SICKLY_GAZELLE) - newEntry = NPC_CURED_GAZELLE; - break; - case TEAM_ALLIANCE: - if (creatureTarget->GetEntry() == NPC_SICKLY_DEER) - newEntry = NPC_CURED_DEER; - break; - default: - break; - } - if (newEntry) - { - creatureTarget->UpdateEntry(newEntry); - creatureTarget->DespawnOrUnsummon(DESPAWN_TIME); - caster->KilledMonsterCredit(newEntry); - } + case TEAM_HORDE: + if (creatureTarget->GetEntry() == NPC_SICKLY_GAZELLE) + newEntry = NPC_CURED_GAZELLE; + break; + case TEAM_ALLIANCE: + if (creatureTarget->GetEntry() == NPC_SICKLY_DEER) + newEntry = NPC_CURED_DEER; + break; + default: + break; } - } + if (newEntry) + { + creatureTarget->UpdateEntry(newEntry); + creatureTarget->DespawnOrUnsummon(DESPAWN_TIME); + caster->KilledMonsterCredit(newEntry); + } + } + } - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_q6124_6129_apply_salve_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_q6124_6129_apply_salve_SpellScript(); + OnEffectHitTarget += SpellEffectFn(spell_q6124_6129_apply_salve::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; @@ -1238,108 +968,75 @@ enum Quest11396_11399Data }; // 43874 Scourge Mur'gul Camp: Force Shield Arcane Purple x3 -class spell_q11396_11399_force_shield_arcane_purple_x3 : public SpellScriptLoader +class spell_q11396_11399_force_shield_arcane_purple_x3 : public AuraScript { -public: - spell_q11396_11399_force_shield_arcane_purple_x3() : SpellScriptLoader("spell_q11396_11399_force_shield_arcane_purple_x3") { } + PrepareAuraScript(spell_q11396_11399_force_shield_arcane_purple_x3); - class spell_q11396_11399_force_shield_arcane_purple_x3_AuraScript : public AuraScript + void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { - PrepareAuraScript(spell_q11396_11399_force_shield_arcane_purple_x3_AuraScript); + Unit* target = GetTarget(); + target->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); + target->SetControlled(true, UNIT_STATE_STUNNED); + } - void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) - { - Unit* target = GetTarget(); - target->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); - target->SetControlled(true, UNIT_STATE_STUNNED); - } - - void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) - { - GetTarget()->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); - } - - void Register() override - { - OnEffectApply += AuraEffectApplyFn(spell_q11396_11399_force_shield_arcane_purple_x3_AuraScript::HandleEffectApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); - OnEffectRemove += AuraEffectRemoveFn(spell_q11396_11399_force_shield_arcane_purple_x3_AuraScript::HandleEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); - } - }; - - AuraScript* GetAuraScript() const override + void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { - return new spell_q11396_11399_force_shield_arcane_purple_x3_AuraScript(); + GetTarget()->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); + } + + void Register() override + { + OnEffectApply += AuraEffectApplyFn(spell_q11396_11399_force_shield_arcane_purple_x3::HandleEffectApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + OnEffectRemove += AuraEffectRemoveFn(spell_q11396_11399_force_shield_arcane_purple_x3::HandleEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); } }; // 50133 Scourging Crystal Controller -class spell_q11396_11399_scourging_crystal_controller : public SpellScriptLoader +class spell_q11396_11399_scourging_crystal_controller : public SpellScript { -public: - spell_q11396_11399_scourging_crystal_controller() : SpellScriptLoader("spell_q11396_11399_scourging_crystal_controller") { } + PrepareSpellScript(spell_q11396_11399_scourging_crystal_controller); - class spell_q11396_11399_scourging_crystal_controller_SpellScript : public SpellScript + bool Validate(SpellInfo const* /*spellEntry*/) override { - PrepareSpellScript(spell_q11396_11399_scourging_crystal_controller_SpellScript); + return ValidateSpellInfo({ SPELL_FORCE_SHIELD_ARCANE_PURPLE_X3, SPELL_SCOURGING_CRYSTAL_CONTROLLER }); + } - bool Validate(SpellInfo const* /*spellEntry*/) override - { - return ValidateSpellInfo({ SPELL_FORCE_SHIELD_ARCANE_PURPLE_X3, SPELL_SCOURGING_CRYSTAL_CONTROLLER }); - } - - void HandleDummy(SpellEffIndex /*effIndex*/) - { - if (Creature* target = GetHitCreature()) - if (target->HasAura(SPELL_FORCE_SHIELD_ARCANE_PURPLE_X3)) - // Make sure nobody else is channeling the same target - if (!target->HasAura(SPELL_SCOURGING_CRYSTAL_CONTROLLER)) - GetCaster()->CastSpell(target, SPELL_SCOURGING_CRYSTAL_CONTROLLER, true, GetCastItem()); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_q11396_11399_scourging_crystal_controller_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const override + void HandleDummy(SpellEffIndex /*effIndex*/) { - return new spell_q11396_11399_scourging_crystal_controller_SpellScript(); - }; + if (Creature* target = GetHitCreature()) + if (target->HasAura(SPELL_FORCE_SHIELD_ARCANE_PURPLE_X3)) + // Make sure nobody else is channeling the same target + if (!target->HasAura(SPELL_SCOURGING_CRYSTAL_CONTROLLER)) + GetCaster()->CastSpell(target, SPELL_SCOURGING_CRYSTAL_CONTROLLER, true, GetCastItem()); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_q11396_11399_scourging_crystal_controller::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } }; // 43882 Scourging Crystal Controller Dummy -class spell_q11396_11399_scourging_crystal_controller_dummy : public SpellScriptLoader +class spell_q11396_11399_scourging_crystal_controller_dummy : public SpellScript { -public: - spell_q11396_11399_scourging_crystal_controller_dummy() : SpellScriptLoader("spell_q11396_11399_scourging_crystal_controller_dummy") { } + PrepareSpellScript(spell_q11396_11399_scourging_crystal_controller_dummy); - class spell_q11396_11399_scourging_crystal_controller_dummy_SpellScript : public SpellScript + bool Validate(SpellInfo const* /*spellEntry*/) override { - PrepareSpellScript(spell_q11396_11399_scourging_crystal_controller_dummy_SpellScript); + return ValidateSpellInfo({ SPELL_FORCE_SHIELD_ARCANE_PURPLE_X3 }); + } - bool Validate(SpellInfo const* /*spellEntry*/) override - { - return ValidateSpellInfo({ SPELL_FORCE_SHIELD_ARCANE_PURPLE_X3 }); - } - - void HandleDummy(SpellEffIndex /*effIndex*/) - { - if (Unit* target = GetHitUnit()) - if (target->GetTypeId() == TYPEID_UNIT) - target->RemoveAurasDueToSpell(SPELL_FORCE_SHIELD_ARCANE_PURPLE_X3); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_q11396_11399_scourging_crystal_controller_dummy_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const override + void HandleDummy(SpellEffIndex /*effIndex*/) { - return new spell_q11396_11399_scourging_crystal_controller_dummy_SpellScript(); - }; + if (Unit* target = GetHitUnit()) + if (target->GetTypeId() == TYPEID_UNIT) + target->RemoveAurasDueToSpell(SPELL_FORCE_SHIELD_ARCANE_PURPLE_X3); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_q11396_11399_scourging_crystal_controller_dummy::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } }; // http://www.wowhead.com/quest=11515 Blood for Blood @@ -1370,47 +1067,36 @@ enum Quest11587Data SPELL_ARCANE_PRISONER_KILL_CREDIT = 45456 // Arcane Prisoner Kill Credit }; -class spell_q11587_arcane_prisoner_rescue : public SpellScriptLoader +class spell_q11587_arcane_prisoner_rescue : public SpellScript { -public: - spell_q11587_arcane_prisoner_rescue() : SpellScriptLoader("spell_q11587_arcane_prisoner_rescue") { } + PrepareSpellScript(spell_q11587_arcane_prisoner_rescue); - class spell_q11587_arcane_prisoner_rescue_SpellScript : public SpellScript + bool Validate(SpellInfo const* /*spellEntry*/) override { - PrepareSpellScript(spell_q11587_arcane_prisoner_rescue_SpellScript); - - bool Validate(SpellInfo const* /*spellEntry*/) override - { - return ValidateSpellInfo( - { - SPELL_SUMMON_ARCANE_PRISONER_MALE, - SPELL_SUMMON_ARCANE_PRISONER_FEMALE, - SPELL_ARCANE_PRISONER_KILL_CREDIT - }); - } - - void HandleDummy(SpellEffIndex /*effIndex*/) - { - Unit* caster = GetCaster(); - if (Unit* unitTarget = GetHitUnit()) + return ValidateSpellInfo( { - uint32 spellId = SPELL_SUMMON_ARCANE_PRISONER_MALE; - if (rand() % 2) - spellId = SPELL_SUMMON_ARCANE_PRISONER_FEMALE; - caster->CastSpell(caster, spellId, true); - unitTarget->CastSpell(caster, SPELL_ARCANE_PRISONER_KILL_CREDIT, true); - } - } + SPELL_SUMMON_ARCANE_PRISONER_MALE, + SPELL_SUMMON_ARCANE_PRISONER_FEMALE, + SPELL_ARCANE_PRISONER_KILL_CREDIT + }); + } - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_q11587_arcane_prisoner_rescue_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const override + void HandleDummy(SpellEffIndex /*effIndex*/) { - return new spell_q11587_arcane_prisoner_rescue_SpellScript(); + Unit* caster = GetCaster(); + if (Unit* unitTarget = GetHitUnit()) + { + uint32 spellId = SPELL_SUMMON_ARCANE_PRISONER_MALE; + if (rand() % 2) + spellId = SPELL_SUMMON_ARCANE_PRISONER_FEMALE; + caster->CastSpell(caster, spellId, true); + unitTarget->CastSpell(caster, SPELL_ARCANE_PRISONER_KILL_CREDIT, true); + } + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_q11587_arcane_prisoner_rescue::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; @@ -1431,75 +1117,64 @@ enum Quest11730Data NPC_55D_COLLECTATRON = 25793 }; -class spell_q11730_ultrasonic_screwdriver : public SpellScriptLoader +class spell_q11730_ultrasonic_screwdriver : public SpellScript { -public: - spell_q11730_ultrasonic_screwdriver() : SpellScriptLoader("spell_q11730_ultrasonic_screwdriver") { } + PrepareSpellScript(spell_q11730_ultrasonic_screwdriver); - class spell_q11730_ultrasonic_screwdriver_SpellScript : public SpellScript + bool Load() override { - PrepareSpellScript(spell_q11730_ultrasonic_screwdriver_SpellScript); + return GetCaster()->GetTypeId() == TYPEID_PLAYER && GetCastItem(); + } - bool Load() override - { - return GetCaster()->GetTypeId() == TYPEID_PLAYER && GetCastItem(); - } - - bool Validate(SpellInfo const* /*spellEntry*/) override - { - return ValidateSpellInfo( - { - SPELL_SUMMON_SCAVENGEBOT_004A8, - SPELL_SUMMON_SENTRYBOT_57K, - SPELL_SUMMON_DEFENDOTANK_66D, - SPELL_SUMMON_SCAVENGEBOT_005B6, - SPELL_SUMMON_55D_COLLECTATRON, - SPELL_ROBOT_KILL_CREDIT - }); - } - - void HandleDummy(SpellEffIndex /*effIndex*/) - { - Item* castItem = GetCastItem(); - Unit* caster = GetCaster(); - if (Creature* target = GetHitCreature()) + bool Validate(SpellInfo const* /*spellEntry*/) override + { + return ValidateSpellInfo( { - uint32 spellId = 0; - switch (target->GetEntry()) - { - case NPC_SCAVENGEBOT_004A8: - spellId = SPELL_SUMMON_SCAVENGEBOT_004A8; - break; - case NPC_SENTRYBOT_57K: - spellId = SPELL_SUMMON_SENTRYBOT_57K; - break; - case NPC_DEFENDOTANK_66D: - spellId = SPELL_SUMMON_DEFENDOTANK_66D; - break; - case NPC_SCAVENGEBOT_005B6: - spellId = SPELL_SUMMON_SCAVENGEBOT_005B6; - break; - case NPC_55D_COLLECTATRON: - spellId = SPELL_SUMMON_55D_COLLECTATRON; - break; - default: - return; - } - caster->CastSpell(caster, spellId, true, castItem); - caster->CastSpell(caster, SPELL_ROBOT_KILL_CREDIT, true); - target->DespawnOrUnsummon(); - } - } + SPELL_SUMMON_SCAVENGEBOT_004A8, + SPELL_SUMMON_SENTRYBOT_57K, + SPELL_SUMMON_DEFENDOTANK_66D, + SPELL_SUMMON_SCAVENGEBOT_005B6, + SPELL_SUMMON_55D_COLLECTATRON, + SPELL_ROBOT_KILL_CREDIT + }); + } - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_q11730_ultrasonic_screwdriver_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const override + void HandleDummy(SpellEffIndex /*effIndex*/) { - return new spell_q11730_ultrasonic_screwdriver_SpellScript(); + Item* castItem = GetCastItem(); + Unit* caster = GetCaster(); + if (Creature* target = GetHitCreature()) + { + uint32 spellId = 0; + switch (target->GetEntry()) + { + case NPC_SCAVENGEBOT_004A8: + spellId = SPELL_SUMMON_SCAVENGEBOT_004A8; + break; + case NPC_SENTRYBOT_57K: + spellId = SPELL_SUMMON_SENTRYBOT_57K; + break; + case NPC_DEFENDOTANK_66D: + spellId = SPELL_SUMMON_DEFENDOTANK_66D; + break; + case NPC_SCAVENGEBOT_005B6: + spellId = SPELL_SUMMON_SCAVENGEBOT_005B6; + break; + case NPC_55D_COLLECTATRON: + spellId = SPELL_SUMMON_55D_COLLECTATRON; + break; + default: + return; + } + caster->CastSpell(caster, spellId, true, castItem); + caster->CastSpell(caster, SPELL_ROBOT_KILL_CREDIT, true); + target->DespawnOrUnsummon(); + } + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_q11730_ultrasonic_screwdriver::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; @@ -1517,46 +1192,35 @@ enum Quest12459Data NPC_WEAK_DEATHGAZE = 27807, }; -class spell_q12459_seeds_of_natures_wrath : public SpellScriptLoader +class spell_q12459_seeds_of_natures_wrath : public SpellScript { -public: - spell_q12459_seeds_of_natures_wrath() : SpellScriptLoader("spell_q12459_seeds_of_natures_wrath") { } + PrepareSpellScript(spell_q12459_seeds_of_natures_wrath); - class spell_q12459_seeds_of_natures_wrath_SpellScript : public SpellScript + void HandleDummy(SpellEffIndex /*effIndex*/) { - PrepareSpellScript(spell_q12459_seeds_of_natures_wrath_SpellScript); - - void HandleDummy(SpellEffIndex /*effIndex*/) + if (Creature* creatureTarget = GetHitCreature()) { - if (Creature* creatureTarget = GetHitCreature()) + uint32 uiNewEntry = 0; + switch (creatureTarget->GetEntry()) { - uint32 uiNewEntry = 0; - switch (creatureTarget->GetEntry()) - { - case NPC_REANIMATED_FROSTWYRM: - uiNewEntry = NPC_WEAK_REANIMATED_FROSTWYRM; - break; - case NPC_TURGID: - uiNewEntry = NPC_WEAK_TURGID; - break; - case NPC_DEATHGAZE: - uiNewEntry = NPC_WEAK_DEATHGAZE; - break; - } - if (uiNewEntry) - creatureTarget->UpdateEntry(uiNewEntry); + case NPC_REANIMATED_FROSTWYRM: + uiNewEntry = NPC_WEAK_REANIMATED_FROSTWYRM; + break; + case NPC_TURGID: + uiNewEntry = NPC_WEAK_TURGID; + break; + case NPC_DEATHGAZE: + uiNewEntry = NPC_WEAK_DEATHGAZE; + break; } + if (uiNewEntry) + creatureTarget->UpdateEntry(uiNewEntry); } + } - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_q12459_seeds_of_natures_wrath_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_q12459_seeds_of_natures_wrath_SpellScript(); + OnEffectHitTarget += SpellEffectFn(spell_q12459_seeds_of_natures_wrath::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; @@ -1570,88 +1234,66 @@ enum Quest12634Data SPELL_SUMMON_ADVENTUROUS_DWARF = 52070 }; -class spell_q12634_despawn_fruit_tosser : public SpellScriptLoader +class spell_q12634_despawn_fruit_tosser : public SpellScript { -public: - spell_q12634_despawn_fruit_tosser() : SpellScriptLoader("spell_q12634_despawn_fruit_tosser") { } + PrepareSpellScript(spell_q12634_despawn_fruit_tosser); - class spell_q12634_despawn_fruit_tosser_SpellScript : public SpellScript + bool Validate(SpellInfo const* /*spellEntry*/) override { - PrepareSpellScript(spell_q12634_despawn_fruit_tosser_SpellScript); - - bool Validate(SpellInfo const* /*spellEntry*/) override - { - return ValidateSpellInfo( - { - SPELL_BANANAS_FALL_TO_GROUND, - SPELL_ORANGE_FALLS_TO_GROUND, - SPELL_PAPAYA_FALLS_TO_GROUND, - SPELL_SUMMON_ADVENTUROUS_DWARF - }); - } - - void HandleDummy(SpellEffIndex /*effIndex*/) - { - uint32 spellId = SPELL_BANANAS_FALL_TO_GROUND; - switch (urand(0, 3)) + return ValidateSpellInfo( { - case 1: - spellId = SPELL_ORANGE_FALLS_TO_GROUND; - break; - case 2: - spellId = SPELL_PAPAYA_FALLS_TO_GROUND; - break; - } - // sometimes, if you're lucky, you get a dwarf - if (roll_chance_i(5)) - spellId = SPELL_SUMMON_ADVENTUROUS_DWARF; - GetCaster()->CastSpell(GetCaster(), spellId, true, nullptr); - } + SPELL_BANANAS_FALL_TO_GROUND, + SPELL_ORANGE_FALLS_TO_GROUND, + SPELL_PAPAYA_FALLS_TO_GROUND, + SPELL_SUMMON_ADVENTUROUS_DWARF + }); + } - void Register() override - { - OnEffectHit += SpellEffectFn(spell_q12634_despawn_fruit_tosser_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const override + void HandleDummy(SpellEffIndex /*effIndex*/) { - return new spell_q12634_despawn_fruit_tosser_SpellScript(); + uint32 spellId = SPELL_BANANAS_FALL_TO_GROUND; + switch (urand(0, 3)) + { + case 1: + spellId = SPELL_ORANGE_FALLS_TO_GROUND; + break; + case 2: + spellId = SPELL_PAPAYA_FALLS_TO_GROUND; + break; + } + // sometimes, if you're lucky, you get a dwarf + if (roll_chance_i(5)) + spellId = SPELL_SUMMON_ADVENTUROUS_DWARF; + GetCaster()->CastSpell(GetCaster(), spellId, true, nullptr); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_q12634_despawn_fruit_tosser::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; // http://www.wowhead.com/quest=12683 Burning to Help // 52308 Take Sputum Sample -class spell_q12683_take_sputum_sample : public SpellScriptLoader +class spell_q12683_take_sputum_sample : public SpellScript { -public: - spell_q12683_take_sputum_sample() : SpellScriptLoader("spell_q12683_take_sputum_sample") { } + PrepareSpellScript(spell_q12683_take_sputum_sample); - class spell_q12683_take_sputum_sample_SpellScript : public SpellScript + void HandleDummy(SpellEffIndex /*effIndex*/) { - PrepareSpellScript(spell_q12683_take_sputum_sample_SpellScript); + uint32 reqAuraId = GetSpellInfo()->Effects[EFFECT_1].CalcValue(); - void HandleDummy(SpellEffIndex /*effIndex*/) + Unit* caster = GetCaster(); + if (caster->HasAuraEffect(reqAuraId, 0)) { - uint32 reqAuraId = GetSpellInfo()->Effects[EFFECT_1].CalcValue(); - - Unit* caster = GetCaster(); - if (caster->HasAuraEffect(reqAuraId, 0)) - { - uint32 spellId = GetSpellInfo()->Effects[EFFECT_0].CalcValue(); - caster->CastSpell(caster, spellId, true, nullptr); - } + uint32 spellId = GetSpellInfo()->Effects[EFFECT_0].CalcValue(); + caster->CastSpell(caster, spellId, true, nullptr); } + } - void Register() override - { - OnEffectHit += SpellEffectFn(spell_q12683_take_sputum_sample_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_q12683_take_sputum_sample_SpellScript(); + OnEffectHit += SpellEffectFn(spell_q12683_take_sputum_sample::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; @@ -1667,52 +1309,41 @@ enum Quest12851Data SPELL_ABLAZE = 54683, }; -class spell_q12851_going_bearback : public SpellScriptLoader +class spell_q12851_going_bearback : public AuraScript { -public: - spell_q12851_going_bearback() : SpellScriptLoader("spell_q12851_going_bearback") { } + PrepareAuraScript(spell_q12851_going_bearback); - class spell_q12851_going_bearback_AuraScript : public AuraScript + void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { - PrepareAuraScript(spell_q12851_going_bearback_AuraScript); - - void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + if (Unit* caster = GetCaster()) { - if (Unit* caster = GetCaster()) - { - Unit* target = GetTarget(); - // Already in fire - if (target->HasAura(SPELL_ABLAZE)) - return; + Unit* target = GetTarget(); + // Already in fire + if (target->HasAura(SPELL_ABLAZE)) + return; - if (Player* player = caster->GetCharmerOrOwnerPlayerOrPlayerItself()) + if (Player* player = caster->GetCharmerOrOwnerPlayerOrPlayerItself()) + { + switch (target->GetEntry()) { - switch (target->GetEntry()) - { - case NPC_FROSTWORG: - target->CastSpell(player, SPELL_FROSTWORG_CREDIT, true); - target->CastSpell(target, SPELL_IMMOLATION, true); - target->CastSpell(target, SPELL_ABLAZE, true); - break; - case NPC_FROSTGIANT: - target->CastSpell(player, SPELL_FROSTGIANT_CREDIT, true); - target->CastSpell(target, SPELL_IMMOLATION, true); - target->CastSpell(target, SPELL_ABLAZE, true); - break; - } + case NPC_FROSTWORG: + target->CastSpell(player, SPELL_FROSTWORG_CREDIT, true); + target->CastSpell(target, SPELL_IMMOLATION, true); + target->CastSpell(target, SPELL_ABLAZE, true); + break; + case NPC_FROSTGIANT: + target->CastSpell(player, SPELL_FROSTGIANT_CREDIT, true); + target->CastSpell(target, SPELL_IMMOLATION, true); + target->CastSpell(target, SPELL_ABLAZE, true); + break; } } } + } - void Register() override - { - AfterEffectApply += AuraEffectApplyFn(spell_q12851_going_bearback_AuraScript::HandleEffectApply, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK); - } - }; - - AuraScript* GetAuraScript() const override + void Register() override { - return new spell_q12851_going_bearback_AuraScript(); + AfterEffectApply += AuraEffectApplyFn(spell_q12851_going_bearback::HandleEffectApply, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK); } }; @@ -1724,45 +1355,34 @@ enum Quest12937Data NPC_FALLEN_EARTHEN_DEFENDER = 30035, }; -class spell_q12937_relief_for_the_fallen : public SpellScriptLoader +class spell_q12937_relief_for_the_fallen : public SpellScript { -public: - spell_q12937_relief_for_the_fallen() : SpellScriptLoader("spell_q12937_relief_for_the_fallen") { } + PrepareSpellScript(spell_q12937_relief_for_the_fallen); - class spell_q12937_relief_for_the_fallen_SpellScript : public SpellScript + bool Load() override { - PrepareSpellScript(spell_q12937_relief_for_the_fallen_SpellScript); + return GetCaster()->GetTypeId() == TYPEID_PLAYER; + } - bool Load() override - { - return GetCaster()->GetTypeId() == TYPEID_PLAYER; - } - - bool Validate(SpellInfo const* /*spellEntry*/) override - { - return ValidateSpellInfo({ SPELL_TRIGGER_AID_OF_THE_EARTHEN }); - } - - void HandleDummy(SpellEffIndex /*effIndex*/) - { - Player* caster = GetCaster()->ToPlayer(); - if (Creature* target = GetHitCreature()) - { - caster->CastSpell(caster, SPELL_TRIGGER_AID_OF_THE_EARTHEN, true, nullptr); - caster->KilledMonsterCredit(NPC_FALLEN_EARTHEN_DEFENDER); - target->DespawnOrUnsummon(); - } - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_q12937_relief_for_the_fallen_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const override + bool Validate(SpellInfo const* /*spellEntry*/) override { - return new spell_q12937_relief_for_the_fallen_SpellScript(); + return ValidateSpellInfo({ SPELL_TRIGGER_AID_OF_THE_EARTHEN }); + } + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + Player* caster = GetCaster()->ToPlayer(); + if (Creature* target = GetHitCreature()) + { + caster->CastSpell(caster, SPELL_TRIGGER_AID_OF_THE_EARTHEN, true, nullptr); + caster->KilledMonsterCredit(NPC_FALLEN_EARTHEN_DEFENDER); + target->DespawnOrUnsummon(); + } + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_q12937_relief_for_the_fallen::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; @@ -1773,44 +1393,33 @@ enum Whoarethey SPELL_GENERIC_DISGUISE = 32756 }; -class spell_q10041_q10040_who_are_they : public SpellScriptLoader +class spell_q10041_q10040_who_are_they : public SpellScript { -public: - spell_q10041_q10040_who_are_they() : SpellScriptLoader("spell_q10041_q10040_who_are_they") { } + PrepareSpellScript(spell_q10041_q10040_who_are_they); - class spell_q10041_q10040_who_are_they_SpellScript : public SpellScript + bool Validate(SpellInfo const* /*spellEntry*/) override { - PrepareSpellScript(spell_q10041_q10040_who_are_they_SpellScript); - - bool Validate(SpellInfo const* /*spellEntry*/) override - { - return ValidateSpellInfo( - { - SPELL_MALE_DISGUISE, - SPELL_FEMALE_DISGUISE, - SPELL_GENERIC_DISGUISE - }); - } - - void HandleScript(SpellEffIndex effIndex) - { - PreventHitDefaultEffect(effIndex); - if (Player* target = GetHitPlayer()) + return ValidateSpellInfo( { - target->CastSpell(target, target->getGender() == GENDER_MALE ? SPELL_MALE_DISGUISE : SPELL_FEMALE_DISGUISE, true); - target->CastSpell(target, SPELL_GENERIC_DISGUISE, true); - } - } + SPELL_MALE_DISGUISE, + SPELL_FEMALE_DISGUISE, + SPELL_GENERIC_DISGUISE + }); + } - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_q10041_q10040_who_are_they_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); - } - }; - - SpellScript* GetSpellScript() const override + void HandleScript(SpellEffIndex effIndex) { - return new spell_q10041_q10040_who_are_they_SpellScript(); + PreventHitDefaultEffect(effIndex); + if (Player* target = GetHitPlayer()) + { + target->CastSpell(target, target->getGender() == GENDER_MALE ? SPELL_MALE_DISGUISE : SPELL_FEMALE_DISGUISE, true); + target->CastSpell(target, SPELL_GENERIC_DISGUISE, true); + } + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_q10041_q10040_who_are_they::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); } }; @@ -1820,40 +1429,29 @@ enum symboloflife }; // 8593 Symbol of life dummy -class spell_symbol_of_life_dummy : public SpellScriptLoader +class spell_symbol_of_life_dummy : public SpellScript { -public: - spell_symbol_of_life_dummy() : SpellScriptLoader("spell_symbol_of_life_dummy") { } + PrepareSpellScript(spell_symbol_of_life_dummy); - class spell_symbol_of_life_dummy_SpellScript : public SpellScript + void HandleDummy(SpellEffIndex /*effIndex*/) { - PrepareSpellScript(spell_symbol_of_life_dummy_SpellScript); - - void HandleDummy(SpellEffIndex /*effIndex*/) + if (Creature* target = GetHitCreature()) { - if (Creature* target = GetHitCreature()) + if (target->HasAura(SPELL_PERMANENT_FEIGN_DEATH)) { - if (target->HasAura(SPELL_PERMANENT_FEIGN_DEATH)) - { - target->RemoveAurasDueToSpell(SPELL_PERMANENT_FEIGN_DEATH); - target->SetUInt32Value(UNIT_DYNAMIC_FLAGS, 0); - target->SetUInt32Value(UNIT_FIELD_FLAGS_2, 0); - target->SetHealth(target->GetMaxHealth() / 2); - target->SetPower(POWER_MANA, uint32(target->GetMaxPower(POWER_MANA) * 0.75f)); - } + target->RemoveAurasDueToSpell(SPELL_PERMANENT_FEIGN_DEATH); + target->SetUInt32Value(UNIT_DYNAMIC_FLAGS, 0); + target->SetUInt32Value(UNIT_FIELD_FLAGS_2, 0); + target->SetHealth(target->GetMaxHealth() / 2); + target->SetPower(POWER_MANA, uint32(target->GetMaxPower(POWER_MANA) * 0.75f)); } } + } - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_symbol_of_life_dummy_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_symbol_of_life_dummy_SpellScript(); - }; + OnEffectHitTarget += SpellEffectFn(spell_symbol_of_life_dummy::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } }; // http://www.wowhead.com/quest=12659 Scalps! @@ -1863,40 +1461,29 @@ enum Quest12659Data NPC_SCALPS_KC_BUNNY = 28622, }; -class spell_q12659_ahunaes_knife : public SpellScriptLoader +class spell_q12659_ahunaes_knife : public SpellScript { -public: - spell_q12659_ahunaes_knife() : SpellScriptLoader("spell_q12659_ahunaes_knife") { } + PrepareSpellScript(spell_q12659_ahunaes_knife); - class spell_q12659_ahunaes_knife_SpellScript : public SpellScript + bool Load() override { - PrepareSpellScript(spell_q12659_ahunaes_knife_SpellScript); + return GetCaster()->GetTypeId() == TYPEID_PLAYER; + } - bool Load() override - { - return GetCaster()->GetTypeId() == TYPEID_PLAYER; - } - - void HandleDummy(SpellEffIndex /*effIndex*/) - { - Player* caster = GetCaster()->ToPlayer(); - if (Creature* target = GetHitCreature()) - { - target->DespawnOrUnsummon(); - caster->KilledMonsterCredit(NPC_SCALPS_KC_BUNNY); - } - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_q12659_ahunaes_knife_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const override + void HandleDummy(SpellEffIndex /*effIndex*/) { - return new spell_q12659_ahunaes_knife_SpellScript(); - }; + Player* caster = GetCaster()->ToPlayer(); + if (Creature* target = GetHitCreature()) + { + target->DespawnOrUnsummon(); + caster->KilledMonsterCredit(NPC_SCALPS_KC_BUNNY); + } + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_q12659_ahunaes_knife::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } }; enum StoppingTheSpread @@ -1905,44 +1492,31 @@ enum StoppingTheSpread SPELL_FLAMES = 39199, }; -class spell_q9874_liquid_fire : public SpellScriptLoader +class spell_q9874_liquid_fire : public SpellScript { -public: - spell_q9874_liquid_fire() : SpellScriptLoader("spell_q9874_liquid_fire") + PrepareSpellScript(spell_q9874_liquid_fire); + + bool Load() override { + return GetCaster()->GetTypeId() == TYPEID_PLAYER; } - class spell_q9874_liquid_fire_SpellScript : public SpellScript + void HandleDummy(SpellEffIndex /*effIndex*/) { - PrepareSpellScript(spell_q9874_liquid_fire_SpellScript); + Player* caster = GetCaster()->ToPlayer(); + if (Creature* target = GetHitCreature()) + if (target && !target->HasAura(SPELL_FLAMES)) + { + caster->KilledMonsterCredit(NPC_VILLAGER_KILL_CREDIT); + target->CastSpell(target, SPELL_FLAMES, true); + target->DespawnOrUnsummon(20000); + } + } - bool Load() override - { - return GetCaster()->GetTypeId() == TYPEID_PLAYER; - } - - void HandleDummy(SpellEffIndex /*effIndex*/) - { - Player* caster = GetCaster()->ToPlayer(); - if (Creature* target = GetHitCreature()) - if (target && !target->HasAura(SPELL_FLAMES)) - { - caster->KilledMonsterCredit(NPC_VILLAGER_KILL_CREDIT); - target->CastSpell(target, SPELL_FLAMES, true); - target->DespawnOrUnsummon(20000); - } - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_q9874_liquid_fire_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_q9874_liquid_fire_SpellScript(); - }; + OnEffectHitTarget += SpellEffectFn(spell_q9874_liquid_fire::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } }; enum SalvagingLifesStength @@ -1950,43 +1524,30 @@ enum SalvagingLifesStength NPC_SHARD_KILL_CREDIT = 29303, }; -class spell_q12805_lifeblood_dummy : public SpellScriptLoader +class spell_q12805_lifeblood_dummy : public SpellScript { -public: - spell_q12805_lifeblood_dummy() : SpellScriptLoader("spell_q12805_lifeblood_dummy") + PrepareSpellScript(spell_q12805_lifeblood_dummy); + + bool Load() override { + return GetCaster()->GetTypeId() == TYPEID_PLAYER; } - class spell_q12805_lifeblood_dummy_SpellScript : public SpellScript + void HandleScript(SpellEffIndex /*effIndex*/) { - PrepareSpellScript(spell_q12805_lifeblood_dummy_SpellScript); - - bool Load() override + Player* caster = GetCaster()->ToPlayer(); + if (Creature* target = GetHitCreature()) { - return GetCaster()->GetTypeId() == TYPEID_PLAYER; + caster->KilledMonsterCredit(NPC_SHARD_KILL_CREDIT); + target->CastSpell(target, uint32(GetEffectValue()), true); + target->DespawnOrUnsummon(2000); } + } - void HandleScript(SpellEffIndex /*effIndex*/) - { - Player* caster = GetCaster()->ToPlayer(); - if (Creature* target = GetHitCreature()) - { - caster->KilledMonsterCredit(NPC_SHARD_KILL_CREDIT); - target->CastSpell(target, uint32(GetEffectValue()), true); - target->DespawnOrUnsummon(2000); - } - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_q12805_lifeblood_dummy_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); - } - }; - - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_q12805_lifeblood_dummy_SpellScript(); - }; + OnEffectHitTarget += SpellEffectFn(spell_q12805_lifeblood_dummy::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } }; /* @@ -2000,32 +1561,21 @@ enum BattleStandard NPC_KING_OF_THE_MOUNTAINT_KC = 31766, }; -class spell_q13280_13283_plant_battle_standard: public SpellScriptLoader +class spell_q13280_13283_plant_battle_standard : public SpellScript { -public: - spell_q13280_13283_plant_battle_standard() : SpellScriptLoader("spell_q13280_13283_plant_battle_standard") { } + PrepareSpellScript(spell_q13280_13283_plant_battle_standard); - class spell_q13280_13283_plant_battle_standard_SpellScript : public SpellScript + void HandleDummy(SpellEffIndex /*effIndex*/) { - PrepareSpellScript(spell_q13280_13283_plant_battle_standard_SpellScript); + Unit* caster = GetCaster(); + if (caster->IsVehicle()) + if (Unit* player = caster->GetVehicleKit()->GetPassenger(0)) + player->ToPlayer()->KilledMonsterCredit(NPC_KING_OF_THE_MOUNTAINT_KC); + } - void HandleDummy(SpellEffIndex /*effIndex*/) - { - Unit* caster = GetCaster(); - if (caster->IsVehicle()) - if (Unit* player = caster->GetVehicleKit()->GetPassenger(0)) - player->ToPlayer()->KilledMonsterCredit(NPC_KING_OF_THE_MOUNTAINT_KC); - } - - void Register() override - { - OnEffectHit += SpellEffectFn(spell_q13280_13283_plant_battle_standard_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_q13280_13283_plant_battle_standard_SpellScript(); + OnEffectHit += SpellEffectFn(spell_q13280_13283_plant_battle_standard::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; @@ -2037,41 +1587,30 @@ enum ChumTheWaterSummons SUMMON_NORTH_SEA_BLUE_SHARK = 66740 }; -class spell_q14112_14145_chum_the_water: public SpellScriptLoader +class spell_q14112_14145_chum_the_water : public SpellScript { -public: - spell_q14112_14145_chum_the_water() : SpellScriptLoader("spell_q14112_14145_chum_the_water") { } + PrepareSpellScript(spell_q14112_14145_chum_the_water); - class spell_q14112_14145_chum_the_water_SpellScript : public SpellScript + bool Validate(SpellInfo const* /*spellEntry*/) override { - PrepareSpellScript(spell_q14112_14145_chum_the_water_SpellScript); + return ValidateSpellInfo( + { + SUMMON_ANGRY_KVALDIR, + SUMMON_NORTH_SEA_MAKO, + SUMMON_NORTH_SEA_THRESHER, + SUMMON_NORTH_SEA_BLUE_SHARK + }); + } - bool Validate(SpellInfo const* /*spellEntry*/) override - { - return ValidateSpellInfo( - { - SUMMON_ANGRY_KVALDIR, - SUMMON_NORTH_SEA_MAKO, - SUMMON_NORTH_SEA_THRESHER, - SUMMON_NORTH_SEA_BLUE_SHARK - }); - } - - void HandleScriptEffect(SpellEffIndex /*effIndex*/) - { - Unit* caster = GetCaster(); - caster->CastSpell(caster, RAND(SUMMON_ANGRY_KVALDIR, SUMMON_NORTH_SEA_MAKO, SUMMON_NORTH_SEA_THRESHER, SUMMON_NORTH_SEA_BLUE_SHARK)); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_q14112_14145_chum_the_water_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); - } - }; - - SpellScript* GetSpellScript() const override + void HandleScriptEffect(SpellEffIndex /*effIndex*/) { - return new spell_q14112_14145_chum_the_water_SpellScript(); + Unit* caster = GetCaster(); + caster->CastSpell(caster, RAND(SUMMON_ANGRY_KVALDIR, SUMMON_NORTH_SEA_MAKO, SUMMON_NORTH_SEA_THRESHER, SUMMON_NORTH_SEA_BLUE_SHARK)); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_q14112_14145_chum_the_water::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); } }; @@ -2086,57 +1625,46 @@ enum RedSnapperVeryTasty GO_SCHOOL_OF_RED_SNAPPER = 181616 }; -class spell_q9452_cast_net: public SpellScriptLoader +class spell_q9452_cast_net : public SpellScript { -public: - spell_q9452_cast_net() : SpellScriptLoader("spell_q9452_cast_net") { } + PrepareSpellScript(spell_q9452_cast_net); - class spell_q9452_cast_net_SpellScript : public SpellScript + bool Load() override { - PrepareSpellScript(spell_q9452_cast_net_SpellScript); + return GetCaster()->GetTypeId() == TYPEID_PLAYER; + } - bool Load() override - { - return GetCaster()->GetTypeId() == TYPEID_PLAYER; - } - - SpellCastResult CheckCast() - { - GameObject* go = GetCaster()->FindNearestGameObject(GO_SCHOOL_OF_RED_SNAPPER, 3.0f); - if (!go || go->GetRespawnTime()) - return SPELL_FAILED_REQUIRES_SPELL_FOCUS; - - return SPELL_CAST_OK; - } - - void HandleDummy(SpellEffIndex /*effIndex*/) - { - Player* caster = GetCaster()->ToPlayer(); - if (roll_chance_i(66)) - caster->AddItem(ITEM_RED_SNAPPER, 1); - else - caster->CastSpell(caster, SPELL_NEW_SUMMON_TEST, true); - } - - void HandleActiveObject(SpellEffIndex effIndex) - { - PreventHitDefaultEffect(effIndex); - GetHitGObj()->SetRespawnTime(roll_chance_i(50) ? 2 * MINUTE : 3 * MINUTE); - GetHitGObj()->Use(GetCaster()); - GetHitGObj()->SetLootState(GO_JUST_DEACTIVATED); - } - - void Register() override - { - OnCheckCast += SpellCheckCastFn(spell_q9452_cast_net_SpellScript::CheckCast); - OnEffectHit += SpellEffectFn(spell_q9452_cast_net_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - OnEffectHitTarget += SpellEffectFn(spell_q9452_cast_net_SpellScript::HandleActiveObject, EFFECT_1, SPELL_EFFECT_ACTIVATE_OBJECT); - } - }; - - SpellScript* GetSpellScript() const override + SpellCastResult CheckCast() { - return new spell_q9452_cast_net_SpellScript(); + GameObject* go = GetCaster()->FindNearestGameObject(GO_SCHOOL_OF_RED_SNAPPER, 3.0f); + if (!go || go->GetRespawnTime()) + return SPELL_FAILED_REQUIRES_SPELL_FOCUS; + + return SPELL_CAST_OK; + } + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + Player* caster = GetCaster()->ToPlayer(); + if (roll_chance_i(66)) + caster->AddItem(ITEM_RED_SNAPPER, 1); + else + caster->CastSpell(caster, SPELL_NEW_SUMMON_TEST, true); + } + + void HandleActiveObject(SpellEffIndex effIndex) + { + PreventHitDefaultEffect(effIndex); + GetHitGObj()->SetRespawnTime(roll_chance_i(50) ? 2 * MINUTE : 3 * MINUTE); + GetHitGObj()->Use(GetCaster()); + GetHitGObj()->SetLootState(GO_JUST_DEACTIVATED); + } + + void Register() override + { + OnCheckCast += SpellCheckCastFn(spell_q9452_cast_net::CheckCast); + OnEffectHit += SpellEffectFn(spell_q9452_cast_net::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + OnEffectHitTarget += SpellEffectFn(spell_q9452_cast_net::HandleActiveObject, EFFECT_1, SPELL_EFFECT_ACTIVATE_OBJECT); } }; @@ -2148,38 +1676,27 @@ enum HodirsHelm NPC_ICE_SPIKE_BUNNY = 30215 }; -class spell_q12987_read_pronouncement : public SpellScriptLoader +class spell_q12987_read_pronouncement : public AuraScript { -public: - spell_q12987_read_pronouncement() : SpellScriptLoader("spell_q12987_read_pronouncement") { } + PrepareAuraScript(spell_q12987_read_pronouncement); - class spell_q12987_read_pronouncement_AuraScript : public AuraScript + void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { - PrepareAuraScript(spell_q12987_read_pronouncement_AuraScript); - - void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + // player must cast kill credit and do emote text, according to sniff + if (Player* target = GetTarget()->ToPlayer()) { - // player must cast kill credit and do emote text, according to sniff - if (Player* target = GetTarget()->ToPlayer()) + if (Creature* trigger = target->FindNearestCreature(NPC_ICE_SPIKE_BUNNY, 25.0f)) { - if (Creature* trigger = target->FindNearestCreature(NPC_ICE_SPIKE_BUNNY, 25.0f)) - { - sCreatureTextMgr->SendChat(trigger, SAY_1, target, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_NORMAL, 0, TEAM_NEUTRAL, false, target); - target->KilledMonsterCredit(NPC_KILLCREDIT); - sCreatureTextMgr->SendChat(trigger, SAY_2, target, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_NORMAL, 0, TEAM_NEUTRAL, false, target); - } + sCreatureTextMgr->SendChat(trigger, SAY_1, target, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_NORMAL, 0, TEAM_NEUTRAL, false, target); + target->KilledMonsterCredit(NPC_KILLCREDIT); + sCreatureTextMgr->SendChat(trigger, SAY_2, target, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_NORMAL, 0, TEAM_NEUTRAL, false, target); } } + } - void Register() override - { - AfterEffectApply += AuraEffectApplyFn(spell_q12987_read_pronouncement_AuraScript::OnApply, EFFECT_0, SPELL_AURA_NONE, AURA_EFFECT_HANDLE_REAL); - } - }; - - AuraScript* GetAuraScript() const override + void Register() override { - return new spell_q12987_read_pronouncement_AuraScript(); + AfterEffectApply += AuraEffectApplyFn(spell_q12987_read_pronouncement::OnApply, EFFECT_0, SPELL_AURA_NONE, AURA_EFFECT_HANDLE_REAL); } }; @@ -2192,51 +1709,40 @@ enum LeaveNothingToChance SPELL_LOWER_MINE_SHAFT_CREDIT = 48745, }; -class spell_q12277_wintergarde_mine_explosion : public SpellScriptLoader +class spell_q12277_wintergarde_mine_explosion : public SpellScript { -public: - spell_q12277_wintergarde_mine_explosion() : SpellScriptLoader("spell_q12277_wintergarde_mine_explosion") { } + PrepareSpellScript(spell_q12277_wintergarde_mine_explosion); - class spell_q12277_wintergarde_mine_explosion_SpellScript : public SpellScript + void HandleDummy(SpellEffIndex /*effIndex*/) { - PrepareSpellScript(spell_q12277_wintergarde_mine_explosion_SpellScript); - - void HandleDummy(SpellEffIndex /*effIndex*/) + if (Creature* unitTarget = GetHitCreature()) { - if (Creature* unitTarget = GetHitCreature()) + if (Unit* caster = GetCaster()) { - if (Unit* caster = GetCaster()) + if (caster->GetTypeId() == TYPEID_UNIT) { - if (caster->GetTypeId() == TYPEID_UNIT) + if (Unit* owner = caster->GetOwner()) { - if (Unit* owner = caster->GetOwner()) + switch (unitTarget->GetEntry()) { - switch (unitTarget->GetEntry()) - { - case NPC_UPPER_MINE_SHAFT: - caster->CastSpell(owner, SPELL_UPPER_MINE_SHAFT_CREDIT, true); - break; - case NPC_LOWER_MINE_SHAFT: - caster->CastSpell(owner, SPELL_LOWER_MINE_SHAFT_CREDIT, true); - break; - default: - break; - } + case NPC_UPPER_MINE_SHAFT: + caster->CastSpell(owner, SPELL_UPPER_MINE_SHAFT_CREDIT, true); + break; + case NPC_LOWER_MINE_SHAFT: + caster->CastSpell(owner, SPELL_LOWER_MINE_SHAFT_CREDIT, true); + break; + default: + break; } } } } } + } - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_q12277_wintergarde_mine_explosion_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_q12277_wintergarde_mine_explosion_SpellScript(); + OnEffectHitTarget += SpellEffectFn(spell_q12277_wintergarde_mine_explosion::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; @@ -2245,30 +1751,19 @@ enum FocusOnTheBeach SPELL_BUNNY_CREDIT_BEAM = 47390, }; -class spell_q12066_bunny_kill_credit : public SpellScriptLoader +class spell_q12066_bunny_kill_credit : public SpellScript { -public: - spell_q12066_bunny_kill_credit() : SpellScriptLoader("spell_q12066_bunny_kill_credit") { } + PrepareSpellScript(spell_q12066_bunny_kill_credit); - class spell_q12066_bunny_kill_credit_SpellScript : public SpellScript + void HandleDummy(SpellEffIndex /*effIndex*/) { - PrepareSpellScript(spell_q12066_bunny_kill_credit_SpellScript); + if (Creature* target = GetHitCreature()) + target->CastSpell(GetCaster(), SPELL_BUNNY_CREDIT_BEAM, false); + } - void HandleDummy(SpellEffIndex /*effIndex*/) - { - if (Creature* target = GetHitCreature()) - target->CastSpell(GetCaster(), SPELL_BUNNY_CREDIT_BEAM, false); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_q12066_bunny_kill_credit_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_q12066_bunny_kill_credit_SpellScript(); + OnEffectHitTarget += SpellEffectFn(spell_q12066_bunny_kill_credit::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; @@ -2283,43 +1778,32 @@ enum ACleansingSong AREA_WINTERGRASPRIVER = 4388, }; -class spell_q12735_song_of_cleansing : public SpellScriptLoader +class spell_q12735_song_of_cleansing : public SpellScript { -public: - spell_q12735_song_of_cleansing() : SpellScriptLoader("spell_q12735_song_of_cleansing") { } + PrepareSpellScript(spell_q12735_song_of_cleansing); - class spell_q12735_song_of_cleansing_SpellScript : public SpellScript + void HandleScript(SpellEffIndex /*effIndex*/) { - PrepareSpellScript(spell_q12735_song_of_cleansing_SpellScript); - - void HandleScript(SpellEffIndex /*effIndex*/) + Unit* caster = GetCaster(); + switch (caster->GetAreaId()) { - Unit* caster = GetCaster(); - switch (caster->GetAreaId()) - { - case AREA_BITTERTIDELAKE: - caster->CastSpell(caster, SPELL_SUMMON_SPIRIT_ATAH); - break; - case AREA_RIVERSHEART: - caster->CastSpell(caster, SPELL_SUMMON_SPIRIT_HAKHALAN); - break; - case AREA_WINTERGRASPRIVER: - caster->CastSpell(caster, SPELL_SUMMON_SPIRIT_KOOSU); - break; - default: - break; - } + case AREA_BITTERTIDELAKE: + caster->CastSpell(caster, SPELL_SUMMON_SPIRIT_ATAH); + break; + case AREA_RIVERSHEART: + caster->CastSpell(caster, SPELL_SUMMON_SPIRIT_HAKHALAN); + break; + case AREA_WINTERGRASPRIVER: + caster->CastSpell(caster, SPELL_SUMMON_SPIRIT_KOOSU); + break; + default: + break; } + } - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_q12735_song_of_cleansing_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); - } - }; - - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_q12735_song_of_cleansing_SpellScript(); + OnEffectHitTarget += SpellEffectFn(spell_q12735_song_of_cleansing::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); } }; @@ -2335,171 +1819,111 @@ enum Quest11010_11102_11023Data }; // 40113 Knockdown Fel Cannon: The Aggro Check Aura -class spell_q11010_q11102_q11023_aggro_check_aura : public SpellScriptLoader +class spell_q11010_q11102_q11023_aggro_check_aura : public AuraScript { -public: - spell_q11010_q11102_q11023_aggro_check_aura() : SpellScriptLoader("spell_q11010_q11102_q11023_aggro_check_aura") { } + PrepareAuraScript(spell_q11010_q11102_q11023_aggro_check_aura); - class spell_q11010_q11102_q11023_aggro_check_aura_AuraScript : public AuraScript + void HandleTriggerSpell(AuraEffect const* /*aurEff*/) { - PrepareAuraScript(spell_q11010_q11102_q11023_aggro_check_aura_AuraScript); + if (Unit* target = GetTarget()) + // On trigger proccing + target->CastSpell(target, SPELL_AGGRO_CHECK); + } - void HandleTriggerSpell(AuraEffect const* /*aurEff*/) - { - if (Unit* target = GetTarget()) - // On trigger proccing - target->CastSpell(target, SPELL_AGGRO_CHECK); - } - - void Register() override - { - OnEffectPeriodic += AuraEffectPeriodicFn(spell_q11010_q11102_q11023_aggro_check_aura_AuraScript::HandleTriggerSpell, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL); - } - }; - - AuraScript* GetAuraScript() const override + void Register() override { - return new spell_q11010_q11102_q11023_aggro_check_aura_AuraScript(); + OnEffectPeriodic += AuraEffectPeriodicFn(spell_q11010_q11102_q11023_aggro_check_aura::HandleTriggerSpell, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL); } }; // 40112 Knockdown Fel Cannon: The Aggro Check -class spell_q11010_q11102_q11023_aggro_check : public SpellScriptLoader +class spell_q11010_q11102_q11023_aggro_check : public SpellScript { -public: - spell_q11010_q11102_q11023_aggro_check() : SpellScriptLoader("spell_q11010_q11102_q11023_aggro_check") { } + PrepareSpellScript(spell_q11010_q11102_q11023_aggro_check); - class spell_q11010_q11102_q11023_aggro_check_SpellScript : public SpellScript + void HandleDummy(SpellEffIndex /*effIndex*/) { - PrepareSpellScript(spell_q11010_q11102_q11023_aggro_check_SpellScript); + if (Player* playerTarget = GetHitPlayer()) + // Check if found player target is on fly mount or using flying form + if (playerTarget->HasAuraType(SPELL_AURA_FLY) || playerTarget->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED)) + playerTarget->CastSpell(playerTarget, SPELL_FLAK_CANNON_TRIGGER, TRIGGERED_FULL_MASK); + } - void HandleDummy(SpellEffIndex /*effIndex*/) - { - if (Player* playerTarget = GetHitPlayer()) - // Check if found player target is on fly mount or using flying form - if (playerTarget->HasAuraType(SPELL_AURA_FLY) || playerTarget->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED)) - playerTarget->CastSpell(playerTarget, SPELL_FLAK_CANNON_TRIGGER, TRIGGERED_FULL_MASK); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_q11010_q11102_q11023_aggro_check_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_q11010_q11102_q11023_aggro_check_SpellScript(); + OnEffectHitTarget += SpellEffectFn(spell_q11010_q11102_q11023_aggro_check::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; // 40119 Knockdown Fel Cannon: The Aggro Burst -class spell_q11010_q11102_q11023_aggro_burst : public SpellScriptLoader +class spell_q11010_q11102_q11023_aggro_burst : public AuraScript { -public: - spell_q11010_q11102_q11023_aggro_burst() : SpellScriptLoader("spell_q11010_q11102_q11023_aggro_burst") { } + PrepareAuraScript(spell_q11010_q11102_q11023_aggro_burst); - class spell_q11010_q11102_q11023_aggro_burst_AuraScript : public AuraScript + void HandleEffectPeriodic(AuraEffect const* /*aurEff*/) { - PrepareAuraScript(spell_q11010_q11102_q11023_aggro_burst_AuraScript); + if (Unit* target = GetTarget()) + // On each tick cast Choose Loc to trigger summon + target->CastSpell(target, SPELL_CHOOSE_LOC); + } - void HandleEffectPeriodic(AuraEffect const* /*aurEff*/) - { - if (Unit* target = GetTarget()) - // On each tick cast Choose Loc to trigger summon - target->CastSpell(target, SPELL_CHOOSE_LOC); - } - - void Register() override - { - OnEffectPeriodic += AuraEffectPeriodicFn(spell_q11010_q11102_q11023_aggro_burst_AuraScript::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY); - } - }; - - AuraScript* GetAuraScript() const override + void Register() override { - return new spell_q11010_q11102_q11023_aggro_burst_AuraScript(); + OnEffectPeriodic += AuraEffectPeriodicFn(spell_q11010_q11102_q11023_aggro_burst::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY); } }; // 40056 Knockdown Fel Cannon: Choose Loc -class spell_q11010_q11102_q11023_choose_loc : public SpellScriptLoader +class spell_q11010_q11102_q11023_choose_loc : public SpellScript { -public: - spell_q11010_q11102_q11023_choose_loc() : SpellScriptLoader("spell_q11010_q11102_q11023_choose_loc") { } + PrepareSpellScript(spell_q11010_q11102_q11023_choose_loc); - class spell_q11010_q11102_q11023_choose_loc_SpellScript : public SpellScript + void HandleDummy(SpellEffIndex /*effIndex*/) { - PrepareSpellScript(spell_q11010_q11102_q11023_choose_loc_SpellScript); + Unit* caster = GetCaster(); + // Check for player that is in 65 y range + std::list playerList; + Acore::AnyPlayerInObjectRangeCheck checker(caster, 65.0f); + Acore::PlayerListSearcher searcher(caster, playerList, checker); + Cell::VisitWorldObjects(caster, searcher, 65.0f); + for (std::list::const_iterator itr = playerList.begin(); itr != playerList.end(); ++itr) + // Check if found player target is on fly mount or using flying form + if ((*itr)->HasAuraType(SPELL_AURA_FLY) || (*itr)->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED)) + // Summom Fel Cannon (bunny version) at found player + caster->SummonCreature(NPC_FEL_CANNON2, (*itr)->GetPositionX(), (*itr)->GetPositionY(), (*itr)->GetPositionZ()); + } - void HandleDummy(SpellEffIndex /*effIndex*/) - { - Unit* caster = GetCaster(); - // Check for player that is in 65 y range - std::list playerList; - Acore::AnyPlayerInObjectRangeCheck checker(caster, 65.0f); - Acore::PlayerListSearcher searcher(caster, playerList, checker); - Cell::VisitWorldObjects(caster, searcher, 65.0f); - for (std::list::const_iterator itr = playerList.begin(); itr != playerList.end(); ++itr) - // Check if found player target is on fly mount or using flying form - if ((*itr)->HasAuraType(SPELL_AURA_FLY) || (*itr)->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED)) - // Summom Fel Cannon (bunny version) at found player - caster->SummonCreature(NPC_FEL_CANNON2, (*itr)->GetPositionX(), (*itr)->GetPositionY(), (*itr)->GetPositionZ()); - } - - void Register() override - { - OnEffectHit += SpellEffectFn(spell_q11010_q11102_q11023_choose_loc_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_q11010_q11102_q11023_choose_loc_SpellScript(); + OnEffectHit += SpellEffectFn(spell_q11010_q11102_q11023_choose_loc::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; // 39844 - Skyguard Blasting Charge // 40160 - Throw Bomb -class spell_q11010_q11102_q11023_q11008_check_fly_mount : public SpellScriptLoader +class spell_q11010_q11102_q11023_q11008_check_fly_mount : public SpellScript { -public: - spell_q11010_q11102_q11023_q11008_check_fly_mount() : SpellScriptLoader("spell_q11010_q11102_q11023_q11008_check_fly_mount") { } + PrepareSpellScript(spell_q11010_q11102_q11023_q11008_check_fly_mount); - class spell_q11010_q11102_q11023_q11008_check_fly_mount_SpellScript : public SpellScript + SpellCastResult CheckRequirement() { - PrepareSpellScript(spell_q11010_q11102_q11023_q11008_check_fly_mount_SpellScript); + Unit* caster = GetCaster(); + // This spell will be cast only if caster has one of these auras + if (!(caster->HasAuraType(SPELL_AURA_FLY) || caster->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED))) + return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW; + return SPELL_CAST_OK; + } - SpellCastResult CheckRequirement() - { - Unit* caster = GetCaster(); - // This spell will be cast only if caster has one of these auras - if (!(caster->HasAuraType(SPELL_AURA_FLY) || caster->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED))) - return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW; - return SPELL_CAST_OK; - } - - void Register() override - { - OnCheckCast += SpellCheckCastFn(spell_q11010_q11102_q11023_q11008_check_fly_mount_SpellScript::CheckRequirement); - } - }; - - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_q11010_q11102_q11023_q11008_check_fly_mount_SpellScript(); + OnCheckCast += SpellCheckCastFn(spell_q11010_q11102_q11023_q11008_check_fly_mount::CheckRequirement); } }; // 55368 - Summon Stefan -class spell_q12661_q12669_q12676_q12677_q12713_summon_stefan : public SpellScriptLoader -{ -public: - spell_q12661_q12669_q12676_q12677_q12713_summon_stefan() : SpellScriptLoader("spell_q12661_q12669_q12676_q12677_q12713_summon_stefan") { } - - class spell_q12661_q12669_q12676_q12677_q12713_summon_stefan_SpellScript : public SpellScript + class spell_q12661_q12669_q12676_q12677_q12713_summon_stefan : public SpellScript { - PrepareSpellScript(spell_q12661_q12669_q12676_q12677_q12713_summon_stefan_SpellScript); + PrepareSpellScript(spell_q12661_q12669_q12676_q12677_q12713_summon_stefan); void SetDest(SpellDestination& dest) { @@ -2510,29 +1934,18 @@ public: void Register() override { - OnDestinationTargetSelect += SpellDestinationTargetSelectFn(spell_q12661_q12669_q12676_q12677_q12713_summon_stefan_SpellScript::SetDest, EFFECT_0, TARGET_DEST_CASTER_BACK); + OnDestinationTargetSelect += SpellDestinationTargetSelectFn(spell_q12661_q12669_q12676_q12677_q12713_summon_stefan::SetDest, EFFECT_0, TARGET_DEST_CASTER_BACK); } }; - SpellScript* GetSpellScript() const override - { - return new spell_q12661_q12669_q12676_q12677_q12713_summon_stefan_SpellScript(); - } -}; - enum QuenchingMist { SPELL_FLICKERING_FLAMES = 53504 }; -class spell_q12730_quenching_mist : public SpellScriptLoader -{ -public: - spell_q12730_quenching_mist() : SpellScriptLoader("spell_q12730_quenching_mist") { } - - class spell_q12730_quenching_mist_AuraScript : public AuraScript + class spell_q12730_quenching_mist : public AuraScript { - PrepareAuraScript(spell_q12730_quenching_mist_AuraScript); + PrepareAuraScript(spell_q12730_quenching_mist); bool Validate(SpellInfo const* /*spellInfo*/) override { @@ -2546,16 +1959,10 @@ public: void Register() override { - OnEffectPeriodic += AuraEffectPeriodicFn(spell_q12730_quenching_mist_AuraScript::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_HEAL); + OnEffectPeriodic += AuraEffectPeriodicFn(spell_q12730_quenching_mist::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_HEAL); } }; - AuraScript* GetAuraScript() const override - { - return new spell_q12730_quenching_mist_AuraScript(); - } -}; - // 13291 - Borrowed Technology/13292 - The Solution Solution /Daily//13239 - Volatility/13261 - Volatiliy /Daily// enum Quest13291_13292_13239_13261Data { @@ -2566,14 +1973,9 @@ enum Quest13291_13292_13239_13261Data SPELL_RIDE = 56687 }; -class spell_q13291_q13292_q13239_q13261_frostbrood_skytalon_grab_decoy : public SpellScriptLoader -{ -public: - spell_q13291_q13292_q13239_q13261_frostbrood_skytalon_grab_decoy() : SpellScriptLoader("spell_q13291_q13292_q13239_q13261_frostbrood_skytalon_grab_decoy") { } - - class spell_q13291_q13292_q13239_q13261_frostbrood_skytalon_grab_decoy_SpellScript : public SpellScript + class spell_q13291_q13292_q13239_q13261_frostbrood_skytalon_grab_decoy : public SpellScript { - PrepareSpellScript(spell_q13291_q13292_q13239_q13261_frostbrood_skytalon_grab_decoy_SpellScript); + PrepareSpellScript(spell_q13291_q13292_q13239_q13261_frostbrood_skytalon_grab_decoy); bool Validate(SpellInfo const* /*spell*/) override { @@ -2591,25 +1993,14 @@ public: void Register() override { - OnEffectHitTarget += SpellEffectFn(spell_q13291_q13292_q13239_q13261_frostbrood_skytalon_grab_decoy_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + OnEffectHitTarget += SpellEffectFn(spell_q13291_q13292_q13239_q13261_frostbrood_skytalon_grab_decoy::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; - SpellScript* GetSpellScript() const override - { - return new spell_q13291_q13292_q13239_q13261_frostbrood_skytalon_grab_decoy_SpellScript(); - } -}; - // 59303 - Summon Frost Wyrm -class spell_q13291_q13292_q13239_q13261_armored_decoy_summon_skytalon : public SpellScriptLoader -{ -public: - spell_q13291_q13292_q13239_q13261_armored_decoy_summon_skytalon() : SpellScriptLoader("spell_q13291_q13292_q13239_q13261_armored_decoy_summon_skytalon") { } - - class spell_q13291_q13292_q13239_q13261_armored_decoy_summon_skytalon_SpellScript : public SpellScript + class spell_q13291_q13292_q13239_q13261_armored_decoy_summon_skytalon : public SpellScript { - PrepareSpellScript(spell_q13291_q13292_q13239_q13261_armored_decoy_summon_skytalon_SpellScript); + PrepareSpellScript(spell_q13291_q13292_q13239_q13261_armored_decoy_summon_skytalon); void SetDest(SpellDestination& dest) { @@ -2620,16 +2011,10 @@ public: void Register() override { - OnDestinationTargetSelect += SpellDestinationTargetSelectFn(spell_q13291_q13292_q13239_q13261_armored_decoy_summon_skytalon_SpellScript::SetDest, EFFECT_0, TARGET_DEST_CASTER_BACK); + OnDestinationTargetSelect += SpellDestinationTargetSelectFn(spell_q13291_q13292_q13239_q13261_armored_decoy_summon_skytalon::SetDest, EFFECT_0, TARGET_DEST_CASTER_BACK); } }; - SpellScript* GetSpellScript() const override - { - return new spell_q13291_q13292_q13239_q13261_armored_decoy_summon_skytalon_SpellScript(); - } -}; - enum BearFlankMaster { SPELL_BEAR_FLANK_MASTER = 56565, @@ -2637,14 +2022,9 @@ enum BearFlankMaster SPELL_BEAR_FLANK_FAIL = 56569 }; -class spell_q13011_bear_flank_master : public SpellScriptLoader -{ -public: - spell_q13011_bear_flank_master() : SpellScriptLoader("spell_q13011_bear_flank_master") { } - - class spell_q13011_bear_flank_master_SpellScript : public SpellScript + class spell_q13011_bear_flank_master : public SpellScript { - PrepareSpellScript(spell_q13011_bear_flank_master_SpellScript); + PrepareSpellScript(spell_q13011_bear_flank_master); bool Validate(SpellInfo const* /*spellInfo*/) override { @@ -2674,16 +2054,10 @@ public: void Register() override { - OnEffectHitTarget += SpellEffectFn(spell_q13011_bear_flank_master_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + OnEffectHitTarget += SpellEffectFn(spell_q13011_bear_flank_master::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); } }; - SpellScript* GetSpellScript() const override - { - return new spell_q13011_bear_flank_master_SpellScript(); - } -}; - enum BurstAtTheSeams { NPC_DRAKKARI_CHIEFTAINK = 29099, @@ -2701,74 +2075,63 @@ enum BurstAtTheSeams SPELL_DRAKKARI_CHIEFTAINK_KILL_CREDIT = 52620 // Drakkari Chieftain Kill Credit }; -class spell_q12690_burst_at_the_seams : public SpellScriptLoader +class spell_q12690_burst_at_the_seams : public SpellScript { -public: - spell_q12690_burst_at_the_seams() : SpellScriptLoader("spell_q12690_burst_at_the_seams") { } + PrepareSpellScript(spell_q12690_burst_at_the_seams); - class spell_q12690_burst_at_the_seams_SpellScript : public SpellScript + bool Validate(SpellInfo const* /*spellInfo*/) override { - PrepareSpellScript(spell_q12690_burst_at_the_seams_SpellScript); - - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo( - { - SPELL_BURST_AT_THE_SEAMS, - SPELL_BURST_AT_THE_SEAMS_DMG, - SPELL_BURST_AT_THE_SEAMS_DMG_2, - SPELL_BURST_AT_THE_SEAMS_BONE, - SPELL_BURST_AT_THE_SEAMS_MEAT, - SPELL_BURST_AT_THE_SEAMS_BMEAT - }); - } - - bool Load() override - { - return GetCaster()->GetTypeId() == TYPEID_UNIT; - } - - void HandleKnockBack(SpellEffIndex /*effIndex*/) - { - if (Unit* creature = GetHitCreature()) + return ValidateSpellInfo( { - if (Unit* charmer = GetCaster()->GetCharmerOrOwner()) - { - if (Player* player = charmer->ToPlayer()) - { - if (player->GetQuestStatus(QUEST_BURST_AT_THE_SEAMS) == QUEST_STATUS_INCOMPLETE) - { - creature->CastSpell(creature, SPELL_BURST_AT_THE_SEAMS_BONE, true); - creature->CastSpell(creature, SPELL_BURST_AT_THE_SEAMS_MEAT, true); - creature->CastSpell(creature, SPELL_BURST_AT_THE_SEAMS_BMEAT, true); - creature->CastSpell(creature, SPELL_BURST_AT_THE_SEAMS_DMG, true); - creature->CastSpell(creature, SPELL_BURST_AT_THE_SEAMS_DMG_2, true); + SPELL_BURST_AT_THE_SEAMS, + SPELL_BURST_AT_THE_SEAMS_DMG, + SPELL_BURST_AT_THE_SEAMS_DMG_2, + SPELL_BURST_AT_THE_SEAMS_BONE, + SPELL_BURST_AT_THE_SEAMS_MEAT, + SPELL_BURST_AT_THE_SEAMS_BMEAT + }); + } - player->CastSpell(player, SPELL_DRAKKARI_SKULLCRUSHER_CREDIT, true); - uint16 count = player->GetReqKillOrCastCurrentCount(QUEST_BURST_AT_THE_SEAMS, NPC_DRAKKARI_CHIEFTAINK); - if ((count % 20) == 0) - player->CastSpell(player, SPELL_SUMMON_DRAKKARI_CHIEFTAIN, true); - } + bool Load() override + { + return GetCaster()->GetTypeId() == TYPEID_UNIT; + } + + void HandleKnockBack(SpellEffIndex /*effIndex*/) + { + if (Unit* creature = GetHitCreature()) + { + if (Unit* charmer = GetCaster()->GetCharmerOrOwner()) + { + if (Player* player = charmer->ToPlayer()) + { + if (player->GetQuestStatus(QUEST_BURST_AT_THE_SEAMS) == QUEST_STATUS_INCOMPLETE) + { + creature->CastSpell(creature, SPELL_BURST_AT_THE_SEAMS_BONE, true); + creature->CastSpell(creature, SPELL_BURST_AT_THE_SEAMS_MEAT, true); + creature->CastSpell(creature, SPELL_BURST_AT_THE_SEAMS_BMEAT, true); + creature->CastSpell(creature, SPELL_BURST_AT_THE_SEAMS_DMG, true); + creature->CastSpell(creature, SPELL_BURST_AT_THE_SEAMS_DMG_2, true); + + player->CastSpell(player, SPELL_DRAKKARI_SKULLCRUSHER_CREDIT, true); + uint16 count = player->GetReqKillOrCastCurrentCount(QUEST_BURST_AT_THE_SEAMS, NPC_DRAKKARI_CHIEFTAINK); + if ((count % 20) == 0) + player->CastSpell(player, SPELL_SUMMON_DRAKKARI_CHIEFTAIN, true); } } } } + } - void HandleScript(SpellEffIndex /*effIndex*/) - { - GetCaster()->ToCreature()->DespawnOrUnsummon(2 * IN_MILLISECONDS); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_q12690_burst_at_the_seams_SpellScript::HandleKnockBack, EFFECT_1, SPELL_EFFECT_KNOCK_BACK); - OnEffectHitTarget += SpellEffectFn(spell_q12690_burst_at_the_seams_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); - } - }; - - SpellScript* GetSpellScript() const override + void HandleScript(SpellEffIndex /*effIndex*/) { - return new spell_q12690_burst_at_the_seams_SpellScript(); + GetCaster()->ToCreature()->DespawnOrUnsummon(2 * IN_MILLISECONDS); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_q12690_burst_at_the_seams::HandleKnockBack, EFFECT_1, SPELL_EFFECT_KNOCK_BACK); + OnEffectHitTarget += SpellEffectFn(spell_q12690_burst_at_the_seams::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); } }; @@ -2778,66 +2141,44 @@ enum EscapeFromSilverbrook }; // 48682 - Escape from Silverbrook - Periodic Dummy -class spell_q12308_escape_from_silverbrook : public SpellScriptLoader +class spell_q12308_escape_from_silverbrook : public SpellScript { -public: - spell_q12308_escape_from_silverbrook() : SpellScriptLoader("spell_q12308_escape_from_silverbrook") { } + PrepareSpellScript(spell_q12308_escape_from_silverbrook); - class spell_q12308_escape_from_silverbrook_SpellScript : public SpellScript + bool Validate(SpellInfo const* /*spellInfo*/) override { - PrepareSpellScript(spell_q12308_escape_from_silverbrook_SpellScript); + return ValidateSpellInfo({ SPELL_SUMMON_WORGEN }); + } - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_SUMMON_WORGEN }); - } - - void HandleDummy(SpellEffIndex /*effIndex*/) - { - GetCaster()->CastSpell(GetCaster(), SPELL_SUMMON_WORGEN, true); - } - - void Register() override - { - OnEffectHit += SpellEffectFn(spell_q12308_escape_from_silverbrook_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const override + void HandleDummy(SpellEffIndex /*effIndex*/) { - return new spell_q12308_escape_from_silverbrook_SpellScript(); + GetCaster()->CastSpell(GetCaster(), SPELL_SUMMON_WORGEN, true); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_q12308_escape_from_silverbrook::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; // 48681 - Summon Silverbrook Worgen -class spell_q12308_escape_from_silverbrook_summon_worgen : public SpellScriptLoader +class spell_q12308_escape_from_silverbrook_summon_worgen : public SpellScript { -public: - spell_q12308_escape_from_silverbrook_summon_worgen() : SpellScriptLoader("spell_q12308_escape_from_silverbrook_summon_worgen") { } + PrepareSpellScript(spell_q12308_escape_from_silverbrook_summon_worgen); - class spell_q12308_escape_from_silverbrook_summon_worgen_SpellScript : public SpellScript + void ModDest(SpellDestination& dest) { - PrepareSpellScript(spell_q12308_escape_from_silverbrook_summon_worgen_SpellScript); + float dist = GetSpellInfo()->Effects[EFFECT_0].CalcRadius(GetCaster()); + float angle = frand(0.75f, 1.25f) * M_PI; - void ModDest(SpellDestination& dest) - { - float dist = GetSpellInfo()->Effects[EFFECT_0].CalcRadius(GetCaster()); - float angle = frand(0.75f, 1.25f) * M_PI; + Position pos; + GetCaster()->GetNearPosition(pos, dist, angle); + dest.Relocate(pos); + } - Position pos; - GetCaster()->GetNearPosition(pos, dist, angle); - dest.Relocate(pos); - } - - void Register() override - { - OnDestinationTargetSelect += SpellDestinationTargetSelectFn(spell_q12308_escape_from_silverbrook_summon_worgen_SpellScript::ModDest, EFFECT_0, TARGET_DEST_CASTER_SUMMON); - } - }; - - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_q12308_escape_from_silverbrook_summon_worgen_SpellScript(); + OnDestinationTargetSelect += SpellDestinationTargetSelectFn(spell_q12308_escape_from_silverbrook_summon_worgen::ModDest, EFFECT_0, TARGET_DEST_CASTER_SUMMON); } }; @@ -2855,116 +2196,83 @@ enum DeathComesFromOnHigh }; // 51858 - Siphon of Acherus -class spell_q12641_death_comes_from_on_high : public SpellScriptLoader +class spell_q12641_death_comes_from_on_high : public SpellScript { -public: - spell_q12641_death_comes_from_on_high() : SpellScriptLoader("spell_q12641_death_comes_from_on_high") { } + PrepareSpellScript(spell_q12641_death_comes_from_on_high); - class spell_q12641_death_comes_from_on_high_SpellScript : public SpellScript + bool Validate(SpellInfo const* /*spellInfo*/) override { - PrepareSpellScript(spell_q12641_death_comes_from_on_high_SpellScript); - - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo( - { - SPELL_FORGE_CREDIT, - SPELL_TOWN_HALL_CREDIT, - SPELL_SCARLET_HOLD_CREDIT, - SPELL_CHAPEL_CREDIT - }); - } - - void HandleDummy(SpellEffIndex /*effIndex*/) - { - uint32 spellId = 0; - - switch (GetHitCreature()->GetEntry()) + return ValidateSpellInfo( { - case NPC_NEW_AVALON_FORGE: - spellId = SPELL_FORGE_CREDIT; - break; - case NPC_NEW_AVALON_TOWN_HALL: - spellId = SPELL_TOWN_HALL_CREDIT; - break; - case NPC_SCARLET_HOLD: - spellId = SPELL_SCARLET_HOLD_CREDIT; - break; - case NPC_CHAPEL_OF_THE_CRIMSON_FLAME: - spellId = SPELL_CHAPEL_CREDIT; - break; - default: - return; - } + SPELL_FORGE_CREDIT, + SPELL_TOWN_HALL_CREDIT, + SPELL_SCARLET_HOLD_CREDIT, + SPELL_CHAPEL_CREDIT + }); + } - GetCaster()->CastSpell((Unit*)nullptr, spellId, true); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_q12641_death_comes_from_on_high_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const override + void HandleDummy(SpellEffIndex /*effIndex*/) { - return new spell_q12641_death_comes_from_on_high_SpellScript(); + uint32 spellId = 0; + + switch (GetHitCreature()->GetEntry()) + { + case NPC_NEW_AVALON_FORGE: + spellId = SPELL_FORGE_CREDIT; + break; + case NPC_NEW_AVALON_TOWN_HALL: + spellId = SPELL_TOWN_HALL_CREDIT; + break; + case NPC_SCARLET_HOLD: + spellId = SPELL_SCARLET_HOLD_CREDIT; + break; + case NPC_CHAPEL_OF_THE_CRIMSON_FLAME: + spellId = SPELL_CHAPEL_CREDIT; + break; + default: + return; + } + + GetCaster()->CastSpell((Unit*)nullptr, spellId, true); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_q12641_death_comes_from_on_high::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; // 51769 - Emblazon Runeblade -class spell_q12619_emblazon_runeblade : public SpellScriptLoader +class spell_q12619_emblazon_runeblade : public AuraScript { -public: - spell_q12619_emblazon_runeblade() : SpellScriptLoader("spell_q12619_emblazon_runeblade") { } + PrepareAuraScript(spell_q12619_emblazon_runeblade); - class spell_q12619_emblazon_runeblade_AuraScript : public AuraScript + void HandleEffectPeriodic(AuraEffect const* aurEff) { - PrepareAuraScript(spell_q12619_emblazon_runeblade_AuraScript); + PreventDefaultAction(); + if (Unit* caster = GetCaster()) + caster->CastSpell(caster, GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, true, nullptr, aurEff); + } - void HandleEffectPeriodic(AuraEffect const* aurEff) - { - PreventDefaultAction(); - if (Unit* caster = GetCaster()) - caster->CastSpell(caster, GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, true, nullptr, aurEff); - } - - void Register() override - { - OnEffectPeriodic += AuraEffectPeriodicFn(spell_q12619_emblazon_runeblade_AuraScript::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL); - } - }; - - AuraScript* GetAuraScript() const override + void Register() override { - return new spell_q12619_emblazon_runeblade_AuraScript(); + OnEffectPeriodic += AuraEffectPeriodicFn(spell_q12619_emblazon_runeblade::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL); } }; // 51770 - Emblazon Runeblade -class spell_q12619_emblazon_runeblade_effect : public SpellScriptLoader +class spell_q12619_emblazon_runeblade_effect : public SpellScript { -public: - spell_q12619_emblazon_runeblade_effect() : SpellScriptLoader("spell_q12619_emblazon_runeblade_effect") { } + PrepareSpellScript(spell_q12619_emblazon_runeblade_effect); - class spell_q12619_emblazon_runeblade_effect_SpellScript : public SpellScript + void HandleScript(SpellEffIndex /*effIndex*/) { - PrepareSpellScript(spell_q12619_emblazon_runeblade_effect_SpellScript); + GetCaster()->CastSpell(GetCaster(), uint32(GetEffectValue()), false); + } - void HandleScript(SpellEffIndex /*effIndex*/) - { - GetCaster()->CastSpell(GetCaster(), uint32(GetEffectValue()), false); - } - - void Register() override - { - OnEffectHit += SpellEffectFn(spell_q12619_emblazon_runeblade_effect_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); - } - }; - - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_q12619_emblazon_runeblade_effect_SpellScript(); + OnEffectHit += SpellEffectFn(spell_q12619_emblazon_runeblade_effect::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); } }; @@ -2974,38 +2282,27 @@ enum Quest_The_Storm_King SPELL_GRABBED = 55424 }; -class spell_q12919_gymers_grab : public SpellScriptLoader +class spell_q12919_gymers_grab : public SpellScript { -public: - spell_q12919_gymers_grab() : SpellScriptLoader("spell_q12919_gymers_grab") { } + PrepareSpellScript(spell_q12919_gymers_grab); - class spell_q12919_gymers_grab_SpellScript : public SpellScript + bool Validate(SpellInfo const* /*spell*/) override { - PrepareSpellScript(spell_q12919_gymers_grab_SpellScript); + return ValidateSpellInfo({ SPELL_RIDE_GYMER }); + } - bool Validate(SpellInfo const* /*spell*/) override - { - return ValidateSpellInfo({ SPELL_RIDE_GYMER }); - } - - void HandleScript(SpellEffIndex /*effIndex*/) - { - int8 seatId = 2; - if (!GetHitCreature()) - return; - GetHitCreature()->CastCustomSpell(SPELL_RIDE_GYMER, SPELLVALUE_BASE_POINT0, seatId, GetCaster(), true); - GetHitCreature()->CastSpell(GetHitCreature(), SPELL_GRABBED, true); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_q12919_gymers_grab_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); - } - }; - - SpellScript* GetSpellScript() const override + void HandleScript(SpellEffIndex /*effIndex*/) { - return new spell_q12919_gymers_grab_SpellScript(); + int8 seatId = 2; + if (!GetHitCreature()) + return; + GetHitCreature()->CastCustomSpell(SPELL_RIDE_GYMER, SPELLVALUE_BASE_POINT0, seatId, GetCaster(), true); + GetHitCreature()->CastSpell(GetHitCreature(), SPELL_GRABBED, true); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_q12919_gymers_grab::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); } }; @@ -3014,49 +2311,33 @@ enum Quest_The_Storm_King_Throw SPELL_VARGUL_EXPLOSION = 55569 }; -class spell_q12919_gymers_throw : public SpellScriptLoader +class spell_q12919_gymers_throw : public SpellScript { -public: - spell_q12919_gymers_throw() : SpellScriptLoader("spell_q12919_gymers_throw") { } + PrepareSpellScript(spell_q12919_gymers_throw); - class spell_q12919_gymers_throw_SpellScript : public SpellScript + void HandleScript(SpellEffIndex /*effIndex*/) { - PrepareSpellScript(spell_q12919_gymers_throw_SpellScript); + Unit* caster = GetCaster(); + if (caster->IsVehicle()) + if (Unit* passenger = caster->GetVehicleKit()->GetPassenger(1)) + { + passenger->ExitVehicle(); + caster->CastSpell(passenger, SPELL_VARGUL_EXPLOSION, true); + } + } - void HandleScript(SpellEffIndex /*effIndex*/) - { - Unit* caster = GetCaster(); - if (caster->IsVehicle()) - if (Unit* passenger = caster->GetVehicleKit()->GetPassenger(1)) - { - passenger->ExitVehicle(); - caster->CastSpell(passenger, SPELL_VARGUL_EXPLOSION, true); - } - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_q12919_gymers_throw_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); - } - }; - - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_q12919_gymers_throw_SpellScript(); + OnEffectHitTarget += SpellEffectFn(spell_q12919_gymers_throw::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); } }; #define QUEST_CROW_TRANSFORM 9718 // spell 38776 -class spell_q9718_crow_transform : public SpellScriptLoader -{ -public: - spell_q9718_crow_transform() : SpellScriptLoader("spell_q9718_crow_transform") { } - - class spell_q9718_crow_transform_AuraScript : public AuraScript + class spell_q9718_crow_transform : public AuraScript { - PrepareAuraScript(spell_q9718_crow_transform_AuraScript) + PrepareAuraScript(spell_q9718_crow_transform) void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { @@ -3067,122 +2348,102 @@ public: void Register() override { - OnEffectRemove += AuraEffectRemoveFn(spell_q9718_crow_transform_AuraScript::HandleEffectRemove, EFFECT_0, SPELL_AURA_TRANSFORM, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK); + OnEffectRemove += AuraEffectRemoveFn(spell_q9718_crow_transform::HandleEffectRemove, EFFECT_0, SPELL_AURA_TRANSFORM, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK); } }; - AuraScript* GetAuraScript() const override - { - return new spell_q9718_crow_transform_AuraScript(); - } -}; - enum QuestShyRotam { NPC_SHY_ROTAM = 10737, }; // 16796 - Summon Shy-Rotam -class spell_q5056_summon_shy_rotam : public SpellScriptLoader +class spell_q5056_summon_shy_rotam : public SpellScript { -public: - spell_q5056_summon_shy_rotam() : SpellScriptLoader("spell_q5056_summon_shy_rotam") {} + PrepareSpellScript(spell_q5056_summon_shy_rotam); - class spell_q5056_summon_shy_rotam_SpellScript : public SpellScript + void HandleFinish() { - PrepareSpellScript(spell_q5056_summon_shy_rotam_SpellScript); - - void HandleFinish() + Position shyRotamSpawnPosition = Position(8072.38f, -3833.81f, 690.03f, 4.56f); + if (Creature* summon = GetCaster()->SummonCreature(NPC_SHY_ROTAM, shyRotamSpawnPosition, TEMPSUMMON_TIMED_DESPAWN, 15 * MINUTE * IN_MILLISECONDS)) { - Position shyRotamSpawnPosition = Position(8072.38f, -3833.81f, 690.03f, 4.56f); - if (Creature* summon = GetCaster()->SummonCreature(NPC_SHY_ROTAM, shyRotamSpawnPosition, TEMPSUMMON_TIMED_DESPAWN, 15 * MINUTE * IN_MILLISECONDS)) - { - summon->AI()->AttackStart(GetCaster()); - } + summon->AI()->AttackStart(GetCaster()); } + } - void Register() override - { - AfterCast += SpellCastFn(spell_q5056_summon_shy_rotam_SpellScript::HandleFinish); - } - }; - - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_q5056_summon_shy_rotam_SpellScript(); - }; + AfterCast += SpellCastFn(spell_q5056_summon_shy_rotam::HandleFinish); + } }; void AddSC_quest_spell_scripts() { - // Ours - new spell_q11065_wrangle_some_aether_rays(); - new spell_image_of_drakuru_reagent_check(); - new spell_q12014_steady_as_a_rock(); - new spell_q11026_a11051_banish_the_demons(); - new spell_q10525_vision_guide(); - new spell_q11322_q11317_the_cleansing(); - new spell_q10714_on_spirits_wings(); - new spell_q10720_the_smallest_creature(); - new spell_q13086_last_line_of_defence(); - new spell_q12943_shadow_vault_decree(); - new spell_q10769_dissension_amongst_the_ranks(); - new spell_q11520_discovering_your_roots(); - new spell_quest_dragonmaw_race_generic(); - new spell_q11670_it_was_the_orcs_honest(); - new spell_quest_test_flight_charging(); - new spell_q12274_a_fall_from_grace_costume(); - new spell_q13369_fate_up_against_your_will(); - new spell_q11198_take_down_tethyr(); - new spell_q11653_youre_not_so_big_now(); - new spell_q10985_light_of_the_naaru(); - new spell_q9718_crow_transform(); - - // Theirs + RegisterSpellAndAuraScriptPair(spell_q11065_wrangle_some_aether_rays, spell_q11065_wrangle_some_aether_rays_aura); + RegisterSpellScript(spell_image_of_drakuru_reagent_check); + RegisterSpellScript(spell_q12014_steady_as_a_rock); + RegisterSpellAndAuraScriptPair(spell_q11026_a11051_banish_the_demons, spell_q11026_a11051_banish_the_demons_aura); + RegisterSpellScript(spell_q10525_vision_guide); + RegisterSpellScript(spell_q11322_q11317_the_cleansing); + RegisterSpellScript(spell_q10714_on_spirits_wings); + RegisterSpellScript(spell_q10720_the_smallest_creature); + RegisterSpellScript(spell_q13086_last_line_of_defence); + RegisterSpellScript(spell_q12943_shadow_vault_decree); + RegisterSpellAndAuraScriptPair(spell_q10769_dissension_amongst_the_ranks, spell_q10769_dissension_amongst_the_ranks_aura); + RegisterSpellScript(spell_q11520_discovering_your_roots); + RegisterSpellScript(spell_quest_dragonmaw_race_generic); + RegisterSpellScript(spell_q11670_it_was_the_orcs_honest); + RegisterSpellScript(spell_quest_test_flight_charging); + RegisterSpellScript(spell_q12274_a_fall_from_grace_costume); + RegisterSpellScript(spell_q13369_fate_up_against_your_will); + RegisterSpellScript(spell_q11198_take_down_tethyr); + RegisterSpellScript(spell_q11653_youre_not_so_big_now); + RegisterSpellScript(spell_q10985_light_of_the_naaru); + RegisterSpellScript(spell_q9718_crow_transform); new spell_q55_sacred_cleansing(); - new spell_q2203_thaumaturgy_channel(); - new spell_q5206_test_fetid_skull(); - new spell_q6124_6129_apply_salve(); - new spell_q11396_11399_force_shield_arcane_purple_x3(); - new spell_q11396_11399_scourging_crystal_controller(); - new spell_q11396_11399_scourging_crystal_controller_dummy(); + RegisterSpellScript(spell_q2203_thaumaturgy_channel); + RegisterSpellScript(spell_q5206_test_fetid_skull); + RegisterSpellScript(spell_q6124_6129_apply_salve); + RegisterSpellScript(spell_q11396_11399_force_shield_arcane_purple_x3); + RegisterSpellScript(spell_q11396_11399_scourging_crystal_controller); + RegisterSpellScript(spell_q11396_11399_scourging_crystal_controller_dummy); new spell_q11515_fel_siphon_dummy(); - new spell_q11587_arcane_prisoner_rescue(); - new spell_q11730_ultrasonic_screwdriver(); - new spell_q12459_seeds_of_natures_wrath(); - new spell_q12634_despawn_fruit_tosser(); - new spell_q12683_take_sputum_sample(); - new spell_q12851_going_bearback(); - new spell_q12937_relief_for_the_fallen(); - new spell_q10041_q10040_who_are_they(); - new spell_symbol_of_life_dummy(); - new spell_q12659_ahunaes_knife(); - new spell_q9874_liquid_fire(); - new spell_q12805_lifeblood_dummy(); - new spell_q13280_13283_plant_battle_standard(); - new spell_q14112_14145_chum_the_water(); - new spell_q9452_cast_net(); - new spell_q12987_read_pronouncement(); - new spell_q12277_wintergarde_mine_explosion(); - new spell_q12066_bunny_kill_credit(); - new spell_q12735_song_of_cleansing(); - new spell_q11010_q11102_q11023_aggro_check_aura(); - new spell_q11010_q11102_q11023_aggro_check(); - new spell_q11010_q11102_q11023_aggro_burst(); - new spell_q11010_q11102_q11023_choose_loc(); - new spell_q11010_q11102_q11023_q11008_check_fly_mount(); - new spell_q12661_q12669_q12676_q12677_q12713_summon_stefan(); - new spell_q12730_quenching_mist(); - new spell_q13291_q13292_q13239_q13261_frostbrood_skytalon_grab_decoy(); - new spell_q13291_q13292_q13239_q13261_armored_decoy_summon_skytalon(); - new spell_q13011_bear_flank_master(); - new spell_q12690_burst_at_the_seams(); - new spell_q12308_escape_from_silverbrook_summon_worgen(); - new spell_q12308_escape_from_silverbrook(); - new spell_q12641_death_comes_from_on_high(); - new spell_q12619_emblazon_runeblade(); - new spell_q12619_emblazon_runeblade_effect(); - new spell_q12919_gymers_grab(); - new spell_q12919_gymers_throw(); - new spell_q5056_summon_shy_rotam(); + RegisterSpellScript(spell_q11587_arcane_prisoner_rescue); + RegisterSpellScript(spell_q11730_ultrasonic_screwdriver); + RegisterSpellScript(spell_q12459_seeds_of_natures_wrath); + RegisterSpellScript(spell_q12634_despawn_fruit_tosser); + RegisterSpellScript(spell_q12683_take_sputum_sample); + RegisterSpellScript(spell_q12851_going_bearback); + RegisterSpellScript(spell_q12937_relief_for_the_fallen); + RegisterSpellScript(spell_q10041_q10040_who_are_they); + RegisterSpellScript(spell_symbol_of_life_dummy); + RegisterSpellScript(spell_q12659_ahunaes_knife); + RegisterSpellScript(spell_q9874_liquid_fire); + RegisterSpellScript(spell_q12805_lifeblood_dummy); + RegisterSpellScript(spell_q13280_13283_plant_battle_standard); + RegisterSpellScript(spell_q14112_14145_chum_the_water); + RegisterSpellScript(spell_q9452_cast_net); + RegisterSpellScript(spell_q12987_read_pronouncement); + RegisterSpellScript(spell_q12277_wintergarde_mine_explosion); + RegisterSpellScript(spell_q12066_bunny_kill_credit); + RegisterSpellScript(spell_q12735_song_of_cleansing); + RegisterSpellScript(spell_q11010_q11102_q11023_aggro_check_aura); + RegisterSpellScript(spell_q11010_q11102_q11023_aggro_check); + RegisterSpellScript(spell_q11010_q11102_q11023_aggro_burst); + RegisterSpellScript(spell_q11010_q11102_q11023_choose_loc); + RegisterSpellScript(spell_q11010_q11102_q11023_q11008_check_fly_mount); + RegisterSpellScript(spell_q12661_q12669_q12676_q12677_q12713_summon_stefan); + RegisterSpellScript(spell_q12730_quenching_mist); + RegisterSpellScript(spell_q13291_q13292_q13239_q13261_frostbrood_skytalon_grab_decoy); + RegisterSpellScript(spell_q13291_q13292_q13239_q13261_armored_decoy_summon_skytalon); + RegisterSpellScript(spell_q13011_bear_flank_master); + RegisterSpellScript(spell_q12690_burst_at_the_seams); + RegisterSpellScript(spell_q12308_escape_from_silverbrook_summon_worgen); + RegisterSpellScript(spell_q12308_escape_from_silverbrook); + RegisterSpellScript(spell_q12641_death_comes_from_on_high); + RegisterSpellScript(spell_q12619_emblazon_runeblade); + RegisterSpellScript(spell_q12619_emblazon_runeblade_effect); + RegisterSpellScript(spell_q12919_gymers_grab); + RegisterSpellScript(spell_q12919_gymers_throw); + RegisterSpellScript(spell_q5056_summon_shy_rotam); }