void instance_naxxramas::SetData(uint32 uiType, uint32 uiData) { switch(uiType) { case TYPE_ANUB_REKHAN: m_auiEncounter[0] = uiData; SwitchDoor(uiData, m_uiAnubDoorGUID); if (uiData == DONE) SwitchDoor(uiData, m_uiAnubGateGUID); break; case TYPE_FAERLINA: m_auiEncounter[1] = uiData; SwitchDoor(uiData, m_uiFaerWebGUID); if (uiData == DONE) { SwitchDoor(uiData, m_uiFaerDoorGUID); SwitchDoor(uiData, m_uiMaexOuterGUID); } break; case TYPE_MAEXXNA: m_auiEncounter[2] = uiData; SwitchDoor(uiData, m_uiMaexInnerGUID); if (uiData == DONE) { SwitchDoor(uiData, m_uiAracEyeRampGUID); DoRespawnGameObject(m_uiAracPortalGUID, 30*MINUTE); DoTaunt(); } break; case TYPE_NOTH: m_auiEncounter[3] = uiData; SwitchDoor(uiData, m_uiNothEntryDoorGUID); if (uiData == DONE) { SwitchDoor(uiData, m_uiNothExitDoorGUID); SwitchDoor(uiData, m_uiHeigEntryDoorGUID); } break; case TYPE_HEIGAN: m_auiEncounter[4] = uiData; SwitchDoor(uiData, m_uiHeigEntryDoorGUID); if (uiData == DONE) { SwitchDoor(uiData, m_uiMiliEyeRampGUID); SwitchDoor(uiData, m_uiHeigExitDoorGUID); } break; case TYPE_LOATHEB: m_auiEncounter[5] = uiData; SwitchDoor(uiData, m_uiLoathebDoorGUID); if (uiData == DONE) { SwitchDoor(uiData, m_uiPlagEyeRampGUID); DoRespawnGameObject(m_uiPlagPortalGUID, 30*MINUTE); DoTaunt(); } break; case TYPE_RAZUVIOUS: m_auiEncounter[6] = uiData; break; case TYPE_GOTHIK: switch(uiData) { case IN_PROGRESS: SwitchDoor(uiData, m_uiGothikEntryDoorGUID); SwitchDoor(uiData, m_uiGothCombatGateGUID); break; case SPECIAL: SwitchDoor(uiData, m_uiGothCombatGateGUID); break; case FAIL: if (m_auiEncounter[7] == IN_PROGRESS) SwitchDoor(uiData, m_uiGothCombatGateGUID); SwitchDoor(uiData, m_uiGothikEntryDoorGUID); break; case DONE: SwitchDoor(uiData, m_uiGothikEntryDoorGUID); SwitchDoor(uiData, m_uiGothikExitDoorGUID); SwitchDoor(uiData, m_uiHorsemenDoorGUID); break; } m_auiEncounter[7] = uiData; break; case TYPE_FOUR_HORSEMEN: m_auiEncounter[8] = uiData; SwitchDoor(uiData, m_uiHorsemenDoorGUID); if (uiData == DONE) { SwitchDoor(uiData, m_uiMiliEyeRampGUID); DoRespawnGameObject(m_uiMiliPortalGUID, 30*MINUTE); DoRespawnGameObject(m_uiHorsemenChestGUID, 30*MINUTE); DoTaunt(); } break; case TYPE_PATCHWERK: m_auiEncounter[9] = uiData; if (uiData == DONE) SwitchDoor(uiData, m_uiPathExitDoorGUID); break; case TYPE_GROBBULUS: m_auiEncounter[10] = uiData; break; case TYPE_GLUTH: m_auiEncounter[11] = uiData; if (uiData == DONE) { SwitchDoor(uiData, m_uiGlutExitDoorGUID); SwitchDoor(uiData, m_uiThadDoorGUID); } break; case TYPE_THADDIUS: m_auiEncounter[12] = uiData; SwitchDoor(uiData, m_uiThadDoorGUID); if (uiData == DONE) { SwitchDoor(uiData, m_uiConsEyeRampGUID); DoRespawnGameObject(m_uiConsPortalGUID, 30*MINUTE); DoTaunt(); } break; case TYPE_SAPPHIRON: m_auiEncounter[13] = uiData; if (uiData == DONE) SwitchDoor(uiData, m_uiKelthuzadDoorGUID); break; case TYPE_KELTHUZAD: m_auiEncounter[14] = uiData; SwitchDoor(uiData, m_uiKelthuzadExitDoorGUID); break; case TYPE_ZELIEK: m_auiEncounter[15] = uiData; if (uiData == NOT_STARTED && m_auiEncounter[16] != IN_PROGRESS && m_auiEncounter[17] != IN_PROGRESS && m_auiEncounter[18] != IN_PROGRESS) SetData(TYPE_FOUR_HORSEMEN, NOT_STARTED); if (uiData == IN_PROGRESS) SetData(TYPE_FOUR_HORSEMEN, IN_PROGRESS); break; case TYPE_THANE: m_auiEncounter[16] = uiData; if (uiData == NOT_STARTED && m_auiEncounter[15] != IN_PROGRESS && m_auiEncounter[17] != IN_PROGRESS && m_auiEncounter[18] != IN_PROGRESS) SetData(TYPE_FOUR_HORSEMEN, NOT_STARTED); if (uiData == IN_PROGRESS) SetData(TYPE_FOUR_HORSEMEN, IN_PROGRESS); break; case TYPE_BLAUMEUX: m_auiEncounter[17] = uiData; if (uiData == NOT_STARTED && m_auiEncounter[16] != IN_PROGRESS && m_auiEncounter[15] != IN_PROGRESS && m_auiEncounter[18] != IN_PROGRESS) SetData(TYPE_FOUR_HORSEMEN, NOT_STARTED); if (uiData == IN_PROGRESS) SetData(TYPE_FOUR_HORSEMEN, IN_PROGRESS); break; case TYPE_RIVENDARE: m_auiEncounter[18] = uiData; if (uiData == NOT_STARTED && m_auiEncounter[16] != IN_PROGRESS && m_auiEncounter[17] != IN_PROGRESS && m_auiEncounter[15] != IN_PROGRESS) SetData(TYPE_FOUR_HORSEMEN, NOT_STARTED); if (uiData == IN_PROGRESS) SetData(TYPE_FOUR_HORSEMEN, IN_PROGRESS); break; } if (m_auiEncounter[15] == DONE && m_auiEncounter[16] == DONE && m_auiEncounter[17] == DONE && m_auiEncounter[18] && m_auiEncounter[8] != DONE ) SetData(TYPE_FOUR_HORSEMEN, DONE); if (uiData == DONE) { OUT_SAVE_INST_DATA; std::ostringstream saveStream; saveStream << m_auiEncounter[0] << " " << m_auiEncounter[1] << " " << m_auiEncounter[2] << " " << m_auiEncounter[3] << " " << m_auiEncounter[4] << " " << m_auiEncounter[5] << " " << m_auiEncounter[6] << " " << m_auiEncounter[7] << " " << m_auiEncounter[8] << " " << m_auiEncounter[9] << " " << m_auiEncounter[10] << " " << m_auiEncounter[11] << " " << m_auiEncounter[12] << " " << m_auiEncounter[13] << " " << m_auiEncounter[14]; strInstData = saveStream.str(); SaveToDB(); OUT_SAVE_INST_DATA_COMPLETE; } }
void instance_naxxramas::SetData(uint32 uiType, uint32 uiData) { switch(uiType) { case TYPE_ANUB_REKHAN: m_auiEncounter[0] = uiData; SwitchDoor(uiData, m_uiAnubDoorGUID); if (uiData == DONE) SwitchDoor(uiData, m_uiAnubGateGUID); break; case TYPE_FAERLINA: m_auiEncounter[1] = uiData; SwitchDoor(uiData, m_uiFaerWebGUID); if (uiData == DONE) { SwitchDoor(uiData, m_uiFaerDoorGUID); SwitchDoor(uiData, m_uiMaexOuterGUID); } break; case TYPE_MAEXXNA: m_auiEncounter[2] = uiData; SwitchDoor(uiData, m_uiMaexInnerGUID); if (uiData == DONE) { SwitchDoor(uiData, m_uiAracEyeRampGUID); DoRespawnGameObject(m_uiAracPortalGUID, 30*MINUTE); } break; case TYPE_NOTH: m_auiEncounter[3] = uiData; SwitchDoor(uiData, m_uiNothEntryDoorGUID); if (uiData == DONE) { SwitchDoor(uiData, m_uiNothExitDoorGUID); SwitchDoor(uiData, m_uiHeigEntryDoorGUID); } break; case TYPE_HEIGAN: m_auiEncounter[4] = uiData; SwitchDoor(uiData, m_uiHeigEntryDoorGUID); if (uiData == DONE) SwitchDoor(uiData, m_uiMiliEyeRampGUID); SwitchDoor(uiData, m_uiHeigExitDoorGUID); break; case TYPE_LOATHEB: m_auiEncounter[5] = uiData; SwitchDoor(uiData, m_uiLoathebDoorGUID); if (uiData == DONE) { SwitchDoor(uiData, m_uiPlagEyeRampGUID); DoRespawnGameObject(m_uiPlagPortalGUID, 30*MINUTE); } break; case TYPE_RAZUVIOUS: m_auiEncounter[6] = uiData; if (uiData == DONE) SwitchDoor(uiData, m_uiGothikEntryDoorGUID); break; case TYPE_GOTHIK: switch(uiData) { case IN_PROGRESS: SwitchDoor(uiData, m_uiGothikEntryDoorGUID); SwitchDoor(uiData, m_uiGothCombatGateGUID); break; case SPECIAL: SwitchDoor(uiData, m_uiGothCombatGateGUID); break; case FAIL: if (m_auiEncounter[7] == IN_PROGRESS) SwitchDoor(uiData, m_uiGothCombatGateGUID); SwitchDoor(uiData, m_uiGothikEntryDoorGUID); break; case DONE: SwitchDoor(uiData, m_uiGothikEntryDoorGUID); SwitchDoor(uiData, m_uiGothikExitDoorGUID); SwitchDoor(uiData, m_uiHorsemenDoorGUID); break; } m_auiEncounter[7] = uiData; break; case TYPE_FOUR_HORSEMEN: m_auiEncounter[8] = uiData; SwitchDoor(uiData, m_uiHorsemenDoorGUID); if (uiData == DONE) { SwitchDoor(uiData, m_uiMiliEyeRampGUID); DoRespawnGameObject(m_uiMiliPortalGUID, 30*MINUTE); DoRespawnGameObject(m_uiHorsemenChestGUID, 30*MINUTE); } break; case TYPE_PATCHWERK: m_auiEncounter[9] = uiData; if (uiData == DONE) SwitchDoor(uiData, m_uiPathExitDoorGUID); break; case TYPE_GROBBULUS: m_auiEncounter[10] = uiData; break; case TYPE_GLUTH: m_auiEncounter[11] = uiData; if (uiData == DONE) { SwitchDoor(uiData, m_uiGlutExitDoorGUID); SwitchDoor(uiData, m_uiThadDoorGUID); } break; case TYPE_THADDIUS: m_auiEncounter[12] = uiData; SwitchDoor(uiData, m_uiThadDoorGUID); if (uiData == DONE) { SwitchDoor(uiData, m_uiConsEyeRampGUID); DoRespawnGameObject(m_uiConsPortalGUID, 30*MINUTE); } break; case TYPE_SAPPHIRON: m_auiEncounter[13] = uiData; if (uiData == DONE) SwitchDoor(uiData, m_uiKelthuzadDoorGUID); break; case TYPE_KELTHUZAD: switch(uiData) { case SPECIAL: { Map::PlayerList const& lPlayers = instance->GetPlayers(); if (lPlayers.isEmpty()) return; bool bCanBegin = true; for(Map::PlayerList::const_iterator itr = lPlayers.begin(); itr != lPlayers.end(); ++itr) { if (Player* pPlayer = itr->getSource()) { if (!pPlayer->IsWithinDist2d(m_fChamberCenterX, m_fChamberCenterY, 15.0f)) bCanBegin = false; } } if (bCanBegin) m_auiEncounter[14] = IN_PROGRESS; break; } case FAIL: m_auiEncounter[14] = NOT_STARTED; break; default: m_auiEncounter[14] = uiData; break; } break; } if (uiData == DONE) { OUT_SAVE_INST_DATA; std::ostringstream saveStream; saveStream << m_auiEncounter[0] << " " << m_auiEncounter[1] << " " << m_auiEncounter[2] << " " << m_auiEncounter[3] << " " << m_auiEncounter[4] << " " << m_auiEncounter[5] << " " << m_auiEncounter[6] << " " << m_auiEncounter[7] << " " << m_auiEncounter[8] << " " << m_auiEncounter[9] << " " << m_auiEncounter[10] << " " << m_auiEncounter[11] << " " << m_auiEncounter[12] << " " << m_auiEncounter[13] << " " << m_auiEncounter[14]; strInstData = saveStream.str(); SaveToDB(); OUT_SAVE_INST_DATA_COMPLETE; } }