Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
instance_wailing_caverns.cpp
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6/* ScriptData
7SDName: Instance_Wailing_Caverns
8SD%Complete: 99
9SDComment: Everything seems to work, still need some checking
10SDCategory: Wailing Caverns
11EndScriptData */
12
13#include "ScriptMgr.h"
14#include "InstanceScript.h"
15#include "wailing_caverns.h"
16
17#define MAX_ENCOUNTER 9
18
20{
21public:
22 instance_wailing_caverns() : InstanceMapScript("instance_wailing_caverns", 43) { }
23
28
30 {
32
34
35 bool yelled;
37
39 {
40 memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
41
42 yelled = false;
43 NaralexGUID = 0;
44 }
45
47 {
48 if (creature->GetEntry() == DATA_NARALEX)
49 NaralexGUID = creature->GetGUID();
50 }
51
52 void SetData(uint32 type, uint32 data) OVERRIDE
53 {
54 switch (type)
55 {
56 case TYPE_LORD_COBRAHN: m_auiEncounter[0] = data;break;
57 case TYPE_LORD_PYTHAS: m_auiEncounter[1] = data;break;
58 case TYPE_LADY_ANACONDRA: m_auiEncounter[2] = data;break;
59 case TYPE_LORD_SERPENTIS: m_auiEncounter[3] = data;break;
60 case TYPE_NARALEX_EVENT: m_auiEncounter[4] = data;break;
61 case TYPE_NARALEX_PART1: m_auiEncounter[5] = data;break;
62 case TYPE_NARALEX_PART2: m_auiEncounter[6] = data;break;
63 case TYPE_NARALEX_PART3: m_auiEncounter[7] = data;break;
64 case TYPE_MUTANUS_THE_DEVOURER: m_auiEncounter[8] = data;break;
65 case TYPE_NARALEX_YELLED: yelled = true; break;
66 }
67 if (data == DONE)SaveToDB();
68 }
69
71 {
72 switch (type)
73 {
74 case TYPE_LORD_COBRAHN: return m_auiEncounter[0];
75 case TYPE_LORD_PYTHAS: return m_auiEncounter[1];
76 case TYPE_LADY_ANACONDRA: return m_auiEncounter[2];
77 case TYPE_LORD_SERPENTIS: return m_auiEncounter[3];
78 case TYPE_NARALEX_EVENT: return m_auiEncounter[4];
79 case TYPE_NARALEX_PART1: return m_auiEncounter[5];
80 case TYPE_NARALEX_PART2: return m_auiEncounter[6];
81 case TYPE_NARALEX_PART3: return m_auiEncounter[7];
83 case TYPE_NARALEX_YELLED: return yelled;
84 }
85 return 0;
86 }
87
89 {
90 if (data == DATA_NARALEX)return NaralexGUID;
91 return 0;
92 }
93
94 std::string GetSaveData() OVERRIDE
95 {
97
98 std::ostringstream saveStream;
99 saveStream << m_auiEncounter[0] << ' ' << m_auiEncounter[1] << ' ' << m_auiEncounter[2] << ' '
100 << m_auiEncounter[3] << ' ' << m_auiEncounter[4] << ' ' << m_auiEncounter[5] << ' '
101 << m_auiEncounter[6] << ' ' << m_auiEncounter[7] << ' ' << m_auiEncounter[8];
102
104 return saveStream.str();
105 }
106
107 void Load(const char* in) OVERRIDE
108 {
109 if (!in)
110 {
112 return;
113 }
114
116
117 std::istringstream loadStream(in);
118 loadStream >> m_auiEncounter[0] >> m_auiEncounter[1] >> m_auiEncounter[2] >> m_auiEncounter[3]
120
121 for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
122 if (m_auiEncounter[i] != DONE)
124
126 }
127
128 };
129
130};
131
std::uint8_t uint8
Definition Define.h:79
std::uint32_t uint32
Definition Define.h:77
#define OVERRIDE
Definition Define.h:60
std::uint64_t uint64
Definition Define.h:76
#define OUT_LOAD_INST_DATA_FAIL
@ DONE
@ NOT_STARTED
#define OUT_SAVE_INST_DATA_COMPLETE
#define OUT_LOAD_INST_DATA_COMPLETE
#define OUT_SAVE_INST_DATA
#define OUT_LOAD_INST_DATA(a)
InstanceMapScript(const char *name, uint32 mapId)
InstanceScript(Map *map)
Definition Map.h:238
InstanceScript * GetInstanceScript(InstanceMap *map) const OVERRIDE
void AddSC_instance_wailing_caverns()
#define MAX_ENCOUNTER
@ TYPE_LADY_ANACONDRA
@ TYPE_NARALEX_PART1
@ DATA_NARALEX
@ TYPE_NARALEX_EVENT
@ TYPE_LORD_SERPENTIS
@ TYPE_NARALEX_PART2
@ TYPE_NARALEX_PART3
@ TYPE_MUTANUS_THE_DEVOURER
@ TYPE_LORD_COBRAHN
@ TYPE_LORD_PYTHAS
@ TYPE_NARALEX_YELLED