diff options
author | Malcrom <malcromdev@gmail.com> | 2013-08-07 11:42:13 -0230 |
---|---|---|
committer | Malcrom <malcromdev@gmail.com> | 2013-08-07 11:42:13 -0230 |
commit | f4815fbf808b808854f91e4d9a91145edba28ef9 (patch) | |
tree | 8ba910341892c75d872b39c0b361d236022f520e | |
parent | f5e4fd67c3ce100507daffa042fa72ae01fa8ffc (diff) |
Scripting/Mana Tombs: Move Yor scripting from EAI to CPP.
-rw-r--r-- | sql/updates/world/2013_08_07_02_world_misc.sql | 3 | ||||
-rw-r--r-- | src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp | 54 |
2 files changed, 57 insertions, 0 deletions
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 00000000000..fd5f9893522 --- /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 6c0d653f213..1876cf68b7d 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(); } |