Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class DireMaulBoss6 : public CreatureScript
- {public:
- DireMaulBoss6() : CreatureScript("DireMaulBoss6"){}
- CreatureAI* GetAI(Creature* pCreature) const
- {
- return new DireMaulBoss6AI(pCreature);
- }
- struct DireMaulBoss6AI : public ScriptedAI
- {
- DireMaulBoss6AI(Creature *c) : ScriptedAI(c){}
- GameObject* ExitUp;
- Creature* ControllTrigger;
- Unit* OverLine;
- Creature* TriggerOben[4];
- uint32 Spell1CD;
- uint32 Spell2CD;
- uint32 Spell3CD;
- uint32 Spell4CD;
- uint32 Spell5CD;
- uint32 Spell6CD;
- uint32 Spell7CD;
- uint32 Spell8CD;
- uint32 SpellDrainLifeCD;
- uint32 TeleportingCD;
- uint32 DisableTeleport;
- uint32 SummonMobsUp;
- int Phase;
- bool TeleportActive;
- void Reset(){
- TeleportActive = false;
- Spell1CD = 21000;
- Spell2CD = 15000;
- Spell3CD = 9000;
- Spell4CD = 3000;
- Spell5CD = 6000;
- Spell6CD = 12000;
- Spell7CD = 0;
- Spell8CD = 18000;
- DisableTeleport = 30000;
- TeleportingCD = 45000;
- Phase = 1;
- SpellDrainLifeCD = 0;
- SummonMobsUp = 0;
- }
- void JustDied(Unit* /*killer*/) {
- }
- void EnterCombat(Unit* pWho){
- //ControllTrigger = me->SummonTrigger(262.365, -531.297058, -11.974, 1.581788, 600000);
- }
- void UpdateAI(const uint32 diff)
- {
- if (!UpdateVictim())
- {
- return;
- }
- if(me->GetHealthPct() <= 90 && Phase == 1) Phase = 2;
- if(me->GetHealthPct() <= 80 && Phase == 2) Phase = 3;
- if(me->GetHealthPct() <= 70 && Phase == 3)
- {
- Teleporting();
- Phase = 4;
- }
- if(me->GetHealthPct() <= 60 && Phase == 4) Phase = 5;
- if(me->GetHealthPct() <= 50 && Phase == 5)
- {
- Teleporting();
- Phase = 6;
- }
- if(me->GetHealthPct() <= 40 && Phase == 6) Phase = 7;
- if(me->GetHealthPct() <= 30 && Phase == 7) Phase = 8;
- {
- Teleporting();
- Phase = 6;
- }
- if(me->GetHealthPct() <= 20 && Phase == 8) Phase = 9;
- if(me->GetHealthPct() <= 10 && Phase == 9)
- {
- Teleporting();
- Phase = 10;
- }
- if(Spell8CD <= diff)
- {
- DoCast8();
- }
- else Spell8CD -= diff;
- if(Spell6CD <= diff)
- {
- DoCast6();
- }
- else Spell6CD -= diff;
- if(Spell5CD <= diff)
- {
- DoCast5();
- }
- else Spell5CD -= diff;
- if(Spell4CD <= diff)
- {
- DoCast4();
- }
- else Spell4CD -= diff;
- if(Spell3CD <= diff)
- {
- DoCast3();
- }
- else Spell3CD -= diff;
- if(Spell2CD <= diff)
- {
- DoCast2();
- }
- else Spell2CD -= diff;
- if(Spell1CD <= diff)
- {
- DoCast1();
- }
- else Spell1CD -= diff;
- //Not Pull Boss out of the Room
- /*if(OverLine = ControllTrigger->AI()->SelectTarget(SELECT_TARGET_RANDOM, 0, 15, true))
- {
- ControllTrigger->Kill(OverLine, true);
- }*/
- //What to Do when Players are Teleported.
- if(TeleportActive == true)
- {
- if(SummonMobsUp <= diff)
- {
- SummonMobsOben();
- }
- else SummonMobsUp -= diff;
- if(SpellDrainLifeCD <= diff)
- {
- DoSpellDrainLife();
- }
- else SpellDrainLifeCD -= diff;
- if(Spell7CD <= diff)
- {
- DoCast7();
- }
- else Spell7CD -= diff;
- if(DisableTeleport <= diff)
- {
- TeleportActive = false;
- DisableTeleport = 30000;
- //ExitUp = me->SummonGameObject(400000, 273.75, -471, 36.9, 1.799948, 0,0,0,0,0);
- }
- else DisableTeleport -= diff;
- }
- DoMeleeAttackIfReady();
- }
- void DoCast1()
- {
- DoCast(SelectTarget(SELECT_TARGET_TOPAGGRO, 0, 0, true), SPELL1, true);
- Spell1CD = 21000;
- }
- void DoCast2()
- {
- DoCast(SPELL2);
- Spell2CD = 21000;
- }
- void DoCast3()
- {
- Unit* Player[2];
- Creature* Trigger[2];
- Player[0] = SelectTarget(SELECT_TARGET_BOTTOMAGGRO, 0, 100, true);
- Trigger[0] = me->SummonTrigger(Player[0]->GetPositionX(), Player[0]->GetPositionY(), Player[0]->GetPositionZ(), 0, 3000);
- Trigger[0]->GetAI()->DoCast(Player[0], SPELL3, true);
- Player[1] = SelectTarget(SELECT_TARGET_FARTHEST, 0, 100, true);
- Trigger[1] = me->SummonTrigger(Player[1]->GetPositionX(), Player[1]->GetPositionY(), Player[1]->GetPositionZ(), 0, 3000);
- Trigger[1]->GetAI()->DoCast(Player[1], SPELL3, true);
- Spell3CD = 21000;
- }
- void DoCast4()
- {
- DoCast(SPELL4);
- Spell4CD = 21000;
- }
- void DoCast5()
- {
- DoCast(SPELL5);
- Spell5CD = 21000;
- }
- void DoCast6()
- {
- DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL6);
- Spell6CD = 21000;
- }
- void DoCast7()
- {
- TriggerOben[0] = me->SummonTrigger(291.084564, -456.185486, 37.9, 0, 3000);
- TriggerOben[1] = me->SummonTrigger(251.462143, -472.092102, 36.99,0, 3000);
- TriggerOben[2] = me->SummonTrigger(234.706619, -436.952728, 36.99,0, 3000);
- TriggerOben[3] = me->SummonTrigger(274.617737, -419.012573, 36.99,0, 3000);
- TriggerOben[0]->GetAI()->DoCast(me->FindNearestCreature(100254,0),SPELL7);
- TriggerOben[1]->GetAI()->DoCast(me->FindNearestCreature(100254,0),SPELL7);
- TriggerOben[2]->GetAI()->DoCast(me->FindNearestCreature(100254,0),SPELL7);
- TriggerOben[3]->GetAI()->DoCast(me->FindNearestCreature(100254,0),SPELL7);
- Spell7CD = 5000;
- }
- void DoCast8()
- {
- DoCast(SelectTarget(SELECT_TARGET_TOPAGGRO, 0, 0, true), SPELL8);
- Spell8CD = 10500;
- }
- void Teleporting()
- {
- TeleportActive = true;
- Unit* Teleport[2];
- Teleport[0] = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true);
- Teleport[1] = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true);
- if(Teleport[0]->GetGUID() == Teleport[1]->GetGUID())
- Teleport[1] = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true);
- if(Teleport[0]->GetGUID() == me->getVictim()->GetGUID())
- Teleport[0] = SelectTarget(SELECT_TARGET_FARTHEST, 0, 0.0f, true);
- if(Teleport[1]->GetGUID() == me->getVictim()->GetGUID())
- Teleport[1] = SelectTarget(SELECT_TARGET_FARTHEST, 0, 0.0f, true);
- DoTeleportPlayer(Teleport[1], 270.800110, -445.363708, 39, 3);
- if(Teleport[0]->GetGUID() != Teleport[1]->GetGUID())
- DoTeleportPlayer(Teleport[0], 270.800110, -445.363708, 39, 0);
- } //
- void DoSpellDrainLife()
- {
- Creature* TriggerDrainLife[4];
- TriggerDrainLife[0] = me->SummonTrigger(219.285629, -464.386993, 37.889679, 0.34, 5000);
- TriggerDrainLife[0]->GetAI()->DoCast(me->FindNearestCreature(100254,0),SPELLDRAINLIFE);
- TriggerDrainLife[1] = me->SummonTrigger(281.025391, -488.199463, 37.889675, 2.02, 5000);
- TriggerDrainLife[1]->GetAI()->DoCast(me->FindNearestCreature(100254,0),SPELLDRAINLIFE);
- TriggerDrainLife[2] = me->SummonTrigger(305.585236, -426.466461, 37.889671, 3.56, 5000);
- TriggerDrainLife[2]->GetAI()->DoCast(me->FindNearestCreature(100254,0),SPELLDRAINLIFE);
- TriggerDrainLife[3] = me->SummonTrigger(243.589127, -402.429382, 38.026470, 5.2, 5000);
- TriggerDrainLife[3]->GetAI()->DoCast(me->FindNearestCreature(100254,0),SPELLDRAINLIFE);
- SpellDrainLifeCD = 5000;
- }
- void SummonMobsOben()
- {
- Creature* MobsOben[4];
- Creature* Boss;
- MobsOben[0] = me->SummonCreature(100255, 262.800110+30, -445.363708+30, 36.825784 , 0, TEMPSUMMON_TIMED_DESPAWN, 40000);
- MobsOben[1] = me->SummonCreature(100255, 262.800110+30, -445.363708-30, 36.825784 , 0, TEMPSUMMON_TIMED_DESPAWN, 40000);
- MobsOben[2] = me->SummonCreature(100255, 262.800110-30, -445.363708-30, 36.825784 , 0, TEMPSUMMON_TIMED_DESPAWN, 40000);
- MobsOben[3] = me->SummonCreature(100255, 262.800110-30, -445.363708+30, 36.825784 , 0, TEMPSUMMON_TIMED_DESPAWN, 40000);
- Boss = MobsOben[0]->FindNearestCreature(100254, 100);
- MobsOben[0]->GetMotionMaster()->MovePoint(0, Boss->GetPositionX(), Boss->GetPositionY(), Boss->GetPositionZ());
- MobsOben[1]->GetMotionMaster()->MovePoint(0, Boss->GetPositionX(), Boss->GetPositionY(), Boss->GetPositionZ());
- MobsOben[2]->GetMotionMaster()->MovePoint(0, Boss->GetPositionX(), Boss->GetPositionY(), Boss->GetPositionZ());
- MobsOben[3]->GetMotionMaster()->MovePoint(0, Boss->GetPositionX(), Boss->GetPositionY(), Boss->GetPositionZ());
- SummonMobsUp = 4000;
- }
- };
- };
- class DireMaulGOB1 : public GameObjectScript
- {
- public:
- DireMaulGOB1()
- : GameObjectScript("DireMaulGOB1")
- {
- }
- bool OnGossipHello(Player* player, GameObject* /*go*/)
- {
- player->TeleportTo(429, 263, -485, -119, 1.566684);
- return false;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement