Advertisement
Guest User

Untitled

a guest
Sep 25th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.29 KB | None | 0 0
  1. class DireMaulBoss6 : public CreatureScript
  2. {public:
  3. DireMaulBoss6() : CreatureScript("DireMaulBoss6"){}
  4. CreatureAI* GetAI(Creature* pCreature) const
  5. {
  6. return new DireMaulBoss6AI(pCreature);
  7. }
  8. struct DireMaulBoss6AI : public ScriptedAI
  9. {
  10. DireMaulBoss6AI(Creature *c) : ScriptedAI(c){}
  11. GameObject* ExitUp;
  12. Creature* ControllTrigger;
  13. Unit* OverLine;
  14. Creature* TriggerOben[4];
  15. uint32 Spell1CD;
  16. uint32 Spell2CD;
  17. uint32 Spell3CD;
  18. uint32 Spell4CD;
  19. uint32 Spell5CD;
  20. uint32 Spell6CD;
  21. uint32 Spell7CD;
  22. uint32 Spell8CD;
  23. uint32 SpellDrainLifeCD;
  24. uint32 TeleportingCD;
  25. uint32 DisableTeleport;
  26. uint32 SummonMobsUp;
  27. int Phase;
  28. bool TeleportActive;
  29.  
  30. void Reset(){
  31.  
  32. TeleportActive = false;
  33. Spell1CD = 21000;
  34. Spell2CD = 15000;
  35. Spell3CD = 9000;
  36. Spell4CD = 3000;
  37. Spell5CD = 6000;
  38. Spell6CD = 12000;
  39. Spell7CD = 0;
  40. Spell8CD = 18000;
  41. DisableTeleport = 30000;
  42. TeleportingCD = 45000;
  43. Phase = 1;
  44. SpellDrainLifeCD = 0;
  45. SummonMobsUp = 0;
  46. }
  47. void JustDied(Unit* /*killer*/) {
  48.  
  49. }
  50. void EnterCombat(Unit* pWho){
  51. //ControllTrigger = me->SummonTrigger(262.365, -531.297058, -11.974, 1.581788, 600000);
  52. }
  53. void UpdateAI(const uint32 diff)
  54. {
  55. if (!UpdateVictim())
  56. {
  57. return;
  58. }
  59. if(me->GetHealthPct() <= 90 && Phase == 1) Phase = 2;
  60. if(me->GetHealthPct() <= 80 && Phase == 2) Phase = 3;
  61. if(me->GetHealthPct() <= 70 && Phase == 3)
  62. {
  63. Teleporting();
  64. Phase = 4;
  65. }
  66. if(me->GetHealthPct() <= 60 && Phase == 4) Phase = 5;
  67. if(me->GetHealthPct() <= 50 && Phase == 5)
  68. {
  69. Teleporting();
  70. Phase = 6;
  71. }
  72. if(me->GetHealthPct() <= 40 && Phase == 6) Phase = 7;
  73. if(me->GetHealthPct() <= 30 && Phase == 7) Phase = 8;
  74. {
  75. Teleporting();
  76. Phase = 6;
  77. }
  78. if(me->GetHealthPct() <= 20 && Phase == 8) Phase = 9;
  79. if(me->GetHealthPct() <= 10 && Phase == 9)
  80. {
  81. Teleporting();
  82. Phase = 10;
  83. }
  84. if(Spell8CD <= diff)
  85. {
  86. DoCast8();
  87. }
  88. else Spell8CD -= diff;
  89.  
  90. if(Spell6CD <= diff)
  91. {
  92. DoCast6();
  93. }
  94. else Spell6CD -= diff;
  95.  
  96. if(Spell5CD <= diff)
  97. {
  98. DoCast5();
  99. }
  100. else Spell5CD -= diff;
  101.  
  102. if(Spell4CD <= diff)
  103. {
  104. DoCast4();
  105. }
  106. else Spell4CD -= diff;
  107.  
  108. if(Spell3CD <= diff)
  109. {
  110. DoCast3();
  111. }
  112. else Spell3CD -= diff;
  113.  
  114. if(Spell2CD <= diff)
  115. {
  116. DoCast2();
  117. }
  118. else Spell2CD -= diff;
  119.  
  120. if(Spell1CD <= diff)
  121. {
  122. DoCast1();
  123. }
  124. else Spell1CD -= diff;
  125.  
  126. //Not Pull Boss out of the Room
  127. /*if(OverLine = ControllTrigger->AI()->SelectTarget(SELECT_TARGET_RANDOM, 0, 15, true))
  128. {
  129. ControllTrigger->Kill(OverLine, true);
  130. }*/
  131. //What to Do when Players are Teleported.
  132. if(TeleportActive == true)
  133. {
  134. if(SummonMobsUp <= diff)
  135. {
  136. SummonMobsOben();
  137. }
  138. else SummonMobsUp -= diff;
  139. if(SpellDrainLifeCD <= diff)
  140. {
  141. DoSpellDrainLife();
  142. }
  143. else SpellDrainLifeCD -= diff;
  144. if(Spell7CD <= diff)
  145. {
  146. DoCast7();
  147. }
  148. else Spell7CD -= diff;
  149. if(DisableTeleport <= diff)
  150. {
  151. TeleportActive = false;
  152. DisableTeleport = 30000;
  153. //ExitUp = me->SummonGameObject(400000, 273.75, -471, 36.9, 1.799948, 0,0,0,0,0);
  154. }
  155. else DisableTeleport -= diff;
  156. }
  157. DoMeleeAttackIfReady();
  158. }
  159. void DoCast1()
  160. {
  161. DoCast(SelectTarget(SELECT_TARGET_TOPAGGRO, 0, 0, true), SPELL1, true);
  162. Spell1CD = 21000;
  163. }
  164. void DoCast2()
  165. {
  166. DoCast(SPELL2);
  167. Spell2CD = 21000;
  168. }
  169. void DoCast3()
  170. {
  171. Unit* Player[2];
  172. Creature* Trigger[2];
  173. Player[0] = SelectTarget(SELECT_TARGET_BOTTOMAGGRO, 0, 100, true);
  174. Trigger[0] = me->SummonTrigger(Player[0]->GetPositionX(), Player[0]->GetPositionY(), Player[0]->GetPositionZ(), 0, 3000);
  175. Trigger[0]->GetAI()->DoCast(Player[0], SPELL3, true);
  176. Player[1] = SelectTarget(SELECT_TARGET_FARTHEST, 0, 100, true);
  177. Trigger[1] = me->SummonTrigger(Player[1]->GetPositionX(), Player[1]->GetPositionY(), Player[1]->GetPositionZ(), 0, 3000);
  178. Trigger[1]->GetAI()->DoCast(Player[1], SPELL3, true);
  179. Spell3CD = 21000;
  180. }
  181. void DoCast4()
  182. {
  183. DoCast(SPELL4);
  184. Spell4CD = 21000;
  185. }
  186. void DoCast5()
  187. {
  188. DoCast(SPELL5);
  189. Spell5CD = 21000;
  190. }
  191. void DoCast6()
  192. {
  193. DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL6);
  194. Spell6CD = 21000;
  195. }
  196. void DoCast7()
  197. {
  198.  
  199. TriggerOben[0] = me->SummonTrigger(291.084564, -456.185486, 37.9, 0, 3000);
  200. TriggerOben[1] = me->SummonTrigger(251.462143, -472.092102, 36.99,0, 3000);
  201. TriggerOben[2] = me->SummonTrigger(234.706619, -436.952728, 36.99,0, 3000);
  202. TriggerOben[3] = me->SummonTrigger(274.617737, -419.012573, 36.99,0, 3000);
  203. TriggerOben[0]->GetAI()->DoCast(me->FindNearestCreature(100254,0),SPELL7);
  204. TriggerOben[1]->GetAI()->DoCast(me->FindNearestCreature(100254,0),SPELL7);
  205. TriggerOben[2]->GetAI()->DoCast(me->FindNearestCreature(100254,0),SPELL7);
  206. TriggerOben[3]->GetAI()->DoCast(me->FindNearestCreature(100254,0),SPELL7);
  207. Spell7CD = 5000;
  208. }
  209. void DoCast8()
  210. {
  211. DoCast(SelectTarget(SELECT_TARGET_TOPAGGRO, 0, 0, true), SPELL8);
  212. Spell8CD = 10500;
  213. }
  214. void Teleporting()
  215. {
  216. TeleportActive = true;
  217. Unit* Teleport[2];
  218. Teleport[0] = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true);
  219. Teleport[1] = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true);
  220. if(Teleport[0]->GetGUID() == Teleport[1]->GetGUID())
  221. Teleport[1] = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true);
  222. if(Teleport[0]->GetGUID() == me->getVictim()->GetGUID())
  223. Teleport[0] = SelectTarget(SELECT_TARGET_FARTHEST, 0, 0.0f, true);
  224. if(Teleport[1]->GetGUID() == me->getVictim()->GetGUID())
  225. Teleport[1] = SelectTarget(SELECT_TARGET_FARTHEST, 0, 0.0f, true);
  226.  
  227. DoTeleportPlayer(Teleport[1], 270.800110, -445.363708, 39, 3);
  228.  
  229. if(Teleport[0]->GetGUID() != Teleport[1]->GetGUID())
  230. DoTeleportPlayer(Teleport[0], 270.800110, -445.363708, 39, 0);
  231.  
  232.  
  233. } //
  234. void DoSpellDrainLife()
  235. {
  236. Creature* TriggerDrainLife[4];
  237. TriggerDrainLife[0] = me->SummonTrigger(219.285629, -464.386993, 37.889679, 0.34, 5000);
  238. TriggerDrainLife[0]->GetAI()->DoCast(me->FindNearestCreature(100254,0),SPELLDRAINLIFE);
  239. TriggerDrainLife[1] = me->SummonTrigger(281.025391, -488.199463, 37.889675, 2.02, 5000);
  240. TriggerDrainLife[1]->GetAI()->DoCast(me->FindNearestCreature(100254,0),SPELLDRAINLIFE);
  241. TriggerDrainLife[2] = me->SummonTrigger(305.585236, -426.466461, 37.889671, 3.56, 5000);
  242. TriggerDrainLife[2]->GetAI()->DoCast(me->FindNearestCreature(100254,0),SPELLDRAINLIFE);
  243. TriggerDrainLife[3] = me->SummonTrigger(243.589127, -402.429382, 38.026470, 5.2, 5000);
  244. TriggerDrainLife[3]->GetAI()->DoCast(me->FindNearestCreature(100254,0),SPELLDRAINLIFE);
  245. SpellDrainLifeCD = 5000;
  246. }
  247. void SummonMobsOben()
  248. {
  249. Creature* MobsOben[4];
  250. Creature* Boss;
  251.  
  252. MobsOben[0] = me->SummonCreature(100255, 262.800110+30, -445.363708+30, 36.825784 , 0, TEMPSUMMON_TIMED_DESPAWN, 40000);
  253. MobsOben[1] = me->SummonCreature(100255, 262.800110+30, -445.363708-30, 36.825784 , 0, TEMPSUMMON_TIMED_DESPAWN, 40000);
  254. MobsOben[2] = me->SummonCreature(100255, 262.800110-30, -445.363708-30, 36.825784 , 0, TEMPSUMMON_TIMED_DESPAWN, 40000);
  255. MobsOben[3] = me->SummonCreature(100255, 262.800110-30, -445.363708+30, 36.825784 , 0, TEMPSUMMON_TIMED_DESPAWN, 40000);
  256. Boss = MobsOben[0]->FindNearestCreature(100254, 100);
  257. MobsOben[0]->GetMotionMaster()->MovePoint(0, Boss->GetPositionX(), Boss->GetPositionY(), Boss->GetPositionZ());
  258. MobsOben[1]->GetMotionMaster()->MovePoint(0, Boss->GetPositionX(), Boss->GetPositionY(), Boss->GetPositionZ());
  259. MobsOben[2]->GetMotionMaster()->MovePoint(0, Boss->GetPositionX(), Boss->GetPositionY(), Boss->GetPositionZ());
  260. MobsOben[3]->GetMotionMaster()->MovePoint(0, Boss->GetPositionX(), Boss->GetPositionY(), Boss->GetPositionZ());
  261. SummonMobsUp = 4000;
  262. }
  263. };
  264. };
  265. class DireMaulGOB1 : public GameObjectScript
  266. {
  267. public:
  268.  
  269. DireMaulGOB1()
  270. : GameObjectScript("DireMaulGOB1")
  271. {
  272. }
  273.  
  274. bool OnGossipHello(Player* player, GameObject* /*go*/)
  275. {
  276. player->TeleportTo(429, 263, -485, -119, 1.566684);
  277. return false;
  278. }
  279. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement