Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
instance_shadow_labyrinth.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 "ScriptedCreature.h"
9#include "shadow_labyrinth.h"
10
17
19{
20 public:
22
24 {
34
36 {
37 switch (creature->GetEntry())
38 {
40 AmbassadorHellmawGUID = creature->GetGUID();
41 break;
43 GrandmasterVorpilGUID = creature->GetGUID();
44 break;
46 if (creature->IsAlive())
47 {
49 if (Creature* hellmaw = instance->GetCreature(AmbassadorHellmawGUID))
50 hellmaw->AI()->DoAction(ACTION_AMBASSADOR_HELLMAW_BANISH);
51 }
52 break;
53 default:
54 break;
55 }
56 }
57
59 {
60 switch (go->GetEntry())
61 {
64 AddDoor(go, true);
65 break;
66 default:
67 break;
68 }
69 }
70
72 {
73 switch (go->GetEntry())
74 {
77 AddDoor(go, false);
78 break;
79 default:
80 break;
81 }
82 }
83
85 {
86 Creature* creature = unit->ToCreature();
87 if (!creature)
88 return;
89
90 if (creature->GetEntry() == NPC_FEL_OVERSEER)
91 {
94
96 if (Creature* hellmaw = instance->GetCreature(AmbassadorHellmawGUID))
97 hellmaw->AI()->DoAction(ACTION_AMBASSADOR_HELLMAW_INTRO);
98 }
99 }
100
102 {
103 switch (type)
104 {
106 return !FelOverseerCount ? 1 : 0;
107 default:
108 break;
109 }
110 return 0;
111 }
112
114 {
115 switch (type)
116 {
119 default:
120 break;
121 }
122 return 0;
123 }
124
125 std::string GetSaveData() OVERRIDE
126 {
128
129 std::ostringstream saveStream;
130 saveStream << "S L " << GetBossSaveData();
131
133 return saveStream.str();
134 }
135
136 void Load(char const* str) OVERRIDE
137 {
138 if (!str)
139 {
141 return;
142 }
143
145
146 char dataHead1, dataHead2;
147
148 std::istringstream loadStream(str);
149 loadStream >> dataHead1 >> dataHead2;
150
151 if (dataHead1 == 'S' && dataHead2 == 'L')
152 {
153 for (uint32 i = 0; i < EncounterCount; ++i)
154 {
155 uint32 tmpState;
156 loadStream >> tmpState;
157 if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
158 tmpState = NOT_STARTED;
159 SetBossState(i, EncounterState(tmpState));
160 }
161 }
162 else
164
166 }
167
168 protected:
172 };
173
178};
179
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 AddDoor(GameObject *door, bool add)
void LoadDoorData(DoorData const *data)
Definition Map.h:238
uint32 GetEntry() const
Definition Object.h:125
Creature * ToCreature()
Definition Object.h:207
Definition Unit.h:1367
InstanceScript * GetInstanceScript(InstanceMap *map) const OVERRIDE
DoorData const doorData[]
DoorData const doorData[]
void AddSC_instance_shadow_labyrinth()
@ ACTION_AMBASSADOR_HELLMAW_BANISH
@ ACTION_AMBASSADOR_HELLMAW_INTRO
@ GO_REFECTORY_DOOR
@ GO_SCREAMING_HALL_DOOR
@ NPC_GRANDMASTER_VORPIL
@ NPC_FEL_OVERSEER
@ NPC_AMBASSADOR_HELLMAW
#define SLScriptName
@ DATA_GRANDMASTER_VORPIL
@ DATA_FEL_OVERSEER
@ DATA_BLACKHEART_THE_INCITER