Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
instance_gruuls_lair.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"
8#include "gruuls_lair.h"
9
16
25
27{
28 public:
30
32 {
41
43 {
44 switch (creature->GetEntry())
45 {
46 case NPC_MAULGAR:
47 MaulgarGUID = creature->GetGUID();
48 // no break;
53 AddMinion(creature, true);
54 break;
55 default:
56 break;
57 }
58 }
59
61 {
62 switch (creature->GetEntry())
63 {
64 case NPC_MAULGAR:
69 AddMinion(creature, false);
70 break;
71 default:
72 break;
73 }
74 }
75
77 {
78 switch (go->GetEntry())
79 {
80 case GO_MAULGAR_DOOR:
81 case GO_GRUUL_DOOR:
82 AddDoor(go, true);
83 break;
84 default:
85 break;
86 }
87 }
88
90 {
91 switch (go->GetEntry())
92 {
93 case GO_MAULGAR_DOOR:
94 case GO_GRUUL_DOOR:
95 AddDoor(go, false);
96 break;
97 default:
98 break;
99 }
100 }
101
103 {
104 switch (type)
105 {
106 case DATA_MAULGAR:
107 return MaulgarGUID;
108 default:
109 break;
110 }
111 return 0;
112 }
113
114 std::string GetSaveData() OVERRIDE
115 {
117
118 std::ostringstream saveStream;
119 saveStream << "G L " << GetBossSaveData();
120
122 return saveStream.str();
123 }
124
125 void Load(char const* str) OVERRIDE
126 {
127 if (!str)
128 {
130 return;
131 }
132
134
135 char dataHead1, dataHead2;
136
137 std::istringstream loadStream(str);
138 loadStream >> dataHead1 >> dataHead2;
139
140 if (dataHead1 == 'G' && dataHead2 == 'L')
141 {
142 for (uint32 i = 0; i < EncounterCount; ++i)
143 {
144 uint32 tmpState;
145 loadStream >> tmpState;
146 if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
147 tmpState = NOT_STARTED;
148 SetBossState(i, EncounterState(tmpState));
149 }
150 }
151 else
153
155 }
156
157 protected:
159 };
160
165};
166
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
@ 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 AddMinion(Creature *minion, bool add)
void AddDoor(GameObject *door, bool add)
void LoadMinionData(MinionData const *data)
void LoadDoorData(DoorData const *data)
Definition Map.h:238
InstanceScript * GetInstanceScript(InstanceMap *map) const OVERRIDE
#define GLScriptName
Definition gruuls_lair.h:9
@ GO_GRUUL_DOOR
Definition gruuls_lair.h:32
@ GO_MAULGAR_DOOR
Definition gruuls_lair.h:31
@ NPC_MAULGAR
Definition gruuls_lair.h:22
@ NPC_KROSH_FIREHAND
Definition gruuls_lair.h:23
@ NPC_KIGGLER_THE_CRAZED
Definition gruuls_lair.h:25
@ NPC_OLM_THE_SUMMONER
Definition gruuls_lair.h:24
@ NPC_BLINDEYE_THE_SEER
Definition gruuls_lair.h:26
@ DATA_GRUUL
Definition gruuls_lair.h:17
@ DATA_MAULGAR
Definition gruuls_lair.h:16
DoorData const doorData[]
MinionData const minionData[]
DoorData const doorData[]
void AddSC_instance_gruuls_lair()
MinionData const minionData[]