From 0fb2c5efebddcbba29349e823e7d070649573305 Mon Sep 17 00:00:00 2001 From: Jelle Meeus Date: Fri, 30 Aug 2024 21:20:52 +0200 Subject: [PATCH] fix(Scripts/TheEye): Kaelthas remove enchanted weapons (#19801) * remove weapons Co-authored-by: killerwife * style for consistency * also cast on KT JustDied * fix TriggerCastFlags to not ignore reagent cost * Apply suggestions from code review --------- Co-authored-by: killerwife --- .../rev_1725040501028883764.sql | 3 ++ .../Outland/TempestKeep/Eye/boss_kaelthas.cpp | 34 ++++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 data/sql/updates/pending_db_world/rev_1725040501028883764.sql diff --git a/data/sql/updates/pending_db_world/rev_1725040501028883764.sql b/data/sql/updates/pending_db_world/rev_1725040501028883764.sql new file mode 100644 index 000000000..47b3756ef --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1725040501028883764.sql @@ -0,0 +1,3 @@ +-- +DELETE FROM `spell_script_names` WHERE `spell_id`=39497; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES(39497, 'spell_kaelthas_remove_enchanted_weapons'); diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp index 017e52d64..825b21ed0 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp @@ -115,6 +115,7 @@ enum KTSpells SPELL_NETHER_BEAM_DAMAGE = 35873, SPELL_REMOTE_TOY_STUN = 37029, + SPELL_REMOVE_ENCHANTED_WEAPONS = 39497, // Advisors // Universal @@ -306,6 +307,7 @@ struct boss_kaelthas : public BossAI me->SetInCombatWithZone(); me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_DISABLE_MOVE); Talk(SAY_INTRO); + DoCastAOE(SPELL_REMOVE_ENCHANTED_WEAPONS, true); ScheduleUniqueTimedEvent(23s, [&] { Talk(SAY_INTRO_THALADRED); @@ -762,7 +764,11 @@ struct boss_kaelthas : public BossAI { return me->GetHomePosition().GetExactDist2d(me) > 165.0f || !SelectTargetFromPlayerList(165.0f); } - + void JustDied(Unit* killer) override + { + BossAI::JustDied(killer); + DoCastAOE(SPELL_REMOVE_ENCHANTED_WEAPONS, true); + } private: uint32 _phase; bool _transitionSceneReached = false; @@ -1323,6 +1329,31 @@ class spell_kael_pyroblast : public SpellScript } }; +class spell_kaelthas_remove_enchanted_weapons : public SpellScript +{ + PrepareSpellScript(spell_kaelthas_remove_enchanted_weapons); + + void HandleScriptEffect(SpellEffIndex /*effIndex*/) + { + Unit* target = GetHitUnit(); + if (!target || !target->IsPlayer()) + return; + TriggerCastFlags triggerFlags = TriggerCastFlags(TRIGGERED_FULL_MASK & ~TRIGGERED_IGNORE_POWER_AND_REAGENT_COST); + target->CastSpell((Unit*)nullptr, 39498, triggerFlags); + target->CastSpell((Unit*)nullptr, 39499, triggerFlags); + target->CastSpell((Unit*)nullptr, 39500, triggerFlags); + target->CastSpell((Unit*)nullptr, 39501, triggerFlags); + target->CastSpell((Unit*)nullptr, 39502, triggerFlags); + target->CastSpell((Unit*)nullptr, 39503, triggerFlags); + target->CastSpell((Unit*)nullptr, 39504, triggerFlags); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_kaelthas_remove_enchanted_weapons::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + void AddSC_boss_kaelthas() { RegisterTheEyeAI(boss_kaelthas); @@ -1341,4 +1372,5 @@ void AddSC_boss_kaelthas() RegisterSpellScript(spell_kaelthas_nether_beam); RegisterSpellScript(spell_kaelthas_summon_nether_vapor); RegisterSpellScript(spell_kael_pyroblast); + RegisterSpellScript(spell_kaelthas_remove_enchanted_weapons); }