Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
boss_epoch_hunter.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_Epoch_Hunter
8
SD%Complete: 60
9
SDComment: Missing spawns pre-event, missing speech to be coordinated with rest of escort event.
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_epoch_hunter #
19
####################*/
20
21
enum
EpochHunter
22
{
23
SAY_ENTER
= 0,
24
SAY_AGGRO
= 1,
25
SAY_SLAY
= 2,
26
SAY_BREATH
= 3,
27
SAY_DEATH
= 4,
28
29
SPELL_SAND_BREATH
= 31914,
30
SPELL_IMPENDING_DEATH
= 31916,
31
SPELL_MAGIC_DISRUPTION_AURA
= 33834,
32
SPELL_WING_BUFFET
= 31475
33
};
34
35
class
boss_epoch_hunter
:
public
CreatureScript
36
{
37
public
:
38
boss_epoch_hunter
() :
CreatureScript
(
"boss_epoch_hunter"
) { }
39
40
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
41
{
42
return
new
boss_epoch_hunterAI
(creature);
43
}
44
45
struct
boss_epoch_hunterAI
:
public
ScriptedAI
46
{
47
boss_epoch_hunterAI
(
Creature
* creature) :
ScriptedAI
(creature)
48
{
49
instance
= creature->
GetInstanceScript
();
50
}
51
52
InstanceScript
*
instance
;
53
54
uint32
SandBreath_Timer
;
55
uint32
ImpendingDeath_Timer
;
56
uint32
WingBuffet_Timer
;
57
uint32
Mda_Timer
;
58
59
void
Reset
()
OVERRIDE
60
{
61
SandBreath_Timer
= std::rand() % 16000 + 8000;
62
ImpendingDeath_Timer
= std::rand() % 30000 + 25000;
63
WingBuffet_Timer
= 35000;
64
Mda_Timer
= 40000;
65
}
66
67
void
EnterCombat
(
Unit
*
/*who*/
)
OVERRIDE
68
{
69
Talk
(
SAY_AGGRO
);
70
}
71
72
void
KilledUnit
(
Unit
*
/*victim*/
)
OVERRIDE
73
{
74
Talk
(
SAY_SLAY
);
75
}
76
77
void
JustDied
(
Unit
*
/*killer*/
)
OVERRIDE
78
{
79
Talk
(
SAY_DEATH
);
80
81
if
(
instance
&&
instance
->GetData(
TYPE_THRALL_EVENT
) ==
IN_PROGRESS
)
82
instance
->SetData(
TYPE_THRALL_PART4
,
DONE
);
83
}
84
85
void
UpdateAI
(
uint32
diff)
OVERRIDE
86
{
87
//Return since we have no target
88
if
(!
UpdateVictim
())
89
return
;
90
91
//Sand Breath
92
if
(
SandBreath_Timer
<= diff)
93
{
94
if
(
me
->IsNonMeleeSpellCasted(
false
))
95
me
->InterruptNonMeleeSpells(
false
);
96
97
DoCastVictim
(
SPELL_SAND_BREATH
);
98
99
Talk
(
SAY_BREATH
);
100
101
SandBreath_Timer
= std::rand() % 20000 + 10000;
102
}
else
SandBreath_Timer
-= diff;
103
104
if
(
ImpendingDeath_Timer
<= diff)
105
{
106
DoCastVictim
(
SPELL_IMPENDING_DEATH
);
107
ImpendingDeath_Timer
= 25000+rand()%5000;
108
}
else
ImpendingDeath_Timer
-= diff;
109
110
if
(
WingBuffet_Timer
<= diff)
111
{
112
if
(
Unit
* target =
SelectTarget
(
SELECT_TARGET_RANDOM
, 0))
113
DoCast
(target,
SPELL_WING_BUFFET
);
114
WingBuffet_Timer
= 25000+rand()%10000;
115
}
else
WingBuffet_Timer
-= diff;
116
117
if
(
Mda_Timer
<= diff)
118
{
119
DoCast
(
me
,
SPELL_MAGIC_DISRUPTION_AURA
);
120
Mda_Timer
= 15000;
121
}
else
Mda_Timer
-= diff;
122
123
DoMeleeAttackIfReady
();
124
}
125
};
126
};
127
128
void
AddSC_boss_epoch_hunter
()
129
{
130
new
boss_epoch_hunter
();
131
}
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
SELECT_TARGET_RANDOM
@ SELECT_TARGET_RANDOM
Definition
UnitAI.h:23
SAY_SLAY
@ SAY_SLAY
Definition
boss_alizabal.cpp:20
SAY_ENTER
@ SAY_ENTER
Definition
boss_captain_skarloc.cpp:23
SAY_DEATH
#define SAY_DEATH
Definition
boss_commander_kolurg.cpp:30
SAY_AGGRO
#define SAY_AGGRO
Definition
boss_commander_kolurg.cpp:28
EpochHunter
EpochHunter
Definition
boss_epoch_hunter.cpp:22
SAY_DEATH
@ SAY_DEATH
Definition
boss_epoch_hunter.cpp:27
SPELL_SAND_BREATH
@ SPELL_SAND_BREATH
Definition
boss_epoch_hunter.cpp:29
SPELL_WING_BUFFET
@ SPELL_WING_BUFFET
Definition
boss_epoch_hunter.cpp:32
SAY_AGGRO
@ SAY_AGGRO
Definition
boss_epoch_hunter.cpp:24
SPELL_MAGIC_DISRUPTION_AURA
@ SPELL_MAGIC_DISRUPTION_AURA
Definition
boss_epoch_hunter.cpp:31
SAY_SLAY
@ SAY_SLAY
Definition
boss_epoch_hunter.cpp:25
SAY_BREATH
@ SAY_BREATH
Definition
boss_epoch_hunter.cpp:26
SPELL_IMPENDING_DEATH
@ SPELL_IMPENDING_DEATH
Definition
boss_epoch_hunter.cpp:30
AddSC_boss_epoch_hunter
void AddSC_boss_epoch_hunter()
Definition
boss_epoch_hunter.cpp:128
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::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
WorldObject::GetInstanceScript
InstanceScript * GetInstanceScript()
Definition
Object.cpp:1612
boss_epoch_hunter
Definition
boss_epoch_hunter.cpp:36
boss_epoch_hunter::boss_epoch_hunter
boss_epoch_hunter()
Definition
boss_epoch_hunter.cpp:38
boss_epoch_hunter::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_epoch_hunter.cpp:40
old_hillsbrad.h
TYPE_THRALL_PART4
@ TYPE_THRALL_PART4
Definition
old_hillsbrad.h:16
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_epoch_hunter::boss_epoch_hunterAI
Definition
boss_epoch_hunter.cpp:46
boss_epoch_hunter::boss_epoch_hunterAI::ImpendingDeath_Timer
uint32 ImpendingDeath_Timer
Definition
boss_epoch_hunter.cpp:55
boss_epoch_hunter::boss_epoch_hunterAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_epoch_hunter.cpp:85
boss_epoch_hunter::boss_epoch_hunterAI::SandBreath_Timer
uint32 SandBreath_Timer
Definition
boss_epoch_hunter.cpp:54
boss_epoch_hunter::boss_epoch_hunterAI::EnterCombat
void EnterCombat(Unit *) OVERRIDE
Definition
boss_epoch_hunter.cpp:67
boss_epoch_hunter::boss_epoch_hunterAI::boss_epoch_hunterAI
boss_epoch_hunterAI(Creature *creature)
Definition
boss_epoch_hunter.cpp:47
boss_epoch_hunter::boss_epoch_hunterAI::WingBuffet_Timer
uint32 WingBuffet_Timer
Definition
boss_epoch_hunter.cpp:56
boss_epoch_hunter::boss_epoch_hunterAI::JustDied
void JustDied(Unit *) OVERRIDE
Definition
boss_epoch_hunter.cpp:77
boss_epoch_hunter::boss_epoch_hunterAI::instance
InstanceScript * instance
Definition
boss_epoch_hunter.cpp:52
boss_epoch_hunter::boss_epoch_hunterAI::Mda_Timer
uint32 Mda_Timer
Definition
boss_epoch_hunter.cpp:57
boss_epoch_hunter::boss_epoch_hunterAI::KilledUnit
void KilledUnit(Unit *) OVERRIDE
Definition
boss_epoch_hunter.cpp:72
boss_epoch_hunter::boss_epoch_hunterAI::Reset
void Reset() OVERRIDE
Definition
boss_epoch_hunter.cpp:59
src
server
scripts
Kalimdor
CavernsOfTime
EscapeFromDurnholdeKeep
boss_epoch_hunter.cpp
Generated on
for Project SkyFire Core by
1.17.0