Advertisement
Bwl-Network

custom boss

Feb 9th, 2014
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.88 KB | None | 0 0
  1. /*
  2. -----------------------------------------------------|
  3.                   Script Data:                       |
  4.                                                      |
  5.         Scripted By YouarexD                         |
  6.                                                      |
  7.         SDComplete : 00%                             |
  8.                                                      |
  9.     Released on EmuDevs.com                          |
  10.                                                      |
  11. -----------------------------------------------------|                                                   |
  12. */
  13.  
  14. enum Spells
  15. {
  16.     SPELL_COUNTDOWN         = 99516,        // Phase One
  17.     SPELL_MAGMA_RIFT        = 99840,        // Phase One
  18.     SPELL_TOXIN_RAIN        = 99333,        // Phase One
  19.     SPELL_HAND_OF_RAGNAROS  = 98237,        // Phase One
  20.     SPELL_MAGMA_BEAT        = 98313,        // Phase One
  21.     SPELL_BURNING_WOUND     = 99399,        // Phase One
  22.     SPELL_BLADE_DANCE       = 105784,       // Phase Two
  23.     SPELL_LIGHTNING_BOMB    = 109541,       // Phase Two
  24.     SPELL_FEEDBACK          = 108934,       // Phase Two
  25.     SPELL_SHOCKWAVE         = 108046,       // Phase Two
  26.     SPELL_MENTAL_WITHRAWAL  = 104322,       // Phase Two
  27.     SPELL_FINGER_OF_DEATH   = 31984,        // Phase Three
  28. };
  29.      
  30. enum Events
  31. {
  32.     EVENT_NONE,
  33.     EVENT_COUNTDOWN,
  34.     EVENT_MAGMA_RIFT,
  35.     EVENT_TOXIN_RAIN,
  36.     EVENT_HAND_OF_RAGNAROS,
  37.     EVENT_MAGMA_BEAT,
  38.     EVENT_BURNING_WOUND,
  39.     EVENT_BLADE_DANCE,
  40.     EVENT_LIGHTNING_BOMB,
  41.     EVENT_FEEDBACK,
  42.     EVENT_SHOCKWAVE,
  43.     EVENT_MENTAL_WITHRAWAL,
  44.     EVENT_FINGER_OF_DEATH,
  45.     EVENT_SPAWN_CREATURE,
  46.     EVENT_CHECK
  47. };
  48.      
  49. class boss_Todesschwinge : public CreatureScript
  50. {
  51. public:
  52.     boss_Todesschwinge() : CreatureScript("boss_Todesschwinge") { }
  53.      
  54.     struct boss_TodesschwingeAI : public ScriptedAI
  55.     {
  56.         boss_TodesschwingeAI(Creature* creature) : ScriptedAI(creature), Summons(me)
  57.         {
  58.        
  59.         }
  60.  
  61.         SummonList Summons;
  62.  
  63.         void Reset() OVERRIDE
  64.         {
  65.             events.Reset();
  66.             phase = 1;
  67.             Summons.DespawnAll();
  68.            
  69.         }
  70.  
  71.         void EnterCombat(Unit* /* who */) OVERRIDE
  72.         {
  73.             events.ScheduleEvent(EVENT_COUNTDOWN, 30000);
  74.             events.ScheduleEvent(EVENT_MAGMA_RIFT, 26000);
  75.             events.ScheduleEvent(EVENT_TOXIN_RAIN, 22000);
  76.             events.ScheduleEvent(EVENT_HAND_OF_RAGNAROS, 40000);
  77.             events.ScheduleEvent(EVENT_MAGMA_BEAT, 18000);
  78.             events.ScheduleEvent(EVENT_BURNING_WOUND, 10000);
  79.             events.ScheduleEvent(EVENT_SPAWN_CREATURE, 45000);
  80.             events.ScheduleEvent(EVENT_CHECK, 1500);
  81.             me->MonsterYell("Dies ist der Anfang vom Ende!", LANG_UNIVERSAL, NULL);
  82.             DoZoneInCombat();
  83.         }
  84.  
  85.         void JustDied(Unit* /* victim */) OVERRIDE
  86.         {
  87.             me->MonsterYell("Wie konnte das passieren? Das ist unmög....lich....", LANG_UNIVERSAL, NULL);
  88.             Summons.DespawnAll();
  89.            
  90.         }
  91.  
  92.         void JustSummoned(Creature* summoned)
  93.         {
  94.             summoned->SetInCombatWithZone();
  95.  
  96.             if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
  97.                 summoned->AI()->AttackStart(target);
  98.  
  99.             switch (summoned->GetEntry())
  100.             {
  101.                 Summons.Summon(summoned);
  102.             }
  103.         }
  104.  
  105.         void SummonedCreatureDespawn(Creature* summon)
  106.         {
  107.             Summons.Despawn(summon);
  108.         }
  109.  
  110.         void UpdateAI(uint32 diff) OVERRIDE
  111.         {
  112.             if (!UpdateVictim())
  113.                 return;
  114.  
  115.             events.Update(diff);
  116.  
  117.             while (uint32 eventId = events.ExecuteEvent())
  118.             {
  119.                 switch (eventId)
  120.                 {
  121.                     case EVENT_CHECK:
  122.                         if (phase == 1 && me->GetHealthPct() <= 60)
  123.                         {
  124.                             me->MonsterYell("Ich werde gegen Euch nicht verlieren!", LANG_UNIVERSAL, NULL);
  125.                             events.Reset();
  126.                             events.ScheduleEvent(EVENT_BLADE_DANCE, 45000);
  127.                             events.ScheduleEvent(EVENT_LIGHTNING_BOMB, 20000);
  128.                             events.ScheduleEvent(EVENT_FEEDBACK, 75000);
  129.                             events.ScheduleEvent(EVENT_SHOCKWAVE, 36000);
  130.                             events.ScheduleEvent(EVENT_MENTAL_WITHRAWAL, 16000);
  131.                             phase = 2;
  132.                         }
  133.      
  134.                         if (phase == 2 && me->GetHealthPct() <= 15)
  135.                         {
  136.                             me->MonsterYell("Es reicht mir!", LANG_UNIVERSAL, NULL);
  137.                             events.Reset();
  138.                             events.ScheduleEvent(EVENT_FINGER_OF_DEATH, 1800);
  139.                             events.ScheduleEvent(EVENT_BURNING_WOUND, 10000);
  140.                             events.ScheduleEvent(EVENT_SPAWN_CREATURE, 45000);
  141.                             phase = 3;
  142.                         }
  143.                         events.ScheduleEvent(EVENT_CHECK, 1500);
  144.                         break;
  145.                     case EVENT_COUNTDOWN:
  146.                         if (Unit *target = SelectTarget(SELECT_TARGET_RANDOM, 0))
  147.                             DoCast(target, SPELL_COUNTDOWN);
  148.                         events.ScheduleEvent(EVENT_COUNTDOWN, 30000);
  149.                         break;
  150.                     case EVENT_MAGMA_RIFT:
  151.                         if (Unit *target = SelectTarget(SELECT_TARGET_RANDOM, 0))
  152.                             DoCast(target, SPELL_MAGMA_RIFT);
  153.                         events.ScheduleEvent(EVENT_MAGMA_RIFT, 26000);
  154.                         break;
  155.                     case EVENT_TOXIN_RAIN:
  156.                         DoCastVictim(SPELL_TOXIN_RAIN);
  157.                         events.ScheduleEvent(EVENT_TOXIN_RAIN, 22000);
  158.                         break;
  159.                     case EVENT_HAND_OF_RAGNAROS:
  160.                         if (Unit *target = SelectTarget(SELECT_TARGET_RANDOM, 0))
  161.                             DoCast(target, SPELL_HAND_OF_RAGNAROS);
  162.                         me->MonsterYell("Spührt meine MACHT!", LANG_UNIVERSAL, NULL);
  163.                         events.ScheduleEvent(EVENT_HAND_OF_RAGNAROS, 40000);
  164.                         break;
  165.                     case EVENT_MAGMA_BEAT:
  166.                         DoCastVictim(SPELL_MAGMA_BEAT);
  167.                         events.ScheduleEvent(EVENT_MAGMA_BEAT, 18000);
  168.                         break;
  169.                     case EVENT_BLADE_DANCE:
  170.                         if (Unit *target = SelectTarget(SELECT_TARGET_RANDOM, 0))
  171.                             DoCast(target, SPELL_BLADE_DANCE);
  172.                         me->MonsterYell("Stribt!", LANG_UNIVERSAL, NULL);
  173.                         events.ScheduleEvent(EVENT_BLADE_DANCE, 45000);
  174.                         break;
  175.                     case EVENT_LIGHTNING_BOMB:
  176.                         if (Unit *target = SelectTarget(SELECT_TARGET_RANDOM, 0))
  177.                             DoCast(target, SPELL_LIGHTNING_BOMB);
  178.                         events.ScheduleEvent(EVENT_LIGHTNING_BOMB, 20000);
  179.                         break;
  180.                     case EVENT_FEEDBACK:
  181.                         DoCast(me, SPELL_FEEDBACK);
  182.                         events.ScheduleEvent(EVENT_FEEDBACK, 75000);
  183.                         break;
  184.                     case EVENT_SHOCKWAVE:
  185.                         if (Unit *target = SelectTarget(SELECT_TARGET_RANDOM, 0))
  186.                             DoCast(target, SPELL_SHOCKWAVE);
  187.                         me->MonsterYell("Schweigt!", LANG_UNIVERSAL, NULL);
  188.                         events.ScheduleEvent(EVENT_SHOCKWAVE, 36000);
  189.                         break;
  190.                     case EVENT_MENTAL_WITHRAWAL:
  191.                         if (Unit *target = SelectTarget(SELECT_TARGET_RANDOM, 0))
  192.                             DoCast(target, SPELL_MENTAL_WITHRAWAL);
  193.                         events.ScheduleEvent(EVENT_MENTAL_WITHRAWAL, 16000);
  194.                         break;
  195.                     case EVENT_FINGER_OF_DEATH:
  196.                         if (Unit *target = SelectTarget(SELECT_TARGET_RANDOM, 0))
  197.                             DoCast(target, SPELL_FINGER_OF_DEATH);
  198.                         events.ScheduleEvent(EVENT_FINGER_OF_DEATH, 1200);
  199.                         break;
  200.  
  201.                     case EVENT_SPAWN_CREATURE:
  202.                         me->SummonCreature(100001, -13210.62f, 260.21f, 21.85f, 1.1f, TEMPSUMMON_DEAD_DESPAWN, 8000);
  203.                         me->SummonCreature(100001, -13206.60f, 316.95f, 21.85f, 4.8f, TEMPSUMMON_DEAD_DESPAWN, 8000);
  204.                         me->SummonCreature(100001, -13167.76f, 297.79f, 21.85f, 3.6f, TEMPSUMMON_DEAD_DESPAWN, 8000);
  205.                         me->SummonCreature(100001, -13167.98f, 248.54f, 21.85f, 2.3f, TEMPSUMMON_DEAD_DESPAWN, 8000);
  206.                         me->SummonCreature(100001, -13246.93f, 289.71f, 21.85f, 6.0f, TEMPSUMMON_DEAD_DESPAWN, 8000);
  207.                         events.ScheduleEvent(EVENT_SPAWN_CREATURE, 45000);
  208.                         break;
  209.  
  210.                     case EVENT_BURNING_WOUND:
  211.                         DoCastVictim(SPELL_BURNING_WOUND);
  212.                         events.ScheduleEvent(EVENT_BURNING_WOUND, 10000);
  213.                         me->MonsterYell("Verbrennt!", LANG_UNIVERSAL, NULL);
  214.                         break;
  215.                 }
  216.             }
  217.             DoMeleeAttackIfReady();
  218.         }
  219.         private:
  220.             EventMap events;
  221.             uint8 phase;
  222.     };
  223.      
  224.     CreatureAI* GetAI(Creature* creature) const OVERRIDE
  225.     {
  226.         return new boss_TodesschwingeAI(creature);
  227.     }
  228. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement