Advertisement
Easelm

Untitled

May 6th, 2012
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.91 KB | None | 0 0
  1. #include "ScriptPCH.h"
  2. #include "ScriptedCreature.h"
  3.      
  4. enum Events
  5. {
  6.     EVENT_1,
  7.     EVENT_2,
  8.     EVENT_3,
  9.     EVENT_4,
  10.     EVENT_5,
  11. };
  12.      
  13. class boss_script : public CreatureScript
  14. {
  15. public:
  16.     boss_script() : CreatureScript("boss_script") { }
  17.      
  18.     struct boss_scriptAI : public ScriptedAI
  19.     {
  20.         boss_scriptAI(Creature* creature) : ScriptedAI(creature) {}
  21.      
  22.         EventMap events;
  23.      
  24.         void Reset()
  25.         {
  26.             events.Reset();
  27.         }
  28.      
  29.         void EnterCombat(Unit* /*who*/)
  30.         {
  31.             events.ScheduleEvent(EVENT_1, 5000);
  32.             events.ScheduleEvent(EVENT_2, 20000);
  33.             //events.ScheduleEvent(EVENT_3, 22000);
  34.             events.ScheduleEvent(EVENT_4, 60000);
  35.             events.ScheduleEvent(EVENT_5, 10000);
  36.             me->MonsterYell("You mortals think you can challenge ME?", LANG_UNIVERSAL, 0);
  37.         }
  38.      
  39.         void KilledUnit(Unit* /*Killed*/)
  40.         {
  41.             me->MonsterYell("I WILL COLLECT YOUR SOUL NEXT!", LANG_UNIVERSAL, 0);
  42.         }
  43.      
  44.         void UpdateAI(uint32 const diff)
  45.         {
  46.             if (!UpdateVictim())
  47.                 return;
  48.      
  49.             events.Update(diff);
  50.      
  51.             while(uint32 eventId = events.ExecuteEvent())
  52.             {
  53.                 switch (eventId)
  54.                 {
  55.                     case EVENT_1:
  56.                         if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, true))
  57.                             DoCast(target, 43582);
  58.                         events.ScheduleEvent(EVENT_1, 5000);
  59.                         break;
  60.                     case EVENT_2:
  61.                         if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, true))
  62.                             DoCast(target, 19813);
  63.                         events.ScheduleEvent(EVENT_3, 2000);
  64.                         break;
  65.                     case EVENT_3:
  66.                         if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, true))
  67.                             DoCast(target, 30638);
  68.                         break;
  69.                     case EVENT_4:
  70.                         DoCast(me, 16421);
  71.                         break;
  72.                     case EVENT_5:
  73.                         if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, true))
  74.                             DoCast(target, 11);
  75.                         events.ScheduleEvent(EVENT_5, 35000);
  76.                         break;
  77.                     default:
  78.                         break;
  79.                 }
  80.             }
  81.             DoMeleeAttackIfReady();
  82.         }
  83.  
  84.         void JustDied(Unit* /*who*/)
  85.         {
  86.             me->MonsterYell("THIS IS NOT THAT LAST YOU WILL SEE IF ME!", LANG_UNIVERSAL, 0);
  87.         }
  88.     };
  89.  
  90.     CreatureAI* GetAI(Creature* creature) const
  91.     {
  92.         return new boss_scriptAI(creature);
  93.     }
  94. };
  95.      
  96. void AddSC_boss_script()
  97. {
  98.     new boss_script;
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement