Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
boss_chrono_lord_epoch.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
/* Script Data Start
7
SDName: Boss epoch
8
SDAuthor: Tartalo
9
SD%Complete: 80
10
SDComment: @todo Intro, consecutive attacks to a random target durin time wrap, adjust timers
11
SDCategory:
12
Script Data End */
13
14
#include "
ScriptMgr.h
"
15
#include "
ScriptedCreature.h
"
16
#include "
culling_of_stratholme.h
"
17
18
enum
Spells
19
{
20
SPELL_CURSE_OF_EXERTION
= 52772,
21
SPELL_TIME_WARP
= 52766,
//Time slows down, reducing attack, casting and movement speed by 70% for 6 sec.
22
SPELL_TIME_STOP
= 58848,
//Stops time in a 50 yard sphere for 2 sec.
23
SPELL_WOUNDING_STRIKE
= 52771,
//Used only on the tank
24
H_SPELL_WOUNDING_STRIKE
= 58830
25
};
26
27
enum
Yells
28
{
29
SAY_INTRO
= 0,
30
SAY_AGGRO
= 1,
31
SAY_TIME_WARP
= 2,
32
SAY_SLAY
= 3,
33
SAY_DEATH
= 4
34
};
35
36
class
boss_epoch
:
public
CreatureScript
37
{
38
public
:
39
boss_epoch
() :
CreatureScript
(
"boss_epoch"
) { }
40
41
struct
boss_epochAI
:
public
ScriptedAI
42
{
43
boss_epochAI
(
Creature
* creature) :
ScriptedAI
(creature)
44
{
45
instance
= creature->
GetInstanceScript
();
46
uiStep
= 0;
47
uiStepTimer
= 0;
48
uiWoundingStrikeTimer
= 0;
49
uiTimeWarpTimer
= 0;
50
uiTimeStopTimer
= 0;
51
uiCurseOfExertionTimer
= 0;
52
}
53
54
void
Reset
()
OVERRIDE
55
{
56
uiStep
= 1;
57
uiStepTimer
= 26000;
58
uiCurseOfExertionTimer
= 9300;
59
uiTimeWarpTimer
= 25300;
60
uiTimeStopTimer
= 21300;
61
uiWoundingStrikeTimer
= 5300;
62
63
if
(
instance
)
64
instance
->SetData(
DATA_EPOCH_EVENT
,
NOT_STARTED
);
65
}
66
67
void
EnterCombat
(
Unit
*
/*who*/
)
OVERRIDE
68
{
69
Talk
(
SAY_AGGRO
);
70
71
if
(
instance
)
72
instance
->SetData(
DATA_EPOCH_EVENT
,
IN_PROGRESS
);
73
}
74
75
void
UpdateAI
(
uint32
diff)
OVERRIDE
76
{
77
//Return since we have no target
78
if
(!
UpdateVictim
())
79
return
;
80
81
if
(
uiCurseOfExertionTimer
< diff)
82
{
83
if
(
Unit
* target =
SelectTarget
(
SELECT_TARGET_RANDOM
, 0, 100,
true
))
84
DoCast
(target,
SPELL_CURSE_OF_EXERTION
);
85
uiCurseOfExertionTimer
= 9300;
86
}
else
uiCurseOfExertionTimer
-= diff;
87
88
if
(
uiWoundingStrikeTimer
< diff)
89
{
90
DoCastVictim
(
SPELL_WOUNDING_STRIKE
);
91
uiWoundingStrikeTimer
= 5300;
92
}
else
uiWoundingStrikeTimer
-= diff;
93
94
if
(
uiTimeStopTimer
< diff)
95
{
96
DoCastAOE
(
SPELL_TIME_STOP
);
97
uiTimeStopTimer
= 21300;
98
}
else
uiTimeStopTimer
-= diff;
99
100
if
(
uiTimeWarpTimer
< diff)
101
{
102
Talk
(
SAY_TIME_WARP
);
103
DoCastAOE
(
SPELL_TIME_WARP
);
104
uiTimeWarpTimer
= 25300;
105
}
else
uiTimeWarpTimer
-= diff;
106
107
DoMeleeAttackIfReady
();
108
}
109
110
void
JustDied
(
Unit
*
/*killer*/
)
OVERRIDE
111
{
112
Talk
(
SAY_DEATH
);
113
114
if
(
instance
)
115
instance
->SetData(
DATA_EPOCH_EVENT
,
DONE
);
116
}
117
118
void
KilledUnit
(
Unit
* victim)
OVERRIDE
119
{
120
if
(victim->GetTypeId() !=
TypeID::TYPEID_PLAYER
)
121
return
;
122
123
Talk
(
SAY_SLAY
);
124
}
125
126
private
:
127
uint8
uiStep
;
128
uint32
uiStepTimer
;
129
uint32
uiWoundingStrikeTimer
;
130
uint32
uiTimeWarpTimer
;
131
uint32
uiTimeStopTimer
;
132
uint32
uiCurseOfExertionTimer
;
133
InstanceScript
*
instance
;
134
};
135
136
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
137
{
138
return
new
boss_epochAI
(creature);
139
}
140
};
141
142
void
AddSC_boss_epoch
()
143
{
144
new
boss_epoch
();
145
}
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
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
ScriptMgr.h
ScriptedCreature.h
SELECT_TARGET_RANDOM
@ SELECT_TARGET_RANDOM
Definition
UnitAI.h:23
SAY_SLAY
@ SAY_SLAY
Definition
boss_alizabal.cpp:20
SAY_INTRO
@ SAY_INTRO
Definition
boss_alizabal.cpp:14
AddSC_boss_epoch
void AddSC_boss_epoch()
Definition
boss_chrono_lord_epoch.cpp:142
SAY_DEATH
@ SAY_DEATH
Definition
boss_chrono_lord_epoch.cpp:33
SAY_AGGRO
@ SAY_AGGRO
Definition
boss_chrono_lord_epoch.cpp:30
SAY_TIME_WARP
@ SAY_TIME_WARP
Definition
boss_chrono_lord_epoch.cpp:31
SAY_SLAY
@ SAY_SLAY
Definition
boss_chrono_lord_epoch.cpp:32
SPELL_CURSE_OF_EXERTION
@ SPELL_CURSE_OF_EXERTION
Definition
boss_chrono_lord_epoch.cpp:20
SPELL_TIME_STOP
@ SPELL_TIME_STOP
Definition
boss_chrono_lord_epoch.cpp:22
SPELL_WOUNDING_STRIKE
@ SPELL_WOUNDING_STRIKE
Definition
boss_chrono_lord_epoch.cpp:23
SPELL_TIME_WARP
@ SPELL_TIME_WARP
Definition
boss_chrono_lord_epoch.cpp:21
H_SPELL_WOUNDING_STRIKE
@ H_SPELL_WOUNDING_STRIKE
Definition
boss_chrono_lord_epoch.cpp:24
SAY_DEATH
#define SAY_DEATH
Definition
boss_commander_kolurg.cpp:30
SAY_AGGRO
#define SAY_AGGRO
Definition
boss_commander_kolurg.cpp:28
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
UnitAI::DoCastAOE
void DoCastAOE(uint32 spellId, bool triggered=false)
Definition
UnitAI.cpp:176
Unit
Definition
Unit.h:1367
WorldObject::GetInstanceScript
InstanceScript * GetInstanceScript()
Definition
Object.cpp:1612
boss_epoch
Definition
boss_chrono_lord_epoch.cpp:37
boss_epoch::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_chrono_lord_epoch.cpp:136
boss_epoch::boss_epoch
boss_epoch()
Definition
boss_chrono_lord_epoch.cpp:39
culling_of_stratholme.h
DATA_EPOCH_EVENT
@ DATA_EPOCH_EVENT
Definition
culling_of_stratholme.h:13
ScriptedAI::ScriptedAI
ScriptedAI(Creature *creature)
Definition
ScriptedCreature.cpp:85
Yells
Definition
boss_illidan.cpp:256
boss_epoch::boss_epochAI
Definition
boss_chrono_lord_epoch.cpp:42
boss_epoch::boss_epochAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_chrono_lord_epoch.cpp:75
boss_epoch::boss_epochAI::Reset
void Reset() OVERRIDE
Definition
boss_chrono_lord_epoch.cpp:54
boss_epoch::boss_epochAI::KilledUnit
void KilledUnit(Unit *victim) OVERRIDE
Definition
boss_chrono_lord_epoch.cpp:118
boss_epoch::boss_epochAI::uiTimeWarpTimer
uint32 uiTimeWarpTimer
Definition
boss_chrono_lord_epoch.cpp:130
boss_epoch::boss_epochAI::uiWoundingStrikeTimer
uint32 uiWoundingStrikeTimer
Definition
boss_chrono_lord_epoch.cpp:129
boss_epoch::boss_epochAI::boss_epochAI
boss_epochAI(Creature *creature)
Definition
boss_chrono_lord_epoch.cpp:43
boss_epoch::boss_epochAI::uiTimeStopTimer
uint32 uiTimeStopTimer
Definition
boss_chrono_lord_epoch.cpp:131
boss_epoch::boss_epochAI::uiCurseOfExertionTimer
uint32 uiCurseOfExertionTimer
Definition
boss_chrono_lord_epoch.cpp:132
boss_epoch::boss_epochAI::JustDied
void JustDied(Unit *) OVERRIDE
Definition
boss_chrono_lord_epoch.cpp:110
boss_epoch::boss_epochAI::uiStepTimer
uint32 uiStepTimer
Definition
boss_chrono_lord_epoch.cpp:128
boss_epoch::boss_epochAI::EnterCombat
void EnterCombat(Unit *) OVERRIDE
Definition
boss_chrono_lord_epoch.cpp:67
boss_epoch::boss_epochAI::instance
InstanceScript * instance
Definition
boss_chrono_lord_epoch.cpp:133
boss_epoch::boss_epochAI::uiStep
uint8 uiStep
Definition
boss_chrono_lord_epoch.cpp:127
src
server
scripts
Kalimdor
CavernsOfTime
CullingOfStratholme
boss_chrono_lord_epoch.cpp
Generated on
for Project SkyFire Core by
1.17.0