Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
boss_lurker_below.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_the_lurker_below
8
SD%Complete: 80
9
SDComment: Coilfang Frenzy, find out how could we fishing in the strangepool
10
SDCategory: The Lurker Below
11
EndScriptData */
12
13
#include "
ScriptMgr.h
"
14
#include "
ScriptedCreature.h
"
15
#include "
serpent_shrine.h
"
16
#include "
Spell.h
"
17
#include "
Player.h
"
18
19
enum
Spells
20
{
21
SPELL_SPOUT
= 37433,
22
SPELL_SPOUT_ANIM
= 42835,
23
SPELL_SPOUT_BREATH
= 37431,
24
SPELL_KNOCKBACK
= 19813,
25
SPELL_GEYSER
= 37478,
26
SPELL_WHIRL
= 37660,
27
SPELL_WATERBOLT
= 37138,
28
SPELL_SUBMERGE
= 37550,
29
SPELL_EMERGE
= 20568,
30
31
32
// Ambusher spells
33
SPELL_SPREAD_SHOT
= 37790,
34
SPELL_SHOOT
= 37770,
35
// Guardian spells
36
SPELL_ARCINGSMASH
= 38761,
// Wrong SpellId. Can't find the right one.
37
SPELL_HAMSTRING
= 26211
38
};
39
40
enum
Creatures
41
{
42
NPC_COILFANG_GUARDIAN
= 21873,
43
NPC_COILFANG_AMBUSHER
= 21865
44
};
45
46
#define EMOTE_SPOUT "The Lurker Below takes a deep breath."
47
48
#define SPOUT_DIST 100
49
50
float
AddPos
[9][3] =
51
{
52
// MOVE_AMBUSHER_1 X, Y, Z
53
{2.8553810f, -459.823914f, -19.182686f},
54
{12.400000f, -466.042267f, -19.182686f},
55
{51.366653f, -460.836060f, -19.182686f},
56
{62.597980f, -457.433044f, -19.182686f},
57
{77.607452f, -384.302765f, -19.182686f},
58
{63.897900f, -378.984924f, -19.182686f},
59
{34.447250f, -387.333618f, -19.182686f},
60
{14.388216f, -423.468018f, -19.625271f},
61
{42.471519f, -445.115295f, -19.769423f}
62
};
63
64
class
boss_the_lurker_below
:
public
CreatureScript
65
{
66
public
:
67
boss_the_lurker_below
() :
CreatureScript
(
"boss_the_lurker_below"
) { }
68
69
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
70
{
71
return
new
boss_the_lurker_belowAI
(creature);
72
}
73
74
struct
boss_the_lurker_belowAI
:
public
ScriptedAI
75
{
76
boss_the_lurker_belowAI
(
Creature
* creature) :
ScriptedAI
(creature),
Summons
(
me
)
77
{
78
SetCombatMovement
(
false
);
79
instance
= creature->
GetInstanceScript
();
80
}
81
82
InstanceScript
*
instance
;
83
SummonList
Summons
;
84
85
bool
Spawned
;
86
bool
Submerged
;
87
bool
InRange
;
88
bool
CanStartEvent
;
89
uint32
RotTimer
;
90
uint32
SpoutAnimTimer
;
91
uint32
WaterboltTimer
;
92
uint32
SpoutTimer
;
93
uint32
WhirlTimer
;
94
uint32
PhaseTimer
;
95
uint32
GeyserTimer
;
96
uint32
CheckTimer
;
97
uint32
WaitTimer
;
98
uint32
WaitTimer2
;
99
100
bool
CheckCanStart
()
//check if players fished
101
{
102
if
(
instance
&&
instance
->GetData(
DATA_STRANGE_POOL
) ==
NOT_STARTED
)
103
return
false
;
104
return
true
;
105
}
106
void
Reset
()
OVERRIDE
107
{
108
me
->SetSwim(
true
);
109
me
->SetDisableGravity(
true
);
110
SpoutAnimTimer
= 1000;
111
RotTimer
= 0;
112
WaterboltTimer
= 15000;
// give time to get in range when fight starts
113
SpoutTimer
= 45000;
114
WhirlTimer
= 18000;
// after avery spout
115
PhaseTimer
= 120000;
116
GeyserTimer
= rand()%5000 + 15000;
117
CheckTimer
= 15000;
// give time to get in range when fight starts
118
WaitTimer
= 60000;
// never reached
119
WaitTimer2
= 60000;
// never reached
120
121
Submerged
=
true
;
// will be false at combat start
122
Spawned
=
false
;
123
InRange
=
false
;
124
CanStartEvent
=
false
;
125
126
Summons
.DespawnAll();
127
128
if
(
instance
)
129
{
130
instance
->SetData(
DATA_THELURKERBELOWEVENT
,
NOT_STARTED
);
131
instance
->SetData(
DATA_STRANGE_POOL
,
NOT_STARTED
);
132
}
133
DoCast
(
me
,
SPELL_SUBMERGE
);
// submerge anim
134
me
->SetVisible(
false
);
// we start invis under water, submerged
135
me
->SetFlag(
UNIT_FIELD_FLAGS
,
UNIT_FLAG_NOT_SELECTABLE
);
136
me
->SetFlag(
UNIT_FIELD_FLAGS
,
UNIT_FLAG_IMMUNE_TO_PC
);
137
}
138
139
void
JustDied
(
Unit
*
/*killer*/
)
OVERRIDE
140
{
141
if
(
instance
)
142
{
143
instance
->SetData(
DATA_THELURKERBELOWEVENT
,
DONE
);
144
instance
->SetData(
DATA_STRANGE_POOL
,
IN_PROGRESS
);
145
}
146
147
Summons
.DespawnAll();
148
}
149
150
void
EnterCombat
(
Unit
*
/*who*/
)
OVERRIDE
151
{
152
if
(
instance
)
153
instance
->SetData(
DATA_THELURKERBELOWEVENT
,
IN_PROGRESS
);
154
}
155
156
void
MoveInLineOfSight
(
Unit
* who)
OVERRIDE
157
158
{
159
if
(!
CanStartEvent
)
// boss is invisible, don't attack
160
return
;
161
if
(!
me
->GetVictim() && who->IsValidAttackTarget(
me
))
162
{
163
float
attackRadius =
me
->GetAttackDistance(who);
164
if
(
me
->IsWithinDistInMap(who, attackRadius))
165
AttackStart
(who);
166
}
167
}
168
169
void
MovementInform
(
uint32
type,
uint32
/*id*/
)
OVERRIDE
170
{
171
if
(type ==
ROTATE_MOTION_TYPE
)
172
me
->SetReactState(
REACT_AGGRESSIVE
);
173
}
174
175
void
UpdateAI
(
uint32
diff)
OVERRIDE
176
{
177
if
(!
CanStartEvent
)
// boss is invisible, don't attack
178
{
179
if
(
CheckCanStart
())
180
{
181
if
(
Submerged
)
182
{
183
me
->SetVisible(
true
);
184
Submerged
=
false
;
185
WaitTimer2
= 500;
186
}
187
188
if
(!
Submerged
&&
WaitTimer2
<= diff)
// wait 500ms before emerge anim
189
{
190
me
->RemoveAllAuras();
191
me
->SetUInt32Value(
UNIT_FIELD_NPC_EMOTESTATE
, 0);
192
DoCast
(
me
,
SPELL_EMERGE
,
false
);
193
WaitTimer2
= 60000;
// never reached
194
WaitTimer
= 3000;
195
}
196
else
197
WaitTimer2
-= diff;
198
199
if
(
WaitTimer
<= diff)
// wait 3secs for emerge anim, then attack
200
{
201
WaitTimer
= 3000;
202
CanStartEvent
=
true
;
// fresh fished from pool
203
me
->RemoveFlag(
UNIT_FIELD_FLAGS
,
UNIT_FLAG_IMMUNE_TO_PC
);
204
me
->RemoveFlag(
UNIT_FIELD_FLAGS
,
UNIT_FLAG_NOT_SELECTABLE
);
205
}
206
else
207
WaitTimer
-= diff;
208
}
209
return
;
210
}
211
212
if
(
me
->getThreatManager().getThreatList().empty())
// check if should evade
213
{
214
if
(
me
->IsInCombat())
215
EnterEvadeMode
();
216
return
;
217
}
218
if
(!
Submerged
)
219
{
220
if
(
PhaseTimer
<= diff)
221
{
222
me
->InterruptNonMeleeSpells(
false
);
223
DoCast
(
me
,
SPELL_SUBMERGE
);
224
PhaseTimer
= 60000;
// 60secs submerged
225
Submerged
=
true
;
226
}
else
PhaseTimer
-=diff;
227
228
if
(
SpoutTimer
<= diff)
229
{
230
me
->MonsterTextEmote(
EMOTE_SPOUT
, 0,
true
);
231
me
->SetReactState(
REACT_PASSIVE
);
232
me
->GetMotionMaster()->MoveRotate(20000, std::rand() % 1 ?
ROTATE_DIRECTION_LEFT
:
ROTATE_DIRECTION_RIGHT
);
233
SpoutTimer
= 45000;
234
WhirlTimer
= 20000;
// whirl directly after spout
235
RotTimer
= 20000;
236
return
;
237
}
else
SpoutTimer
-= diff;
238
239
// Whirl directly after a Spout and at random times
240
if
(
WhirlTimer
<= diff)
241
{
242
WhirlTimer
= 18000;
243
DoCast
(
me
,
SPELL_WHIRL
);
244
}
else
WhirlTimer
-= diff;
245
246
if
(
CheckTimer
<= diff)
//check if there are players in melee range
247
{
248
InRange
=
false
;
249
Map
* map =
me
->GetMap();
250
Map::PlayerList
const
&PlayerList = map->
GetPlayers
();
251
if
(!PlayerList.
isEmpty
())
252
{
253
for
(
Map::PlayerList::const_iterator
i = PlayerList.
begin
(); i != PlayerList.
end
(); ++i)
254
{
255
if
(
me
->IsWithinMeleeRange(i->GetSource()))
256
InRange
=
true
;
257
}
258
}
259
CheckTimer
= 2000;
260
}
else
CheckTimer
-= diff;
261
262
if
(
RotTimer
)
263
{
264
Map
* map =
me
->GetMap();
265
if
(map->
IsDungeon
())
266
{
267
Map::PlayerList
const
&PlayerList = map->
GetPlayers
();
268
for
(
Map::PlayerList::const_iterator
i = PlayerList.
begin
(); i != PlayerList.
end
(); ++i)
269
{
270
if
(i->GetSource() && i->GetSource()->IsAlive() &&
me
->HasInArc(
float
(diff/20000*
M_PI
*2), i->GetSource()) &&
me
->IsWithinDist(i->GetSource(),
SPOUT_DIST
) && !i->GetSource()->IsInWater())
271
DoCast
(i->GetSource(),
SPELL_SPOUT
,
true
);
// only knock back players in arc, in 100yards, not in water
272
}
273
}
274
275
if
(
SpoutAnimTimer
<= diff)
276
{
277
DoCast
(
me
,
SPELL_SPOUT_ANIM
,
true
);
278
SpoutAnimTimer
= 1000;
279
}
else
SpoutAnimTimer
-= diff;
280
281
if
(
RotTimer
<= diff)
282
{
283
RotTimer
= 0;
284
}
else
RotTimer
-= diff;
285
return
;
286
}
287
288
if
(
GeyserTimer
<= diff)
289
{
290
Unit
* target =
SelectTarget
(
SELECT_TARGET_RANDOM
, 1);
291
if
(!target &&
me
->GetVictim())
292
target =
me
->GetVictim();
293
if
(target)
294
DoCast
(target,
SPELL_GEYSER
,
true
);
295
GeyserTimer
= rand()%5000 + 15000;
296
}
else
GeyserTimer
-= diff;
297
298
if
(!
InRange
)
// if on players in melee range cast Waterbolt
299
{
300
if
(
WaterboltTimer
<= diff)
301
{
302
Unit
* target =
SelectTarget
(
SELECT_TARGET_RANDOM
, 0);
303
if
(!target &&
me
->GetVictim())
304
target =
me
->GetVictim();
305
if
(target)
306
DoCast
(target,
SPELL_WATERBOLT
,
true
);
307
WaterboltTimer
= 3000;
308
}
else
WaterboltTimer
-= diff;
309
}
310
311
if
(!
UpdateVictim
())
312
return
;
313
314
DoMeleeAttackIfReady
();
315
}
316
else
// submerged
317
{
318
if
(
PhaseTimer
<= diff)
319
{
320
Submerged
=
false
;
321
me
->InterruptNonMeleeSpells(
false
);
// shouldn't be any
322
me
->RemoveAllAuras();
323
me
->RemoveFlag(
UNIT_FIELD_FLAGS
,
UNIT_FLAG_IMMUNE_TO_PC
);
324
me
->RemoveFlag(
UNIT_FIELD_NPC_EMOTESTATE
,
EMOTE_STATE_SUBMERGED
);
325
DoCast
(
me
,
SPELL_EMERGE
,
true
);
326
Spawned
=
false
;
327
SpoutTimer
= 3000;
// directly cast Spout after emerging!
328
PhaseTimer
= 120000;
329
return
;
330
}
else
PhaseTimer
-=diff;
331
332
if
(
me
->getThreatManager().getThreatList().empty())
// check if should evade
333
{
334
EnterEvadeMode
();
335
return
;
336
}
337
338
if
(!
me
->IsInCombat())
339
DoZoneInCombat
();
340
341
if
(!
Spawned
)
342
{
343
me
->SetUInt32Value(
UNIT_FIELD_FLAGS
,
UNIT_FLAG_IMMUNE_TO_PC
);
344
// spawn adds
345
for
(
uint8
i = 0; i < 9; ++i)
346
if
(
Creature
* summoned =
me
->SummonCreature(i < 6 ?
NPC_COILFANG_AMBUSHER
:
NPC_COILFANG_GUARDIAN
,
AddPos
[i][0],
AddPos
[i][1],
AddPos
[i][2], 0,
TempSummonType::TEMPSUMMON_CORPSE_DESPAWN
, 0))
347
Summons
.Summon(summoned);
348
Spawned
=
true
;
349
}
350
}
351
}
352
};
353
};
354
355
class
npc_coilfang_ambusher
:
public
CreatureScript
356
{
357
public
:
358
npc_coilfang_ambusher
() :
CreatureScript
(
"npc_coilfang_ambusher"
) { }
359
360
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
361
{
362
return
new
npc_coilfang_ambusherAI
(creature);
363
}
364
365
struct
npc_coilfang_ambusherAI
:
public
ScriptedAI
366
{
367
npc_coilfang_ambusherAI
(
Creature
* creature) :
ScriptedAI
(creature)
368
{
369
SetCombatMovement
(
false
);
370
}
371
372
uint32
MultiShotTimer
;
373
uint32
ShootBowTimer
;
374
375
void
Reset
()
OVERRIDE
376
{
377
MultiShotTimer
= 10000;
378
ShootBowTimer
= 4000;
379
}
380
381
void
MoveInLineOfSight
(
Unit
* who)
OVERRIDE
382
383
{
384
if
(!who ||
me
->GetVictim())
385
return
;
386
387
if
(who->isInAccessiblePlaceFor(
me
) &&
me
->IsValidAttackTarget(who) &&
me
->IsWithinDistInMap(who, 45))
388
AttackStart
(who);
389
}
390
391
void
UpdateAI
(
uint32
diff)
OVERRIDE
392
{
393
if
(
MultiShotTimer
<= diff)
394
{
395
if
(
me
->GetVictim())
396
DoCastVictim
(
SPELL_SPREAD_SHOT
,
true
);
397
398
MultiShotTimer
= 10000+rand()%10000;
399
ShootBowTimer
+= 1500;
// add global cooldown
400
}
else
MultiShotTimer
-= diff;
401
402
if
(
ShootBowTimer
<= diff)
403
{
404
int
bp0 = 1100;
405
if
(
Unit
* target =
SelectTarget
(
SELECT_TARGET_RANDOM
, 0))
406
me
->CastCustomSpell(target,
SPELL_SHOOT
, &bp0, NULL, NULL,
true
);
407
ShootBowTimer
= 4000+rand()%5000;
408
MultiShotTimer
+= 1500;
// add global cooldown
409
}
else
ShootBowTimer
-= diff;
410
}
411
};
412
};
413
414
class
go_strange_pool
:
public
GameObjectScript
415
{
416
public
:
417
go_strange_pool
() :
GameObjectScript
(
"go_strange_pool"
) { }
418
419
bool
OnGossipHello
(
Player
* player,
GameObject
* go)
OVERRIDE
420
{
421
// 25%
422
if
(
InstanceScript
* instanceScript = go->GetInstanceScript())
423
if
(!(std::rand() % 3))
424
{
425
if
(instanceScript->GetData(
DATA_STRANGE_POOL
) ==
NOT_STARTED
)
426
{
427
go->CastSpell(player, 54587);
428
instanceScript->SetData(
DATA_STRANGE_POOL
,
IN_PROGRESS
);
429
}
430
return
true
;
431
}
432
433
return
false
;
434
}
435
};
436
437
void
AddSC_boss_the_lurker_below
()
438
{
439
new
boss_the_lurker_below
();
440
new
npc_coilfang_ambusher
();
441
new
go_strange_pool
();
442
}
Spells
Spells
Definition
BattlegroundIC.h:645
M_PI
#define M_PI
Definition
Common.h:192
uint8
std::uint8_t uint8
Definition
Define.h:79
uint32
std::uint32_t uint32
Definition
Define.h:77
OVERRIDE
#define OVERRIDE
Definition
Define.h:60
IN_PROGRESS
@ IN_PROGRESS
Definition
InstanceScript.h:47
DONE
@ DONE
Definition
InstanceScript.h:49
NOT_STARTED
@ NOT_STARTED
Definition
InstanceScript.h:46
ROTATE_DIRECTION_RIGHT
@ ROTATE_DIRECTION_RIGHT
Definition
MotionMaster.h:63
ROTATE_DIRECTION_LEFT
@ ROTATE_DIRECTION_LEFT
Definition
MotionMaster.h:62
ROTATE_MOTION_TYPE
@ ROTATE_MOTION_TYPE
Definition
MotionMaster.h:40
TempSummonType::TEMPSUMMON_CORPSE_DESPAWN
@ TEMPSUMMON_CORPSE_DESPAWN
Definition
Object.h:72
Player.h
ScriptMgr.h
ScriptedCreature.h
EMOTE_STATE_SUBMERGED
@ EMOTE_STATE_SUBMERGED
Definition
SharedDefines.h:2205
Spell.h
REACT_PASSIVE
@ REACT_PASSIVE
Definition
Unit.h:1156
REACT_AGGRESSIVE
@ REACT_AGGRESSIVE
Definition
Unit.h:1158
UNIT_FLAG_NOT_SELECTABLE
@ UNIT_FLAG_NOT_SELECTABLE
Definition
Unit.h:650
UNIT_FLAG_IMMUNE_TO_PC
@ UNIT_FLAG_IMMUNE_TO_PC
Definition
Unit.h:633
SELECT_TARGET_RANDOM
@ SELECT_TARGET_RANDOM
Definition
UnitAI.h:23
UNIT_FIELD_FLAGS
@ UNIT_FIELD_FLAGS
Definition
UpdateFields.h:82
UNIT_FIELD_NPC_EMOTESTATE
@ UNIT_FIELD_NPC_EMOTESTATE
Definition
UpdateFields.h:108
Creatures
Creatures
Definition
alterac_valley.cpp:28
SPELL_SUBMERGE
@ SPELL_SUBMERGE
Definition
boss_anubarak.cpp:16
SPELL_WATERBOLT
@ SPELL_WATERBOLT
Definition
boss_balinda.cpp:31
SPELL_KNOCKBACK
@ SPELL_KNOCKBACK
Definition
boss_broodlord_lashlayer.cpp:21
SPELL_EMERGE
@ SPELL_EMERGE
Definition
boss_drakkari_colossus.cpp:17
SPELL_HAMSTRING
@ SPELL_HAMSTRING
Definition
boss_general_angerforge.cpp:12
SPELL_ARCINGSMASH
@ SPELL_ARCINGSMASH
Definition
boss_ironaya.cpp:19
NPC_COILFANG_GUARDIAN
@ NPC_COILFANG_GUARDIAN
Definition
boss_lurker_below.cpp:42
NPC_COILFANG_AMBUSHER
@ NPC_COILFANG_AMBUSHER
Definition
boss_lurker_below.cpp:43
AddSC_boss_the_lurker_below
void AddSC_boss_the_lurker_below()
Definition
boss_lurker_below.cpp:437
SPELL_SPREAD_SHOT
@ SPELL_SPREAD_SHOT
Definition
boss_lurker_below.cpp:33
SPELL_SHOOT
@ SPELL_SHOOT
Definition
boss_lurker_below.cpp:34
SPELL_WATERBOLT
@ SPELL_WATERBOLT
Definition
boss_lurker_below.cpp:27
SPELL_SPOUT_ANIM
@ SPELL_SPOUT_ANIM
Definition
boss_lurker_below.cpp:22
SPELL_EMERGE
@ SPELL_EMERGE
Definition
boss_lurker_below.cpp:29
SPELL_SPOUT
@ SPELL_SPOUT
Definition
boss_lurker_below.cpp:21
SPELL_SPOUT_BREATH
@ SPELL_SPOUT_BREATH
Definition
boss_lurker_below.cpp:23
SPELL_WHIRL
@ SPELL_WHIRL
Definition
boss_lurker_below.cpp:26
SPELL_SUBMERGE
@ SPELL_SUBMERGE
Definition
boss_lurker_below.cpp:28
SPELL_GEYSER
@ SPELL_GEYSER
Definition
boss_lurker_below.cpp:25
AddPos
float AddPos[9][3]
Definition
boss_lurker_below.cpp:50
EMOTE_SPOUT
#define EMOTE_SPOUT
Definition
boss_lurker_below.cpp:46
SPOUT_DIST
#define SPOUT_DIST
Definition
boss_lurker_below.cpp:48
SPELL_WHIRL
@ SPELL_WHIRL
Definition
boss_northrend_beasts.cpp:88
SPELL_SHOOT
@ SPELL_SHOOT
Definition
boss_quartermaster_zigris.cpp:12
CreatureAI
Definition
CreatureAI.h:54
CreatureAI::DoZoneInCombat
void DoZoneInCombat(Creature *creature=NULL, float maxRangeToNearestTarget=50.0f)
Definition
CreatureAI.cpp:33
CreatureAI::UpdateVictim
bool UpdateVictim()
Definition
CreatureAI.cpp:192
CreatureAI::EnterEvadeMode
virtual void EnterEvadeMode()
Definition
CreatureAI.cpp:130
Creature
Definition
Creature.h:427
CreatureScript::CreatureScript
CreatureScript(const char *name)
Definition
ScriptMgr.cpp:1436
GameObject
Definition
GameObject.h:629
GameObjectScript::GameObjectScript
GameObjectScript(const char *name)
Definition
ScriptMgr.cpp:1442
InstanceScript
Definition
InstanceScript.h:123
LinkedListHead::isEmpty
bool isEmpty() const
Definition
LinkedList.h:86
Map
Definition
Map.h:238
Map::IsDungeon
bool IsDungeon() const
Definition
Map.h:369
Map::PlayerList
MapRefManager PlayerList
Definition
Map.h:406
Map::GetPlayers
PlayerList const & GetPlayers() const
Definition
Map.h:407
MapRefManager::end
iterator end()
Definition
MapRefManager.h:25
MapRefManager::begin
iterator begin()
Definition
MapRefManager.h:24
MapRefManager::const_iterator
LinkedListHead::Iterator< MapReference const > const_iterator
Definition
MapRefManager.h:17
Player
Definition
Player.h:1289
SummonList
Definition
ScriptedCreature.h:19
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
WorldObject::GetInstanceScript
InstanceScript * GetInstanceScript()
Definition
Object.cpp:1612
boss_the_lurker_below
Definition
boss_lurker_below.cpp:65
boss_the_lurker_below::boss_the_lurker_below
boss_the_lurker_below()
Definition
boss_lurker_below.cpp:67
boss_the_lurker_below::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_lurker_below.cpp:69
go_strange_pool
Definition
boss_lurker_below.cpp:415
go_strange_pool::go_strange_pool
go_strange_pool()
Definition
boss_lurker_below.cpp:417
go_strange_pool::OnGossipHello
bool OnGossipHello(Player *player, GameObject *go) OVERRIDE
Definition
boss_lurker_below.cpp:419
npc_coilfang_ambusher
Definition
boss_lurker_below.cpp:356
npc_coilfang_ambusher::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_lurker_below.cpp:360
npc_coilfang_ambusher::npc_coilfang_ambusher
npc_coilfang_ambusher()
Definition
boss_lurker_below.cpp:358
serpent_shrine.h
DATA_STRANGE_POOL
@ DATA_STRANGE_POOL
Definition
serpent_shrine.h:40
DATA_THELURKERBELOWEVENT
@ DATA_THELURKERBELOWEVENT
Definition
serpent_shrine.h:34
ScriptedAI::SetCombatMovement
void SetCombatMovement(bool allowMovement)
Definition
ScriptedCreature.cpp:394
ScriptedAI::me
Creature * me
Definition
ScriptedCreature.h:182
ScriptedAI::ScriptedAI
ScriptedAI(Creature *creature)
Definition
ScriptedCreature.cpp:85
ScriptedAI::AttackStart
void AttackStart(Unit *) OVERRIDE
Definition
ScriptedCreature.cpp:118
boss_the_lurker_below::boss_the_lurker_belowAI
Definition
boss_lurker_below.cpp:75
boss_the_lurker_below::boss_the_lurker_belowAI::instance
InstanceScript * instance
Definition
boss_lurker_below.cpp:82
boss_the_lurker_below::boss_the_lurker_belowAI::MovementInform
void MovementInform(uint32 type, uint32) OVERRIDE
Definition
boss_lurker_below.cpp:169
boss_the_lurker_below::boss_the_lurker_belowAI::MoveInLineOfSight
void MoveInLineOfSight(Unit *who) OVERRIDE
Definition
boss_lurker_below.cpp:156
boss_the_lurker_below::boss_the_lurker_belowAI::WaitTimer2
uint32 WaitTimer2
Definition
boss_lurker_below.cpp:98
boss_the_lurker_below::boss_the_lurker_belowAI::Reset
void Reset() OVERRIDE
Definition
boss_lurker_below.cpp:106
boss_the_lurker_below::boss_the_lurker_belowAI::InRange
bool InRange
Definition
boss_lurker_below.cpp:87
boss_the_lurker_below::boss_the_lurker_belowAI::WaitTimer
uint32 WaitTimer
Definition
boss_lurker_below.cpp:97
boss_the_lurker_below::boss_the_lurker_belowAI::Submerged
bool Submerged
Definition
boss_lurker_below.cpp:86
boss_the_lurker_below::boss_the_lurker_belowAI::CheckCanStart
bool CheckCanStart()
Definition
boss_lurker_below.cpp:100
boss_the_lurker_below::boss_the_lurker_belowAI::EnterCombat
void EnterCombat(Unit *) OVERRIDE
Definition
boss_lurker_below.cpp:150
boss_the_lurker_below::boss_the_lurker_belowAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_lurker_below.cpp:175
boss_the_lurker_below::boss_the_lurker_belowAI::CanStartEvent
bool CanStartEvent
Definition
boss_lurker_below.cpp:88
boss_the_lurker_below::boss_the_lurker_belowAI::RotTimer
uint32 RotTimer
Definition
boss_lurker_below.cpp:89
boss_the_lurker_below::boss_the_lurker_belowAI::SpoutAnimTimer
uint32 SpoutAnimTimer
Definition
boss_lurker_below.cpp:90
boss_the_lurker_below::boss_the_lurker_belowAI::GeyserTimer
uint32 GeyserTimer
Definition
boss_lurker_below.cpp:95
boss_the_lurker_below::boss_the_lurker_belowAI::WaterboltTimer
uint32 WaterboltTimer
Definition
boss_lurker_below.cpp:91
boss_the_lurker_below::boss_the_lurker_belowAI::boss_the_lurker_belowAI
boss_the_lurker_belowAI(Creature *creature)
Definition
boss_lurker_below.cpp:76
boss_the_lurker_below::boss_the_lurker_belowAI::Summons
SummonList Summons
Definition
boss_lurker_below.cpp:83
boss_the_lurker_below::boss_the_lurker_belowAI::JustDied
void JustDied(Unit *) OVERRIDE
Definition
boss_lurker_below.cpp:139
boss_the_lurker_below::boss_the_lurker_belowAI::CheckTimer
uint32 CheckTimer
Definition
boss_lurker_below.cpp:96
boss_the_lurker_below::boss_the_lurker_belowAI::SpoutTimer
uint32 SpoutTimer
Definition
boss_lurker_below.cpp:92
boss_the_lurker_below::boss_the_lurker_belowAI::Spawned
bool Spawned
Definition
boss_lurker_below.cpp:85
boss_the_lurker_below::boss_the_lurker_belowAI::WhirlTimer
uint32 WhirlTimer
Definition
boss_lurker_below.cpp:93
boss_the_lurker_below::boss_the_lurker_belowAI::PhaseTimer
uint32 PhaseTimer
Definition
boss_lurker_below.cpp:94
npc_coilfang_ambusher::npc_coilfang_ambusherAI
Definition
boss_lurker_below.cpp:366
npc_coilfang_ambusher::npc_coilfang_ambusherAI::npc_coilfang_ambusherAI
npc_coilfang_ambusherAI(Creature *creature)
Definition
boss_lurker_below.cpp:367
npc_coilfang_ambusher::npc_coilfang_ambusherAI::MoveInLineOfSight
void MoveInLineOfSight(Unit *who) OVERRIDE
Definition
boss_lurker_below.cpp:381
npc_coilfang_ambusher::npc_coilfang_ambusherAI::ShootBowTimer
uint32 ShootBowTimer
Definition
boss_lurker_below.cpp:373
npc_coilfang_ambusher::npc_coilfang_ambusherAI::MultiShotTimer
uint32 MultiShotTimer
Definition
boss_lurker_below.cpp:372
npc_coilfang_ambusher::npc_coilfang_ambusherAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_lurker_below.cpp:391
npc_coilfang_ambusher::npc_coilfang_ambusherAI::Reset
void Reset() OVERRIDE
Definition
boss_lurker_below.cpp:375
src
server
scripts
Outland
CoilfangReservoir
SerpentShrine
boss_lurker_below.cpp
Generated on
for Project SkyFire Core by
1.17.0