From f4815fbf808b808854f91e4d9a91145edba28ef9 Mon Sep 17 00:00:00 2001 From: Malcrom Date: Wed, 7 Aug 2013 11:42:13 -0230 Subject: [PATCH] Scripting/Mana Tombs: Move Yor scripting from EAI to CPP. --- .../world/2013_08_07_02_world_misc.sql | 3 ++ .../ManaTombs/boss_nexusprince_shaffar.cpp | 54 +++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 sql/updates/world/2013_08_07_02_world_misc.sql diff --git a/sql/updates/world/2013_08_07_02_world_misc.sql b/sql/updates/world/2013_08_07_02_world_misc.sql new file mode 100644 index 0000000000..fd5f989352 --- /dev/null +++ b/sql/updates/world/2013_08_07_02_world_misc.sql @@ -0,0 +1,3 @@ +-- Move Yor from EAI to CPP +UPDATE `creature_template` SET `AIName`= '', `ScriptName`= 'npc_yor' WHERE `entry`=22930; +DELETE FROM creature_ai_scripts WHERE `creature_id`=22930; diff --git a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp index 6c0d653f21..1876cf68b7 100644 --- a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp +++ b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp @@ -365,9 +365,63 @@ public: }; +enum Yor +{ + SPELL_DOUBLE_BREATH = 38361, + EVENT_DOUBLE_BREATH = 1 +}; + +class npc_yor : public CreatureScript +{ +public: + npc_yor() : CreatureScript("npc_yor") { } + + struct npc_yorAI : public ScriptedAI + { + npc_yorAI(Creature* creature) : ScriptedAI(creature) {} + + void Reset() OVERRIDE {} + + void EnterCombat(Unit* /*who*/) OVERRIDE + { + events.ScheduleEvent(EVENT_DOUBLE_BREATH, urand(6000,9000)); + } + + void UpdateAI(uint32 diff) OVERRIDE + { + if (!UpdateVictim()) + return; + + while (uint32 eventId = events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_DOUBLE_BREATH: + if (me->IsWithinDist(me->GetVictim(), ATTACK_DISTANCE)) + DoCastVictim(SPELL_DOUBLE_BREATH); + events.ScheduleEvent(EVENT_DOUBLE_BREATH, urand(6000,9000)); + break; + default: + break; + } + } + DoMeleeAttackIfReady(); + } + + private: + EventMap events; + }; + + CreatureAI* GetAI(Creature* creature) const OVERRIDE + { + return new npc_yorAI(creature); + } +}; + void AddSC_boss_nexusprince_shaffar() { new boss_nexusprince_shaffar(); new npc_ethereal_beacon(); new npc_ethereal_apprentice(); + new npc_yor(); }