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; }; };
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; } }
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; } };
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; } }
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()); } }
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); } }
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); }
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; } }
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; } }