mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-02-05 12:03:48 +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:
@@ -134,6 +134,17 @@ void InstanceScript::LoadBossBoundaries(const BossBoundaryData& data)
|
|||||||
bosses[entry.bossId].boundary.push_back(entry.boundary);
|
bosses[entry.bossId].boundary.push_back(entry.boundary);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void InstanceScript::SetHeaders(std::string const& dataHeaders)
|
||||||
|
{
|
||||||
|
for (char header : dataHeaders)
|
||||||
|
{
|
||||||
|
if (isalpha(header))
|
||||||
|
{
|
||||||
|
headers.push_back(header);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void InstanceScript::LoadMinionData(const MinionData* data)
|
void InstanceScript::LoadMinionData(const MinionData* data)
|
||||||
{
|
{
|
||||||
while (data->entry)
|
while (data->entry)
|
||||||
@@ -340,30 +351,89 @@ bool InstanceScript::SetBossState(uint32 id, EncounterState state)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void InstanceScript::LoadBossState(const char* data)
|
void InstanceScript::Load(const char* data)
|
||||||
{
|
{
|
||||||
if (!data)
|
if (!data)
|
||||||
|
{
|
||||||
|
OUT_LOAD_INST_DATA_FAIL;
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
OUT_LOAD_INST_DATA(data);
|
||||||
|
|
||||||
std::istringstream loadStream(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;
|
uint32 bossId = 0;
|
||||||
for (std::vector<BossInfo>::iterator i = bosses.begin(); i != bosses.end(); ++i, ++bossId)
|
for (std::vector<BossInfo>::iterator i = bosses.begin(); i != bosses.end(); ++i, ++bossId)
|
||||||
{
|
{
|
||||||
loadStream >> buff;
|
uint32 buff;
|
||||||
|
data >> buff;
|
||||||
|
if (buff == IN_PROGRESS || buff == FAIL || buff == SPECIAL)
|
||||||
|
buff = NOT_STARTED;
|
||||||
|
|
||||||
if (buff < TO_BE_DECIDED)
|
if (buff < TO_BE_DECIDED)
|
||||||
SetBossState(bossId, (EncounterState)buff);
|
SetBossState(bossId, EncounterState(buff));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string InstanceScript::GetBossSaveData()
|
std::string InstanceScript::GetSaveData()
|
||||||
{
|
{
|
||||||
|
OUT_SAVE_INST_DATA;
|
||||||
|
|
||||||
std::ostringstream saveStream;
|
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();
|
return saveStream.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void InstanceScript::WriteSaveDataHeaders(std::ostringstream& data)
|
||||||
|
{
|
||||||
|
for (char header : headers)
|
||||||
|
{
|
||||||
|
data << header << ' ';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void InstanceScript::WriteSaveDataBossStates(std::ostringstream& data)
|
||||||
|
{
|
||||||
|
for (BossInfo const& bossInfo : bosses)
|
||||||
|
{
|
||||||
|
data << uint32(bossInfo.state) << ' ';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void InstanceScript::DoUseDoorOrButton(ObjectGuid uiGuid, uint32 uiWithRestoreTime, bool bUseAlternativeState)
|
void InstanceScript::DoUseDoorOrButton(ObjectGuid uiGuid, uint32 uiWithRestoreTime, bool bUseAlternativeState)
|
||||||
{
|
{
|
||||||
if (!uiGuid)
|
if (!uiGuid)
|
||||||
|
|||||||
@@ -148,14 +148,14 @@ public:
|
|||||||
//On creation, NOT load.
|
//On creation, NOT load.
|
||||||
virtual void Initialize() {}
|
virtual void Initialize() {}
|
||||||
|
|
||||||
//On load
|
// On load
|
||||||
virtual void Load(char const* data) { LoadBossState(data); }
|
virtual void Load(char const* data);
|
||||||
|
|
||||||
//Called when creature is Looted
|
//Called when creature is Looted
|
||||||
virtual void CreatureLooted(Creature* /*creature*/, LootType) {}
|
virtual void CreatureLooted(Creature* /*creature*/, LootType) {}
|
||||||
|
|
||||||
//When save is needed, this function generates the data
|
// When save is needed, this function generates the data
|
||||||
virtual std::string GetSaveData() { return GetBossSaveData(); }
|
virtual std::string GetSaveData();
|
||||||
|
|
||||||
void SaveToDB();
|
void SaveToDB();
|
||||||
|
|
||||||
@@ -255,6 +255,7 @@ public:
|
|||||||
// Allows to perform particular actions
|
// Allows to perform particular actions
|
||||||
virtual void DoAction(int32 /*action*/) {}
|
virtual void DoAction(int32 /*action*/) {}
|
||||||
protected:
|
protected:
|
||||||
|
void SetHeaders(std::string const& dataHeaders);
|
||||||
void SetBossNumber(uint32 number) { bosses.resize(number); }
|
void SetBossNumber(uint32 number) { bosses.resize(number); }
|
||||||
void LoadBossBoundaries(BossBoundaryData const& data);
|
void LoadBossBoundaries(BossBoundaryData const& data);
|
||||||
void LoadDoorData(DoorData const* data);
|
void LoadDoorData(DoorData const* data);
|
||||||
@@ -271,11 +272,18 @@ protected:
|
|||||||
void UpdateDoorState(GameObject* door);
|
void UpdateDoorState(GameObject* door);
|
||||||
void UpdateMinionState(Creature* minion, EncounterState state);
|
void UpdateMinionState(Creature* minion, EncounterState state);
|
||||||
|
|
||||||
void LoadBossState(char const* data);
|
// Instance Load and Save
|
||||||
std::string GetBossSaveData();
|
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:
|
private:
|
||||||
static void LoadObjectData(ObjectData const* creatureData, ObjectInfoMap& objectInfo);
|
static void LoadObjectData(ObjectData const* creatureData, ObjectInfoMap& objectInfo);
|
||||||
|
|
||||||
|
std::vector<char> headers;
|
||||||
std::vector<BossInfo> bosses;
|
std::vector<BossInfo> bosses;
|
||||||
DoorInfoMap doors;
|
DoorInfoMap doors;
|
||||||
MinionInfoMap minions;
|
MinionInfoMap minions;
|
||||||
|
|||||||
@@ -19,6 +19,8 @@
|
|||||||
#define DEF_BRD_H
|
#define DEF_BRD_H
|
||||||
|
|
||||||
#include "CreatureAIImpl.h"
|
#include "CreatureAIImpl.h"
|
||||||
|
|
||||||
|
#define DataHeader "BRD"
|
||||||
#define BRDScriptName "instance_blackrock_depths"
|
#define BRDScriptName "instance_blackrock_depths"
|
||||||
|
|
||||||
enum FactionIds
|
enum FactionIds
|
||||||
|
|||||||
@@ -107,7 +107,10 @@ public:
|
|||||||
|
|
||||||
struct instance_blackrock_depths_InstanceMapScript : public InstanceScript
|
struct instance_blackrock_depths_InstanceMapScript : public InstanceScript
|
||||||
{
|
{
|
||||||
instance_blackrock_depths_InstanceMapScript(Map* map) : InstanceScript(map) { }
|
instance_blackrock_depths_InstanceMapScript(Map* map) : InstanceScript(map)
|
||||||
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
|
}
|
||||||
|
|
||||||
uint32 encounter[MAX_ENCOUNTER];
|
uint32 encounter[MAX_ENCOUNTER];
|
||||||
std::string str_data;
|
std::string str_data;
|
||||||
|
|||||||
@@ -22,6 +22,8 @@
|
|||||||
|
|
||||||
uint32 const EncounterCount = 23;
|
uint32 const EncounterCount = 23;
|
||||||
|
|
||||||
|
#define DataHeader "BRS"
|
||||||
|
|
||||||
#define BRSScriptName "instance_blackrock_spire"
|
#define BRSScriptName "instance_blackrock_spire"
|
||||||
|
|
||||||
enum DataTypes
|
enum DataTypes
|
||||||
|
|||||||
@@ -85,6 +85,7 @@ public:
|
|||||||
|
|
||||||
instance_blackrock_spireMapScript(InstanceMap* map) : InstanceScript(map)
|
instance_blackrock_spireMapScript(InstanceMap* map) : InstanceScript(map)
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
SetBossNumber(EncounterCount);
|
SetBossNumber(EncounterCount);
|
||||||
LoadMinionData(minionData);
|
LoadMinionData(minionData);
|
||||||
LoadDoorData(doorData);
|
LoadDoorData(doorData);
|
||||||
@@ -672,50 +673,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:
|
protected:
|
||||||
EventMap Events;
|
EventMap Events;
|
||||||
ObjectGuid HighlordOmokk;
|
ObjectGuid HighlordOmokk;
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ public:
|
|||||||
{
|
{
|
||||||
instance_blackwing_lair_InstanceMapScript(Map* map) : InstanceScript(map)
|
instance_blackwing_lair_InstanceMapScript(Map* map) : InstanceScript(map)
|
||||||
{
|
{
|
||||||
//SetHeaders(DataHeader);
|
SetHeaders(DataHeader);
|
||||||
SetBossNumber(EncounterCount);
|
SetBossNumber(EncounterCount);
|
||||||
LoadDoorData(doorData);
|
LoadDoorData(doorData);
|
||||||
LoadObjectData(creatureData, objectData);
|
LoadObjectData(creatureData, objectData);
|
||||||
@@ -432,52 +432,15 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
void ReadSaveDataMore(std::istringstream& data) override
|
||||||
{
|
{
|
||||||
OUT_SAVE_INST_DATA;
|
data >> NefarianLeftTunnel;
|
||||||
|
data >> NefarianRightTunnel;
|
||||||
std::ostringstream saveStream;
|
|
||||||
saveStream << "B W L " << GetBossSaveData() << NefarianLeftTunnel << ' ' << NefarianRightTunnel;
|
|
||||||
|
|
||||||
OUT_SAVE_INST_DATA_COMPLETE;
|
|
||||||
return saveStream.str();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Load(char const* data) override
|
void WriteSaveDataMore(std::ostringstream& data) override
|
||||||
{
|
{
|
||||||
if (!data)
|
data << NefarianLeftTunnel << ' ' << NefarianRightTunnel;
|
||||||
{
|
|
||||||
OUT_LOAD_INST_DATA_FAIL;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
OUT_LOAD_INST_DATA(data);
|
|
||||||
|
|
||||||
char dataHead1, dataHead2, dataHead3;
|
|
||||||
|
|
||||||
std::istringstream loadStream(data);
|
|
||||||
loadStream >> dataHead1 >> dataHead2 >> dataHead3;
|
|
||||||
|
|
||||||
if (dataHead1 == 'B' && dataHead2 == 'W' && dataHead3 == 'L')
|
|
||||||
{
|
|
||||||
for (uint32 i = 0; i < EncounterCount; ++i)
|
|
||||||
{
|
|
||||||
uint32 tmpState;
|
|
||||||
loadStream >> tmpState;
|
|
||||||
if (tmpState == IN_PROGRESS || tmpState == FAIL || tmpState > SPECIAL)
|
|
||||||
tmpState = NOT_STARTED;
|
|
||||||
SetBossState(i, EncounterState(tmpState));
|
|
||||||
}
|
|
||||||
|
|
||||||
loadStream >> NefarianLeftTunnel;
|
|
||||||
loadStream >> NefarianRightTunnel;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
OUT_LOAD_INST_DATA_FAIL;
|
|
||||||
}
|
|
||||||
|
|
||||||
OUT_LOAD_INST_DATA_COMPLETE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ public:
|
|||||||
{
|
{
|
||||||
instance_molten_core_InstanceMapScript(Map* map) : InstanceScript(map)
|
instance_molten_core_InstanceMapScript(Map* map) : InstanceScript(map)
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
SetBossNumber(MAX_ENCOUNTER);
|
SetBossNumber(MAX_ENCOUNTER);
|
||||||
LoadMinionData(minionData);
|
LoadMinionData(minionData);
|
||||||
}
|
}
|
||||||
@@ -404,59 +405,6 @@ public:
|
|||||||
return true;
|
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(char const* data) override
|
|
||||||
{
|
|
||||||
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 == 'M' && dataHead2 == 'C')
|
|
||||||
{
|
|
||||||
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
|
|
||||||
{
|
|
||||||
uint32 tmpState;
|
|
||||||
loadStream >> tmpState;
|
|
||||||
if (tmpState == IN_PROGRESS || tmpState > TO_BE_DECIDED)
|
|
||||||
{
|
|
||||||
tmpState = NOT_STARTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
SetBossState(i, static_cast<EncounterState>(tmpState));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (CheckMajordomoExecutus())
|
|
||||||
{
|
|
||||||
SummonMajordomoExecutus();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
OUT_LOAD_INST_DATA_FAIL;
|
|
||||||
}
|
|
||||||
|
|
||||||
OUT_LOAD_INST_DATA_COMPLETE;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::unordered_map<uint32/*bossid*/, ObjectGuid/*circleGUID*/> _circlesGUIDs;
|
std::unordered_map<uint32/*bossid*/, ObjectGuid/*circleGUID*/> _circlesGUIDs;
|
||||||
std::unordered_map<uint32/*bossid*/, ObjectGuid/*runeGUID*/> _runesGUIDs;
|
std::unordered_map<uint32/*bossid*/, ObjectGuid/*runeGUID*/> _runesGUIDs;
|
||||||
|
|||||||
@@ -21,6 +21,8 @@
|
|||||||
#include "CreatureAIImpl.h"
|
#include "CreatureAIImpl.h"
|
||||||
#include "Object.h"
|
#include "Object.h"
|
||||||
|
|
||||||
|
#define DataHeader "MC"
|
||||||
|
|
||||||
constexpr auto MCScriptName = "instance_molten_core";
|
constexpr auto MCScriptName = "instance_molten_core";
|
||||||
|
|
||||||
constexpr uint32 MAX_ENCOUNTER = 10;
|
constexpr uint32 MAX_ENCOUNTER = 10;
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include "CreatureAIImpl.h"
|
#include "CreatureAIImpl.h"
|
||||||
|
|
||||||
|
#define DataHeader "DM"
|
||||||
#define DeadminesScriptName "instance_deadmines"
|
#define DeadminesScriptName "instance_deadmines"
|
||||||
|
|
||||||
enum DataTypes
|
enum DataTypes
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ public:
|
|||||||
{
|
{
|
||||||
instance_deadmines_InstanceMapScript(Map* map) : InstanceScript(map)
|
instance_deadmines_InstanceMapScript(Map* map) : InstanceScript(map)
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Initialize() override
|
void Initialize() override
|
||||||
|
|||||||
@@ -20,6 +20,8 @@
|
|||||||
|
|
||||||
#include "CreatureAIImpl.h"
|
#include "CreatureAIImpl.h"
|
||||||
|
|
||||||
|
#define DataHeader "GNO"
|
||||||
|
|
||||||
#define GnomereganScriptName "instance_gnomeregan"
|
#define GnomereganScriptName "instance_gnomeregan"
|
||||||
|
|
||||||
template <class AI, class T>
|
template <class AI, class T>
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ public:
|
|||||||
{
|
{
|
||||||
instance_gnomeregan_InstanceMapScript(Map* map) : InstanceScript(map)
|
instance_gnomeregan_InstanceMapScript(Map* map) : InstanceScript(map)
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnCreatureCreate(Creature* creature) override
|
void OnCreatureCreate(Creature* creature) override
|
||||||
@@ -77,30 +78,14 @@ public:
|
|||||||
SaveToDB();
|
SaveToDB();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
void ReadSaveDataMore(std::istringstream& data) override
|
||||||
{
|
{
|
||||||
std::ostringstream saveStream;
|
data >> _encounters[TYPE_GRUBBIS];
|
||||||
saveStream << "D E " << _encounters[0];
|
|
||||||
return saveStream.str();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Load(const char* in) override
|
void WriteSaveDataMore(std::ostringstream& data) override
|
||||||
{
|
{
|
||||||
if (!in)
|
data << _encounters[TYPE_GRUBBIS];
|
||||||
return;
|
|
||||||
|
|
||||||
char dataHead1, dataHead2;
|
|
||||||
std::istringstream loadStream(in);
|
|
||||||
loadStream >> dataHead1 >> dataHead2;
|
|
||||||
if (dataHead1 == 'D' && dataHead2 == 'E')
|
|
||||||
{
|
|
||||||
for (uint8 i = 0; i < MAX_ENCOUNTERS; ++i)
|
|
||||||
{
|
|
||||||
loadStream >> _encounters[i];
|
|
||||||
if (_encounters[i] == IN_PROGRESS)
|
|
||||||
_encounters[i] = NOT_STARTED;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ public:
|
|||||||
{
|
{
|
||||||
instance_karazhan_InstanceMapScript(Map* map) : InstanceScript(map)
|
instance_karazhan_InstanceMapScript(Map* map) : InstanceScript(map)
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
SetBossNumber(EncounterCount);
|
SetBossNumber(EncounterCount);
|
||||||
|
|
||||||
// 1 - OZ, 2 - HOOD, 3 - RAJ, this never gets altered.
|
// 1 - OZ, 2 - HOOD, 3 - RAJ, this never gets altered.
|
||||||
|
|||||||
@@ -26,7 +26,10 @@ public:
|
|||||||
|
|
||||||
struct instance_magisters_terrace_InstanceMapScript : public InstanceScript
|
struct instance_magisters_terrace_InstanceMapScript : public InstanceScript
|
||||||
{
|
{
|
||||||
instance_magisters_terrace_InstanceMapScript(Map* map) : InstanceScript(map) { }
|
instance_magisters_terrace_InstanceMapScript(Map* map) : InstanceScript(map)
|
||||||
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
|
}
|
||||||
|
|
||||||
uint32 Encounter[MAX_ENCOUNTER];
|
uint32 Encounter[MAX_ENCOUNTER];
|
||||||
|
|
||||||
@@ -150,39 +153,17 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
// @todo: Use BossStates. This is for code compatibility
|
||||||
|
void ReadSaveDataMore(std::istringstream& data) override
|
||||||
{
|
{
|
||||||
OUT_SAVE_INST_DATA;
|
data >> Encounter[1];
|
||||||
|
data >> Encounter[2];
|
||||||
std::ostringstream saveStream;
|
data >> Encounter[3];
|
||||||
saveStream << Encounter[0] << ' ' << Encounter[1] << ' ' << Encounter[2] << ' ' << Encounter[3];
|
|
||||||
|
|
||||||
OUT_SAVE_INST_DATA_COMPLETE;
|
|
||||||
return saveStream.str();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Load(const char* str) override
|
void WriteSaveDataMore(std::ostringstream& data) override
|
||||||
{
|
{
|
||||||
if (!str)
|
data << Encounter[0] << ' ' << Encounter[1] << ' ' << Encounter[2] << ' ' << Encounter[3];
|
||||||
{
|
|
||||||
OUT_LOAD_INST_DATA_FAIL;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
OUT_LOAD_INST_DATA(str);
|
|
||||||
|
|
||||||
std::istringstream loadStream(str);
|
|
||||||
|
|
||||||
for (uint32 i = 0; i < MAX_ENCOUNTER; ++i)
|
|
||||||
{
|
|
||||||
uint32 tmpState;
|
|
||||||
loadStream >> tmpState;
|
|
||||||
if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
|
|
||||||
tmpState = NOT_STARTED;
|
|
||||||
SetData(i, tmpState);
|
|
||||||
}
|
|
||||||
|
|
||||||
OUT_LOAD_INST_DATA_COMPLETE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ObjectGuid GetGuidData(uint32 identifier) const override
|
ObjectGuid GetGuidData(uint32 identifier) const override
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
#include "Player.h"
|
#include "Player.h"
|
||||||
#include "SpellScript.h"
|
#include "SpellScript.h"
|
||||||
|
|
||||||
|
#define DataHeader "MT"
|
||||||
#define MTScriptName "instance_magisters_terrace"
|
#define MTScriptName "instance_magisters_terrace"
|
||||||
|
|
||||||
enum MTData
|
enum MTData
|
||||||
|
|||||||
@@ -66,7 +66,10 @@ public:
|
|||||||
|
|
||||||
struct instance_scarlet_monastery_InstanceMapScript : public InstanceScript
|
struct instance_scarlet_monastery_InstanceMapScript : public InstanceScript
|
||||||
{
|
{
|
||||||
instance_scarlet_monastery_InstanceMapScript(Map* map) : InstanceScript(map) {}
|
instance_scarlet_monastery_InstanceMapScript(Map* map) : InstanceScript(map)
|
||||||
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
|
}
|
||||||
|
|
||||||
void OnPlayerEnter(Player* player) override
|
void OnPlayerEnter(Player* player) override
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -20,6 +20,8 @@
|
|||||||
|
|
||||||
#include "CreatureAIImpl.h"
|
#include "CreatureAIImpl.h"
|
||||||
|
|
||||||
|
#define DataHeader "SM"
|
||||||
|
|
||||||
#define ScarletMonasteryScriptName "instance_scarlet_monastery"
|
#define ScarletMonasteryScriptName "instance_scarlet_monastery"
|
||||||
|
|
||||||
template <class AI, class T>
|
template <class AI, class T>
|
||||||
|
|||||||
@@ -211,30 +211,15 @@ public:
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
void ReadSaveDataMore(std::istringstream& data) override
|
||||||
{
|
{
|
||||||
std::ostringstream saveStream;
|
data >> _kirtonosState;
|
||||||
saveStream << "S O " << _kirtonosState << ' ' << _miniBosses;
|
data >> _miniBosses;
|
||||||
return saveStream.str();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Load(const char* str) override
|
void WriteSaveDataMore(std::ostringstream& data) override
|
||||||
{
|
{
|
||||||
if (!str)
|
data << _kirtonosState << ' ' << _miniBosses;
|
||||||
return;
|
|
||||||
|
|
||||||
char dataHead1, dataHead2;
|
|
||||||
std::istringstream loadStream(str);
|
|
||||||
loadStream >> dataHead1 >> dataHead2;
|
|
||||||
|
|
||||||
if (dataHead1 == 'S' && dataHead2 == 'O')
|
|
||||||
{
|
|
||||||
loadStream >> _kirtonosState;
|
|
||||||
loadStream >> _miniBosses;
|
|
||||||
|
|
||||||
if (_kirtonosState == IN_PROGRESS)
|
|
||||||
_kirtonosState = NOT_STARTED;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|||||||
@@ -37,7 +37,10 @@ public:
|
|||||||
|
|
||||||
struct instance_shadowfang_keep_InstanceMapScript : public InstanceScript
|
struct instance_shadowfang_keep_InstanceMapScript : public InstanceScript
|
||||||
{
|
{
|
||||||
instance_shadowfang_keep_InstanceMapScript(Map* map) : InstanceScript(map) { }
|
instance_shadowfang_keep_InstanceMapScript(Map* map) : InstanceScript(map)
|
||||||
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
|
}
|
||||||
|
|
||||||
void Initialize() override
|
void Initialize() override
|
||||||
{
|
{
|
||||||
@@ -112,30 +115,16 @@ public:
|
|||||||
SaveToDB();
|
SaveToDB();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
void ReadSaveDataMore(std::istringstream& data) override
|
||||||
{
|
{
|
||||||
std::ostringstream saveStream;
|
data >> _encounters[0];
|
||||||
saveStream << "S K " << _encounters[0] << ' ' << _encounters[1] << ' ' << _encounters[2];
|
data >> _encounters[1];
|
||||||
return saveStream.str();
|
data >> _encounters[2];
|
||||||
}
|
}
|
||||||
|
|
||||||
void Load(const char* in) override
|
void WriteSaveDataMore(std::ostringstream& data) override
|
||||||
{
|
{
|
||||||
if (!in)
|
data << _encounters[0] << ' ' << _encounters[1] << ' ' << _encounters[2];
|
||||||
return;
|
|
||||||
|
|
||||||
char dataHead1, dataHead2;
|
|
||||||
std::istringstream loadStream(in);
|
|
||||||
loadStream >> dataHead1 >> dataHead2;
|
|
||||||
if (dataHead1 == 'S' && dataHead2 == 'K')
|
|
||||||
{
|
|
||||||
for (uint8 i = 0; i < MAX_ENCOUNTERS; ++i)
|
|
||||||
{
|
|
||||||
loadStream >> _encounters[i];
|
|
||||||
if (_encounters[i] == IN_PROGRESS)
|
|
||||||
_encounters[i] = NOT_STARTED;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
#include "SpellScript.h"
|
#include "SpellScript.h"
|
||||||
#include "CreatureAIImpl.h"
|
#include "CreatureAIImpl.h"
|
||||||
|
|
||||||
|
#define DataHeader "SK"
|
||||||
#define ShadowfangKeepScriptName "instance_shadowfang_keep"
|
#define ShadowfangKeepScriptName "instance_shadowfang_keep"
|
||||||
|
|
||||||
enum DataTypes
|
enum DataTypes
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ public:
|
|||||||
{
|
{
|
||||||
instance_stratholme_InstanceMapScript(Map* map) : InstanceScript(map)
|
instance_stratholme_InstanceMapScript(Map* map) : InstanceScript(map)
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Initialize() override
|
void Initialize() override
|
||||||
@@ -344,37 +345,36 @@ public:
|
|||||||
SaveToDB();
|
SaveToDB();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
void ReadSaveDataMore(std::istringstream& data) override
|
||||||
{
|
{
|
||||||
std::ostringstream saveStream;
|
data >> _baronRunProgress;
|
||||||
saveStream << "S T " << _baronRunProgress << ' ' << _baronRunTime << ' ' << _zigguratState1 << ' ' << _zigguratState2 << ' ' << _zigguratState3 << ' ' << _slaughterProgress << ' ' << _postboxesOpened;
|
data >> _baronRunTime;
|
||||||
return saveStream.str();
|
data >> _zigguratState1;
|
||||||
}
|
data >> _zigguratState2;
|
||||||
|
data >> _zigguratState3;
|
||||||
|
data >> _slaughterProgress;
|
||||||
|
data >> _postboxesOpened;
|
||||||
|
|
||||||
void Load(const char* in) override
|
if (_baronRunTime)
|
||||||
{
|
|
||||||
if (!in)
|
|
||||||
return;
|
|
||||||
|
|
||||||
char dataHead1, dataHead2;
|
|
||||||
std::istringstream loadStream(in);
|
|
||||||
loadStream >> dataHead1 >> dataHead2;
|
|
||||||
if (dataHead1 == 'S' && dataHead2 == 'T')
|
|
||||||
{
|
{
|
||||||
loadStream >> _baronRunProgress;
|
events.ScheduleEvent(EVENT_BARON_TIME, 60000);
|
||||||
loadStream >> _baronRunTime;
|
|
||||||
loadStream >> _zigguratState1;
|
|
||||||
loadStream >> _zigguratState2;
|
|
||||||
loadStream >> _zigguratState3;
|
|
||||||
loadStream >> _slaughterProgress;
|
|
||||||
loadStream >> _postboxesOpened;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_baronRunTime > 0)
|
|
||||||
events.ScheduleEvent(EVENT_BARON_TIME, 60000);
|
|
||||||
|
|
||||||
if (_slaughterProgress > 0 && _slaughterProgress < 4)
|
if (_slaughterProgress > 0 && _slaughterProgress < 4)
|
||||||
|
{
|
||||||
events.ScheduleEvent(EVENT_FORCE_SLAUGHTER_EVENT, 5000);
|
events.ScheduleEvent(EVENT_FORCE_SLAUGHTER_EVENT, 5000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void WriteSaveDataMore(std::ostringstream& data) override
|
||||||
|
{
|
||||||
|
data << _baronRunProgress << ' '
|
||||||
|
<< _baronRunTime << ' '
|
||||||
|
<< _zigguratState1 << ' '
|
||||||
|
<< _zigguratState2 << ' '
|
||||||
|
<< _zigguratState3 << ' '
|
||||||
|
<< _slaughterProgress << ' '
|
||||||
|
<< _postboxesOpened;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32 GetData(uint32 type) const override
|
uint32 GetData(uint32 type) const override
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include "SpellAuras.h"
|
#include "SpellAuras.h"
|
||||||
|
|
||||||
|
#define DataHeader "STR"
|
||||||
#define StratholmeScriptName "instance_stratholme"
|
#define StratholmeScriptName "instance_stratholme"
|
||||||
|
|
||||||
enum DataTypes
|
enum DataTypes
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ public:
|
|||||||
{
|
{
|
||||||
instance_sunken_temple_InstanceMapScript(Map* map) : InstanceScript(map)
|
instance_sunken_temple_InstanceMapScript(Map* map) : InstanceScript(map)
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Initialize() override
|
void Initialize() override
|
||||||
@@ -168,33 +169,22 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
void ReadSaveDataMore(std::istringstream& data) override
|
||||||
{
|
{
|
||||||
std::ostringstream saveStream;
|
data >> _encounters[0];
|
||||||
saveStream << "T A " << _encounters[0] << ' ' << _encounters[1] << ' ' << _encounters[2] << ' ' << _statuePhase << ' ' << _defendersKilled;
|
data >> _encounters[1];
|
||||||
return saveStream.str();
|
data >> _encounters[2];
|
||||||
|
data >> _statuePhase;
|
||||||
|
data >> _defendersKilled;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Load(const char* in) override
|
void WriteSaveDataMore(std::ostringstream& data) override
|
||||||
{
|
{
|
||||||
if (!in)
|
data << _encounters[0] << ' '
|
||||||
return;
|
<< _encounters[1] << ' '
|
||||||
|
<< _encounters[2] << ' '
|
||||||
char dataHead1, dataHead2;
|
<< _statuePhase << ' '
|
||||||
std::istringstream loadStream(in);
|
<< _defendersKilled;
|
||||||
loadStream >> dataHead1 >> dataHead2;
|
|
||||||
if (dataHead1 == 'T' && dataHead2 == 'A')
|
|
||||||
{
|
|
||||||
for (uint8 i = 0; i < MAX_ENCOUNTERS; ++i)
|
|
||||||
{
|
|
||||||
loadStream >> _encounters[i];
|
|
||||||
if (_encounters[i] == IN_PROGRESS)
|
|
||||||
_encounters[i] = NOT_STARTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
loadStream >> _statuePhase;
|
|
||||||
loadStream >> _defendersKilled;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -18,6 +18,8 @@
|
|||||||
#ifndef DEF_SUNKEN_TEMPLE_H
|
#ifndef DEF_SUNKEN_TEMPLE_H
|
||||||
#define DEF_SUNKEN_TEMPLE_H
|
#define DEF_SUNKEN_TEMPLE_H
|
||||||
|
|
||||||
|
#define DataHeader "STR"
|
||||||
|
|
||||||
enum DataTypes
|
enum DataTypes
|
||||||
{
|
{
|
||||||
DATA_STATUES = 10,
|
DATA_STATUES = 10,
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ public:
|
|||||||
{
|
{
|
||||||
instance_sunwell_plateau_InstanceMapScript(Map* map) : InstanceScript(map)
|
instance_sunwell_plateau_InstanceMapScript(Map* map) : InstanceScript(map)
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
SetBossNumber(MAX_ENCOUNTERS);
|
SetBossNumber(MAX_ENCOUNTERS);
|
||||||
LoadDoorData(doorData);
|
LoadDoorData(doorData);
|
||||||
}
|
}
|
||||||
@@ -233,49 +234,6 @@ public:
|
|||||||
return ObjectGuid::Empty;
|
return ObjectGuid::Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
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 < MAX_ENCOUNTERS; ++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:
|
protected:
|
||||||
ObjectGuid KalecgosDragonGUID;
|
ObjectGuid KalecgosDragonGUID;
|
||||||
ObjectGuid SathrovarrGUID;
|
ObjectGuid SathrovarrGUID;
|
||||||
|
|||||||
@@ -24,6 +24,8 @@
|
|||||||
#include "SpellAuraEffects.h"
|
#include "SpellAuraEffects.h"
|
||||||
#include "SpellScript.h"
|
#include "SpellScript.h"
|
||||||
|
|
||||||
|
#define DataHeader "SWP"
|
||||||
|
|
||||||
#define SWPScriptName "instance_sunwell_plateau"
|
#define SWPScriptName "instance_sunwell_plateau"
|
||||||
|
|
||||||
enum DataTypes
|
enum DataTypes
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ public:
|
|||||||
|
|
||||||
void Initialize() override
|
void Initialize() override
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
memset(&_encounters, 0, sizeof(_encounters));
|
memset(&_encounters, 0, sizeof(_encounters));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,31 +102,18 @@ public:
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
void ReadSaveDataMore(std::istringstream& data) override
|
||||||
{
|
{
|
||||||
std::ostringstream saveStream;
|
data >> _encounters[DATA_IRONAYA_DOORS];
|
||||||
saveStream << "U D " << _encounters[DATA_IRONAYA_DOORS] << ' ' << _encounters[DATA_STONE_KEEPERS] << ' ' << _encounters[DATA_ARCHAEDAS];
|
data >> _encounters[DATA_STONE_KEEPERS];
|
||||||
return saveStream.str();
|
data >> _encounters[DATA_ARCHAEDAS];
|
||||||
}
|
}
|
||||||
|
|
||||||
void Load(const char* in) override
|
void WriteSaveDataMore(std::ostringstream& data) override
|
||||||
{
|
{
|
||||||
if (!in)
|
data << _encounters[DATA_IRONAYA_DOORS] << ' '
|
||||||
return;
|
<< _encounters[DATA_STONE_KEEPERS] << ' '
|
||||||
|
<< _encounters[DATA_ARCHAEDAS];
|
||||||
char dataHead1, dataHead2;
|
|
||||||
std::istringstream loadStream(in);
|
|
||||||
loadStream >> dataHead1 >> dataHead2;
|
|
||||||
|
|
||||||
if (dataHead1 == 'U' && dataHead2 == 'D')
|
|
||||||
{
|
|
||||||
for (uint8 i = 0; i < MAX_ENCOUNTERS; ++i)
|
|
||||||
{
|
|
||||||
loadStream >> _encounters[i];
|
|
||||||
if (_encounters[i] == IN_PROGRESS)
|
|
||||||
_encounters[i] = NOT_STARTED;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnCreatureCreate(Creature* creature) override
|
void OnCreatureCreate(Creature* creature) override
|
||||||
|
|||||||
@@ -18,6 +18,8 @@
|
|||||||
#ifndef DEF_ULDAMAN_H
|
#ifndef DEF_ULDAMAN_H
|
||||||
#define DEF_ULDAMAN_H
|
#define DEF_ULDAMAN_H
|
||||||
|
|
||||||
|
#define DataHeader "UD"
|
||||||
|
|
||||||
enum DataTypes
|
enum DataTypes
|
||||||
{
|
{
|
||||||
DATA_IRONAYA_DOORS = 0,
|
DATA_IRONAYA_DOORS = 0,
|
||||||
|
|||||||
@@ -91,6 +91,7 @@ public:
|
|||||||
|
|
||||||
void Initialize() override
|
void Initialize() override
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
|
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
|
||||||
|
|
||||||
QuestTimer = 0;
|
QuestTimer = 0;
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include "CreatureAIImpl.h"
|
#include "CreatureAIImpl.h"
|
||||||
|
|
||||||
|
#define DataHeader "ZA"
|
||||||
#define ZulAmanScriptName "instance_zulaman"
|
#define ZulAmanScriptName "instance_zulaman"
|
||||||
|
|
||||||
enum DataTypes
|
enum DataTypes
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ public:
|
|||||||
{
|
{
|
||||||
instance_zulgurub_InstanceMapScript(Map* map) : InstanceScript(map)
|
instance_zulgurub_InstanceMapScript(Map* map) : InstanceScript(map)
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
SetBossNumber(EncounterCount);
|
SetBossNumber(EncounterCount);
|
||||||
LoadDoorData(doorData);
|
LoadDoorData(doorData);
|
||||||
LoadObjectData(creatureData, nullptr);
|
LoadObjectData(creatureData, nullptr);
|
||||||
@@ -170,48 +171,6 @@ public:
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
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:
|
private:
|
||||||
// If all High Priest bosses were killed. Ohgan is added too.
|
// If all High Priest bosses were killed. Ohgan is added too.
|
||||||
// Jindo is needed for healfunction.
|
// Jindo is needed for healfunction.
|
||||||
|
|||||||
@@ -22,6 +22,8 @@
|
|||||||
|
|
||||||
uint32 const EncounterCount = 13;
|
uint32 const EncounterCount = 13;
|
||||||
|
|
||||||
|
#define DataHeader "ZG"
|
||||||
|
|
||||||
#define ZGScriptName "instance_zulgurub"
|
#define ZGScriptName "instance_zulgurub"
|
||||||
|
|
||||||
enum DataTypes
|
enum DataTypes
|
||||||
|
|||||||
@@ -18,6 +18,8 @@
|
|||||||
#ifndef BFD_H_
|
#ifndef BFD_H_
|
||||||
#define BFD_H_
|
#define BFD_H_
|
||||||
|
|
||||||
|
#define DataHeader "BFD"
|
||||||
|
|
||||||
enum Data
|
enum Data
|
||||||
{
|
{
|
||||||
TYPE_GELIHAST = 0,
|
TYPE_GELIHAST = 0,
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ public:
|
|||||||
|
|
||||||
void Initialize() override
|
void Initialize() override
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
memset(&_encounters, 0, sizeof(_encounters));
|
memset(&_encounters, 0, sizeof(_encounters));
|
||||||
_requiredDeaths = 0;
|
_requiredDeaths = 0;
|
||||||
}
|
}
|
||||||
@@ -111,30 +112,24 @@ public:
|
|||||||
SaveToDB();
|
SaveToDB();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
void ReadSaveDataMore(std::istringstream& data) override
|
||||||
{
|
{
|
||||||
std::ostringstream saveStream;
|
data >> _encounters[0];
|
||||||
saveStream << "B L " << _encounters[0] << ' ' << _encounters[1] << ' ' << _encounters[2] << ' ' << _encounters[3] << ' ' << _encounters[4] << ' ' << _encounters[5];
|
data >> _encounters[1];
|
||||||
return saveStream.str();
|
data >> _encounters[2];
|
||||||
|
data >> _encounters[3];
|
||||||
|
data >> _encounters[4];
|
||||||
|
data >> _encounters[5];
|
||||||
}
|
}
|
||||||
|
|
||||||
void Load(const char* in) override
|
void WriteSaveDataMore(std::ostringstream& data) override
|
||||||
{
|
{
|
||||||
if (!in)
|
data << _encounters[0] << ' '
|
||||||
return;
|
<< _encounters[1] << ' '
|
||||||
|
<< _encounters[2] << ' '
|
||||||
char dataHead1, dataHead2;
|
<< _encounters[3] << ' '
|
||||||
std::istringstream loadStream(in);
|
<< _encounters[4] << ' '
|
||||||
loadStream >> dataHead1 >> dataHead2;
|
<< _encounters[5];
|
||||||
if (dataHead1 == 'B' && dataHead2 == 'L')
|
|
||||||
{
|
|
||||||
for (uint8 i = 0; i < MAX_ENCOUNTERS; ++i)
|
|
||||||
{
|
|
||||||
loadStream >> _encounters[i];
|
|
||||||
if (_encounters[i] == IN_PROGRESS)
|
|
||||||
_encounters[i] = NOT_STARTED;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IsFireEventDone()
|
bool IsFireEventDone()
|
||||||
|
|||||||
@@ -21,6 +21,8 @@
|
|||||||
#include "CreatureAIImpl.h"
|
#include "CreatureAIImpl.h"
|
||||||
#include "GridNotifiers.h"
|
#include "GridNotifiers.h"
|
||||||
|
|
||||||
|
#define DataHeader "HY"
|
||||||
|
|
||||||
#define HyjalScriptName "instance_hyjal"
|
#define HyjalScriptName "instance_hyjal"
|
||||||
|
|
||||||
uint32 const EncounterCount = 5;
|
uint32 const EncounterCount = 5;
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ public:
|
|||||||
|
|
||||||
void Initialize() override
|
void Initialize() override
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
|
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
|
||||||
|
|
||||||
m_uiAncientGemGUID.clear();
|
m_uiAncientGemGUID.clear();
|
||||||
@@ -257,18 +258,7 @@ public:
|
|||||||
|
|
||||||
if (data == DONE)
|
if (data == DONE)
|
||||||
{
|
{
|
||||||
OUT_SAVE_INST_DATA;
|
|
||||||
|
|
||||||
std::ostringstream saveStream;
|
|
||||||
saveStream << m_auiEncounter[0] << ' ' << m_auiEncounter[1] << ' ' << m_auiEncounter[2] << ' '
|
|
||||||
<< m_auiEncounter[3] << ' ' << m_auiEncounter[4]
|
|
||||||
<< ' ' << allianceRetreat << ' ' << hordeRetreat
|
|
||||||
<< ' ' << RaidDamage;
|
|
||||||
|
|
||||||
str_data = saveStream.str();
|
|
||||||
|
|
||||||
SaveToDB();
|
SaveToDB();
|
||||||
OUT_SAVE_INST_DATA_COMPLETE;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -298,31 +288,32 @@ public:
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
void ReadSaveDataMore(std::istringstream& data) override
|
||||||
{
|
{
|
||||||
return str_data;
|
data >> m_auiEncounter[0];
|
||||||
|
data >> m_auiEncounter[1];
|
||||||
|
data >> m_auiEncounter[2];
|
||||||
|
data >> m_auiEncounter[3];
|
||||||
|
data >> m_auiEncounter[4];
|
||||||
|
data >> allianceRetreat;
|
||||||
|
data >> hordeRetreat;
|
||||||
|
data >> RaidDamage;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Load(const char* in) override
|
void WriteSaveDataMore(std::ostringstream& data) override
|
||||||
{
|
{
|
||||||
if (!in)
|
data << m_auiEncounter[0] << ' '
|
||||||
{
|
<< m_auiEncounter[1] << ' '
|
||||||
OUT_LOAD_INST_DATA_FAIL;
|
<< m_auiEncounter[2] << ' '
|
||||||
return;
|
<< m_auiEncounter[3] << ' '
|
||||||
}
|
<< m_auiEncounter[4]<< ' '
|
||||||
|
<< allianceRetreat << ' '
|
||||||
OUT_LOAD_INST_DATA(in);
|
<< hordeRetreat << ' '
|
||||||
std::istringstream loadStream(in);
|
<< RaidDamage;
|
||||||
loadStream >> m_auiEncounter[0] >> m_auiEncounter[1] >> m_auiEncounter[2] >> m_auiEncounter[3] >> m_auiEncounter[4] >> allianceRetreat >> hordeRetreat >> RaidDamage;
|
|
||||||
for (uint8 i = 0; i < EncounterCount; ++i)
|
|
||||||
if (m_auiEncounter[i] == IN_PROGRESS) // Do not load an encounter as IN_PROGRESS - reset it instead.
|
|
||||||
m_auiEncounter[i] = NOT_STARTED;
|
|
||||||
OUT_LOAD_INST_DATA_COMPLETE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
uint32 m_auiEncounter[EncounterCount];
|
uint32 m_auiEncounter[EncounterCount];
|
||||||
std::string str_data;
|
|
||||||
GuidList m_uiAncientGemGUID;
|
GuidList m_uiAncientGemGUID;
|
||||||
ObjectGuid RageWinterchill;
|
ObjectGuid RageWinterchill;
|
||||||
ObjectGuid Anetheron;
|
ObjectGuid Anetheron;
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include "CreatureAIImpl.h"
|
#include "CreatureAIImpl.h"
|
||||||
|
|
||||||
|
#define DataHeader "CS"
|
||||||
#define CullingOfStratholmeScriptName "instance_culling_of_stratholme"
|
#define CullingOfStratholmeScriptName "instance_culling_of_stratholme"
|
||||||
|
|
||||||
enum Data
|
enum Data
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ public:
|
|||||||
instance_culling_of_stratholme_InstanceMapScript(Map* pMap) : InstanceScript(pMap)
|
instance_culling_of_stratholme_InstanceMapScript(Map* pMap) : InstanceScript(pMap)
|
||||||
{
|
{
|
||||||
// Instance
|
// Instance
|
||||||
|
SetHeaders(DataHeader);
|
||||||
_crateCount = 0;
|
_crateCount = 0;
|
||||||
_showCrateTimer = 0;
|
_showCrateTimer = 0;
|
||||||
_guardianTimer = 0;
|
_guardianTimer = 0;
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ public:
|
|||||||
|
|
||||||
void Initialize() override
|
void Initialize() override
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
_encounterProgress = 0;
|
_encounterProgress = 0;
|
||||||
_barrelCount = 0;
|
_barrelCount = 0;
|
||||||
_attemptsCount = 0;
|
_attemptsCount = 0;
|
||||||
@@ -298,42 +299,15 @@ public:
|
|||||||
instance->LoadGrid(thrallPositions[i].GetPositionX(), thrallPositions[i].GetPositionY());
|
instance->LoadGrid(thrallPositions[i].GetPositionX(), thrallPositions[i].GetPositionY());
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
void ReadSaveDataMore(std::istringstream& data) override
|
||||||
{
|
{
|
||||||
OUT_SAVE_INST_DATA;
|
data >> _encounterProgress;
|
||||||
|
data >> _attemptsCount;
|
||||||
std::ostringstream saveStream;
|
|
||||||
saveStream << "O H " << _encounterProgress << ' ' << _attemptsCount;
|
|
||||||
|
|
||||||
OUT_SAVE_INST_DATA_COMPLETE;
|
|
||||||
return saveStream.str();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Load(const char* in) override
|
void WriteSaveDataMore(std::ostringstream& data) override
|
||||||
{
|
{
|
||||||
if (!in)
|
data << _encounterProgress << ' ' << _attemptsCount;
|
||||||
{
|
|
||||||
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 == 'O' && dataHead2 == 'H')
|
|
||||||
{
|
|
||||||
_encounterProgress = data0;
|
|
||||||
_attemptsCount = data1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
OUT_LOAD_INST_DATA_FAIL;
|
|
||||||
|
|
||||||
OUT_LOAD_INST_DATA_COMPLETE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -20,6 +20,8 @@
|
|||||||
|
|
||||||
#include "CreatureAIImpl.h"
|
#include "CreatureAIImpl.h"
|
||||||
|
|
||||||
|
#define DataHeader "OH"
|
||||||
|
|
||||||
#define OldHillsbradScriptName "instance_old_hillsbrad"
|
#define OldHillsbradScriptName "instance_old_hillsbrad"
|
||||||
|
|
||||||
enum DataIds
|
enum DataIds
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ public:
|
|||||||
|
|
||||||
void Initialize() override
|
void Initialize() override
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
memset(&encounters, 0, sizeof(encounters));
|
memset(&encounters, 0, sizeof(encounters));
|
||||||
_currentRift = 0;
|
_currentRift = 0;
|
||||||
_shieldPercent = 100;
|
_shieldPercent = 100;
|
||||||
@@ -327,40 +328,18 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
void ReadSaveDataMore(std::istringstream& data) override
|
||||||
{
|
{
|
||||||
OUT_SAVE_INST_DATA;
|
data >> encounters[0];
|
||||||
|
data >> encounters[1];
|
||||||
std::ostringstream saveStream;
|
data >> encounters[2];
|
||||||
saveStream << "B M " << encounters[0] << ' ' << encounters[1] << ' ' << encounters[2];
|
|
||||||
|
|
||||||
OUT_SAVE_INST_DATA_COMPLETE;
|
|
||||||
return saveStream.str();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Load(const char* in) override
|
void WriteSaveDataMore(std::ostringstream& data) override
|
||||||
{
|
{
|
||||||
if (!in)
|
data << encounters[0] << ' '
|
||||||
{
|
<< encounters[1] << ' '
|
||||||
OUT_LOAD_INST_DATA_FAIL;
|
<< encounters[2] << ' ';
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
OUT_LOAD_INST_DATA(in);
|
|
||||||
|
|
||||||
char dataHead1, dataHead2;
|
|
||||||
|
|
||||||
std::istringstream loadStream(in);
|
|
||||||
loadStream >> dataHead1 >> dataHead2;
|
|
||||||
if (dataHead1 == 'B' && dataHead2 == 'M')
|
|
||||||
{
|
|
||||||
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
|
|
||||||
loadStream >> encounters[i];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
OUT_LOAD_INST_DATA_FAIL;
|
|
||||||
|
|
||||||
OUT_LOAD_INST_DATA_COMPLETE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|||||||
@@ -22,6 +22,8 @@
|
|||||||
#include "PassiveAI.h"
|
#include "PassiveAI.h"
|
||||||
#include "SpellScript.h"
|
#include "SpellScript.h"
|
||||||
|
|
||||||
|
#define DataHeader "TBM"
|
||||||
|
|
||||||
#define TheBlackMorassScriptName "instance_the_black_morass"
|
#define TheBlackMorassScriptName "instance_the_black_morass"
|
||||||
|
|
||||||
enum DataTypes
|
enum DataTypes
|
||||||
|
|||||||
@@ -20,6 +20,8 @@
|
|||||||
|
|
||||||
#include "CreatureAIImpl.h"
|
#include "CreatureAIImpl.h"
|
||||||
|
|
||||||
|
#define DataHeader "DML"
|
||||||
|
|
||||||
constexpr auto DMScriptName = "instance_dire_maul";
|
constexpr auto DMScriptName = "instance_dire_maul";
|
||||||
|
|
||||||
enum DataTypes
|
enum DataTypes
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ public:
|
|||||||
|
|
||||||
void Initialize() override
|
void Initialize() override
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
_eastWingProgress = 0;
|
_eastWingProgress = 0;
|
||||||
_westWingProgress = 0;
|
_westWingProgress = 0;
|
||||||
_pylonsState = 0;
|
_pylonsState = 0;
|
||||||
@@ -144,29 +145,22 @@ public:
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
void ReadSaveDataMore(std::istringstream& data) override
|
||||||
{
|
{
|
||||||
std::ostringstream saveStream;
|
data >> _eastWingProgress;
|
||||||
saveStream << "D M " << _eastWingProgress << ' ' << _westWingProgress << ' ' << _pylonsState << ' ' << _northWingProgress << ' ' << _northWingBosses;
|
data >> _westWingProgress;
|
||||||
return saveStream.str();
|
data >> _pylonsState;
|
||||||
|
data >> _northWingProgress;
|
||||||
|
data >> _northWingBosses;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Load(const char* in) override
|
void WriteSaveDataMore(std::ostringstream& data) override
|
||||||
{
|
{
|
||||||
if (!in)
|
data << _eastWingProgress << ' '
|
||||||
return;
|
<< _westWingProgress << ' '
|
||||||
|
<< _pylonsState << ' '
|
||||||
char dataHead1, dataHead2;
|
<< _northWingProgress << ' '
|
||||||
std::istringstream loadStream(in);
|
<< _northWingBosses;
|
||||||
loadStream >> dataHead1 >> dataHead2;
|
|
||||||
if (dataHead1 == 'D' && dataHead2 == 'M')
|
|
||||||
{
|
|
||||||
loadStream >> _eastWingProgress;
|
|
||||||
loadStream >> _westWingProgress;
|
|
||||||
loadStream >> _pylonsState;
|
|
||||||
loadStream >> _northWingProgress;
|
|
||||||
loadStream >> _northWingBosses;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ public:
|
|||||||
|
|
||||||
void Initialize() override
|
void Initialize() override
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
memset(&_encounters, 0, sizeof(_encounters));
|
memset(&_encounters, 0, sizeof(_encounters));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,30 +60,14 @@ public:
|
|||||||
SaveToDB();
|
SaveToDB();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
void ReadSaveDataMore(std::istringstream& data) override
|
||||||
{
|
{
|
||||||
std::ostringstream saveStream;
|
data >> _encounters[0];
|
||||||
saveStream << "M A " << _encounters[0];
|
|
||||||
return saveStream.str();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Load(const char* in) override
|
void WriteSaveDataMore(std::ostringstream& data) override
|
||||||
{
|
{
|
||||||
if (!in)
|
data << _encounters[0];
|
||||||
return;
|
|
||||||
|
|
||||||
char dataHead1, dataHead2;
|
|
||||||
std::istringstream loadStream(in);
|
|
||||||
loadStream >> dataHead1 >> dataHead2;
|
|
||||||
if (dataHead1 == 'M' && dataHead2 == 'A')
|
|
||||||
{
|
|
||||||
for (uint8 i = 0; i < MAX_ENCOUNTERS; ++i)
|
|
||||||
{
|
|
||||||
loadStream >> _encounters[i];
|
|
||||||
if (_encounters[i] == IN_PROGRESS)
|
|
||||||
_encounters[i] = NOT_STARTED;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -18,6 +18,8 @@
|
|||||||
#ifndef DEF_MARAUDON_H
|
#ifndef DEF_MARAUDON_H
|
||||||
#define DEF_MARAUDON_H
|
#define DEF_MARAUDON_H
|
||||||
|
|
||||||
|
#define DataHeader "MA"
|
||||||
|
|
||||||
enum DataTypes
|
enum DataTypes
|
||||||
{
|
{
|
||||||
TYPE_NOXXION = 0,
|
TYPE_NOXXION = 0,
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ public:
|
|||||||
|
|
||||||
void Initialize() override
|
void Initialize() override
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
SetBossNumber(MAX_ENCOUNTER);
|
SetBossNumber(MAX_ENCOUNTER);
|
||||||
ManyWhelpsCounter = 0;
|
ManyWhelpsCounter = 0;
|
||||||
bDeepBreath = true;
|
bDeepBreath = true;
|
||||||
@@ -93,50 +94,6 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
|
||||||
{
|
|
||||||
OUT_SAVE_INST_DATA;
|
|
||||||
std::ostringstream saveStream;
|
|
||||||
saveStream << "O L " << GetBossSaveData();
|
|
||||||
str_data = saveStream.str();
|
|
||||||
OUT_SAVE_INST_DATA_COMPLETE;
|
|
||||||
return str_data;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Load(const char* in) override
|
|
||||||
{
|
|
||||||
if (!in)
|
|
||||||
{
|
|
||||||
OUT_LOAD_INST_DATA_FAIL;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
OUT_LOAD_INST_DATA(in);
|
|
||||||
|
|
||||||
char dataHead1, dataHead2;
|
|
||||||
uint16 data0;
|
|
||||||
std::istringstream loadStream(in);
|
|
||||||
loadStream >> dataHead1 >> dataHead2 >> data0;
|
|
||||||
|
|
||||||
if (dataHead1 == 'O' && dataHead2 == 'L')
|
|
||||||
{
|
|
||||||
for (uint32 i = 0; i < MAX_ENCOUNTER; ++i)
|
|
||||||
{
|
|
||||||
uint32 tmpState;
|
|
||||||
loadStream >> tmpState;
|
|
||||||
if (tmpState == IN_PROGRESS || tmpState == FAIL || tmpState > SPECIAL)
|
|
||||||
{
|
|
||||||
tmpState = NOT_STARTED;
|
|
||||||
}
|
|
||||||
SetBossState(i, EncounterState(tmpState));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
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
|
bool CheckAchievementCriteriaMeet(uint32 criteria_id, Player const* /*source*/, Unit const* /*target*/, uint32 /*miscvalue1*/) override
|
||||||
{
|
{
|
||||||
switch(criteria_id)
|
switch(criteria_id)
|
||||||
|
|||||||
@@ -20,6 +20,8 @@
|
|||||||
|
|
||||||
#include "CreatureAIImpl.h"
|
#include "CreatureAIImpl.h"
|
||||||
|
|
||||||
|
#define DataHeader "OL"
|
||||||
|
|
||||||
#define OnyxiasLairScriptName "instance_onyxias_lair"
|
#define OnyxiasLairScriptName "instance_onyxias_lair"
|
||||||
|
|
||||||
enum eInstanceData
|
enum eInstanceData
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ public:
|
|||||||
|
|
||||||
void Initialize() override
|
void Initialize() override
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
_gongPhase = 0;
|
_gongPhase = 0;
|
||||||
_firesState = 0;
|
_firesState = 0;
|
||||||
}
|
}
|
||||||
@@ -70,27 +71,15 @@ public:
|
|||||||
SaveToDB();
|
SaveToDB();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
void ReadSaveDataMore(std::istringstream& data) override
|
||||||
{
|
{
|
||||||
std::ostringstream saveStream;
|
data >> _gongPhase;
|
||||||
saveStream << "R D " << _gongPhase << ' ' << _firesState;
|
data >> _firesState;
|
||||||
return saveStream.str();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Load(const char* str) override
|
void WriteSaveDataMore(std::ostringstream& data) override
|
||||||
{
|
{
|
||||||
if (!str)
|
data << _gongPhase << ' ' << _firesState;
|
||||||
return;
|
|
||||||
|
|
||||||
char dataHead1, dataHead2;
|
|
||||||
std::istringstream loadStream(str);
|
|
||||||
loadStream >> dataHead1 >> dataHead2;
|
|
||||||
|
|
||||||
if (dataHead1 == 'R' && dataHead2 == 'D')
|
|
||||||
{
|
|
||||||
loadStream >> _gongPhase;
|
|
||||||
loadStream >> _firesState;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -21,6 +21,8 @@
|
|||||||
#include "CreatureAIImpl.h"
|
#include "CreatureAIImpl.h"
|
||||||
#include "PassiveAI.h"
|
#include "PassiveAI.h"
|
||||||
|
|
||||||
|
#define DataHeader "RFD"
|
||||||
|
|
||||||
#define RazorfenDownsScriptName "instance_razorfen_downs"
|
#define RazorfenDownsScriptName "instance_razorfen_downs"
|
||||||
|
|
||||||
enum CreatureIds
|
enum CreatureIds
|
||||||
|
|||||||
@@ -72,6 +72,7 @@ public:
|
|||||||
{
|
{
|
||||||
instance_ruins_of_ahnqiraj_InstanceMapScript(Map* map) : InstanceScript(map)
|
instance_ruins_of_ahnqiraj_InstanceMapScript(Map* map) : InstanceScript(map)
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
SetBossNumber(NUM_ENCOUNTER);
|
SetBossNumber(NUM_ENCOUNTER);
|
||||||
LoadObjectData(creatureData, nullptr);
|
LoadObjectData(creatureData, nullptr);
|
||||||
_rajaxWaveCounter = 0;
|
_rajaxWaveCounter = 0;
|
||||||
@@ -244,49 +245,6 @@ public:
|
|||||||
return ObjectGuid::Empty;
|
return ObjectGuid::Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
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) override
|
|
||||||
{
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CallNextRajaxxLeader(bool announce = false)
|
void CallNextRajaxxLeader(bool announce = false)
|
||||||
{
|
{
|
||||||
++_rajaxWaveCounter;
|
++_rajaxWaveCounter;
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include "CreatureAIImpl.h"
|
#include "CreatureAIImpl.h"
|
||||||
|
|
||||||
|
#define DataHeader "RA"
|
||||||
#define RuinsOfAhnQirajScriptName "instance_ruins_of_ahnqiraj"
|
#define RuinsOfAhnQirajScriptName "instance_ruins_of_ahnqiraj"
|
||||||
|
|
||||||
enum DataTypes
|
enum DataTypes
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ public:
|
|||||||
{
|
{
|
||||||
instance_temple_of_ahnqiraj_InstanceMapScript(Map* map) : InstanceScript(map)
|
instance_temple_of_ahnqiraj_InstanceMapScript(Map* map) : InstanceScript(map)
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
SetBossNumber(MAX_BOSS_NUMBER);
|
SetBossNumber(MAX_BOSS_NUMBER);
|
||||||
LoadObjectData(creatureData, nullptr);
|
LoadObjectData(creatureData, nullptr);
|
||||||
LoadDoorData(doorData);
|
LoadDoorData(doorData);
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include "CreatureAIImpl.h"
|
#include "CreatureAIImpl.h"
|
||||||
|
|
||||||
|
#define DataHeader "AQT"
|
||||||
#define TempleOfAhnQirajScriptName "instance_temple_of_ahnqiraj"
|
#define TempleOfAhnQirajScriptName "instance_temple_of_ahnqiraj"
|
||||||
|
|
||||||
enum DataTypes
|
enum DataTypes
|
||||||
|
|||||||
@@ -91,30 +91,22 @@ public:
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
void ReadSaveDataMore(std::istringstream& data) override
|
||||||
{
|
{
|
||||||
std::ostringstream saveStream;
|
data >> _encounters[0];
|
||||||
saveStream << "W C " << _encounters[0] << ' ' << _encounters[1] << ' ' << _encounters[2] << ' ' << _encounters[3] << ' ' << _encounters[4];
|
data >> _encounters[1];
|
||||||
return saveStream.str();
|
data >> _encounters[2];
|
||||||
|
data >> _encounters[3];
|
||||||
|
data >> _encounters[4];
|
||||||
}
|
}
|
||||||
|
|
||||||
void Load(const char* in) override
|
void WriteSaveDataMore(std::ostringstream& data) override
|
||||||
{
|
{
|
||||||
if (!in)
|
data << _encounters[0] << ' '
|
||||||
return;
|
<< _encounters[1] << ' '
|
||||||
|
<< _encounters[2] << ' '
|
||||||
char dataHead1, dataHead2;
|
<< _encounters[3] << ' '
|
||||||
std::istringstream loadStream(in);
|
<< _encounters[4] << ' ';
|
||||||
loadStream >> dataHead1 >> dataHead2;
|
|
||||||
if (dataHead1 == 'W' && dataHead2 == 'C')
|
|
||||||
{
|
|
||||||
for (uint8 i = 0; i < MAX_ENCOUNTERS; ++i)
|
|
||||||
{
|
|
||||||
loadStream >> _encounters[i];
|
|
||||||
if (_encounters[i] == IN_PROGRESS)
|
|
||||||
_encounters[i] = NOT_STARTED;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -18,6 +18,8 @@
|
|||||||
#ifndef DEF_WAILING_CAVERNS_H
|
#ifndef DEF_WAILING_CAVERNS_H
|
||||||
#define DEF_WAILING_CAVERNS_H
|
#define DEF_WAILING_CAVERNS_H
|
||||||
|
|
||||||
|
#define DataHeader "WC"
|
||||||
|
|
||||||
#include "CreatureAI.h"
|
#include "CreatureAI.h"
|
||||||
|
|
||||||
enum DataTypes
|
enum DataTypes
|
||||||
|
|||||||
@@ -133,6 +133,7 @@ public:
|
|||||||
|
|
||||||
void Initialize() override
|
void Initialize() override
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
GahzrillaSummoned = NOT_STARTED;
|
GahzrillaSummoned = NOT_STARTED;
|
||||||
|
|
||||||
PyramidPhase = 0;
|
PyramidPhase = 0;
|
||||||
@@ -440,27 +441,15 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
void ReadSaveDataMore(std::istringstream& data) override
|
||||||
{
|
{
|
||||||
std::ostringstream saveStream;
|
data >> PyramidPhase;
|
||||||
saveStream << "Z F " << PyramidPhase << ' ' << GahzrillaSummoned;
|
data >> GahzrillaSummoned;
|
||||||
return saveStream.str();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Load(const char* str) override
|
void WriteSaveDataMore(std::ostringstream& data) override
|
||||||
{
|
{
|
||||||
if (!str)
|
data << PyramidPhase << ' ' << GahzrillaSummoned;
|
||||||
return;
|
|
||||||
|
|
||||||
char dataHead1, dataHead2;
|
|
||||||
std::istringstream loadStream(str);
|
|
||||||
loadStream >> dataHead1 >> dataHead2;
|
|
||||||
|
|
||||||
if (dataHead1 == 'Z' && dataHead2 == 'F')
|
|
||||||
{
|
|
||||||
loadStream >> PyramidPhase;
|
|
||||||
loadStream >> GahzrillaSummoned;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -22,6 +22,8 @@
|
|||||||
#include "CreatureAIImpl.h"
|
#include "CreatureAIImpl.h"
|
||||||
#include "SpellScript.h"
|
#include "SpellScript.h"
|
||||||
|
|
||||||
|
#define DataHeader "ZF"
|
||||||
|
|
||||||
#define ZFScriptName "instance_zulfarrak"
|
#define ZFScriptName "instance_zulfarrak"
|
||||||
|
|
||||||
enum ZulFarrakCreatures
|
enum ZulFarrakCreatures
|
||||||
|
|||||||
@@ -23,6 +23,8 @@
|
|||||||
#include "SpellAuras.h"
|
#include "SpellAuras.h"
|
||||||
#include "SpellScript.h"
|
#include "SpellScript.h"
|
||||||
|
|
||||||
|
#define DataHeader "AN"
|
||||||
|
|
||||||
#define AzjolNerubScriptName "instance_azjol_nerub"
|
#define AzjolNerubScriptName "instance_azjol_nerub"
|
||||||
|
|
||||||
enum ANData
|
enum ANData
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ public:
|
|||||||
{
|
{
|
||||||
instance_azjol_nerub_InstanceScript(Map* map) : InstanceScript(map)
|
instance_azjol_nerub_InstanceScript(Map* map) : InstanceScript(map)
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
SetBossNumber(MAX_ENCOUNTERS);
|
SetBossNumber(MAX_ENCOUNTERS);
|
||||||
LoadBossBoundaries(boundaries);
|
LoadBossBoundaries(boundaries);
|
||||||
LoadDoorData(doorData);
|
LoadDoorData(doorData);
|
||||||
@@ -102,39 +103,6 @@ public:
|
|||||||
break;
|
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
|
InstanceScript* GetInstanceScript(InstanceMap* map) const override
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
#ifndef DEF_AHNKAHET_H
|
#ifndef DEF_AHNKAHET_H
|
||||||
#define DEF_AHNKAHET_H
|
#define DEF_AHNKAHET_H
|
||||||
|
|
||||||
|
#define DataHeader "AK"
|
||||||
#define AhnKahetScriptName "instance_ahnkahet"
|
#define AhnKahetScriptName "instance_ahnkahet"
|
||||||
constexpr uint32 MAX_ENCOUNTER = 5;
|
constexpr uint32 MAX_ENCOUNTER = 5;
|
||||||
enum AhnkahetData
|
enum AhnkahetData
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ public:
|
|||||||
{
|
{
|
||||||
instance_ahnkahet_InstanceScript(Map* pMap) : InstanceScript(pMap), canSaveBossStates(false)
|
instance_ahnkahet_InstanceScript(Map* pMap) : InstanceScript(pMap), canSaveBossStates(false)
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
SetBossNumber(MAX_ENCOUNTER);
|
SetBossNumber(MAX_ENCOUNTER);
|
||||||
teldaramSpheres.fill(NOT_STARTED);
|
teldaramSpheres.fill(NOT_STARTED);
|
||||||
}
|
}
|
||||||
@@ -172,62 +173,18 @@ public:
|
|||||||
return ObjectGuid::Empty;
|
return ObjectGuid::Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
void ReadSaveDataMore(std::istringstream& data) override
|
||||||
{
|
{
|
||||||
OUT_SAVE_INST_DATA;
|
data >> teldaramSpheres[0];
|
||||||
|
data >> teldaramSpheres[1];
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
canSaveBossStates = true;
|
canSaveBossStates = true;
|
||||||
OUT_LOAD_INST_DATA_COMPLETE;
|
}
|
||||||
|
|
||||||
|
void WriteSaveDataMore(std::ostringstream& data) override
|
||||||
|
{
|
||||||
|
data << teldaramSpheres[0] << ' '
|
||||||
|
<< teldaramSpheres[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ public:
|
|||||||
{
|
{
|
||||||
instance_obsidian_sanctum_InstanceMapScript(Map* pMap) : InstanceScript(pMap), portalCount(0)
|
instance_obsidian_sanctum_InstanceMapScript(Map* pMap) : InstanceScript(pMap), portalCount(0)
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
SetBossNumber(MAX_ENCOUNTERS);
|
SetBossNumber(MAX_ENCOUNTERS);
|
||||||
LoadBossBoundaries(boundaries);
|
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:
|
private:
|
||||||
ObjectGuid m_uiSartharionGUID;
|
ObjectGuid m_uiSartharionGUID;
|
||||||
ObjectGuid m_uiTenebronGUID;
|
ObjectGuid m_uiTenebronGUID;
|
||||||
|
|||||||
@@ -20,6 +20,8 @@
|
|||||||
|
|
||||||
#include "CreatureAIImpl.h"
|
#include "CreatureAIImpl.h"
|
||||||
|
|
||||||
|
#define DataHeader "OS"
|
||||||
|
|
||||||
#define ObsidianSanctumScriptName "instance_obsidian_sanctum"
|
#define ObsidianSanctumScriptName "instance_obsidian_sanctum"
|
||||||
|
|
||||||
enum Data : uint32
|
enum Data : uint32
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ public:
|
|||||||
{
|
{
|
||||||
instance_ruby_sanctum_InstanceMapScript(InstanceMap* map) : InstanceScript(map)
|
instance_ruby_sanctum_InstanceMapScript(InstanceMap* map) : InstanceScript(map)
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
SetBossNumber(MAX_ENCOUNTERS);
|
SetBossNumber(MAX_ENCOUNTERS);
|
||||||
LoadBossBoundaries(boundaries);
|
LoadBossBoundaries(boundaries);
|
||||||
LoadDoorData(doorData);
|
LoadDoorData(doorData);
|
||||||
@@ -183,6 +184,13 @@ public:
|
|||||||
|
|
||||||
switch (type)
|
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_SAVIANA_RAGEFIRE:
|
||||||
case DATA_BALTHARUS_THE_WARBORN:
|
case DATA_BALTHARUS_THE_WARBORN:
|
||||||
if (GetBossState(DATA_BALTHARUS_THE_WARBORN) == DONE && GetBossState(DATA_SAVIANA_RAGEFIRE) == DONE)
|
if (GetBossState(DATA_BALTHARUS_THE_WARBORN) == DONE && GetBossState(DATA_SAVIANA_RAGEFIRE) == DONE)
|
||||||
@@ -208,17 +216,6 @@ public:
|
|||||||
return true;
|
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
|
void FillInitialWorldStates(WorldPacket& data) override
|
||||||
{
|
{
|
||||||
data << uint32(WORLDSTATE_CORPOREALITY_MATERIAL) << uint32(50);
|
data << uint32(WORLDSTATE_CORPOREALITY_MATERIAL) << uint32(50);
|
||||||
@@ -226,46 +223,6 @@ public:
|
|||||||
data << uint32(WORLDSTATE_CORPOREALITY_TOGGLE) << uint32(0);
|
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:
|
protected:
|
||||||
ObjectGuid BaltharusTheWarbornGUID;
|
ObjectGuid BaltharusTheWarbornGUID;
|
||||||
ObjectGuid XerestraszaGUID;
|
ObjectGuid XerestraszaGUID;
|
||||||
|
|||||||
@@ -27,6 +27,8 @@
|
|||||||
#include "Player.h"
|
#include "Player.h"
|
||||||
#include "SpellScript.h"
|
#include "SpellScript.h"
|
||||||
|
|
||||||
|
#define DataHeader "RS"
|
||||||
|
|
||||||
#define RubySanctumScriptName "instance_ruby_sanctum"
|
#define RubySanctumScriptName "instance_ruby_sanctum"
|
||||||
|
|
||||||
enum DataTypes
|
enum DataTypes
|
||||||
|
|||||||
@@ -39,7 +39,11 @@ public:
|
|||||||
|
|
||||||
struct instance_trial_of_the_champion_InstanceMapScript : public InstanceScript
|
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;
|
bool CLEANED;
|
||||||
TeamId TeamIdInInstance;
|
TeamId TeamIdInInstance;
|
||||||
|
|||||||
@@ -21,6 +21,8 @@
|
|||||||
#include "CombatAI.h"
|
#include "CombatAI.h"
|
||||||
#include "CreatureAIImpl.h"
|
#include "CreatureAIImpl.h"
|
||||||
|
|
||||||
|
#define DataHeader "TC"
|
||||||
|
|
||||||
#define TrialOfTheChampionScriptName "instance_trial_of_the_champion"
|
#define TrialOfTheChampionScriptName "instance_trial_of_the_champion"
|
||||||
|
|
||||||
enum eData
|
enum eData
|
||||||
|
|||||||
@@ -32,7 +32,11 @@ public:
|
|||||||
|
|
||||||
struct instance_trial_of_the_crusader_InstanceMapScript : public InstanceScript
|
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;
|
bool CLEANED;
|
||||||
uint32 EncounterStatus;
|
uint32 EncounterStatus;
|
||||||
@@ -1589,54 +1593,32 @@ public:
|
|||||||
events.RescheduleEvent(EVENT_CHECK_PLAYERS, CLEANUP_CHECK_INTERVAL);
|
events.RescheduleEvent(EVENT_CHECK_PLAYERS, CLEANUP_CHECK_INTERVAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
void ReadSaveDataMore(std::istringstream& data) override
|
||||||
{
|
{
|
||||||
OUT_SAVE_INST_DATA;
|
data >> InstanceProgress;
|
||||||
std::ostringstream saveStream;
|
|
||||||
saveStream << "T C " << InstanceProgress;
|
if (instance->IsHeroic())
|
||||||
if( instance->IsHeroic() )
|
{
|
||||||
saveStream << ' ' << AttemptsLeft << ' ' << (bDedicatedInsanity ? (uint32)1 : (uint32)0) << ' ' << (bNooneDied ? (uint32)1 : (uint32)0);
|
data >> AttemptsLeft;
|
||||||
str_data = saveStream.str();
|
uint32 temp = 0;
|
||||||
OUT_SAVE_INST_DATA_COMPLETE;
|
data >> temp;
|
||||||
return str_data;
|
bDedicatedInsanity = !!temp;
|
||||||
|
data >> temp;
|
||||||
|
bNooneDied = !!temp;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Load(const char* in) override
|
void WriteSaveDataMore(std::ostringstream& data) override
|
||||||
{
|
{
|
||||||
EncounterStatus = NOT_STARTED;
|
data << InstanceProgress;
|
||||||
CLEANED = false;
|
|
||||||
events.Reset();
|
|
||||||
events.RescheduleEvent(EVENT_CHECK_PLAYERS, 0);
|
|
||||||
|
|
||||||
if( !in )
|
if (instance->IsHeroic())
|
||||||
{
|
{
|
||||||
OUT_LOAD_INST_DATA_FAIL;
|
data << ' '
|
||||||
return;
|
<< 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
|
bool CheckAchievementCriteriaMeet(uint32 criteria_id, Player const* /*source*/, Unit const* /*target*/, uint32 /*miscvalue1*/) override
|
||||||
|
|||||||
@@ -22,6 +22,8 @@
|
|||||||
#include "GridNotifiers.h"
|
#include "GridNotifiers.h"
|
||||||
#include "SpellAuraEffects.h"
|
#include "SpellAuraEffects.h"
|
||||||
|
|
||||||
|
#define DataHeader "TCR"
|
||||||
|
|
||||||
#define TrialOfTheCrusaderScriptName "instance_trial_of_the_crusader"
|
#define TrialOfTheCrusaderScriptName "instance_trial_of_the_crusader"
|
||||||
|
|
||||||
enum DataTypes
|
enum DataTypes
|
||||||
|
|||||||
@@ -22,6 +22,8 @@
|
|||||||
#include "SpellAuraEffects.h"
|
#include "SpellAuraEffects.h"
|
||||||
#include "SpellScript.h"
|
#include "SpellScript.h"
|
||||||
|
|
||||||
|
#define DataHeader "DTK"
|
||||||
|
|
||||||
#define DraktharonKeepScriptName "instance_drak_tharon_keep"
|
#define DraktharonKeepScriptName "instance_drak_tharon_keep"
|
||||||
|
|
||||||
enum Data
|
enum Data
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ public:
|
|||||||
{
|
{
|
||||||
instance_drak_tharon_keep_InstanceScript(Map* map) : InstanceScript(map)
|
instance_drak_tharon_keep_InstanceScript(Map* map) : InstanceScript(map)
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
SetBossNumber(MAX_ENCOUNTERS);
|
SetBossNumber(MAX_ENCOUNTERS);
|
||||||
LoadDoorData(doorData);
|
LoadDoorData(doorData);
|
||||||
}
|
}
|
||||||
@@ -66,34 +67,6 @@ public:
|
|||||||
break;
|
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
|
InstanceScript* GetInstanceScript(InstanceMap* map) const override
|
||||||
|
|||||||
@@ -21,6 +21,8 @@
|
|||||||
#include "CreatureAIImpl.h"
|
#include "CreatureAIImpl.h"
|
||||||
#include "GridNotifiers.h"
|
#include "GridNotifiers.h"
|
||||||
|
|
||||||
|
#define DataHeader "FOS"
|
||||||
|
|
||||||
#define ForgeOfSoulsScriptName "instance_forge_of_souls"
|
#define ForgeOfSoulsScriptName "instance_forge_of_souls"
|
||||||
|
|
||||||
enum Data
|
enum Data
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ public:
|
|||||||
{
|
{
|
||||||
instance_forge_of_souls_InstanceScript(Map* map) : InstanceScript(map)
|
instance_forge_of_souls_InstanceScript(Map* map) : InstanceScript(map)
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
LoadBossBoundaries(boundaries);
|
LoadBossBoundaries(boundaries);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -200,46 +201,15 @@ public:
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
void ReadSaveDataMore(std::istringstream& data) override
|
||||||
{
|
{
|
||||||
OUT_SAVE_INST_DATA;
|
data >> m_auiEncounter[0];
|
||||||
|
data >> m_auiEncounter[1];
|
||||||
std::ostringstream saveStream;
|
|
||||||
saveStream << "F S " << m_auiEncounter[0] << ' ' << m_auiEncounter[1];
|
|
||||||
str_data = saveStream.str();
|
|
||||||
|
|
||||||
OUT_SAVE_INST_DATA_COMPLETE;
|
|
||||||
return str_data;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Load(const char* in) override
|
void WriteSaveDataMore(std::ostringstream& data) override
|
||||||
{
|
{
|
||||||
if (!in)
|
data << m_auiEncounter[0] << ' ' << m_auiEncounter[1];
|
||||||
{
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -28,6 +28,8 @@
|
|||||||
#include "SpellAuras.h"
|
#include "SpellAuras.h"
|
||||||
#include "SpellScript.h"
|
#include "SpellScript.h"
|
||||||
|
|
||||||
|
#define DataHeader "HOR"
|
||||||
|
|
||||||
#define HallsOfReflectionScriptName "instance_halls_of_reflection"
|
#define HallsOfReflectionScriptName "instance_halls_of_reflection"
|
||||||
|
|
||||||
enum Data
|
enum Data
|
||||||
|
|||||||
@@ -126,7 +126,10 @@ public:
|
|||||||
|
|
||||||
struct instance_halls_of_reflection_InstanceMapScript : public InstanceScript
|
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;
|
uint32 EncounterMask;
|
||||||
TeamId TeamIdInInstance;
|
TeamId TeamIdInInstance;
|
||||||
@@ -705,42 +708,15 @@ public:
|
|||||||
return ObjectGuid::Empty;
|
return ObjectGuid::Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
void ReadSaveDataMore(std::istringstream& data) override
|
||||||
{
|
{
|
||||||
OUT_SAVE_INST_DATA;
|
data >> EncounterMask;
|
||||||
|
BatteredHiltStatus = (EncounterMask & (1 << DATA_BATTERED_HILT)) ? BHSF_FINISHED : BHSF_NONE;
|
||||||
std::ostringstream saveStream;
|
|
||||||
saveStream << "H R " << EncounterMask;
|
|
||||||
|
|
||||||
OUT_SAVE_INST_DATA_COMPLETE;
|
|
||||||
return saveStream.str();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Load(const char* in) override
|
void WriteSaveDataMore(std::ostringstream& data) override
|
||||||
{
|
{
|
||||||
if (!in)
|
data << EncounterMask;
|
||||||
{
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnUnitDeath(Unit* unit) override
|
void OnUnitDeath(Unit* unit) override
|
||||||
|
|||||||
@@ -27,7 +27,10 @@ public:
|
|||||||
|
|
||||||
struct instance_pit_of_saron_InstanceScript : public InstanceScript
|
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];
|
uint32 m_auiEncounter[MAX_ENCOUNTER];
|
||||||
TeamId teamIdInInstance;
|
TeamId teamIdInInstance;
|
||||||
@@ -378,48 +381,20 @@ public:
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
void ReadSaveDataMore(std::istringstream& data) override
|
||||||
{
|
{
|
||||||
OUT_SAVE_INST_DATA;
|
data >> m_auiEncounter[0];
|
||||||
|
data >> m_auiEncounter[1];
|
||||||
std::ostringstream saveStream;
|
data >> m_auiEncounter[2];
|
||||||
saveStream << "P S " << m_auiEncounter[0] << ' ' << m_auiEncounter[1] << ' ' << m_auiEncounter[2] << ' ' << InstanceProgress;
|
data >> InstanceProgress;
|
||||||
str_data = saveStream.str();
|
|
||||||
|
|
||||||
OUT_SAVE_INST_DATA_COMPLETE;
|
|
||||||
return str_data;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Load(const char* in) override
|
void WriteSaveDataMore(std::ostringstream& data) override
|
||||||
{
|
{
|
||||||
if (!in)
|
data << m_auiEncounter[0] << ' '
|
||||||
{
|
<< m_auiEncounter[1] << ' '
|
||||||
OUT_LOAD_INST_DATA_FAIL;
|
<< m_auiEncounter[2] << ' '
|
||||||
return;
|
<< InstanceProgress;
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,8 @@
|
|||||||
#include "Chat.h"
|
#include "Chat.h"
|
||||||
#include "CreatureAIImpl.h"
|
#include "CreatureAIImpl.h"
|
||||||
|
|
||||||
|
#define DataHeader "POS"
|
||||||
|
|
||||||
#define PitOfSaronScriptName "instance_pit_of_saron"
|
#define PitOfSaronScriptName "instance_pit_of_saron"
|
||||||
|
|
||||||
enum DataTypes
|
enum DataTypes
|
||||||
|
|||||||
@@ -21,6 +21,8 @@
|
|||||||
#include "CreatureAIImpl.h"
|
#include "CreatureAIImpl.h"
|
||||||
#include "SpellScript.h"
|
#include "SpellScript.h"
|
||||||
|
|
||||||
|
#define DataHeader "GD"
|
||||||
|
|
||||||
#define GundrakScriptName "instance_gundrak"
|
#define GundrakScriptName "instance_gundrak"
|
||||||
|
|
||||||
enum Data
|
enum Data
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ public:
|
|||||||
{
|
{
|
||||||
instance_gundrak_InstanceMapScript(Map* map) : InstanceScript(map)
|
instance_gundrak_InstanceMapScript(Map* map) : InstanceScript(map)
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
}
|
}
|
||||||
|
|
||||||
ObjectGuid _sladRanAltarGUID;
|
ObjectGuid _sladRanAltarGUID;
|
||||||
@@ -197,34 +198,6 @@ public:
|
|||||||
return true;
|
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
|
void Update(uint32 diff) override
|
||||||
{
|
{
|
||||||
if (!_activateTimer)
|
if (!_activateTimer)
|
||||||
|
|||||||
@@ -32,6 +32,8 @@
|
|||||||
#include "SpellMgr.h"
|
#include "SpellMgr.h"
|
||||||
#include "SpellScript.h"
|
#include "SpellScript.h"
|
||||||
|
|
||||||
|
#define DataHeader "IC"
|
||||||
|
|
||||||
#define ICCScriptName "instance_icecrown_citadel"
|
#define ICCScriptName "instance_icecrown_citadel"
|
||||||
|
|
||||||
uint32 const WeeklyNPCs = 9;
|
uint32 const WeeklyNPCs = 9;
|
||||||
|
|||||||
@@ -197,6 +197,7 @@ public:
|
|||||||
LichKingRandomWhisperTimer = 120 * IN_MILLISECONDS;
|
LichKingRandomWhisperTimer = 120 * IN_MILLISECONDS;
|
||||||
DarkwhisperElevatorTimer = 3000;
|
DarkwhisperElevatorTimer = 3000;
|
||||||
|
|
||||||
|
SetHeaders(DataHeader);
|
||||||
SetBossNumber(MAX_ENCOUNTERS);
|
SetBossNumber(MAX_ENCOUNTERS);
|
||||||
LoadBossBoundaries(boundaries);
|
LoadBossBoundaries(boundaries);
|
||||||
LoadDoorData(doorData);
|
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;
|
uint32 temp = 0;
|
||||||
saveStream << "I C " << GetBossSaveData() << HeroicAttempts << ' '
|
data >> temp;
|
||||||
<< ColdflameJetsState << ' ' << BloodQuickeningState << ' ' << BloodQuickeningMinutes << ' ' << WeeklyQuestId10 << ' ' << PutricideEventProgress << ' '
|
|
||||||
<< uint32(LichKingHeroicAvailable ? 1 : 0) << ' ' << BloodPrinceTrashCount << ' ' << uint32(IsBuffAvailable ? 1 : 0);
|
|
||||||
|
|
||||||
OUT_SAVE_INST_DATA_COMPLETE;
|
if (temp == IN_PROGRESS)
|
||||||
return saveStream.str();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Load(const char* str) override
|
|
||||||
{
|
|
||||||
if (!str)
|
|
||||||
{
|
{
|
||||||
OUT_LOAD_INST_DATA_FAIL;
|
ColdflameJetsState = NOT_STARTED;
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
else
|
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
|
void Update(uint32 diff) override
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ public:
|
|||||||
{
|
{
|
||||||
explicit instance_naxxramas_InstanceMapScript(Map* pMap) : InstanceScript(pMap)
|
explicit instance_naxxramas_InstanceMapScript(Map* pMap) : InstanceScript(pMap)
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
SetBossNumber(MAX_ENCOUNTERS);
|
SetBossNumber(MAX_ENCOUNTERS);
|
||||||
for (auto& i : HeiganEruption)
|
for (auto& i : HeiganEruption)
|
||||||
i.clear();
|
i.clear();
|
||||||
@@ -1119,55 +1120,14 @@ public:
|
|||||||
return ObjectGuid::Empty;
|
return ObjectGuid::Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
void ReadSaveDataMore(std::istringstream& data) override
|
||||||
{
|
{
|
||||||
OUT_SAVE_INST_DATA;
|
data >> immortalAchievement;
|
||||||
|
|
||||||
std::ostringstream saveStream;
|
|
||||||
saveStream << "N X X " << GetBossSaveData() << ' ' << immortalAchievement;
|
|
||||||
|
|
||||||
OUT_SAVE_INST_DATA_COMPLETE;
|
|
||||||
return saveStream.str();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Load(const char* in) override
|
void WriteSaveDataMore(std::ostringstream& data) override
|
||||||
{
|
{
|
||||||
if (!in)
|
data << immortalAchievement;
|
||||||
{
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -21,6 +21,8 @@
|
|||||||
#include "CreatureAIImpl.h"
|
#include "CreatureAIImpl.h"
|
||||||
#include "SpellScript.h"
|
#include "SpellScript.h"
|
||||||
|
|
||||||
|
#define DataHeader "NAX"
|
||||||
|
|
||||||
#define NaxxramasScriptName "instance_naxxramas"
|
#define NaxxramasScriptName "instance_naxxramas"
|
||||||
|
|
||||||
enum Encouters
|
enum Encouters
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
#include "Chat.h"
|
#include "Chat.h"
|
||||||
#include "CreatureAIImpl.h"
|
#include "CreatureAIImpl.h"
|
||||||
|
|
||||||
|
#define DataHeader "EOE"
|
||||||
#define EyeOfEternityScriptName "instance_eye_of_eternity"
|
#define EyeOfEternityScriptName "instance_eye_of_eternity"
|
||||||
|
|
||||||
enum Objects
|
enum Objects
|
||||||
|
|||||||
@@ -208,51 +208,27 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
void ReadSaveDataMore(std::istringstream& data) override
|
||||||
{
|
{
|
||||||
OUT_SAVE_INST_DATA;
|
data >> EncounterStatus;
|
||||||
std::ostringstream saveStream;
|
|
||||||
saveStream << "E E " << EncounterStatus;
|
switch (EncounterStatus)
|
||||||
str_data = saveStream.str();
|
{
|
||||||
OUT_SAVE_INST_DATA_COMPLETE;
|
case IN_PROGRESS:
|
||||||
return str_data;
|
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 )
|
data << EncounterStatus;
|
||||||
{
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CheckAchievementCriteriaMeet(uint32 criteria_id, Player const* source, Unit const* /*target*/, uint32 /*miscvalue1*/) override
|
bool CheckAchievementCriteriaMeet(uint32 criteria_id, Player const* source, Unit const* /*target*/, uint32 /*miscvalue1*/) override
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ public:
|
|||||||
|
|
||||||
void Initialize() override
|
void Initialize() override
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
SetBossNumber(MAX_ENCOUNTERS);
|
SetBossNumber(MAX_ENCOUNTERS);
|
||||||
LoadDoorData(doorData);
|
LoadDoorData(doorData);
|
||||||
}
|
}
|
||||||
@@ -151,34 +152,6 @@ public:
|
|||||||
(*i)->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
|
(*i)->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
|
||||||
return true;
|
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 "SpellAuras.h"
|
||||||
#include "SpellScript.h"
|
#include "SpellScript.h"
|
||||||
|
|
||||||
|
#define DataHeader "NEX"
|
||||||
|
|
||||||
#define NexusScriptName "instance_nexus"
|
#define NexusScriptName "instance_nexus"
|
||||||
|
|
||||||
enum eTypes
|
enum eTypes
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ public:
|
|||||||
|
|
||||||
void Initialize() override
|
void Initialize() override
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
CentrifugeCount = 0;
|
CentrifugeCount = 0;
|
||||||
bAmberVoid = false;
|
bAmberVoid = false;
|
||||||
bEmeraldVoid = false;
|
bEmeraldVoid = false;
|
||||||
@@ -238,43 +239,22 @@ public:
|
|||||||
return ObjectGuid::Empty;
|
return ObjectGuid::Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
void ReadSaveDataMore(std::istringstream& data) override
|
||||||
{
|
{
|
||||||
OUT_SAVE_INST_DATA;
|
data >> m_auiEncounter[0];
|
||||||
|
data >> m_auiEncounter[1];
|
||||||
std::ostringstream saveStream;
|
data >> m_auiEncounter[2];
|
||||||
saveStream << "T O " << m_auiEncounter[0] << ' ' << m_auiEncounter[1] << ' ' << m_auiEncounter[2] << ' ' << m_auiEncounter[3] << ' ' << CentrifugeCount;
|
data >> m_auiEncounter[3];
|
||||||
|
data >> CentrifugeCount;
|
||||||
OUT_SAVE_INST_DATA_COMPLETE;
|
|
||||||
return saveStream.str();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Load(const char* in) override
|
void WriteSaveDataMore(std::ostringstream& data) override
|
||||||
{
|
{
|
||||||
if( !in )
|
data << m_auiEncounter[0] << ' '
|
||||||
{
|
<< m_auiEncounter[1] << ' '
|
||||||
OUT_LOAD_INST_DATA_FAIL;
|
<< m_auiEncounter[2] << ' '
|
||||||
return;
|
<< m_auiEncounter[3] << ' '
|
||||||
}
|
<< CentrifugeCount;
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CheckAchievementCriteriaMeet(uint32 criteria_id, Player const* source, Unit const* /*target*/, uint32 /*miscvalue1*/) override
|
bool CheckAchievementCriteriaMeet(uint32 criteria_id, Player const* source, Unit const* /*target*/, uint32 /*miscvalue1*/) override
|
||||||
|
|||||||
@@ -23,6 +23,8 @@
|
|||||||
#include "SpellAuras.h"
|
#include "SpellAuras.h"
|
||||||
#include "SpellScript.h"
|
#include "SpellScript.h"
|
||||||
|
|
||||||
|
#define DataHeader "OC"
|
||||||
|
|
||||||
#define OculusScriptName "instance_oculus"
|
#define OculusScriptName "instance_oculus"
|
||||||
|
|
||||||
Position const VerdisaPOS = { 949.056f, 1032.97f, 359.967f, 1.035795f };
|
Position const VerdisaPOS = { 949.056f, 1032.97f, 359.967f, 1.035795f };
|
||||||
|
|||||||
@@ -20,6 +20,8 @@
|
|||||||
|
|
||||||
#include "CreatureAIImpl.h"
|
#include "CreatureAIImpl.h"
|
||||||
|
|
||||||
|
#define DataHeader "HOL"
|
||||||
|
|
||||||
#define HallsOfLightningScriptName "instance_halls_of_lightning"
|
#define HallsOfLightningScriptName "instance_halls_of_lightning"
|
||||||
|
|
||||||
enum HoLEvents
|
enum HoLEvents
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ public:
|
|||||||
|
|
||||||
void Initialize() override
|
void Initialize() override
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
|
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
|
||||||
|
|
||||||
volkhanAchievement = false;
|
volkhanAchievement = false;
|
||||||
@@ -172,50 +173,20 @@ public:
|
|||||||
SaveToDB();
|
SaveToDB();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
void ReadSaveDataMore(std::istringstream& data) override
|
||||||
{
|
{
|
||||||
OUT_SAVE_INST_DATA;
|
data >> m_auiEncounter[0];
|
||||||
|
data >> m_auiEncounter[1];
|
||||||
std::ostringstream saveStream;
|
data >> m_auiEncounter[2];
|
||||||
saveStream << "H L " << m_auiEncounter[0] << ' ' << m_auiEncounter[1] << ' '
|
data >> m_auiEncounter[3];
|
||||||
<< m_auiEncounter[2] << ' ' << m_auiEncounter[3] << ' ' << m_auiEncounter[4];
|
|
||||||
|
|
||||||
OUT_SAVE_INST_DATA_COMPLETE;
|
|
||||||
return saveStream.str();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Load(const char* in) override
|
void WriteSaveDataMore(std::ostringstream& data) override
|
||||||
{
|
{
|
||||||
if (!in)
|
data << m_auiEncounter[0] << ' '
|
||||||
{
|
<< m_auiEncounter[1] << ' '
|
||||||
OUT_LOAD_INST_DATA_FAIL;
|
<< m_auiEncounter[2] << ' '
|
||||||
return;
|
<< m_auiEncounter[3] << ' ';
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32 GetData(uint32 uiType) const override
|
uint32 GetData(uint32 uiType) const override
|
||||||
|
|||||||
@@ -20,6 +20,8 @@
|
|||||||
|
|
||||||
#include "CreatureAIImpl.h"
|
#include "CreatureAIImpl.h"
|
||||||
|
|
||||||
|
#define DataHeader "HOS"
|
||||||
|
|
||||||
#define HallsOfStoneScriptName "instance_halls_of_stone"
|
#define HallsOfStoneScriptName "instance_halls_of_stone"
|
||||||
|
|
||||||
enum Encounter
|
enum Encounter
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ public:
|
|||||||
|
|
||||||
void Initialize() override
|
void Initialize() override
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
memset(&Encounter, 0, sizeof(Encounter));
|
memset(&Encounter, 0, sizeof(Encounter));
|
||||||
|
|
||||||
brannAchievement = false;
|
brannAchievement = false;
|
||||||
@@ -242,42 +243,22 @@ public:
|
|||||||
SaveToDB();
|
SaveToDB();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
void ReadSaveDataMore(std::istringstream& data) override
|
||||||
{
|
{
|
||||||
OUT_SAVE_INST_DATA;
|
data >> Encounter[0];
|
||||||
|
data >> Encounter[1];
|
||||||
std::ostringstream saveStream;
|
data >> Encounter[2];
|
||||||
saveStream << "H O S " << Encounter[0] << ' ' << Encounter[1] << ' ' << Encounter[2] << ' ' << Encounter[3] << ' ' << Encounter[4];
|
data >> Encounter[3];
|
||||||
|
data >> Encounter[4];
|
||||||
OUT_SAVE_INST_DATA_COMPLETE;
|
|
||||||
return saveStream.str();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Load(const char* strIn) override
|
void WriteSaveDataMore(std::ostringstream& data) override
|
||||||
{
|
{
|
||||||
if (!strIn)
|
data << Encounter[0] << ' '
|
||||||
{
|
<< Encounter[1] << ' '
|
||||||
OUT_LOAD_INST_DATA_FAIL;
|
<< Encounter[2] << ' '
|
||||||
return;
|
<< Encounter[3] << ' '
|
||||||
}
|
<< Encounter[4] << ' ';
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ public:
|
|||||||
instance_ulduar_InstanceMapScript(Map* pMap) : InstanceScript(pMap)
|
instance_ulduar_InstanceMapScript(Map* pMap) : InstanceScript(pMap)
|
||||||
{
|
{
|
||||||
Initialize();
|
Initialize();
|
||||||
|
SetHeaders(DataHeader);
|
||||||
// 0: 10 man difficulty
|
// 0: 10 man difficulty
|
||||||
// 1: 25 man difficulty
|
// 1: 25 man difficulty
|
||||||
m_difficulty = (pMap->Is25ManRaid() ? 0 : 1);
|
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;
|
if (m_algalonTimer == TIMER_ALGALON_SUMMONED)
|
||||||
saveStream << "U U " << m_auiEncounter[0] << ' ' << m_auiEncounter[1] << ' ' << m_auiEncounter[2] << ' ' << m_auiEncounter[3] << ' '
|
m_algalonTimer = TIMER_ALGALON_TO_SUMMON;
|
||||||
<< 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;
|
|
||||||
|
|
||||||
OUT_SAVE_INST_DATA_COMPLETE;
|
if (m_algalonTimer && m_algalonTimer <= 60 && GetData(TYPE_ALGALON) != DONE)
|
||||||
return saveStream.str();
|
{
|
||||||
|
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)
|
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] << ' '
|
||||||
OUT_LOAD_INST_DATA_FAIL;
|
<< m_auiEncounter[8] << ' ' << m_auiEncounter[9] << ' ' << m_auiEncounter[10] << ' ' << m_auiEncounter[11] << ' '
|
||||||
return;
|
<< m_auiEncounter[12] << ' ' << m_auiEncounter[13] << ' ' << m_auiEncounter[14] << ' ' << m_conspeedatoryAttempt << ' '
|
||||||
}
|
<< m_unbrokenAchievement << ' ' << m_algalonTimer << ' ' << C_of_Ulduar_MASK << ' ' << m_mageBarrier;
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Update(uint32 diff) override
|
void Update(uint32 diff) override
|
||||||
|
|||||||
@@ -24,6 +24,8 @@
|
|||||||
#include "GridNotifiers.h"
|
#include "GridNotifiers.h"
|
||||||
#include "GridNotifiersImpl.h"
|
#include "GridNotifiersImpl.h"
|
||||||
|
|
||||||
|
#define DataHeader "UU"
|
||||||
|
|
||||||
#define UlduarScriptName "instance_ulduar"
|
#define UlduarScriptName "instance_ulduar"
|
||||||
|
|
||||||
enum UlduarEncounters
|
enum UlduarEncounters
|
||||||
|
|||||||
@@ -318,49 +318,17 @@ public:
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
void ReadSaveDataMore(std::istringstream& data) override
|
||||||
{
|
{
|
||||||
OUT_SAVE_INST_DATA;
|
data >> m_auiEncounter[0];
|
||||||
|
data >> m_auiEncounter[1];
|
||||||
std::ostringstream saveStream;
|
data >> m_auiEncounter[2];
|
||||||
saveStream << "U K " << m_auiEncounter[0] << ' ' << m_auiEncounter[1] << ' ' << m_auiEncounter[2] << ' ' << ForgeEventMask;
|
data >> ForgeEventMask;
|
||||||
|
|
||||||
str_data = saveStream.str();
|
|
||||||
|
|
||||||
OUT_SAVE_INST_DATA_COMPLETE;
|
|
||||||
return str_data;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Load(const char* in) override
|
void WriteSaveDataMore(std::ostringstream& data) override
|
||||||
{
|
{
|
||||||
if (!in)
|
data << m_auiEncounter[0] << ' ' << m_auiEncounter[1] << ' ' << m_auiEncounter[2] << ' ' << ForgeEventMask;
|
||||||
{
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CheckAchievementCriteriaMeet(uint32 criteria_id, Player const* /*source*/, Unit const* /*target*/, uint32 /*miscvalue1*/) override
|
bool CheckAchievementCriteriaMeet(uint32 criteria_id, Player const* /*source*/, Unit const* /*target*/, uint32 /*miscvalue1*/) override
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ public:
|
|||||||
|
|
||||||
void Initialize() override
|
void Initialize() override
|
||||||
{
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
SkadiHits = 0;
|
SkadiHits = 0;
|
||||||
SkadiInRange = 0;
|
SkadiInRange = 0;
|
||||||
|
|
||||||
@@ -192,43 +193,20 @@ public:
|
|||||||
OUT_SAVE_INST_DATA_COMPLETE;
|
OUT_SAVE_INST_DATA_COMPLETE;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetSaveData() override
|
void ReadSaveDataMore(std::istringstream& data) override
|
||||||
{
|
{
|
||||||
std::ostringstream saveStream;
|
data >> Encounters[0];
|
||||||
saveStream << "U P " << Encounters[0] << ' ' << Encounters[1] << ' ' << Encounters[2] << ' ' << Encounters[3];
|
data >> Encounters[1];
|
||||||
return saveStream.str();
|
data >> Encounters[2];
|
||||||
|
data >> Encounters[3];
|
||||||
}
|
}
|
||||||
|
|
||||||
void Load(const char* in) override
|
void WriteSaveDataMore(std::ostringstream& data) override
|
||||||
{
|
{
|
||||||
if (!in)
|
data << Encounters[0] << ' '
|
||||||
{
|
<< Encounters[1] << ' '
|
||||||
OUT_LOAD_INST_DATA_FAIL;
|
<< Encounters[2] << ' '
|
||||||
return;
|
<< Encounters[3];
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32 GetData(uint32 type) const override
|
uint32 GetData(uint32 type) const override
|
||||||
|
|||||||
@@ -21,6 +21,8 @@
|
|||||||
#include "CreatureAIImpl.h"
|
#include "CreatureAIImpl.h"
|
||||||
#include "Opcodes.h"
|
#include "Opcodes.h"
|
||||||
|
|
||||||
|
#define DataHeader "UP"
|
||||||
|
|
||||||
#define UtgardePinnacleScriptName "instance_utgarde_pinnacle"
|
#define UtgardePinnacleScriptName "instance_utgarde_pinnacle"
|
||||||
|
|
||||||
enum Data
|
enum Data
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user