From 216d569e20eb5d8ad10209800d206d7d5373236d Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Wed, 14 Sep 2022 07:00:34 +0200 Subject: [PATCH] fix(Scripts/TempleOfAhnQiraj): Vekniss Stinger. (#12963) --- .../rev_1662284664882992400.sql | 2 + .../TempleOfAhnQiraj/temple_of_ahnqiraj.cpp | 64 ++++++++++++++++++- 2 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1662284664882992400.sql diff --git a/data/sql/updates/pending_db_world/rev_1662284664882992400.sql b/data/sql/updates/pending_db_world/rev_1662284664882992400.sql new file mode 100644 index 000000000..d6fd44b1a --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1662284664882992400.sql @@ -0,0 +1,2 @@ +-- +UPDATE `creature_template` SET `ScriptName`='npc_vekniss_stinger' WHERE `entry`=15235; diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.cpp index c11802783..e604bd9de 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.cpp @@ -25,16 +25,15 @@ enum Spells { + // Anubisath Defender SPELL_SHADOW_FROST_REFLECT = 19595, SPELL_FIRE_ARCANE_REFLECT = 13022, SPELL_METEOR = 26558, SPELL_PLAGUE = 26556, SPELL_SHADOW_STORM = 26555, SPELL_THUNDERCLAP = 26554, - SPELL_ENRAGE = 14204, SPELL_EXPLODE = 25699, - SPELL_SUMMON_WARRIOR = 17431, SPELL_SUMMON_SWARMGUARD = 17430, @@ -50,7 +49,12 @@ enum Spells SPELL_DRAIN_MANA = 25671, SPELL_DRAIN_MANA_VISUAL = 26639, - TALK_ENRAGE = 0 + TALK_ENRAGE = 0, + + // Vekniss Stinger + SPELL_VEKNISS_CATALYST = 26078, + SPELL_STINGER_CHARGE_NORMAL = 26081, + SPELL_STINGER_CHARGE_BUFFED = 26082, }; struct npc_anubisath_defender : public ScriptedAI @@ -163,6 +167,59 @@ private: bool _enraged; }; +struct npc_vekniss_stinger : public ScriptedAI +{ + npc_vekniss_stinger(Creature* creature) : ScriptedAI(creature) + { + } + + void Reset() override + { + _scheduler.CancelAll(); + } + + void EnterCombat(Unit* who) override + { + DoCast(who ,who->HasAura(SPELL_VEKNISS_CATALYST) ? SPELL_STINGER_CHARGE_BUFFED : SPELL_STINGER_CHARGE_NORMAL, true); + + _scheduler.Schedule(6s, [this](TaskContext context) + { + Unit* target = SelectTarget(SelectTargetMethod::Random, 0, [&](Unit* u) + { + return u && !u->IsPet() && u->IsWithinDist2d(me, 20.f) && u->HasAura(SPELL_VEKNISS_CATALYST); + }); + if (!target) + { + target = SelectTarget(SelectTargetMethod::Random, 0, [&](Unit* u) + { + return u && !u->IsPet() && u->IsWithinDist2d(me, 20.f); + }); + } + + if (target) + { + DoCast(target, target->HasAura(SPELL_VEKNISS_CATALYST) ? SPELL_STINGER_CHARGE_BUFFED : SPELL_STINGER_CHARGE_NORMAL, true); + } + + context.Repeat(6s); + }); + } + + void UpdateAI(uint32 diff) override + { + if (!UpdateVictim()) + { + return; + } + + _scheduler.Update(diff, + std::bind(&ScriptedAI::DoMeleeAttackIfReady, this)); + } + +private: + TaskScheduler _scheduler; +}; + enum NPCs { NPC_VEKNISS_DRONE = 15300 @@ -352,6 +409,7 @@ private: void AddSC_temple_of_ahnqiraj() { RegisterTempleOfAhnQirajCreatureAI(npc_anubisath_defender); + RegisterTempleOfAhnQirajCreatureAI(npc_vekniss_stinger); RegisterSpellScript(spell_aggro_drones); RegisterTempleOfAhnQirajCreatureAI(npc_obsidian_eradicator); RegisterSpellScript(spell_drain_mana);