Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
boss_nefarian.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 "
ScriptedGossip.h
"
8
#include "
ScriptedCreature.h
"
9
#include "
blackwing_lair.h
"
10
#include "
Player.h
"
11
12
enum
Events
13
{
14
// Victor Nefarius
15
EVENT_SPAWN_ADD
= 1,
16
EVENT_SHADOW_BOLT
= 2,
17
EVENT_FEAR
= 3,
18
EVENT_MIND_CONTROL
= 4,
19
// Nefarian
20
EVENT_SHADOWFLAME
= 5,
21
EVENT_VEILOFSHADOW
= 6,
22
EVENT_CLEAVE
= 7,
23
EVENT_TAILLASH
= 8,
24
EVENT_CLASSCALL
= 9,
25
// UBRS
26
EVENT_CHAOS_1
= 10,
27
EVENT_CHAOS_2
= 11,
28
EVENT_PATH_2
= 12,
29
EVENT_PATH_3
= 13,
30
EVENT_SUCCESS_1
= 14,
31
EVENT_SUCCESS_2
= 15,
32
EVENT_SUCCESS_3
= 16,
33
};
34
35
enum
Says
36
{
37
// Nefarius
38
// UBRS
39
SAY_CHAOS_SPELL
= 9,
40
SAY_SUCCESS
= 10,
41
SAY_FAILURE
= 11,
42
// BWL
43
SAY_GAMESBEGIN_1
= 12,
44
SAY_GAMESBEGIN_2
= 13,
45
// SAY_VAEL_INTRO = 14, Not used - when he corrupts Vaelastrasz
46
47
// Nefarian
48
SAY_RANDOM
= 0,
49
SAY_RAISE_SKELETONS
= 1,
50
SAY_SLAY
= 2,
51
SAY_DEATH
= 3,
52
53
SAY_MAGE
= 4,
54
SAY_WARRIOR
= 5,
55
SAY_DRUID
= 6,
56
SAY_PRIEST
= 7,
57
SAY_PALADIN
= 8,
58
SAY_SHAMAN
= 9,
59
SAY_WARLOCK
= 10,
60
SAY_HUNTER
= 11,
61
SAY_ROGUE
= 12,
62
SAY_DEATH_KNIGHT
= 13
63
};
64
65
enum
Gossip
66
{
67
GOSSIP_ID
= 21332,
68
GOSSIP_OPTION_ID
= 0
69
};
70
71
enum
Paths
72
{
73
NEFARIUS_PATH_2
= 1379671,
74
NEFARIUS_PATH_3
= 1379672
75
};
76
77
enum
GameObjects
78
{
79
GO_PORTCULLIS_ACTIVE
= 164726,
80
GO_PORTCULLIS_TOBOSSROOMS
= 175186
81
};
82
83
enum
Creatures
84
{
85
NPC_BRONZE_DRAKANOID
= 14263,
86
NPC_BLUE_DRAKANOID
= 14261,
87
NPC_RED_DRAKANOID
= 14264,
88
NPC_GREEN_DRAKANOID
= 14262,
89
NPC_BLACK_DRAKANOID
= 14265,
90
NPC_CHROMATIC_DRAKANOID
= 14302,
91
NPC_BONE_CONSTRUCT
= 14605,
92
// UBRS
93
NPC_GYTH
= 10339
94
};
95
96
enum
Spells
97
{
98
// Victor Nefarius
99
// UBRS Spells
100
SPELL_CHROMATIC_CHAOS
= 16337,
// Self Cast hits 10339
101
SPELL_VAELASTRASZZ_SPAWN
= 16354,
// Self Cast Depawn one sec after
102
// BWL Spells
103
SPELL_SHADOWBOLT
= 22677,
104
SPELL_SHADOWBOLT_VOLLEY
= 22665,
105
SPELL_SHADOW_COMMAND
= 22667,
106
SPELL_FEAR
= 22678,
107
108
SPELL_NEFARIANS_BARRIER
= 22663,
109
110
// Nefarian
111
SPELL_SHADOWFLAME_INITIAL
= 22992,
112
SPELL_SHADOWFLAME
= 22539,
113
SPELL_BELLOWINGROAR
= 22686,
114
SPELL_VEILOFSHADOW
= 7068,
115
SPELL_CLEAVE
= 20691,
116
SPELL_TAILLASH
= 23364,
117
118
SPELL_MAGE
= 23410,
// wild magic
119
SPELL_WARRIOR
= 23397,
// beserk
120
SPELL_DRUID
= 23398,
// cat form
121
SPELL_PRIEST
= 23401,
// corrupted healing
122
SPELL_PALADIN
= 23418,
// syphon blessing
123
SPELL_SHAMAN
= 23425,
// totems
124
SPELL_WARLOCK
= 23427,
// infernals
125
SPELL_HUNTER
= 23436,
// bow broke
126
SPELL_ROGUE
= 23414,
// Paralise
127
SPELL_DEATH_KNIGHT
= 49576
// Death Grip
128
129
// 19484
130
// 22664
131
// 22674
132
// 22666
133
};
134
135
Position
const
DrakeSpawnLoc
[2] =
// drakonid
136
{
137
{-7591.151855f, -1204.051880f, 476.800476f, 3.0f},
138
{-7514.598633f, -1150.448853f, 476.796570f, 3.0f}
139
};
140
141
Position
const
NefarianLoc
[2] =
142
{
143
{-7449.763672f, -1387.816040f, 526.783691f, 3.0f},
// nefarian spawn
144
{-7535.456543f, -1279.562500f, 476.798706f, 3.0f}
// nefarian move
145
};
146
147
uint32
const
Entry
[5] = {
NPC_BRONZE_DRAKANOID
,
NPC_BLUE_DRAKANOID
,
NPC_RED_DRAKANOID
,
NPC_GREEN_DRAKANOID
,
NPC_BLACK_DRAKANOID
};
148
149
class
boss_victor_nefarius
:
public
CreatureScript
150
{
151
public
:
152
boss_victor_nefarius
() :
CreatureScript
(
"boss_victor_nefarius"
) { }
153
154
struct
boss_victor_nefariusAI
:
public
BossAI
155
{
156
boss_victor_nefariusAI
(
Creature
* creature) :
BossAI
(creature,
BOSS_NEFARIAN
) { }
157
158
void
Reset
()
OVERRIDE
159
{
160
if
(
me
->GetMapId() == 469)
161
{
162
if
(!
me
->FindNearestCreature(
NPC_NEFARIAN
, 1000.0f,
true
))
163
_Reset
();
164
SpawnedAdds
= 0;
165
166
me
->SetVisible(
true
);
167
me
->SetPhaseMask(1,
true
);
168
me
->SetUInt32Value(
UNIT_FIELD_NPC_FLAGS
, 1);
169
me
->setFaction(35);
170
me
->SetStandState(
UNIT_STAND_STATE_SIT_HIGH_CHAIR
);
171
me
->RemoveAura(
SPELL_NEFARIANS_BARRIER
);
172
}
173
}
174
175
void
JustReachedHome
()
OVERRIDE
176
{
177
Reset
();
178
}
179
180
void
BeginEvent
(
Player
* target)
181
{
182
_EnterCombat
();
183
184
Talk
(
SAY_GAMESBEGIN_2
);
185
186
me
->setFaction(103);
187
me
->SetUInt32Value(
UNIT_FIELD_NPC_FLAGS
, 0);
188
DoCast
(
me
,
SPELL_NEFARIANS_BARRIER
);
189
me
->SetStandState(
UNIT_STAND_STATE_STAND
);
190
AttackStart
(target);
191
events
.ScheduleEvent(
EVENT_SHADOW_BOLT
, std::rand() % 10000 + 3000);
192
events
.ScheduleEvent(
EVENT_FEAR
, std::rand() % 20000 + 10000);
193
//events.ScheduleEvent(EVENT_MIND_CONTROL, std::rand() % 35000 + 30000);
194
events
.ScheduleEvent(
EVENT_SPAWN_ADD
, 10000);
195
}
196
197
void
SummonedCreatureDies
(
Creature
* summon,
Unit
*
/*killer*/
)
OVERRIDE
198
{
199
if
(summon->GetEntry() !=
NPC_NEFARIAN
)
200
{
201
summon->UpdateEntry(
NPC_BONE_CONSTRUCT
);
202
summon->SetFlag(
UNIT_FIELD_FLAGS
,
UNIT_FLAG_NOT_SELECTABLE
);
203
summon->SetReactState(
REACT_PASSIVE
);
204
summon->SetStandState(
UNIT_STAND_STATE_DEAD
);
205
}
206
}
207
208
void
JustSummoned
(
Creature
*
/*summon*/
)
OVERRIDE
{ }
209
210
void
SetData
(
uint32
type,
uint32
data)
OVERRIDE
211
{
212
if
(
instance
&& type == 1 && data == 1)
213
{
214
me
->StopMoving();
215
events
.ScheduleEvent(
EVENT_PATH_2
, 9000);
216
}
217
218
if
(
instance
&& type == 1 && data == 2)
219
{
220
events
.ScheduleEvent(
EVENT_SUCCESS_1
, 5000);
221
}
222
}
223
224
void
UpdateAI
(
uint32
diff)
OVERRIDE
225
{
226
if
(!
UpdateVictim
())
227
{
228
events
.Update(diff);
229
230
while
(
uint32
eventId =
events
.ExecuteEvent())
231
{
232
switch
(eventId)
233
{
234
case
EVENT_PATH_2
:
235
me
->GetMotionMaster()->MovePath(
NEFARIUS_PATH_2
,
false
);
236
events
.ScheduleEvent(
EVENT_CHAOS_1
, 7000);
237
break
;
238
case
EVENT_CHAOS_1
:
239
if
(
Creature
* gyth =
me
->FindNearestCreature(
NPC_GYTH
, 75.0f,
true
))
240
{
241
me
->SetFacingToObject(gyth);
242
Talk
(
SAY_CHAOS_SPELL
);
243
}
244
events
.ScheduleEvent(
EVENT_CHAOS_2
, 2000);
245
break
;
246
case
EVENT_CHAOS_2
:
247
DoCast
(
SPELL_CHROMATIC_CHAOS
);
248
me
->SetFacingTo(1.570796f);
249
break
;
250
case
EVENT_SUCCESS_1
:
251
if
(
Unit
* player =
me
->SelectNearestPlayer(60.0f))
252
{
253
me
->SetFacingToObject(player);
254
Talk
(
SAY_SUCCESS
);
255
if
(
GameObject
* portcullis1 =
me
->FindNearestGameObject(
GO_PORTCULLIS_ACTIVE
, 65.0f))
256
portcullis1->SetGoState(
GOState::GO_STATE_ACTIVE
);
257
if
(
GameObject
* portcullis2 =
me
->FindNearestGameObject(
GO_PORTCULLIS_TOBOSSROOMS
, 80.0f))
258
portcullis2->SetGoState(
GOState::GO_STATE_ACTIVE
);
259
}
260
events
.ScheduleEvent(
EVENT_SUCCESS_2
, 4000);
261
break
;
262
case
EVENT_SUCCESS_2
:
263
DoCast
(
me
,
SPELL_VAELASTRASZZ_SPAWN
);
264
me
->DespawnOrUnsummon(1000);
265
break
;
266
case
EVENT_PATH_3
:
267
me
->GetMotionMaster()->MovePath(
NEFARIUS_PATH_3
,
false
);
268
break
;
269
default
:
270
break
;
271
}
272
}
273
return
;
274
}
275
276
// Only do this if we haven't spawned nefarian yet
277
if
(
UpdateVictim
() &&
SpawnedAdds
<= 42)
278
{
279
events
.Update(diff);
280
281
if
(
me
->HasUnitState(
UNIT_STATE_CASTING
))
282
return
;
283
284
while
(
uint32
eventId =
events
.ExecuteEvent())
285
{
286
switch
(eventId)
287
{
288
case
EVENT_SHADOW_BOLT
:
289
switch
(std::rand() % 1)
290
{
291
case
0:
292
DoCastVictim
(
SPELL_SHADOWBOLT_VOLLEY
);
293
break
;
294
case
1:
295
if
(
Unit
* target =
SelectTarget
(
SELECT_TARGET_RANDOM
, 0, 40,
true
))
296
DoCast
(target,
SPELL_SHADOWBOLT
);
297
break
;
298
}
299
DoResetThreat
();
300
events
.ScheduleEvent(
EVENT_SHADOW_BOLT
, std::rand() % 10000 + 3000);
301
break
;
302
case
EVENT_FEAR
:
303
if
(
Unit
* target =
SelectTarget
(
SELECT_TARGET_RANDOM
, 0, 40,
true
))
304
DoCast
(target,
SPELL_FEAR
);
305
events
.ScheduleEvent(
EVENT_FEAR
, std::rand() % 20000 + 10000);
306
break
;
307
case
EVENT_MIND_CONTROL
:
308
if
(
Unit
* target =
SelectTarget
(
SELECT_TARGET_RANDOM
, 0, 40,
true
))
309
DoCast
(target,
SPELL_SHADOW_COMMAND
);
310
events
.ScheduleEvent(
EVENT_MIND_CONTROL
, std::rand() % 35000 + 30000);
311
break
;
312
case
EVENT_SPAWN_ADD
:
313
for
(
uint8
i=0; i<2; ++i)
314
{
315
uint32
CreatureID
;
316
if
((std::rand() % 2) == 0)
317
CreatureID
=
NPC_CHROMATIC_DRAKANOID
;
318
else
319
CreatureID
=
Entry
[std::rand() % 4];
320
if
(
Creature
* dragon =
me
->SummonCreature(
CreatureID
,
DrakeSpawnLoc
[i]))
321
{
322
dragon->setFaction(103);
323
dragon->AI()->AttackStart(
me
->GetVictim());
324
}
325
326
if
(++
SpawnedAdds
>= 42)
327
{
328
if
(
Creature
* nefarian =
me
->SummonCreature(
NPC_NEFARIAN
,
NefarianLoc
[0]))
329
{
330
nefarian->setActive(
true
);
331
nefarian->SetCanFly(
true
);
332
nefarian->SetDisableGravity(
true
);
333
nefarian->AI()->DoCastAOE(
SPELL_SHADOWFLAME_INITIAL
);
334
nefarian->GetMotionMaster()->MovePoint(1,
NefarianLoc
[1]);
335
}
336
events
.CancelEvent(
EVENT_MIND_CONTROL
);
337
events
.CancelEvent(
EVENT_FEAR
);
338
events
.CancelEvent(
EVENT_SHADOW_BOLT
);
339
me
->SetVisible(
false
);
340
return
;
341
}
342
}
343
events
.ScheduleEvent(
EVENT_SPAWN_ADD
, 4000);
344
break
;
345
}
346
}
347
}
348
}
349
350
void
sGossipSelect
(
Player
* player,
uint32
sender,
uint32
action)
OVERRIDE
351
{
352
if
(sender ==
GOSSIP_ID
&& action ==
GOSSIP_OPTION_ID
)
353
{
354
player->CLOSE_GOSSIP_MENU();
355
Talk
(
SAY_GAMESBEGIN_1
);
356
BeginEvent
(player);
357
}
358
}
359
360
private
:
361
uint32
SpawnedAdds
;
362
};
363
364
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
365
{
366
return
new
boss_victor_nefariusAI
(creature);
367
}
368
};
369
370
class
boss_nefarian
:
public
CreatureScript
371
{
372
public
:
373
boss_nefarian
() :
CreatureScript
(
"boss_nefarian"
) { }
374
375
struct
boss_nefarianAI
:
public
BossAI
376
{
377
boss_nefarianAI
(
Creature
* creature) :
BossAI
(creature,
BOSS_NEFARIAN
) { }
378
379
void
Reset
()
OVERRIDE
380
{
381
Phase3
=
false
;
382
canDespawn
=
false
;
383
DespawnTimer
= 30000;
384
}
385
386
void
JustReachedHome
()
OVERRIDE
387
{
388
canDespawn
=
true
;
389
}
390
391
void
EnterCombat
(
Unit
*
/*who*/
)
OVERRIDE
392
{
393
events
.ScheduleEvent(
EVENT_SHADOWFLAME
, 12000);
394
events
.ScheduleEvent(
EVENT_FEAR
, std::rand() % 35000 + 25000);
395
events
.ScheduleEvent(
EVENT_VEILOFSHADOW
, std::rand() % 35000 + 25000);
396
events
.ScheduleEvent(
EVENT_CLEAVE
, 7000);
397
//events.ScheduleEvent(EVENT_TAILLASH, 10000);
398
events
.ScheduleEvent(
EVENT_CLASSCALL
, std::rand() % 35000 + 30000);
399
Talk
(
SAY_RANDOM
);
400
}
401
402
void
JustDied
(
Unit
*
/*Killer*/
)
OVERRIDE
403
{
404
_JustDied
();
405
Talk
(
SAY_DEATH
);
406
}
407
408
void
KilledUnit
(
Unit
* victim)
OVERRIDE
409
{
410
if
(rand()%5)
411
return
;
412
413
Talk
(
SAY_SLAY
, victim);
414
}
415
416
void
MovementInform
(
uint32
type,
uint32
id
)
OVERRIDE
417
{
418
if
(type !=
POINT_MOTION_TYPE
)
419
return
;
420
421
if
(
id
== 1)
422
{
423
me
->SetInCombatWithZone();
424
if
(
me
->GetVictim())
425
AttackStart
(
me
->GetVictim());
426
}
427
}
428
429
void
UpdateAI
(
uint32
diff)
OVERRIDE
430
{
431
if
(
canDespawn
&&
DespawnTimer
<= diff)
432
{
433
if
(
instance
)
434
instance
->SetBossState(
BOSS_NEFARIAN
,
FAIL
);
435
436
std::list<Creature*> constructList;
437
me
->GetCreatureListWithEntryInGrid(constructList,
NPC_BONE_CONSTRUCT
, 500.0f);
438
for
(std::list<Creature*>::const_iterator itr = constructList.begin(); itr != constructList.end(); ++itr)
439
(*itr)->DespawnOrUnsummon();
440
441
}
else
DespawnTimer
-= diff;
442
443
if
(!
UpdateVictim
())
444
return
;
445
446
if
(
canDespawn
)
447
canDespawn
=
false
;
448
449
events
.Update(diff);
450
451
if
(
me
->HasUnitState(
UNIT_STATE_CASTING
))
452
return
;
453
454
while
(
uint32
eventId =
events
.ExecuteEvent())
455
{
456
switch
(eventId)
457
{
458
case
EVENT_SHADOWFLAME
:
459
DoCastVictim
(
SPELL_SHADOWFLAME
);
460
events
.ScheduleEvent(
EVENT_SHADOWFLAME
, 12000);
461
break
;
462
case
EVENT_FEAR
:
463
DoCastVictim
(
SPELL_BELLOWINGROAR
);
464
events
.ScheduleEvent(
EVENT_FEAR
, std::rand() % 35000 + 25000);
465
break
;
466
case
EVENT_VEILOFSHADOW
:
467
DoCastVictim
(
SPELL_VEILOFSHADOW
);
468
events
.ScheduleEvent(
EVENT_VEILOFSHADOW
, std::rand() % 35000 + 25000);
469
break
;
470
case
EVENT_CLEAVE
:
471
DoCastVictim
(
SPELL_CLEAVE
);
472
events
.ScheduleEvent(
EVENT_CLEAVE
, 7000);
473
break
;
474
case
EVENT_TAILLASH
:
475
// Cast NYI since we need a better check for behind target
476
DoCastVictim
(
SPELL_TAILLASH
);
477
events
.ScheduleEvent(
EVENT_TAILLASH
, 10000);
478
break
;
479
case
EVENT_CLASSCALL
:
480
if
(
Unit
* target =
SelectTarget
(
SELECT_TARGET_RANDOM
, 0, 100.0f,
true
))
481
switch
(target->getClass())
482
{
483
case
CLASS_MAGE
:
484
Talk
(
SAY_MAGE
);
485
DoCast
(
me
,
SPELL_MAGE
);
486
break
;
487
case
CLASS_WARRIOR
:
488
Talk
(
SAY_WARRIOR
);
489
DoCast
(
me
,
SPELL_WARRIOR
);
490
break
;
491
case
CLASS_DRUID
:
492
Talk
(
SAY_DRUID
);
493
DoCast
(target,
SPELL_DRUID
);
494
break
;
495
case
CLASS_PRIEST
:
496
Talk
(
SAY_PRIEST
);
497
DoCast
(
me
,
SPELL_PRIEST
);
498
break
;
499
case
CLASS_PALADIN
:
500
Talk
(
SAY_PALADIN
);
501
DoCast
(
me
,
SPELL_PALADIN
);
502
break
;
503
case
CLASS_SHAMAN
:
504
Talk
(
SAY_SHAMAN
);
505
DoCast
(
me
,
SPELL_SHAMAN
);
506
break
;
507
case
CLASS_WARLOCK
:
508
Talk
(
SAY_WARLOCK
);
509
DoCast
(
me
,
SPELL_WARLOCK
);
510
break
;
511
case
CLASS_HUNTER
:
512
Talk
(
SAY_HUNTER
);
513
DoCast
(
me
,
SPELL_HUNTER
);
514
break
;
515
case
CLASS_ROGUE
:
516
Talk
(
SAY_ROGUE
);
517
DoCast
(
me
,
SPELL_ROGUE
);
518
break
;
519
case
CLASS_DEATH_KNIGHT
:
520
Talk
(
SAY_DEATH_KNIGHT
);
521
DoCast
(
me
,
SPELL_DEATH_KNIGHT
);
522
break
;
523
default
:
524
break
;
525
}
526
events
.ScheduleEvent(
EVENT_CLASSCALL
, std::rand() % 35000 + 30000);
527
break
;
528
}
529
}
530
531
// Phase3 begins when health below 20 pct
532
if
(!
Phase3
&&
HealthBelowPct
(20))
533
{
534
std::list<Creature*> constructList;
535
me
->GetCreatureListWithEntryInGrid(constructList,
NPC_BONE_CONSTRUCT
, 500.0f);
536
for
(std::list<Creature*>::const_iterator itr = constructList.begin(); itr != constructList.end(); ++itr)
537
if
((*itr) && !(*itr)->IsAlive())
538
{
539
(*itr)->Respawn();
540
(*itr)->SetInCombatWithZone();
541
(*itr)->RemoveFlag(
UNIT_FIELD_FLAGS
,
UNIT_FLAG_NOT_SELECTABLE
);
542
(*itr)->SetReactState(
REACT_AGGRESSIVE
);
543
(*itr)->SetStandState(
UNIT_STAND_STATE_STAND
);
544
}
545
546
Phase3
=
true
;
547
Talk
(
SAY_RAISE_SKELETONS
);
548
}
549
550
DoMeleeAttackIfReady
();
551
}
552
553
private
:
554
bool
canDespawn
;
555
uint32
DespawnTimer
;
556
bool
Phase3
;
557
};
558
559
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
560
{
561
return
new
boss_nefarianAI
(creature);
562
}
563
};
564
565
void
AddSC_boss_nefarian
()
566
{
567
new
boss_victor_nefarius
();
568
new
boss_nefarian
();
569
}
Spells
Spells
Definition
BattlegroundIC.h:645
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
GOState::GO_STATE_ACTIVE
@ GO_STATE_ACTIVE
Definition
GameObject.h:576
FAIL
@ FAIL
Definition
InstanceScript.h:48
POINT_MOTION_TYPE
@ POINT_MOTION_TYPE
Definition
MotionMaster.h:33
Player.h
ScriptMgr.h
ScriptedCreature.h
ScriptedGossip.h
CLASS_HUNTER
@ CLASS_HUNTER
Definition
SharedDefines.h:142
CLASS_DRUID
@ CLASS_DRUID
Definition
SharedDefines.h:150
CLASS_SHAMAN
@ CLASS_SHAMAN
Definition
SharedDefines.h:146
CLASS_PRIEST
@ CLASS_PRIEST
Definition
SharedDefines.h:144
CLASS_WARRIOR
@ CLASS_WARRIOR
Definition
SharedDefines.h:140
CLASS_WARLOCK
@ CLASS_WARLOCK
Definition
SharedDefines.h:148
CLASS_MAGE
@ CLASS_MAGE
Definition
SharedDefines.h:147
CLASS_DEATH_KNIGHT
@ CLASS_DEATH_KNIGHT
Definition
SharedDefines.h:145
CLASS_PALADIN
@ CLASS_PALADIN
Definition
SharedDefines.h:141
CLASS_ROGUE
@ CLASS_ROGUE
Definition
SharedDefines.h:143
UNIT_STAND_STATE_SIT_HIGH_CHAIR
@ UNIT_STAND_STATE_SIT_HIGH_CHAIR
Definition
Unit.h:168
UNIT_STAND_STATE_DEAD
@ UNIT_STAND_STATE_DEAD
Definition
Unit.h:169
UNIT_STAND_STATE_STAND
@ UNIT_STAND_STATE_STAND
Definition
Unit.h:162
UNIT_STATE_CASTING
@ UNIT_STATE_CASTING
Definition
Unit.h:527
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
SELECT_TARGET_RANDOM
@ SELECT_TARGET_RANDOM
Definition
UnitAI.h:23
UNIT_FIELD_NPC_FLAGS
@ UNIT_FIELD_NPC_FLAGS
Definition
UpdateFields.h:107
UNIT_FIELD_FLAGS
@ UNIT_FIELD_FLAGS
Definition
UpdateFields.h:82
Creatures
Creatures
Definition
alterac_valley.cpp:28
SPELL_CLEAVE
@ SPELL_CLEAVE
Definition
alterac_valley.cpp:12
Events
Events
Definition
alterac_valley.cpp:40
EVENT_CLEAVE
@ EVENT_CLEAVE
Definition
alterac_valley.cpp:42
NPC_GYTH
@ NPC_GYTH
Definition
blackrock_spire.h:54
GO_PORTCULLIS_TOBOSSROOMS
@ GO_PORTCULLIS_TOBOSSROOMS
Definition
blackrock_spire.h:105
GO_PORTCULLIS_ACTIVE
@ GO_PORTCULLIS_ACTIVE
Definition
blackrock_spire.h:104
blackwing_lair.h
NPC_NEFARIAN
@ NPC_NEFARIAN
Definition
blackwing_lair.h:39
BOSS_NEFARIAN
@ BOSS_NEFARIAN
Definition
blackwing_lair.h:22
SAY_SLAY
@ SAY_SLAY
Definition
boss_alizabal.cpp:20
SPELL_SHADOWBOLT
@ SPELL_SHADOWBOLT
Definition
boss_anubshiah.cpp:11
SAY_DEATH
#define SAY_DEATH
Definition
boss_commander_kolurg.cpp:30
SPELL_SHADOWFLAME
@ SPELL_SHADOWFLAME
Definition
boss_ebonroc.cpp:12
EVENT_SHADOWFLAME
@ EVENT_SHADOWFLAME
Definition
boss_ebonroc.cpp:19
Paths
Paths
Definition
boss_gizrul_the_slavener.cpp:19
NEFARIUS_PATH_2
@ NEFARIUS_PATH_2
Definition
boss_gyth.cpp:22
NEFARIUS_PATH_3
@ NEFARIUS_PATH_3
Definition
boss_gyth.cpp:23
Says
Says
Definition
boss_halycon.cpp:17
Entry
Entry
Definition
boss_headless_horseman.cpp:38
NefarianLoc
Position const NefarianLoc[2]
Definition
boss_nefarian.cpp:141
GO_PORTCULLIS_TOBOSSROOMS
@ GO_PORTCULLIS_TOBOSSROOMS
Definition
boss_nefarian.cpp:80
GO_PORTCULLIS_ACTIVE
@ GO_PORTCULLIS_ACTIVE
Definition
boss_nefarian.cpp:79
SAY_DEATH
@ SAY_DEATH
Definition
boss_nefarian.cpp:51
SAY_PALADIN
@ SAY_PALADIN
Definition
boss_nefarian.cpp:57
SAY_CHAOS_SPELL
@ SAY_CHAOS_SPELL
Definition
boss_nefarian.cpp:39
SAY_WARRIOR
@ SAY_WARRIOR
Definition
boss_nefarian.cpp:54
SAY_SUCCESS
@ SAY_SUCCESS
Definition
boss_nefarian.cpp:40
SAY_PRIEST
@ SAY_PRIEST
Definition
boss_nefarian.cpp:56
SAY_DRUID
@ SAY_DRUID
Definition
boss_nefarian.cpp:55
SAY_SHAMAN
@ SAY_SHAMAN
Definition
boss_nefarian.cpp:58
SAY_GAMESBEGIN_2
@ SAY_GAMESBEGIN_2
Definition
boss_nefarian.cpp:44
SAY_ROGUE
@ SAY_ROGUE
Definition
boss_nefarian.cpp:61
SAY_SLAY
@ SAY_SLAY
Definition
boss_nefarian.cpp:50
SAY_MAGE
@ SAY_MAGE
Definition
boss_nefarian.cpp:53
SAY_GAMESBEGIN_1
@ SAY_GAMESBEGIN_1
Definition
boss_nefarian.cpp:43
SAY_RAISE_SKELETONS
@ SAY_RAISE_SKELETONS
Definition
boss_nefarian.cpp:49
SAY_RANDOM
@ SAY_RANDOM
Definition
boss_nefarian.cpp:48
SAY_HUNTER
@ SAY_HUNTER
Definition
boss_nefarian.cpp:60
SAY_DEATH_KNIGHT
@ SAY_DEATH_KNIGHT
Definition
boss_nefarian.cpp:62
SAY_WARLOCK
@ SAY_WARLOCK
Definition
boss_nefarian.cpp:59
SAY_FAILURE
@ SAY_FAILURE
Definition
boss_nefarian.cpp:41
NPC_BLACK_DRAKANOID
@ NPC_BLACK_DRAKANOID
Definition
boss_nefarian.cpp:89
NPC_BONE_CONSTRUCT
@ NPC_BONE_CONSTRUCT
Definition
boss_nefarian.cpp:91
NPC_BLUE_DRAKANOID
@ NPC_BLUE_DRAKANOID
Definition
boss_nefarian.cpp:86
NPC_CHROMATIC_DRAKANOID
@ NPC_CHROMATIC_DRAKANOID
Definition
boss_nefarian.cpp:90
NPC_GREEN_DRAKANOID
@ NPC_GREEN_DRAKANOID
Definition
boss_nefarian.cpp:88
NPC_GYTH
@ NPC_GYTH
Definition
boss_nefarian.cpp:93
NPC_BRONZE_DRAKANOID
@ NPC_BRONZE_DRAKANOID
Definition
boss_nefarian.cpp:85
NPC_RED_DRAKANOID
@ NPC_RED_DRAKANOID
Definition
boss_nefarian.cpp:87
Entry
uint32 const Entry[5]
Definition
boss_nefarian.cpp:147
SPELL_CLEAVE
@ SPELL_CLEAVE
Definition
boss_nefarian.cpp:115
SPELL_SHADOW_COMMAND
@ SPELL_SHADOW_COMMAND
Definition
boss_nefarian.cpp:105
SPELL_VEILOFSHADOW
@ SPELL_VEILOFSHADOW
Definition
boss_nefarian.cpp:114
SPELL_DEATH_KNIGHT
@ SPELL_DEATH_KNIGHT
Definition
boss_nefarian.cpp:127
SPELL_BELLOWINGROAR
@ SPELL_BELLOWINGROAR
Definition
boss_nefarian.cpp:113
SPELL_SHAMAN
@ SPELL_SHAMAN
Definition
boss_nefarian.cpp:123
SPELL_FEAR
@ SPELL_FEAR
Definition
boss_nefarian.cpp:106
SPELL_DRUID
@ SPELL_DRUID
Definition
boss_nefarian.cpp:120
SPELL_PRIEST
@ SPELL_PRIEST
Definition
boss_nefarian.cpp:121
SPELL_SHADOWBOLT
@ SPELL_SHADOWBOLT
Definition
boss_nefarian.cpp:103
SPELL_NEFARIANS_BARRIER
@ SPELL_NEFARIANS_BARRIER
Definition
boss_nefarian.cpp:108
SPELL_CHROMATIC_CHAOS
@ SPELL_CHROMATIC_CHAOS
Definition
boss_nefarian.cpp:100
SPELL_SHADOWBOLT_VOLLEY
@ SPELL_SHADOWBOLT_VOLLEY
Definition
boss_nefarian.cpp:104
SPELL_VAELASTRASZZ_SPAWN
@ SPELL_VAELASTRASZZ_SPAWN
Definition
boss_nefarian.cpp:101
SPELL_ROGUE
@ SPELL_ROGUE
Definition
boss_nefarian.cpp:126
SPELL_SHADOWFLAME_INITIAL
@ SPELL_SHADOWFLAME_INITIAL
Definition
boss_nefarian.cpp:111
SPELL_TAILLASH
@ SPELL_TAILLASH
Definition
boss_nefarian.cpp:116
SPELL_PALADIN
@ SPELL_PALADIN
Definition
boss_nefarian.cpp:122
SPELL_SHADOWFLAME
@ SPELL_SHADOWFLAME
Definition
boss_nefarian.cpp:112
SPELL_WARLOCK
@ SPELL_WARLOCK
Definition
boss_nefarian.cpp:124
SPELL_WARRIOR
@ SPELL_WARRIOR
Definition
boss_nefarian.cpp:119
SPELL_MAGE
@ SPELL_MAGE
Definition
boss_nefarian.cpp:118
SPELL_HUNTER
@ SPELL_HUNTER
Definition
boss_nefarian.cpp:125
AddSC_boss_nefarian
void AddSC_boss_nefarian()
Definition
boss_nefarian.cpp:565
DrakeSpawnLoc
Position const DrakeSpawnLoc[2]
Definition
boss_nefarian.cpp:135
NEFARIUS_PATH_2
@ NEFARIUS_PATH_2
Definition
boss_nefarian.cpp:73
NEFARIUS_PATH_3
@ NEFARIUS_PATH_3
Definition
boss_nefarian.cpp:74
Gossip
Gossip
Definition
boss_nefarian.cpp:66
GOSSIP_OPTION_ID
@ GOSSIP_OPTION_ID
Definition
boss_nefarian.cpp:68
GOSSIP_ID
@ GOSSIP_ID
Definition
boss_nefarian.cpp:67
EVENT_SUCCESS_3
@ EVENT_SUCCESS_3
Definition
boss_nefarian.cpp:32
EVENT_CHAOS_1
@ EVENT_CHAOS_1
Definition
boss_nefarian.cpp:26
EVENT_SUCCESS_1
@ EVENT_SUCCESS_1
Definition
boss_nefarian.cpp:30
EVENT_VEILOFSHADOW
@ EVENT_VEILOFSHADOW
Definition
boss_nefarian.cpp:21
EVENT_CLASSCALL
@ EVENT_CLASSCALL
Definition
boss_nefarian.cpp:24
EVENT_TAILLASH
@ EVENT_TAILLASH
Definition
boss_nefarian.cpp:23
EVENT_CHAOS_2
@ EVENT_CHAOS_2
Definition
boss_nefarian.cpp:27
EVENT_SPAWN_ADD
@ EVENT_SPAWN_ADD
Definition
boss_nefarian.cpp:15
EVENT_MIND_CONTROL
@ EVENT_MIND_CONTROL
Definition
boss_nefarian.cpp:18
EVENT_PATH_2
@ EVENT_PATH_2
Definition
boss_nefarian.cpp:28
EVENT_FEAR
@ EVENT_FEAR
Definition
boss_nefarian.cpp:17
EVENT_CLEAVE
@ EVENT_CLEAVE
Definition
boss_nefarian.cpp:22
EVENT_SHADOWFLAME
@ EVENT_SHADOWFLAME
Definition
boss_nefarian.cpp:20
EVENT_PATH_3
@ EVENT_PATH_3
Definition
boss_nefarian.cpp:29
EVENT_SUCCESS_2
@ EVENT_SUCCESS_2
Definition
boss_nefarian.cpp:31
EVENT_SHADOW_BOLT
@ EVENT_SHADOW_BOLT
Definition
boss_nefarian.cpp:16
BossAI::instance
InstanceScript *const instance
Definition
ScriptedCreature.h:383
BossAI::events
EventMap events
Definition
ScriptedCreature.h:439
BossAI::BossAI
BossAI(Creature *creature, uint32 bossId)
Definition
ScriptedCreature.cpp:456
BossAI::_JustDied
void _JustDied()
Definition
ScriptedCreature.cpp:474
BossAI::_Reset
void _Reset()
Definition
ScriptedCreature.cpp:462
BossAI::_EnterCombat
void _EnterCombat()
Definition
ScriptedCreature.cpp:485
CreatureAI
Definition
CreatureAI.h:54
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
GameObject
Definition
GameObject.h:629
Player
Definition
Player.h:1289
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
boss_nefarian
Definition
boss_nefarian.cpp:371
boss_nefarian::boss_nefarian
boss_nefarian()
Definition
boss_nefarian.cpp:373
boss_nefarian::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_nefarian.cpp:559
boss_victor_nefarius
Definition
boss_nefarian.cpp:150
boss_victor_nefarius::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_nefarian.cpp:364
boss_victor_nefarius::boss_victor_nefarius
boss_victor_nefarius()
Definition
boss_nefarian.cpp:152
GameObjects
GameObjects
Definition
instance_blackrock_depths.cpp:30
Position
Definition
Object.h:274
ScriptedAI::DoResetThreat
void DoResetThreat()
Definition
ScriptedCreature.cpp:260
ScriptedAI::me
Creature * me
Definition
ScriptedCreature.h:182
ScriptedAI::HealthBelowPct
bool HealthBelowPct(uint32 pct) const
Definition
ScriptedCreature.h:247
ScriptedAI::AttackStart
void AttackStart(Unit *) OVERRIDE
Definition
ScriptedCreature.cpp:118
boss_nefarian::boss_nefarianAI
Definition
boss_nefarian.cpp:376
boss_nefarian::boss_nefarianAI::JustDied
void JustDied(Unit *) OVERRIDE
Definition
boss_nefarian.cpp:402
boss_nefarian::boss_nefarianAI::DespawnTimer
uint32 DespawnTimer
Definition
boss_nefarian.cpp:555
boss_nefarian::boss_nefarianAI::EnterCombat
void EnterCombat(Unit *) OVERRIDE
Definition
boss_nefarian.cpp:391
boss_nefarian::boss_nefarianAI::Reset
void Reset() OVERRIDE
Definition
boss_nefarian.cpp:379
boss_nefarian::boss_nefarianAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_nefarian.cpp:429
boss_nefarian::boss_nefarianAI::canDespawn
bool canDespawn
Definition
boss_nefarian.cpp:554
boss_nefarian::boss_nefarianAI::KilledUnit
void KilledUnit(Unit *victim) OVERRIDE
Definition
boss_nefarian.cpp:408
boss_nefarian::boss_nefarianAI::JustReachedHome
void JustReachedHome() OVERRIDE
Definition
boss_nefarian.cpp:386
boss_nefarian::boss_nefarianAI::boss_nefarianAI
boss_nefarianAI(Creature *creature)
Definition
boss_nefarian.cpp:377
boss_nefarian::boss_nefarianAI::MovementInform
void MovementInform(uint32 type, uint32 id) OVERRIDE
Definition
boss_nefarian.cpp:416
boss_nefarian::boss_nefarianAI::Phase3
bool Phase3
Definition
boss_nefarian.cpp:556
boss_victor_nefarius::boss_victor_nefariusAI
Definition
boss_nefarian.cpp:155
boss_victor_nefarius::boss_victor_nefariusAI::JustReachedHome
void JustReachedHome() OVERRIDE
Definition
boss_nefarian.cpp:175
boss_victor_nefarius::boss_victor_nefariusAI::SetData
void SetData(uint32 type, uint32 data) OVERRIDE
Definition
boss_nefarian.cpp:210
boss_victor_nefarius::boss_victor_nefariusAI::SpawnedAdds
uint32 SpawnedAdds
Definition
boss_nefarian.cpp:361
boss_victor_nefarius::boss_victor_nefariusAI::boss_victor_nefariusAI
boss_victor_nefariusAI(Creature *creature)
Definition
boss_nefarian.cpp:156
boss_victor_nefarius::boss_victor_nefariusAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_nefarian.cpp:224
boss_victor_nefarius::boss_victor_nefariusAI::SummonedCreatureDies
void SummonedCreatureDies(Creature *summon, Unit *) OVERRIDE
Definition
boss_nefarian.cpp:197
boss_victor_nefarius::boss_victor_nefariusAI::Reset
void Reset() OVERRIDE
Definition
boss_nefarian.cpp:158
boss_victor_nefarius::boss_victor_nefariusAI::BeginEvent
void BeginEvent(Player *target)
Definition
boss_nefarian.cpp:180
boss_victor_nefarius::boss_victor_nefariusAI::sGossipSelect
void sGossipSelect(Player *player, uint32 sender, uint32 action) OVERRIDE
Definition
boss_nefarian.cpp:350
boss_victor_nefarius::boss_victor_nefariusAI::JustSummoned
void JustSummoned(Creature *) OVERRIDE
Definition
boss_nefarian.cpp:208
CreatureID
CreatureID
Definition
utgarde_pinnacle.h:35
src
server
scripts
EasternKingdoms
BlackrockMountain
BlackwingLair
boss_nefarian.cpp
Generated on
for Project SkyFire Core by
1.17.0