Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
boss_king_dred.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
/*
7
* Comment: MAYBE need more improve the "Raptor Call".
8
*/
9
10
#include "
ScriptMgr.h
"
11
#include "
ScriptedCreature.h
"
12
#include "
drak_tharon_keep.h
"
13
14
enum
Spells
15
{
16
SPELL_BELLOWING_ROAR
= 22686,
// fears the group, can be resisted/dispelled
17
SPELL_GRIEVOUS_BITE
= 48920,
18
SPELL_MANGLING_SLASH
= 48873,
// casted on the current tank, adds debuf
19
SPELL_FEARSOME_ROAR
= 48849,
20
SPELL_PIERCING_SLASH
= 48878,
// debuff --> Armor reduced by 75%
21
SPELL_RAPTOR_CALL
= 59416,
// dummy
22
SPELL_GUT_RIP
= 49710,
23
SPELL_REND
= 13738
24
};
25
26
enum
Misc
27
{
28
ACTION_RAPTOR_KILLED
= 1,
29
DATA_RAPTORS_KILLED
= 2
30
};
31
32
enum
Events
33
{
34
EVENT_BELLOWING_ROAR
= 1,
35
EVENT_GRIEVOUS_BITE
,
36
EVENT_MANGLING_SLASH
,
37
EVENT_FEARSOME_ROAR
,
38
EVENT_PIERCING_SLASH
,
39
EVENT_RAPTOR_CALL
40
};
41
42
class
boss_king_dred
:
public
CreatureScript
43
{
44
public
:
45
boss_king_dred
() :
CreatureScript
(
"boss_king_dred"
) { }
46
47
struct
boss_king_dredAI
:
public
BossAI
48
{
49
boss_king_dredAI
(
Creature
* creature) :
BossAI
(creature,
DATA_KING_DRED
)
50
{
51
raptorsKilled
= 0;
52
}
53
54
void
Reset
()
OVERRIDE
55
{
56
_Reset
();
57
}
58
59
void
EnterCombat
(
Unit
*
/*who*/
)
OVERRIDE
60
{
61
_EnterCombat
();
62
63
events
.ScheduleEvent(
EVENT_BELLOWING_ROAR
, 33000);
64
events
.ScheduleEvent(
EVENT_GRIEVOUS_BITE
, 20000);
65
events
.ScheduleEvent(
EVENT_MANGLING_SLASH
, 18500);
66
events
.ScheduleEvent(
EVENT_FEARSOME_ROAR
, std::rand() % 20000 + 10000);
67
events
.ScheduleEvent(
EVENT_PIERCING_SLASH
, 17000);
68
events
.ScheduleEvent(
EVENT_RAPTOR_CALL
, std::rand() % 25000 + 20000);
69
}
70
71
void
DoAction
(
int32
action)
OVERRIDE
72
{
73
if
(action ==
ACTION_RAPTOR_KILLED
)
74
++
raptorsKilled
;
75
}
76
77
uint32
GetData
(
uint32
type)
const
OVERRIDE
78
{
79
if
(type ==
DATA_RAPTORS_KILLED
)
80
return
raptorsKilled
;
81
82
return
0;
83
}
84
85
void
JustDied
(
Unit
*
/*killer*/
)
OVERRIDE
86
{
87
_JustDied
();
88
}
89
90
void
UpdateAI
(
uint32
diff)
OVERRIDE
91
{
92
if
(!
UpdateVictim
())
93
return
;
94
95
events
.Update(diff);
96
97
if
(
me
->HasUnitState(
UNIT_STATE_CASTING
))
98
return
;
99
100
while
(
uint32
eventId =
events
.ExecuteEvent())
101
{
102
switch
(eventId)
103
{
104
case
EVENT_BELLOWING_ROAR
:
105
{
106
DoCastAOE
(
SPELL_BELLOWING_ROAR
);
107
events
.ScheduleEvent(
EVENT_BELLOWING_ROAR
, 33000);
108
break
;
109
}
110
case
EVENT_GRIEVOUS_BITE
:
111
{
112
DoCastVictim
(
SPELL_GRIEVOUS_BITE
);
113
events
.ScheduleEvent(
EVENT_GRIEVOUS_BITE
, 20000);
114
break
;
115
}
116
case
EVENT_MANGLING_SLASH
:
117
{
118
DoCastVictim
(
SPELL_MANGLING_SLASH
);
119
events
.ScheduleEvent(
EVENT_MANGLING_SLASH
, 18500);
120
break
;
121
}
122
case
EVENT_FEARSOME_ROAR
:
123
{
124
DoCastAOE
(
SPELL_FEARSOME_ROAR
);
125
events
.ScheduleEvent(
EVENT_FEARSOME_ROAR
, std::rand() % 20000 + 10000);
126
break
;
127
}
128
case
EVENT_PIERCING_SLASH
:
129
{
130
DoCastVictim
(
SPELL_PIERCING_SLASH
);
131
events
.ScheduleEvent(
EVENT_PIERCING_SLASH
, 17000);
132
break
;
133
}
134
case
EVENT_RAPTOR_CALL
:
135
{
136
DoCastVictim
(
SPELL_RAPTOR_CALL
);
137
138
float
x, y, z;
139
140
me
->GetClosePoint(x, y, z,
me
->GetObjectSize() / 3, 10.0f);
141
me
->SummonCreature(
RAND
(
NPC_DRAKKARI_GUTRIPPER
,
NPC_DRAKKARI_SCYTHECLAW
), x, y, z, 0,
TempSummonType::TEMPSUMMON_DEAD_DESPAWN
, 1000);
142
events
.ScheduleEvent(
EVENT_RAPTOR_CALL
, std::rand() % 25000 + 20000);
143
break
;
144
}
145
default
:
146
break
;
147
}
148
}
149
150
DoMeleeAttackIfReady
();
151
}
152
153
private
:
154
uint8
raptorsKilled
;
155
};
156
157
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
158
{
159
return
GetDrakTharonKeepAI<boss_king_dredAI>
(creature);
160
}
161
};
162
163
class
npc_drakkari_gutripper
:
public
CreatureScript
164
{
165
public
:
166
npc_drakkari_gutripper
() :
CreatureScript
(
"npc_drakkari_gutripper"
) { }
167
168
struct
npc_drakkari_gutripperAI
:
public
ScriptedAI
169
{
170
npc_drakkari_gutripperAI
(
Creature
* creature) :
ScriptedAI
(creature)
171
{
172
instance
=
me
->GetInstanceScript();
173
GutRipTimer
= 0;
174
}
175
176
void
Reset
()
OVERRIDE
177
{
178
GutRipTimer
= std::rand() % 15000 + 10000;
179
}
180
181
void
UpdateAI
(
uint32
diff)
OVERRIDE
182
{
183
if
(!
UpdateVictim
())
184
return
;
185
186
if
(
GutRipTimer
<= diff)
187
{
188
DoCastVictim
(
SPELL_GUT_RIP
,
false
);
189
GutRipTimer
= std::rand() % 15000 + 10000;
190
}
191
else
192
GutRipTimer
-= diff;
193
194
DoMeleeAttackIfReady
();
195
}
196
197
void
JustDied
(
Unit
*
/*killer*/
)
OVERRIDE
198
{
199
if
(
Creature
* Dred =
ObjectAccessor::GetCreature
(*
me
,
instance
->GetData64(
DATA_KING_DRED
)))
200
Dred->AI()->DoAction(
ACTION_RAPTOR_KILLED
);
201
}
202
203
private
:
204
InstanceScript
*
instance
;
205
uint32
GutRipTimer
;
206
};
207
208
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
209
{
210
return
GetDrakTharonKeepAI<npc_drakkari_gutripperAI>
(creature);
211
}
212
};
213
214
class
npc_drakkari_scytheclaw
:
public
CreatureScript
215
{
216
public
:
217
npc_drakkari_scytheclaw
() :
CreatureScript
(
"npc_drakkari_scytheclaw"
) { }
218
219
struct
npc_drakkari_scytheclawAI
:
public
ScriptedAI
220
{
221
npc_drakkari_scytheclawAI
(
Creature
* creature) :
ScriptedAI
(creature)
222
{
223
instance
=
me
->GetInstanceScript();
224
uiRendTimer
= 0;
225
}
226
227
void
Reset
()
OVERRIDE
228
{
229
uiRendTimer
= std::rand() % 15000 + 10000;
230
}
231
232
void
UpdateAI
(
uint32
diff)
OVERRIDE
233
{
234
if
(!
UpdateVictim
())
235
return
;
236
237
if
(
uiRendTimer
<= diff)
238
{
239
DoCastVictim
(
SPELL_REND
,
false
);
240
uiRendTimer
= std::rand() % 15000 + 10000;
241
}
242
else
243
uiRendTimer
-= diff;
244
245
DoMeleeAttackIfReady
();
246
}
247
248
void
JustDied
(
Unit
*
/*killer*/
)
OVERRIDE
249
{
250
if
(
Creature
* Dred =
ObjectAccessor::GetCreature
(*
me
,
instance
->GetData64(
DATA_KING_DRED
)))
251
Dred->AI()->DoAction(
ACTION_RAPTOR_KILLED
);
252
}
253
254
private
:
255
InstanceScript
*
instance
;
256
uint32
uiRendTimer
;
257
};
258
259
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
260
{
261
return
GetDrakTharonKeepAI<npc_drakkari_scytheclawAI>
(creature);
262
}
263
};
264
265
class
achievement_king_dred
:
public
AchievementCriteriaScript
266
{
267
public
:
268
achievement_king_dred
() :
AchievementCriteriaScript
(
"achievement_king_dred"
) { }
269
270
bool
OnCheck
(
Player
*
/*player*/
,
Unit
* target)
OVERRIDE
271
{
272
if
(!target)
273
return
false
;
274
275
if
(
Creature
* Dred = target->
ToCreature
())
276
if
(Dred->AI()->GetData(
DATA_RAPTORS_KILLED
) >= 6)
277
return
true
;
278
279
return
false
;
280
}
281
};
282
283
void
AddSC_boss_king_dred
()
284
{
285
new
boss_king_dred
();
286
new
npc_drakkari_gutripper
();
287
new
npc_drakkari_scytheclaw
();
288
new
achievement_king_dred
();
289
}
Spells
Spells
Definition
BattlegroundIC.h:645
RAND
const T & RAND(const T &v1, const T &v2)
Definition
CreatureAIImpl.h:17
int32
std::int32_t int32
Definition
Define.h:73
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
TempSummonType::TEMPSUMMON_DEAD_DESPAWN
@ TEMPSUMMON_DEAD_DESPAWN
Definition
Object.h:74
ScriptMgr.h
ScriptedCreature.h
UNIT_STATE_CASTING
@ UNIT_STATE_CASTING
Definition
Unit.h:527
Events
Events
Definition
alterac_valley.cpp:40
SPELL_REND
@ SPELL_REND
Definition
boss_halycon.cpp:12
AddSC_boss_king_dred
void AddSC_boss_king_dred()
Definition
boss_king_dred.cpp:283
ACTION_RAPTOR_KILLED
@ ACTION_RAPTOR_KILLED
Definition
boss_king_dred.cpp:28
DATA_RAPTORS_KILLED
@ DATA_RAPTORS_KILLED
Definition
boss_king_dred.cpp:29
SPELL_BELLOWING_ROAR
@ SPELL_BELLOWING_ROAR
Definition
boss_king_dred.cpp:16
SPELL_MANGLING_SLASH
@ SPELL_MANGLING_SLASH
Definition
boss_king_dred.cpp:18
SPELL_GRIEVOUS_BITE
@ SPELL_GRIEVOUS_BITE
Definition
boss_king_dred.cpp:17
SPELL_FEARSOME_ROAR
@ SPELL_FEARSOME_ROAR
Definition
boss_king_dred.cpp:19
SPELL_PIERCING_SLASH
@ SPELL_PIERCING_SLASH
Definition
boss_king_dred.cpp:20
SPELL_REND
@ SPELL_REND
Definition
boss_king_dred.cpp:23
SPELL_GUT_RIP
@ SPELL_GUT_RIP
Definition
boss_king_dred.cpp:22
SPELL_RAPTOR_CALL
@ SPELL_RAPTOR_CALL
Definition
boss_king_dred.cpp:21
EVENT_MANGLING_SLASH
@ EVENT_MANGLING_SLASH
Definition
boss_king_dred.cpp:36
EVENT_PIERCING_SLASH
@ EVENT_PIERCING_SLASH
Definition
boss_king_dred.cpp:38
EVENT_BELLOWING_ROAR
@ EVENT_BELLOWING_ROAR
Definition
boss_king_dred.cpp:34
EVENT_GRIEVOUS_BITE
@ EVENT_GRIEVOUS_BITE
Definition
boss_king_dred.cpp:35
EVENT_FEARSOME_ROAR
@ EVENT_FEARSOME_ROAR
Definition
boss_king_dred.cpp:37
EVENT_RAPTOR_CALL
@ EVENT_RAPTOR_CALL
Definition
boss_king_dred.cpp:39
SPELL_BELLOWING_ROAR
@ SPELL_BELLOWING_ROAR
Definition
boss_nightbane.cpp:20
Misc
Misc
Definition
boss_occuthar.cpp:37
EVENT_BELLOWING_ROAR
@ EVENT_BELLOWING_ROAR
Definition
boss_onyxia.cpp:67
AchievementCriteriaScript::AchievementCriteriaScript
AchievementCriteriaScript(const char *name)
Definition
ScriptMgr.cpp:1508
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::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
ObjectAccessor::GetCreature
static Creature * GetCreature(WorldObject const &u, uint64 guid)
Definition
ObjectAccessor.cpp:209
Object::ToCreature
Creature * ToCreature()
Definition
Object.h:207
Player
Definition
Player.h:1289
UnitAI::DoMeleeAttackIfReady
void DoMeleeAttackIfReady()
Definition
UnitAI.cpp:28
UnitAI::DoCastVictim
void DoCastVictim(uint32 spellId, bool triggered=false)
Definition
UnitAI.cpp:168
UnitAI::DoCastAOE
void DoCastAOE(uint32 spellId, bool triggered=false)
Definition
UnitAI.cpp:176
Unit
Definition
Unit.h:1367
achievement_king_dred
Definition
boss_king_dred.cpp:266
achievement_king_dred::OnCheck
bool OnCheck(Player *, Unit *target) OVERRIDE
Definition
boss_king_dred.cpp:270
achievement_king_dred::achievement_king_dred
achievement_king_dred()
Definition
boss_king_dred.cpp:268
boss_king_dred
Definition
boss_king_dred.cpp:43
boss_king_dred::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_king_dred.cpp:157
boss_king_dred::boss_king_dred
boss_king_dred()
Definition
boss_king_dred.cpp:45
npc_drakkari_gutripper
Definition
boss_king_dred.cpp:164
npc_drakkari_gutripper::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_king_dred.cpp:208
npc_drakkari_gutripper::npc_drakkari_gutripper
npc_drakkari_gutripper()
Definition
boss_king_dred.cpp:166
npc_drakkari_scytheclaw
Definition
boss_king_dred.cpp:215
npc_drakkari_scytheclaw::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_king_dred.cpp:259
npc_drakkari_scytheclaw::npc_drakkari_scytheclaw
npc_drakkari_scytheclaw()
Definition
boss_king_dred.cpp:217
drak_tharon_keep.h
GetDrakTharonKeepAI
AI * GetDrakTharonKeepAI(Creature *creature)
Definition
drak_tharon_keep.h:75
NPC_DRAKKARI_GUTRIPPER
@ NPC_DRAKKARI_GUTRIPPER
Definition
drak_tharon_keep.h:60
NPC_DRAKKARI_SCYTHECLAW
@ NPC_DRAKKARI_SCYTHECLAW
Definition
drak_tharon_keep.h:61
DATA_KING_DRED
@ DATA_KING_DRED
Definition
drak_tharon_keep.h:18
ScriptedAI::me
Creature * me
Definition
ScriptedCreature.h:182
ScriptedAI::ScriptedAI
ScriptedAI(Creature *creature)
Definition
ScriptedCreature.cpp:85
boss_king_dred::boss_king_dredAI::GetData
uint32 GetData(uint32 type) const OVERRIDE
Definition
boss_king_dred.cpp:77
boss_king_dred::boss_king_dredAI::Reset
void Reset() OVERRIDE
Definition
boss_king_dred.cpp:54
boss_king_dred::boss_king_dredAI::DoAction
void DoAction(int32 action) OVERRIDE
Definition
boss_king_dred.cpp:71
boss_king_dred::boss_king_dredAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_king_dred.cpp:90
boss_king_dred::boss_king_dredAI::boss_king_dredAI
boss_king_dredAI(Creature *creature)
Definition
boss_king_dred.cpp:49
boss_king_dred::boss_king_dredAI::EnterCombat
void EnterCombat(Unit *) OVERRIDE
Definition
boss_king_dred.cpp:59
boss_king_dred::boss_king_dredAI::JustDied
void JustDied(Unit *) OVERRIDE
Definition
boss_king_dred.cpp:85
boss_king_dred::boss_king_dredAI::raptorsKilled
uint8 raptorsKilled
Definition
boss_king_dred.cpp:154
npc_drakkari_gutripper::npc_drakkari_gutripperAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_king_dred.cpp:181
npc_drakkari_gutripper::npc_drakkari_gutripperAI::Reset
void Reset() OVERRIDE
Definition
boss_king_dred.cpp:176
npc_drakkari_gutripper::npc_drakkari_gutripperAI::GutRipTimer
uint32 GutRipTimer
Definition
boss_king_dred.cpp:205
npc_drakkari_gutripper::npc_drakkari_gutripperAI::instance
InstanceScript * instance
Definition
boss_king_dred.cpp:204
npc_drakkari_gutripper::npc_drakkari_gutripperAI::JustDied
void JustDied(Unit *) OVERRIDE
Definition
boss_king_dred.cpp:197
npc_drakkari_gutripper::npc_drakkari_gutripperAI::npc_drakkari_gutripperAI
npc_drakkari_gutripperAI(Creature *creature)
Definition
boss_king_dred.cpp:170
npc_drakkari_scytheclaw::npc_drakkari_scytheclawAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_king_dred.cpp:232
npc_drakkari_scytheclaw::npc_drakkari_scytheclawAI::instance
InstanceScript * instance
Definition
boss_king_dred.cpp:255
npc_drakkari_scytheclaw::npc_drakkari_scytheclawAI::Reset
void Reset() OVERRIDE
Definition
boss_king_dred.cpp:227
npc_drakkari_scytheclaw::npc_drakkari_scytheclawAI::JustDied
void JustDied(Unit *) OVERRIDE
Definition
boss_king_dred.cpp:248
npc_drakkari_scytheclaw::npc_drakkari_scytheclawAI::uiRendTimer
uint32 uiRendTimer
Definition
boss_king_dred.cpp:256
npc_drakkari_scytheclaw::npc_drakkari_scytheclawAI::npc_drakkari_scytheclawAI
npc_drakkari_scytheclawAI(Creature *creature)
Definition
boss_king_dred.cpp:221
src
server
scripts
Northrend
DraktharonKeep
boss_king_dred.cpp
Generated on
for Project SkyFire Core by
1.17.0