Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
boss_captain_skarloc.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_Captain_Skarloc
8
SD%Complete: 75
9
SDComment: Missing adds, missing waypoints to move up to Thrall once spawned + speech before enter combat.
10
SDCategory: Caverns of Time, Old Hillsbrad Foothills
11
EndScriptData */
12
13
#include "
ScriptMgr.h
"
14
#include "
ScriptedCreature.h
"
15
#include "
old_hillsbrad.h
"
16
17
/*######################
18
# boss_captain_skarloc #
19
#######################*/
20
21
enum
CaptainSkarloc
22
{
23
SAY_ENTER
= 0,
24
SAY_TAUNT1
= 1,
25
SAY_TAUNT2
= 2,
26
SAY_SLAY
= 3,
27
SAY_DEATH
= 4,
28
29
SPELL_HOLY_LIGHT
= 29427,
30
SPELL_CLEANSE
= 29380,
31
SPELL_HAMMER_OF_JUSTICE
= 13005,
32
SPELL_HOLY_SHIELD
= 31904,
33
SPELL_DEVOTION_AURA
= 8258,
34
SPELL_CONSECRATION
= 38385
35
};
36
37
class
boss_captain_skarloc
:
public
CreatureScript
38
{
39
public
:
40
boss_captain_skarloc
() :
CreatureScript
(
"boss_captain_skarloc"
) { }
41
42
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
43
{
44
return
new
boss_captain_skarlocAI
(creature);
45
}
46
47
struct
boss_captain_skarlocAI
:
public
ScriptedAI
48
{
49
boss_captain_skarlocAI
(
Creature
* creature) :
ScriptedAI
(creature)
50
{
51
instance
= creature->
GetInstanceScript
();
52
}
53
54
InstanceScript
*
instance
;
55
56
uint32
Holy_Light_Timer
;
57
uint32
Cleanse_Timer
;
58
uint32
HammerOfJustice_Timer
;
59
uint32
HolyShield_Timer
;
60
uint32
DevotionAura_Timer
;
61
uint32
Consecration_Timer
;
62
63
void
Reset
()
OVERRIDE
64
{
65
Holy_Light_Timer
= std::rand() % 30000 + 20000;
66
Cleanse_Timer
= 10000;
67
HammerOfJustice_Timer
= std::rand() % 35000 + 20000;
68
HolyShield_Timer
= 240000;
69
DevotionAura_Timer
= 3000;
70
Consecration_Timer
= 8000;
71
}
72
73
void
EnterCombat
(
Unit
*
/*who*/
)
OVERRIDE
74
{
75
//This is not correct. Should taunt Thrall before engage in combat
76
Talk
(
SAY_TAUNT1
);
77
Talk
(
SAY_TAUNT2
);
78
}
79
80
void
KilledUnit
(
Unit
*
/*victim*/
)
OVERRIDE
81
{
82
Talk
(
SAY_SLAY
);
83
}
84
85
void
JustDied
(
Unit
*
/*killer*/
)
OVERRIDE
86
{
87
Talk
(
SAY_DEATH
);
88
89
if
(
instance
&&
instance
->GetData(
TYPE_THRALL_EVENT
) ==
IN_PROGRESS
)
90
instance
->SetData(
TYPE_THRALL_PART1
,
DONE
);
91
}
92
93
void
UpdateAI
(
uint32
diff)
OVERRIDE
94
{
95
//Return since we have no target
96
if
(!
UpdateVictim
())
97
return
;
98
99
//Holy_Light
100
if
(
Holy_Light_Timer
<= diff)
101
{
102
DoCast
(
me
,
SPELL_HOLY_LIGHT
);
103
Holy_Light_Timer
= 30000;
104
}
else
Holy_Light_Timer
-= diff;
105
106
//Cleanse
107
if
(
Cleanse_Timer
<= diff)
108
{
109
DoCast
(
me
,
SPELL_CLEANSE
);
110
Cleanse_Timer
= 10000;
111
}
else
Cleanse_Timer
-= diff;
112
113
//Hammer of Justice
114
if
(
HammerOfJustice_Timer
<= diff)
115
{
116
DoCastVictim
(
SPELL_HAMMER_OF_JUSTICE
);
117
HammerOfJustice_Timer
= 60000;
118
}
else
HammerOfJustice_Timer
-= diff;
119
120
//Holy Shield
121
if
(
HolyShield_Timer
<= diff)
122
{
123
DoCast
(
me
,
SPELL_HOLY_SHIELD
);
124
HolyShield_Timer
= 240000;
125
}
else
HolyShield_Timer
-= diff;
126
127
//Devotion_Aura
128
if
(
DevotionAura_Timer
<= diff)
129
{
130
DoCast
(
me
,
SPELL_DEVOTION_AURA
);
131
DevotionAura_Timer
= std::rand() % 55000 + 45000;
132
}
else
DevotionAura_Timer
-= diff;
133
134
//Consecration
135
if
(
Consecration_Timer
<= diff)
136
{
137
//DoCastVictim(SPELL_CONSECRATION);
138
Consecration_Timer
= std::rand() % 10000 + 5000;
139
}
else
Consecration_Timer
-= diff;
140
141
DoMeleeAttackIfReady
();
142
}
143
};
144
};
145
146
void
AddSC_boss_captain_skarloc
()
147
{
148
new
boss_captain_skarloc
();
149
}
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
ScriptMgr.h
ScriptedCreature.h
SAY_SLAY
@ SAY_SLAY
Definition
boss_alizabal.cpp:20
CaptainSkarloc
CaptainSkarloc
Definition
boss_captain_skarloc.cpp:22
SPELL_HAMMER_OF_JUSTICE
@ SPELL_HAMMER_OF_JUSTICE
Definition
boss_captain_skarloc.cpp:31
SAY_DEATH
@ SAY_DEATH
Definition
boss_captain_skarloc.cpp:27
SPELL_CLEANSE
@ SPELL_CLEANSE
Definition
boss_captain_skarloc.cpp:30
SAY_TAUNT1
@ SAY_TAUNT1
Definition
boss_captain_skarloc.cpp:24
SPELL_CONSECRATION
@ SPELL_CONSECRATION
Definition
boss_captain_skarloc.cpp:34
SAY_TAUNT2
@ SAY_TAUNT2
Definition
boss_captain_skarloc.cpp:25
SPELL_DEVOTION_AURA
@ SPELL_DEVOTION_AURA
Definition
boss_captain_skarloc.cpp:33
SAY_SLAY
@ SAY_SLAY
Definition
boss_captain_skarloc.cpp:26
SAY_ENTER
@ SAY_ENTER
Definition
boss_captain_skarloc.cpp:23
SPELL_HOLY_SHIELD
@ SPELL_HOLY_SHIELD
Definition
boss_captain_skarloc.cpp:32
SPELL_HOLY_LIGHT
@ SPELL_HOLY_LIGHT
Definition
boss_captain_skarloc.cpp:29
AddSC_boss_captain_skarloc
void AddSC_boss_captain_skarloc()
Definition
boss_captain_skarloc.cpp:146
SAY_DEATH
#define SAY_DEATH
Definition
boss_commander_kolurg.cpp:30
SPELL_CLEANSE
@ SPELL_CLEANSE
Definition
boss_moroes.cpp:48
SPELL_HOLY_LIGHT
@ SPELL_HOLY_LIGHT
Definition
boss_order_of_silver_hand.cpp:37
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
UnitAI::DoMeleeAttackIfReady
void DoMeleeAttackIfReady()
Definition
UnitAI.cpp:28
UnitAI::DoCast
void DoCast(uint32 spellId)
Definition
UnitAI.cpp:110
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_captain_skarloc
Definition
boss_captain_skarloc.cpp:38
boss_captain_skarloc::boss_captain_skarloc
boss_captain_skarloc()
Definition
boss_captain_skarloc.cpp:40
boss_captain_skarloc::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_captain_skarloc.cpp:42
old_hillsbrad.h
TYPE_THRALL_PART1
@ TYPE_THRALL_PART1
Definition
old_hillsbrad.h:13
TYPE_THRALL_EVENT
@ TYPE_THRALL_EVENT
Definition
old_hillsbrad.h:12
ScriptedAI::me
Creature * me
Definition
ScriptedCreature.h:182
ScriptedAI::ScriptedAI
ScriptedAI(Creature *creature)
Definition
ScriptedCreature.cpp:85
boss_captain_skarloc::boss_captain_skarlocAI
Definition
boss_captain_skarloc.cpp:48
boss_captain_skarloc::boss_captain_skarlocAI::Cleanse_Timer
uint32 Cleanse_Timer
Definition
boss_captain_skarloc.cpp:57
boss_captain_skarloc::boss_captain_skarlocAI::HammerOfJustice_Timer
uint32 HammerOfJustice_Timer
Definition
boss_captain_skarloc.cpp:58
boss_captain_skarloc::boss_captain_skarlocAI::EnterCombat
void EnterCombat(Unit *) OVERRIDE
Definition
boss_captain_skarloc.cpp:73
boss_captain_skarloc::boss_captain_skarlocAI::Consecration_Timer
uint32 Consecration_Timer
Definition
boss_captain_skarloc.cpp:61
boss_captain_skarloc::boss_captain_skarlocAI::boss_captain_skarlocAI
boss_captain_skarlocAI(Creature *creature)
Definition
boss_captain_skarloc.cpp:49
boss_captain_skarloc::boss_captain_skarlocAI::JustDied
void JustDied(Unit *) OVERRIDE
Definition
boss_captain_skarloc.cpp:85
boss_captain_skarloc::boss_captain_skarlocAI::DevotionAura_Timer
uint32 DevotionAura_Timer
Definition
boss_captain_skarloc.cpp:60
boss_captain_skarloc::boss_captain_skarlocAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_captain_skarloc.cpp:93
boss_captain_skarloc::boss_captain_skarlocAI::KilledUnit
void KilledUnit(Unit *) OVERRIDE
Definition
boss_captain_skarloc.cpp:80
boss_captain_skarloc::boss_captain_skarlocAI::instance
InstanceScript * instance
Definition
boss_captain_skarloc.cpp:54
boss_captain_skarloc::boss_captain_skarlocAI::Reset
void Reset() OVERRIDE
Definition
boss_captain_skarloc.cpp:63
boss_captain_skarloc::boss_captain_skarlocAI::Holy_Light_Timer
uint32 Holy_Light_Timer
Definition
boss_captain_skarloc.cpp:56
boss_captain_skarloc::boss_captain_skarlocAI::HolyShield_Timer
uint32 HolyShield_Timer
Definition
boss_captain_skarloc.cpp:59
src
server
scripts
Kalimdor
CavernsOfTime
EscapeFromDurnholdeKeep
boss_captain_skarloc.cpp
Generated on
for Project SkyFire Core by
1.17.0