aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/EasternKingdoms/ShadowfangKeep
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2020-01-03 21:55:45 +0100
committerShauren <shauren.trinity@gmail.com>2022-10-04 00:19:38 +0200
commit76be303351ae398b7f9e69e4c472cb5b05fce45e (patch)
treeb7139aa70f1e9492fe8b94224fee28bbbe1ec34c /src/server/scripts/EasternKingdoms/ShadowfangKeep
parent9b924522d0549dd67b10e2cbdfc20297dd21e182 (diff)
Core/Scripts: Save instance data in JSON format
Diffstat (limited to 'src/server/scripts/EasternKingdoms/ShadowfangKeep')
-rw-r--r--src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp68
1 files changed, 12 insertions, 56 deletions
diff --git a/src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp b/src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp
index c299759aa16..162c4911671 100644
--- a/src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp
+++ b/src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp
@@ -30,7 +30,6 @@ EndScriptData */
#include "Map.h"
#include "ScriptedCreature.h"
#include "TemporarySummon.h"
-#include <sstream>
#define MAX_ENCOUNTER 4
@@ -84,15 +83,12 @@ public:
instance_shadowfang_keep_InstanceMapScript(InstanceMap* map) : InstanceScript(map)
{
SetHeaders(DataHeader);
- memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
+ SetBossNumber(MAX_ENCOUNTER);
uiPhase = 0;
uiTimer = 0;
}
- uint32 m_auiEncounter[MAX_ENCOUNTER];
- std::string str_data;
-
ObjectGuid uiAshGUID;
ObjectGuid uiAdaGUID;
ObjectGuid uiArchmageArugalGUID;
@@ -120,17 +116,17 @@ public:
{
case GO_COURTYARD_DOOR:
DoorCourtyardGUID = go->GetGUID();
- if (m_auiEncounter[0] == DONE)
+ if (GetBossState(0) == DONE)
HandleGameObject(ObjectGuid::Empty, true, go);
break;
case GO_SORCERER_DOOR:
DoorSorcererGUID = go->GetGUID();
- if (m_auiEncounter[2] == DONE)
+ if (GetBossState(2) == DONE)
HandleGameObject(ObjectGuid::Empty, true, go);
break;
case GO_ARUGAL_DOOR:
DoorArugalGUID = go->GetGUID();
- if (m_auiEncounter[3] == DONE)
+ if (GetBossState(3) == DONE)
HandleGameObject(ObjectGuid::Empty, true, go);
break;
}
@@ -155,12 +151,12 @@ public:
case TYPE_FREE_NPC:
if (data == DONE)
DoUseDoorOrButton(DoorCourtyardGUID);
- m_auiEncounter[0] = data;
+ SetBossState(0, EncounterState(data));
break;
case TYPE_RETHILGORE:
if (data == DONE)
DoSpeech();
- m_auiEncounter[1] = data;
+ SetBossState(1, EncounterState(data));
break;
case TYPE_FENRUS:
switch (data)
@@ -173,27 +169,14 @@ public:
DoUseDoorOrButton(DoorSorcererGUID);
break;
}
- m_auiEncounter[2] = data;
+ SetBossState(2, EncounterState(data));
break;
case TYPE_NANDOS:
if (data == DONE)
DoUseDoorOrButton(DoorArugalGUID);
- m_auiEncounter[3] = data;
+ SetBossState(3, EncounterState(data));
break;
}
-
- if (data == DONE)
- {
- OUT_SAVE_INST_DATA;
-
- std::ostringstream saveStream;
- saveStream << m_auiEncounter[0] << ' ' << m_auiEncounter[1] << ' ' << m_auiEncounter[2] << ' ' << m_auiEncounter[3];
-
- str_data = saveStream.str();
-
- SaveToDB();
- OUT_SAVE_INST_DATA_COMPLETE;
- }
}
uint32 GetData(uint32 type) const override
@@ -201,44 +184,17 @@ public:
switch (type)
{
case TYPE_FREE_NPC:
- return m_auiEncounter[0];
+ return GetBossState(0);
case TYPE_RETHILGORE:
- return m_auiEncounter[1];
+ return GetBossState(1);
case TYPE_FENRUS:
- return m_auiEncounter[2];
+ return GetBossState(2);
case TYPE_NANDOS:
- return m_auiEncounter[3];
+ return GetBossState(3);
}
return 0;
}
- std::string GetSaveData() override
- {
- return str_data;
- }
-
- void Load(char const* in) override
- {
- if (!in)
- {
- OUT_LOAD_INST_DATA_FAIL;
- return;
- }
-
- OUT_LOAD_INST_DATA(in);
-
- std::istringstream loadStream(in);
- loadStream >> m_auiEncounter[0] >> m_auiEncounter[1] >> m_auiEncounter[2] >> m_auiEncounter[3];
-
- for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
- {
- if (m_auiEncounter[i] == IN_PROGRESS)
- m_auiEncounter[i] = NOT_STARTED;
- }
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
-
void Update(uint32 uiDiff) override
{
if (GetData(TYPE_FENRUS) != DONE)