Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
boss_aeonus.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
Name: Boss_Aeonus
8
%Complete: 80
9
Comment: Some spells not implemented
10
Category: Caverns of Time, The Dark Portal
11
*/
12
13
#include "
ScriptMgr.h
"
14
#include "
ScriptedCreature.h
"
15
#include "
the_black_morass.h
"
16
17
enum
Enums
18
{
19
SAY_ENTER
= 0,
20
SAY_AGGRO
= 1,
21
SAY_BANISH
= 2,
22
SAY_SLAY
= 3,
23
SAY_DEATH
= 4,
24
EMOTE_FRENZY
= 5,
25
26
SPELL_CLEAVE
= 40504,
27
SPELL_TIME_STOP
= 31422,
28
SPELL_ENRAGE
= 37605,
29
SPELL_SAND_BREATH
= 31473,
30
H_SPELL_SAND_BREATH
= 39049
31
};
32
33
enum
Events
34
{
35
EVENT_SANDBREATH
= 1,
36
EVENT_TIMESTOP
= 2,
37
EVENT_FRENZY
= 3
38
};
39
40
class
boss_aeonus
:
public
CreatureScript
41
{
42
public
:
43
boss_aeonus
() :
CreatureScript
(
"boss_aeonus"
) { }
44
45
struct
boss_aeonusAI
:
public
BossAI
46
{
47
boss_aeonusAI
(
Creature
* creature) :
BossAI
(creature,
TYPE_AEONUS
) { }
48
49
void
Reset
()
OVERRIDE
{ }
50
51
void
EnterCombat
(
Unit
*
/*who*/
)
OVERRIDE
52
{
53
events
.ScheduleEvent(
EVENT_SANDBREATH
, std::rand() % 30000 + 15000);
54
events
.ScheduleEvent(
EVENT_TIMESTOP
, std::rand() % 15000 + 10000);
55
events
.ScheduleEvent(
EVENT_FRENZY
, std::rand() % 45000 + 30000);
56
57
Talk
(
SAY_AGGRO
);
58
}
59
60
void
MoveInLineOfSight
(
Unit
* who)
OVERRIDE
61
62
{
63
//Despawn Time Keeper
64
if
(who->GetTypeId() ==
TypeID::TYPEID_UNIT
&& who->GetEntry() ==
NPC_TIME_KEEPER
)
65
{
66
if
(
me
->IsWithinDistInMap(who, 20.0f))
67
{
68
Talk
(
SAY_BANISH
);
69
me
->DealDamage(who, who->GetHealth(), NULL,
DIRECT_DAMAGE
,
SPELL_SCHOOL_MASK_NORMAL
, NULL,
false
);
70
}
71
}
72
73
ScriptedAI::MoveInLineOfSight
(who);
74
}
75
76
void
JustDied
(
Unit
*
/*killer*/
)
OVERRIDE
77
{
78
Talk
(
SAY_DEATH
);
79
80
if
(
instance
)
81
{
82
instance
->SetData(
TYPE_RIFT
,
DONE
);
83
instance
->SetData(
TYPE_MEDIVH
,
DONE
);
// FIXME: later should be removed
84
}
85
}
86
87
void
KilledUnit
(
Unit
*
/*victim*/
)
OVERRIDE
88
{
89
Talk
(
SAY_SLAY
);
90
}
91
92
void
UpdateAI
(
uint32
diff)
OVERRIDE
93
{
94
//Return since we have no target
95
if
(!
UpdateVictim
())
96
return
;
97
98
events
.Update(diff);
99
100
if
(
me
->HasUnitState(
UNIT_STATE_CASTING
))
101
return
;
102
103
while
(
uint32
eventId =
events
.ExecuteEvent())
104
{
105
switch
(eventId)
106
{
107
case
EVENT_SANDBREATH
:
108
DoCastVictim
(
SPELL_SAND_BREATH
);
109
events
.ScheduleEvent(
EVENT_SANDBREATH
, std::rand() % 25000 + 15000);
110
break
;
111
case
EVENT_TIMESTOP
:
112
DoCastVictim
(
SPELL_TIME_STOP
);
113
events
.ScheduleEvent(
EVENT_TIMESTOP
, std::rand() % 35000 + 20000);
114
break
;
115
case
EVENT_FRENZY
:
116
Talk
(
EMOTE_FRENZY
);
117
DoCast
(
me
,
SPELL_ENRAGE
);
118
events
.ScheduleEvent(
EVENT_FRENZY
, std::rand() % 35000 + 25000);
119
break
;
120
default
:
121
break
;
122
}
123
}
124
DoMeleeAttackIfReady
();
125
}
126
};
127
128
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
129
{
130
return
new
boss_aeonusAI
(creature);
131
}
132
};
133
134
void
AddSC_boss_aeonus
()
135
{
136
new
boss_aeonus
();
137
}
uint32
std::uint32_t uint32
Definition
Define.h:77
OVERRIDE
#define OVERRIDE
Definition
Define.h:60
DONE
@ DONE
Definition
InstanceScript.h:49
TypeID::TYPEID_UNIT
@ TYPEID_UNIT
Definition
Object.h:54
ScriptMgr.h
ScriptedCreature.h
SPELL_SCHOOL_MASK_NORMAL
@ SPELL_SCHOOL_MASK_NORMAL
Definition
SharedDefines.h:270
UNIT_STATE_CASTING
@ UNIT_STATE_CASTING
Definition
Unit.h:527
DIRECT_DAMAGE
@ DIRECT_DAMAGE
Definition
Unit.h:614
SPELL_CLEAVE
@ SPELL_CLEAVE
Definition
alterac_valley.cpp:12
SPELL_ENRAGE
@ SPELL_ENRAGE
Definition
alterac_valley.cpp:14
Events
Events
Definition
alterac_valley.cpp:40
Enums
Enums
Definition
boss_aeonus.cpp:18
SAY_DEATH
@ SAY_DEATH
Definition
boss_aeonus.cpp:23
SPELL_SAND_BREATH
@ SPELL_SAND_BREATH
Definition
boss_aeonus.cpp:29
SAY_BANISH
@ SAY_BANISH
Definition
boss_aeonus.cpp:21
SPELL_ENRAGE
@ SPELL_ENRAGE
Definition
boss_aeonus.cpp:28
SPELL_TIME_STOP
@ SPELL_TIME_STOP
Definition
boss_aeonus.cpp:27
SAY_AGGRO
@ SAY_AGGRO
Definition
boss_aeonus.cpp:20
EMOTE_FRENZY
@ EMOTE_FRENZY
Definition
boss_aeonus.cpp:24
H_SPELL_SAND_BREATH
@ H_SPELL_SAND_BREATH
Definition
boss_aeonus.cpp:30
SAY_SLAY
@ SAY_SLAY
Definition
boss_aeonus.cpp:22
AddSC_boss_aeonus
void AddSC_boss_aeonus()
Definition
boss_aeonus.cpp:134
EVENT_SANDBREATH
@ EVENT_SANDBREATH
Definition
boss_aeonus.cpp:35
EVENT_TIMESTOP
@ EVENT_TIMESTOP
Definition
boss_aeonus.cpp:36
EVENT_FRENZY
@ EVENT_FRENZY
Definition
boss_aeonus.cpp:37
SAY_SLAY
@ SAY_SLAY
Definition
boss_alizabal.cpp:20
SAY_ENTER
@ SAY_ENTER
Definition
boss_captain_skarloc.cpp:23
SPELL_TIME_STOP
@ SPELL_TIME_STOP
Definition
boss_chrono_lord_epoch.cpp:22
SAY_DEATH
#define SAY_DEATH
Definition
boss_commander_kolurg.cpp:30
SAY_AGGRO
#define SAY_AGGRO
Definition
boss_commander_kolurg.cpp:28
SPELL_SAND_BREATH
@ SPELL_SAND_BREATH
Definition
boss_epoch_hunter.cpp:29
EVENT_FRENZY
@ EVENT_FRENZY
Definition
boss_gizrul_the_slavener.cpp:27
EMOTE_FRENZY
@ EMOTE_FRENZY
Definition
boss_lord_valthalak.cpp:20
BossAI::instance
InstanceScript *const instance
Definition
ScriptedCreature.h:383
BossAI::events
EventMap events
Definition
ScriptedCreature.h:439
BossAI::BossAI
BossAI(Creature *creature, uint32 bossId)
Definition
ScriptedCreature.cpp:456
CreatureAI
Definition
CreatureAI.h:54
CreatureAI::MoveInLineOfSight
virtual void MoveInLineOfSight(Unit *)
Definition
CreatureAI.cpp:114
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::DoCastVictim
void DoCastVictim(uint32 spellId, bool triggered=false)
Definition
UnitAI.cpp:168
Unit
Definition
Unit.h:1367
boss_aeonus
Definition
boss_aeonus.cpp:41
boss_aeonus::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_aeonus.cpp:128
boss_aeonus::boss_aeonus
boss_aeonus()
Definition
boss_aeonus.cpp:43
ScriptedAI::me
Creature * me
Definition
ScriptedCreature.h:182
boss_aeonus::boss_aeonusAI
Definition
boss_aeonus.cpp:46
boss_aeonus::boss_aeonusAI::JustDied
void JustDied(Unit *) OVERRIDE
Definition
boss_aeonus.cpp:76
boss_aeonus::boss_aeonusAI::Reset
void Reset() OVERRIDE
Definition
boss_aeonus.cpp:49
boss_aeonus::boss_aeonusAI::EnterCombat
void EnterCombat(Unit *) OVERRIDE
Definition
boss_aeonus.cpp:51
boss_aeonus::boss_aeonusAI::boss_aeonusAI
boss_aeonusAI(Creature *creature)
Definition
boss_aeonus.cpp:47
boss_aeonus::boss_aeonusAI::KilledUnit
void KilledUnit(Unit *) OVERRIDE
Definition
boss_aeonus.cpp:87
boss_aeonus::boss_aeonusAI::MoveInLineOfSight
void MoveInLineOfSight(Unit *who) OVERRIDE
Definition
boss_aeonus.cpp:60
boss_aeonus::boss_aeonusAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_aeonus.cpp:92
the_black_morass.h
NPC_TIME_KEEPER
@ NPC_TIME_KEEPER
Definition
the_black_morass.h:40
TYPE_MEDIVH
@ TYPE_MEDIVH
Definition
the_black_morass.h:13
TYPE_AEONUS
@ TYPE_AEONUS
Definition
the_black_morass.h:15
TYPE_RIFT
@ TYPE_RIFT
Definition
the_black_morass.h:14
src
server
scripts
Kalimdor
CavernsOfTime
TheBlackMorass
boss_aeonus.cpp
Generated on
for Project SkyFire Core by
1.17.0