void Load(const char* in) { if (!in) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(in); char dataHead1, dataHead2; uint16 version; uint16 data0, data1, data2, data3, data4; std::istringstream loadStream(in); loadStream >> dataHead1 >> dataHead2 >> version >> data0 >> data1 >> data2 >> data3 >> data4; if (dataHead1 == 'H' && dataHead2 == 'R') { uiEncounter[0] = data0; uiEncounter[1] = data1; uiEncounter[2] = data2; uiEncounter[3] = data3; uiIntroDone = data4; for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) if (uiEncounter[i] == IN_PROGRESS) uiEncounter[i] = NOT_STARTED; OpenDoor(uiFrontDoor); if (uiEncounter[1] == DONE) OpenDoor(uiFrostwornDoor); if (uiEncounter[2] == DONE) OpenDoor(uiArthasDoor); } else OUT_LOAD_INST_DATA_FAIL; OUT_LOAD_INST_DATA_COMPLETE; }
void instance_blackrock_depths::Load(const char* chrIn) { if (!chrIn) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(chrIn); std::istringstream loadStream(chrIn); loadStream >> 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]; for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) if (m_auiEncounter[i] == IN_PROGRESS && i != TYPE_IRON_HALL) // specific check for Iron Hall event: once started, it never stops, the Ironhall Guardians switch to flamethrower mode and never stop even after event completion, i.e. the event remains started if Magmus resets m_auiEncounter[i] = NOT_STARTED; OUT_LOAD_INST_DATA_COMPLETE; }
void instance_sunwell_plateau::Load(const char* in) { if (!in) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(in); std::istringstream loadStream(in); loadStream >> m_auiEncounter[0] >> m_auiEncounter[1] >> m_auiEncounter[2] >> m_auiEncounter[3] >> m_auiEncounter[4] >> m_auiEncounter[5]; for(uint8 i = 0; i < MAX_ENCOUNTER; ++i) { if (m_auiEncounter[i] == IN_PROGRESS) m_auiEncounter[i] = NOT_STARTED; } OUT_LOAD_INST_DATA_COMPLETE; }
void Load(const char* strIn) { if (!strIn) return; char dataHead1, dataHead2; std::istringstream loadStream(strIn); loadStream >> dataHead1 >> dataHead2; if (dataHead1 == 'H' && dataHead2 == 'R') { for (uint8 i = 0; i < MAX_ENCOUNTERS; ++i) { uint32 tmpState; loadStream >> tmpState; if (tmpState == IN_PROGRESS || tmpState > SPECIAL) tmpState = NOT_STARTED; SetBossState(i, EncounterState(tmpState)); } } }
void instance_arcatraz::Load(const char* chrIn) { if (!chrIn) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(chrIn); std::istringstream loadStream(chrIn); loadStream >> m_auiEncounter[0] >> m_auiEncounter[1] >> m_auiEncounter[2] >> m_auiEncounter[3] >> m_auiEncounter[4]; for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) { if (m_auiEncounter[i] == IN_PROGRESS) m_auiEncounter[i] = NOT_STARTED; } OUT_LOAD_INST_DATA_COMPLETE; }
void Load(const char* chrIn) { if (!chrIn) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(chrIn); std::istringstream loadStream(chrIn); loadStream >> 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]; for(uint8 i = 0; i < MAX_ENCOUNTER; ++i) if (m_auiEncounter[i] == IN_PROGRESS) // Do not load an encounter as "In Progress" - reset it instead. m_auiEncounter[i] = NOT_STARTED; OUT_LOAD_INST_DATA_COMPLETE; }
void Load(char const* str) { if (!str) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(str); char dataHead1, dataHead2; std::istringstream loadStream(str); loadStream >> dataHead1 >> dataHead2; if (dataHead1 == 'Z' && dataHead2 == 'A') { for (uint8 i = 0; i < EncounterCount; ++i) { uint32 tmpState; loadStream >> tmpState; if (tmpState == IN_PROGRESS || tmpState > SPECIAL) tmpState = NOT_STARTED; SetBossState(i, EncounterState(tmpState)); } loadStream >> ZulAmanState; loadStream >> SpeedRunTimer; loadStream >> ZulAmanBossCount; if (ZulAmanState == IN_PROGRESS && SpeedRunTimer && SpeedRunTimer <= 15) { events.ScheduleEvent(EVENT_UPDATE_ZULAMAN_TIMER, 60000); DoUpdateWorldState(WORLD_STATE_ZULAMAN_TIMER_ENABLED, 1); DoUpdateWorldState(WORLD_STATE_ZULAMAN_TIMER, SpeedRunTimer); } } else
void instance_sunken_temple::Load(const char* chrIn) { if (!chrIn) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(chrIn); std::istringstream loadStream(chrIn); loadStream >> m_auiEncounter[0] >> m_auiEncounter[1] >> m_auiEncounter[2] >> m_auiEncounter[3]; for(uint8 i = 0; i < MAX_ENCOUNTER; ++i) { // Here a bit custom, to have proper mechanics for the statue events if (m_auiEncounter[i] != DONE) m_auiEncounter[i] = NOT_STARTED; } OUT_LOAD_INST_DATA_COMPLETE; }
void InstanceScript::Load(char const* data) { if (!data) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(data); std::istringstream loadStream(data); if (ReadSaveDataHeaders(loadStream)) { ReadSaveDataBossStates(loadStream); ReadSaveDataMore(loadStream); } else OUT_LOAD_INST_DATA_FAIL; OUT_LOAD_INST_DATA_COMPLETE; }
void instance_trial_of_the_champion::Load(const char* strIn) { if (!strIn) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(strIn); std::istringstream loadStream(strIn); for(uint8 i = 0; i < MAX_ENCOUNTER; ++i) { loadStream >> m_auiEncounter[i]; if (m_auiEncounter[i] == IN_PROGRESS) m_auiEncounter[i] = NOT_STARTED; } OUT_LOAD_INST_DATA_COMPLETE; }
void instance_icecrown_spire::Load(const char* chrIn) { if (!chrIn) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(chrIn); std::istringstream loadStream(chrIn); for(uint8 i = 0; i < MAX_ENCOUNTERS; ++i) { loadStream >> m_auiEncounter[i]; if (m_auiEncounter[i] == IN_PROGRESS && i >= 1) m_auiEncounter[i] = NOT_STARTED; } OUT_LOAD_INST_DATA_COMPLETE; }
void Load(const char* chrIn) { if (!chrIn) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(chrIn); std::istringstream loadStream(chrIn); for (uint32 i = 0; i < MAX_ENCOUNTER; ++i) { loadStream >> m_auiEncounter[i]; if (m_auiEncounter[i] == IN_PROGRESS) m_auiEncounter[i] = NOT_STARTED; } OUT_LOAD_INST_DATA_COMPLETE; }
void instance_stratholme::Load(const char* chrIn) { if (!chrIn) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(chrIn); std::istringstream loadStream(chrIn); loadStream >> m_auiEncounter[0] >> m_auiEncounter[1] >> m_auiEncounter[2] >> m_auiEncounter[3] >> m_auiEncounter[4] >> m_auiEncounter[5] >> m_auiEncounter[6]; for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) { if (m_auiEncounter[i] == IN_PROGRESS) { m_auiEncounter[i] = NOT_STARTED; } } // Special Treatment for the Ziggurat-Bosses, as otherwise the event couldn't reload if (m_auiEncounter[TYPE_BARONESS] == DONE) { m_auiEncounter[TYPE_BARONESS] = SPECIAL; } if (m_auiEncounter[TYPE_NERUB] == DONE) { m_auiEncounter[TYPE_NERUB] = SPECIAL; } if (m_auiEncounter[TYPE_PALLID] == DONE) { m_auiEncounter[TYPE_PALLID] = SPECIAL; } OUT_LOAD_INST_DATA_COMPLETE; }
void Load(const char* in) { if (!in) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(in); char dataHead1, dataHead2; uint16 data0, data1, data2, data3, data4, data5, data6, data7, data8, data9, data10; std::istringstream loadStream(in); loadStream >> dataHead1 >> dataHead2 >> data0 >> data1 >> data2 >> data3 >> data4 >> data5 >> data6 >> data7 >> data8 >> data9 >> data10; if (dataHead1 == 'G' && dataHead2 == 'D') { m_auiEncounter[0] = data0; m_auiEncounter[1] = data1; m_auiEncounter[2] = data2; m_auiEncounter[3] = data3; m_auiEncounter[4] = data4; uiSladRanStatueState = GOState(data5); uiMoorabiStatueState = GOState(data6); uiDrakkariColossusStatueState = GOState(data7); uiGalDarahStatueState = GOState(data8); uiBridgeState = GOState(data9); uiCollisionState = GOState(data10); for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) if (m_auiEncounter[i] == IN_PROGRESS) m_auiEncounter[i] = NOT_STARTED; } else OUT_LOAD_INST_DATA_FAIL; OUT_LOAD_INST_DATA_COMPLETE; }
void Load(const char* in) { if (!in) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(in); char dataHead1, dataHead2; uint16 data0, data1, data2, data3, data4, data5, data6, data7, data8, data9, data10; std::istringstream loadStream(in); loadStream >> dataHead1 >> dataHead2 >> data0 >> data1 >> data2 >> data3 >> data4 >> data5 >> data6 >> data7 >> data8 >> data9 >> data10; if (dataHead1 == 'H' && dataHead2 == 'O') { uiEncounter[0] = data0; uiEncounter[1] = data1; uiEncounter[2] = data2; uiEncounter[3] = data3; uiEncounter[4] = data4; uiEncounter[5] = data5; uiEncounter[6] = data6; uiEncounter[7] = data7; uiEncounter[8] = data8; uiEncounter[9] = data9; uiEncounter[10] = data10; for(uint8 i=0; i<ENCOUNTERS; ++i) if (uiEncounter[i] == IN_PROGRESS) uiEncounter[i] = NOT_STARTED; } else OUT_LOAD_INST_DATA_FAIL; OUT_LOAD_INST_DATA_COMPLETE; }
void Load(const char* strIn) { if (!strIn) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(strIn); char dataHead1, dataHead2; std::istringstream loadStream(strIn); loadStream >> dataHead1 >> dataHead2; if (dataHead1 == 'U' && dataHead2 == 'U') { for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) { uint32 tmpState; loadStream >> tmpState; if (tmpState == IN_PROGRESS || tmpState > SPECIAL) tmpState = NOT_STARTED; SetBossState(i, EncounterState(tmpState)); // needed because of custom GetBossState(uint32 type) ? uiEncounter[i] = tmpState; } uint32 tmpState, tmpState2, tmpState3; loadStream >> tmpState >> tmpState2 >> tmpState3; ColossusData = tmpState; uiPlayerDeathFlag = tmpState2; uiAlgalonCountdown = tmpState3; } OUT_LOAD_INST_DATA_COMPLETE; }
void Load(const char* chrIn) { if (!chrIn) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(chrIn); std::istringstream loadStream(chrIn); loadStream >> m_auiEncounter[0] >> m_auiEncounter[1] >> m_auiEncounter[2]; for (uint8 i = 0; i < INSTANCE_RUINS_AQ_MAX_ENCOUNTER; ++i) if (m_auiEncounter[i] == IN_PROGRESS || m_auiEncounter[i] > SPECIAL) // Do not load an encounter as "In Progress" - reset it instead. m_auiEncounter[i] = NOT_STARTED; if (m_auiEncounter[TYPE_GENERAL_ANDOROV] = DONE) m_auiEncounter[TYPE_GENERAL_ANDOROV] = NOT_STARTED; OUT_LOAD_INST_DATA_COMPLETE; }
void Load(const char* in) { if (!in) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(in); std::istringstream loadStream(in); loadStream >> Encounters[0] >> Encounters[1] >> Encounters[2] >> Encounters[3] >> Encounters[4] >> Encounters[5] >> Encounters[6] >> Encounters[7] >> Encounters[8] >> Encounters[9]; for(uint8 i = 0; i < ENCOUNTERS; ++i) { if (Encounters[i] == IN_PROGRESS) Encounters[i] = NOT_STARTED; } OUT_LOAD_INST_DATA_COMPLETE; }
void instance_icecrown_citadel::Load(const char *strIn) { if (!strIn) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(strIn); std::istringstream loadStream(strIn); loadStream >> 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]; for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) { if (m_auiEncounter[i] == IN_PROGRESS) m_auiEncounter[i] = NOT_STARTED; } OUT_LOAD_INST_DATA_COMPLETE; }
void instance_zulfarrak::Load(const char* chrIn) { if (!chrIn) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(chrIn); std::istringstream loadStream(chrIn); loadStream >> 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]; for (uint32& i : m_auiEncounter) { if (i == IN_PROGRESS) i = NOT_STARTED; } OUT_LOAD_INST_DATA_COMPLETE; }
void Load(const char* in) { if (!in) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(in); std::istringstream loadStream(in); loadStream >> Encounter[0] >> Encounter[1] >> Encounter[2] >> Encounter[3] >> Encounter[4] >> Encounter[5]; for(uint8 i = 0; i < ENCOUNTERS; ++i) if (Encounter[i] == IN_PROGRESS) Encounter[i] = NOT_STARTED; if (Encounter[3] == DONE) HandleGameObject(GoTombExitGUID, 0); OUT_LOAD_INST_DATA_COMPLETE; }
void Load(const char* chrIn) { if (!chrIn) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(chrIn); std::istringstream loadStream(chrIn); loadStream >> m_auiEncounter[0] >> m_auiEncounter[1] >> m_auiEncounter[2] >> m_auiEncounter[3] >> m_auiEncounter[4] >> m_auiEncounter[5] >> m_auiEncounter[6]; //not changing m_uiEncounter[0], TYPE_EVENT_RUN must not reset to NOT_STARTED for(uint8 i = 1; i < MAX_ENCOUNTER; ++i) { if (m_auiEncounter[i] == IN_PROGRESS) m_auiEncounter[i] = NOT_STARTED; } OUT_LOAD_INST_DATA_COMPLETE; }
void Load(const char* chrIn) { if (!chrIn) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(chrIn); std::istringstream loadStream(chrIn); loadStream >> Encounters[0] >> Encounters[1] >> Encounters[2] >> Encounters[3] >> Encounters[4] >> Encounters[5] >> Encounters[6] >> Encounters[7] >> Encounters[8] >> Encounters[9]; //not changing m_uiEncounter[0], TYPE_EVENT_RUN must not reset to NOT_STARTED for(uint8 i = 0; i < ENCOUNTERS; ++i) { if (Encounters[i] == IN_PROGRESS) Encounters[i] = NOT_STARTED; } OUT_LOAD_INST_DATA_COMPLETE; }
void Load(const char* str) { if (!str) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(str); std::istringstream loadStream(str); for (uint32 i = 0; i < MAX_ENCOUNTER; ++i) { uint32 tmpState; loadStream >> tmpState; if (tmpState == IN_PROGRESS || tmpState > SPECIAL) tmpState = NOT_STARTED; SetData(i, tmpState); } OUT_LOAD_INST_DATA_COMPLETE; }
void Load(const char* in) { if (!in) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(in); std::istringstream loadStream(in); loadStream >> m_auiEncounter[0] >> m_auiEncounter[1] >> m_auiEncounter[2] >> m_auiEncounter[3] >> m_auiEncounter[4] >> m_auiEncounter[5] >> GhostKillCount; for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) if (m_auiEncounter[i] == IN_PROGRESS) m_auiEncounter[i] = NOT_STARTED; if (GhostKillCount > 0 && GhostKillCount < 7) GhostKillCount = 0; //reset tomb of seven event if (GhostKillCount >= 7) GhostKillCount = 7; OUT_LOAD_INST_DATA_COMPLETE; }
void Load(const char* strIn) { if (!strIn) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(strIn); char dataHead1, dataHead2; std::istringstream loadStream(strIn); loadStream >> dataHead1 >> dataHead2; if (dataHead1 == 'B' && dataHead2 == 'F') { loadStream >> _auiEncounter[0] >> _auiEncounter[1] >> _auiEncounter[2]; for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) if (_auiEncounter[i] == IN_PROGRESS || _auiEncounter[i] == FAIL) _auiEncounter[i] = NOT_STARTED; }
void Load(const char* in) { if( !in ) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(in); char dataHead1, dataHead2; std::istringstream loadStream(in); loadStream >> dataHead1 >> dataHead2; if( dataHead1 == 'T' && dataHead2 == 'O' ) { loadStream >> m_auiEncounter[0] >> m_auiEncounter[1] >> m_auiEncounter[2] >> m_auiEncounter[3] >> CentrifugeCount; for( uint8 i=0; i<MAX_ENCOUNTER; ++i ) if( m_auiEncounter[i] == IN_PROGRESS ) m_auiEncounter[i] = NOT_STARTED; }
void Load(const char* chrIn) { if (!chrIn) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(chrIn); std::istringstream loadStream(chrIn); loadStream >> m_auiEncounter[TYPE_MARROWGAR] >> m_auiEncounter[TYPE_DEATHWHISPER] >> m_auiEncounter[TYPE_BATTLE_OF_CANNONS] >> m_auiEncounter[TYPE_SAURFANG]; loadStream >> m_auiEncounter[TYPE_FESTERGUT] >> m_auiEncounter[TYPE_ROTFACE] >> m_auiEncounter[TYPE_PUTRICIDE] >> m_auiEncounter[TYPE_PRINCE_COUNCIL]; loadStream >> m_auiEncounter[TYPE_LANATHEL] >> m_auiEncounter[TYPE_DREAMWALKER] >> m_auiEncounter[TYPE_SINDRAGOSA] >> m_auiEncounter[TYPE_LICHKING]; for(uint8 i = 0; i < MAX_ENCOUNTER; ++i) { if (m_auiEncounter[i] == IN_PROGRESS) m_auiEncounter[i] = NOT_STARTED; } OUT_LOAD_INST_DATA_COMPLETE; }
void Load(const char* in) { if (!in) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(in); char dataHead1, dataHead2; std::istringstream loadStream(in); loadStream >> dataHead1 >> dataHead2; if (dataHead1 == 'S' && dataHead2 == 'B') { for (uint32 i = 0; i < MAX_ENCOUNTERS; ++i) { uint32 tmpState; loadStream >> tmpState; if (tmpState == IN_PROGRESS || tmpState > SPECIAL) tmpState = NOT_STARTED; // Below makes the player on-instance-entry display of bosses killed shit work (SMSG_RAID_INSTANCE_INFO). // Like, say an unbound player joins the party and he tries to enter the dungeon / raid. // This makes sure binding-to-instance-on-entrance confirmation box will properly display bosses defeated / available. SetBossState(i, EncounterState(tmpState)); // Load killed Hozen counter. uint32 temp = 0; loadStream >> temp; HozenKilled = temp; } } else OUT_LOAD_INST_DATA_FAIL;
void Load(char const* in) { if (!in) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(in); char dataHead1, dataHead2; uint16 data0, data1, data2, data3, data4; std::istringstream loadStream(in); loadStream >> dataHead1 >> dataHead2 >> data0 >> data1 >> data2 >> data3 >> data4; if (dataHead1 == 'P' && dataHead2 == 'S') { Encounter[0] = data0; Encounter[1] = data1; Encounter[2] = data2; Encounter[3] = data3; Encounter[4] = data4; for (uint8 data = 0; data < MAX_ENCOUNTER; ++data) { if (Encounter[data] == IN_PROGRESS) Encounter[data] = NOT_STARTED; SetData(data, Encounter[data]); } } else OUT_LOAD_INST_DATA_FAIL; OUT_LOAD_INST_DATA_COMPLETE; }