Guest User

Untitled

a guest
Jan 24th, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.28 KB | None | 0 0
  1. include "blackwing_descent.h"
  2. #include "ScriptPCH.h"
  3. #include"WorldPacket.h"
  4.  
  5.  
  6.  
  7. enum Spells
  8. {
  9.  
  10. _10_SPELL_LAVA_SPEW = 77690,
  11. _25_SPELL_LAVA_SPEW = 91919,
  12. H_10_SPELL_LAVA_SPEW = 91931,
  13. H_25_SPELL_LAVA_SPEW = 91932,
  14. //
  15. _10_SPELL_MAGMA_SPIT = 78068,
  16. H_10_SPELL_MAGMA_SPIT = 91927,
  17. _25_SPELL_MAGMA_SPIT = 91917,
  18. H_25_SPELL_MAGMA_SPIT = 91928,
  19. // eat tank
  20. _10_SPELL_MANGLE = 89773,
  21. H_10_SPELL_MANGLE = 94616,
  22. _25_SPELL_MANGLE = 91912,
  23. H_25_SPELL_MANGLE = 94617,
  24.  
  25. SPELL_BERSERK = 26662,
  26. SPELL_MOLTEN_TANTRUM = 78403,
  27. SPELL_PILLAR_OF_FLAME = 78006,
  28.  
  29. };
  30.  
  31. enum Event
  32. {
  33. EVENT_LAVA_SPEW, // every 30 sec to radom range DPS
  34. EVENT_MAGMA_SPIT, // cast at 3 random target every 10 sec
  35. //don't work yet
  36. EVENT_MANGLE, // eat tank
  37. EVENT_MOLTEN_TANTRUM,
  38. EVENT_PILLAR_OF_FLAME,
  39. EVENT_BERSERK,
  40.  
  41.  
  42. };
  43.  
  44. class boss_magmaw : public CreatureScript
  45. {
  46. public:
  47. boss_magmaw() : CreatureScript("magmaw") { }
  48.  
  49. CreatureAI* GetAI(Creature* pCreature) const
  50. {
  51. return new boss_magmawAI (pCreature);
  52. }
  53.  
  54. struct boss_magmawAI : public BossAI
  55. {
  56. boss_magmawAI(Creature* pCreature) : BossAI(pCreature, 41570)
  57. {
  58. pInstance = pCreature->GetInstanceScript();
  59. }
  60.  
  61. InstanceScript* pInstance;
  62. EventMap events;
  63. uint32 bsk;
  64. bool bsk_flag;
  65. bool check_in;
  66.  
  67. void Reset()
  68. {
  69. bsk = 20*IN_MILLISECONDS; // 20 min Berserk Timer
  70. events.Reset();
  71. if (pInstance && (pInstance->GetData(DATA_MAGMAW) != DONE && !check_in))
  72. pInstance->SetData(DATA_MAGMAW, NOT_STARTED);
  73.  
  74. bsk_flag = false;
  75. check_in = false;
  76. }
  77.  
  78. void EnterCombat(Unit* /*Ent*/)
  79. {
  80. DoZoneInCombat();
  81. events.RescheduleEvent(EVENT_LAVA_SPEW, 30*IN_MILLISECONDS);
  82. events.RescheduleEvent(EVENT_BERSERK, 20*MINUTE);
  83. if (pInstance)
  84. pInstance->SetData(DATA_MAGMAW, IN_PROGRESS);
  85. }
  86.  
  87. void JustDied(Unit* /*Kill*/)
  88. {
  89. if (pInstance)
  90. {
  91. pInstance->SetData(DATA_MAGMAW, DONE);
  92. int32 income = Is25ManRaid() ? 10500 : 7500;
  93. pInstance->DoUpdateCurrency(CURRENCY_TYPE_VALOR_POINTS, income);
  94. }
  95. }
  96.  
  97. void UpdateAI(const uint32 uiDiff)
  98. {
  99. if (!UpdateVictim())
  100. return;
  101. events.Update(uiDiff);
  102. while (uint32 eventId = events.ExecuteEvent())
  103. {
  104. switch(eventId)
  105. {
  106. case EVENT_LAVA_SPEW:
  107. if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
  108. DoCast(pTarget, RAID_MODE(_10_SPELL_LAVA_SPEW, _25_SPELL_LAVA_SPEW,H_10_SPELL_LAVA_SPEW,
  109. _25_SPELL_LAVA_SPEW));
  110. events.ScheduleEvent(EVENT_LAVA_SPEW, 30*IN_MILLISECONDS);
  111. break;
  112. case EVENT_MAGMA_SPIT
  113. {
  114. RAID_MODE
  115. }
  116. break;
  117.  
  118. case EVENT_BERSERK:
  119. if (!bsk_flag && bsk <= uiDiff)
  120. {
  121. DoCast(me, SPELL_BERSERK);
  122. bsk_flag = true;
  123. events.ScheduleEvent(EVENT_BERSERK, 20*MINUTE);
  124. }
  125. else
  126. bsk -= uiDiff;
  127. break;
  128.  
  129.  
  130.  
  131. }
  132. }
  133. DoMeleeAttackIfReady();
  134. };
  135.  
  136. };
  137.  
  138. };
  139.  
  140. void AddSC_boss_magmaw()
  141. {
  142. new boss_magmaw();
  143. }
Add Comment
Please, Sign In to add comment