aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Instances/InstanceScript.cpp136
-rw-r--r--src/server/game/Instances/InstanceScript.h42
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.h2
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp1
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/blackrock_spire.h1
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp50
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/blackwing_lair.h1
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp1
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/instance_molten_core.cpp119
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/molten_core.h2
-rw-r--r--src/server/scripts/EasternKingdoms/Deadmines/deadmines.h2
-rw-r--r--src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp1
-rw-r--r--src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.h2
-rw-r--r--src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp1
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp1
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/karazhan.h3
-rw-r--r--src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp43
-rw-r--r--src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.h2
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletMonastery/instance_scarlet_monastery.cpp45
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletMonastery/scarlet_monastery.h2
-rw-r--r--src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp45
-rw-r--r--src/server/scripts/EasternKingdoms/Scholomance/scholomance.h2
-rw-r--r--src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp1
-rw-r--r--src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.h2
-rw-r--r--src/server/scripts/EasternKingdoms/Stratholme/instance_stratholme.cpp1
-rw-r--r--src/server/scripts/EasternKingdoms/Stratholme/stratholme.h2
-rw-r--r--src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp1
-rw-r--r--src/server/scripts/EasternKingdoms/SunkenTemple/sunken_temple.h2
-rw-r--r--src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp80
-rw-r--r--src/server/scripts/EasternKingdoms/SunwellPlateau/sunwell_plateau.h1
-rw-r--r--src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp1
-rw-r--r--src/server/scripts/EasternKingdoms/Uldaman/uldaman.h2
-rw-r--r--src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp1
-rw-r--r--src/server/scripts/EasternKingdoms/ZulAman/zulaman.h2
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp43
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h2
-rw-r--r--src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.h2
-rw-r--r--src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp1
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.h2
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp1
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.h2
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp1
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp1
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.h2
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp1
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.h2
-rw-r--r--src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp67
-rw-r--r--src/server/scripts/Kalimdor/OnyxiasLair/onyxias_lair.h2
-rw-r--r--src/server/scripts/Kalimdor/RazorfenDowns/instance_razorfen_downs.cpp62
-rw-r--r--src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.h1
-rw-r--r--src/server/scripts/Kalimdor/RazorfenKraul/instance_razorfen_kraul.cpp1
-rw-r--r--src/server/scripts/Kalimdor/RazorfenKraul/razorfen_kraul.h2
-rw-r--r--src/server/scripts/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp44
-rw-r--r--src/server/scripts/Kalimdor/RuinsOfAhnQiraj/ruins_of_ahnqiraj.h2
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp1
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h2
-rw-r--r--src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp1
-rw-r--r--src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.h2
-rw-r--r--src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp1
-rw-r--r--src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.h2
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/Ahnkahet/ahnkahet.h1
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp48
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/AzjolNerub/azjol_nerub.h1
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp44
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp44
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.h1
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp6
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp1
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp50
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h7
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp1
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.h2
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp1
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h2
-rw-r--r--src/server/scripts/Northrend/DraktharonKeep/drak_tharon_keep.h1
-rw-r--r--src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp44
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.h1
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp42
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.h1
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp63
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp45
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.h1
-rw-r--r--src/server/scripts/Northrend/Gundrak/gundrak.h2
-rw-r--r--src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp1
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h4
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp6
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp71
-rw-r--r--src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp45
-rw-r--r--src/server/scripts/Northrend/Naxxramas/naxxramas.h2
-rw-r--r--src/server/scripts/Northrend/Nexus/EyeOfEternity/eye_of_eternity.h2
-rw-r--r--src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp71
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp1
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/nexus.h2
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp44
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/oculus.h1
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfLightning/halls_of_lightning.h1
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfLightning/instance_halls_of_lightning.cpp44
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.h1
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp48
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp99
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h1
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/instance_utgarde_keep.cpp48
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.h1
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/instance_utgarde_pinnacle.cpp44
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h1
-rw-r--r--src/server/scripts/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp1
-rw-r--r--src/server/scripts/Northrend/VaultOfArchavon/vault_of_archavon.h2
-rw-r--r--src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp1
-rw-r--r--src/server/scripts/Northrend/VioletHold/violet_hold.h2
-rw-r--r--src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/auchenai_crypts.h1
-rw-r--r--src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/instance_auchenai_crypts.cpp1
-rw-r--r--src/server/scripts/Outland/Auchindoun/ManaTombs/instance_mana_tombs.cpp1
-rw-r--r--src/server/scripts/Outland/Auchindoun/ManaTombs/mana_tombs.h1
-rw-r--r--src/server/scripts/Outland/Auchindoun/SethekkHalls/instance_sethekk_halls.cpp44
-rw-r--r--src/server/scripts/Outland/Auchindoun/SethekkHalls/sethekk_halls.h1
-rw-r--r--src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/instance_shadow_labyrinth.cpp44
-rw-r--r--src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/shadow_labyrinth.h1
-rw-r--r--src/server/scripts/Outland/BlackTemple/black_temple.h1
-rw-r--r--src/server/scripts/Outland/BlackTemple/instance_black_temple.cpp44
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp1
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/serpent_shrine.h2
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SteamVault/instance_steam_vault.cpp56
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SteamVault/steam_vault.h1
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/the_slave_pens.h1
-rw-r--r--src/server/scripts/Outland/GruulsLair/gruuls_lair.h1
-rw-r--r--src/server/scripts/Outland/GruulsLair/instance_gruuls_lair.cpp44
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/BloodFurnace/blood_furnace.h2
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp44
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/hellfire_ramparts.h2
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp51
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp1
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/magtheridons_lair.h2
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp52
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.h2
-rw-r--r--src/server/scripts/Outland/TempestKeep/Eye/instance_the_eye.cpp1
-rw-r--r--src/server/scripts/Outland/TempestKeep/Eye/the_eye.h2
-rw-r--r--src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp44
-rw-r--r--src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h2
-rw-r--r--src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.h1
-rw-r--r--src/server/scripts/Outland/TempestKeep/arcatraz/instance_arcatraz.cpp44
-rw-r--r--src/server/scripts/Outland/TempestKeep/botanica/instance_the_botanica.cpp45
-rw-r--r--src/server/scripts/Outland/TempestKeep/botanica/the_botanica.h2
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp2
143 files changed, 487 insertions, 1860 deletions
diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp
index adef21fe7a2..6278e66baef 100644
--- a/src/server/game/Instances/InstanceScript.cpp
+++ b/src/server/game/Instances/InstanceScript.cpp
@@ -43,16 +43,6 @@ void InstanceScript::SaveToDB()
CharacterDatabase.Execute(stmt);
}
-void InstanceScript::HandleGameObject(uint64 GUID, bool open, GameObject* go)
-{
- if (!go)
- go = instance->GetGameObject(GUID);
- if (go)
- go->SetGoState(open ? GO_STATE_ACTIVE : GO_STATE_READY);
- else
- TC_LOG_DEBUG("scripts", "InstanceScript: HandleGameObject failed");
-}
-
bool InstanceScript::IsEncounterInProgress() const
{
for (std::vector<BossInfo>::const_iterator itr = bosses.begin(); itr != bosses.end(); ++itr)
@@ -62,6 +52,13 @@ bool InstanceScript::IsEncounterInProgress() const
return false;
}
+void InstanceScript::SetHeaders(std::string const& dataHeaders)
+{
+ for (char header : dataHeaders)
+ if (isalpha(header))
+ headers.push_back(header);
+}
+
void InstanceScript::LoadMinionData(const MinionData* data)
{
while (data->entry)
@@ -232,65 +229,140 @@ bool InstanceScript::SetBossState(uint32 id, EncounterState state)
return false;
}
-std::string InstanceScript::LoadBossState(const char * data)
+void InstanceScript::Load(char const* data)
{
if (!data)
- return NULL;
+ {
+ OUT_LOAD_INST_DATA_FAIL;
+ return;
+ }
+
+ OUT_LOAD_INST_DATA(data);
+
std::istringstream loadStream(data);
- uint32 buff;
+
+ if (ReadSaveDataHeaders(loadStream))
+ {
+ ReadSaveDataBossStates(loadStream);
+ ReadSaveDataMore(loadStream);
+ }
+ else
+ OUT_LOAD_INST_DATA_FAIL;
+
+ OUT_LOAD_INST_DATA_COMPLETE;
+}
+
+bool InstanceScript::ReadSaveDataHeaders(std::istringstream& data)
+{
+ for (char header : headers)
+ {
+ char buff;
+ data >> buff;
+
+ if (header != buff)
+ return false;
+ }
+
+ return true;
+}
+
+void InstanceScript::ReadSaveDataBossStates(std::istringstream& data)
+{
uint32 bossId = 0;
for (std::vector<BossInfo>::iterator i = bosses.begin(); i != bosses.end(); ++i, ++bossId)
{
- loadStream >> buff;
+ uint32 buff;
+ data >> buff;
+ if (buff == IN_PROGRESS || buff == SPECIAL)
+ buff = NOT_STARTED;
+
if (buff < TO_BE_DECIDED)
- SetBossState(bossId, (EncounterState)buff);
+ SetBossState(bossId, EncounterState(buff));
}
- return loadStream.str();
}
-std::string InstanceScript::GetBossSaveData()
+std::string InstanceScript::GetSaveData()
{
+ OUT_SAVE_INST_DATA;
+
std::ostringstream saveStream;
- for (std::vector<BossInfo>::iterator i = bosses.begin(); i != bosses.end(); ++i)
- saveStream << (uint32)i->state << ' ';
+
+ WriteSaveDataHeaders(saveStream);
+ WriteSaveDataBossStates(saveStream);
+ WriteSaveDataMore(saveStream);
+
+ OUT_SAVE_INST_DATA_COMPLETE;
+
return saveStream.str();
}
-void InstanceScript::DoUseDoorOrButton(uint64 uiGuid, uint32 uiWithRestoreTime, bool bUseAlternativeState)
+void InstanceScript::WriteSaveDataHeaders(std::ostringstream& data)
{
- if (!uiGuid)
- return;
+ for (char header : headers)
+ data << header << ' ';
+}
- GameObject* go = instance->GetGameObject(uiGuid);
+void InstanceScript::WriteSaveDataBossStates(std::ostringstream& data)
+{
+ for (BossInfo const& bossInfo : bosses)
+ data << uint32(bossInfo.state) << ' ';
+}
+void InstanceScript::HandleGameObject(uint64 guid, bool open, GameObject* go /*= nullptr*/)
+{
+ if (!go)
+ go = instance->GetGameObject(guid);
if (go)
+ go->SetGoState(open ? GO_STATE_ACTIVE : GO_STATE_READY);
+ else
+ TC_LOG_DEBUG("scripts", "InstanceScript: HandleGameObject failed");
+}
+
+void InstanceScript::DoUseDoorOrButton(uint64 guid, uint32 withRestoreTime /*= 0*/, bool useAlternativeState /*= false*/)
+{
+ if (!guid)
+ return;
+
+ if (GameObject* go = instance->GetGameObject(guid))
{
if (go->GetGoType() == GAMEOBJECT_TYPE_DOOR || go->GetGoType() == GAMEOBJECT_TYPE_BUTTON)
{
if (go->getLootState() == GO_READY)
- go->UseDoorOrButton(uiWithRestoreTime, bUseAlternativeState);
+ go->UseDoorOrButton(withRestoreTime, useAlternativeState);
else if (go->getLootState() == GO_ACTIVATED)
go->ResetDoorOrButton();
}
else
- TC_LOG_ERROR("misc", "SD2: Script call DoUseDoorOrButton, but gameobject entry %u is type %u.", go->GetEntry(), go->GetGoType());
+ TC_LOG_ERROR("scripts", "InstanceScript: DoUseDoorOrButton can't use gameobject entry %u, because type is %u.", go->GetEntry(), go->GetGoType());
}
+ else
+ TC_LOG_DEBUG("scripts", "InstanceScript: HandleGameObject failed");
}
-void InstanceScript::DoRespawnGameObject(uint64 uiGuid, uint32 uiTimeToDespawn)
+void InstanceScript::DoRespawnGameObject(uint64 guid, uint32 timeToDespawn /*= MINUTE*/)
{
- if (GameObject* go = instance->GetGameObject(uiGuid))
+ if (GameObject* go = instance->GetGameObject(guid))
{
- //not expect any of these should ever be handled
- if (go->GetGoType() == GAMEOBJECT_TYPE_FISHINGNODE || go->GetGoType() == GAMEOBJECT_TYPE_DOOR ||
- go->GetGoType() == GAMEOBJECT_TYPE_BUTTON || go->GetGoType() == GAMEOBJECT_TYPE_TRAP)
- return;
+ switch (go->GetGoType())
+ {
+ case GAMEOBJECT_TYPE_DOOR:
+ case GAMEOBJECT_TYPE_BUTTON:
+ case GAMEOBJECT_TYPE_TRAP:
+ case GAMEOBJECT_TYPE_FISHINGNODE:
+ // not expect any of these should ever be handled
+ TC_LOG_ERROR("scripts", "InstanceScript: DoRespawnGameObject can't respawn gameobject entry %u, because type is %u.", go->GetEntry(), go->GetGoType());
+ return;
+ default:
+ break;
+ }
if (go->isSpawned())
return;
- go->SetRespawnTime(uiTimeToDespawn);
+ go->SetRespawnTime(timeToDespawn);
}
+ else
+ TC_LOG_DEBUG("scripts", "InstanceScript: DoRespawnGameObject failed");
}
void InstanceScript::DoUpdateWorldState(uint32 uiStateId, uint32 uiStateData)
diff --git a/src/server/game/Instances/InstanceScript.h b/src/server/game/Instances/InstanceScript.h
index f379572961c..41f62cfb5f2 100644
--- a/src/server/game/Instances/InstanceScript.h
+++ b/src/server/game/Instances/InstanceScript.h
@@ -137,38 +137,38 @@ class InstanceScript : public ZoneScript
Map* instance;
- //On creation, NOT load.
+ // On creation, NOT load.
virtual void Initialize() { }
- //On load
- virtual void Load(char const* data) { LoadBossState(data); }
+ // On load
+ virtual void Load(char const* data);
- //When save is needed, this function generates the data
- virtual std::string GetSaveData() { return GetBossSaveData(); }
+ // When save is needed, this function generates the data
+ virtual std::string GetSaveData();
void SaveToDB();
virtual void Update(uint32 /*diff*/) { }
- //Used by the map's CanEnter function.
- //This is to prevent players from entering during boss encounters.
+ // Used by the map's CanEnter function.
+ // This is to prevent players from entering during boss encounters.
virtual bool IsEncounterInProgress() const;
- //Called when a player successfully enters the instance.
+ // Called when a player successfully enters the instance.
virtual void OnPlayerEnter(Player* /*player*/) { }
- //Handle open / close objects
- //use HandleGameObject(0, boolen, GO); in OnObjectCreate in instance scripts
- //use HandleGameObject(GUID, boolen, NULL); in any other script
- void HandleGameObject(uint64 guid, bool open, GameObject* go = NULL);
+ // Handle open / close objects
+ // * use HandleGameObject(0, boolen, GO); in OnObjectCreate in instance scripts
+ // * use HandleGameObject(GUID, boolen, NULL); in any other script
+ void HandleGameObject(uint64 guid, bool open, GameObject* go = nullptr);
- //change active state of doors or buttons
+ // Change active state of doors or buttons
void DoUseDoorOrButton(uint64 guid, uint32 withRestoreTime = 0, bool useAlternativeState = false);
- //Respawns a GO having negative spawntimesecs in gameobject-table
+ // Respawns a GO having negative spawntimesecs in gameobject-table
void DoRespawnGameObject(uint64 guid, uint32 timeToDespawn = MINUTE);
- //sends world state update to all players in instance
+ // Sends world state update to all players in instance
void DoUpdateWorldState(uint32 worldstateId, uint32 worldstateValue);
// Send Notify to all players in instance
@@ -215,6 +215,7 @@ class InstanceScript : public ZoneScript
virtual void FillInitialWorldStates(WorldPacket& /*data*/) { }
protected:
+ void SetHeaders(std::string const& dataHeaders);
void SetBossNumber(uint32 number) { bosses.resize(number); }
void LoadDoorData(DoorData const* data);
void LoadMinionData(MinionData const* data);
@@ -225,9 +226,16 @@ class InstanceScript : public ZoneScript
void UpdateDoorState(GameObject* door);
void UpdateMinionState(Creature* minion, EncounterState state);
- std::string LoadBossState(char const* data);
- std::string GetBossSaveData();
+ // Instance Load and Save
+ bool ReadSaveDataHeaders(std::istringstream& data);
+ void ReadSaveDataBossStates(std::istringstream& data);
+ virtual void ReadSaveDataMore(std::istringstream& /*data*/) { }
+ void WriteSaveDataHeaders(std::ostringstream& data);
+ void WriteSaveDataBossStates(std::ostringstream& data);
+ virtual void WriteSaveDataMore(std::ostringstream& /*data*/) { }
+
private:
+ std::vector<char> headers;
std::vector<BossInfo> bosses;
DoorInfoMap doors;
MinionInfoMap minions;
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.h b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.h
index ea3fd59490a..160c80fc4d1 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.h
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.h
@@ -19,6 +19,8 @@
#ifndef DEF_BRD_H
#define DEF_BRD_H
+#define DataHeader "BRD"
+
enum FactionIds
{
FACTION_NEUTRAL = 734,
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp
index f51a2a95c81..67219a2990a 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp
@@ -117,6 +117,7 @@ public:
void Initialize() override
{
+ SetHeaders(DataHeader);
memset(&encounter, 0, sizeof(encounter));
EmperorGUID = 0;
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/blackrock_spire.h b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/blackrock_spire.h
index 2199e52129c..be8149fbdcc 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/blackrock_spire.h
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/blackrock_spire.h
@@ -21,6 +21,7 @@
uint32 const EncounterCount = 23;
#define BRSScriptName "instance_blackrock_spire"
+#define DataHeader "BRS"
enum DataTypes
{
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp
index 555eac21c43..e95fb8da42e 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp
@@ -15,15 +15,14 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "ObjectMgr.h"
-#include "ScriptMgr.h"
-#include "ObjectDefines.h"
#include "Cell.h"
#include "CellImpl.h"
#include "GridNotifiers.h"
#include "GridNotifiersImpl.h"
#include "InstanceScript.h"
+#include "Player.h"
#include "ScriptedCreature.h"
+#include "ScriptMgr.h"
#include "blackrock_spire.h"
//uint32 const DragonspireRunes[7] = { GO_HALL_RUNE_1, GO_HALL_RUNE_2, GO_HALL_RUNE_3, GO_HALL_RUNE_4, GO_HALL_RUNE_5, GO_HALL_RUNE_6, GO_HALL_RUNE_7 };
@@ -51,6 +50,7 @@ public:
{
instance_blackrock_spireMapScript(InstanceMap* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
HighlordOmokk = 0;
ShadowHunterVoshgajin = 0;
@@ -502,50 +502,6 @@ public:
}
}
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "B S " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- 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 == 'B' && dataHead2 == 'S')
- {
- for (uint8 i = 0; i < EncounterCount; ++i)
- {
- uint32 tmpState;
- loadStream >> tmpState;
- if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
- tmpState = NOT_STARTED;
-
- SetBossState(i, EncounterState(tmpState));
- }
- }
- else
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
-
protected:
EventMap Events;
uint64 HighlordOmokk;
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/blackwing_lair.h b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/blackwing_lair.h
index e07d1d987fc..1cf89a263ce 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/blackwing_lair.h
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/blackwing_lair.h
@@ -21,6 +21,7 @@
uint32 const EncounterCount = 8;
#define BRLScriptName "instance_blackwing_lair"
+#define DataHeader "BWL"
enum BWLEncounter
{
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp
index be8bc34acf1..ae52e281c9d 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp
@@ -56,6 +56,7 @@ public:
{
instance_blackwing_lair_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
// Razorgore
EggCount = 0;
EggEvent = 0;
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/instance_molten_core.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/instance_molten_core.cpp
index 7dee91bfb6f..800b6bb0edc 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/instance_molten_core.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/instance_molten_core.cpp
@@ -1,6 +1,5 @@
/*
* Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
- * Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -16,19 +15,10 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-/* ScriptData
-SDName: Instance_Molten_Core
-SD%Complete: 0
-SDComment: Place Holder
-SDCategory: Molten Core
-EndScriptData */
-
-#include "ObjectMgr.h"
-#include "ScriptMgr.h"
#include "InstanceScript.h"
-#include "CreatureAI.h"
+#include "ScriptedCreature.h"
+#include "ScriptMgr.h"
#include "molten_core.h"
-#include "TemporarySummon.h"
Position const SummonPositions[10] =
{
@@ -53,30 +43,19 @@ class instance_molten_core : public InstanceMapScript
{
instance_molten_core_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(MAX_ENCOUNTER);
_golemaggTheIncineratorGUID = 0;
_majordomoExecutusGUID = 0;
_cacheOfTheFirelordGUID = 0;
- _executusSchedule = NULL;
- _deadBossCount = 0;
+ _executusSchedule = false;
_ragnarosAddDeaths = 0;
- _isLoading = false;
- _summonedExecutus = false;
}
- ~instance_molten_core_InstanceMapScript()
- {
- delete _executusSchedule;
- }
-
- void OnPlayerEnter(Player* /*player*/)
+ void OnPlayerEnter(Player* /*player*/) override
{
if (_executusSchedule)
- {
- SummonMajordomoExecutus(*_executusSchedule);
- delete _executusSchedule;
- _executusSchedule = NULL;
- }
+ SummonMajordomoExecutus();
}
void OnCreatureCreate(Creature* creature) override
@@ -141,19 +120,14 @@ class instance_molten_core : public InstanceMapScript
return 0;
}
- bool SetBossState(uint32 bossId, EncounterState state)
+ bool SetBossState(uint32 bossId, EncounterState state) override
{
if (!InstanceScript::SetBossState(bossId, state))
return false;
if (state == DONE && bossId < BOSS_MAJORDOMO_EXECUTUS)
- ++_deadBossCount;
-
- if (_isLoading)
- return true;
-
- if (_deadBossCount == 8)
- SummonMajordomoExecutus(false);
+ if (CheckMajordomoExecutus())
+ SummonMajordomoExecutus();
if (bossId == BOSS_MAJORDOMO_EXECUTUS && state == DONE)
DoRespawnGameObject(_cacheOfTheFirelordGUID, 7 * DAY);
@@ -161,13 +135,13 @@ class instance_molten_core : public InstanceMapScript
return true;
}
- void SummonMajordomoExecutus(bool done)
+ void SummonMajordomoExecutus()
{
- if (_summonedExecutus)
+ _executusSchedule = false;
+ if (_majordomoExecutusGUID)
return;
- _summonedExecutus = true;
- if (!done)
+ if (GetBossState(BOSS_MAJORDOMO_EXECUTUS) != DONE)
{
instance->SummonCreature(NPC_MAJORDOMO_EXECUTUS, SummonPositions[0]);
instance->SummonCreature(NPC_FLAMEWAKER_HEALER, SummonPositions[1]);
@@ -180,76 +154,33 @@ class instance_molten_core : public InstanceMapScript
instance->SummonCreature(NPC_FLAMEWAKER_ELITE, SummonPositions[8]);
}
else if (TempSummon* summon = instance->SummonCreature(NPC_MAJORDOMO_EXECUTUS, RagnarosTelePos))
- summon->AI()->DoAction(ACTION_START_RAGNAROS_ALT);
+ summon->AI()->DoAction(ACTION_START_RAGNAROS_ALT);
}
- std::string GetSaveData() override
+ bool CheckMajordomoExecutus() const
{
- OUT_SAVE_INST_DATA;
+ if (GetBossState(BOSS_RAGNAROS) == DONE)
+ return false;
- std::ostringstream saveStream;
- saveStream << "M C " << GetBossSaveData();
+ for (uint8 i = 0; i < BOSS_MAJORDOMO_EXECUTUS; ++i)
+ if (GetBossState(i) != DONE)
+ return false;
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
+ return true;
}
- void Load(char const* data)
+ void ReadSaveDataMore(std::istringstream& /*data*/) override
{
- if (!data)
- {
- OUT_LOAD_INST_DATA_FAIL;
- return;
- }
-
- _isLoading = true;
- OUT_LOAD_INST_DATA(data);
-
- char dataHead1, dataHead2;
-
- std::istringstream loadStream(data);
- loadStream >> dataHead1 >> dataHead2;
-
- if (dataHead1 == 'M' && dataHead2 == 'C')
- {
- EncounterState states[MAX_ENCOUNTER];
- uint8 executusCounter = 0;
-
- // need 2 loops to check spawning executus/ragnaros
- for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
- {
- uint32 tmpState;
- loadStream >> tmpState;
- if (tmpState == IN_PROGRESS || tmpState > TO_BE_DECIDED)
- tmpState = NOT_STARTED;
- states[i] = EncounterState(tmpState);
-
- if (tmpState == DONE && i < BOSS_MAJORDOMO_EXECUTUS)
- ++executusCounter;
- }
-
- if (executusCounter >= 8 && states[BOSS_RAGNAROS] != DONE)
- _executusSchedule = new bool(states[BOSS_MAJORDOMO_EXECUTUS] == DONE);
-
- for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
- SetBossState(i, states[i]);
- }
- else
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- _isLoading = false;
+ if (CheckMajordomoExecutus())
+ _executusSchedule = true;
}
private:
uint64 _golemaggTheIncineratorGUID;
uint64 _majordomoExecutusGUID;
uint64 _cacheOfTheFirelordGUID;
- bool* _executusSchedule;
- uint8 _deadBossCount;
+ bool _executusSchedule;
uint8 _ragnarosAddDeaths;
- bool _isLoading;
- bool _summonedExecutus;
};
InstanceScript* GetInstanceScript(InstanceMap* map) const override
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/molten_core.h b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/molten_core.h
index 39d6cf40a8a..af0e0a89e45 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/molten_core.h
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/molten_core.h
@@ -19,6 +19,8 @@
#ifndef DEF_MOLTEN_CORE_H
#define DEF_MOLTEN_CORE_H
+#define DataHeader "MC"
+
enum Encounters
{
BOSS_LUCIFRON = 0,
diff --git a/src/server/scripts/EasternKingdoms/Deadmines/deadmines.h b/src/server/scripts/EasternKingdoms/Deadmines/deadmines.h
index c3b09c76c68..b1ff0e03ff0 100644
--- a/src/server/scripts/EasternKingdoms/Deadmines/deadmines.h
+++ b/src/server/scripts/EasternKingdoms/Deadmines/deadmines.h
@@ -18,6 +18,8 @@
#ifndef DEF_DEADMINES_H
#define DEF_DEADMINES_H
+#define DataHeader "DM"
+
enum CannonState
{
CANNON_NOT_USED,
diff --git a/src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp b/src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp
index 050ef1eb642..c5f4f9cdbf9 100644
--- a/src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp
+++ b/src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp
@@ -74,6 +74,7 @@ class instance_deadmines : public InstanceMapScript
void Initialize() override
{
+ SetHeaders(DataHeader);
FactoryDoorGUID = 0;
IronCladDoorGUID = 0;
DefiasCannonGUID = 0;
diff --git a/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.h b/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.h
index 096b8910d5a..adac26efff5 100644
--- a/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.h
+++ b/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.h
@@ -18,6 +18,8 @@
#ifndef DEF_GNOMEREGAN_H
#define DEF_GNOMEREGAN_H
+#define DataHeader "GNO"
+
enum GameObjectIds
{
GO_CAVE_IN_LEFT = 146085,
diff --git a/src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp b/src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp
index b35601fcc6c..f8e00fab682 100644
--- a/src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp
+++ b/src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp
@@ -36,6 +36,7 @@ public:
{
instance_gnomeregan_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
}
uint32 m_auiEncounter[MAX_ENCOUNTER];
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp b/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp
index 3300e92869b..8f6d142e22b 100644
--- a/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp
+++ b/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp
@@ -82,6 +82,7 @@ public:
void Initialize() override
{
+ SetHeaders(DataHeader);
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
// 1 - OZ, 2 - HOOD, 3 - RAJ, this never gets altered.
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.h b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.h
index 3812e06b442..eec7e461e9b 100644
--- a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.h
+++ b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.h
@@ -19,6 +19,8 @@
#ifndef DEF_KARAZHAN_H
#define DEF_KARAZHAN_H
+#define DataHeader "KZ"
+
enum DataTypes
{
TYPE_ATTUMEN = 1,
@@ -62,5 +64,4 @@ enum OperaEvents
EVENT_RAJ = 3
};
-#define ERROR_INST_DATA(a) TC_LOG_ERROR("scripts", "Instance Data for Karazhan not set properly. Encounter for Creature Entry %u may not work properly.", a->GetEntry());
#endif
diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp
index 65b3553fd87..01491c53f72 100644
--- a/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp
+++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/instance_magisters_terrace.cpp
@@ -45,6 +45,7 @@ class instance_magisters_terrace : public InstanceMapScript
{
instance_magisters_terrace_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
LoadDoorData(doorData);
@@ -161,48 +162,6 @@ class instance_magisters_terrace : public InstanceMapScript
return true;
}
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "M T " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- void Load(const char* str) override
- {
- 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 == 'T')
- {
- 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
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
-
uint64 GetData64(uint32 type) const override
{
switch (type)
diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.h b/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.h
index 8b8d7d5b875..142453c2502 100644
--- a/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.h
+++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/magisters_terrace.h
@@ -19,6 +19,8 @@
#ifndef DEF_MAGISTERS_TERRACE_H
#define DEF_MAGISTERS_TERRACE_H
+#define DataHeader "MT"
+
uint32 const EncounterCount = 4;
enum DataTypes
diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/instance_scarlet_monastery.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/instance_scarlet_monastery.cpp
index dc65bd42bf4..3a79dac3a90 100644
--- a/src/server/scripts/EasternKingdoms/ScarletMonastery/instance_scarlet_monastery.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/instance_scarlet_monastery.cpp
@@ -34,6 +34,7 @@ class instance_scarlet_monastery : public InstanceMapScript
{
instance_scarlet_monastery_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
LoadDoorData(doorData);
@@ -155,50 +156,6 @@ class instance_scarlet_monastery : public InstanceMapScript
return 0;
}
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "S M " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- void Load(const char* str) override
- {
- 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 == 'M')
- {
- for (uint8 i = 0; i < EncounterCount; ++i)
- {
- uint32 tmpState;
- loadStream >> tmpState;
- if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
- tmpState = NOT_STARTED;
-
- SetBossState(i, EncounterState(tmpState));
- }
- }
- else
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
-
protected:
uint64 PumpkinShrineGUID;
uint64 HorsemanGUID;
diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/scarlet_monastery.h b/src/server/scripts/EasternKingdoms/ScarletMonastery/scarlet_monastery.h
index a74efba751f..af716b5f448 100644
--- a/src/server/scripts/EasternKingdoms/ScarletMonastery/scarlet_monastery.h
+++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/scarlet_monastery.h
@@ -19,6 +19,8 @@
#define SCARLET_M_
#define SMScriptName "instance_scarlet_monastery"
+#define DataHeader "SM"
+
uint32 const EncounterCount = 10;
enum DataTypes
diff --git a/src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp b/src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp
index 6bb8e301e86..f1959b6cf56 100644
--- a/src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp
+++ b/src/server/scripts/EasternKingdoms/Scholomance/instance_scholomance.cpp
@@ -36,6 +36,7 @@ class instance_scholomance : public InstanceMapScript
{
instance_scholomance_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
GateKirtonosGUID = 0;
GateGandlingGUID = 0;
@@ -168,49 +169,9 @@ class instance_scholomance : public InstanceMapScript
instance->SummonCreature(NPC_DARKMASTER_GANDLING, GandlingLoc);
}
- std::string GetSaveData() override
+ void ReadSaveDataMore(std::istringstream& /*data*/) override
{
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "S O " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- void Load(const char* str) override
- {
- 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 == 'O')
- {
- for (uint32 i = 0; i < EncounterCount; ++i)
- {
- uint32 tmpState;
- loadStream >> tmpState;
- if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
- tmpState = NOT_STARTED;
- SetBossState(i, EncounterState(tmpState));
- }
-
- CheckToSpawnGandling();
- }
- else
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
+ CheckToSpawnGandling();
}
protected:
diff --git a/src/server/scripts/EasternKingdoms/Scholomance/scholomance.h b/src/server/scripts/EasternKingdoms/Scholomance/scholomance.h
index 9eb7c5e8f86..4b587bb6dde 100644
--- a/src/server/scripts/EasternKingdoms/Scholomance/scholomance.h
+++ b/src/server/scripts/EasternKingdoms/Scholomance/scholomance.h
@@ -18,6 +18,8 @@
#ifndef DEF_SCHOLOMANCE_H
#define DEF_SCHOLOMANCE_H
+#define DataHeader "SC"
+
uint32 const EncounterCount = 8;
enum DataTypes
diff --git a/src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp b/src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp
index c76637224ae..10c4aedf103 100644
--- a/src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp
+++ b/src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp
@@ -96,6 +96,7 @@ public:
void Initialize() override
{
+ SetHeaders(DataHeader);
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
uiAshGUID = 0;
diff --git a/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.h b/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.h
index 0b399dc4050..669dfc3975d 100644
--- a/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.h
+++ b/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.h
@@ -19,6 +19,8 @@
#ifndef DEF_SHADOWFANG_H
#define DEF_SHADOWFANG_H
+#define DataHeader "SK"
+
enum DataTypes
{
TYPE_FREE_NPC = 1,
diff --git a/src/server/scripts/EasternKingdoms/Stratholme/instance_stratholme.cpp b/src/server/scripts/EasternKingdoms/Stratholme/instance_stratholme.cpp
index ecdc66d3e0f..43ce4d05297 100644
--- a/src/server/scripts/EasternKingdoms/Stratholme/instance_stratholme.cpp
+++ b/src/server/scripts/EasternKingdoms/Stratholme/instance_stratholme.cpp
@@ -49,6 +49,7 @@ class instance_stratholme : public InstanceMapScript
{
instance_stratholme_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
}
uint32 EncounterState[MAX_ENCOUNTER];
diff --git a/src/server/scripts/EasternKingdoms/Stratholme/stratholme.h b/src/server/scripts/EasternKingdoms/Stratholme/stratholme.h
index 9e4c88f5856..687512ea92d 100644
--- a/src/server/scripts/EasternKingdoms/Stratholme/stratholme.h
+++ b/src/server/scripts/EasternKingdoms/Stratholme/stratholme.h
@@ -19,6 +19,8 @@
#ifndef DEF_STRATHOLME_H
#define DEF_STRATHOLME_H
+#define DataHeader "STR"
+
enum DataTypes
{
TYPE_BARON_RUN = 1,
diff --git a/src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp b/src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp
index 789a5c3a874..ee16a662711 100644
--- a/src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp
+++ b/src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp
@@ -60,6 +60,7 @@ public:
{
instance_sunken_temple_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
}
uint64 GOAtalaiStatue1;
diff --git a/src/server/scripts/EasternKingdoms/SunkenTemple/sunken_temple.h b/src/server/scripts/EasternKingdoms/SunkenTemple/sunken_temple.h
index 394b1e3e8ae..bfd99e2afdd 100644
--- a/src/server/scripts/EasternKingdoms/SunkenTemple/sunken_temple.h
+++ b/src/server/scripts/EasternKingdoms/SunkenTemple/sunken_temple.h
@@ -19,6 +19,8 @@
#ifndef DEF_SUNKEN_TEMPLE_H
#define DEF_SUNKEN_TEMPLE_H
+#define DataHeader "ST"
+
#define TROLLBOSS1_DEATH 1
#define TROLLBOSS2_DEATH 2
#define TROLLBOSS3_DEATH 3
diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp
index 5a411d504aa..2066c4309b2 100644
--- a/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp
+++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp
@@ -49,6 +49,7 @@ class instance_sunwell_plateau : public InstanceMapScript
{
instance_sunwell_plateau_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
LoadDoorData(doorData);
@@ -212,67 +213,24 @@ class instance_sunwell_plateau : public InstanceMapScript
return 0;
}
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "S P " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- void Load(char const* str) override
- {
- 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 == 'P')
- {
- 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
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
-
- protected:
- uint64 KalecgosDragonGUID;
- uint64 KalecgosHumanGUID;
- uint64 SathrovarrGUID;
- uint64 BrutallusGUID;
- uint64 MadrigosaGUID;
- uint64 FelmystGUID;
- uint64 AlythessGUID;
- uint64 SacrolashGUID;
- uint64 MuruGUID;
- uint64 KilJaedenGUID;
- uint64 KilJaedenControllerGUID;
- uint64 AnveenaGUID;
- uint64 KalecgosKjGUID;
- uint32 SpectralPlayers;
-
- uint32 SpectralRealmTimer;
- std::vector<uint64> SpectralRealmList;
+ protected:
+ uint64 KalecgosDragonGUID;
+ uint64 KalecgosHumanGUID;
+ uint64 SathrovarrGUID;
+ uint64 BrutallusGUID;
+ uint64 MadrigosaGUID;
+ uint64 FelmystGUID;
+ uint64 AlythessGUID;
+ uint64 SacrolashGUID;
+ uint64 MuruGUID;
+ uint64 KilJaedenGUID;
+ uint64 KilJaedenControllerGUID;
+ uint64 AnveenaGUID;
+ uint64 KalecgosKjGUID;
+ uint32 SpectralPlayers;
+
+ uint32 SpectralRealmTimer;
+ std::vector<uint64> SpectralRealmList;
};
InstanceScript* GetInstanceScript(InstanceMap* map) const override
diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/sunwell_plateau.h b/src/server/scripts/EasternKingdoms/SunwellPlateau/sunwell_plateau.h
index d32cdb037b2..e6aed3eddf7 100644
--- a/src/server/scripts/EasternKingdoms/SunwellPlateau/sunwell_plateau.h
+++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/sunwell_plateau.h
@@ -19,6 +19,7 @@
#define SUNWELL_PLATEAU_H
#define SunwellPlateauScriptName "instance_sunwell_plateau"
+#define DataHeader "SWP"
uint32 const EncounterCount = 6;
diff --git a/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp b/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp
index 56c84677181..17a6440702e 100644
--- a/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp
+++ b/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp
@@ -49,6 +49,7 @@ class instance_uldaman : public InstanceMapScript
void Initialize() override
{
+ SetHeaders(DataHeader);
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
archaedasGUID = 0;
diff --git a/src/server/scripts/EasternKingdoms/Uldaman/uldaman.h b/src/server/scripts/EasternKingdoms/Uldaman/uldaman.h
index 6f17fae0162..8697172fcb9 100644
--- a/src/server/scripts/EasternKingdoms/Uldaman/uldaman.h
+++ b/src/server/scripts/EasternKingdoms/Uldaman/uldaman.h
@@ -19,6 +19,8 @@
#ifndef DEF_ULDAMAN_H
#define DEF_ULDAMAN_H
+#define DataHeader "UD"
+
#define MAX_ENCOUNTER 3
enum DataTypes
diff --git a/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp
index 64ffddbbb6e..6081887e609 100644
--- a/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp
@@ -92,6 +92,7 @@ class instance_zulaman : public InstanceMapScript
void Initialize() override
{
+ SetHeaders(DataHeader);
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
HarkorsSatchelGUID = 0;
diff --git a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h
index 4d5938d7253..84e1c963832 100644
--- a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h
+++ b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h
@@ -19,6 +19,8 @@
#ifndef DEF_ZULAMAN_H
#define DEF_ZULAMAN_H
+#define DataHeader "ZA"
+
enum DataTypes
{
DATA_GONGEVENT = 0,
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp
index de1ed629a34..5aa37642798 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp
@@ -41,6 +41,7 @@ class instance_zulgurub : public InstanceMapScript
{
instance_zulgurub_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
LoadDoorData(doorData);
}
@@ -144,48 +145,6 @@ class instance_zulgurub : public InstanceMapScript
return 0;
}
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "Z G " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- void Load(const char* str) override
- {
- 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 == 'G')
- {
- 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
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
private:
//If all High Priest bosses were killed. Lorkhan, Zath and Ohgan are added too.
//Storing Lorkhan, Zath and Thekal because we need to cast on them later. Jindo is needed for healfunction too.
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h
index a9386ff1782..8b9c776dd78 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h
@@ -18,6 +18,8 @@
#ifndef DEF_ZULGURUB_H
#define DEF_ZULGURUB_H
+#define DataHeader "ZG"
+
uint32 const EncounterCount = 13;
#define ZGScriptName "instance_zulgurub"
diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.h b/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.h
index 07a388043a6..3ac99a32861 100644
--- a/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.h
+++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.h
@@ -19,6 +19,8 @@
#ifndef BFD_H_
#define BFD_H_
+#define DataHeader "BFD"
+
enum Data64
{
DATA_SHRINE1,
diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp b/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp
index 940da4fcf52..28b414ba9ca 100644
--- a/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp
+++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp
@@ -81,6 +81,7 @@ public:
void Initialize() override
{
+ SetHeaders(DataHeader);
memset(&encounter, 0, sizeof(encounter));
twilightLordKelrisGUID = 0;
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.h b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.h
index 7ea09d2cda1..c5f4d4ae679 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.h
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.h
@@ -19,7 +19,7 @@
#ifndef DEF_HYJAL_H
#define DEF_HYJAL_H
-#define ERROR_INST_DATA "TSCR: Instance data not set properly for Mount Hyjal. Encounters will be buggy."
+#define DataHeader "HY"
uint32 const EncounterCount = 5;
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp
index b228cb91382..6c718a4a16a 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp
@@ -59,6 +59,7 @@ public:
void Initialize() override
{
+ SetHeaders(DataHeader);
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
m_uiAncientGemGUID.clear();
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.h b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.h
index 649d9dbf803..e7d1033e55f 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.h
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.h
@@ -18,6 +18,8 @@
#ifndef DEF_CULLING_OF_STRATHOLME_H
#define DEF_CULLING_OF_STRATHOLME_H
+#define DataHeader "CS"
+
enum Data
{
DATA_MEATHOOK_EVENT,
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp
index 503166e0b12..7af2b3f63aa 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp
@@ -54,6 +54,7 @@ class instance_culling_of_stratholme : public InstanceMapScript
{
instance_culling_of_stratholme_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
_arthasGUID = 0;
_meathookGUID = 0;
_salrammGUID = 0;
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp
index 6fc36663c2a..32062be6f3c 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp
@@ -64,6 +64,7 @@ public:
void Initialize() override
{
+ SetHeaders(DataHeader);
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
mBarrelCount = 0;
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.h b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.h
index 57b0a1fce85..b8a0909e99e 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.h
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.h
@@ -19,6 +19,8 @@
#ifndef DEF_OLD_HILLSBRAD_H
#define DEF_OLD_HILLSBRAD_H
+#define DataHeader "OH"
+
enum DataTypes
{
TYPE_BARREL_DIVERSION = 1,
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp
index 3e776a0c905..35497b1f9ce 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp
@@ -94,6 +94,7 @@ public:
void Initialize() override
{
+ SetHeaders(DataHeader);
_medivhGUID = 0;
Clear();
}
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.h b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.h
index 25f10f22907..b236c5eaa6c 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.h
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.h
@@ -19,6 +19,8 @@
#ifndef DEF_THEBLACKMORASS_H
#define DEF_THEBLACKMORASS_H
+#define DataHeader "TBM"
+
uint32 const EncounterCount = 2;
enum DataTypes
diff --git a/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp b/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp
index 36314366f12..61b57d181a3 100644
--- a/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp
+++ b/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp
@@ -50,6 +50,7 @@ public:
void Initialize() override
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
onyxiaGUID = 0;
@@ -265,61 +266,17 @@ public:
return false;
}
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "O L " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- 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 == 'O' && dataHead2 == 'L')
- {
- for (uint8 i = 0; i < EncounterCount; ++i)
- {
- uint32 tmpState;
- loadStream >> tmpState;
- if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
- tmpState = NOT_STARTED;
-
- SetBossState(i, EncounterState(tmpState));
- }
- }
- else
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
-
- protected:
- std::map<uint64, uint32> FloorEruptionGUID[2];
- std::queue<uint64> FloorEruptionGUIDQueue;
- uint64 onyxiaGUID;
- uint64 triggerGUID;
- uint64 tankGUID;
- uint32 onyxiaLiftoffTimer;
- uint32 manyWhelpsCounter;
- uint32 eruptTimer;
- bool achievManyWhelpsHandleIt;
- bool achievSheDeepBreathMore;
+ protected:
+ std::map<uint64, uint32> FloorEruptionGUID[2];
+ std::queue<uint64> FloorEruptionGUIDQueue;
+ uint64 onyxiaGUID;
+ uint64 triggerGUID;
+ uint64 tankGUID;
+ uint32 onyxiaLiftoffTimer;
+ uint32 manyWhelpsCounter;
+ uint32 eruptTimer;
+ bool achievManyWhelpsHandleIt;
+ bool achievSheDeepBreathMore;
};
};
diff --git a/src/server/scripts/Kalimdor/OnyxiasLair/onyxias_lair.h b/src/server/scripts/Kalimdor/OnyxiasLair/onyxias_lair.h
index f98d1a83655..0c423f35de6 100644
--- a/src/server/scripts/Kalimdor/OnyxiasLair/onyxias_lair.h
+++ b/src/server/scripts/Kalimdor/OnyxiasLair/onyxias_lair.h
@@ -18,6 +18,8 @@
#ifndef DEF_ONYXIAS_LAIR_H
#define DEF_ONYXIAS_LAIR_H
+#define DataHeader "OL"
+
uint32 const EncounterCount = 1;
enum DataTypes
diff --git a/src/server/scripts/Kalimdor/RazorfenDowns/instance_razorfen_downs.cpp b/src/server/scripts/Kalimdor/RazorfenDowns/instance_razorfen_downs.cpp
index f7f4b035614..ca5e6a9828c 100644
--- a/src/server/scripts/Kalimdor/RazorfenDowns/instance_razorfen_downs.cpp
+++ b/src/server/scripts/Kalimdor/RazorfenDowns/instance_razorfen_downs.cpp
@@ -53,6 +53,7 @@ public:
{
instance_razorfen_downs_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
}
@@ -167,62 +168,17 @@ public:
}
break;
}
-
}
-
- }
-
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "R D " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- void Load(const char* str) override
- {
- 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 == 'D')
- {
- 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
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
}
- protected:
- uint64 goGongGUID;
- uint16 gongWave;
- uint8 fiendsKilled;
- uint8 reaversKilled;
- uint8 summonLowRange;
- uint8 summonHighRange;
- uint32 summonCreature;
+ protected:
+ uint64 goGongGUID;
+ uint16 gongWave;
+ uint8 fiendsKilled;
+ uint8 reaversKilled;
+ uint8 summonLowRange;
+ uint8 summonHighRange;
+ uint32 summonCreature;
};
InstanceScript* GetInstanceScript(InstanceMap* map) const override
diff --git a/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.h b/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.h
index a9a5a82f127..d77c48b8af0 100644
--- a/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.h
+++ b/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.h
@@ -19,6 +19,7 @@
#define DEF_RAZORFEN_DOWNS_H
#define RFDScriptName "instance_razorfen_downs"
+#define DataHeader "RFD"
uint32 const EncounterCount = 5;
diff --git a/src/server/scripts/Kalimdor/RazorfenKraul/instance_razorfen_kraul.cpp b/src/server/scripts/Kalimdor/RazorfenKraul/instance_razorfen_kraul.cpp
index 705b0231e82..6f9ba0afa7b 100644
--- a/src/server/scripts/Kalimdor/RazorfenKraul/instance_razorfen_kraul.cpp
+++ b/src/server/scripts/Kalimdor/RazorfenKraul/instance_razorfen_kraul.cpp
@@ -49,6 +49,7 @@ public:
void Initialize() override
{
+ SetHeaders(DataHeader);
WardKeeperDeath = 0;
DoorWardGUID = 0;
}
diff --git a/src/server/scripts/Kalimdor/RazorfenKraul/razorfen_kraul.h b/src/server/scripts/Kalimdor/RazorfenKraul/razorfen_kraul.h
index 236d06fee52..6d960d6146d 100644
--- a/src/server/scripts/Kalimdor/RazorfenKraul/razorfen_kraul.h
+++ b/src/server/scripts/Kalimdor/RazorfenKraul/razorfen_kraul.h
@@ -19,5 +19,7 @@
#ifndef DEF_RAZORFEN_KRAUL_H
#define DEF_RAZORFEN_KRAUL_H
+#define DataHeader "RFK"
+
#define EVENT_WARD_KEEPER 1
#endif
diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp
index 3da7e5b833f..1b62527dab7 100644
--- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp
+++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/instance_ruins_of_ahnqiraj.cpp
@@ -28,6 +28,7 @@ class instance_ruins_of_ahnqiraj : public InstanceMapScript
{
instance_ruins_of_ahnqiraj_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(NUM_ENCOUNTER);
_kurinaxxGUID = 0;
@@ -101,49 +102,6 @@ class instance_ruins_of_ahnqiraj : public InstanceMapScript
return 0;
}
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "R A" << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- void Load(char const* data)
- {
- if (!data)
- {
- OUT_LOAD_INST_DATA_FAIL;
- return;
- }
-
- OUT_LOAD_INST_DATA(data);
-
- char dataHead1, dataHead2;
-
- std::istringstream loadStream(data);
- loadStream >> dataHead1 >> dataHead2;
-
- if (dataHead1 == 'R' && dataHead2 == 'A')
- {
- for (uint8 i = 0; i < NUM_ENCOUNTER; ++i)
- {
- uint32 tmpState;
- loadStream >> tmpState;
- if (tmpState == IN_PROGRESS || tmpState > TO_BE_DECIDED)
- tmpState = NOT_STARTED;
- SetBossState(i, EncounterState(tmpState));
- }
- }
- else
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
-
private:
uint64 _kurinaxxGUID;
uint64 _rajaxxGUID;
diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/ruins_of_ahnqiraj.h b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/ruins_of_ahnqiraj.h
index 8d32bd61740..34c678474ec 100644
--- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/ruins_of_ahnqiraj.h
+++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/ruins_of_ahnqiraj.h
@@ -18,6 +18,8 @@
#ifndef DEF_RUINS_OF_AHNQIRAJ_H
#define DEF_RUINS_OF_AHNQIRAJ_H
+#define DataHeader "AQR"
+
enum DataTypes
{
DATA_KURINNAXX = 0,
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp
index 5780da5e759..e6d9bd86a4d 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp
@@ -58,6 +58,7 @@ class instance_temple_of_ahnqiraj : public InstanceMapScript
void Initialize() override
{
+ SetHeaders(DataHeader);
IsBossDied[0] = false;
IsBossDied[1] = false;
IsBossDied[2] = false;
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h
index fc858ced774..99ce6e738e8 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h
@@ -19,6 +19,8 @@
#ifndef DEF_TEMPLE_OF_AHNQIRAJ_H
#define DEF_TEMPLE_OF_AHNQIRAJ_H
+#define DataHeader "AQT"
+
enum DataTypes
{
DATA_SKERAM = 1,
diff --git a/src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp b/src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp
index 9b8397ec6cd..bb2fc8bca20 100644
--- a/src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp
+++ b/src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp
@@ -50,6 +50,7 @@ public:
void Initialize() override
{
+ SetHeaders(DataHeader);
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
yelled = false;
diff --git a/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.h b/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.h
index c331d5f43c1..87577f9abaf 100644
--- a/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.h
+++ b/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.h
@@ -19,6 +19,8 @@
#ifndef DEF_WAILING_CAVERNS_H
#define DEF_WAILING_CAVERNS_H
+#define DataHeader "WC"
+
enum DataTypes
{
TYPE_LORD_COBRAHN = 1,
diff --git a/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp b/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp
index 8139f45bf46..83f1724130c 100644
--- a/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp
+++ b/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp
@@ -126,6 +126,7 @@ public:
void Initialize() override
{
+ SetHeaders(DataHeader);
GahzRillaEncounter = NOT_STARTED;
ZumrahGUID = 0;
BlyGUID = 0;
diff --git a/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.h b/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.h
index 0d16c1d1ddd..3e742db02c0 100644
--- a/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.h
+++ b/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.h
@@ -5,6 +5,8 @@
#ifndef DEF_ZF_H
#define DEF_ZF_H
+#define DataHeader "ZF"
+
enum zfEntries
{
ENTRY_ZUM_RAH = 7271,
diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/ahnkahet.h b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/ahnkahet.h
index 3830ba3c8aa..0dc2d68319d 100644
--- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/ahnkahet.h
+++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/ahnkahet.h
@@ -19,6 +19,7 @@
#define AHNKAHET_H_
#define AhnKahetScriptName "instance_ahnkahet"
+#define DataHeader "AK"
uint32 const EncounterCount = 5;
diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp
index bf7b4355ea6..7c9ed240959 100644
--- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp
@@ -35,6 +35,7 @@ class instance_ahnkahet : public InstanceMapScript
{
instance_ahnkahet_InstanceScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
LoadDoorData(doorData);
@@ -258,50 +259,15 @@ class instance_ahnkahet : public InstanceMapScript
return true;
}
- std::string GetSaveData() override
+ void WriteSaveDataMore(std::ostringstream& data) override
{
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "A K " << GetBossSaveData() << SpheresState[0] << ' ' << SpheresState[1];
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
+ data << SpheresState[0] << ' ' << SpheresState[1];
}
- void Load(char const* str) override
+ void ReadSaveDataMore(std::istringstream& data) override
{
- 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 == 'A' && dataHead2 == 'K')
- {
- for (uint32 i = 0; i < EncounterCount; ++i)
- {
- uint32 tmpState;
- loadStream >> tmpState;
- if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
- tmpState = NOT_STARTED;
- SetBossState(i, EncounterState(tmpState));
- }
-
- loadStream >> SpheresState[0];
- loadStream >> SpheresState[1];
- }
- else
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
+ data >> SpheresState[0];
+ data >> SpheresState[1];
}
protected:
@@ -317,7 +283,7 @@ class instance_ahnkahet : public InstanceMapScript
std::set<uint64> InitiandGUIDs;
- uint8 SpheresState[2];
+ uint32 SpheresState[2];
uint8 SwitchTrigger;
};
diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/azjol_nerub.h b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/azjol_nerub.h
index 674e5cf36bb..c274b283c1d 100644
--- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/azjol_nerub.h
+++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/azjol_nerub.h
@@ -19,6 +19,7 @@
#define AZJOL_NERUB_H_
#define AzjolNerubScriptName "instance_azjol_nerub"
+#define DataHeader "AN"
uint32 const EncounterCount = 3;
diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp
index 106d7e54150..1ae68f5a33e 100644
--- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp
@@ -37,6 +37,7 @@ class instance_azjol_nerub : public InstanceMapScript
{
instance_azjol_nerub_InstanceScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
LoadDoorData(doorData);
@@ -128,49 +129,6 @@ class instance_azjol_nerub : public InstanceMapScript
return 0;
}
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "A N " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- void Load(char const* str) override
- {
- 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 == 'A' && dataHead2 == 'N')
- {
- 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
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
-
protected:
uint64 KrikthirGUID;
uint64 HadronoxGUID;
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp
index 0d07a9fde50..5e4a31d6b5e 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp
@@ -34,6 +34,7 @@ public:
void Initialize() override
{
+ SetHeaders(DataHeader);
sartharionGUID = 0;
tenebronGUID = 0;
shadronGUID = 0;
@@ -98,49 +99,6 @@ public:
return 0;
}
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "O S " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- void Load(const char* str) override
- {
- 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 == 'O' && dataHead2 == 'S')
- {
- 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
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
-
protected:
uint64 sartharionGUID;
uint64 tenebronGUID;
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.h b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.h
index f26ad3a45ed..341a5686e58 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.h
+++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.h
@@ -19,6 +19,7 @@
#define OBSIDIAN_SANCTUM_H_
#define OSScriptName "instance_obsidian_sanctum"
+#define DataHeader "OS"
uint32 const EncounterCount = 5;
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp
index 69605574f86..0c96a982997 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp
@@ -15,9 +15,9 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "ObjectMgr.h"
-#include "ScriptMgr.h"
#include "ScriptedCreature.h"
+#include "ScriptMgr.h"
+#include "SpellScript.h"
#include "SpellAuraEffects.h"
#include "ruby_sanctum.h"
@@ -245,7 +245,7 @@ class npc_baltharus_the_warborn_clone : public CreatureScript
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
{
// Setting DATA_BALTHARUS_SHARED_HEALTH to 0 when killed would bug the boss.
- if (_instance && me->GetHealth() > damage)
+ if (me->GetHealth() > damage)
_instance->SetData(DATA_BALTHARUS_SHARED_HEALTH, me->GetHealth() - damage);
}
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp
index 199337b0631..696d8e0f2a3 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp
@@ -17,6 +17,7 @@
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
+#include "SpellScript.h"
#include "ruby_sanctum.h"
enum Texts
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp
index eed8168eff8..28bf3a3d531 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp
@@ -15,12 +15,13 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "ScriptMgr.h"
#include "InstanceScript.h"
-#include "ruby_sanctum.h"
#include "Player.h"
+#include "ScriptedCreature.h"
+#include "ScriptMgr.h"
#include "TemporarySummon.h"
#include "WorldPacket.h"
+#include "ruby_sanctum.h"
DoorData const doorData[] =
{
@@ -37,6 +38,7 @@ class instance_ruby_sanctum : public InstanceMapScript
{
instance_ruby_sanctum_InstanceMapScript(InstanceMap* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
LoadDoorData(doorData);
BaltharusTheWarbornGUID = 0;
@@ -294,17 +296,6 @@ class instance_ruby_sanctum : public InstanceMapScript
return BaltharusSharedHealth;
}
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "R S " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
void FillInitialWorldStates(WorldPacket& data) override
{
data << uint32(WORLDSTATE_CORPOREALITY_MATERIAL) << uint32(50);
@@ -312,39 +303,6 @@ class instance_ruby_sanctum : public InstanceMapScript
data << uint32(WORLDSTATE_CORPOREALITY_TOGGLE) << uint32(0);
}
- void Load(char const* str) override
- {
- 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 < EncounterCount; ++i)
- {
- uint32 tmpState;
- loadStream >> tmpState;
- if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
- tmpState = NOT_STARTED;
-
- SetBossState(i, EncounterState(tmpState));
- }
- }
- else
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
-
protected:
uint64 BaltharusTheWarbornGUID;
uint64 GeneralZarithrianGUID;
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h
index 016d541cec9..055e04a1328 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h
@@ -18,12 +18,9 @@
#ifndef RUBY_SANCTUM_H_
#define RUBY_SANCTUM_H_
-#include "SpellScript.h"
-#include "Map.h"
-#include "Creature.h"
-#include "GameObjectAI.h"
-
#define RSScriptName "instance_ruby_sanctum"
+#define DataHeader "RS"
+
uint32 const EncounterCount = 4;
Position const HalionControllerSpawnPos = {3156.037f, 533.2656f, 72.97205f, 0.0f};
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp
index 5209e8b2f94..021947db0f7 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp
@@ -68,6 +68,7 @@ public:
void Initialize() override
{
+ SetHeaders(DataHeader);
uiMovementDone = 0;
uiGrandChampionsDeaths = 0;
uiArgentSoldierDeaths = 0;
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.h b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.h
index 2b69fcbcc08..4e3979dd0f9 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.h
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.h
@@ -19,6 +19,8 @@
#ifndef DEF_TOC_H
#define DEF_TOC_H
+#define DataHeader "TC"
+
enum Data
{
BOSS_GRAND_CHAMPIONS,
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp
index 7cab84ee4a7..3b919a778b3 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp
@@ -33,6 +33,7 @@ class instance_trial_of_the_crusader : public InstanceMapScript
void Initialize() override
{
+ SetHeaders(DataHeader);
SetBossNumber(MAX_ENCOUNTERS);
TrialCounter = 50;
EventStage = 0;
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h
index dc0f390f8e0..cf08fb75228 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h
@@ -5,6 +5,8 @@
#ifndef DEF_CRUSADER_H
#define DEF_CRUSADER_H
+#define DataHeader "TCR"
+
enum DataTypes
{
BOSS_BEASTS = 0,
diff --git a/src/server/scripts/Northrend/DraktharonKeep/drak_tharon_keep.h b/src/server/scripts/Northrend/DraktharonKeep/drak_tharon_keep.h
index b5e7be25d73..fd260e2c5ba 100644
--- a/src/server/scripts/Northrend/DraktharonKeep/drak_tharon_keep.h
+++ b/src/server/scripts/Northrend/DraktharonKeep/drak_tharon_keep.h
@@ -19,6 +19,7 @@
#define DRAK_THARON_KEEP_H_
#define DrakTharonKeepScriptName "instance_drak_tharon_keep"
+#define DataHeader "DTK"
uint32 const EncounterCount = 4;
diff --git a/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp b/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp
index d7c21991ca0..30b473b6ebc 100644
--- a/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp
+++ b/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp
@@ -29,6 +29,7 @@ class instance_drak_tharon_keep : public InstanceMapScript
{
instance_drak_tharon_keep_InstanceScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
TrollgoreGUID = 0;
@@ -159,49 +160,6 @@ class instance_drak_tharon_keep : public InstanceMapScript
novos->AI()->DoAction(ACTION_CRYSTAL_HANDLER_DIED);
}
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "D K " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- void Load(char const* str) override
- {
- 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 == 'D' && dataHead2 == 'K')
- {
- 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
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
-
protected:
uint64 TrollgoreGUID;
uint64 NovosGUID;
diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.h b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.h
index 14220e26cdd..34340ae3018 100644
--- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.h
+++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.h
@@ -19,6 +19,7 @@
#define DEF_FORGE_OF_SOULS_H
#define FoSScriptName "instance_forge_of_souls"
+#define DataHeader "FOS"
enum Data
{
diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp
index 964787777a7..f3034fa0796 100644
--- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp
@@ -36,6 +36,7 @@ class instance_forge_of_souls : public InstanceMapScript
{
instance_forge_of_souls_InstanceScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(MAX_ENCOUNTER);
bronjahm = 0;
devourerOfSouls = 0;
@@ -110,47 +111,6 @@ class instance_forge_of_souls : public InstanceMapScript
return 0;
}
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "F S " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- void Load(const char* in) override
- {
- 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 == 'F' && dataHead2 == 'S')
- {
- 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;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
-
private:
uint64 bronjahm;
uint64 devourerOfSouls;
diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.h b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.h
index a05035f7b44..578cf4f84fa 100644
--- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.h
+++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.h
@@ -19,6 +19,7 @@
#define HALLS_OF_REFLECTION_H_
#define HoRScriptName "instance_halls_of_reflection"
+#define DataHeader "HOR"
uint32 const EncounterCount = 3;
diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp
index 6f33e80b92b..51502b8a336 100644
--- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp
@@ -82,6 +82,7 @@ class instance_halls_of_reflection : public InstanceMapScript
{
instance_halls_of_reflection_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
JainaOrSylvanasIntroGUID = 0;
@@ -709,61 +710,25 @@ class instance_halls_of_reflection : public InstanceMapScript
return 0;
}
- std::string GetSaveData() override
+ void WriteSaveDataMore(std::ostringstream& data) override
{
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "H R " << GetBossSaveData() << _introState << ' ' << _frostswornGeneralState;
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
+ data << _introState << ' ' << _frostswornGeneralState;
}
- void Load(char const* in) override
+ void ReadSaveDataMore(std::istringstream& data) override
{
- 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 == 'H' && dataHead2 == 'R')
- {
- for (uint8 i = 0; i < EncounterCount; ++i)
- {
- uint32 tmpState;
- loadStream >> tmpState;
- if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
- tmpState = NOT_STARTED;
-
- SetBossState(i, EncounterState(tmpState));
- }
-
- uint32 temp = 0;
- loadStream >> temp;
- if (temp == DONE)
- SetData(DATA_INTRO_EVENT, DONE);
- else
- SetData(DATA_INTRO_EVENT, NOT_STARTED);
-
- loadStream >> temp;
- if (temp == DONE)
- SetData(DATA_FROSTSWORN_GENERAL, DONE);
- else
- SetData(DATA_FROSTSWORN_GENERAL, NOT_STARTED);
- }
+ uint32 temp = 0;
+ data >> temp;
+ if (temp == DONE)
+ SetData(DATA_INTRO_EVENT, DONE);
else
- OUT_LOAD_INST_DATA_FAIL;
+ SetData(DATA_INTRO_EVENT, NOT_STARTED);
- OUT_LOAD_INST_DATA_COMPLETE;
+ data >> temp;
+ if (temp == DONE)
+ SetData(DATA_FROSTSWORN_GENERAL, DONE);
+ else
+ SetData(DATA_FROSTSWORN_GENERAL, NOT_STARTED);
}
private:
diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp
index c2df16f03e1..9b9376c34f2 100644
--- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp
@@ -41,6 +41,7 @@ class instance_pit_of_saron : public InstanceMapScript
{
instance_pit_of_saron_InstanceScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
LoadDoorData(Doors);
_garfrostGUID = 0;
@@ -264,50 +265,6 @@ class instance_pit_of_saron : public InstanceMapScript
return 0;
}
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "P S " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- void Load(const char* in) override
- {
- 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 == 'P' && dataHead2 == 'S')
- {
- for (uint8 i = 0; i < EncounterCount; ++i)
- {
- uint32 tmpState;
- loadStream >> tmpState;
- if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
- tmpState = NOT_STARTED;
-
- SetBossState(i, EncounterState(tmpState));
- }
- }
- else
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
-
private:
uint64 _garfrostGUID;
uint64 _krickGUID;
diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.h b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.h
index 2a2f6a25741..4f06c6b2a26 100644
--- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.h
+++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.h
@@ -19,6 +19,7 @@
#define PIT_OF_SARON_H_
#define PoSScriptName "instance_pit_of_saron"
+#define DataHeader "POS"
uint32 const EncounterCount = 3;
diff --git a/src/server/scripts/Northrend/Gundrak/gundrak.h b/src/server/scripts/Northrend/Gundrak/gundrak.h
index 4cdbec3c157..8f269705a45 100644
--- a/src/server/scripts/Northrend/Gundrak/gundrak.h
+++ b/src/server/scripts/Northrend/Gundrak/gundrak.h
@@ -18,6 +18,8 @@
#ifndef DEF_GUNDRAK_H
#define DEF_GUNDRAK_H
+#define DataHeader "GD"
+
enum Data
{
DATA_SLAD_RAN_EVENT,
diff --git a/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp b/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp
index 273cc4361af..e5efdad27f3 100644
--- a/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp
+++ b/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp
@@ -45,6 +45,7 @@ public:
{
instance_gundrak_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
isHeroic = map->IsHeroic();
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h
index fbd3a715fb8..5d2aa9ca02f 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h
+++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h
@@ -19,11 +19,9 @@
#define ICECROWN_CITADEL_H_
#include "SpellScript.h"
-#include "Map.h"
-#include "Creature.h"
-#include "SpellMgr.h"
#define ICCScriptName "instance_icecrown_citadel"
+#define DataHeader "IC"
uint32 const EncounterCount = 13;
uint32 const WeeklyNPCs = 9;
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp
index 469bfc1d310..af07375e14c 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp
@@ -15,12 +15,12 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include "InstanceScript.h"
+#include "Player.h"
#include "ScriptedGossip.h"
#include "ScriptMgr.h"
-#include "InstanceScript.h"
-#include "icecrown_citadel.h"
#include "Spell.h"
-#include "Player.h"
+#include "icecrown_citadel.h"
#define GOSSIP_SENDER_ICC_PORT 631
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
index f7f8e3e2489..64e1d788695 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
@@ -115,6 +115,7 @@ class instance_icecrown_citadel : public InstanceMapScript
{
instance_icecrown_citadel_InstanceMapScript(InstanceMap* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
LoadDoorData(doorData);
TeamInInstance = 0;
@@ -1324,64 +1325,32 @@ class instance_icecrown_citadel : public InstanceMapScript
}
}
- std::string GetSaveData() override
+ void WriteSaveDataMore(std::ostringstream& data) override
{
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "I C " << GetBossSaveData() << HeroicAttempts << ' '
- << ColdflameJetsState << ' ' << BloodQuickeningState << ' ' << BloodQuickeningMinutes << ' ' << UpperSpireTeleporterActiveState;
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
+ data << HeroicAttempts << ' '
+ << ColdflameJetsState << ' '
+ << BloodQuickeningState << ' '
+ << BloodQuickeningMinutes << ' '
+ << UpperSpireTeleporterActiveState;
}
- void Load(const char* str) override
+ void ReadSaveDataMore(std::istringstream& data) override
{
- if (!str)
- {
- OUT_LOAD_INST_DATA_FAIL;
- return;
- }
+ data >> HeroicAttempts;
- OUT_LOAD_INST_DATA(str);
-
- char dataHead1, dataHead2;
-
- std::istringstream loadStream(str);
- loadStream >> dataHead1 >> dataHead2;
-
- if (dataHead1 == 'I' && dataHead2 == 'C')
- {
- for (uint32 i = 0; i < EncounterCount; ++i)
- {
- uint32 tmpState;
- loadStream >> tmpState;
- if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
- tmpState = NOT_STARTED;
- SetBossState(i, EncounterState(tmpState));
- }
-
- loadStream >> HeroicAttempts;
-
- uint32 temp = 0;
- loadStream >> temp;
- if (temp == IN_PROGRESS)
- ColdflameJetsState = NOT_STARTED;
- else
- ColdflameJetsState = temp ? DONE : NOT_STARTED;
-
- loadStream >> temp;
- BloodQuickeningState = temp ? DONE : NOT_STARTED; // DONE means finished (not success/fail)
- loadStream >> BloodQuickeningMinutes;
-
- loadStream >> temp;
- UpperSpireTeleporterActiveState = temp ? DONE : NOT_STARTED;
- }
+ uint32 temp = 0;
+ data >> temp;
+ if (temp == IN_PROGRESS)
+ ColdflameJetsState = NOT_STARTED;
else
- OUT_LOAD_INST_DATA_FAIL;
+ ColdflameJetsState = temp ? DONE : NOT_STARTED;
+
+ data >> temp;
+ BloodQuickeningState = temp ? DONE : NOT_STARTED; // DONE means finished (not success/fail)
+ data >> BloodQuickeningMinutes;
- OUT_LOAD_INST_DATA_COMPLETE;
+ data >> temp;
+ UpperSpireTeleporterActiveState = temp ? DONE : NOT_STARTED;
}
void Update(uint32 diff) override
diff --git a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp
index e8ed181da5a..173b6e2d094 100644
--- a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp
@@ -107,6 +107,7 @@ class instance_naxxramas : public InstanceMapScript
{
instance_naxxramas_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
LoadDoorData(doorData);
LoadMinionData(minionData);
@@ -427,50 +428,6 @@ class instance_naxxramas : public InstanceMapScript
return false;
}
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "N X " << GetBossSaveData() << playerDied;
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- 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;
- }
-
protected:
/* The Arachnid Quarter */
// Grand Widow Faerlina
diff --git a/src/server/scripts/Northrend/Naxxramas/naxxramas.h b/src/server/scripts/Northrend/Naxxramas/naxxramas.h
index b6e87504c77..8325271a403 100644
--- a/src/server/scripts/Northrend/Naxxramas/naxxramas.h
+++ b/src/server/scripts/Northrend/Naxxramas/naxxramas.h
@@ -18,6 +18,8 @@
#ifndef DEF_NAXXRAMAS_H
#define DEF_NAXXRAMAS_H
+#define DataHeader "NAX"
+
uint32 const EncounterCount = 15;
enum Encounter
diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/eye_of_eternity.h b/src/server/scripts/Northrend/Nexus/EyeOfEternity/eye_of_eternity.h
index f94acf5d772..ef7dd743515 100644
--- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/eye_of_eternity.h
+++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/eye_of_eternity.h
@@ -18,6 +18,8 @@
#ifndef DEF_EYE_OF_ETERNITY_H
#define DEF_EYE_OF_ETERNITY_H
+#define DataHeader "EOE"
+
enum InstanceData
{
DATA_MALYGOS_EVENT,
diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp
index 8a1fb6a9829..1489b78159b 100644
--- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp
+++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp
@@ -35,6 +35,7 @@ public:
{
instance_eye_of_eternity_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(MAX_ENCOUNTER);
vortexTriggers.clear();
@@ -278,65 +279,23 @@ public:
return 0;
}
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "E E " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- void Load(const char* str) override
- {
- 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 == 'E' && dataHead2 == 'E')
- {
- 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;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
-
- private:
- std::list<uint64> vortexTriggers;
- std::list<uint64> portalTriggers;
- uint64 malygosGUID;
- uint64 irisGUID;
- uint64 lastPortalGUID;
- uint64 platformGUID;
- uint64 exitPortalGUID;
- uint64 heartOfMagicGUID;
- uint64 alexstraszaBunnyGUID;
- uint64 giftBoxBunnyGUID;
- Position focusingIrisPosition;
- Position exitPortalPosition;
+ private:
+ std::list<uint64> vortexTriggers;
+ std::list<uint64> portalTriggers;
+ uint64 malygosGUID;
+ uint64 irisGUID;
+ uint64 lastPortalGUID;
+ uint64 platformGUID;
+ uint64 exitPortalGUID;
+ uint64 heartOfMagicGUID;
+ uint64 alexstraszaBunnyGUID;
+ uint64 giftBoxBunnyGUID;
+ Position focusingIrisPosition;
+ Position exitPortalPosition;
};
};
void AddSC_instance_eye_of_eternity()
{
- new instance_eye_of_eternity();
+ new instance_eye_of_eternity();
}
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp b/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp
index f2118932d61..663f4bca6ac 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp
+++ b/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp
@@ -55,6 +55,7 @@ public:
void Initialize() override
{
+ SetHeaders(DataHeader);
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
Anomalus = 0;
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/nexus.h b/src/server/scripts/Northrend/Nexus/Nexus/nexus.h
index e9be1a32c2a..c9f5d44c932 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/nexus.h
+++ b/src/server/scripts/Northrend/Nexus/Nexus/nexus.h
@@ -18,6 +18,8 @@
#ifndef DEF_NEXUS_H
#define DEF_NEXUS_H
+#define DataHeader "NEX"
+
enum DataTypes
{
DATA_MAGUS_TELESTRA_EVENT,
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp b/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp
index 2b15ddf32c4..b758f9c678c 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp
@@ -40,6 +40,7 @@ class instance_oculus : public InstanceMapScript
{
instance_oculus_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
LoadDoorData(doorData);
@@ -286,49 +287,6 @@ class instance_oculus : public InstanceMapScript
gwhelp->SetPhaseMask(1, true);
}
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "T O " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- void Load(char const* str) override
- {
- 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 == 'T' && dataHead2 == 'O')
- {
- 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
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
-
protected:
uint64 DrakosGUID;
uint64 VarosGUID;
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/oculus.h b/src/server/scripts/Northrend/Nexus/Oculus/oculus.h
index f54b1c067f0..268cdb54e3e 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/oculus.h
+++ b/src/server/scripts/Northrend/Nexus/Oculus/oculus.h
@@ -19,6 +19,7 @@
#define OCULUS_H_
#define OculusScriptName "instance_oculus"
+#define DataHeader "OC"
uint32 const EncounterCount = 4;
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/halls_of_lightning.h b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/halls_of_lightning.h
index cef99ce7abd..5dd2e48898b 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/halls_of_lightning.h
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/halls_of_lightning.h
@@ -19,6 +19,7 @@
#define HALLS_OF_LIGHTNING_H_
#define HoLScriptName "instance_halls_of_lightning"
+#define DataHeader "HOL"
uint32 const EncounterCount = 4;
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/instance_halls_of_lightning.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/instance_halls_of_lightning.cpp
index 2f5273f0296..0f44f935d24 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/instance_halls_of_lightning.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/instance_halls_of_lightning.cpp
@@ -36,6 +36,7 @@ class instance_halls_of_lightning : public InstanceMapScript
{
instance_halls_of_lightning_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
LoadDoorData(doorData);
@@ -136,49 +137,6 @@ class instance_halls_of_lightning : public InstanceMapScript
return 0;
}
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "H L " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- void Load(const char* str) override
- {
- 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 == 'H' && 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
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
-
protected:
uint64 GeneralBjarngrimGUID;
uint64 VolkhanGUID;
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.h b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.h
index 3690557d91b..253fbc43a5d 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.h
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.h
@@ -19,6 +19,7 @@
#define HALLS_OF_STONE_H_
#define HoSScriptName "instance_halls_of_stone"
+#define DataHeader "HOS"
uint32 const EncounterCount = 4;
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp
index 0c9492c87c0..b7aa606aeeb 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/instance_halls_of_stone.cpp
@@ -15,11 +15,11 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "ScriptMgr.h"
#include "InstanceScript.h"
+#include "Player.h"
+#include "ScriptMgr.h"
#include "WorldSession.h"
#include "halls_of_stone.h"
-#include <Player.h>
DoorData const doorData[] =
{
@@ -36,6 +36,7 @@ class instance_halls_of_stone : public InstanceMapScript
{
instance_halls_of_stone_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
LoadDoorData(doorData);
@@ -203,49 +204,6 @@ class instance_halls_of_stone : public InstanceMapScript
return true;
}
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "H S " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- void Load(char const* str) override
- {
- 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 == 'H' && dataHead2 == 'S')
- {
- 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
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
-
protected:
uint64 KrystallusGUID;
uint64 MaidenOfGriefGUID;
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
index a074ce28181..56f5c19c574 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp
@@ -123,6 +123,7 @@ class instance_ulduar : public InstanceMapScript
void Initialize() override
{
+ SetHeaders(DataHeader);
SetBossNumber(MAX_ENCOUNTER);
LoadDoorData(doorData);
LoadMinionData(minionData);
@@ -1033,84 +1034,50 @@ class instance_ulduar : public InstanceMapScript
return false;
}
- std::string GetSaveData() override
+ void WriteSaveDataMore(std::ostringstream& data) override
{
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "U U " << GetBossSaveData() << GetData(DATA_COLOSSUS) << ' ' << _algalonTimer << ' ' << (_algalonSummoned ? 1 : 0);
+ data << GetData(DATA_COLOSSUS) << ' ' << _algalonTimer << ' ' << uint32(_algalonSummoned ? 1 : 0);
for (uint8 i = 0; i < 4; ++i)
- saveStream << ' ' << (KeeperGUIDs[i] ? 1 : 0);
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
+ data << ' ' << uint32(KeeperGUIDs[i] ? 1 : 0);
}
- void Load(char const* strIn) override
+ void ReadSaveDataMore(std::istringstream& data) override
{
- if (!strIn)
+ uint32 tempState;
+ data >> tempState;
+ if (tempState == IN_PROGRESS || tempState > SPECIAL)
+ tempState = NOT_STARTED;
+ SetData(DATA_COLOSSUS, tempState);
+
+ data >> _algalonTimer;
+ data >> tempState;
+ _algalonSummoned = tempState != 0;
+ if (_algalonSummoned && GetBossState(BOSS_ALGALON) != DONE)
{
- 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);
- }
- }
-
- for (uint8 i = 0; i < 4; ++i)
+ _summonAlgalon = true;
+ if (_algalonTimer && _algalonTimer <= 60)
{
- loadStream >> tempState;
- _summonYSKeeper[i] = tempState != 0;
+ _events.ScheduleEvent(EVENT_UPDATE_ALGALON_TIMER, 60000);
+ DoUpdateWorldState(WORLD_STATE_ALGALON_TIMER_ENABLED, 1);
+ DoUpdateWorldState(WORLD_STATE_ALGALON_DESPAWN_TIMER, _algalonTimer);
}
+ }
- if (GetBossState(BOSS_FREYA) == DONE && !_summonYSKeeper[0])
- _summonObservationRingKeeper[0] = true;
- if (GetBossState(BOSS_HODIR) == DONE && !_summonYSKeeper[1])
- _summonObservationRingKeeper[1] = true;
- if (GetBossState(BOSS_THORIM) == DONE && !_summonYSKeeper[2])
- _summonObservationRingKeeper[2] = true;
- if (GetBossState(BOSS_MIMIRON) == DONE && !_summonYSKeeper[3])
- _summonObservationRingKeeper[3] = true;
+ for (uint8 i = 0; i < 4; ++i)
+ {
+ data >> tempState;
+ _summonYSKeeper[i] = tempState != 0;
}
- OUT_LOAD_INST_DATA_COMPLETE;
+ if (GetBossState(BOSS_FREYA) == DONE && !_summonYSKeeper[0])
+ _summonObservationRingKeeper[0] = true;
+ if (GetBossState(BOSS_HODIR) == DONE && !_summonYSKeeper[1])
+ _summonObservationRingKeeper[1] = true;
+ if (GetBossState(BOSS_THORIM) == DONE && !_summonYSKeeper[2])
+ _summonObservationRingKeeper[2] = true;
+ if (GetBossState(BOSS_MIMIRON) == DONE && !_summonYSKeeper[3])
+ _summonObservationRingKeeper[3] = true;
}
void Update(uint32 diff) override
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h
index 5dfc2b54f6e..9b95d7cf7b8 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h
@@ -19,6 +19,7 @@
#define DEF_ULDUAR_H
#define UlduarScriptName "instance_ulduar"
+#define DataHeader "UU"
extern Position const ObservationRingKeepersPos[4];
extern Position const YSKeepersPos[4];
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/instance_utgarde_keep.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/instance_utgarde_keep.cpp
index 69229be1771..78df568d144 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/instance_utgarde_keep.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/instance_utgarde_keep.cpp
@@ -41,6 +41,7 @@ class instance_utgarde_keep : public InstanceMapScript
{
instance_utgarde_keep_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
LoadDoorData(doorData);
LoadMinionData(minionData);
@@ -191,53 +192,16 @@ class instance_utgarde_keep : public InstanceMapScript
}
}
- std::string GetSaveData() override
+ void WriteSaveDataMore(std::ostringstream& data) override
{
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "U K " << GetBossSaveData();
-
for (uint8 i = 0; i < 3; ++i)
- saveStream << Forges[i].Event << ' ';
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
+ data << Forges[i].Event << ' ';
}
- void Load(char const* str) override
+ void ReadSaveDataMore(std::istringstream& data) override
{
- 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 == 'U' && dataHead2 == 'K')
- {
- for (uint32 i = 0; i < EncounterCount; ++i)
- {
- uint32 tmpState;
- loadStream >> tmpState;
- if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
- tmpState = NOT_STARTED;
- SetBossState(i, EncounterState(tmpState));
- }
-
- for (uint8 i = 0; i < 3; ++i)
- loadStream >> Forges[i].Event;
- }
- else
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
+ for (uint8 i = 0; i < 3; ++i)
+ data >> Forges[i].Event;
}
protected:
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.h b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.h
index 240cb8c65db..751239755cf 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.h
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.h
@@ -19,6 +19,7 @@
#define UTGARDE_KEEP_H_
#define UKScriptName "instance_utgarde_keep"
+#define DataHeader "UK"
uint32 const EncounterCount = 3;
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/instance_utgarde_pinnacle.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/instance_utgarde_pinnacle.cpp
index 6eea38c32a3..1bc3f20c3fe 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/instance_utgarde_pinnacle.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/instance_utgarde_pinnacle.cpp
@@ -35,6 +35,7 @@ class instance_utgarde_pinnacle : public InstanceMapScript
{
instance_utgarde_pinnacle_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
LoadDoorData(doorData);
@@ -181,49 +182,6 @@ class instance_utgarde_pinnacle : public InstanceMapScript
return 0;
}
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "U P " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- void Load(char const* str) override
- {
- 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 == 'U' && dataHead2 == 'P')
- {
- 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
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
-
protected:
uint64 SvalaSorrowgraveGUID;
uint64 GortokPalehoofGUID;
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h
index 99acef0b2b3..cccfcede80b 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h
@@ -19,6 +19,7 @@
#define UTGARDE_PINNACLE_H_
#define UPScriptName "instance_utgarde_pinnacle"
+#define DataHeader "UP"
uint32 const EncounterCount = 4;
diff --git a/src/server/scripts/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp
index 1f5b16f1a46..959c8b7724d 100644
--- a/src/server/scripts/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp
+++ b/src/server/scripts/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp
@@ -35,6 +35,7 @@ class instance_vault_of_archavon : public InstanceMapScript
{
instance_vault_of_archavon_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
EmalonGUID = 0;
diff --git a/src/server/scripts/Northrend/VaultOfArchavon/vault_of_archavon.h b/src/server/scripts/Northrend/VaultOfArchavon/vault_of_archavon.h
index 4a8d52ac306..d321a7b8347 100644
--- a/src/server/scripts/Northrend/VaultOfArchavon/vault_of_archavon.h
+++ b/src/server/scripts/Northrend/VaultOfArchavon/vault_of_archavon.h
@@ -18,6 +18,8 @@
#ifndef DEF_ARCHAVON_H
#define DEF_ARCHAVON_H
+#define DataHeader "VA"
+
uint32 const EncounterCount = 4;
enum Data
diff --git a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp
index c799a2f1813..9c81e664fd4 100644
--- a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp
+++ b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp
@@ -170,6 +170,7 @@ public:
void Initialize() override
{
+ SetHeaders(DataHeader);
uiMoragg = 0;
uiErekem = 0;
uiIchoron = 0;
diff --git a/src/server/scripts/Northrend/VioletHold/violet_hold.h b/src/server/scripts/Northrend/VioletHold/violet_hold.h
index 96691f5e662..205fbec2487 100644
--- a/src/server/scripts/Northrend/VioletHold/violet_hold.h
+++ b/src/server/scripts/Northrend/VioletHold/violet_hold.h
@@ -18,6 +18,8 @@
#ifndef DEF_VIOLET_HOLD_H
#define DEF_VIOLET_HOLD_H
+#define DataHeader "VIO"
+
enum Data
{
DATA_1ST_BOSS_EVENT,
diff --git a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/auchenai_crypts.h b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/auchenai_crypts.h
index d741044eea7..c07c8365c2f 100644
--- a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/auchenai_crypts.h
+++ b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/auchenai_crypts.h
@@ -19,6 +19,7 @@
#define AUCHENAI_CRYPTS_H_
#define ACScriptName "instance_auchenai_crypts"
+#define DataHeader "AC"
uint32 const EncounterCount = 2;
diff --git a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/instance_auchenai_crypts.cpp b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/instance_auchenai_crypts.cpp
index 4b8a764fa03..33c9aab0cf9 100644
--- a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/instance_auchenai_crypts.cpp
+++ b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/instance_auchenai_crypts.cpp
@@ -28,6 +28,7 @@ class instance_auchenai_crypts : public InstanceMapScript
{
instance_auchenai_crypts_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
}
};
diff --git a/src/server/scripts/Outland/Auchindoun/ManaTombs/instance_mana_tombs.cpp b/src/server/scripts/Outland/Auchindoun/ManaTombs/instance_mana_tombs.cpp
index 48bea45a95b..4629aadb2bd 100644
--- a/src/server/scripts/Outland/Auchindoun/ManaTombs/instance_mana_tombs.cpp
+++ b/src/server/scripts/Outland/Auchindoun/ManaTombs/instance_mana_tombs.cpp
@@ -28,6 +28,7 @@ class instance_mana_tombs : public InstanceMapScript
{
instance_mana_tombs_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
}
};
diff --git a/src/server/scripts/Outland/Auchindoun/ManaTombs/mana_tombs.h b/src/server/scripts/Outland/Auchindoun/ManaTombs/mana_tombs.h
index 89eefa19d6a..7dd9e96a75e 100644
--- a/src/server/scripts/Outland/Auchindoun/ManaTombs/mana_tombs.h
+++ b/src/server/scripts/Outland/Auchindoun/ManaTombs/mana_tombs.h
@@ -19,6 +19,7 @@
#define MANA_TOMBS_H_
#define MTScriptName "instance_mana_tombs"
+#define DataHeader "MT"
uint32 const EncounterCount = 4;
diff --git a/src/server/scripts/Outland/Auchindoun/SethekkHalls/instance_sethekk_halls.cpp b/src/server/scripts/Outland/Auchindoun/SethekkHalls/instance_sethekk_halls.cpp
index 308e5e80105..53fbf8f0cf7 100644
--- a/src/server/scripts/Outland/Auchindoun/SethekkHalls/instance_sethekk_halls.cpp
+++ b/src/server/scripts/Outland/Auchindoun/SethekkHalls/instance_sethekk_halls.cpp
@@ -34,6 +34,7 @@ class instance_sethekk_halls : public InstanceMapScript
{
instance_sethekk_halls_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
LoadDoorData(doorData);
}
@@ -60,49 +61,6 @@ class instance_sethekk_halls : public InstanceMapScript
if (go->GetEntry() == GO_IKISS_DOOR)
AddDoor(go, false);
}
-
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "S H " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- void Load(char const* str) override
- {
- 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 == 'H')
- {
- 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
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
};
InstanceScript* GetInstanceScript(InstanceMap* map) const override
diff --git a/src/server/scripts/Outland/Auchindoun/SethekkHalls/sethekk_halls.h b/src/server/scripts/Outland/Auchindoun/SethekkHalls/sethekk_halls.h
index aeca1b88fcd..4b6bfab46cb 100644
--- a/src/server/scripts/Outland/Auchindoun/SethekkHalls/sethekk_halls.h
+++ b/src/server/scripts/Outland/Auchindoun/SethekkHalls/sethekk_halls.h
@@ -19,6 +19,7 @@
#define SETHEKK_HALLS_H_
#define SHScriptName "instance_sethekk_halls"
+#define DataHeader "SH"
uint32 const EncounterCount = 3;
diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/instance_shadow_labyrinth.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/instance_shadow_labyrinth.cpp
index 4df80a0e15b..9bd985130a9 100644
--- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/instance_shadow_labyrinth.cpp
+++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/instance_shadow_labyrinth.cpp
@@ -36,6 +36,7 @@ class instance_shadow_labyrinth : public InstanceMapScript
{
instance_shadow_labyrinth_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
LoadDoorData(doorData);
@@ -134,49 +135,6 @@ class instance_shadow_labyrinth : public InstanceMapScript
return 0;
}
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "S L " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- void Load(char const* str) override
- {
- 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
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
-
protected:
uint64 AmbassadorHellmawGUID;
uint64 GrandmasterVorpilGUID;
diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/shadow_labyrinth.h b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/shadow_labyrinth.h
index d7ef52cc7a7..1fa70298d41 100644
--- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/shadow_labyrinth.h
+++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/shadow_labyrinth.h
@@ -19,6 +19,7 @@
#define SHADOW_LABYRINTH_H_
#define SLScriptName "instance_shadow_labyrinth"
+#define DataHeader "SL"
uint32 const EncounterCount = 4;
diff --git a/src/server/scripts/Outland/BlackTemple/black_temple.h b/src/server/scripts/Outland/BlackTemple/black_temple.h
index c03c8b97d20..bbad9ff7651 100644
--- a/src/server/scripts/Outland/BlackTemple/black_temple.h
+++ b/src/server/scripts/Outland/BlackTemple/black_temple.h
@@ -19,6 +19,7 @@
#define BLACK_TEMPLE_H_
#define BTScriptName "instance_black_temple"
+#define DataHeader "BT"
uint32 const EncounterCount = 9;
diff --git a/src/server/scripts/Outland/BlackTemple/instance_black_temple.cpp b/src/server/scripts/Outland/BlackTemple/instance_black_temple.cpp
index 5b91367a9c9..55ad45597ea 100644
--- a/src/server/scripts/Outland/BlackTemple/instance_black_temple.cpp
+++ b/src/server/scripts/Outland/BlackTemple/instance_black_temple.cpp
@@ -44,6 +44,7 @@ class instance_black_temple : public InstanceMapScript
{
instance_black_temple_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
LoadDoorData(doorData);
@@ -202,49 +203,6 @@ class instance_black_temple : public InstanceMapScript
return 0;
}
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "B T " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- void Load(char const* str) override
- {
- 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 == 'B' && dataHead2 == 'T')
- {
- 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
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
-
protected:
uint64 NajentusGUID;
uint64 SupremusGUID;
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp
index bc557d97ef5..a3577f40d68 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp
@@ -87,6 +87,7 @@ class instance_serpent_shrine : public InstanceMapScript
{
instance_serpentshrine_cavern_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
}
void Initialize() override
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/serpent_shrine.h b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/serpent_shrine.h
index f7f3bc9c24b..660ec6bfb3d 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/serpent_shrine.h
+++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/serpent_shrine.h
@@ -19,6 +19,8 @@
#ifndef DEF_SERPENT_SHRINE_H
#define DEF_SERPENT_SHRINE_H
+#define DataHeader "SS"
+
enum WaterEventState
{
WATERSTATE_NONE = 0,
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/instance_steam_vault.cpp b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/instance_steam_vault.cpp
index 19e8c5187ba..40bc8dd69d7 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/instance_steam_vault.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/instance_steam_vault.cpp
@@ -55,6 +55,7 @@ class instance_steam_vault : public InstanceMapScript
{
instance_steam_vault_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
ThespiaGUID = 0;
@@ -156,56 +157,13 @@ class instance_steam_vault : public InstanceMapScript
return true;
}
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "S V " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- void Load(char const* str) override
- {
- 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 == 'V')
- {
- 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
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
-
- protected:
- uint64 ThespiaGUID;
- uint64 MekgineerGUID;
- uint64 KalithreshGUID;
+ protected:
+ uint64 ThespiaGUID;
+ uint64 MekgineerGUID;
+ uint64 KalithreshGUID;
- uint64 MainChambersDoorGUID;
- uint8 DistillerState;
+ uint64 MainChambersDoorGUID;
+ uint8 DistillerState;
};
InstanceScript* GetInstanceScript(InstanceMap* map) const override
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/steam_vault.h b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/steam_vault.h
index e1761c80769..58f71b047ef 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/steam_vault.h
+++ b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/steam_vault.h
@@ -19,6 +19,7 @@
#define DEF_STEAM_VAULT_H
#define SteamVaultScriptName "instance_steam_vault"
+#define DataHeader "SV"
uint32 const EncounterCount = 3;
diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/the_slave_pens.h b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/the_slave_pens.h
index 101268727b0..3130737eed5 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/the_slave_pens.h
+++ b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/the_slave_pens.h
@@ -21,6 +21,7 @@
uint32 const EncounterCount = 3;
#define SPScriptName "instance_the_slave_pens"
+#define DataHeader "SP"
enum DataTypes
{
diff --git a/src/server/scripts/Outland/GruulsLair/gruuls_lair.h b/src/server/scripts/Outland/GruulsLair/gruuls_lair.h
index 81644a01567..288601c4584 100644
--- a/src/server/scripts/Outland/GruulsLair/gruuls_lair.h
+++ b/src/server/scripts/Outland/GruulsLair/gruuls_lair.h
@@ -19,6 +19,7 @@
#define GRUULS_LAIR_H_
#define GLScriptName "instance_gruuls_lair"
+#define DataHeader "GL"
uint32 const EncounterCount = 2;
diff --git a/src/server/scripts/Outland/GruulsLair/instance_gruuls_lair.cpp b/src/server/scripts/Outland/GruulsLair/instance_gruuls_lair.cpp
index ae3971a943e..3337ce47fd6 100644
--- a/src/server/scripts/Outland/GruulsLair/instance_gruuls_lair.cpp
+++ b/src/server/scripts/Outland/GruulsLair/instance_gruuls_lair.cpp
@@ -44,6 +44,7 @@ class instance_gruuls_lair : public InstanceMapScript
{
instance_gruuls_lair_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
LoadDoorData(doorData);
LoadMinionData(minionData);
@@ -123,49 +124,6 @@ class instance_gruuls_lair : public InstanceMapScript
return 0;
}
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "G L " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- void Load(char const* str) override
- {
- 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 == 'G' && 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
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
-
protected:
uint64 MaulgarGUID;
};
diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/blood_furnace.h b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/blood_furnace.h
index 51c5a5221ea..8bcfdf5558f 100644
--- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/blood_furnace.h
+++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/blood_furnace.h
@@ -19,6 +19,8 @@
#define BLOOD_FURNACE_H_
#define BFScriptName "instance_blood_furnace"
+#define DataHeader "BF"
+
uint32 const EncounterCount = 3;
enum DataTypes
diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp
index 4f1200be37b..d88594d9c1e 100644
--- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/instance_blood_furnace.cpp
@@ -40,6 +40,7 @@ class instance_blood_furnace : public InstanceMapScript
{
instance_blood_furnace_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
LoadDoorData(doorData);
@@ -322,49 +323,6 @@ class instance_blood_furnace : public InstanceMapScript
}
}
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "B F " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- void Load(char const* str) override
- {
- 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 == 'B' && dataHead2 == 'F')
- {
- 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
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
-
protected:
uint64 TheMakerGUID;
uint64 BroggokGUID;
diff --git a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/hellfire_ramparts.h b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/hellfire_ramparts.h
index 61252d16527..df34ab5fafb 100644
--- a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/hellfire_ramparts.h
+++ b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/hellfire_ramparts.h
@@ -19,6 +19,8 @@
#ifndef DEF_RAMPARTS_H
#define DEF_RAMPARTS_H
+#define DataHeader "HR"
+
uint32 const EncounterCount = 4;
enum DataTypes
diff --git a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp
index 9a0e7c22308..c8ffc7d495a 100644
--- a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp
@@ -38,6 +38,7 @@ class instance_ramparts : public InstanceMapScript
void Initialize() override
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
felIronChestGUID = 0;
}
@@ -72,53 +73,9 @@ class instance_ramparts : public InstanceMapScript
return true;
}
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "H R " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- 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 == 'H' && dataHead2 == 'R')
- {
- for (uint8 i = 0; i < EncounterCount; ++i)
- {
- uint32 tmpState;
- loadStream >> tmpState;
- if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
- tmpState = NOT_STARTED;
-
- SetBossState(i, EncounterState(tmpState));
- }
- }
- else
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
-
- protected:
- uint64 felIronChestGUID;
- bool spawned;
+ protected:
+ uint64 felIronChestGUID;
+ bool spawned;
};
InstanceScript* GetInstanceScript(InstanceMap* map) const override
diff --git a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp
index 71d9203fcac..ae5ad009942 100644
--- a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp
@@ -68,6 +68,7 @@ class instance_magtheridons_lair : public InstanceMapScript
void Initialize() override
{
+ SetHeaders(DataHeader);
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
MagtheridonGUID = 0;
diff --git a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/magtheridons_lair.h b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/magtheridons_lair.h
index d3921a8709b..159962475ca 100644
--- a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/magtheridons_lair.h
+++ b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/magtheridons_lair.h
@@ -19,6 +19,8 @@
#ifndef DEF_MAGTHERIDONS_LAIR_H
#define DEF_MAGTHERIDONS_LAIR_H
+#define DataHeader "ML"
+
enum DataTypes
{
DATA_MAGTHERIDON_EVENT = 1,
diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp
index a220f26e18b..8ee63ff03a2 100644
--- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp
@@ -43,6 +43,7 @@ class instance_shattered_halls : public InstanceMapScript
void Initialize() override
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
nethekurseGUID = 0;
nethekurseDoor1GUID = 0;
@@ -114,53 +115,10 @@ class instance_shattered_halls : public InstanceMapScript
return 0;
}
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "S H " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- 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 == 'S' && dataHead2 == 'H')
- {
- for (uint8 i = 0; i < EncounterCount; ++i)
- {
- uint32 tmpState;
- loadStream >> tmpState;
- if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
- tmpState = NOT_STARTED;
- SetBossState(i, EncounterState(tmpState));
- }
- }
- else
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
-
- protected:
- uint64 nethekurseGUID;
- uint64 nethekurseDoor1GUID;
- uint64 nethekurseDoor2GUID;
+ protected:
+ uint64 nethekurseGUID;
+ uint64 nethekurseDoor1GUID;
+ uint64 nethekurseDoor2GUID;
};
};
diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.h b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.h
index 10e944d5bc4..d0490676bdd 100644
--- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.h
+++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.h
@@ -19,6 +19,8 @@
#ifndef DEF_SHATTERED_H
#define DEF_SHATTERED_H
+#define DataHeader "SH"
+
uint32 const EncounterCount = 3;
enum DataTypes
diff --git a/src/server/scripts/Outland/TempestKeep/Eye/instance_the_eye.cpp b/src/server/scripts/Outland/TempestKeep/Eye/instance_the_eye.cpp
index 0da16967a49..07cbd68f741 100644
--- a/src/server/scripts/Outland/TempestKeep/Eye/instance_the_eye.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Eye/instance_the_eye.cpp
@@ -62,6 +62,7 @@ class instance_the_eye : public InstanceMapScript
void Initialize() override
{
+ SetHeaders(DataHeader);
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
ThaladredTheDarkener = 0;
diff --git a/src/server/scripts/Outland/TempestKeep/Eye/the_eye.h b/src/server/scripts/Outland/TempestKeep/Eye/the_eye.h
index 52061a54591..6b1cd89abf6 100644
--- a/src/server/scripts/Outland/TempestKeep/Eye/the_eye.h
+++ b/src/server/scripts/Outland/TempestKeep/Eye/the_eye.h
@@ -19,6 +19,8 @@
#ifndef DEF_THE_EYE_H
#define DEF_THE_EYE_H
+#define DataHeader "TE"
+
enum DataTypes
{
DATA_ALAREVENT = 1,
diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp
index 4dddee83459..c620a17f7b6 100644
--- a/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp
@@ -37,6 +37,7 @@ class instance_mechanar : public InstanceMapScript
{
instance_mechanar_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
LoadDoorData(doorData);
}
@@ -88,49 +89,6 @@ class instance_mechanar : public InstanceMapScript
return true;
}
-
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "M C " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- void Load(const char* str) override
- {
- 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 == 'C')
- {
- 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
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
};
InstanceScript* GetInstanceScript(InstanceMap* map) const override
diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h b/src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h
index 34346e163c7..0d823dac325 100644
--- a/src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h
+++ b/src/server/scripts/Outland/TempestKeep/Mechanar/mechanar.h
@@ -18,6 +18,8 @@
#ifndef DEF_MECHANAR_H
#define DEF_MECHANAR_H
+#define DataHeader "MR"
+
uint32 const EncounterCount = 5;
enum DataTypes
diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.h b/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.h
index 889a900653f..5b1695f4cfb 100644
--- a/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.h
+++ b/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.h
@@ -19,6 +19,7 @@
#define ARCATRAZ_H
#define ArcatrazScriptName "instance_arcatraz"
+#define DataHeader "AZ"
uint32 const EncounterCount = 4;
diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/instance_arcatraz.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/instance_arcatraz.cpp
index a6d0b348984..b092243637b 100644
--- a/src/server/scripts/Outland/TempestKeep/arcatraz/instance_arcatraz.cpp
+++ b/src/server/scripts/Outland/TempestKeep/arcatraz/instance_arcatraz.cpp
@@ -35,6 +35,7 @@ class instance_arcatraz : public InstanceMapScript
{
instance_arcatraz_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
LoadDoorData(doorData);
@@ -191,49 +192,6 @@ class instance_arcatraz : public InstanceMapScript
return true;
}
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "A Z " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- void Load(char const* str) override
- {
- 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 == 'A' && dataHead2 == 'Z')
- {
- 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
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
-
protected:
uint64 DalliahGUID;
uint64 SoccothratesGUID;
diff --git a/src/server/scripts/Outland/TempestKeep/botanica/instance_the_botanica.cpp b/src/server/scripts/Outland/TempestKeep/botanica/instance_the_botanica.cpp
index f8929f7e42a..eb46211fa59 100644
--- a/src/server/scripts/Outland/TempestKeep/botanica/instance_the_botanica.cpp
+++ b/src/server/scripts/Outland/TempestKeep/botanica/instance_the_botanica.cpp
@@ -28,6 +28,7 @@ class instance_the_botanica : public InstanceMapScript
{
instance_the_botanica_InstanceMapScript(Map* map) : InstanceScript(map)
{
+ SetHeaders(DataHeader);
CommanderSarannisGUID = 0;
HighBotanistFreywinnGUID = 0;
ThorngrinTheTenderGUID = 0;
@@ -100,50 +101,6 @@ class instance_the_botanica : public InstanceMapScript
return true;
}
- std::string GetSaveData() override
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << "B O " << GetBossSaveData();
-
- OUT_SAVE_INST_DATA_COMPLETE;
- return saveStream.str();
- }
-
- void Load(char const* str) override
- {
- 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 == 'B' && dataHead2 == 'O')
- {
- for (uint8 i = 0; i < EncounterCount; ++i)
- {
- uint32 tmpState;
- loadStream >> tmpState;
- if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
- tmpState = NOT_STARTED;
-
- SetBossState(i, EncounterState(tmpState));
- }
- }
- else
- OUT_LOAD_INST_DATA_FAIL;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
-
protected:
uint64 CommanderSarannisGUID;
uint64 HighBotanistFreywinnGUID;
diff --git a/src/server/scripts/Outland/TempestKeep/botanica/the_botanica.h b/src/server/scripts/Outland/TempestKeep/botanica/the_botanica.h
index ed0d6b0c98a..68d869520ce 100644
--- a/src/server/scripts/Outland/TempestKeep/botanica/the_botanica.h
+++ b/src/server/scripts/Outland/TempestKeep/botanica/the_botanica.h
@@ -19,6 +19,8 @@
#ifndef DEF_THE_BOTANICA_H
#define DEF_THE_BOTANICA_H
+#define DataHeader "BC"
+
uint32 const EncounterCount = 5;
enum DataTypes
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp
index 7ba663beb72..84e36b55c2c 100644
--- a/src/server/scripts/Spells/spell_generic.cpp
+++ b/src/server/scripts/Spells/spell_generic.cpp
@@ -2581,7 +2581,7 @@ class spell_gen_oracle_wolvar_reputation : public SpellScriptLoader
// Set rep to baserep + basepoints (expecting spillover for oposite faction -> become hated)
// Not when player already has equal or higher rep with this faction
- if (player->GetReputationMgr().GetReputation(factionEntry) <= repChange)
+ if (player->GetReputationMgr().GetReputation(factionEntry) < repChange)
player->GetReputationMgr().SetReputation(factionEntry, repChange);
// EFFECT_INDEX_2 most likely update at war state, we already handle this in SetReputation