mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-16 18:40:28 +00:00
refactor(Core/InstanceScript): refactored load and save methods (#14977)
Co-authored-by: joschiwald <736792+joschiwald@users.noreply.github.com>
This commit is contained in:
@@ -23,6 +23,8 @@
|
||||
#include "SpellAuras.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
#define DataHeader "AN"
|
||||
|
||||
#define AzjolNerubScriptName "instance_azjol_nerub"
|
||||
|
||||
enum ANData
|
||||
|
||||
@@ -51,6 +51,7 @@ public:
|
||||
{
|
||||
instance_azjol_nerub_InstanceScript(Map* map) : InstanceScript(map)
|
||||
{
|
||||
SetHeaders(DataHeader);
|
||||
SetBossNumber(MAX_ENCOUNTERS);
|
||||
LoadBossBoundaries(boundaries);
|
||||
LoadDoorData(doorData);
|
||||
@@ -102,39 +103,6 @@ public:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool SetBossState(uint32 id, EncounterState state) override
|
||||
{
|
||||
return InstanceScript::SetBossState(id, state);
|
||||
}
|
||||
|
||||
std::string GetSaveData() override
|
||||
{
|
||||
std::ostringstream saveStream;
|
||||
saveStream << "A N " << GetBossSaveData();
|
||||
return saveStream.str();
|
||||
}
|
||||
|
||||
void Load(const char* in) override
|
||||
{
|
||||
if( !in )
|
||||
return;
|
||||
|
||||
char dataHead1, dataHead2;
|
||||
std::istringstream loadStream(in);
|
||||
loadStream >> dataHead1 >> dataHead2;
|
||||
if (dataHead1 == 'A' && dataHead2 == 'N')
|
||||
{
|
||||
for (uint8 i = 0; i < MAX_ENCOUNTERS; ++i)
|
||||
{
|
||||
uint32 tmpState;
|
||||
loadStream >> tmpState;
|
||||
if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
|
||||
tmpState = NOT_STARTED;
|
||||
SetBossState(i, EncounterState(tmpState));
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
InstanceScript* GetInstanceScript(InstanceMap* map) const override
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#ifndef DEF_AHNKAHET_H
|
||||
#define DEF_AHNKAHET_H
|
||||
|
||||
#define DataHeader "AK"
|
||||
#define AhnKahetScriptName "instance_ahnkahet"
|
||||
constexpr uint32 MAX_ENCOUNTER = 5;
|
||||
enum AhnkahetData
|
||||
|
||||
@@ -31,6 +31,7 @@ public:
|
||||
{
|
||||
instance_ahnkahet_InstanceScript(Map* pMap) : InstanceScript(pMap), canSaveBossStates(false)
|
||||
{
|
||||
SetHeaders(DataHeader);
|
||||
SetBossNumber(MAX_ENCOUNTER);
|
||||
teldaramSpheres.fill(NOT_STARTED);
|
||||
}
|
||||
@@ -172,62 +173,18 @@ public:
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
|
||||
std::string GetSaveData() override
|
||||
void ReadSaveDataMore(std::istringstream& data) override
|
||||
{
|
||||
OUT_SAVE_INST_DATA;
|
||||
|
||||
std::ostringstream saveStream;
|
||||
// Encounter states
|
||||
saveStream << "A K " << GetBossSaveData();
|
||||
|
||||
// Extra data
|
||||
saveStream << teldaramSpheres[0] << ' ' << teldaramSpheres[1];
|
||||
|
||||
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 == 'A' && dataHead2 == 'K')
|
||||
{
|
||||
// Encounter states
|
||||
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));
|
||||
}
|
||||
|
||||
// Extra data
|
||||
loadStream >> teldaramSpheres[0] >> teldaramSpheres[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
return;
|
||||
}
|
||||
data >> teldaramSpheres[0];
|
||||
data >> teldaramSpheres[1];
|
||||
|
||||
canSaveBossStates = true;
|
||||
OUT_LOAD_INST_DATA_COMPLETE;
|
||||
}
|
||||
|
||||
void WriteSaveDataMore(std::ostringstream& data) override
|
||||
{
|
||||
data << teldaramSpheres[0] << ' '
|
||||
<< teldaramSpheres[1];
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
@@ -41,6 +41,7 @@ public:
|
||||
{
|
||||
instance_obsidian_sanctum_InstanceMapScript(Map* pMap) : InstanceScript(pMap), portalCount(0)
|
||||
{
|
||||
SetHeaders(DataHeader);
|
||||
SetBossNumber(MAX_ENCOUNTERS);
|
||||
LoadBossBoundaries(boundaries);
|
||||
}
|
||||
@@ -204,48 +205,6 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
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* 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 == 'S')
|
||||
{
|
||||
for (uint8 i = 0; i < MAX_ENCOUNTERS; ++i)
|
||||
{
|
||||
uint32 temp;
|
||||
loadStream >> temp;
|
||||
if (temp == IN_PROGRESS)
|
||||
temp = NOT_STARTED;
|
||||
|
||||
SetBossState(i, static_cast<EncounterState>(temp));
|
||||
}
|
||||
}
|
||||
|
||||
OUT_LOAD_INST_DATA_COMPLETE;
|
||||
}
|
||||
|
||||
private:
|
||||
ObjectGuid m_uiSartharionGUID;
|
||||
ObjectGuid m_uiTenebronGUID;
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
|
||||
#include "CreatureAIImpl.h"
|
||||
|
||||
#define DataHeader "OS"
|
||||
|
||||
#define ObsidianSanctumScriptName "instance_obsidian_sanctum"
|
||||
|
||||
enum Data : uint32
|
||||
|
||||
@@ -51,6 +51,7 @@ public:
|
||||
{
|
||||
instance_ruby_sanctum_InstanceMapScript(InstanceMap* map) : InstanceScript(map)
|
||||
{
|
||||
SetHeaders(DataHeader);
|
||||
SetBossNumber(MAX_ENCOUNTERS);
|
||||
LoadBossBoundaries(boundaries);
|
||||
LoadDoorData(doorData);
|
||||
@@ -183,6 +184,13 @@ public:
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case DATA_HALION_INTRO_DONE:
|
||||
if (state != DONE)
|
||||
{
|
||||
SetBossState(DATA_HALION_INTRO1, NOT_STARTED);
|
||||
SetBossState(DATA_HALION_INTRO2, NOT_STARTED);
|
||||
}
|
||||
break;
|
||||
case DATA_SAVIANA_RAGEFIRE:
|
||||
case DATA_BALTHARUS_THE_WARBORN:
|
||||
if (GetBossState(DATA_BALTHARUS_THE_WARBORN) == DONE && GetBossState(DATA_SAVIANA_RAGEFIRE) == DONE)
|
||||
@@ -208,17 +216,6 @@ public:
|
||||
return true;
|
||||
}
|
||||
|
||||
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);
|
||||
@@ -226,46 +223,6 @@ public:
|
||||
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 < MAX_ENCOUNTERS; ++i)
|
||||
{
|
||||
uint32 tmpState;
|
||||
loadStream >> tmpState;
|
||||
if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
|
||||
tmpState = NOT_STARTED;
|
||||
|
||||
SetBossState(i, EncounterState(tmpState));
|
||||
}
|
||||
|
||||
// Xinef: additional check
|
||||
if (GetBossState(DATA_HALION_INTRO_DONE) != DONE)
|
||||
{
|
||||
SetBossState(DATA_HALION_INTRO1, NOT_STARTED);
|
||||
SetBossState(DATA_HALION_INTRO2, NOT_STARTED);
|
||||
}
|
||||
}
|
||||
else
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
|
||||
OUT_LOAD_INST_DATA_COMPLETE;
|
||||
}
|
||||
|
||||
protected:
|
||||
ObjectGuid BaltharusTheWarbornGUID;
|
||||
ObjectGuid XerestraszaGUID;
|
||||
|
||||
@@ -27,6 +27,8 @@
|
||||
#include "Player.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
#define DataHeader "RS"
|
||||
|
||||
#define RubySanctumScriptName "instance_ruby_sanctum"
|
||||
|
||||
enum DataTypes
|
||||
|
||||
@@ -39,7 +39,11 @@ public:
|
||||
|
||||
struct instance_trial_of_the_champion_InstanceMapScript : public InstanceScript
|
||||
{
|
||||
instance_trial_of_the_champion_InstanceMapScript(Map* pMap) : InstanceScript(pMap) { Initialize(); }
|
||||
instance_trial_of_the_champion_InstanceMapScript(Map* pMap) : InstanceScript(pMap)
|
||||
{
|
||||
SetHeaders(DataHeader);
|
||||
Initialize();
|
||||
}
|
||||
|
||||
bool CLEANED;
|
||||
TeamId TeamIdInInstance;
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
#include "CombatAI.h"
|
||||
#include "CreatureAIImpl.h"
|
||||
|
||||
#define DataHeader "TC"
|
||||
|
||||
#define TrialOfTheChampionScriptName "instance_trial_of_the_champion"
|
||||
|
||||
enum eData
|
||||
|
||||
@@ -32,7 +32,11 @@ public:
|
||||
|
||||
struct instance_trial_of_the_crusader_InstanceMapScript : public InstanceScript
|
||||
{
|
||||
instance_trial_of_the_crusader_InstanceMapScript(Map* pMap) : InstanceScript(pMap) { Initialize(); }
|
||||
instance_trial_of_the_crusader_InstanceMapScript(Map* pMap) : InstanceScript(pMap)
|
||||
{
|
||||
SetHeaders(DataHeader);
|
||||
Initialize();
|
||||
}
|
||||
|
||||
bool CLEANED;
|
||||
uint32 EncounterStatus;
|
||||
@@ -1589,54 +1593,32 @@ public:
|
||||
events.RescheduleEvent(EVENT_CHECK_PLAYERS, CLEANUP_CHECK_INTERVAL);
|
||||
}
|
||||
|
||||
std::string GetSaveData() override
|
||||
void ReadSaveDataMore(std::istringstream& data) override
|
||||
{
|
||||
OUT_SAVE_INST_DATA;
|
||||
std::ostringstream saveStream;
|
||||
saveStream << "T C " << InstanceProgress;
|
||||
if( instance->IsHeroic() )
|
||||
saveStream << ' ' << AttemptsLeft << ' ' << (bDedicatedInsanity ? (uint32)1 : (uint32)0) << ' ' << (bNooneDied ? (uint32)1 : (uint32)0);
|
||||
str_data = saveStream.str();
|
||||
OUT_SAVE_INST_DATA_COMPLETE;
|
||||
return str_data;
|
||||
data >> InstanceProgress;
|
||||
|
||||
if (instance->IsHeroic())
|
||||
{
|
||||
data >> AttemptsLeft;
|
||||
uint32 temp = 0;
|
||||
data >> temp;
|
||||
bDedicatedInsanity = !!temp;
|
||||
data >> temp;
|
||||
bNooneDied = !!temp;
|
||||
}
|
||||
}
|
||||
|
||||
void Load(const char* in) override
|
||||
void WriteSaveDataMore(std::ostringstream& data) override
|
||||
{
|
||||
EncounterStatus = NOT_STARTED;
|
||||
CLEANED = false;
|
||||
events.Reset();
|
||||
events.RescheduleEvent(EVENT_CHECK_PLAYERS, 0);
|
||||
data << InstanceProgress;
|
||||
|
||||
if( !in )
|
||||
if (instance->IsHeroic())
|
||||
{
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
return;
|
||||
data << ' '
|
||||
<< AttemptsLeft << ' '
|
||||
<< (bDedicatedInsanity ? 1 : 0) << ' '
|
||||
<< (bNooneDied ? 1 : 0);
|
||||
}
|
||||
|
||||
OUT_LOAD_INST_DATA(in);
|
||||
|
||||
char dataHead1, dataHead2;
|
||||
uint16 data0;
|
||||
std::istringstream loadStream(in);
|
||||
loadStream >> dataHead1 >> dataHead2 >> data0;
|
||||
|
||||
if( dataHead1 == 'T' && dataHead2 == 'C' )
|
||||
{
|
||||
InstanceProgress = data0;
|
||||
if( instance->IsHeroic() )
|
||||
{
|
||||
uint32 data1 = 0, data2 = 0, data3 = 0;
|
||||
loadStream >> data1 >> data2 >> data3;
|
||||
AttemptsLeft = data1;
|
||||
bDedicatedInsanity = !!data2;
|
||||
bNooneDied = !!data3;
|
||||
}
|
||||
}
|
||||
else
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
|
||||
OUT_LOAD_INST_DATA_COMPLETE;
|
||||
}
|
||||
|
||||
bool CheckAchievementCriteriaMeet(uint32 criteria_id, Player const* /*source*/, Unit const* /*target*/, uint32 /*miscvalue1*/) override
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
#include "GridNotifiers.h"
|
||||
#include "SpellAuraEffects.h"
|
||||
|
||||
#define DataHeader "TCR"
|
||||
|
||||
#define TrialOfTheCrusaderScriptName "instance_trial_of_the_crusader"
|
||||
|
||||
enum DataTypes
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
#define DataHeader "DTK"
|
||||
|
||||
#define DraktharonKeepScriptName "instance_drak_tharon_keep"
|
||||
|
||||
enum Data
|
||||
|
||||
@@ -37,6 +37,7 @@ public:
|
||||
{
|
||||
instance_drak_tharon_keep_InstanceScript(Map* map) : InstanceScript(map)
|
||||
{
|
||||
SetHeaders(DataHeader);
|
||||
SetBossNumber(MAX_ENCOUNTERS);
|
||||
LoadDoorData(doorData);
|
||||
}
|
||||
@@ -66,34 +67,6 @@ public:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
std::string GetSaveData() override
|
||||
{
|
||||
std::ostringstream saveStream;
|
||||
saveStream << "D K " << GetBossSaveData();
|
||||
return saveStream.str();
|
||||
}
|
||||
|
||||
void Load(const char* in) override
|
||||
{
|
||||
if( !in )
|
||||
return;
|
||||
|
||||
char dataHead1, dataHead2;
|
||||
std::istringstream loadStream(in);
|
||||
loadStream >> dataHead1 >> dataHead2;
|
||||
if (dataHead1 == 'D' && dataHead2 == 'K')
|
||||
{
|
||||
for (uint8 i = 0; i < MAX_ENCOUNTERS; ++i)
|
||||
{
|
||||
uint32 tmpState;
|
||||
loadStream >> tmpState;
|
||||
if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
|
||||
tmpState = NOT_STARTED;
|
||||
SetBossState(i, EncounterState(tmpState));
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
InstanceScript* GetInstanceScript(InstanceMap* map) const override
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
#include "CreatureAIImpl.h"
|
||||
#include "GridNotifiers.h"
|
||||
|
||||
#define DataHeader "FOS"
|
||||
|
||||
#define ForgeOfSoulsScriptName "instance_forge_of_souls"
|
||||
|
||||
enum Data
|
||||
|
||||
@@ -40,6 +40,7 @@ public:
|
||||
{
|
||||
instance_forge_of_souls_InstanceScript(Map* map) : InstanceScript(map)
|
||||
{
|
||||
SetHeaders(DataHeader);
|
||||
LoadBossBoundaries(boundaries);
|
||||
}
|
||||
|
||||
@@ -200,46 +201,15 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
std::string GetSaveData() override
|
||||
void ReadSaveDataMore(std::istringstream& data) override
|
||||
{
|
||||
OUT_SAVE_INST_DATA;
|
||||
|
||||
std::ostringstream saveStream;
|
||||
saveStream << "F S " << m_auiEncounter[0] << ' ' << m_auiEncounter[1];
|
||||
str_data = saveStream.str();
|
||||
|
||||
OUT_SAVE_INST_DATA_COMPLETE;
|
||||
return str_data;
|
||||
data >> m_auiEncounter[0];
|
||||
data >> m_auiEncounter[1];
|
||||
}
|
||||
|
||||
void Load(const char* in) override
|
||||
void WriteSaveDataMore(std::ostringstream& data) override
|
||||
{
|
||||
if (!in)
|
||||
{
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
return;
|
||||
}
|
||||
|
||||
OUT_LOAD_INST_DATA(in);
|
||||
|
||||
char dataHead1, dataHead2;
|
||||
uint32 data0, data1;
|
||||
|
||||
std::istringstream loadStream(in);
|
||||
loadStream >> dataHead1 >> dataHead2 >> data0 >> data1;
|
||||
|
||||
if (dataHead1 == 'F' && dataHead2 == 'S')
|
||||
{
|
||||
m_auiEncounter[0] = data0;
|
||||
m_auiEncounter[1] = data1;
|
||||
|
||||
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
|
||||
if (m_auiEncounter[i] == IN_PROGRESS)
|
||||
m_auiEncounter[i] = NOT_STARTED;
|
||||
}
|
||||
else OUT_LOAD_INST_DATA_FAIL;
|
||||
|
||||
OUT_LOAD_INST_DATA_COMPLETE;
|
||||
data << m_auiEncounter[0] << ' ' << m_auiEncounter[1];
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
#include "SpellAuras.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
#define DataHeader "HOR"
|
||||
|
||||
#define HallsOfReflectionScriptName "instance_halls_of_reflection"
|
||||
|
||||
enum Data
|
||||
|
||||
@@ -126,7 +126,10 @@ public:
|
||||
|
||||
struct instance_halls_of_reflection_InstanceMapScript : public InstanceScript
|
||||
{
|
||||
instance_halls_of_reflection_InstanceMapScript(Map* pMap) : InstanceScript(pMap) {};
|
||||
instance_halls_of_reflection_InstanceMapScript(Map* pMap) : InstanceScript(pMap)
|
||||
{
|
||||
SetHeaders(DataHeader);
|
||||
};
|
||||
|
||||
uint32 EncounterMask;
|
||||
TeamId TeamIdInInstance;
|
||||
@@ -705,42 +708,15 @@ public:
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
|
||||
std::string GetSaveData() override
|
||||
void ReadSaveDataMore(std::istringstream& data) override
|
||||
{
|
||||
OUT_SAVE_INST_DATA;
|
||||
|
||||
std::ostringstream saveStream;
|
||||
saveStream << "H R " << EncounterMask;
|
||||
|
||||
OUT_SAVE_INST_DATA_COMPLETE;
|
||||
return saveStream.str();
|
||||
data >> EncounterMask;
|
||||
BatteredHiltStatus = (EncounterMask & (1 << DATA_BATTERED_HILT)) ? BHSF_FINISHED : BHSF_NONE;
|
||||
}
|
||||
|
||||
void Load(const char* in) override
|
||||
void WriteSaveDataMore(std::ostringstream& data) override
|
||||
{
|
||||
if (!in)
|
||||
{
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
return;
|
||||
}
|
||||
|
||||
OUT_LOAD_INST_DATA(in);
|
||||
|
||||
char dataHead1, dataHead2;
|
||||
uint32 data0;
|
||||
|
||||
std::istringstream loadStream(in);
|
||||
loadStream >> dataHead1 >> dataHead2 >> data0;
|
||||
|
||||
if (dataHead1 == 'H' && dataHead2 == 'R')
|
||||
{
|
||||
EncounterMask = data0;
|
||||
BatteredHiltStatus = (EncounterMask & (1 << DATA_BATTERED_HILT)) ? BHSF_FINISHED : BHSF_NONE;
|
||||
}
|
||||
else
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
|
||||
OUT_LOAD_INST_DATA_COMPLETE;
|
||||
data << EncounterMask;
|
||||
}
|
||||
|
||||
void OnUnitDeath(Unit* unit) override
|
||||
|
||||
@@ -27,7 +27,10 @@ public:
|
||||
|
||||
struct instance_pit_of_saron_InstanceScript : public InstanceScript
|
||||
{
|
||||
instance_pit_of_saron_InstanceScript(Map* map) : InstanceScript(map) {}
|
||||
instance_pit_of_saron_InstanceScript(Map* map) : InstanceScript(map)
|
||||
{
|
||||
SetHeaders(DataHeader);
|
||||
}
|
||||
|
||||
uint32 m_auiEncounter[MAX_ENCOUNTER];
|
||||
TeamId teamIdInInstance;
|
||||
@@ -378,48 +381,20 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
std::string GetSaveData() override
|
||||
void ReadSaveDataMore(std::istringstream& data) override
|
||||
{
|
||||
OUT_SAVE_INST_DATA;
|
||||
|
||||
std::ostringstream saveStream;
|
||||
saveStream << "P S " << m_auiEncounter[0] << ' ' << m_auiEncounter[1] << ' ' << m_auiEncounter[2] << ' ' << InstanceProgress;
|
||||
str_data = saveStream.str();
|
||||
|
||||
OUT_SAVE_INST_DATA_COMPLETE;
|
||||
return str_data;
|
||||
data >> m_auiEncounter[0];
|
||||
data >> m_auiEncounter[1];
|
||||
data >> m_auiEncounter[2];
|
||||
data >> InstanceProgress;
|
||||
}
|
||||
|
||||
void Load(const char* in) override
|
||||
void WriteSaveDataMore(std::ostringstream& data) override
|
||||
{
|
||||
if (!in)
|
||||
{
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
return;
|
||||
}
|
||||
|
||||
OUT_LOAD_INST_DATA(in);
|
||||
|
||||
char dataHead1, dataHead2;
|
||||
uint32 data0, data1, data2, data3;
|
||||
|
||||
std::istringstream loadStream(in);
|
||||
loadStream >> dataHead1 >> dataHead2 >> data0 >> data1 >> data2 >> data3;
|
||||
|
||||
if (dataHead1 == 'P' && dataHead2 == 'S')
|
||||
{
|
||||
m_auiEncounter[0] = data0;
|
||||
m_auiEncounter[1] = data1;
|
||||
m_auiEncounter[2] = data2;
|
||||
InstanceProgress = data3;
|
||||
|
||||
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
|
||||
if (m_auiEncounter[i] == IN_PROGRESS)
|
||||
m_auiEncounter[i] = NOT_STARTED;
|
||||
}
|
||||
else OUT_LOAD_INST_DATA_FAIL;
|
||||
|
||||
OUT_LOAD_INST_DATA_COMPLETE;
|
||||
data << m_auiEncounter[0] << ' '
|
||||
<< m_auiEncounter[1] << ' '
|
||||
<< m_auiEncounter[2] << ' '
|
||||
<< InstanceProgress;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
#include "Chat.h"
|
||||
#include "CreatureAIImpl.h"
|
||||
|
||||
#define DataHeader "POS"
|
||||
|
||||
#define PitOfSaronScriptName "instance_pit_of_saron"
|
||||
|
||||
enum DataTypes
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
#include "CreatureAIImpl.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
#define DataHeader "GD"
|
||||
|
||||
#define GundrakScriptName "instance_gundrak"
|
||||
|
||||
enum Data
|
||||
|
||||
@@ -43,6 +43,7 @@ public:
|
||||
{
|
||||
instance_gundrak_InstanceMapScript(Map* map) : InstanceScript(map)
|
||||
{
|
||||
SetHeaders(DataHeader);
|
||||
}
|
||||
|
||||
ObjectGuid _sladRanAltarGUID;
|
||||
@@ -197,34 +198,6 @@ public:
|
||||
return true;
|
||||
}
|
||||
|
||||
std::string GetSaveData() override
|
||||
{
|
||||
std::ostringstream saveStream;
|
||||
saveStream << "G D " << GetBossSaveData();
|
||||
return saveStream.str();
|
||||
}
|
||||
|
||||
void Load(const char* in) override
|
||||
{
|
||||
if (!in)
|
||||
return;
|
||||
|
||||
char dataHead1, dataHead2;
|
||||
std::istringstream loadStream(in);
|
||||
loadStream >> dataHead1 >> dataHead2;
|
||||
if (dataHead1 == 'G' && dataHead2 == 'D')
|
||||
{
|
||||
for (uint8 i = 0; i < MAX_ENCOUNTERS; ++i)
|
||||
{
|
||||
uint32 tmpState;
|
||||
loadStream >> tmpState;
|
||||
if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
|
||||
tmpState = NOT_STARTED;
|
||||
SetBossState(i, EncounterState(tmpState));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Update(uint32 diff) override
|
||||
{
|
||||
if (!_activateTimer)
|
||||
|
||||
@@ -32,6 +32,8 @@
|
||||
#include "SpellMgr.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
#define DataHeader "IC"
|
||||
|
||||
#define ICCScriptName "instance_icecrown_citadel"
|
||||
|
||||
uint32 const WeeklyNPCs = 9;
|
||||
|
||||
@@ -197,6 +197,7 @@ public:
|
||||
LichKingRandomWhisperTimer = 120 * IN_MILLISECONDS;
|
||||
DarkwhisperElevatorTimer = 3000;
|
||||
|
||||
SetHeaders(DataHeader);
|
||||
SetBossNumber(MAX_ENCOUNTERS);
|
||||
LoadBossBoundaries(boundaries);
|
||||
LoadDoorData(doorData);
|
||||
@@ -1576,73 +1577,54 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
std::string GetSaveData() override
|
||||
void ReadSaveDataMore(std::istringstream& data) override
|
||||
{
|
||||
OUT_SAVE_INST_DATA;
|
||||
data >> HeroicAttempts;
|
||||
|
||||
std::ostringstream saveStream;
|
||||
saveStream << "I C " << GetBossSaveData() << HeroicAttempts << ' '
|
||||
<< ColdflameJetsState << ' ' << BloodQuickeningState << ' ' << BloodQuickeningMinutes << ' ' << WeeklyQuestId10 << ' ' << PutricideEventProgress << ' '
|
||||
<< uint32(LichKingHeroicAvailable ? 1 : 0) << ' ' << BloodPrinceTrashCount << ' ' << uint32(IsBuffAvailable ? 1 : 0);
|
||||
uint32 temp = 0;
|
||||
data >> temp;
|
||||
|
||||
OUT_SAVE_INST_DATA_COMPLETE;
|
||||
return saveStream.str();
|
||||
}
|
||||
|
||||
void Load(const char* str) override
|
||||
{
|
||||
if (!str)
|
||||
if (temp == IN_PROGRESS)
|
||||
{
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
return;
|
||||
}
|
||||
|
||||
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 < MAX_ENCOUNTERS; ++i)
|
||||
{
|
||||
uint32 tmpState;
|
||||
loadStream >> tmpState;
|
||||
if (tmpState == IN_PROGRESS || tmpState == FAIL || tmpState > SPECIAL)
|
||||
tmpState = NOT_STARTED;
|
||||
SetBossState(i, EncounterState(tmpState));
|
||||
}
|
||||
|
||||
loadStream >> HeroicAttempts;
|
||||
|
||||
uint32 temp = 0;
|
||||
loadStream >> temp;
|
||||
ColdflameJetsState = temp ? DONE : NOT_STARTED;
|
||||
|
||||
loadStream >> BloodQuickeningState;
|
||||
loadStream >> BloodQuickeningMinutes;
|
||||
if (BloodQuickeningState == IN_PROGRESS)
|
||||
{
|
||||
Events.ScheduleEvent(EVENT_UPDATE_EXECUTION_TIME, 60000);
|
||||
DoUpdateWorldState(WORLDSTATE_SHOW_TIMER, 1);
|
||||
DoUpdateWorldState(WORLDSTATE_EXECUTION_TIME, BloodQuickeningMinutes);
|
||||
}
|
||||
|
||||
loadStream >> WeeklyQuestId10;
|
||||
loadStream >> PutricideEventProgress;
|
||||
PutricideEventProgress &= ~PUTRICIDE_EVENT_FLAG_TRAP_INPROGRESS;
|
||||
loadStream >> temp;
|
||||
LichKingHeroicAvailable = !!temp;
|
||||
loadStream >> BloodPrinceTrashCount;
|
||||
loadStream >> temp;
|
||||
SetData(DATA_BUFF_AVAILABLE, !!temp);
|
||||
ColdflameJetsState = NOT_STARTED;
|
||||
}
|
||||
else
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
{
|
||||
ColdflameJetsState = temp ? DONE : NOT_STARTED;
|
||||
}
|
||||
|
||||
OUT_LOAD_INST_DATA_COMPLETE;
|
||||
data >> temp;
|
||||
data >> BloodQuickeningState;
|
||||
data >> BloodQuickeningMinutes;
|
||||
|
||||
if (BloodQuickeningState == IN_PROGRESS)
|
||||
{
|
||||
Events.ScheduleEvent(EVENT_UPDATE_EXECUTION_TIME, 60000);
|
||||
DoUpdateWorldState(WORLDSTATE_SHOW_TIMER, 1);
|
||||
DoUpdateWorldState(WORLDSTATE_EXECUTION_TIME, BloodQuickeningMinutes);
|
||||
}
|
||||
|
||||
data >> WeeklyQuestId10;
|
||||
data >> PutricideEventProgress;
|
||||
PutricideEventProgress &= ~PUTRICIDE_EVENT_FLAG_TRAP_INPROGRESS;
|
||||
data >> temp;
|
||||
LichKingHeroicAvailable = !!temp;
|
||||
data >> BloodPrinceTrashCount;
|
||||
data >> temp;
|
||||
SetData(DATA_BUFF_AVAILABLE, !!temp);
|
||||
}
|
||||
|
||||
void WriteSaveDataMore(std::ostringstream& data) override
|
||||
{
|
||||
data << HeroicAttempts << ' '
|
||||
<< ColdflameJetsState << ' '
|
||||
<< BloodQuickeningState << ' '
|
||||
<< BloodQuickeningMinutes << ' '
|
||||
<< WeeklyQuestId10 << ' '
|
||||
<< PutricideEventProgress << ' '
|
||||
<< uint32(LichKingHeroicAvailable ? 1 : 0) << ' '
|
||||
<< BloodPrinceTrashCount << ' '
|
||||
<< uint32(IsBuffAvailable ? 1 : 0);
|
||||
}
|
||||
|
||||
void Update(uint32 diff) override
|
||||
|
||||
@@ -64,6 +64,7 @@ public:
|
||||
{
|
||||
explicit instance_naxxramas_InstanceMapScript(Map* pMap) : InstanceScript(pMap)
|
||||
{
|
||||
SetHeaders(DataHeader);
|
||||
SetBossNumber(MAX_ENCOUNTERS);
|
||||
for (auto& i : HeiganEruption)
|
||||
i.clear();
|
||||
@@ -1119,55 +1120,14 @@ public:
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
|
||||
std::string GetSaveData() override
|
||||
void ReadSaveDataMore(std::istringstream& data) override
|
||||
{
|
||||
OUT_SAVE_INST_DATA;
|
||||
|
||||
std::ostringstream saveStream;
|
||||
saveStream << "N X X " << GetBossSaveData() << ' ' << immortalAchievement;
|
||||
|
||||
OUT_SAVE_INST_DATA_COMPLETE;
|
||||
return saveStream.str();
|
||||
data >> immortalAchievement;
|
||||
}
|
||||
|
||||
void Load(const char* in) override
|
||||
void WriteSaveDataMore(std::ostringstream& data) override
|
||||
{
|
||||
if (!in)
|
||||
{
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
return;
|
||||
}
|
||||
|
||||
OUT_LOAD_INST_DATA(in);
|
||||
|
||||
char dataHead1, dataHead2, dataHead3;
|
||||
std::istringstream loadStream(in);
|
||||
loadStream >> dataHead1 >> dataHead2 >> dataHead3;
|
||||
|
||||
if (dataHead1 == 'N' && dataHead2 == 'X' && dataHead3 == 'X')
|
||||
{
|
||||
for (uint8 i = 0; i < MAX_ENCOUNTERS; ++i)
|
||||
{
|
||||
uint32 tmpState;
|
||||
loadStream >> tmpState;
|
||||
if (tmpState == IN_PROGRESS)
|
||||
{
|
||||
tmpState = NOT_STARTED;
|
||||
}
|
||||
if (i == BOSS_HORSEMAN && tmpState == DONE)
|
||||
{
|
||||
_horsemanLoadDoneState = true;
|
||||
}
|
||||
SetBossState(i, EncounterState(tmpState));
|
||||
}
|
||||
loadStream >> immortalAchievement;
|
||||
|
||||
OUT_LOAD_INST_DATA_COMPLETE;
|
||||
}
|
||||
else
|
||||
{
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
}
|
||||
data << immortalAchievement;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
#include "CreatureAIImpl.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
#define DataHeader "NAX"
|
||||
|
||||
#define NaxxramasScriptName "instance_naxxramas"
|
||||
|
||||
enum Encouters
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include "Chat.h"
|
||||
#include "CreatureAIImpl.h"
|
||||
|
||||
#define DataHeader "EOE"
|
||||
#define EyeOfEternityScriptName "instance_eye_of_eternity"
|
||||
|
||||
enum Objects
|
||||
|
||||
@@ -208,51 +208,27 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
std::string GetSaveData() override
|
||||
void ReadSaveDataMore(std::istringstream& data) override
|
||||
{
|
||||
OUT_SAVE_INST_DATA;
|
||||
std::ostringstream saveStream;
|
||||
saveStream << "E E " << EncounterStatus;
|
||||
str_data = saveStream.str();
|
||||
OUT_SAVE_INST_DATA_COMPLETE;
|
||||
return str_data;
|
||||
data >> EncounterStatus;
|
||||
|
||||
switch (EncounterStatus)
|
||||
{
|
||||
case IN_PROGRESS:
|
||||
EncounterStatus = NOT_STARTED;
|
||||
break;
|
||||
case DONE:
|
||||
// destroy platform, hide iris
|
||||
ProcessEvent(nullptr, 20158);
|
||||
if (GameObject* go = instance->GetGameObject(GO_IrisGUID))
|
||||
go->SetPhaseMask(2, true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Load(const char* in) override
|
||||
void WriteSaveDataMore(std::ostringstream& data) override
|
||||
{
|
||||
if( !in )
|
||||
{
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
return;
|
||||
}
|
||||
|
||||
OUT_LOAD_INST_DATA(in);
|
||||
|
||||
char dataHead1, dataHead2;
|
||||
uint32 data0;
|
||||
std::istringstream loadStream(in);
|
||||
loadStream >> dataHead1 >> dataHead2 >> data0;
|
||||
|
||||
if( dataHead1 == 'E' && dataHead2 == 'E' )
|
||||
{
|
||||
EncounterStatus = data0;
|
||||
switch(EncounterStatus)
|
||||
{
|
||||
case IN_PROGRESS:
|
||||
EncounterStatus = NOT_STARTED;
|
||||
break;
|
||||
case DONE:
|
||||
// destroy platform, hide iris
|
||||
ProcessEvent(nullptr, 20158);
|
||||
if (GameObject* go = instance->GetGameObject(GO_IrisGUID))
|
||||
go->SetPhaseMask(2, true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
|
||||
OUT_LOAD_INST_DATA_COMPLETE;
|
||||
data << EncounterStatus;
|
||||
}
|
||||
|
||||
bool CheckAchievementCriteriaMeet(uint32 criteria_id, Player const* source, Unit const* /*target*/, uint32 /*miscvalue1*/) override
|
||||
|
||||
@@ -43,6 +43,7 @@ public:
|
||||
|
||||
void Initialize() override
|
||||
{
|
||||
SetHeaders(DataHeader);
|
||||
SetBossNumber(MAX_ENCOUNTERS);
|
||||
LoadDoorData(doorData);
|
||||
}
|
||||
@@ -151,34 +152,6 @@ public:
|
||||
(*i)->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
|
||||
return true;
|
||||
}
|
||||
|
||||
std::string GetSaveData() override
|
||||
{
|
||||
std::ostringstream saveStream;
|
||||
saveStream << "N E X " << GetBossSaveData();
|
||||
return saveStream.str();
|
||||
}
|
||||
|
||||
void Load(const char* in) override
|
||||
{
|
||||
if( !in )
|
||||
return;
|
||||
|
||||
char dataHead1, dataHead2, dataHead3;
|
||||
std::istringstream loadStream(in);
|
||||
loadStream >> dataHead1 >> dataHead2 >> dataHead3;
|
||||
if (dataHead1 == 'N' && dataHead2 == 'E' && dataHead3 == 'X')
|
||||
{
|
||||
for (uint8 i = 0; i < MAX_ENCOUNTERS; ++i)
|
||||
{
|
||||
uint32 tmpState;
|
||||
loadStream >> tmpState;
|
||||
if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
|
||||
tmpState = NOT_STARTED;
|
||||
SetBossState(i, EncounterState(tmpState));
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -26,6 +26,8 @@
|
||||
#include "SpellAuras.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
#define DataHeader "NEX"
|
||||
|
||||
#define NexusScriptName "instance_nexus"
|
||||
|
||||
enum eTypes
|
||||
|
||||
@@ -52,6 +52,7 @@ public:
|
||||
|
||||
void Initialize() override
|
||||
{
|
||||
SetHeaders(DataHeader);
|
||||
CentrifugeCount = 0;
|
||||
bAmberVoid = false;
|
||||
bEmeraldVoid = false;
|
||||
@@ -238,43 +239,22 @@ public:
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
|
||||
std::string GetSaveData() override
|
||||
void ReadSaveDataMore(std::istringstream& data) override
|
||||
{
|
||||
OUT_SAVE_INST_DATA;
|
||||
|
||||
std::ostringstream saveStream;
|
||||
saveStream << "T O " << m_auiEncounter[0] << ' ' << m_auiEncounter[1] << ' ' << m_auiEncounter[2] << ' ' << m_auiEncounter[3] << ' ' << CentrifugeCount;
|
||||
|
||||
OUT_SAVE_INST_DATA_COMPLETE;
|
||||
return saveStream.str();
|
||||
data >> m_auiEncounter[0];
|
||||
data >> m_auiEncounter[1];
|
||||
data >> m_auiEncounter[2];
|
||||
data >> m_auiEncounter[3];
|
||||
data >> CentrifugeCount;
|
||||
}
|
||||
|
||||
void Load(const char* in) override
|
||||
void WriteSaveDataMore(std::ostringstream& 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 == 'T' && dataHead2 == 'O' )
|
||||
{
|
||||
loadStream >> m_auiEncounter[0] >> m_auiEncounter[1] >> m_auiEncounter[2] >> m_auiEncounter[3] >> CentrifugeCount;
|
||||
|
||||
for( uint8 i = 0; i < MAX_ENCOUNTER; ++i )
|
||||
if( m_auiEncounter[i] == IN_PROGRESS )
|
||||
m_auiEncounter[i] = NOT_STARTED;
|
||||
}
|
||||
else
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
|
||||
OUT_LOAD_INST_DATA_COMPLETE;
|
||||
data << m_auiEncounter[0] << ' '
|
||||
<< m_auiEncounter[1] << ' '
|
||||
<< m_auiEncounter[2] << ' '
|
||||
<< m_auiEncounter[3] << ' '
|
||||
<< CentrifugeCount;
|
||||
}
|
||||
|
||||
bool CheckAchievementCriteriaMeet(uint32 criteria_id, Player const* source, Unit const* /*target*/, uint32 /*miscvalue1*/) override
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
#include "SpellAuras.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
#define DataHeader "OC"
|
||||
|
||||
#define OculusScriptName "instance_oculus"
|
||||
|
||||
Position const VerdisaPOS = { 949.056f, 1032.97f, 359.967f, 1.035795f };
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
|
||||
#include "CreatureAIImpl.h"
|
||||
|
||||
#define DataHeader "HOL"
|
||||
|
||||
#define HallsOfLightningScriptName "instance_halls_of_lightning"
|
||||
|
||||
enum HoLEvents
|
||||
|
||||
@@ -51,6 +51,7 @@ public:
|
||||
|
||||
void Initialize() override
|
||||
{
|
||||
SetHeaders(DataHeader);
|
||||
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
|
||||
|
||||
volkhanAchievement = false;
|
||||
@@ -172,50 +173,20 @@ public:
|
||||
SaveToDB();
|
||||
}
|
||||
|
||||
std::string GetSaveData() override
|
||||
void ReadSaveDataMore(std::istringstream& data) override
|
||||
{
|
||||
OUT_SAVE_INST_DATA;
|
||||
|
||||
std::ostringstream saveStream;
|
||||
saveStream << "H L " << m_auiEncounter[0] << ' ' << m_auiEncounter[1] << ' '
|
||||
<< m_auiEncounter[2] << ' ' << m_auiEncounter[3] << ' ' << m_auiEncounter[4];
|
||||
|
||||
OUT_SAVE_INST_DATA_COMPLETE;
|
||||
return saveStream.str();
|
||||
data >> m_auiEncounter[0];
|
||||
data >> m_auiEncounter[1];
|
||||
data >> m_auiEncounter[2];
|
||||
data >> m_auiEncounter[3];
|
||||
}
|
||||
|
||||
void Load(const char* in) override
|
||||
void WriteSaveDataMore(std::ostringstream& data) override
|
||||
{
|
||||
if (!in)
|
||||
{
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
return;
|
||||
}
|
||||
|
||||
OUT_LOAD_INST_DATA(in);
|
||||
|
||||
char dataHead1, dataHead2;
|
||||
uint32 data0, data1, data2, data3, data4;
|
||||
|
||||
std::istringstream loadStream(in);
|
||||
loadStream >> dataHead1 >> dataHead2 >> data0 >> data1 >> data2 >> data3 >> data4;
|
||||
|
||||
if (dataHead1 == 'H' && dataHead2 == 'L')
|
||||
{
|
||||
m_auiEncounter[0] = data0;
|
||||
m_auiEncounter[1] = data1;
|
||||
m_auiEncounter[2] = data2;
|
||||
m_auiEncounter[3] = data3;
|
||||
m_auiEncounter[4] = data4;
|
||||
|
||||
for (uint8 i = 0; i < TYPE_LOKEN_INTRO; ++i)
|
||||
if (m_auiEncounter[i] == IN_PROGRESS)
|
||||
m_auiEncounter[i] = NOT_STARTED;
|
||||
|
||||
OUT_LOAD_INST_DATA_COMPLETE;
|
||||
}
|
||||
else
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
data << m_auiEncounter[0] << ' '
|
||||
<< m_auiEncounter[1] << ' '
|
||||
<< m_auiEncounter[2] << ' '
|
||||
<< m_auiEncounter[3] << ' ';
|
||||
}
|
||||
|
||||
uint32 GetData(uint32 uiType) const override
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
|
||||
#include "CreatureAIImpl.h"
|
||||
|
||||
#define DataHeader "HOS"
|
||||
|
||||
#define HallsOfStoneScriptName "instance_halls_of_stone"
|
||||
|
||||
enum Encounter
|
||||
|
||||
@@ -56,6 +56,7 @@ public:
|
||||
|
||||
void Initialize() override
|
||||
{
|
||||
SetHeaders(DataHeader);
|
||||
memset(&Encounter, 0, sizeof(Encounter));
|
||||
|
||||
brannAchievement = false;
|
||||
@@ -242,42 +243,22 @@ public:
|
||||
SaveToDB();
|
||||
}
|
||||
|
||||
std::string GetSaveData() override
|
||||
void ReadSaveDataMore(std::istringstream& data) override
|
||||
{
|
||||
OUT_SAVE_INST_DATA;
|
||||
|
||||
std::ostringstream saveStream;
|
||||
saveStream << "H O S " << Encounter[0] << ' ' << Encounter[1] << ' ' << Encounter[2] << ' ' << Encounter[3] << ' ' << Encounter[4];
|
||||
|
||||
OUT_SAVE_INST_DATA_COMPLETE;
|
||||
return saveStream.str();
|
||||
data >> Encounter[0];
|
||||
data >> Encounter[1];
|
||||
data >> Encounter[2];
|
||||
data >> Encounter[3];
|
||||
data >> Encounter[4];
|
||||
}
|
||||
|
||||
void Load(const char* strIn) override
|
||||
void WriteSaveDataMore(std::ostringstream& data) override
|
||||
{
|
||||
if (!strIn)
|
||||
{
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
return;
|
||||
}
|
||||
|
||||
OUT_LOAD_INST_DATA(strIn);
|
||||
|
||||
char dataHead1, dataHead2, dataHead3;
|
||||
|
||||
std::istringstream loadStream(strIn);
|
||||
loadStream >> dataHead1 >> dataHead2 >> dataHead3;
|
||||
|
||||
if (dataHead1 == 'H' && dataHead2 == 'O' && dataHead3 == 'S')
|
||||
{
|
||||
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
|
||||
{
|
||||
loadStream >> Encounter[i];
|
||||
if( Encounter[i] == IN_PROGRESS )
|
||||
Encounter[i] = NOT_STARTED;
|
||||
}
|
||||
}
|
||||
OUT_LOAD_INST_DATA_COMPLETE;
|
||||
data << Encounter[0] << ' '
|
||||
<< Encounter[1] << ' '
|
||||
<< Encounter[2] << ' '
|
||||
<< Encounter[3] << ' '
|
||||
<< Encounter[4] << ' ';
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
@@ -40,6 +40,7 @@ public:
|
||||
instance_ulduar_InstanceMapScript(Map* pMap) : InstanceScript(pMap)
|
||||
{
|
||||
Initialize();
|
||||
SetHeaders(DataHeader);
|
||||
// 0: 10 man difficulty
|
||||
// 1: 25 man difficulty
|
||||
m_difficulty = (pMap->Is25ManRaid() ? 0 : 1);
|
||||
@@ -1056,69 +1057,46 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
std::string GetSaveData() override
|
||||
void ReadSaveDataMore(std::istringstream& data) override
|
||||
{
|
||||
OUT_SAVE_INST_DATA;
|
||||
data >> m_auiEncounter[0];
|
||||
data >> m_auiEncounter[1];
|
||||
data >> m_auiEncounter[3];
|
||||
data >> m_auiEncounter[4];
|
||||
data >> m_auiEncounter[5];
|
||||
data >> m_auiEncounter[6];
|
||||
data >> m_auiEncounter[7];
|
||||
data >> m_auiEncounter[8];
|
||||
data >> m_auiEncounter[9];
|
||||
data >> m_auiEncounter[10];
|
||||
data >> m_auiEncounter[11];
|
||||
data >> m_auiEncounter[12];
|
||||
data >> m_auiEncounter[13];
|
||||
data >> m_auiEncounter[14];
|
||||
data >> m_conspeedatoryAttempt;
|
||||
data >> m_unbrokenAchievement;
|
||||
data >> m_algalonTimer;
|
||||
|
||||
std::ostringstream saveStream;
|
||||
saveStream << "U U " << m_auiEncounter[0] << ' ' << m_auiEncounter[1] << ' ' << m_auiEncounter[2] << ' ' << m_auiEncounter[3] << ' '
|
||||
<< m_auiEncounter[4] << ' ' << m_auiEncounter[5] << ' ' << m_auiEncounter[6] << ' ' << m_auiEncounter[7] << ' '
|
||||
<< m_auiEncounter[8] << ' ' << m_auiEncounter[9] << ' ' << m_auiEncounter[10] << ' ' << m_auiEncounter[11] << ' '
|
||||
<< m_auiEncounter[12] << ' ' << m_auiEncounter[13] << ' ' << m_auiEncounter[14] << ' ' << m_conspeedatoryAttempt << ' '
|
||||
<< m_unbrokenAchievement << ' ' << m_algalonTimer << ' ' << C_of_Ulduar_MASK << ' ' << m_mageBarrier;
|
||||
if (m_algalonTimer == TIMER_ALGALON_SUMMONED)
|
||||
m_algalonTimer = TIMER_ALGALON_TO_SUMMON;
|
||||
|
||||
OUT_SAVE_INST_DATA_COMPLETE;
|
||||
return saveStream.str();
|
||||
if (m_algalonTimer && m_algalonTimer <= 60 && GetData(TYPE_ALGALON) != DONE)
|
||||
{
|
||||
DoUpdateWorldState(WORLD_STATE_ALGALON_TIMER_ENABLED, 1);
|
||||
DoUpdateWorldState(WORLD_STATE_ALGALON_DESPAWN_TIMER, m_algalonTimer);
|
||||
}
|
||||
|
||||
data >> C_of_Ulduar_MASK;
|
||||
data >> m_mageBarrier;
|
||||
}
|
||||
|
||||
void Load(const char* strIn) override
|
||||
void WriteSaveDataMore(std::ostringstream& data) 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 == 'U' && dataHead2 == 'U')
|
||||
{
|
||||
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
|
||||
{
|
||||
loadStream >> m_auiEncounter[i];
|
||||
|
||||
if (m_auiEncounter[i] == IN_PROGRESS && i != TYPE_WATCHERS)
|
||||
m_auiEncounter[i] = NOT_STARTED;
|
||||
}
|
||||
|
||||
// Achievements
|
||||
loadStream >> m_conspeedatoryAttempt;
|
||||
loadStream >> m_unbrokenAchievement;
|
||||
|
||||
// Algalon
|
||||
loadStream >> m_algalonTimer;
|
||||
if (m_algalonTimer == TIMER_ALGALON_SUMMONED)
|
||||
m_algalonTimer = TIMER_ALGALON_TO_SUMMON;
|
||||
|
||||
if (m_algalonTimer && m_algalonTimer <= 60 && GetData(TYPE_ALGALON) != DONE)
|
||||
{
|
||||
DoUpdateWorldState(WORLD_STATE_ALGALON_TIMER_ENABLED, 1);
|
||||
DoUpdateWorldState(WORLD_STATE_ALGALON_DESPAWN_TIMER, m_algalonTimer);
|
||||
}
|
||||
|
||||
// achievement Conqueror/Champion of Ulduar
|
||||
loadStream >> C_of_Ulduar_MASK;
|
||||
|
||||
//Base Camp - Mage Barrier status
|
||||
loadStream >> m_mageBarrier;
|
||||
}
|
||||
|
||||
OUT_LOAD_INST_DATA_COMPLETE;
|
||||
data << m_auiEncounter[0] << ' ' << m_auiEncounter[1] << ' ' << m_auiEncounter[2] << ' ' << m_auiEncounter[3] << ' '
|
||||
<< m_auiEncounter[4] << ' ' << m_auiEncounter[5] << ' ' << m_auiEncounter[6] << ' ' << m_auiEncounter[7] << ' '
|
||||
<< m_auiEncounter[8] << ' ' << m_auiEncounter[9] << ' ' << m_auiEncounter[10] << ' ' << m_auiEncounter[11] << ' '
|
||||
<< m_auiEncounter[12] << ' ' << m_auiEncounter[13] << ' ' << m_auiEncounter[14] << ' ' << m_conspeedatoryAttempt << ' '
|
||||
<< m_unbrokenAchievement << ' ' << m_algalonTimer << ' ' << C_of_Ulduar_MASK << ' ' << m_mageBarrier;
|
||||
}
|
||||
|
||||
void Update(uint32 diff) override
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
#include "GridNotifiers.h"
|
||||
#include "GridNotifiersImpl.h"
|
||||
|
||||
#define DataHeader "UU"
|
||||
|
||||
#define UlduarScriptName "instance_ulduar"
|
||||
|
||||
enum UlduarEncounters
|
||||
|
||||
@@ -318,49 +318,17 @@ public:
|
||||
return 0;
|
||||
}
|
||||
|
||||
std::string GetSaveData() override
|
||||
void ReadSaveDataMore(std::istringstream& data) override
|
||||
{
|
||||
OUT_SAVE_INST_DATA;
|
||||
|
||||
std::ostringstream saveStream;
|
||||
saveStream << "U K " << m_auiEncounter[0] << ' ' << m_auiEncounter[1] << ' ' << m_auiEncounter[2] << ' ' << ForgeEventMask;
|
||||
|
||||
str_data = saveStream.str();
|
||||
|
||||
OUT_SAVE_INST_DATA_COMPLETE;
|
||||
return str_data;
|
||||
data >> m_auiEncounter[0];
|
||||
data >> m_auiEncounter[1];
|
||||
data >> m_auiEncounter[2];
|
||||
data >> ForgeEventMask;
|
||||
}
|
||||
|
||||
void Load(const char* in) override
|
||||
void WriteSaveDataMore(std::ostringstream& data) override
|
||||
{
|
||||
if (!in)
|
||||
{
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
return;
|
||||
}
|
||||
|
||||
OUT_LOAD_INST_DATA(in);
|
||||
|
||||
char dataHead1, dataHead2;
|
||||
uint32 data0, data1, data2, data3;
|
||||
|
||||
std::istringstream loadStream(in);
|
||||
loadStream >> dataHead1 >> dataHead2 >> data0 >> data1 >> data2 >> data3;
|
||||
|
||||
if (dataHead1 == 'U' && dataHead2 == 'K')
|
||||
{
|
||||
m_auiEncounter[0] = data0;
|
||||
m_auiEncounter[1] = data1;
|
||||
m_auiEncounter[2] = data2;
|
||||
ForgeEventMask = data3;
|
||||
|
||||
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
|
||||
if (m_auiEncounter[i] == IN_PROGRESS)
|
||||
m_auiEncounter[i] = NOT_STARTED;
|
||||
}
|
||||
else OUT_LOAD_INST_DATA_FAIL;
|
||||
|
||||
OUT_LOAD_INST_DATA_COMPLETE;
|
||||
data << m_auiEncounter[0] << ' ' << m_auiEncounter[1] << ' ' << m_auiEncounter[2] << ' ' << ForgeEventMask;
|
||||
}
|
||||
|
||||
bool CheckAchievementCriteriaMeet(uint32 criteria_id, Player const* /*source*/, Unit const* /*target*/, uint32 /*miscvalue1*/) override
|
||||
|
||||
@@ -57,6 +57,7 @@ public:
|
||||
|
||||
void Initialize() override
|
||||
{
|
||||
SetHeaders(DataHeader);
|
||||
SkadiHits = 0;
|
||||
SkadiInRange = 0;
|
||||
|
||||
@@ -192,43 +193,20 @@ public:
|
||||
OUT_SAVE_INST_DATA_COMPLETE;
|
||||
}
|
||||
|
||||
std::string GetSaveData() override
|
||||
void ReadSaveDataMore(std::istringstream& data) override
|
||||
{
|
||||
std::ostringstream saveStream;
|
||||
saveStream << "U P " << Encounters[0] << ' ' << Encounters[1] << ' ' << Encounters[2] << ' ' << Encounters[3];
|
||||
return saveStream.str();
|
||||
data >> Encounters[0];
|
||||
data >> Encounters[1];
|
||||
data >> Encounters[2];
|
||||
data >> Encounters[3];
|
||||
}
|
||||
|
||||
void Load(const char* in) override
|
||||
void WriteSaveDataMore(std::ostringstream& data) override
|
||||
{
|
||||
if (!in)
|
||||
{
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
return;
|
||||
}
|
||||
|
||||
OUT_LOAD_INST_DATA(in);
|
||||
|
||||
char dataHead1, dataHead2;
|
||||
uint16 data0, data1, data2, data3;
|
||||
|
||||
std::istringstream loadStream(in);
|
||||
loadStream >> dataHead1 >> dataHead2 >> data0 >> data1 >> data2 >> data3;
|
||||
|
||||
if (dataHead1 == 'U' && dataHead2 == 'P')
|
||||
{
|
||||
Encounters[0] = data0;
|
||||
Encounters[1] = data1;
|
||||
Encounters[2] = data2;
|
||||
Encounters[3] = data3;
|
||||
|
||||
for (uint8 i = 0; i < MAX_ENCOUNTERS; ++i)
|
||||
if (Encounters[i] == IN_PROGRESS)
|
||||
Encounters[i] = NOT_STARTED;
|
||||
}
|
||||
else OUT_LOAD_INST_DATA_FAIL;
|
||||
|
||||
OUT_LOAD_INST_DATA_COMPLETE;
|
||||
data << Encounters[0] << ' '
|
||||
<< Encounters[1] << ' '
|
||||
<< Encounters[2] << ' '
|
||||
<< Encounters[3];
|
||||
}
|
||||
|
||||
uint32 GetData(uint32 type) const override
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
#include "CreatureAIImpl.h"
|
||||
#include "Opcodes.h"
|
||||
|
||||
#define DataHeader "UP"
|
||||
|
||||
#define UtgardePinnacleScriptName "instance_utgarde_pinnacle"
|
||||
|
||||
enum Data
|
||||
|
||||
@@ -44,6 +44,7 @@ public:
|
||||
|
||||
void Initialize() override
|
||||
{
|
||||
SetHeaders(DataHeader);
|
||||
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
|
||||
|
||||
ArchavonDeath = 0;
|
||||
@@ -230,44 +231,20 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
std::string GetSaveData() override
|
||||
void ReadSaveDataMore(std::istringstream& data) override
|
||||
{
|
||||
OUT_SAVE_INST_DATA;
|
||||
|
||||
std::ostringstream saveStream;
|
||||
saveStream << "V O A " << m_auiEncounter[0] << ' ' << m_auiEncounter[1] << ' ' << m_auiEncounter[2] << ' ' << m_auiEncounter[3];
|
||||
|
||||
OUT_SAVE_INST_DATA_COMPLETE;
|
||||
return saveStream.str();
|
||||
data >> m_auiEncounter[0];
|
||||
data >> m_auiEncounter[1];
|
||||
data >> m_auiEncounter[2];
|
||||
data >> m_auiEncounter[3];
|
||||
}
|
||||
|
||||
void Load(const char* in) override
|
||||
void WriteSaveDataMore(std::ostringstream& data) override
|
||||
{
|
||||
if (!in)
|
||||
{
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
return;
|
||||
}
|
||||
|
||||
OUT_LOAD_INST_DATA(in);
|
||||
|
||||
char dataHead1, dataHead2, dataHead3;
|
||||
std::istringstream loadStream(in);
|
||||
loadStream >> dataHead1 >> dataHead2 >> dataHead3;
|
||||
|
||||
if (dataHead1 == 'V' && dataHead2 == 'O' && dataHead3 == 'A')
|
||||
{
|
||||
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
|
||||
{
|
||||
loadStream >> m_auiEncounter[i];
|
||||
if (m_auiEncounter[i] == IN_PROGRESS)
|
||||
m_auiEncounter[i] = NOT_STARTED;
|
||||
}
|
||||
|
||||
OUT_LOAD_INST_DATA_COMPLETE;
|
||||
}
|
||||
else
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
data << m_auiEncounter[0] << ' '
|
||||
<< m_auiEncounter[1] << ' '
|
||||
<< m_auiEncounter[2] << ' '
|
||||
<< m_auiEncounter[3];
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
|
||||
#include "CreatureAIImpl.h"
|
||||
|
||||
#define DataHeader "VA"
|
||||
|
||||
#define VaultOfArchavonScriptName "instance_vault_of_archavon"
|
||||
|
||||
enum Creatures
|
||||
|
||||
@@ -84,6 +84,7 @@ public:
|
||||
|
||||
void Initialize() override
|
||||
{
|
||||
SetHeaders(DataHeader);
|
||||
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
|
||||
CLEANED = false;
|
||||
EncounterStatus = NOT_STARTED;
|
||||
@@ -637,57 +638,26 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
std::string GetSaveData() override
|
||||
{
|
||||
OUT_SAVE_INST_DATA;
|
||||
|
||||
std::ostringstream saveStream;
|
||||
saveStream << "V H " << m_auiEncounter[0] << ' ' << m_auiEncounter[1] << ' ' << m_auiEncounter[2] << ' ' << uiFirstBoss << ' ' << uiSecondBoss;
|
||||
str_data = saveStream.str();
|
||||
|
||||
OUT_SAVE_INST_DATA_COMPLETE;
|
||||
return str_data;
|
||||
}
|
||||
|
||||
void Load(const char* in) override
|
||||
void ReadSaveDataMore(std::istringstream& data) override
|
||||
{
|
||||
EncounterStatus = NOT_STARTED;
|
||||
CLEANED = false;
|
||||
events.Reset();
|
||||
events.RescheduleEvent(EVENT_CHECK_PLAYERS, 0);
|
||||
|
||||
if (!in)
|
||||
{
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
return;
|
||||
}
|
||||
data >> m_auiEncounter[0];
|
||||
data >> m_auiEncounter[1];
|
||||
data >> m_auiEncounter[2];
|
||||
data >> uiFirstBoss;
|
||||
}
|
||||
|
||||
OUT_LOAD_INST_DATA(in);
|
||||
|
||||
char dataHead1, dataHead2;
|
||||
uint32 data0, data1, data2, data3, data4;
|
||||
|
||||
std::istringstream loadStream(in);
|
||||
loadStream >> dataHead1 >> dataHead2 >> data0 >> data1 >> data2 >> data3 >> data4;
|
||||
|
||||
if (dataHead1 == 'V' && dataHead2 == 'H')
|
||||
{
|
||||
m_auiEncounter[0] = data0;
|
||||
m_auiEncounter[1] = data1;
|
||||
m_auiEncounter[2] = data2;
|
||||
uiFirstBoss = data3;
|
||||
uiSecondBoss = data4;
|
||||
|
||||
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
|
||||
if (m_auiEncounter[i] == IN_PROGRESS)
|
||||
m_auiEncounter[i] = NOT_STARTED;
|
||||
|
||||
if (m_auiEncounter[MAX_ENCOUNTER - 1] == DONE)
|
||||
EncounterStatus = DONE;
|
||||
}
|
||||
else OUT_LOAD_INST_DATA_FAIL;
|
||||
|
||||
OUT_LOAD_INST_DATA_COMPLETE;
|
||||
void WriteSaveDataMore(std::ostringstream& data) override
|
||||
{
|
||||
data << m_auiEncounter[0] << ' '
|
||||
<< m_auiEncounter[1] << ' '
|
||||
<< m_auiEncounter[2] << ' '
|
||||
<< uiFirstBoss << ' '
|
||||
<< uiSecondBoss << ' ';
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
|
||||
#include "CreatureAIImpl.h"
|
||||
|
||||
#define DataHeader "VIO"
|
||||
|
||||
#define VioletHoldScriptName "instance_violet_hold"
|
||||
|
||||
enum Creatures
|
||||
|
||||
Reference in New Issue
Block a user