Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
boss_rage_winterchill.cpp
Go to the documentation of this file.
1
/*
2
* This file is part of Project SkyFire https://www.projectskyfire.org.
3
* See LICENSE.md file for Copyright information
4
*/
5
6
#include "
ScriptMgr.h
"
7
#include "
ScriptedCreature.h
"
8
#include "
hyjal.h
"
9
#include "
hyjal_trash.h
"
10
11
enum
Spells
12
{
13
SPELL_FROST_ARMOR
= 31256,
14
SPELL_DEATH_AND_DECAY
= 31258,
15
SPELL_FROST_NOVA
= 31250,
16
SPELL_ICEBOLT
= 31249
17
};
18
19
enum
Texts
20
{
21
SAY_ONDEATH
= 0,
22
SAY_ONSLAY
= 1,
23
SAY_DECAY
= 2,
24
SAY_NOVA
= 3,
25
SAY_ONAGGRO
= 4
26
};
27
28
class
boss_rage_winterchill
:
public
CreatureScript
29
{
30
public
:
31
boss_rage_winterchill
() :
CreatureScript
(
"boss_rage_winterchill"
) { }
32
33
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
34
{
35
return
new
boss_rage_winterchillAI
(creature);
36
}
37
38
struct
boss_rage_winterchillAI
:
public
hyjal_trashAI
39
{
40
boss_rage_winterchillAI
(
Creature
* creature) :
hyjal_trashAI
(creature)
41
{
42
instance
= creature->
GetInstanceScript
();
43
go
=
false
;
44
}
45
46
uint32
FrostArmorTimer
;
47
uint32
DecayTimer
;
48
uint32
NovaTimer
;
49
uint32
IceboltTimer
;
50
bool
go
;
51
52
void
Reset
()
OVERRIDE
53
{
54
damageTaken
= 0;
55
FrostArmorTimer
= 37000;
56
DecayTimer
= 45000;
57
NovaTimer
= 15000;
58
IceboltTimer
= 10000;
59
60
if
(
instance
&&
IsEvent
)
61
instance
->SetData(
DATA_RAGEWINTERCHILLEVENT
,
NOT_STARTED
);
62
}
63
64
void
EnterCombat
(
Unit
*
/*who*/
)
OVERRIDE
65
{
66
if
(
instance
&&
IsEvent
)
67
instance
->SetData(
DATA_RAGEWINTERCHILLEVENT
,
IN_PROGRESS
);
68
Talk
(
SAY_ONAGGRO
);
69
}
70
71
void
KilledUnit
(
Unit
*
/*victim*/
)
OVERRIDE
72
{
73
Talk
(
SAY_ONSLAY
);
74
}
75
76
void
WaypointReached
(
uint32
waypointId)
OVERRIDE
77
{
78
if
(waypointId == 7 &&
instance
)
79
{
80
Unit
* target =
Unit::GetUnit
(*
me
,
instance
->GetData64(
DATA_JAINAPROUDMOORE
));
81
if
(target && target->
IsAlive
())
82
me
->AddThreat(target, 0.0f);
83
}
84
}
85
86
void
JustDied
(
Unit
* killer)
OVERRIDE
87
{
88
hyjal_trashAI::JustDied
(killer);
89
if
(
instance
&&
IsEvent
)
90
instance
->SetData(
DATA_RAGEWINTERCHILLEVENT
,
DONE
);
91
Talk
(
SAY_ONDEATH
);
92
}
93
94
void
UpdateAI
(
uint32
diff)
OVERRIDE
95
{
96
if
(
IsEvent
)
97
{
98
//Must update npc_escortAI
99
npc_escortAI::UpdateAI
(diff);
100
if
(!
go
)
101
{
102
go
=
true
;
103
if
(
instance
)
104
{
105
AddWaypoint
(0, 4896.08f, -1576.35f, 1333.65f);
106
AddWaypoint
(1, 4898.68f, -1615.02f, 1329.48f);
107
AddWaypoint
(2, 4907.12f, -1667.08f, 1321.00f);
108
AddWaypoint
(3, 4963.18f, -1699.35f, 1340.51f);
109
AddWaypoint
(4, 4989.16f, -1716.67f, 1335.74f);
110
AddWaypoint
(5, 5026.27f, -1736.89f, 1323.02f);
111
AddWaypoint
(6, 5037.77f, -1770.56f, 1324.36f);
112
AddWaypoint
(7, 5067.23f, -1789.95f, 1321.17f);
113
Start
(
false
,
true
);
114
SetDespawnAtEnd
(
false
);
115
}
116
}
117
}
118
119
//Return since we have no target
120
if
(!
UpdateVictim
())
121
return
;
122
123
if
(
FrostArmorTimer
<= diff)
124
{
125
DoCast
(
me
,
SPELL_FROST_ARMOR
);
126
FrostArmorTimer
= 40000+rand()%20000;
127
}
else
FrostArmorTimer
-= diff;
128
if
(
DecayTimer
<= diff)
129
{
130
DoCastVictim
(
SPELL_DEATH_AND_DECAY
);
131
DecayTimer
= 60000+rand()%20000;
132
Talk
(
SAY_DECAY
);
133
}
else
DecayTimer
-= diff;
134
if
(
NovaTimer
<= diff)
135
{
136
DoCastVictim
(
SPELL_FROST_NOVA
);
137
NovaTimer
= 30000+rand()%15000;
138
Talk
(
SAY_NOVA
);
139
}
else
NovaTimer
-= diff;
140
if
(
IceboltTimer
<= diff)
141
{
142
DoCast
(
SelectTarget
(
SELECT_TARGET_RANDOM
, 0, 40,
true
),
SPELL_ICEBOLT
);
143
IceboltTimer
= 11000+rand()%20000;
144
}
else
IceboltTimer
-= diff;
145
146
DoMeleeAttackIfReady
();
147
}
148
};
149
};
150
151
void
AddSC_boss_rage_winterchill
()
152
{
153
new
boss_rage_winterchill
();
154
}
Spells
Spells
Definition
BattlegroundIC.h:645
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
ScriptMgr.h
ScriptedCreature.h
SELECT_TARGET_RANDOM
@ SELECT_TARGET_RANDOM
Definition
UnitAI.h:23
SPELL_FROST_NOVA
@ SPELL_FROST_NOVA
Definition
blackfathom_deeps.cpp:17
Texts
Texts
Definition
boss_alizabal.cpp:13
SAY_ONAGGRO
@ SAY_ONAGGRO
Definition
boss_anetheron.cpp:28
SAY_ONSLAY
@ SAY_ONSLAY
Definition
boss_anetheron.cpp:24
SAY_ONDEATH
@ SAY_ONDEATH
Definition
boss_anetheron.cpp:23
AddSC_boss_rage_winterchill
void AddSC_boss_rage_winterchill()
Definition
boss_rage_winterchill.cpp:151
SPELL_ICEBOLT
@ SPELL_ICEBOLT
Definition
boss_rage_winterchill.cpp:16
SPELL_DEATH_AND_DECAY
@ SPELL_DEATH_AND_DECAY
Definition
boss_rage_winterchill.cpp:14
SPELL_FROST_ARMOR
@ SPELL_FROST_ARMOR
Definition
boss_rage_winterchill.cpp:13
SPELL_FROST_NOVA
@ SPELL_FROST_NOVA
Definition
boss_rage_winterchill.cpp:15
SAY_ONAGGRO
@ SAY_ONAGGRO
Definition
boss_rage_winterchill.cpp:25
SAY_NOVA
@ SAY_NOVA
Definition
boss_rage_winterchill.cpp:24
SAY_ONSLAY
@ SAY_ONSLAY
Definition
boss_rage_winterchill.cpp:22
SAY_ONDEATH
@ SAY_ONDEATH
Definition
boss_rage_winterchill.cpp:21
SAY_DECAY
@ SAY_DECAY
Definition
boss_rage_winterchill.cpp:23
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
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_rage_winterchill
Definition
boss_rage_winterchill.cpp:29
boss_rage_winterchill::boss_rage_winterchill
boss_rage_winterchill()
Definition
boss_rage_winterchill.cpp:31
boss_rage_winterchill::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_rage_winterchill.cpp:33
hyjal.h
DATA_RAGEWINTERCHILLEVENT
@ DATA_RAGEWINTERCHILLEVENT
Definition
hyjal.h:25
DATA_JAINAPROUDMOORE
@ DATA_JAINAPROUDMOORE
Definition
hyjal.h:21
hyjal_trash.h
ScriptedAI::me
Creature * me
Definition
ScriptedCreature.h:182
boss_rage_winterchill::boss_rage_winterchillAI
Definition
boss_rage_winterchill.cpp:39
boss_rage_winterchill::boss_rage_winterchillAI::Reset
void Reset() OVERRIDE
Definition
boss_rage_winterchill.cpp:52
boss_rage_winterchill::boss_rage_winterchillAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_rage_winterchill.cpp:94
boss_rage_winterchill::boss_rage_winterchillAI::JustDied
void JustDied(Unit *killer) OVERRIDE
Definition
boss_rage_winterchill.cpp:86
boss_rage_winterchill::boss_rage_winterchillAI::FrostArmorTimer
uint32 FrostArmorTimer
Definition
boss_rage_winterchill.cpp:46
boss_rage_winterchill::boss_rage_winterchillAI::boss_rage_winterchillAI
boss_rage_winterchillAI(Creature *creature)
Definition
boss_rage_winterchill.cpp:40
boss_rage_winterchill::boss_rage_winterchillAI::go
bool go
Definition
boss_rage_winterchill.cpp:50
boss_rage_winterchill::boss_rage_winterchillAI::EnterCombat
void EnterCombat(Unit *) OVERRIDE
Definition
boss_rage_winterchill.cpp:64
boss_rage_winterchill::boss_rage_winterchillAI::DecayTimer
uint32 DecayTimer
Definition
boss_rage_winterchill.cpp:47
boss_rage_winterchill::boss_rage_winterchillAI::KilledUnit
void KilledUnit(Unit *) OVERRIDE
Definition
boss_rage_winterchill.cpp:71
boss_rage_winterchill::boss_rage_winterchillAI::WaypointReached
void WaypointReached(uint32 waypointId) OVERRIDE
Definition
boss_rage_winterchill.cpp:76
boss_rage_winterchill::boss_rage_winterchillAI::NovaTimer
uint32 NovaTimer
Definition
boss_rage_winterchill.cpp:48
boss_rage_winterchill::boss_rage_winterchillAI::IceboltTimer
uint32 IceboltTimer
Definition
boss_rage_winterchill.cpp:49
hyjal_trashAI::JustDied
void JustDied(Unit *)
Definition
hyjal_trash.cpp:386
hyjal_trashAI::damageTaken
uint32 damageTaken
Definition
hyjal_trash.h:34
hyjal_trashAI::instance
InstanceScript * instance
Definition
hyjal_trash.h:25
hyjal_trashAI::IsEvent
bool IsEvent
Definition
hyjal_trash.h:26
hyjal_trashAI::hyjal_trashAI
hyjal_trashAI(Creature *creature)
Definition
hyjal_trash.cpp:164
npc_escortAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
ScriptedEscortAI.cpp:209
npc_escortAI::SetDespawnAtEnd
void SetDespawnAtEnd(bool despawn)
Definition
ScriptedEscortAI.h:90
npc_escortAI::Start
void Start(bool isActiveAttacker=true, bool run=false, uint64 playerGUID=0, Quest const *quest=NULL, bool instantRespawn=false, bool canLoopPath=false, bool resetWaypoints=true)
Definition
ScriptedEscortAI.cpp:420
npc_escortAI::AddWaypoint
void AddWaypoint(uint32 id, float x, float y, float z, uint32 waitTime=0)
Definition
ScriptedEscortAI.cpp:367
src
server
scripts
Kalimdor
CavernsOfTime
BattleForMountHyjal
boss_rage_winterchill.cpp
Generated on
for Project SkyFire Core by
1.17.0