Example #1
0
        void EnterEvadeMode()
        {
            // Remove all auras from the Legs and unset them in combat.
            for (uint8 i = 0; i <= 3; ++i)
                if (Unit* Leg = vehicle->GetPassenger(i))
                {
                    Leg->RemoveAllAuras();
                    Leg->DeleteThreatList();
                    Leg->CombatStop(false);

                    if (instance)
                        instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, Leg); // Remove
                }

            DespawnCreatures(NPC_PHEROMONE_TRAIL);
            me->RemoveAllAuras();
            Reset();
            me->DeleteThreatList();
            me->CombatStop(false);
            me->GetMotionMaster()->MoveTargetedHome();

            if (instance)
            {
                instance->SetData(DATA_GARALON, FAIL);
                instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); // Remove
                instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_PHEROMONES_AURA); // Remove Pheromones.
            }

            _EnterEvadeMode();
        }
Example #2
0
        void EnterCombat(Unit* /*who*/)
        {
            for (uint8 i = 0; i <= 3; ++i)
                if (Unit* Leg = vehicle->GetPassenger(i))
                {
                    Leg->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
                    Leg->ClearUnitState(UNIT_STATE_ONVEHICLE);
                    Leg->ToCreature()->SetInCombatWithZone();

                    if (instance)
                        instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, Leg); // Add
                }

            me->AddAura(SPELL_CRUSH_BODY_VIS, me); // And add the body crush marker.

            events.ScheduleEvent(EVENT_FURIOUS_SWIPE, urand(8000, 11000));
            events.ScheduleEvent(EVENT_PHEROMONES, urand(2000, 3000));
            events.ScheduleEvent(EVENT_CRUSH, 30000); // First Crush always seems to have this timer, on any difficulty.
            events.ScheduleEvent(EVENT_GARALON_BERSERK, 7 * MINUTE * IN_MILLISECONDS); // 7 min enrage timer.

            if (instance)
            {
                instance->SetData(DATA_GARALON, IN_PROGRESS);
                instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me); // Add
            }

            _EnterCombat();
        }
Example #3
0
 void JustDied(Unit* /*killer*/) override
 {
     pInstance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
     if (pInstance)
         if (Creature* raigonn = Unit::GetCreature(*me, pInstance->GetData64(DATA_RAIGONN)))
             if (raigonn->IsAIEnabled)
                 raigonn->AI()->DoAction(ACTION_WEAK_SPOT_DEAD);
 }
        void JustDied(Unit* /*killer*/)
        {
            _JustDied();
            Talk(SAY_DEATH);
            summons.DespawnAll();

            if (instance)
               instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
        }
Example #5
0
 void JustDied(Unit* killer)
 {
     if (pInstance)
     {
         summons.DespawnAll();
         pInstance->SetBossState(DATA_SHA_OF_FEAR, DONE);
         pInstance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
         _JustDied();
     }
 }
Example #6
0
 void EnterCombat(Unit* attacker)
 {
     if (pInstance)
     {
         pInstance->SetBossState(DATA_SHA_OF_FEAR, IN_PROGRESS);
         pInstance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me);
         DoZoneInCombat();
         Talk(TALK_AGGRO);
     }
 }
        void EnterEvadeMode()
        {
            BossAI::EnterEvadeMode();
            if (instance)
            {
                instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
                instance->SetBossState(DATA_KIPTILAK, FAIL);
            }

            summons.DespawnAll();
        }
        void EnterCombat(Unit* /*who*/)
        {
            _EnterCombat();
            Talk(SAY_AGGRO);

            if (instance)
               instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me);

            events.ScheduleEvent(EVENT_EXPLOSIVES, urand(7500, 10000));
            events.ScheduleEvent(EVENT_SABOTAGE, urand(22500, 30000));
        }
Example #9
0
            void JustDied(Unit* killer)
            {
                summons.DespawnAll();

                if (instance)
                {
                    instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
                    instance->SetData(DATA_TORTOS_EVENT, DONE);
                }

                _JustDied();
            }
        void EnterCombat(Unit* /*pWho*/)
        {
            EnterPhaseIntro();
            
            if (instance)
            {
                instance->SetBossState(DATA_NEFARIAN, IN_PROGRESS);
                instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me); // Add
            }

            _EnterCombat();
        }
        void JustDied(Unit* /*killer*/)
        {
            me->RemoveAllAuras();

            if (instance)
            {
                instance->SetBossState(DATA_NEFARIAN, DONE);
                instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); // Remove
            }

            Talk(SAY_DEATH);

            _JustDied();
        }
Example #12
0
        void JustDied(Unit* /*killer*/)
        {
            summons.DespawnAll();
            DespawnCreatures(NPC_PHEROMONE_TRAIL);

            if (instance)
            {
                instance->SetData(DATA_GARALON, DONE);
                instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); // Remove
                instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_PHEROMONES_AURA); // Remove Pheromones.
            }

            _JustDied();
        }
        void EnterEvadeMode()
        {
            Reset();

            me->DespawnOrUnsummon(1000);
            me->SummonCreature(NPC_NEFARIAN_INTRO, -167.093f, -224.479f, 40.399f, 6.278f, TEMPSUMMON_MANUAL_DESPAWN);

            if (instance)
            {
                instance->SetBossState(DATA_NEFARIAN, FAIL);
                instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); // Remove
            }

            _EnterEvadeMode();
        }
Example #14
0
        void EnterCombat(Unit* /*who*/)
        {
            applyCorruption();

            Talk(SAY_AGGRO);
            EnterPhaseOne();

            if (instance)
            {
                instance->SetBossState(DATA_CHOGALL, IN_PROGRESS);
                instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me); // Add
            }

            m_uiPowerTimer = 1000; // Refresh power.
            m_berserkTimer = 600000; // 10 min enrage.

            _EnterCombat();
        }
Example #15
0
			void EnterEvadeMode()
            {
                me->AddUnitState(UNIT_STATE_EVADE);

                me->RemoveAllAuras();
                Reset();
                me->DeleteThreatList();
                me->CombatStop(true);
                me->GetMotionMaster()->MovementExpired();
                me->GetMotionMaster()->MoveTargetedHome();

                if (instance)
                {
                    instance->SetData(DATA_TORTOS_EVENT, FAIL);
                    instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); // Remove
                }

                _EnterEvadeMode();
            }
Example #16
0
        void EnterEvadeMode()
        {
            Reset();
            removeCorruption();
            Talk(SAY_EVADE);
            me->GetMotionMaster()->MoveTargetedHome();

            if (Creature* trigger = me->FindNearestCreature(NPC_CHOGALL_COG_TRIGGER, 200.0f, true))
                if(trigger->HasAura(SPELL_CORR_OLD_GOD))
                    trigger->RemoveAurasDueToSpell(SPELL_CORR_OLD_GOD);

            if (instance)
            {
                instance->SetBossState(DATA_CHOGALL, FAIL);
                instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); // Remove
            }

            _EnterEvadeMode();
        }
Example #17
0
        void Reset()
        {
            _Reset();

            me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
            me->SetPower(POWER_ENERGY, 0);
            me->SetInt32Value(UNIT_FIELD_POWER1, 0);
            me->SetMaxPower(POWER_ENERGY, 100);
            me->SetInt32Value(UNIT_FIELD_MAXPOWER1, 100);
            me->RemoveFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_REGENERATE_POWER);
            me->CastSpell(me, SPELL_ENERGY_TO_ZERO, true);

            summons.DespawnAll();

            events.Reset();

            events.ScheduleEvent(EVENT_CHECK_MELEE, 1000);
            events.ScheduleEvent(EVENT_EERIE_SKULL, 5000);
            events.ScheduleEvent(EVENT_CHECK_ENERGY, 1000);
            events.ScheduleEvent(EVENT_FIRST_TERRORS, 30000);

            attacksCounter = 0;
            terrorCounter  = 0;

            if (pInstance)
            {
                if (pInstance->GetBossState(DATA_PROTECTORS) == DONE)
                {
                    me->setFaction(14);
                    me->HandleEmote(0);
                    pInstance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);

                    if (pInstance->GetData(SPELL_RITUAL_OF_PURIFICATION))
                        me->AddAura(SPELL_RITUAL_OF_PURIFICATION, me);
                }
                else
                {
                    me->setFaction(35);
                    me->HandleEmote(35);
                }
            }
        }
Example #18
0
            void EnterCombat(Unit* who)
            {
                me->AddAura(SPELL_KICK_SHELL_A, me);
                me->AddAura(SPELL_ROCKFALL_AURA, me);

				events.ScheduleEvent(EVENT_CALL_OF_TORTOS, TIMER_CALL_OF_TORTOS_F);
				events.ScheduleEvent(EVENT_SNAPPING_BITE, IsHeroic() ? TIMER_SNAPPING_BITE_H : TIMER_SNAPPING_BITE_N);
				events.ScheduleEvent(EVENT_QUAKE_STOMP, TIMER_QUAKE_STOMP_F);
				events.ScheduleEvent(EVENT_SUMMON_BATS, TIMER_CALL_BATS_F);

                events.ScheduleEvent(EVENT_GROWING_FURY, TIMER_GROWING_FURY);
                events.ScheduleEvent(EVENT_REGEN_FURY_POWER, TIMER_REGEN_FURY_POWER);
				events.ScheduleEvent(EVENT_BERSERK, TIMER_BERSERK);

                if (instance)
                {
                    instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me);
                    instance->SetData(DATA_TORTOS_EVENT, IN_PROGRESS);
                }

                _EnterCombat();
            }
Example #19
0
        void JustDied(Unit* /*killer*/)
        {
            if(!IsHeroic())
                Talk(SAY_DEATH);
            else
                Talk(SAY_DEATH_H);
            removeCorruption();
            summons.DespawnAll();

            if (instance)
            {
                instance->SetBossState(DATA_CHOGALL, DONE);
                instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); // Remove
            }

            if(Creature* trigger = me->FindNearestCreature(NPC_CHOGALL_COG_TRIGGER, 200.0f, true))
                trigger->DisappearAndDie();

            if (me->GetMap()->IsHeroic())
                if (GameObject* sinestraDoor = me->FindNearestGameObject(GO_CHOGALL_FLOOR, 200.0f))
                    sinestraDoor->SetGoState(GO_STATE_ACTIVE);

            _JustDied();
        }