Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
instance_halls_of_lightning.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#include "ScriptMgr.h"
7#include "InstanceScript.h"
9
17
19{
20 public:
22
24 {
37
39 {
40 switch (creature->GetEntry())
41 {
42 case NPC_BJARNGRIM:
43 GeneralBjarngrimGUID = creature->GetGUID();
44 break;
45 case NPC_VOLKHAN:
46 VolkhanGUID = creature->GetGUID();
47 break;
48 case NPC_IONAR:
49 IonarGUID = creature->GetGUID();
50 break;
51 case NPC_LOKEN:
52 LokenGUID = creature->GetGUID();
53 break;
54 default:
55 break;
56 }
57 }
58
60 {
61 switch (go->GetEntry())
62 {
63 case GO_VOLKHAN_DOOR:
64 case GO_IONAR_DOOR:
65 case GO_LOKEN_DOOR:
66 AddDoor(go, true);
67 break;
68 case GO_LOKEN_THRONE:
69 LokenGlobeGUID = go->GetGUID();
70 break;
71 default:
72 break;
73 }
74 }
75
77 {
78 switch (go->GetEntry())
79 {
80 case GO_VOLKHAN_DOOR:
81 case GO_IONAR_DOOR:
82 case GO_LOKEN_DOOR:
83 AddDoor(go, false);
84 break;
85 default:
86 break;
87 }
88 }
89
91 {
92 if (!InstanceScript::SetBossState(type, state))
93 return false;
94
95 switch (type)
96 {
97 case DATA_LOKEN:
98 if (state == DONE)
99 if (GameObject* globe = instance->GetGameObject(LokenGlobeGUID))
100 globe->SendCustomAnim(0);
101 break;
102 default:
103 break;
104 }
105
106 return true;
107 }
108
110 {
111 switch (type)
112 {
113 case DATA_BJARNGRIM:
115 case DATA_VOLKHAN:
116 return VolkhanGUID;
117 case DATA_IONAR:
118 return IonarGUID;
119 case DATA_LOKEN:
120 return LokenGUID;
121 default:
122 break;
123 }
124 return 0;
125 }
126
127 std::string GetSaveData() OVERRIDE
128 {
130
131 std::ostringstream saveStream;
132 saveStream << "H L " << GetBossSaveData();
133
135 return saveStream.str();
136 }
137
138 void Load(const char* str) OVERRIDE
139 {
140 if (!str)
141 {
143 return;
144 }
145
147
148 char dataHead1, dataHead2;
149
150 std::istringstream loadStream(str);
151 loadStream >> dataHead1 >> dataHead2;
152
153 if (dataHead1 == 'H' && dataHead2 == 'L')
154 {
155 for (uint32 i = 0; i < EncounterCount; ++i)
156 {
157 uint32 tmpState;
158 loadStream >> tmpState;
159 if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
160 tmpState = NOT_STARTED;
161 SetBossState(i, EncounterState(tmpState));
162 }
163 }
164 else
166
168 }
169
170 protected:
175
177 };
178
183};
184
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
EncounterState
@ IN_PROGRESS
@ DONE
@ SPECIAL
@ 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)
@ DOOR_TYPE_ROOM
@ DOOR_TYPE_PASSAGE
@ BOUNDARY_NONE
uint32 const EncounterCount
InstanceMapScript(const char *name, uint32 mapId)
InstanceScript(Map *map)
void SetBossNumber(uint32 number)
virtual bool SetBossState(uint32 id, EncounterState state)
std::string GetBossSaveData()
void AddDoor(GameObject *door, bool add)
void LoadDoorData(DoorData const *data)
Definition Map.h:238
InstanceScript * GetInstanceScript(InstanceMap *map) const OVERRIDE
@ NPC_BJARNGRIM
@ NPC_LOKEN
@ NPC_IONAR
@ NPC_VOLKHAN
#define HoLScriptName
@ GO_LOKEN_THRONE
@ GO_VOLKHAN_DOOR
@ GO_LOKEN_DOOR
@ GO_IONAR_DOOR
@ DATA_IONAR
@ DATA_VOLKHAN
@ DATA_BJARNGRIM
@ DATA_LOKEN
DoorData const doorData[]
DoorData const doorData[]
void AddSC_instance_halls_of_lightning()