MichaelCrow

Untitled

Dec 8th, 2022
247
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.09 KB | None | 0 0
  1. #include "ScriptPCH.h"
  2.  
  3. /*
  4. * Script Name: Grim Batol
  5. * Author: Your Name
  6. * Version: 0.1
  7. */
  8.  
  9. enum Spells
  10. {
  11. // General Umbriss
  12. SPELL_GENERAL_UMBRISS_MODGUD_MALICE = 74634,
  13. SPELL_GENERAL_UMBRISS_BLITZ_PRIMING = 74670,
  14. SPELL_GENERAL_UMBRISS_FRENZY = 74699,
  15. SPELL_GENERAL_UMBRISS_GROUND_SIEGE = 74752,
  16.  
  17. // Forgemaster Throngus
  18. SPELL_FORGEMASTER_THRONGUS_CAVE_IN = 94973,
  19. SPELL_FORGEMASTER_THRONGUS_LAVA_BARRAGE = 74522,
  20. SPELL_FORGEMASTER_THRONGUS_SUPERHEATED_FLAMES = 74562,
  21.  
  22. // Drahga Shadowburner
  23. SPELL_DRAHGA_SHADOWBURNER_BURNING_SHADOWBOLT = 75245,
  24. SPELL_DRAHGA_SHADOWBURNER_INVOCATION_OF_FLAME_AURA = 74562,
  25. SPELL_DRAHGA_SHADOWBURNER_SHADOW_BREATH = 74525,
  26. SPELL_DRAHGA_SHADOWBURNER_SUPERNOVA = 74521,
  27. SPELL_DRAHGA_SHADOWBURNER_VALIONAS_FLAME_AOE = 75273
  28. };
  29.  
  30. enum Events
  31. {
  32. // General Umbriss
  33. EVENT_GENERAL_UMBRISS_MODGUD_MALICE = 1,
  34. EVENT_GENERAL_UMBRISS_BLITZ_PRIMING = 2,
  35. EVENT_GENERAL_UMBRISS_FRENZY = 3,
  36. EVENT_GENERAL_UMBRISS_GROUND_SIEGE = 4,
  37.  
  38. // Forgemaster Throngus
  39. EVENT_FORGEMASTER_THRONGUS_CAVE_IN = 5,
  40. EVENT_FORGEMASTER_THRONGUS_LAVA_BARRAGE = 6,
  41. EVENT_FORGEMASTER_THRONGUS_SUPERHEATED_FLAMES = 7,
  42.  
  43. // Drahga Shadowburner
  44. EVENT_DRAHGA_SHADOWBURNER_BURNING_SHADOWBOLT = 8,
  45. EVENT_DRAHGA_SHADOWBURNER_INVOCATION_OF_FLAME_AURA = 9,
  46. EVENT_DRAHGA_SHADOWBURNER_SHADOW_BREATH = 10,
  47. EVENT_DRAHGA_SHADOWBURNER_SUPERNOVA = 11,
  48. EVENT_DRAHGA_SHADOWBURNER_VALIONAS_FLAME_AOE = 12
  49. };
  50.  
  51. class grim_batol : public InstanceScript
  52. {
  53. public:
  54. grim_batol() : InstanceScript("grim_batol") { }
  55.  
  56. void OnCreatureCreate(Creature* creature) override
  57. {
  58. switch (creature->GetEntry())
  59. {
  60. case BOSS_GENERAL_UMBRISS:
  61. creature->SetReactState(REACT_PASSIVE);
  62. break;
  63. case BOSS_FORGEMASTER_THRONGUS:
  64. creature->SetReactState(REACT_PASSIVE);
  65. break;
  66. case BOSS_DRAHGA_SHADOWBURNER:
  67. creature->SetReactState(REACT_PASSIVE);
  68. break;
  69. }
  70. }
  71.  
  72. void OnUnitDeath(Unit* unit) override
  73. {
  74. Creature* creature = unit->ToCreature();
  75. if (!creature)
  76. return;
  77.  
  78. switch (creature->GetEntry())
  79. {
  80. case BOSS_GENERAL_UMBRISS:
  81. HandleGameObject(instance->GetData64(DATA_GENERAL_UMBRISS_DOOR), true);
  82. break;
  83. case BOSS_FORGEMASTER_THRONGUS:
  84. HandleGameObject(instance->GetData64(DATA_FORGEMASTER_THRONGUS_DOOR), true);
  85. break;
  86. case BOSS_DRAHGA_SHADOWBURNER:
  87. HandleGameObject(instance->GetData64(DATA_DRAHGA_SHADOWBURNER_DOOR), true);
  88. break;
  89. }
  90. }
  91.  
  92. void OnGameObjectCreate(GameObject* go) override
  93. {
  94. switch (go->GetEntry())
  95. {
  96. case GO_GENERAL_UMBRISS_DOOR:
  97. HandleGameObject(NULL, false, go);
  98. break;
  99. case GO_FORGEMASTER_THRONGUS_DOOR:
  100. HandleGameObject(NULL, false, go);
  101. break;
  102. case GO_DRAHGA_SHADOWBURNER_DOOR:
  103. HandleGameObject(NULL, false, go);
  104. break;
  105. }
  106. }
  107.  
  108. void SetData(uint32 type, uint32 data) override
  109. {
  110. switch (type)
  111. {
  112. case DATA_GENERAL_UMBRISS_EVENT:
  113. if (data == IN_PROGRESS)
  114. {
  115. if (Creature* generalUmbriss = instance->GetCreature(DATA_GENERAL_UMBRISS))
  116. {
  117. generalUmbriss->SetReactState(REACT_AGGRESSIVE);
  118. generalUmbriss->AI()->DoZoneInCombat(generalUmbriss);
  119. events.ScheduleEvent(EVENT_GENERAL_UMBRISS_MODGUD_MALICE, urand(5000, 8000));
  120. events.ScheduleEvent(EVENT_GENERAL_UMBRISS_BLITZ_PRIMING, urand(10000, 12000));
  121. events.ScheduleEvent(EVENT_GENERAL_UMBRISS_FRENZY, urand(15000, 20000));
  122. events.ScheduleEvent(EVENT_GENERAL_UMBRISS_GROUND_SIEGE, urand(25000, 30000));
  123. }
  124. }
  125. break;
  126. case DATA_FORGEMASTER_THRONGUS_EVENT:
  127. if (data == IN_PROGRESS)
  128. {
  129. if (Creature* forgemasterThrongus = instance->GetCreature(DATA_FORGEMASTER_THRONGUS))
  130. {
  131. forgemasterThrongus->SetReactState(REACT_AGGRESSIVE);
  132. forgemasterThrongus->AI()->DoZoneInCombat(forgemasterThrongus);
  133. events.ScheduleEvent(EVENT_FORGEMASTER_THRONGUS_CAVE_IN, urand(3000, 10000));
  134. events.ScheduleEvent(EVENT_FORGEMASTER_THRONGUS_LAVA_BARRAGE, urand(10000, 15000));
  135. events.ScheduleEvent(EVENT_FORGEMASTER_THRONGUS_SUPERHEATED_FLAMES, urand(15000, 20000));
  136. }
  137. }
  138. break;
  139. case DATA_DRAHGA_SHADOWBURNER_EVENT:
  140. if (data == IN_PROGRESS)
  141. {
  142. if (Creature* drahgaShadowburner = instance->GetCreature(DATA_DRAHGA_SHADOWBURNER))
  143. {
  144. drahgaShadowburner->SetReactState(REACT_AGGRESSIVE);
  145. drahgaShadowburner->AI()->DoZoneInCombat(drahgaShadowburner);
  146. events.ScheduleEvent(EVENT_DRAHGA_SHADOWBURNER_BURNING_SHADOWBOLT, urand(3000, 5000));
  147. events.ScheduleEvent(EVENT_DRAHGA_SHADOWBURNER_INVOCATION_OF_FLAME_AURA, urand(10000, 15000));
  148. events.ScheduleEvent(EVENT_DRAHGA_SHADOWBURNER_SHADOW_BREATH, urand(15000, 20000));
  149. events.ScheduleEvent(EVENT_DRAHGA_SHADOWBURNER_SUPERNOVA, urand(20000, 25000));
  150. events.ScheduleEvent(EVENT_DRAHGA_SHADOWBURNER_VALIONAS_FLAME_AOE, urand(25000, 30000));
  151. }
  152. }
  153. break;
  154. }
  155. }
  156.  
  157. void Update(uint32 diff) override
  158. {
  159. events.Update(diff);
  160.  
  161. while (uint32 eventId = events.ExecuteEvent())
  162. {
  163. switch (eventId)
  164. {
  165. // General Umbriss
  166. case EVENT_GENERAL_UMBRISS_MODGUD_MALICE:
  167. if (Creature* generalUmbriss = instance->GetCreature(DATA_GENERAL_UMBRISS))
  168. generalUmbriss->AI()->DoCastAOE(SPELL_GENERAL_UMBRISS_MODGUD_MALICE);
  169. events.ScheduleEvent(EVENT_GENERAL_UMBRISS_MODGUD_MALICE, urand(10000, 12000));
  170. break;
  171. case EVENT_GENERAL_UMBRISS_BLITZ_PRIMING:
  172. if (Creature* generalUmbriss = instance->GetCreature(DATA_GENERAL_UMBRISS))
  173. generalUmbriss->AI()->DoCastAOE(SPELL_GENERAL_UMBRISS_BLITZ_PRIMING);
  174. events.ScheduleEvent(EVENT_GENERAL_UMBRISS_BLITZ_PRIMING, urand(15000, 20000));
  175. break;
  176. case EVENT_GENERAL_UMBRISS_FRENZY:
  177. if (Creature* generalUmbriss = instance->GetCreature(DATA_GENERAL_UMBRISS))
  178. generalUmbriss->AI()->DoCastAOE(SPELL_GENERAL_UMBRISS_FRENZY);
  179. events.ScheduleEvent(EVENT_GENERAL_UMBRISS_FRENZY, urand(25000, 30000));
  180. break;
  181. case EVENT_GENERAL_UMBRISS_GROUND_SIEGE:
  182. if (Creature* generalUmbriss = instance->GetCreature(DATA_GENERAL_UMBRISS))
  183. generalUmbriss->AI()->DoCastAOE(SPELL_GENERAL_UMBRISS_GROUND_SIEGE);
  184. events.ScheduleEvent(EVENT_GENERAL_UMBRISS_GROUND_SIEGE, urand(35000, 40000));
  185. break;
  186. // Forgemaster Throngus
  187. case EVENT_FORGEMASTER_THRONGUS_CAVE_IN:
  188. if (Creature* forgemasterThrongus = instance->GetCreature(DATA_FORGEMASTER_THRONGUS))
  189. forgemasterThrongus->AI()->DoCastAOE(SPELL_FORGEMASTER_THRONGUS_CAVE_IN);
  190. events.ScheduleEvent(EVENT_FORGEMASTER_THRONGUS_CAVE_IN, urand(10000, 15000));
  191. break;
  192. case EVENT_FORGEMASTER_THRONGUS_LAVA_BARRAGE:
  193. if (Creature* forgemasterThrongus = instance->GetCreature(DATA_FORGEMASTER_THRONGUS))
  194. forgemasterThrongus->AI()->DoCastAOE(SPELL_FORGEMASTER_THRONGUS_LAVA_BARRAGE);
  195. events.ScheduleEvent(EVENT_FORGEMASTER_THRONGUS_LAVA_BARRAGE, urand(15000, 20000));
  196. break;
  197. case EVENT_FORGEMASTER_THRONGUS_SUPERHEATED_FLAMES:
  198. if (Creature* forgemasterThrongus = instance->GetCreature(DATA_FORGEMASTER_THRONGUS))
  199. forgemasterThrongus->AI()->DoCastAOE(SPELL_FORGEMASTER_THRONGUS_SUPERHEATED_FLAMES);
  200. events.ScheduleEvent(EVENT_FORGEMASTER_THRONGUS_SUPERHEATED_FLAMES, urand(20000, 25000));
  201. break;
  202. // Drahga Shadowburner
  203. case EVENT_DRAHGA_SHADOWBURNER_BURNING_SHADOWBOLT:
  204. if (Creature* drahgaShadowburner = instance->GetCreature(DATA_DRAHGA_SHADOWBURNER))
  205. drahgaShadowburner->AI()->DoCastAOE(SPELL_DRAHGA_SHADOWBURNER_BURNING_SHADOWBOLT);
  206. events.ScheduleEvent(EVENT_DRAHGA_SHADOWBURNER_BURNING_SHADOWBOLT, urand(8000, 10000));
  207. break;
  208. case EVENT_DRAHGA_SHADOWBURNER_INVOCATION_OF_FLAME_AURA:
  209. if (Creature* drahgaShadowburner = instance->GetCreature(DATA_DRAHGA_SHADOWBURNER))
  210. drahgaShadowburner->AI()->DoCastAOE(SPELL_DRAHGA_SHADOWBURNER_INVOCATION_OF_FLAME_AURA);
  211. events.ScheduleEvent(EVENT_DRAHGA_SHADOWBURNER_INVOCATION_OF_FLAME_AURA, urand(15000, 20000));
  212. break;
  213. case EVENT_DRAHGA_SHADOWBURNER_SHADOW_BREATH:
  214. if (Creature* drahgaShadowburner = instance->GetCreature(DATA_DRAHGA_SHADOWBURNER))
  215. drahgaShadowburner->AI()->DoCastAOE(SPELL_DRAHGA_SHADOWBURNER_SHADOW_BREATH);
  216. events.ScheduleEvent(EVENT_DRAHGA_SHADOWBURNER_SHADOW_BREATH, urand(20000, 25000));
  217. break;
  218. case EVENT_DRAHGA_SHADOWBURNER_SUPERNOVA:
  219. if (Creature* drahgaShadowburner = instance->GetCreature(DATA_DRAHGA_SHADOWBURNER))
  220. drahgaShadowburner->AI()->DoCastAOE(SPELL_DRAHGA_SHADOWBURNER_SUPERNOVA);
  221. events.ScheduleEvent(EVENT_DRAHGA_SHADOWBURNER_SUPERNOVA, urand(25000, 30000));
  222. break;
  223. case EVENT_DRAHGA_SHADOWBURNER_VALIONAS_FLAME_AOE:
  224. if (Creature* drahgaShadowburner = instance->GetCreature(DATA_DRAHGA_SHADOWBURNER))
  225. drahgaShadowburner->AI()->DoCastAOE(SPELL_DRAHGA_SHADOWBURNER_VALIONAS_FLAME_AOE);
  226. events.ScheduleEvent(EVENT_DRAHGA_SHADOWBURNER_VALIONAS_FLAME_AOE, urand(30000, 35000));
  227. break;
  228. }
  229. }
  230. }
  231. };
  232.  
  233. void AddSC_grim_batol()
  234. {
  235. new grim_batol();
  236. }
Advertisement
Add Comment
Please, Sign In to add comment