Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
instance_drak_tharon_keep.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 "ScriptedCreature.h"
8#include "InstanceScript.h"
9#include "drak_tharon_keep.h"
10
12{
13 public:
15
17 {
19 {
21
22 TrollgoreGUID = 0;
23 NovosGUID = 0;
24 KingDredGUID = 0;
25 TharonJaGUID = 0;
26
27 memset(TrollgoreInvaderSummonerGuids, 0, 3 * sizeof(uint64));
28 memset(NovosCrystalGUIDs, 0, 4 * sizeof(uint64));
29 memset(NovosSummonerGUIDs, 0, 4 * sizeof(uint64));
30 }
31
33 {
34 switch (creature->GetEntry())
35 {
36 case NPC_TROLLGORE:
37 TrollgoreGUID = creature->GetGUID();
38 break;
39 case NPC_NOVOS:
40 NovosGUID = creature->GetGUID();
41 break;
42 case NPC_KING_DRED:
43 KingDredGUID = creature->GetGUID();
44 break;
45 case NPC_THARON_JA:
46 TharonJaGUID = creature->GetGUID();
47 break;
50 break;
53 break;
54 default:
55 break;
56 }
57 }
58
60 {
61 switch (go->GetEntry())
62 {
64 NovosCrystalGUIDs[0] = go->GetGUID();
65 break;
67 NovosCrystalGUIDs[1] = go->GetGUID();
68 break;
70 NovosCrystalGUIDs[2] = go->GetGUID();
71 break;
73 NovosCrystalGUIDs[3] = go->GetGUID();
74 break;
75 default:
76 break;
77 }
78 }
79
81 {
82 float y = creature->GetPositionY();
83 float z = creature->GetPositionZ();
84
85 if (z < 50.0f)
86 return;
87
88 if (y < -650.0f && y > -660.0f)
90 else if (y < -660.0f && y > -670.0f)
92 else if (y < -675.0f && y > -685.0f)
94 }
95
97 {
98 float x = creature->GetPositionX();
99 float y = creature->GetPositionY();
100 float z = creature->GetPositionZ();
101
102 if (x < -374.0f && x > -379.0f && y > -820.0f && y < -815.0f && z < 60.0f && z > 58.0f)
103 NovosSummonerGUIDs[0] = creature->GetGUID();
104 else if (x < -379.0f && x > -385.0f && y > -820.0f && y < -815.0f && z < 60.0f && z > 58.0f)
105 NovosSummonerGUIDs[1] = creature->GetGUID();
106 else if (x < -374.0f && x > -385.0f && y > -827.0f && y < -820.0f && z < 60.0f && z > 58.0f)
107 NovosSummonerGUIDs[2] = creature->GetGUID();
108 else if (x < -338.0f && x > -344.0f && y > -727.0f && y < 721.0f && z < 30.0f && z > 26.0f)
109 NovosSummonerGUIDs[3] = creature->GetGUID();
110 }
111
113 {
114 switch (type)
115 {
116 case DATA_TROLLGORE:
117 return TrollgoreGUID;
118 case DATA_NOVOS:
119 return NovosGUID;
120 case DATA_KING_DRED:
121 return KingDredGUID;
122 case DATA_THARON_JA:
123 return TharonJaGUID;
138 }
139
140 return 0;
141 }
142
144 {
145 if (unit->GetEntry() == NPC_CRYSTAL_HANDLER)
146 if (Creature* novos = instance->GetCreature(NovosGUID))
147 novos->AI()->DoAction(ACTION_CRYSTAL_HANDLER_DIED);
148 }
149
150 std::string GetSaveData() OVERRIDE
151 {
153
154 std::ostringstream saveStream;
155 saveStream << "D K " << GetBossSaveData();
156
158 return saveStream.str();
159 }
160
161 void Load(char const* str) OVERRIDE
162 {
163 if (!str)
164 {
166 return;
167 }
168
170
171 char dataHead1, dataHead2;
172
173 std::istringstream loadStream(str);
174 loadStream >> dataHead1 >> dataHead2;
175
176 if (dataHead1 == 'D' && dataHead2 == 'K')
177 {
178 for (uint32 i = 0; i < EncounterCount; ++i)
179 {
180 uint32 tmpState;
181 loadStream >> tmpState;
182 if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
183 tmpState = NOT_STARTED;
184 SetBossState(i, EncounterState(tmpState));
185 }
186 }
187 else
189
191 }
192
193 protected:
198
202 };
203
208};
209
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)
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()
Definition Map.h:238
uint64 GetGUID() const
Definition Object.h:119
Definition Unit.h:1367
InstanceScript * GetInstanceScript(InstanceMap *map) const OVERRIDE
#define DrakTharonKeepScriptName
@ GO_NOVOS_CRYSTAL_4
@ GO_NOVOS_CRYSTAL_1
@ GO_NOVOS_CRYSTAL_2
@ GO_NOVOS_CRYSTAL_3
@ NPC_TROLLGORE
@ NPC_CRYSTAL_CHANNEL_TARGET
@ NPC_WORLD_TRIGGER
@ NPC_THARON_JA
@ NPC_NOVOS
@ NPC_KING_DRED
@ NPC_CRYSTAL_HANDLER
@ DATA_NOVOS_CRYSTAL_2
@ DATA_NOVOS_SUMMONER_4
@ DATA_NOVOS_CRYSTAL_3
@ DATA_NOVOS_SUMMONER_3
@ DATA_TROLLGORE_INVADER_SUMMONER_1
@ DATA_TROLLGORE_INVADER_SUMMONER_3
@ DATA_NOVOS_SUMMONER_1
@ DATA_KING_DRED
@ DATA_NOVOS_SUMMONER_2
@ DATA_TROLLGORE_INVADER_SUMMONER_2
@ DATA_NOVOS_CRYSTAL_4
@ DATA_TROLLGORE
@ DATA_NOVOS
@ DATA_THARON_JA
@ ACTION_CRYSTAL_HANDLER_DIED
@ DATA_NOVOS_CRYSTAL_1
void AddSC_instance_drak_tharon_keep()
float GetPositionZ() const
Definition Object.h:330
float GetPositionX() const
Definition Object.h:328
float GetPositionY() const
Definition Object.h:329