Example #1
0
        void WaypointReached(uint32 waypointId)
        {
            if (!instance)
                return;

            switch (waypointId)
            {
                case 0:
                    DoCast(me, SPELL_TUXEDO, false);
                    instance->DoUseDoorOrButton(instance->GetData64(DATA_GO_STAGEDOORLEFT));
                    break;
                case 4:
                    TalkCount = 0;
                    SetEscortPaused(true);

                    if (Creature* pSpotlight = me->SummonCreature(CREATURE_SPOTLIGHT,
                        me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0.0f,
                        TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 60000))
                    {
                        pSpotlight->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
                        pSpotlight->CastSpell(pSpotlight, SPELL_SPOTLIGHT, false);
                        m_uiSpotlightGUID = pSpotlight->GetGUID();
                    }
                    break;
                case 8:
                    instance->DoUseDoorOrButton(instance->GetData64(DATA_GO_STAGEDOORLEFT));
                    PerformanceReady = true;
                    break;
                case 9:
                    PrepareEncounter();
                    instance->DoUseDoorOrButton(instance->GetData64(DATA_GO_CURTAINS));
                    break;
            }
        }
Example #2
0
 void OnStateChanged(uint32 state, Unit* unit) override
 {
     if (m_instance && state == StateWork)
         if (Creature* ashbury = ObjectAccessor::GetCreature(*go, m_instance->GetData64(DATA_BARON_ASHBURY)))
             if (GameObject* door = ObjectAccessor::GetGameObject(*go, m_instance->GetData64(DATA_PRISON_DOOR3)))
                 if (ashbury->IsAlive())
                 {
                     door->ResetDoorOrButton();
                     go->ResetDoorOrButton();
                 }
                 else
                 {
                     m_instance->DoUseDoorOrButton(m_instance->GetData64(DATA_PRISON_LEVER3), 3000);
                     m_instance->DoUseDoorOrButton(m_instance->GetData64(DATA_PRISON_DOOR3));
                 }
 }
Example #3
0
        void JustReachedHome()
        {
            if (m_pInstance)
                m_pInstance->DoUseDoorOrButton(m_pInstance->GetData64(GO_MAIN_GATE_DOOR));

            boss_twin_baseAI::JustReachedHome();
        }
        void MovementInform(uint32 type, uint32 pointId)
        {
            if (type != POINT_MOTION_TYPE && type != EFFECT_MOTION_TYPE)
                return;

            switch (pointId)
            {
                case 0:
                    if (me->GetDistance2d(ToCCommonLoc[1].GetPositionX(), ToCCommonLoc[1].GetPositionY()) < 6.0f)
                    {
                        // Middle of the room
                        m_uiStage = 1;
                    }
                    else
                    {
                        // Landed from Hop backwards (start trample)
                        if (Unit::GetPlayer(*me, m_uiTrampleTargetGUID))
                        {
                            m_uiStage = 4;
                        }
                        else
                            m_uiStage = 6;
                    }
                    break;
                case 1: // Finish trample
                    m_bMovementFinish = true;
                    break;
                case 2:
                    m_instance->DoUseDoorOrButton(m_instance->GetData64(GO_MAIN_GATE_DOOR));
                    me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
                    me->SetReactState(REACT_AGGRESSIVE);
                    me->SetInCombatWithZone();
                    break;
            }
        }
        void JustReachedHome()
        {
            if (instanceScript)
                instanceScript->DoUseDoorOrButton(instanceScript->GetData64(GO_MAIN_GATE_DOOR));

            boss_jormungarAI::JustReachedHome();
        }
 void JustReachedHome()
 {
     if (m_instance)
     {
         m_instance->DoUseDoorOrButton(m_instance->GetData64(GO_MAIN_GATE_DOOR));
         m_instance->SetData(TYPE_NORTHREND_BEASTS, FAIL);
     }
     me->DespawnOrUnsummon();
 }
Example #7
0
    void MovementInform(uint32 uiType, uint32 uiId)
    {
        if (uiType != POINT_MOTION_TYPE) return;

        switch (uiId)
        {
        case 1:
            m_pInstance->DoUseDoorOrButton(m_pInstance->GetData64(GO_MAIN_GATE_DOOR));
            me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE);
            me->SetReactState(REACT_AGGRESSIVE);
            break;
        }
    }
        void MovementInform(uint32 type, uint32 pointId)
        {
            if (type != POINT_MOTION_TYPE)
                return;

            switch (pointId)
            {
                case 0:
                    m_instance->DoUseDoorOrButton(m_instance->GetData64(GO_MAIN_GATE_DOOR));
                    me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
                    me->SetReactState(REACT_AGGRESSIVE);
                    me->SetInCombatWithZone();
                    break;
            }
        }
Example #9
0
 void MovementInform(uint32 /*type*/, uint32 /*id*/) override
 {
     if (instance->GetData(EVENT_PYRAMID) == PYRAMID_CAGES_OPEN)
     {
         instance->SetData(EVENT_PYRAMID, PYRAMID_ARRIVED_AT_STAIR);
         Talk(SAY_WEEGLI_OHNO);
         me->SetHomePosition(1882.69f, 1272.28f, 41.87f, 0);
     }
     else
         if (destroyingDoor)
         {
             instance->DoUseDoorOrButton(instance->GetData64(GO_END_DOOR));
             /// @todo leave the area...
             me->DespawnOrUnsummon();
         };
 }
Example #10
0
            void MovementInform(uint32 uiType, uint32 uiId)
            {
                if (uiType != POINT_MOTION_TYPE) return;

                switch (uiId)
                {
                    case 1:
                        me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
                        if (m_pInstance)
                        {
                            m_pInstance->DoUseDoorOrButton(m_pInstance->GetData64(GO_MAIN_GATE_DOOR));
                            m_pInstance->SetData(TYPE_EVENT, 1120);
                            m_pInstance->SetData(TYPE_EVENT_TIMER, 1000);
                        }
                        break;
                }
            }
Example #11
0
 void MovementInform(uint32 /*type*/, uint32 /*id*/)
 {
     if(pInstance)
     {
         if(pInstance->GetData(EVENT_PYRAMID) == PYRAMID_CAGES_OPEN)
         {
             pInstance->SetData(EVENT_PYRAMID, PYRAMID_ARRIVED_AT_STAIR);
             DoScriptText(SAY_WEEGLI_OHNO, me);
             me->SetHomePosition(1882.69f, 1272.28f, 41.87f, 0);
         }
         else if(destroyingDoor)
         {
             pInstance->DoUseDoorOrButton(pInstance->GetData64(GO_END_DOOR));
             //TODO: leave the area...
             me->DespawnOrUnsummon();
         };
     }
 }
Example #12
0
        void WaypointReached(uint32 waypointId) override
        {
            switch (waypointId)
            {
                case 0:
                    if (me->GetEntry() == NPC_ASH)
                        Talk(SAY_FREE_AS);
                    else
                        Talk(SAY_FREE_AD);
                    break;
                case 10:
                    if (me->GetEntry() == NPC_ASH)
                        Talk(SAY_OPEN_DOOR_AS);
                    else
                        Talk(SAY_OPEN_DOOR_AD);
                    break;
                case 11:
                    if (me->GetEntry() == NPC_ASH)
                        DoCast(me, SPELL_UNLOCK);
                    break;
                case 12:
                    if (me->GetEntry() == NPC_ASH)
                        Talk(SAY_POST_DOOR_AS);
                    else
                        Talk(SAY_POST1_DOOR_AD);

                    m_instance->SetData(TYPE_FREE_NPC, DONE);
                    m_instance->DoUseDoorOrButton(m_instance->GetData64(DATA_COURTYARD_DOOR), 999999);

                    break;
                case 13:
                    if (me->GetEntry() != NPC_ASH)
                        Talk(SAY_POST2_DOOR_AD);
                    break;
                case 14:
                    me->CastSpell(me, SPELL_ASHCROMBE_TELEPORT);
                    break;
                case 15:
                    float x, y, z, o;
                    me->GetHomePosition(x, y, z, o);
                    me->NearTeleportTo(x, y, z, o);
                    break;
            }
        }
        void MovementInform(uint32 uiType, uint32 uiId)
        {
            if (uiType != POINT_MOTION_TYPE) return;

            switch (uiId)
            {
                case 0:
                    instanceScript->DoUseDoorOrButton(instanceScript->GetData64(GO_MAIN_GATE_DOOR));
                    me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_OOC_NOT_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
                    me->SetReactState(REACT_AGGRESSIVE);
                    me->SetInCombatWithZone();
                    if (Creature* otherWorm = Unit::GetCreature(*me, instanceScript->GetData64(otherWormEntry)))
                    {
                        otherWorm->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_OOC_NOT_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
                        otherWorm->SetReactState(REACT_AGGRESSIVE);
                        otherWorm->SetVisible(true);
                        otherWorm->SetInCombatWithZone();
                    }
                    break;
            }
        }
Example #14
0
 void EnterEvadeMode()
 {
     m_pInstance->DoUseDoorOrButton(m_pInstance->GetData64(GO_MAIN_GATE_DOOR));
     boss_twin_baseAI::EnterEvadeMode();
 }
Example #15
0
            void UpdateAI(const uint32 uiDiff)
            {
                if (!m_pInstance) return;
                if (m_pInstance->GetData(TYPE_EVENT_NPC) != NPC_TIRION) return;

                m_uiUpdateTimer = m_pInstance->GetData(TYPE_EVENT_TIMER);
                if (m_uiUpdateTimer <= uiDiff)
                {
                    switch (m_pInstance->GetData(TYPE_EVENT))
                    {
                        case 110:
                            me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_TALK);
                            DoScriptText(SAY_STAGE_0_01, me);
                            m_uiUpdateTimer = 22000;
                            m_pInstance->SetData(TYPE_EVENT, 120);
                            break;
                        case 140:
                            me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_TALK);
                            DoScriptText(SAY_STAGE_0_02, me);
                            m_uiUpdateTimer = 5000;
                            m_pInstance->SetData(TYPE_EVENT, 150);
                            m_pInstance->DoUseDoorOrButton(m_pInstance->GetData64(GO_MAIN_GATE_DOOR));
                            break;
                        case 150:
                            me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_NONE);
                            if (m_pInstance->GetData(TYPE_BEASTS) != DONE)
                            {
                                me->SummonCreature(NPC_GORMOK, ToCCommonLoc[10].GetPositionX(), ToCCommonLoc[10].GetPositionY(), ToCCommonLoc[10].GetPositionZ(), 5, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30*IN_MILLISECONDS);
                                if (Creature* pTemp = Unit::GetCreature((*me), m_pInstance->GetData64(NPC_GORMOK)))
                                {
                                    pTemp->GetMotionMaster()->MovePoint(0, ToCCommonLoc[5].GetPositionX(), ToCCommonLoc[5].GetPositionY(), ToCCommonLoc[5].GetPositionZ());
                                    pTemp->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
                                    pTemp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_OOC_NOT_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
                                    pTemp->SetReactState(REACT_PASSIVE);
                                }
                            }
                            m_uiUpdateTimer = 3000;
                            m_pInstance->SetData(TYPE_EVENT, 155);
                            break;
                        case 155:
                            if (Creature* pTemp = Unit::GetCreature((*me), m_pInstance->GetData64(NPC_GORMOK)))
                            {
                                pTemp->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_OOC_NOT_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
                                pTemp->SetReactState(REACT_AGGRESSIVE);
                                pTemp->SetInCombatWithZone();
                            }
                            m_pInstance->DoUseDoorOrButton(m_pInstance->GetData64(GO_MAIN_GATE_DOOR));
                            m_pInstance->SetData(TYPE_BEASTS, IN_PROGRESS);
                            m_uiUpdateTimer = 5000;
                            m_pInstance->SetData(TYPE_EVENT, 160);
                            break;
                        case 200:
                            DoScriptText(SAY_STAGE_0_04, me);
                            m_uiUpdateTimer = 8000;
                            m_pInstance->SetData(TYPE_EVENT, 205);
                            break;
                        case 205:
                            m_uiUpdateTimer = 3000;
                            m_pInstance->SetData(TYPE_EVENT, 210);
                            m_pInstance->DoUseDoorOrButton(m_pInstance->GetData64(GO_MAIN_GATE_DOOR));
                            break;
                        case 210:
                            if (m_pInstance->GetData(TYPE_BEASTS) != DONE)
                            {
                                me->SummonCreature(NPC_DREADSCALE, ToCCommonLoc[3].GetPositionX(), ToCCommonLoc[3].GetPositionY(), ToCCommonLoc[3].GetPositionZ(), 5, TEMPSUMMON_MANUAL_DESPAWN);
                                me->SummonCreature(NPC_ACIDMAW, ToCCommonLoc[4].GetPositionX(), ToCCommonLoc[4].GetPositionY(), ToCCommonLoc[4].GetPositionZ(), 5, TEMPSUMMON_MANUAL_DESPAWN);
                                if (Creature* pTemp = Unit::GetCreature((*me), m_pInstance->GetData64(NPC_DREADSCALE)))
                                {
                                    pTemp->GetMotionMaster()->MovePoint(0, ToCCommonLoc[8].GetPositionX(), ToCCommonLoc[8].GetPositionY(), ToCCommonLoc[8].GetPositionZ());
                                    pTemp->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
                                    pTemp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_OOC_NOT_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
                                    pTemp->SetReactState(REACT_PASSIVE);
                                }
                                if (Creature* pTemp = Unit::GetCreature((*me), m_pInstance->GetData64(NPC_ACIDMAW)))
                                {
                                    pTemp->GetMotionMaster()->MovePoint(0, ToCCommonLoc[9].GetPositionX(), ToCCommonLoc[9].GetPositionY(), ToCCommonLoc[9].GetPositionZ());
                                    pTemp->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
                                    pTemp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_OOC_NOT_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
                                    pTemp->SetReactState(REACT_PASSIVE);
                                }
                            }
                            m_uiUpdateTimer = 5000;
                            m_pInstance->SetData(TYPE_EVENT, 220);
                            break;
                        case 220:
                            if (Creature* pTemp = Unit::GetCreature((*me), m_pInstance->GetData64(NPC_DREADSCALE)))
                            {
                                pTemp->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_OOC_NOT_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
                                pTemp->SetReactState(REACT_AGGRESSIVE);
                                pTemp->SetInCombatWithZone();
                            }
                            if (Creature* pTemp = Unit::GetCreature((*me), m_pInstance->GetData64(NPC_ACIDMAW)))
                            {
                                pTemp->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_OOC_NOT_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
                                pTemp->SetReactState(REACT_AGGRESSIVE);
                                pTemp->SetInCombatWithZone();
                            }
                            m_pInstance->SetData(TYPE_EVENT, 230);
                            m_pInstance->DoUseDoorOrButton(m_pInstance->GetData64(GO_MAIN_GATE_DOOR));
                            break;
                        case 300:
                            DoScriptText(SAY_STAGE_0_05, me);
                            m_uiUpdateTimer = 8000;
                            m_pInstance->SetData(TYPE_EVENT, 305);
                            break;
                        case 305:
                            m_uiUpdateTimer = 3000;
                            m_pInstance->SetData(TYPE_EVENT, 310);
                            m_pInstance->DoUseDoorOrButton(m_pInstance->GetData64(GO_MAIN_GATE_DOOR));
                            break;
                        case 310:
                            if (m_pInstance->GetData(TYPE_BEASTS) != DONE)
                            {
                                me->SummonCreature(NPC_ICEHOWL, ToCCommonLoc[10].GetPositionX(), ToCCommonLoc[10].GetPositionY(), ToCCommonLoc[10].GetPositionZ(), 5, TEMPSUMMON_DEAD_DESPAWN);
                                if (Creature* pTemp = Unit::GetCreature((*me), m_pInstance->GetData64(NPC_ICEHOWL)))
                                {
                                    pTemp->GetMotionMaster()->MovePoint(0, ToCCommonLoc[5].GetPositionX(), ToCCommonLoc[5].GetPositionY(), ToCCommonLoc[5].GetPositionZ());
                                    pTemp->SetInCombatWithZone();
                                }
                            }
                            m_uiUpdateTimer = 5000;
                            m_pInstance->SetData(TYPE_EVENT, 315);
                            break;
                        case 315:
                            m_pInstance->DoUseDoorOrButton(m_pInstance->GetData64(GO_MAIN_GATE_DOOR));
                            m_pInstance->SetData(TYPE_EVENT, 320);
                            break;
                        case 400:
                            DoScriptText(SAY_STAGE_0_06, me);
                            m_uiUpdateTimer = 5000;
                            m_pInstance->SetData(TYPE_EVENT, 0);
                            break;
                        case 666:
                            DoScriptText(SAY_STAGE_0_WIPE, me);
                            m_uiUpdateTimer = 5000;
                            m_pInstance->SetData(TYPE_EVENT, 0);
                            break;
                        case 1010:
                            DoScriptText(SAY_STAGE_1_01, me);
                            m_uiUpdateTimer = 7000;
                            m_pInstance->DoUseDoorOrButton(m_pInstance->GetData64(GO_MAIN_GATE_DOOR));
                            me->SummonCreature(NPC_FIZZLEBANG, ToCCommonLoc[10].GetPositionX(), ToCCommonLoc[10].GetPositionY(), ToCCommonLoc[10].GetPositionZ(), 2, TEMPSUMMON_CORPSE_TIMED_DESPAWN, DESPAWN_TIME);
                            m_pInstance->SetData(TYPE_EVENT, 0);
                            break;
                        case 1180:
                            DoScriptText(SAY_STAGE_1_07, me);
                            m_uiUpdateTimer = 3000;
                            m_pInstance->SetData(TYPE_EVENT, 0);
                            break;
                        case 2000:
                            DoScriptText(SAY_STAGE_1_08, me);
                            m_uiUpdateTimer = 18000;
                            m_pInstance->SetData(TYPE_EVENT, 2010);
                            break;
                        case 2030:
                            DoScriptText(SAY_STAGE_1_11, me);
                            m_uiUpdateTimer = 5000;
                            m_pInstance->SetData(TYPE_EVENT, 0);
                            break;
                        case 3000:
                            DoScriptText(SAY_STAGE_2_01, me);
                            m_uiUpdateTimer = 12000;
                            m_pInstance->SetData(TYPE_EVENT, 3050);
                            break;
                        case 3001:
                            DoScriptText(SAY_STAGE_2_01, me);
                            m_uiUpdateTimer = 12000;
                            m_pInstance->SetData(TYPE_EVENT, 3051);
                            break;
                        case 3060:
                            DoScriptText(SAY_STAGE_2_03, me);
                            m_uiUpdateTimer = 5000;
                            m_pInstance->SetData(TYPE_EVENT, 3070);
                            break;
                        case 3061:
                            DoScriptText(SAY_STAGE_2_03, me);
                            m_uiUpdateTimer = 5000;
                            m_pInstance->SetData(TYPE_EVENT, 3071);
                            break;
                        //Summoning crusaders
                        case 3091:
                            me->SummonCreature(NPC_CHAMPIONS_CONTROLLER, ToCCommonLoc[1]);
                            if (Creature* pChampionController = Unit::GetCreature((*me), m_pInstance->GetData64(NPC_CHAMPIONS_CONTROLLER)))
                                pChampionController->AI()->SetData(0, HORDE);
                            m_uiUpdateTimer = 3000;
                            m_pInstance->SetData(TYPE_EVENT, 3092);
                            break;
                        //Summoning crusaders
                        case 3090:
                            me->SummonCreature(NPC_CHAMPIONS_CONTROLLER, ToCCommonLoc[1]);
                            if (Creature* pChampionController = Unit::GetCreature((*me), m_pInstance->GetData64(NPC_CHAMPIONS_CONTROLLER)))
                                pChampionController->AI()->SetData(0, ALLIANCE);
                            m_uiUpdateTimer = 3000;
                            m_pInstance->SetData(TYPE_EVENT, 3092);
                            break;
                        case 3092:
                            if (Creature* pChampionController = Unit::GetCreature((*me), m_pInstance->GetData64(NPC_CHAMPIONS_CONTROLLER)))
                                pChampionController->AI()->SetData(1, NOT_STARTED);
                            m_pInstance->SetData(TYPE_EVENT, 3095);
                            break;
                        //Crusaders battle end
                        case 3100:
                            DoScriptText(SAY_STAGE_2_06, me);
                            m_uiUpdateTimer = 5000;
                            m_pInstance->SetData(TYPE_EVENT, 0);
                            break;
                        case 4000:
                            DoScriptText(SAY_STAGE_3_01, me);
                            m_uiUpdateTimer = 13000;
                            m_pInstance->SetData(TYPE_EVENT, 4010);
                            break;
                        case 4010:
                            DoScriptText(SAY_STAGE_3_02, me);
                            m_pInstance->DoUseDoorOrButton(m_pInstance->GetData64(GO_MAIN_GATE_DOOR));
                            m_uiUpdateTimer = 3000;
                            m_pInstance->SetData(TYPE_EVENT, 4015);
                            break;
                        case 4015:
                            me->SummonCreature(NPC_LIGHTBANE, ToCCommonLoc[3].GetPositionX(), ToCCommonLoc[3].GetPositionY(), ToCCommonLoc[3].GetPositionZ(), 5, TEMPSUMMON_CORPSE_TIMED_DESPAWN, DESPAWN_TIME);
                            if (Creature* pTemp = Unit::GetCreature((*me), m_pInstance->GetData64(NPC_LIGHTBANE)))
                            {
                                pTemp->GetMotionMaster()->MovePoint(0, ToCCommonLoc[6].GetPositionX(), ToCCommonLoc[6].GetPositionY(), ToCCommonLoc[6].GetPositionZ());
                                pTemp->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
                                me->SetReactState(REACT_PASSIVE);
                            }
                            me->SummonCreature(NPC_DARKBANE, ToCCommonLoc[4].GetPositionX(), ToCCommonLoc[4].GetPositionY(), ToCCommonLoc[4].GetPositionZ(), 5, TEMPSUMMON_CORPSE_TIMED_DESPAWN, DESPAWN_TIME);
                            if (Creature* pTemp = Unit::GetCreature((*me), m_pInstance->GetData64(NPC_DARKBANE)))
                            {
                                pTemp->GetMotionMaster()->MovePoint(0, ToCCommonLoc[7].GetPositionX(), ToCCommonLoc[7].GetPositionY(), ToCCommonLoc[7].GetPositionZ());
                                pTemp->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
                                me->SetReactState(REACT_PASSIVE);
                            }
                            m_uiUpdateTimer = 5000;
                            m_pInstance->SetData(TYPE_EVENT, 4016);
                            break;
                        case 4016:
                            m_pInstance->SetData(TYPE_EVENT, 4017);
                            m_pInstance->DoUseDoorOrButton(m_pInstance->GetData64(GO_MAIN_GATE_DOOR));
                            break;
                        case 4040:
                            m_uiUpdateTimer = 60000;
                            m_pInstance->SetData(TYPE_EVENT, 5000);
                            break;
                        case 5000:
                            DoScriptText(SAY_STAGE_4_01, me);
                            m_uiUpdateTimer = 10000;
                            m_pInstance->SetData(TYPE_EVENT, 5005);
                            break;
                        case 5005:
                            m_uiUpdateTimer = 8000;
                            m_pInstance->SetData(TYPE_EVENT, 5010);
                            me->SummonCreature(NPC_LICH_KING_1, ToCCommonLoc[2].GetPositionX(), ToCCommonLoc[2].GetPositionY(), ToCCommonLoc[2].GetPositionZ(), 5);
                            break;
                        case 5020:
                            DoScriptText(SAY_STAGE_4_03, me);
                            m_uiUpdateTimer = 1000;
                            m_pInstance->SetData(TYPE_EVENT, 0);
                            break;
                        case 6000:
                            me->NearTeleportTo(AnubarakLoc[0].GetPositionX(), AnubarakLoc[0].GetPositionY(), AnubarakLoc[0].GetPositionZ(), 4.0f);
                            m_uiUpdateTimer = 20000;
                            m_pInstance->SetData(TYPE_EVENT, 6005);
                            break;
                        case 6005:
                            DoScriptText(SAY_STAGE_4_06, me);
                            m_uiUpdateTimer = 20000;
                            m_pInstance->SetData(TYPE_EVENT, 6010);
                            break;
                        case 6010:
                            if (IsHeroic())
                            {
                                DoScriptText(SAY_STAGE_4_07, me);
                                m_uiUpdateTimer = 60000;
                                m_pInstance->SetData(TYPE_ANUBARAK, SPECIAL);
                                m_pInstance->SetData(TYPE_EVENT, 6020);
                            } else m_pInstance->SetData(TYPE_EVENT, 6030);
                            break;
                        case 6020:
                            me->DespawnOrUnsummon();
                            m_uiUpdateTimer = 5000;
                            m_pInstance->SetData(TYPE_EVENT, 6030);
                            break;
                    }
                } else m_uiUpdateTimer -= uiDiff;
                m_pInstance->SetData(TYPE_EVENT_TIMER, m_uiUpdateTimer);
            }
 void EnterEvadeMode()
 {
     m_instance->DoUseDoorOrButton(m_instance->GetData64(GO_MAIN_GATE_DOOR));
     ScriptedAI::EnterEvadeMode();
 }
 void EnterEvadeMode()
 {
     instanceScript->DoUseDoorOrButton(instanceScript->GetData64(GO_MAIN_GATE_DOOR));
     boss_jormungarAI::EnterEvadeMode();
 }