Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
boss_bloodboil.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
7
SDName: Boss_Bloodboil
8
SD%Complete: 80
9
SDComment: Bloodboil not working correctly, missing enrage
10
SDCategory: Black Temple
11
EndScriptData */
12
13
#include "
ScriptMgr.h
"
14
#include "
ScriptedCreature.h
"
15
#include "
black_temple.h
"
16
17
enum
Bloodboil
18
{
19
//Speech'n'Sound
20
SAY_AGGRO
= 0,
21
SAY_SLAY
= 1,
22
SAY_SPECIAL
= 2,
23
SAY_ENRAGE
= 3,
24
SAY_DEATH
= 4,
25
26
//Spells
27
SPELL_ACID_GEYSER
= 40630,
28
SPELL_ACIDIC_WOUND
= 40481,
29
SPELL_ARCING_SMASH
= 40599,
30
SPELL_BLOODBOIL
= 42005,
// This spell is AoE whereas it shouldn't be
31
SPELL_FEL_ACID
= 40508,
32
SPELL_FEL_RAGE_SELF
= 40594,
33
SPELL_FEL_RAGE_TARGET
= 40604,
34
SPELL_FEL_RAGE_2
= 40616,
35
SPELL_FEL_RAGE_3
= 41625,
36
SPELL_BEWILDERING_STRIKE
= 40491,
37
SPELL_EJECT1
= 40486,
// 1000 Physical damage + knockback + script effect (should handle threat reduction I think)
38
SPELL_EJECT2
= 40597,
// 1000 Physical damage + Stun (used in phase 2?)
39
SPELL_TAUNT_GURTOGG
= 40603,
40
SPELL_INSIGNIFIGANCE
= 40618,
41
SPELL_BERSERK
= 45078
42
};
43
44
45
//This is used to sort the players by distance in preparation for the Bloodboil cast.
46
47
class
boss_gurtogg_bloodboil
:
public
CreatureScript
48
{
49
public
:
50
boss_gurtogg_bloodboil
() :
CreatureScript
(
"boss_gurtogg_bloodboil"
) { }
51
52
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
53
{
54
return
new
boss_gurtogg_bloodboilAI
(creature);
55
}
56
57
struct
boss_gurtogg_bloodboilAI
:
public
ScriptedAI
58
{
59
boss_gurtogg_bloodboilAI
(
Creature
* creature) :
ScriptedAI
(creature)
60
{
61
instance
= creature->
GetInstanceScript
();
62
}
63
64
InstanceScript
*
instance
;
65
66
uint64
TargetGUID
;
67
68
float
TargetThreat
;
69
70
uint32
BloodboilTimer
;
71
uint32
BloodboilCount
;
72
uint32
AcidGeyserTimer
;
73
uint32
AcidicWoundTimer
;
74
uint32
ArcingSmashTimer
;
75
uint32
EnrageTimer
;
76
uint32
FelAcidTimer
;
77
uint32
EjectTimer
;
78
uint32
BewilderingStrikeTimer
;
79
uint32
PhaseChangeTimer
;
80
81
bool
Phase1
;
82
83
void
Reset
()
OVERRIDE
84
{
85
if
(
instance
)
86
instance
->SetBossState(
DATA_GURTOGG_BLOODBOIL
,
NOT_STARTED
);
87
88
TargetGUID
= 0;
89
90
TargetThreat
= 0;
91
92
BloodboilTimer
= 10000;
93
BloodboilCount
= 0;
94
AcidGeyserTimer
= 1000;
95
AcidicWoundTimer
= 6000;
96
ArcingSmashTimer
= 19000;
97
EnrageTimer
= 600000;
98
FelAcidTimer
= 25000;
99
EjectTimer
= 10000;
100
BewilderingStrikeTimer
= 15000;
101
PhaseChangeTimer
= 60000;
102
103
Phase1
=
true
;
104
105
me
->ApplySpellImmune(0,
IMMUNITY_STATE
,
SPELL_AURA_MOD_TAUNT
,
false
);
106
me
->ApplySpellImmune(0,
IMMUNITY_EFFECT
,
SPELL_EFFECT_ATTACK_ME
,
false
);
107
}
108
109
void
EnterCombat
(
Unit
*
/*who*/
)
OVERRIDE
110
{
111
DoZoneInCombat
();
112
Talk
(
SAY_AGGRO
);
113
if
(
instance
)
114
instance
->SetBossState(
DATA_GURTOGG_BLOODBOIL
,
IN_PROGRESS
);
115
}
116
117
void
KilledUnit
(
Unit
*
/*victim*/
)
OVERRIDE
118
{
119
Talk
(
SAY_SLAY
);
120
}
121
122
void
JustDied
(
Unit
*
/*killer*/
)
OVERRIDE
123
{
124
if
(
instance
)
125
instance
->SetBossState(
DATA_GURTOGG_BLOODBOIL
,
DONE
);
126
127
Talk
(
SAY_DEATH
);
128
}
129
130
// Note: This seems like a very complicated fix. The fix needs to be handled by the core, as implementation of limited-target AoE spells are still not limited.
131
void
CastBloodboil
()
132
{
133
// Get the Threat List
134
std::list<HostileReference*> m_threatlist =
me
->getThreatManager().getThreatList();
135
136
if
(m_threatlist.empty())
// He doesn't have anyone in his threatlist, useless to continue
137
return
;
138
139
std::list<Unit*> targets;
140
std::list<HostileReference*>::const_iterator itr = m_threatlist.begin();
141
for
(; itr!= m_threatlist.end(); ++itr)
//store the threat list in a different container
142
{
143
Unit
* target =
Unit::GetUnit
(*
me
, (*itr)->getUnitGuid());
144
//only on alive players
145
if
(target && target->
IsAlive
() && target->
GetTypeId
() ==
TypeID::TYPEID_PLAYER
)
146
targets.push_back(target);
147
}
148
149
//Sort the list of players
150
targets.sort(
Skyfire::ObjectDistanceOrderPred
(
me
,
false
));
151
//Resize so we only get top 5
152
targets.resize(5);
153
154
//Aura each player in the targets list with Bloodboil. Aura code copied+pasted from Aura command in Level3.cpp
155
/*SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_BLOODBOIL);
156
if (spellInfo)
157
{
158
for (std::list<Unit*>::const_iterator itr = targets.begin(); itr != targets.end(); ++itr)
159
{
160
Unit* target = *itr;
161
if (!target) return;
162
for (uint32 i = 0; i<3; ++i)
163
{
164
uint8 eff = spellInfo->Effect[i];
165
if (eff >= TOTAL_SPELL_EFFECTS)
166
continue;
167
168
Aura* Aur = new Aura(spellInfo, i, target, target, target);
169
target->AddAura(Aur);
170
}
171
}
172
}*/
173
}
174
175
void
RevertThreatOnTarget
(
uint64
guid)
176
{
177
if
(
Unit
* unit =
Unit::GetUnit
(*
me
, guid))
178
{
179
if
(
DoGetThreat
(unit))
180
DoModifyThreatPercent
(unit, -100);
181
if
(
TargetThreat
)
182
me
->AddThreat(unit,
TargetThreat
);
183
}
184
}
185
186
void
UpdateAI
(
uint32
diff)
OVERRIDE
187
{
188
if
(!
UpdateVictim
())
189
return
;
190
191
if
(
ArcingSmashTimer
<= diff)
192
{
193
DoCastVictim
(
SPELL_ARCING_SMASH
);
194
ArcingSmashTimer
= 10000;
195
}
else
ArcingSmashTimer
-= diff;
196
197
if
(
FelAcidTimer
<= diff)
198
{
199
DoCastVictim
(
SPELL_FEL_ACID
);
200
FelAcidTimer
= 25000;
201
}
else
FelAcidTimer
-= diff;
202
203
if
(!
me
->HasAura(
SPELL_BERSERK
))
204
{
205
if
(
EnrageTimer
<= diff)
206
{
207
DoCast
(
me
,
SPELL_BERSERK
);
208
Talk
(
SAY_ENRAGE
);
209
}
else
EnrageTimer
-= diff;
210
}
211
212
if
(
Phase1
)
213
{
214
if
(
BewilderingStrikeTimer
<= diff)
215
{
216
DoCastVictim
(
SPELL_BEWILDERING_STRIKE
);
217
float
mt_threat =
DoGetThreat
(
me
->GetVictim());
218
if
(
Unit
* target =
SelectTarget
(
SELECT_TARGET_TOPAGGRO
, 1))
219
me
->AddThreat(target, mt_threat);
220
BewilderingStrikeTimer
= 20000;
221
}
else
BewilderingStrikeTimer
-= diff;
222
223
if
(
EjectTimer
<= diff)
224
{
225
DoCastVictim
(
SPELL_EJECT1
);
226
DoModifyThreatPercent
(
me
->GetVictim(), -40);
227
EjectTimer
= 15000;
228
}
else
EjectTimer
-= diff;
229
230
if
(
AcidicWoundTimer
<= diff)
231
{
232
DoCastVictim
(
SPELL_ACIDIC_WOUND
);
233
AcidicWoundTimer
= 10000;
234
}
else
AcidicWoundTimer
-= diff;
235
236
if
(
BloodboilTimer
<= diff)
237
{
238
if
(
BloodboilCount
< 5)
// Only cast it five times.
239
{
240
//CastBloodboil(); // Causes issues on windows, so is commented out.
241
DoCastVictim
(
SPELL_BLOODBOIL
);
242
++
BloodboilCount
;
243
BloodboilTimer
= 10000*
BloodboilCount
;
244
}
245
}
else
BloodboilTimer
-= diff;
246
}
247
248
if
(!
Phase1
)
249
{
250
if
(
AcidGeyserTimer
<= diff)
251
{
252
DoCastVictim
(
SPELL_ACID_GEYSER
);
253
AcidGeyserTimer
= 30000;
254
}
else
AcidGeyserTimer
-= diff;
255
256
if
(
EjectTimer
<= diff)
257
{
258
DoCastVictim
(
SPELL_EJECT2
);
259
EjectTimer
= 15000;
260
}
else
EjectTimer
-= diff;
261
}
262
263
if
(
PhaseChangeTimer
<= diff)
264
{
265
if
(
Phase1
)
266
{
267
if
(
Unit
* target =
SelectTarget
(
SELECT_TARGET_RANDOM
, 0))
268
{
269
Phase1
=
false
;
270
271
TargetThreat
=
DoGetThreat
(target);
272
TargetGUID
= target->GetGUID();
273
target->CastSpell(
me
,
SPELL_TAUNT_GURTOGG
,
true
);
274
if
(
DoGetThreat
(target))
275
DoModifyThreatPercent
(target, -100);
276
me
->AddThreat(target, 50000000.0f);
277
me
->ApplySpellImmune(0,
IMMUNITY_STATE
,
SPELL_AURA_MOD_TAUNT
,
true
);
278
me
->ApplySpellImmune(0,
IMMUNITY_EFFECT
,
SPELL_EFFECT_ATTACK_ME
,
true
);
279
// If VMaps are disabled, this spell can call the whole instance
280
DoCast
(
me
,
SPELL_INSIGNIFIGANCE
,
true
);
281
DoCast
(target,
SPELL_FEL_RAGE_TARGET
,
true
);
282
DoCast
(target,
SPELL_FEL_RAGE_2
,
true
);
283
/* These spells do not work, comment them out for now.
284
DoCast(target, SPELL_FEL_RAGE_2, true);
285
DoCast(target, SPELL_FEL_RAGE_3, true);*/
286
287
//Cast this without triggered so that it appears in combat logs and shows visual.
288
DoCast
(
me
,
SPELL_FEL_RAGE_SELF
);
289
290
Talk
(
SAY_SPECIAL
);
291
292
AcidGeyserTimer
= 1000;
293
PhaseChangeTimer
= 30000;
294
}
295
}
296
else
// Encounter is a loop pretty much. Phase 1 -> Phase 2 -> Phase 1 -> Phase 2 till death or enrage
297
{
298
if
(
TargetGUID
)
299
RevertThreatOnTarget
(
TargetGUID
);
300
TargetGUID
= 0;
301
Phase1
=
true
;
302
BloodboilTimer
= 10000;
303
BloodboilCount
= 0;
304
AcidicWoundTimer
+= 2000;
305
ArcingSmashTimer
+= 2000;
306
FelAcidTimer
+= 2000;
307
EjectTimer
+= 2000;
308
PhaseChangeTimer
= 60000;
309
me
->ApplySpellImmune(0,
IMMUNITY_STATE
,
SPELL_AURA_MOD_TAUNT
,
false
);
310
me
->ApplySpellImmune(0,
IMMUNITY_EFFECT
,
SPELL_EFFECT_ATTACK_ME
,
false
);
311
}
312
}
else
PhaseChangeTimer
-= diff;
313
314
DoMeleeAttackIfReady
();
315
}
316
};
317
};
318
319
void
AddSC_boss_gurtogg_bloodboil
()
320
{
321
new
boss_gurtogg_bloodboil
();
322
}
uint32
std::uint32_t uint32
Definition
Define.h:77
OVERRIDE
#define OVERRIDE
Definition
Define.h:60
uint64
std::uint64_t uint64
Definition
Define.h:76
IN_PROGRESS
@ IN_PROGRESS
Definition
InstanceScript.h:47
DONE
@ DONE
Definition
InstanceScript.h:49
NOT_STARTED
@ NOT_STARTED
Definition
InstanceScript.h:46
TypeID::TYPEID_PLAYER
@ TYPEID_PLAYER
Definition
Object.h:55
ScriptMgr.h
ScriptedCreature.h
SPELL_EFFECT_ATTACK_ME
@ SPELL_EFFECT_ATTACK_ME
Definition
SharedDefines.h:1002
IMMUNITY_STATE
@ IMMUNITY_STATE
Definition
SharedDefines.h:1597
IMMUNITY_EFFECT
@ IMMUNITY_EFFECT
Definition
SharedDefines.h:1596
SPELL_AURA_MOD_TAUNT
@ SPELL_AURA_MOD_TAUNT
Definition
SpellAuraDefines.h:58
SELECT_TARGET_TOPAGGRO
@ SELECT_TARGET_TOPAGGRO
Definition
UnitAI.h:24
SELECT_TARGET_RANDOM
@ SELECT_TARGET_RANDOM
Definition
UnitAI.h:23
black_temple.h
DATA_GURTOGG_BLOODBOIL
@ DATA_GURTOGG_BLOODBOIL
Definition
black_temple.h:20
SAY_SLAY
@ SAY_SLAY
Definition
boss_alizabal.cpp:20
Bloodboil
Bloodboil
Definition
boss_bloodboil.cpp:18
SAY_DEATH
@ SAY_DEATH
Definition
boss_bloodboil.cpp:24
SPELL_BLOODBOIL
@ SPELL_BLOODBOIL
Definition
boss_bloodboil.cpp:30
SPELL_FEL_RAGE_2
@ SPELL_FEL_RAGE_2
Definition
boss_bloodboil.cpp:34
SPELL_ACIDIC_WOUND
@ SPELL_ACIDIC_WOUND
Definition
boss_bloodboil.cpp:28
SPELL_FEL_RAGE_TARGET
@ SPELL_FEL_RAGE_TARGET
Definition
boss_bloodboil.cpp:33
SPELL_BEWILDERING_STRIKE
@ SPELL_BEWILDERING_STRIKE
Definition
boss_bloodboil.cpp:36
SAY_AGGRO
@ SAY_AGGRO
Definition
boss_bloodboil.cpp:20
SPELL_FEL_RAGE_3
@ SPELL_FEL_RAGE_3
Definition
boss_bloodboil.cpp:35
SAY_SPECIAL
@ SAY_SPECIAL
Definition
boss_bloodboil.cpp:22
SAY_SLAY
@ SAY_SLAY
Definition
boss_bloodboil.cpp:21
SPELL_ARCING_SMASH
@ SPELL_ARCING_SMASH
Definition
boss_bloodboil.cpp:29
SPELL_FEL_ACID
@ SPELL_FEL_ACID
Definition
boss_bloodboil.cpp:31
SPELL_TAUNT_GURTOGG
@ SPELL_TAUNT_GURTOGG
Definition
boss_bloodboil.cpp:39
SAY_ENRAGE
@ SAY_ENRAGE
Definition
boss_bloodboil.cpp:23
SPELL_INSIGNIFIGANCE
@ SPELL_INSIGNIFIGANCE
Definition
boss_bloodboil.cpp:40
SPELL_BERSERK
@ SPELL_BERSERK
Definition
boss_bloodboil.cpp:41
SPELL_ACID_GEYSER
@ SPELL_ACID_GEYSER
Definition
boss_bloodboil.cpp:27
SPELL_EJECT2
@ SPELL_EJECT2
Definition
boss_bloodboil.cpp:38
SPELL_EJECT1
@ SPELL_EJECT1
Definition
boss_bloodboil.cpp:37
SPELL_FEL_RAGE_SELF
@ SPELL_FEL_RAGE_SELF
Definition
boss_bloodboil.cpp:32
AddSC_boss_gurtogg_bloodboil
void AddSC_boss_gurtogg_bloodboil()
Definition
boss_bloodboil.cpp:319
SAY_DEATH
#define SAY_DEATH
Definition
boss_commander_kolurg.cpp:30
SAY_AGGRO
#define SAY_AGGRO
Definition
boss_commander_kolurg.cpp:28
SAY_ENRAGE
@ SAY_ENRAGE
Definition
boss_curator.cpp:21
SPELL_BERSERK
#define SPELL_BERSERK
Definition
boss_four_horsemen.cpp:62
SAY_SPECIAL
@ SAY_SPECIAL
Definition
boss_majordomo_executus.cpp:25
SPELL_ARCING_SMASH
@ SPELL_ARCING_SMASH
Definition
boss_xt002.cpp:70
CreatureAI
Definition
CreatureAI.h:54
CreatureAI::DoZoneInCombat
void DoZoneInCombat(Creature *creature=NULL, float maxRangeToNearestTarget=50.0f)
Definition
CreatureAI.cpp:33
CreatureAI::Talk
void Talk(uint8 id, WorldObject const *whisperTarget=NULL)
Definition
CreatureAI.cpp:28
CreatureAI::UpdateVictim
bool UpdateVictim()
Definition
CreatureAI.cpp:192
Creature
Definition
Creature.h:427
CreatureScript::CreatureScript
CreatureScript(const char *name)
Definition
ScriptMgr.cpp:1436
InstanceScript
Definition
InstanceScript.h:123
Object::GetTypeId
TypeID GetTypeId() const
Definition
Object.h:131
Skyfire::ObjectDistanceOrderPred
Definition
Object.h:859
UnitAI::DoMeleeAttackIfReady
void DoMeleeAttackIfReady()
Definition
UnitAI.cpp:28
UnitAI::DoCast
void DoCast(uint32 spellId)
Definition
UnitAI.cpp:110
UnitAI::SelectTarget
Unit * SelectTarget(SelectAggroTarget targetType, uint32 position=0, float dist=0.0f, bool playerOnly=false, int32 aura=0)
Definition
UnitAI.cpp:66
UnitAI::DoCastVictim
void DoCastVictim(uint32 spellId, bool triggered=false)
Definition
UnitAI.cpp:168
Unit
Definition
Unit.h:1367
Unit::IsAlive
bool IsAlive() const
Definition
Unit.h:2032
Unit::GetUnit
static Unit * GetUnit(WorldObject &object, uint64 guid)
Definition
Unit.cpp:4895
WorldObject::GetInstanceScript
InstanceScript * GetInstanceScript()
Definition
Object.cpp:1612
boss_gurtogg_bloodboil
Definition
boss_bloodboil.cpp:48
boss_gurtogg_bloodboil::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_bloodboil.cpp:52
boss_gurtogg_bloodboil::boss_gurtogg_bloodboil
boss_gurtogg_bloodboil()
Definition
boss_bloodboil.cpp:50
ScriptedAI::me
Creature * me
Definition
ScriptedCreature.h:182
ScriptedAI::DoGetThreat
float DoGetThreat(Unit *unit)
Definition
ScriptedCreature.cpp:278
ScriptedAI::ScriptedAI
ScriptedAI(Creature *creature)
Definition
ScriptedCreature.cpp:85
ScriptedAI::DoModifyThreatPercent
void DoModifyThreatPercent(Unit *unit, int32 pct)
Definition
ScriptedCreature.cpp:285
boss_gurtogg_bloodboil::boss_gurtogg_bloodboilAI
Definition
boss_bloodboil.cpp:58
boss_gurtogg_bloodboil::boss_gurtogg_bloodboilAI::RevertThreatOnTarget
void RevertThreatOnTarget(uint64 guid)
Definition
boss_bloodboil.cpp:175
boss_gurtogg_bloodboil::boss_gurtogg_bloodboilAI::ArcingSmashTimer
uint32 ArcingSmashTimer
Definition
boss_bloodboil.cpp:74
boss_gurtogg_bloodboil::boss_gurtogg_bloodboilAI::EjectTimer
uint32 EjectTimer
Definition
boss_bloodboil.cpp:77
boss_gurtogg_bloodboil::boss_gurtogg_bloodboilAI::PhaseChangeTimer
uint32 PhaseChangeTimer
Definition
boss_bloodboil.cpp:79
boss_gurtogg_bloodboil::boss_gurtogg_bloodboilAI::EnrageTimer
uint32 EnrageTimer
Definition
boss_bloodboil.cpp:75
boss_gurtogg_bloodboil::boss_gurtogg_bloodboilAI::JustDied
void JustDied(Unit *) OVERRIDE
Definition
boss_bloodboil.cpp:122
boss_gurtogg_bloodboil::boss_gurtogg_bloodboilAI::Reset
void Reset() OVERRIDE
Definition
boss_bloodboil.cpp:83
boss_gurtogg_bloodboil::boss_gurtogg_bloodboilAI::Phase1
bool Phase1
Definition
boss_bloodboil.cpp:81
boss_gurtogg_bloodboil::boss_gurtogg_bloodboilAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_bloodboil.cpp:186
boss_gurtogg_bloodboil::boss_gurtogg_bloodboilAI::EnterCombat
void EnterCombat(Unit *) OVERRIDE
Definition
boss_bloodboil.cpp:109
boss_gurtogg_bloodboil::boss_gurtogg_bloodboilAI::BloodboilCount
uint32 BloodboilCount
Definition
boss_bloodboil.cpp:71
boss_gurtogg_bloodboil::boss_gurtogg_bloodboilAI::AcidGeyserTimer
uint32 AcidGeyserTimer
Definition
boss_bloodboil.cpp:72
boss_gurtogg_bloodboil::boss_gurtogg_bloodboilAI::boss_gurtogg_bloodboilAI
boss_gurtogg_bloodboilAI(Creature *creature)
Definition
boss_bloodboil.cpp:59
boss_gurtogg_bloodboil::boss_gurtogg_bloodboilAI::AcidicWoundTimer
uint32 AcidicWoundTimer
Definition
boss_bloodboil.cpp:73
boss_gurtogg_bloodboil::boss_gurtogg_bloodboilAI::BewilderingStrikeTimer
uint32 BewilderingStrikeTimer
Definition
boss_bloodboil.cpp:78
boss_gurtogg_bloodboil::boss_gurtogg_bloodboilAI::KilledUnit
void KilledUnit(Unit *) OVERRIDE
Definition
boss_bloodboil.cpp:117
boss_gurtogg_bloodboil::boss_gurtogg_bloodboilAI::FelAcidTimer
uint32 FelAcidTimer
Definition
boss_bloodboil.cpp:76
boss_gurtogg_bloodboil::boss_gurtogg_bloodboilAI::TargetThreat
float TargetThreat
Definition
boss_bloodboil.cpp:68
boss_gurtogg_bloodboil::boss_gurtogg_bloodboilAI::BloodboilTimer
uint32 BloodboilTimer
Definition
boss_bloodboil.cpp:70
boss_gurtogg_bloodboil::boss_gurtogg_bloodboilAI::instance
InstanceScript * instance
Definition
boss_bloodboil.cpp:64
boss_gurtogg_bloodboil::boss_gurtogg_bloodboilAI::CastBloodboil
void CastBloodboil()
Definition
boss_bloodboil.cpp:131
boss_gurtogg_bloodboil::boss_gurtogg_bloodboilAI::TargetGUID
uint64 TargetGUID
Definition
boss_bloodboil.cpp:66
src
server
scripts
Outland
BlackTemple
boss_bloodboil.cpp
Generated on
for Project SkyFire Core by
1.17.0