Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
boss_shade_of_aran.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_Shade_of_Aran
8
SD%Complete: 95
9
SDComment: Flame wreath missing cast animation, mods won't triggere.
10
SDCategory: Karazhan
11
EndScriptData */
12
13
#include "
ScriptMgr.h
"
14
#include "
ScriptedCreature.h
"
15
#include "
karazhan.h
"
16
#include "
GameObject.h
"
17
#include "
SpellInfo.h
"
18
19
enum
ShadeOfAran
20
{
21
SAY_AGGRO
= 0,
22
SAY_FLAMEWREATH
= 1,
23
SAY_BLIZZARD
= 2,
24
SAY_EXPLOSION
= 3,
25
SAY_DRINK
= 4,
26
SAY_ELEMENTALS
= 5,
27
SAY_KILL
= 6,
28
SAY_TIMEOVER
= 7,
29
SAY_DEATH
= 8,
30
// SAY_ATIESH = 9, Unused
31
32
//Spells
33
SPELL_FROSTBOLT
= 29954,
34
SPELL_FIREBALL
= 29953,
35
SPELL_ARCMISSLE
= 29955,
36
SPELL_CHAINSOFICE
= 29991,
37
SPELL_DRAGONSBREATH
= 29964,
38
SPELL_MASSSLOW
= 30035,
39
SPELL_FLAME_WREATH
= 29946,
40
SPELL_AOE_CS
= 29961,
41
SPELL_PLAYERPULL
= 32265,
42
SPELL_AEXPLOSION
= 29973,
43
SPELL_MASS_POLY
= 29963,
44
SPELL_BLINK_CENTER
= 29967,
45
SPELL_ELEMENTALS
= 29962,
46
SPELL_CONJURE
= 29975,
47
SPELL_DRINK
= 30024,
48
SPELL_POTION
= 32453,
49
SPELL_AOE_PYROBLAST
= 29978,
50
51
//Creature Spells
52
SPELL_CIRCULAR_BLIZZARD
= 29951,
53
SPELL_WATERBOLT
= 31012,
54
SPELL_SHADOW_PYRO
= 29978,
55
56
//Creatures
57
CREATURE_WATER_ELEMENTAL
= 17167,
58
CREATURE_SHADOW_OF_ARAN
= 18254,
59
CREATURE_ARAN_BLIZZARD
= 17161,
60
};
61
62
enum
SuperSpell
63
{
64
SUPER_FLAME
= 0,
65
SUPER_BLIZZARD
,
66
SUPER_AE
,
67
};
68
69
class
boss_shade_of_aran
:
public
CreatureScript
70
{
71
public
:
72
boss_shade_of_aran
() :
CreatureScript
(
"boss_shade_of_aran"
) { }
73
74
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
75
{
76
return
new
boss_aranAI
(creature);
77
}
78
79
struct
boss_aranAI
:
public
ScriptedAI
80
{
81
boss_aranAI
(
Creature
* creature) :
ScriptedAI
(creature)
82
{
83
instance
= creature->
GetInstanceScript
();
84
}
85
86
InstanceScript
*
instance
;
87
88
uint32
SecondarySpellTimer
;
89
uint32
NormalCastTimer
;
90
uint32
SuperCastTimer
;
91
uint32
BerserkTimer
;
92
uint32
CloseDoorTimer
;
// Don't close the door right on aggro in case some people are still entering.
93
94
uint8
LastSuperSpell
;
95
96
uint32
FlameWreathTimer
;
97
uint32
FlameWreathCheckTime
;
98
uint64
FlameWreathTarget
[3];
99
float
FWTargPosX
[3];
100
float
FWTargPosY
[3];
101
102
uint32
CurrentNormalSpell
;
103
uint32
ArcaneCooldown
;
104
uint32
FireCooldown
;
105
uint32
FrostCooldown
;
106
107
uint32
DrinkInterruptTimer
;
108
109
bool
ElementalsSpawned
;
110
bool
Drinking
;
111
bool
DrinkInturrupted
;
112
113
void
Reset
()
OVERRIDE
114
{
115
SecondarySpellTimer
= 5000;
116
NormalCastTimer
= 0;
117
SuperCastTimer
= 35000;
118
BerserkTimer
= 720000;
119
CloseDoorTimer
= 15000;
120
121
LastSuperSpell
= rand()%3;
122
123
FlameWreathTimer
= 0;
124
FlameWreathCheckTime
= 0;
125
126
CurrentNormalSpell
= 0;
127
ArcaneCooldown
= 0;
128
FireCooldown
= 0;
129
FrostCooldown
= 0;
130
131
DrinkInterruptTimer
= 10000;
132
133
ElementalsSpawned
=
false
;
134
Drinking
=
false
;
135
DrinkInturrupted
=
false
;
136
137
if
(
instance
)
138
{
139
// Not in progress
140
instance
->SetData(
TYPE_ARAN
,
NOT_STARTED
);
141
instance
->HandleGameObject(
instance
->GetData64(
DATA_GO_LIBRARY_DOOR
),
true
);
142
}
143
}
144
145
void
KilledUnit
(
Unit
*
/*victim*/
)
OVERRIDE
146
{
147
Talk
(
SAY_KILL
);
148
}
149
150
void
JustDied
(
Unit
*
/*killer*/
)
OVERRIDE
151
{
152
Talk
(
SAY_DEATH
);
153
154
if
(
instance
)
155
{
156
instance
->SetData(
TYPE_ARAN
,
DONE
);
157
instance
->HandleGameObject(
instance
->GetData64(
DATA_GO_LIBRARY_DOOR
),
true
);
158
}
159
}
160
161
void
EnterCombat
(
Unit
*
/*who*/
)
OVERRIDE
162
{
163
Talk
(
SAY_AGGRO
);
164
165
if
(
instance
)
166
{
167
instance
->SetData(
TYPE_ARAN
,
IN_PROGRESS
);
168
instance
->HandleGameObject(
instance
->GetData64(
DATA_GO_LIBRARY_DOOR
),
false
);
169
}
170
}
171
172
void
FlameWreathEffect
()
173
{
174
std::vector<Unit*> targets;
175
ThreatContainer::StorageType
const
&t_list =
me
->getThreatManager().getThreatList();
176
177
if
(t_list.empty())
178
return
;
179
180
//store the threat list in a different container
181
for
(ThreatContainer::StorageType::const_iterator itr = t_list.begin(); itr!= t_list.end(); ++itr)
182
{
183
Unit
* target =
Unit::GetUnit
(*
me
, (*itr)->getUnitGuid());
184
//only on alive players
185
if
(target && target->
IsAlive
() && target->
GetTypeId
() ==
TypeID::TYPEID_PLAYER
)
186
targets.push_back(target);
187
}
188
189
//cut down to size if we have more than 3 targets
190
while
(targets.size() > 3)
191
targets.erase(targets.begin()+rand()%targets.size());
192
193
uint32
i = 0;
194
for
(std::vector<Unit*>::const_iterator itr = targets.begin(); itr!= targets.end(); ++itr)
195
{
196
if
(*itr)
197
{
198
FlameWreathTarget
[i] = (*itr)->GetGUID();
199
FWTargPosX
[i] = (*itr)->GetPositionX();
200
FWTargPosY
[i] = (*itr)->GetPositionY();
201
DoCast
((*itr),
SPELL_FLAME_WREATH
,
true
);
202
++i;
203
}
204
}
205
}
206
207
void
UpdateAI
(
uint32
diff)
OVERRIDE
208
{
209
if
(!
UpdateVictim
())
210
return
;
211
212
if
(
CloseDoorTimer
)
213
{
214
if
(
CloseDoorTimer
<= diff)
215
{
216
if
(
instance
)
217
{
218
instance
->HandleGameObject(
instance
->GetData64(
DATA_GO_LIBRARY_DOOR
),
false
);
219
CloseDoorTimer
= 0;
220
}
221
}
else
CloseDoorTimer
-= diff;
222
}
223
224
//Cooldowns for casts
225
if
(
ArcaneCooldown
)
226
{
227
if
(
ArcaneCooldown
>= diff)
228
ArcaneCooldown
-= diff;
229
else
ArcaneCooldown
= 0;
230
}
231
232
if
(
FireCooldown
)
233
{
234
if
(
FireCooldown
>= diff)
235
FireCooldown
-= diff;
236
else
FireCooldown
= 0;
237
}
238
239
if
(
FrostCooldown
)
240
{
241
if
(
FrostCooldown
>= diff)
242
FrostCooldown
-= diff;
243
else
FrostCooldown
= 0;
244
}
245
246
if
(!
Drinking
&&
me
->GetMaxPower(
POWER_MANA
) && (
me
->GetPower(
POWER_MANA
)*100 /
me
->GetMaxPower(
POWER_MANA
)) < 20)
247
{
248
Drinking
=
true
;
249
me
->InterruptNonMeleeSpells(
false
);
250
251
Talk
(
SAY_DRINK
);
252
253
if
(!
DrinkInturrupted
)
254
{
255
DoCast
(
me
,
SPELL_MASS_POLY
,
true
);
256
DoCast
(
me
,
SPELL_CONJURE
,
false
);
257
DoCast
(
me
,
SPELL_DRINK
,
false
);
258
me
->SetStandState(
UNIT_STAND_STATE_SIT
);
259
DrinkInterruptTimer
= 10000;
260
}
261
}
262
263
//Drink Interrupt
264
if
(
Drinking
&&
DrinkInturrupted
)
265
{
266
Drinking
=
false
;
267
me
->RemoveAurasDueToSpell(
SPELL_DRINK
);
268
me
->SetStandState(
UNIT_STAND_STATE_STAND
);
269
me
->SetPower(
POWER_MANA
,
me
->GetMaxPower(
POWER_MANA
)-32000);
270
DoCast
(
me
,
SPELL_POTION
,
false
);
271
}
272
273
//Drink Interrupt Timer
274
if
(
Drinking
&& !
DrinkInturrupted
)
275
{
276
if
(
DrinkInterruptTimer
>= diff)
277
DrinkInterruptTimer
-= diff;
278
else
279
{
280
me
->SetStandState(
UNIT_STAND_STATE_STAND
);
281
DoCast
(
me
,
SPELL_POTION
,
true
);
282
DoCast
(
me
,
SPELL_AOE_PYROBLAST
,
false
);
283
DrinkInturrupted
=
true
;
284
Drinking
=
false
;
285
}
286
}
287
288
//Don't execute any more code if we are drinking
289
if
(
Drinking
)
290
return
;
291
292
//Normal casts
293
if
(
NormalCastTimer
<= diff)
294
{
295
if
(!
me
->IsNonMeleeSpellCasted(
false
))
296
{
297
Unit
* target =
SelectTarget
(
SELECT_TARGET_RANDOM
, 0, 100,
true
);
298
if
(!target)
299
return
;
300
301
uint32
Spells
[3];
302
uint8
AvailableSpells = 0;
303
304
//Check for what spells are not on cooldown
305
if
(!
ArcaneCooldown
)
306
{
307
Spells
[AvailableSpells] =
SPELL_ARCMISSLE
;
308
++AvailableSpells;
309
}
310
if
(!
FireCooldown
)
311
{
312
Spells
[AvailableSpells] =
SPELL_FIREBALL
;
313
++AvailableSpells;
314
}
315
if
(!
FrostCooldown
)
316
{
317
Spells
[AvailableSpells] =
SPELL_FROSTBOLT
;
318
++AvailableSpells;
319
}
320
321
//If no available spells wait 1 second and try again
322
if
(AvailableSpells)
323
{
324
CurrentNormalSpell
=
Spells
[rand() % AvailableSpells];
325
DoCast
(target,
CurrentNormalSpell
);
326
}
327
}
328
NormalCastTimer
= 1000;
329
}
else
NormalCastTimer
-= diff;
330
331
if
(
SecondarySpellTimer
<= diff)
332
{
333
switch
(std::rand() % 1)
334
{
335
case
0:
336
DoCast
(
me
,
SPELL_AOE_CS
);
337
break
;
338
case
1:
339
if
(
Unit
* target =
SelectTarget
(
SELECT_TARGET_RANDOM
, 0, 100,
true
))
340
DoCast
(target,
SPELL_CHAINSOFICE
);
341
break
;
342
}
343
SecondarySpellTimer
= std::rand() % 20000 + 5000;
344
}
else
SecondarySpellTimer
-= diff;
345
346
if
(
SuperCastTimer
<= diff)
347
{
348
uint8
Available[2];
349
350
switch
(
LastSuperSpell
)
351
{
352
case
SUPER_AE
:
353
Available[0] =
SUPER_FLAME
;
354
Available[1] =
SUPER_BLIZZARD
;
355
break
;
356
case
SUPER_FLAME
:
357
Available[0] =
SUPER_AE
;
358
Available[1] =
SUPER_BLIZZARD
;
359
break
;
360
case
SUPER_BLIZZARD
:
361
Available[0] =
SUPER_FLAME
;
362
Available[1] =
SUPER_AE
;
363
break
;
364
}
365
366
LastSuperSpell
= Available[std::rand() % 1];
367
368
switch
(
LastSuperSpell
)
369
{
370
case
SUPER_AE
:
371
Talk
(
SAY_EXPLOSION
);
372
373
DoCast
(
me
,
SPELL_BLINK_CENTER
,
true
);
374
DoCast
(
me
,
SPELL_PLAYERPULL
,
true
);
375
DoCast
(
me
,
SPELL_MASSSLOW
,
true
);
376
DoCast
(
me
,
SPELL_AEXPLOSION
,
false
);
377
break
;
378
379
case
SUPER_FLAME
:
380
Talk
(
SAY_FLAMEWREATH
);
381
382
FlameWreathTimer
= 20000;
383
FlameWreathCheckTime
= 500;
384
385
FlameWreathTarget
[0] = 0;
386
FlameWreathTarget
[1] = 0;
387
FlameWreathTarget
[2] = 0;
388
389
FlameWreathEffect
();
390
break
;
391
392
case
SUPER_BLIZZARD
:
393
Talk
(
SAY_BLIZZARD
);
394
395
if
(
Creature
* pSpawn =
me
->SummonCreature(
CREATURE_ARAN_BLIZZARD
, 0.0f, 0.0f, 0.0f, 0.0f,
TempSummonType::TEMPSUMMON_TIMED_DESPAWN
, 25000))
396
{
397
pSpawn->setFaction(
me
->getFaction());
398
pSpawn->CastSpell(pSpawn,
SPELL_CIRCULAR_BLIZZARD
,
false
);
399
}
400
break
;
401
}
402
403
SuperCastTimer
= std::rand() % 40000 + 35000;
404
}
else
SuperCastTimer
-= diff;
405
406
if
(!
ElementalsSpawned
&&
HealthBelowPct
(40))
407
{
408
ElementalsSpawned
=
true
;
409
410
for
(
uint32
i = 0; i < 4; ++i)
411
{
412
if
(
Creature
* unit =
me
->SummonCreature(
CREATURE_WATER_ELEMENTAL
, 0.0f, 0.0f, 0.0f, 0.0f,
TempSummonType::TEMPSUMMON_TIMED_DESPAWN
, 90000))
413
{
414
unit->Attack(
me
->GetVictim(),
true
);
415
unit->setFaction(
me
->getFaction());
416
}
417
}
418
419
Talk
(
SAY_ELEMENTALS
);
420
}
421
422
if
(
BerserkTimer
<= diff)
423
{
424
for
(
uint32
i = 0; i < 5; ++i)
425
{
426
if
(
Creature
* unit =
me
->SummonCreature(
CREATURE_SHADOW_OF_ARAN
, 0.0f, 0.0f, 0.0f, 0.0f,
TempSummonType::TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT
, 5000))
427
{
428
unit->Attack(
me
->GetVictim(),
true
);
429
unit->setFaction(
me
->getFaction());
430
}
431
}
432
433
Talk
(
SAY_TIMEOVER
);
434
435
BerserkTimer
= 60000;
436
}
else
BerserkTimer
-= diff;
437
438
//Flame Wreath check
439
if
(
FlameWreathTimer
)
440
{
441
if
(
FlameWreathTimer
>= diff)
442
FlameWreathTimer
-= diff;
443
else
FlameWreathTimer
= 0;
444
445
if
(
FlameWreathCheckTime
<= diff)
446
{
447
for
(
uint8
i = 0; i < 3; ++i)
448
{
449
if
(!
FlameWreathTarget
[i])
450
continue
;
451
452
Unit
* unit =
Unit::GetUnit
(*
me
,
FlameWreathTarget
[i]);
453
if
(unit && !unit->
IsWithinDist2d
(
FWTargPosX
[i],
FWTargPosY
[i], 3))
454
{
455
unit->
CastSpell
(unit, 20476,
true
, 0, 0,
me
->GetGUID());
456
unit->
CastSpell
(unit, 11027,
true
);
457
FlameWreathTarget
[i] = 0;
458
}
459
}
460
FlameWreathCheckTime
= 500;
461
}
else
FlameWreathCheckTime
-= diff;
462
}
463
464
if
(
ArcaneCooldown
&&
FireCooldown
&&
FrostCooldown
)
465
DoMeleeAttackIfReady
();
466
}
467
468
void
DamageTaken
(
Unit
*
/*pAttacker*/
,
uint32
&damage)
OVERRIDE
469
{
470
if
(!
DrinkInturrupted
&&
Drinking
&& damage)
471
DrinkInturrupted
=
true
;
472
}
473
474
void
SpellHit
(
Unit
*
/*pAttacker*/
,
const
SpellInfo
*
Spell
)
OVERRIDE
475
{
476
//We only care about interrupt effects and only if they are durring a spell currently being casted
477
if
((
Spell
->Effects[0].Effect !=
SPELL_EFFECT_INTERRUPT_CAST
&&
478
Spell
->Effects[1].Effect !=
SPELL_EFFECT_INTERRUPT_CAST
&&
479
Spell
->Effects[2].Effect !=
SPELL_EFFECT_INTERRUPT_CAST
) || !
me
->IsNonMeleeSpellCasted(
false
))
480
return
;
481
482
//Interrupt effect
483
me
->InterruptNonMeleeSpells(
false
);
484
485
//Normally we would set the cooldown equal to the spell duration
486
//but we do not have access to the DurationStore
487
488
switch
(
CurrentNormalSpell
)
489
{
490
case
SPELL_ARCMISSLE
:
ArcaneCooldown
= 5000;
break
;
491
case
SPELL_FIREBALL
:
FireCooldown
= 5000;
break
;
492
case
SPELL_FROSTBOLT
:
FrostCooldown
= 5000;
break
;
493
}
494
}
495
};
496
};
497
498
class
npc_aran_elemental
:
public
CreatureScript
499
{
500
public
:
501
npc_aran_elemental
() :
CreatureScript
(
"npc_aran_elemental"
) { }
502
503
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
504
{
505
return
new
water_elementalAI
(creature);
506
}
507
508
struct
water_elementalAI
:
public
ScriptedAI
509
{
510
water_elementalAI
(
Creature
* creature) :
ScriptedAI
(creature) { }
511
512
uint32
CastTimer
;
513
514
void
Reset
()
OVERRIDE
515
{
516
CastTimer
= 2000 + (rand()%3000);
517
}
518
519
void
EnterCombat
(
Unit
*
/*who*/
)
OVERRIDE
{ }
520
521
void
UpdateAI
(
uint32
diff)
OVERRIDE
522
{
523
if
(!
UpdateVictim
())
524
return
;
525
526
if
(
CastTimer
<= diff)
527
{
528
DoCastVictim
(
SPELL_WATERBOLT
);
529
CastTimer
= std::rand() % 5000 + 2000;
530
}
else
CastTimer
-= diff;
531
}
532
};
533
};
534
535
void
AddSC_boss_shade_of_aran
()
536
{
537
new
boss_shade_of_aran
();
538
new
npc_aran_elemental
();
539
}
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
uint64
std::uint64_t uint64
Definition
Define.h:76
GameObject.h
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
TempSummonType::TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT
@ TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT
Definition
Object.h:71
TempSummonType::TEMPSUMMON_TIMED_DESPAWN
@ TEMPSUMMON_TIMED_DESPAWN
Definition
Object.h:70
ScriptMgr.h
ScriptedCreature.h
POWER_MANA
@ POWER_MANA
Definition
SharedDefines.h:215
SPELL_EFFECT_INTERRUPT_CAST
@ SPELL_EFFECT_INTERRUPT_CAST
Definition
SharedDefines.h:956
SpellInfo.h
UNIT_STAND_STATE_STAND
@ UNIT_STAND_STATE_STAND
Definition
Unit.h:162
UNIT_STAND_STATE_SIT
@ UNIT_STAND_STATE_SIT
Definition
Unit.h:163
SELECT_TARGET_RANDOM
@ SELECT_TARGET_RANDOM
Definition
UnitAI.h:23
SPELL_WATERBOLT
@ SPELL_WATERBOLT
Definition
boss_balinda.cpp:31
SPELL_FROSTBOLT
@ SPELL_FROSTBOLT
Definition
boss_balinda.cpp:14
SPELL_FIREBALL
@ SPELL_FIREBALL
Definition
boss_balinda.cpp:13
SAY_DEATH
#define SAY_DEATH
Definition
boss_commander_kolurg.cpp:30
SAY_AGGRO
#define SAY_AGGRO
Definition
boss_commander_kolurg.cpp:28
SAY_KILL
#define SAY_KILL
Definition
boss_commander_kolurg.cpp:29
AddSC_boss_shade_of_aran
void AddSC_boss_shade_of_aran()
Definition
boss_shade_of_aran.cpp:535
SuperSpell
SuperSpell
Definition
boss_shade_of_aran.cpp:63
SUPER_AE
@ SUPER_AE
Definition
boss_shade_of_aran.cpp:66
SUPER_FLAME
@ SUPER_FLAME
Definition
boss_shade_of_aran.cpp:64
SUPER_BLIZZARD
@ SUPER_BLIZZARD
Definition
boss_shade_of_aran.cpp:65
ShadeOfAran
ShadeOfAran
Definition
boss_shade_of_aran.cpp:20
SAY_DEATH
@ SAY_DEATH
Definition
boss_shade_of_aran.cpp:29
SPELL_CHAINSOFICE
@ SPELL_CHAINSOFICE
Definition
boss_shade_of_aran.cpp:36
SPELL_DRINK
@ SPELL_DRINK
Definition
boss_shade_of_aran.cpp:47
SPELL_ELEMENTALS
@ SPELL_ELEMENTALS
Definition
boss_shade_of_aran.cpp:45
SPELL_WATERBOLT
@ SPELL_WATERBOLT
Definition
boss_shade_of_aran.cpp:53
SPELL_FROSTBOLT
@ SPELL_FROSTBOLT
Definition
boss_shade_of_aran.cpp:33
SPELL_ARCMISSLE
@ SPELL_ARCMISSLE
Definition
boss_shade_of_aran.cpp:35
SAY_AGGRO
@ SAY_AGGRO
Definition
boss_shade_of_aran.cpp:21
SPELL_PLAYERPULL
@ SPELL_PLAYERPULL
Definition
boss_shade_of_aran.cpp:41
SPELL_AOE_CS
@ SPELL_AOE_CS
Definition
boss_shade_of_aran.cpp:40
CREATURE_ARAN_BLIZZARD
@ CREATURE_ARAN_BLIZZARD
Definition
boss_shade_of_aran.cpp:59
SAY_KILL
@ SAY_KILL
Definition
boss_shade_of_aran.cpp:27
SPELL_FLAME_WREATH
@ SPELL_FLAME_WREATH
Definition
boss_shade_of_aran.cpp:39
SPELL_FIREBALL
@ SPELL_FIREBALL
Definition
boss_shade_of_aran.cpp:34
CREATURE_SHADOW_OF_ARAN
@ CREATURE_SHADOW_OF_ARAN
Definition
boss_shade_of_aran.cpp:58
SAY_ELEMENTALS
@ SAY_ELEMENTALS
Definition
boss_shade_of_aran.cpp:26
SPELL_MASSSLOW
@ SPELL_MASSSLOW
Definition
boss_shade_of_aran.cpp:38
SPELL_CONJURE
@ SPELL_CONJURE
Definition
boss_shade_of_aran.cpp:46
SPELL_AOE_PYROBLAST
@ SPELL_AOE_PYROBLAST
Definition
boss_shade_of_aran.cpp:49
SAY_FLAMEWREATH
@ SAY_FLAMEWREATH
Definition
boss_shade_of_aran.cpp:22
SPELL_BLINK_CENTER
@ SPELL_BLINK_CENTER
Definition
boss_shade_of_aran.cpp:44
SPELL_AEXPLOSION
@ SPELL_AEXPLOSION
Definition
boss_shade_of_aran.cpp:42
CREATURE_WATER_ELEMENTAL
@ CREATURE_WATER_ELEMENTAL
Definition
boss_shade_of_aran.cpp:57
SAY_TIMEOVER
@ SAY_TIMEOVER
Definition
boss_shade_of_aran.cpp:28
SPELL_DRAGONSBREATH
@ SPELL_DRAGONSBREATH
Definition
boss_shade_of_aran.cpp:37
SAY_BLIZZARD
@ SAY_BLIZZARD
Definition
boss_shade_of_aran.cpp:23
SPELL_MASS_POLY
@ SPELL_MASS_POLY
Definition
boss_shade_of_aran.cpp:43
SPELL_SHADOW_PYRO
@ SPELL_SHADOW_PYRO
Definition
boss_shade_of_aran.cpp:54
SAY_DRINK
@ SAY_DRINK
Definition
boss_shade_of_aran.cpp:25
SPELL_POTION
@ SPELL_POTION
Definition
boss_shade_of_aran.cpp:48
SPELL_CIRCULAR_BLIZZARD
@ SPELL_CIRCULAR_BLIZZARD
Definition
boss_shade_of_aran.cpp:52
SAY_EXPLOSION
@ SAY_EXPLOSION
Definition
boss_shade_of_aran.cpp:24
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
InstanceScript
Definition
InstanceScript.h:123
Object::GetTypeId
TypeID GetTypeId() const
Definition
Object.h:131
Spell
Definition
Spell.h:289
SpellInfo
Definition
SpellInfo.h:158
ThreatContainer::StorageType
std::list< HostileReference * > StorageType
Definition
ThreatManager.h:127
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::CastSpell
void CastSpell(SpellCastTargets const &targets, SpellInfo const *spellInfo, CustomSpellValues const *value, TriggerCastFlags triggerFlags=TRIGGERED_NONE, Item *castItem=NULL, AuraEffect const *triggeredByAura=NULL, uint64 originalCaster=0)
Definition
UnitCombat.cpp:324
Unit::IsAlive
bool IsAlive() const
Definition
Unit.h:2032
Unit::GetUnit
static Unit * GetUnit(WorldObject &object, uint64 guid)
Definition
Unit.cpp:4895
WorldObject::IsWithinDist2d
bool IsWithinDist2d(float x, float y, float dist) const
Definition
Object.cpp:1720
WorldObject::GetInstanceScript
InstanceScript * GetInstanceScript()
Definition
Object.cpp:1612
boss_shade_of_aran
Definition
boss_shade_of_aran.cpp:70
boss_shade_of_aran::boss_shade_of_aran
boss_shade_of_aran()
Definition
boss_shade_of_aran.cpp:72
boss_shade_of_aran::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_shade_of_aran.cpp:74
npc_aran_elemental
Definition
boss_shade_of_aran.cpp:499
npc_aran_elemental::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_shade_of_aran.cpp:503
npc_aran_elemental::npc_aran_elemental
npc_aran_elemental()
Definition
boss_shade_of_aran.cpp:501
karazhan.h
DATA_GO_LIBRARY_DOOR
@ DATA_GO_LIBRARY_DOOR
Definition
karazhan.h:33
TYPE_ARAN
@ TYPE_ARAN
Definition
karazhan.h:17
ScriptedAI::me
Creature * me
Definition
ScriptedCreature.h:182
ScriptedAI::HealthBelowPct
bool HealthBelowPct(uint32 pct) const
Definition
ScriptedCreature.h:247
ScriptedAI::ScriptedAI
ScriptedAI(Creature *creature)
Definition
ScriptedCreature.cpp:85
boss_shade_of_aran::boss_aranAI
Definition
boss_shade_of_aran.cpp:80
boss_shade_of_aran::boss_aranAI::FWTargPosY
float FWTargPosY[3]
Definition
boss_shade_of_aran.cpp:100
boss_shade_of_aran::boss_aranAI::FlameWreathEffect
void FlameWreathEffect()
Definition
boss_shade_of_aran.cpp:172
boss_shade_of_aran::boss_aranAI::ElementalsSpawned
bool ElementalsSpawned
Definition
boss_shade_of_aran.cpp:109
boss_shade_of_aran::boss_aranAI::instance
InstanceScript * instance
Definition
boss_shade_of_aran.cpp:86
boss_shade_of_aran::boss_aranAI::FlameWreathTimer
uint32 FlameWreathTimer
Definition
boss_shade_of_aran.cpp:96
boss_shade_of_aran::boss_aranAI::KilledUnit
void KilledUnit(Unit *) OVERRIDE
Definition
boss_shade_of_aran.cpp:145
boss_shade_of_aran::boss_aranAI::BerserkTimer
uint32 BerserkTimer
Definition
boss_shade_of_aran.cpp:91
boss_shade_of_aran::boss_aranAI::SpellHit
void SpellHit(Unit *, const SpellInfo *Spell) OVERRIDE
Definition
boss_shade_of_aran.cpp:474
boss_shade_of_aran::boss_aranAI::DrinkInturrupted
bool DrinkInturrupted
Definition
boss_shade_of_aran.cpp:111
boss_shade_of_aran::boss_aranAI::boss_aranAI
boss_aranAI(Creature *creature)
Definition
boss_shade_of_aran.cpp:81
boss_shade_of_aran::boss_aranAI::ArcaneCooldown
uint32 ArcaneCooldown
Definition
boss_shade_of_aran.cpp:103
boss_shade_of_aran::boss_aranAI::CloseDoorTimer
uint32 CloseDoorTimer
Definition
boss_shade_of_aran.cpp:92
boss_shade_of_aran::boss_aranAI::FireCooldown
uint32 FireCooldown
Definition
boss_shade_of_aran.cpp:104
boss_shade_of_aran::boss_aranAI::Drinking
bool Drinking
Definition
boss_shade_of_aran.cpp:110
boss_shade_of_aran::boss_aranAI::CurrentNormalSpell
uint32 CurrentNormalSpell
Definition
boss_shade_of_aran.cpp:102
boss_shade_of_aran::boss_aranAI::DrinkInterruptTimer
uint32 DrinkInterruptTimer
Definition
boss_shade_of_aran.cpp:107
boss_shade_of_aran::boss_aranAI::FlameWreathCheckTime
uint32 FlameWreathCheckTime
Definition
boss_shade_of_aran.cpp:97
boss_shade_of_aran::boss_aranAI::FlameWreathTarget
uint64 FlameWreathTarget[3]
Definition
boss_shade_of_aran.cpp:98
boss_shade_of_aran::boss_aranAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_shade_of_aran.cpp:207
boss_shade_of_aran::boss_aranAI::JustDied
void JustDied(Unit *) OVERRIDE
Definition
boss_shade_of_aran.cpp:150
boss_shade_of_aran::boss_aranAI::FWTargPosX
float FWTargPosX[3]
Definition
boss_shade_of_aran.cpp:99
boss_shade_of_aran::boss_aranAI::DamageTaken
void DamageTaken(Unit *, uint32 &damage) OVERRIDE
Definition
boss_shade_of_aran.cpp:468
boss_shade_of_aran::boss_aranAI::SuperCastTimer
uint32 SuperCastTimer
Definition
boss_shade_of_aran.cpp:90
boss_shade_of_aran::boss_aranAI::NormalCastTimer
uint32 NormalCastTimer
Definition
boss_shade_of_aran.cpp:89
boss_shade_of_aran::boss_aranAI::LastSuperSpell
uint8 LastSuperSpell
Definition
boss_shade_of_aran.cpp:94
boss_shade_of_aran::boss_aranAI::EnterCombat
void EnterCombat(Unit *) OVERRIDE
Definition
boss_shade_of_aran.cpp:161
boss_shade_of_aran::boss_aranAI::Reset
void Reset() OVERRIDE
Definition
boss_shade_of_aran.cpp:113
boss_shade_of_aran::boss_aranAI::SecondarySpellTimer
uint32 SecondarySpellTimer
Definition
boss_shade_of_aran.cpp:88
boss_shade_of_aran::boss_aranAI::FrostCooldown
uint32 FrostCooldown
Definition
boss_shade_of_aran.cpp:105
npc_aran_elemental::water_elementalAI
Definition
boss_shade_of_aran.cpp:509
npc_aran_elemental::water_elementalAI::CastTimer
uint32 CastTimer
Definition
boss_shade_of_aran.cpp:512
npc_aran_elemental::water_elementalAI::Reset
void Reset() OVERRIDE
Definition
boss_shade_of_aran.cpp:514
npc_aran_elemental::water_elementalAI::water_elementalAI
water_elementalAI(Creature *creature)
Definition
boss_shade_of_aran.cpp:510
npc_aran_elemental::water_elementalAI::EnterCombat
void EnterCombat(Unit *) OVERRIDE
Definition
boss_shade_of_aran.cpp:519
npc_aran_elemental::water_elementalAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_shade_of_aran.cpp:521
src
server
scripts
EasternKingdoms
Karazhan
boss_shade_of_aran.cpp
Generated on
for Project SkyFire Core by
1.17.0