void Load(const char* data) { if (!data) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(data); char dataHead1, dataHead2; uint16 data0; std::istringstream loadStream(data); loadStream >> dataHead1 >> dataHead2 >> data0; if (dataHead1 == 'E' && dataHead2 == 'E') { if (data0 == IN_PROGRESS || data0 > SPECIAL) data0 = NOT_STARTED; SetBossState(BOSS_MALYGOS, EncounterState(data0)); } else OUT_LOAD_INST_DATA_FAIL; OUT_LOAD_INST_DATA_COMPLETE; }
void Load(const char * 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 == 'N' && dataHead2 == 'X') { for(int i = 0; i < MAX_BOSS_NUMBER; ++i) { uint32 tmpState; loadStream >> tmpState; if (tmpState == IN_PROGRESS || tmpState > SPECIAL) tmpState = NOT_STARTED; SetBossState(i, EncounterState(tmpState)); } loadStream >> PlayerDeathCount >> HeiganPlayerDeathCount; } else
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 == 'R' && dataHead2 == 'S') { 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)); } // Xinef: additional check if (GetBossState(DATA_HALION_INTRO_DONE) != DONE) { SetBossState(DATA_HALION_INTRO1, NOT_STARTED); SetBossState(DATA_HALION_INTRO2, NOT_STARTED); } } else
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 == 'S' && dataHead2 == 'L') { for (uint32 i = 0; i < EncounterCount; ++i) { uint32 tmpState; loadStream >> tmpState; if (tmpState == IN_PROGRESS || tmpState > SPECIAL) tmpState = NOT_STARTED; SetBossState(i, EncounterState(tmpState)); } } else
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 == 'S' && dataHead2 == 'H') { for (uint8 i = 0; i < ENCOUNTER_COUNT; ++i) { uint32 tmpState; loadStream >> tmpState; if (tmpState == IN_PROGRESS || tmpState > SPECIAL) tmpState = NOT_STARTED; SetBossState(i, EncounterState(tmpState)); } loadStream >> RescueTimer; } else
void Load(const char* strIn) override { 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 == 'N' && dataHead2 == 'X') { 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 >> playerDied; } 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 == 'V' && dataHead2 == 'P') { 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)); } } else OUT_LOAD_INST_DATA_FAIL;
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; if (i == TYPE_COLOSSUS) SetData(i, tmpState); else SetBossState(i, EncounterState(tmpState)); } } OUT_LOAD_INST_DATA_COMPLETE; }
void SetData(uint32 type, uint32 data) { SetBossState(type, EncounterState(data)); if (data == DONE) SaveToDB(); }
void SetData(uint32 type, uint32 data) override { switch (type) { case DATA_HANDLE_CORBORUS_ROCKDOOR: HandleGameObject(corborusRockDoorGUID, true); break; case DATA_MILLHOUSE_EVENT_FACE: MillhouseEvent_Face(); break; case DATA_MILLHOUSE_EVENT_KNOCKBACK: MillhouseEvent_Knockback(); break; case DATA_MILLHOUSE_EVENT_DESPAWN: MillhouseEvent_Despawn(); break; case DATA_SLABHIDE_INTRO: slabhideIntro = EncounterState(data); break; case DATA_SLABHIDE_ROCK_WALL: // Handles rock walls for (std::vector<ObjectGuid>::iterator itr = slabhideRockWallGUIDs.begin(); itr != slabhideRockWallGUIDs.end(); ++itr) HandleGameObject((*itr), data ? true : false); break; default: break; } }
void Load(const char* 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 == 'M' && dataHead2 == 'E') { for (uint32 i = 0; i < MAX_ENCOUNTER; ++i) { uint32 tmpState; loadStream >> tmpState; if (tmpState == IN_PROGRESS || tmpState > SPECIAL) tmpState = NOT_STARTED; SetBossState(i, EncounterState(tmpState)); } loadStream >> _passageEncounter; if (_passageEncounter == ENCOUNTER_PASSAGE_DONE) _passageEncounter = ENCOUNTER_PASSAGE_PHASE6; } else
void Load(const char* strIn) override { if (!strIn) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(strIn); std::istringstream loadStream(strIn); 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)); } loadStream >> TrialCounter; EventStage = 0; OUT_LOAD_INST_DATA_COMPLETE; }
void Load(char const* 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)); } uint32 tempState; loadStream >> tempState; if (tempState == IN_PROGRESS || tempState > SPECIAL) tempState = NOT_STARTED; SetData(DATA_COLOSSUS, tempState); loadStream >> _algalonTimer; loadStream >> tempState; _algalonSummoned = tempState != 0; if (_algalonSummoned && GetBossState(BOSS_ALGALON) != DONE) { _summonAlgalon = true; if (_algalonTimer && _algalonTimer <= 60) { _events.ScheduleEvent(EVENT_UPDATE_ALGALON_TIMER, 60000); DoUpdateWorldState(WORLD_STATE_ALGALON_TIMER_ENABLED, 1); DoUpdateWorldState(WORLD_STATE_ALGALON_DESPAWN_TIMER, _algalonTimer); } } } OUT_LOAD_INST_DATA_COMPLETE; }
void InstanceScript::ReadSaveDataBossStates(std::istringstream& data) { uint32 bossId = 0; for (std::vector<BossInfo>::iterator i = bosses.begin(); i != bosses.end(); ++i, ++bossId) { uint32 buff; data >> buff; if (buff == IN_PROGRESS || buff == SPECIAL) buff = NOT_STARTED; if (buff < TO_BE_DECIDED) SetBossState(bossId, EncounterState(buff)); } }
void Load(const char* strIn) { if (!strIn) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(strIn); char dataHead1, dataHead2; uint32 data1,data2,data3; 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; loadStream >> tmpState >> tmpState2; ColossusData = tmpState; uiPlayerDeathFlag = tmpState2; loadStream >> data1; loadStream >> data2; loadStream >> data3; SetData(DATA_ALGALON_INTRO, data1); SignalTimerState = data2; SignalTimerMinutes = data3; } OUT_LOAD_INST_DATA_COMPLETE; }
void Load(char const* strIn) { if (!strIn) { OUT_LOAD_INST_DATA_FAIL; return; } OUT_LOAD_INST_DATA(strIn); char dataHead1, dataHead2; uint32 data1,data2,data3; 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; if (i == DATA_COLOSSUS) SetData(i, tmpState); else SetBossState(i, EncounterState(tmpState)); Encounter[i] = tmpState; } loadStream >> data1; loadStream >> data2; loadStream >> data3; SetData(DATA_ALGALON_INTRO, data1); SignalTimerState = data2; SignalTimerMinutes = data3; uint32 tmpState, tmpState2; loadStream >> tmpState >> tmpState2; ColossusData = tmpState; PlayerDeathFlag = tmpState2; } OUT_LOAD_INST_DATA_COMPLETE; }
void Load(const char* in) { if (!in) return; char dataHead1, dataHead2; std::istringstream loadStream(in); loadStream >> dataHead1 >> dataHead2; if (dataHead1 == 'G' && dataHead2 == 'D') { 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 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 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* 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(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 == 'E' && dataHead2 == 'T') { 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)); } uint32 temp_echo1 = 0; loadStream >> temp_echo1; first_echo = temp_echo1; uint32 temp_echo2 = 0; loadStream >> temp_echo2; second_echo = temp_echo2; uint32 temp_enc1 = 0; loadStream >> temp_enc1; first_encounter = temp_enc1; uint32 temp_enc2 = 0; loadStream >> temp_enc2; second_encounter = temp_enc2; uint32 temp = 0; loadStream >> temp; jaina_event = temp ? DONE : NOT_STARTED; uint32 temp_event = 0; loadStream >> temp_event; if (temp_event == IN_PROGRESS || temp_event > SPECIAL) temp_event = NOT_STARTED; tyrande_event = temp_event; for (uint8 i = 0; i < 4; ++i) { uint32 tmpDialog; loadStream >> tmpDialog; if (tmpDialog == IN_PROGRESS || tmpDialog > SPECIAL) tmpDialog = NOT_STARTED; nozdormu_dialog[i] = tmpDialog; } } else OUT_LOAD_INST_DATA_FAIL;
void SetData(uint32 DataId, uint32 Value) { if (DataId < MAX_DATA_ENCOUNTER) SetBossState(DataId, EncounterState(Value)); }