void HandleForge()
		{
			if(GameObject* pGO = GetGameObjectByGuid(m_fmData[ mUtgardeData[UTGARDE_FORGE_MASTER] - 1 ].mBellow))
				pGO->SetState(pGO->GetState() == 1 ? 0 : 1);

			if(GameObject* pGO = GetGameObjectByGuid(m_fmData[ mUtgardeData[UTGARDE_FORGE_MASTER] - 1 ].mFire))
				pGO->SetState(pGO->GetState() == 1 ? 0 : 1);

			if(GameObject* pGO = GetGameObjectByGuid(m_fmData[ mUtgardeData[UTGARDE_FORGE_MASTER] - 1 ].mAnvil))
				pGO->SetState(pGO->GetState() == 1 ? 0 : 1);
		}
		void OnCreatureDeath(Creature* pVictim, Unit* pKiller)
		{
			EncounterMap::iterator Iter = mEncounters.find(pVictim->GetEntry());
			if(Iter == mEncounters.end())
				return;

			(*Iter).second.mState = State_Finished;

			GameObject* pDoors = NULL;
			switch(pVictim->GetEntry())
			{
				case CN_GENERAL_BJARNGRIM:
					{
						SetInstanceData(Data_EncounterState, CN_GENERAL_BJARNGRIM, State_Finished);
						pDoors = GetGameObjectByGuid(mGeneralDoorsGUID);
						if(pDoors)
							pDoors->SetState(0);
					}
					break;
				case CN_VOLKHAN:
					{
						SetInstanceData(Data_EncounterState, CN_VOLKHAN, State_Finished);
						pDoors = GetGameObjectByGuid(mVolkhanDoorsGUID);
						if(pDoors)
							pDoors->SetState(0);
					}
					break;
				case CN_LOKEN:
					{
						SetInstanceData(Data_EncounterState, CN_LOKEN, State_Finished);
						pDoors = GetGameObjectByGuid(mLokenDoorsGUID);
						if(pDoors)
							pDoors->SetState(0);
					}
					break;
				case CN_IONAR:
					{
						SetInstanceData(Data_EncounterState, CN_IONAR, State_Finished);
						pDoors = GetGameObjectByGuid(mIonarDoors1GUID);
						if(pDoors)
							pDoors->SetState(0);

						pDoors = GetGameObjectByGuid(mIonarDoors2GUID);
						if(pDoors)
							pDoors->SetState(0);
					}
					break;
			};
		};
Esempio n. 3
0
		void SetInstanceData(uint32 pType, uint32 pIndex, uint32 pData)
		{
			if(pType != Data_EncounterState || pIndex == 0)
				return;

			EncounterMap::iterator Iter = mEncounters.find(pIndex);
			if(Iter == mEncounters.end())
				return;

			(*Iter).second.mState = (EncounterState)pData;

			if(pIndex != CN_GAL_DARAH)
				return;

			GameObject* pDoors = GetGameObjectByGuid(mCombatDoorsGUID);
			if(!pDoors)
				return;

			switch(pData)
			{
				case State_InProgress:
					pDoors->SetState(pDoors->GetState() == GAMEOBJECT_STATE_CLOSED ? GAMEOBJECT_STATE_OPEN : GAMEOBJECT_STATE_CLOSED);
					break;
				case State_NotStarted:
				case State_Performed:
				case State_Finished:
					pDoors->SetState(pDoors->GetState() == GAMEOBJECT_STATE_CLOSED ? GAMEOBJECT_STATE_OPEN : GAMEOBJECT_STATE_CLOSED);
					break;
			}
		}
Esempio n. 4
0
        void SetInstanceData(uint32 pType, uint32 pIndex, uint32 pData)
        {
            switch (pIndex)
            {
                case UTGARDE_FORGE_MASTER:
                    {
                        mUtgardeData[UTGARDE_FORGE_MASTER]++;
                        HandleForge();
                    };
                    break;
                case UTGARDE_INGVAR:
                    {
                        mUtgardeData[UTGARDE_INGVAR] = pData;

                        if (pData == State_Finished)
                        {
                            GameObject* pGO = NULL;
                            for (int i = 0; i < 2; ++i)
                            {
                                pGO = GetGameObjectByGuid(mIngvarDoors[i]);
                                if (pGO)
                                    pGO->SetState(pGO->GetState() == 1 ? 0 : 1);
                            };
                        };
                    }
                    break;
            }


        };
Esempio n. 5
0
 void OnCreatureDeath(Creature* pCreature, Unit* pUnit)
 {
     switch (pCreature->GetEntry())
     {
         case NPC_RHAHK_ZOR:
         {
             GameObject* pDoor1 = GetGameObjectByGuid(mFactoryDoor_GUID);
             if (pDoor1 != NULL)
                 pDoor1->SetState(State_Active);
         }break;
         case NPC_SNEEDS_SHREDDER:
             SpawnCreature(NPC_SNEED, pCreature->GetPositionX(), pCreature->GetPositionY(), pCreature->GetPositionZ(), pCreature->GetOrientation());
             break;
         case NPC_GILNID:
         {
             GameObject* pDoor2 = FindClosestGameObjectOnMap(GO_HEAVY_DOOR, Doors[0].x, Doors[0].y, Doors[0].z);
             if (pDoor2 != NULL)
                 pDoor2->SetState(State_Active);
         }break;
         case NPC_SNEED:
         {
             GameObject* pDoor3 = FindClosestGameObjectOnMap(GO_HEAVY_DOOR, Doors[1].x, Doors[1].y, Doors[1].z);
             if (pDoor3 != NULL)
                 pDoor3->SetState(State_Active);
         }break;
     }
 }
Esempio n. 6
0
    void SetLocaleInstanceData(uint32 /*pType*/, uint32 pIndex, uint32 pData)
    {
        switch (pIndex)
        {
            case UTGARDE_FORGE_MASTER:
            {
                mUtgardeData[UTGARDE_FORGE_MASTER]++;
                HandleForge();
            } break;
            case UTGARDE_INGVAR:
            {
                mUtgardeData[UTGARDE_INGVAR] = pData;

                if (pData == Finished)
                {
                    GameObject* pGO = nullptr;
                    for (uint8 i = 0; i < 2; ++i)
                    {
                        pGO = GetGameObjectByGuid(mIngvarDoors[i]);
                        if (pGO)
                        {
                            pGO->setState(pGO->getState() == 1 ? 0 : 1);
                        }
                    }
                }
            } break;
        }
    }
void MoonInstanceScript::AddLeverDoorStateByGuid(GameObject * pLever, uint32 pDoorGuid)
{
	if(GameObject* pGo = GetGameObjectByGuid(pDoorGuid))
	{
		pGo->SetState(pGo->GetState() == GAMEOBJECT_STATE_CLOSED ? GAMEOBJECT_STATE_OPEN : GAMEOBJECT_STATE_CLOSED);
		pLever->SetState(pGo->GetState());
	}
}
Esempio n. 8
0
    void HandleForge()
    {
        GameObject* pGO = nullptr;
        pGO = GetGameObjectByGuid(m_fmData[mUtgardeData[UTGARDE_FORGE_MASTER] - 1].mBellow);
        if (pGO)
        {
            pGO->setState(pGO->getState() == 1 ? 0 : 1);
        }

        pGO = GetGameObjectByGuid(m_fmData[mUtgardeData[UTGARDE_FORGE_MASTER] - 1].mFire);
        if (pGO)
        {
            pGO->setState(pGO->getState() == 1 ? 0 : 1);
        }

        pGO = GetGameObjectByGuid(m_fmData[mUtgardeData[UTGARDE_FORGE_MASTER] - 1].mAnvil);
        if (pGO)
        {
            pGO->setState(pGO->getState() == 1 ? 0 : 1);
        }
    }
Esempio n. 9
0
		void OnGameObjectActivate(GameObject* pGameObject, Player* pPlayer)
		{
			switch(pGameObject->GetEntry())
			{
				case GO_ALTAR1_SLADRAN:
					{
						if(GameObject* pStatue = GetGameObjectByGuid(mSladranStatueGUID))
							pStatue->SetState(pStatue->GetState() == GAMEOBJECT_STATE_CLOSED ? GAMEOBJECT_STATE_OPEN : GAMEOBJECT_STATE_CLOSED);

						pGameObject->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNCLICKABLE);
						mStatueCount++;
					}break;
				case GO_ALTAR2_COLOSSUS:
					{
						if(GameObject* pStatue = GetGameObjectByGuid(mColossusStatueGUID))
							pStatue->SetState(pStatue->GetState() == GAMEOBJECT_STATE_CLOSED ? GAMEOBJECT_STATE_OPEN : GAMEOBJECT_STATE_CLOSED);

						pGameObject->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNCLICKABLE);
						mStatueCount++;
					}break;
				case GO_ALTAR3_MOORABI:
					{
						if(GameObject* pStatue = GetGameObjectByGuid(mMoorabiStatueGUID))
							pStatue->SetState(pStatue->GetState() == GAMEOBJECT_STATE_CLOSED ? GAMEOBJECT_STATE_OPEN : GAMEOBJECT_STATE_CLOSED);

						pGameObject->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNCLICKABLE);
						mStatueCount++;
					}break;
			}

			if(mStatueCount < 3)
				return;

			if(GameObject* pTrapDoors = GetGameObjectByGuid(mTrapDoorGUID))
				pTrapDoors->SetState(pTrapDoors->GetState() == 1 ? GAMEOBJECT_STATE_OPEN : 1);

			if(GameObject* pCoilision = GetGameObjectByGuid(mCoilisionGUID))
				pCoilision->SetState(pCoilision->GetState() == 1 ? GAMEOBJECT_STATE_OPEN : 1);
		}
Esempio n. 10
0
 void OnGameObjectActivate(GameObject* pGameObject, Player* pPlayer)
 {
     switch (pGameObject->GetEntry())
     {
         case GO_DEFIAS_CANNON:
         {
             GameObject* pDoor4 = GetGameObjectByGuid(mIronCladDoor_GUID);
             if (pDoor4 != NULL && pDoor4->GetState() != 2)
                 pDoor4->SetState(2);
         }break;
         case GO_FACTORY_DOOR_LEVER:
         {
             GameObject* pDoor5 = GetGameObjectByGuid(mFactoryDoor_GUID);
             if (pDoor5 != NULL)
                 pDoor5->SetState(pDoor5->GetState() == State_Inactive ? State_Active : State_Inactive);
         }break;
         case GO_IRONCLAD_LEVER:
         {
             GameObject* pDoor6 = GetGameObjectByGuid(mFactoryDoor_GUID);
             //Door can be opened by lever if state isn't 2
             if (pDoor6 != NULL && pDoor6->GetState() != 2)
                 pDoor6->SetState(pDoor6->GetState() == State_Inactive ? State_Active : State_Inactive);
         }break;
         case GO_SNEED_DOOR_LEVER:
         {
             GameObject* pDoor7 = FindClosestGameObjectOnMap(GO_HEAVY_DOOR, Doors[1].x, Doors[1].y, Doors[1].z);
             if (pDoor7 != NULL)
                 pDoor7->SetState(pDoor7->GetState() == State_Inactive ? State_Active : State_Inactive);
         }break;
         case GO_GILNID_DOOR_LEVER:
         {
             GameObject* pDoor8 = FindClosestGameObjectOnMap(GO_HEAVY_DOOR, Doors[0].x, Doors[0].y, Doors[0].z);
             if (pDoor8 != NULL)
                 pDoor8->SetState(pDoor8->GetState() == State_Inactive ? State_Active : State_Inactive);
         }break;
     }
 }
Esempio n. 11
0
		void OnCreatureDeath(Creature* pVictim, Unit* pKiller)
		{
			EncounterMap::iterator Iter = mEncounters.find(pVictim->GetEntry());
			if(Iter == mEncounters.end())
				return;

			(*Iter).second.mState = State_Finished;

			GameObject* pDoors = NULL;
			GameObject* pAltar = NULL;
			switch(pVictim->GetEntry())
			{
				case CN_MOORABI:
					{
						SetInstanceData(Data_EncounterState, CN_MOORABI, State_Finished);
						if(pAltar = GetGameObjectByGuid(mMoorabiAltarGUID))
							pAltar->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNCLICKABLE);

						if(mInstance->iInstanceMode != MODE_HEROIC)
							return;

						if(pDoors = GetGameObjectByGuid(mEckDoorsGUID))
							pDoors->SetState(GAMEOBJECT_STATE_OPEN);
					}
					break;
				case CN_GAL_DARAH:
					{
						SetInstanceData(Data_EncounterState, CN_GAL_DARAH, State_Finished);
						if(pDoors = GetGameObjectByGuid(mDoor1GUID))
							pDoors->SetState(GAMEOBJECT_STATE_OPEN);

						if(pDoors = GetGameObjectByGuid(mDoor2GUID))
							pDoors->SetState(GAMEOBJECT_STATE_OPEN);
					}
					break;
				case CN_SLADRAN:
					{
						SetInstanceData(Data_EncounterState, CN_SLADRAN, State_Finished);
						if(pAltar = GetGameObjectByGuid(mSladranAltarGUID))
							pAltar->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNCLICKABLE);
					}
					break;
				case CN_DRAKKARI_COLOSSUS:
					{
						SetInstanceData(Data_EncounterState, CN_DRAKKARI_COLOSSUS, State_Finished);
						if(pAltar = GetGameObjectByGuid(mColossusAltarGUID))
							pAltar->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_UNCLICKABLE);
					}
					break;
				case CN_ECK: SetInstanceData(Data_EncounterState, CN_ECK, State_Finished); break;
			}
		}