Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
boss_moorabi.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
#include "
ScriptMgr.h
"
7
#include "
ScriptedCreature.h
"
8
#include "
gundrak.h
"
9
10
enum
Spells
11
{
12
SPELL_DETERMINED_STAB
= 55104,
13
SPELL_GROUND_TREMOR
= 55142,
14
SPELL_NUMBING_SHOUT
= 55106,
15
SPELL_DETERMINED_GORE
= 55102,
16
H_SPELL_DETERMINED_GORE
= 59444,
17
SPELL_QUAKE
= 55101,
18
SPELL_NUMBING_ROAR
= 55100,
19
SPELL_MOJO_FRENZY
= 55163,
20
SPELL_TRANSFORMATION
= 55098,
//Periodic, The caster transforms into a powerful mammoth, increasing Physical damage done by 25% and granting immunity to Stun effects.
21
};
22
23
enum
Says
24
{
25
SAY_AGGRO
= 0,
26
SAY_SLAY
= 1,
27
SAY_DEATH
= 2,
28
SAY_TRANSFORM
= 3,
29
SAY_QUAKE
= 4,
30
EMOTE_TRANSFORM
= 5
31
};
32
33
enum
Misc
34
{
35
DATA_LESS_RABI
= 1
36
};
37
38
class
boss_moorabi
:
public
CreatureScript
39
{
40
public
:
41
boss_moorabi
() :
CreatureScript
(
"boss_moorabi"
) { }
42
43
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
44
{
45
return
new
boss_moorabiAI
(creature);
46
}
47
48
struct
boss_moorabiAI
:
public
ScriptedAI
49
{
50
boss_moorabiAI
(
Creature
* creature) :
ScriptedAI
(creature)
51
{
52
instance
= creature->
GetInstanceScript
();
53
}
54
55
InstanceScript
*
instance
;
56
57
bool
bPhase
;
58
59
uint32
uiNumblingShoutTimer
;
60
uint32
uiGroundTremorTimer
;
61
uint32
uiDeterminedStabTimer
;
62
uint32
uiTransformationTImer
;
63
64
void
Reset
()
OVERRIDE
65
{
66
uiGroundTremorTimer
= 18*
IN_MILLISECONDS
;
67
uiNumblingShoutTimer
= 10*
IN_MILLISECONDS
;
68
uiDeterminedStabTimer
= 20*
IN_MILLISECONDS
;
69
uiTransformationTImer
= 12*
IN_MILLISECONDS
;
70
bPhase
=
false
;
71
72
if
(
instance
)
73
instance
->SetData(
DATA_MOORABI_EVENT
,
NOT_STARTED
);
74
}
75
76
void
EnterCombat
(
Unit
*
/*who*/
)
OVERRIDE
77
{
78
Talk
(
SAY_AGGRO
);
79
DoCast
(
me
,
SPELL_MOJO_FRENZY
,
true
);
80
81
if
(
instance
)
82
instance
->SetData(
DATA_MOORABI_EVENT
,
IN_PROGRESS
);
83
}
84
85
void
UpdateAI
(
uint32
uiDiff)
OVERRIDE
86
{
87
//Return since we have no target
88
if
(!
UpdateVictim
())
89
return
;
90
91
if
(!
bPhase
&&
me
->HasAura(
SPELL_TRANSFORMATION
))
92
{
93
bPhase
=
true
;
94
me
->RemoveAura(
SPELL_MOJO_FRENZY
);
95
}
96
97
if
(
uiGroundTremorTimer
<= uiDiff)
98
{
99
Talk
(
SAY_QUAKE
);
100
if
(
bPhase
)
101
DoCastVictim
(
SPELL_QUAKE
,
true
);
102
else
103
DoCastVictim
(
SPELL_GROUND_TREMOR
,
true
);
104
uiGroundTremorTimer
= 10*
IN_MILLISECONDS
;
105
}
else
uiGroundTremorTimer
-= uiDiff;
106
107
if
(
uiNumblingShoutTimer
<= uiDiff)
108
{
109
if
(
bPhase
)
110
DoCastVictim
(
SPELL_NUMBING_ROAR
,
true
);
111
else
112
DoCastVictim
(
SPELL_NUMBING_SHOUT
,
true
);
113
uiNumblingShoutTimer
= 10*
IN_MILLISECONDS
;
114
}
else
uiNumblingShoutTimer
-=uiDiff;
115
116
if
(
uiDeterminedStabTimer
<= uiDiff)
117
{
118
if
(
bPhase
)
119
DoCastVictim
(
SPELL_DETERMINED_GORE
);
120
else
121
DoCastVictim
(
SPELL_DETERMINED_STAB
,
true
);
122
uiDeterminedStabTimer
= 8*
IN_MILLISECONDS
;
123
}
else
uiDeterminedStabTimer
-=uiDiff;
124
125
if
(!
bPhase
&&
uiTransformationTImer
<= uiDiff)
126
{
127
Talk
(
EMOTE_TRANSFORM
);
128
Talk
(
SAY_TRANSFORM
);
129
DoCast
(
me
,
SPELL_TRANSFORMATION
,
false
);
130
uiTransformationTImer
= 10*
IN_MILLISECONDS
;
131
}
else
uiTransformationTImer
-= uiDiff;
132
133
DoMeleeAttackIfReady
();
134
}
135
136
uint32
GetData
(
uint32
type)
const
OVERRIDE
137
{
138
if
(type ==
DATA_LESS_RABI
)
139
return
bPhase
? 0 : 1;
140
141
return
0;
142
}
143
144
void
JustDied
(
Unit
*
/*killer*/
)
OVERRIDE
145
{
146
Talk
(
SAY_DEATH
);
147
148
if
(
instance
)
149
instance
->SetData(
DATA_MOORABI_EVENT
,
DONE
);
150
}
151
152
void
KilledUnit
(
Unit
* victim)
OVERRIDE
153
{
154
if
(victim->GetTypeId() !=
TypeID::TYPEID_PLAYER
)
155
return
;
156
157
Talk
(
SAY_SLAY
);
158
}
159
};
160
};
161
162
class
achievement_less_rabi
:
public
AchievementCriteriaScript
163
{
164
public
:
165
achievement_less_rabi
() :
AchievementCriteriaScript
(
"achievement_less_rabi"
)
166
{
167
}
168
169
bool
OnCheck
(
Player
*
/*player*/
,
Unit
* target)
OVERRIDE
170
{
171
if
(!target)
172
return
false
;
173
174
if
(
Creature
* Moorabi = target->
ToCreature
())
175
if
(Moorabi->AI()->GetData(
DATA_LESS_RABI
))
176
return
true
;
177
178
return
false
;
179
}
180
};
181
182
void
AddSC_boss_moorabi
()
183
{
184
new
boss_moorabi
();
185
new
achievement_less_rabi
();
186
}
Spells
Spells
Definition
BattlegroundIC.h:645
IN_MILLISECONDS
@ IN_MILLISECONDS
Definition
Common.h:125
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
SAY_SLAY
@ SAY_SLAY
Definition
boss_alizabal.cpp:20
SPELL_GROUND_TREMOR
@ SPELL_GROUND_TREMOR
Definition
boss_archaedas.cpp:31
SAY_DEATH
#define SAY_DEATH
Definition
boss_commander_kolurg.cpp:30
SAY_AGGRO
#define SAY_AGGRO
Definition
boss_commander_kolurg.cpp:28
Says
Says
Definition
boss_halycon.cpp:17
SAY_DEATH
@ SAY_DEATH
Definition
boss_moorabi.cpp:27
SAY_QUAKE
@ SAY_QUAKE
Definition
boss_moorabi.cpp:29
SAY_AGGRO
@ SAY_AGGRO
Definition
boss_moorabi.cpp:25
SAY_TRANSFORM
@ SAY_TRANSFORM
Definition
boss_moorabi.cpp:28
SAY_SLAY
@ SAY_SLAY
Definition
boss_moorabi.cpp:26
EMOTE_TRANSFORM
@ EMOTE_TRANSFORM
Definition
boss_moorabi.cpp:30
DATA_LESS_RABI
@ DATA_LESS_RABI
Definition
boss_moorabi.cpp:35
SPELL_DETERMINED_STAB
@ SPELL_DETERMINED_STAB
Definition
boss_moorabi.cpp:12
SPELL_DETERMINED_GORE
@ SPELL_DETERMINED_GORE
Definition
boss_moorabi.cpp:15
SPELL_MOJO_FRENZY
@ SPELL_MOJO_FRENZY
Definition
boss_moorabi.cpp:19
SPELL_QUAKE
@ SPELL_QUAKE
Definition
boss_moorabi.cpp:17
SPELL_NUMBING_ROAR
@ SPELL_NUMBING_ROAR
Definition
boss_moorabi.cpp:18
SPELL_NUMBING_SHOUT
@ SPELL_NUMBING_SHOUT
Definition
boss_moorabi.cpp:14
SPELL_GROUND_TREMOR
@ SPELL_GROUND_TREMOR
Definition
boss_moorabi.cpp:13
SPELL_TRANSFORMATION
@ SPELL_TRANSFORMATION
Definition
boss_moorabi.cpp:20
H_SPELL_DETERMINED_GORE
@ H_SPELL_DETERMINED_GORE
Definition
boss_moorabi.cpp:16
AddSC_boss_moorabi
void AddSC_boss_moorabi()
Definition
boss_moorabi.cpp:182
Misc
Misc
Definition
boss_occuthar.cpp:37
AchievementCriteriaScript::AchievementCriteriaScript
AchievementCriteriaScript(const char *name)
Definition
ScriptMgr.cpp:1508
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
Object::ToCreature
Creature * ToCreature()
Definition
Object.h:207
Player
Definition
Player.h:1289
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
achievement_less_rabi
Definition
boss_moorabi.cpp:163
achievement_less_rabi::OnCheck
bool OnCheck(Player *, Unit *target) OVERRIDE
Definition
boss_moorabi.cpp:169
achievement_less_rabi::achievement_less_rabi
achievement_less_rabi()
Definition
boss_moorabi.cpp:165
boss_moorabi
Definition
boss_moorabi.cpp:39
boss_moorabi::boss_moorabi
boss_moorabi()
Definition
boss_moorabi.cpp:41
boss_moorabi::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_moorabi.cpp:43
gundrak.h
DATA_MOORABI_EVENT
@ DATA_MOORABI_EVENT
Definition
gundrak.h:12
ScriptedAI::me
Creature * me
Definition
ScriptedCreature.h:182
ScriptedAI::ScriptedAI
ScriptedAI(Creature *creature)
Definition
ScriptedCreature.cpp:85
boss_moorabi::boss_moorabiAI
Definition
boss_moorabi.cpp:49
boss_moorabi::boss_moorabiAI::uiTransformationTImer
uint32 uiTransformationTImer
Definition
boss_moorabi.cpp:62
boss_moorabi::boss_moorabiAI::uiGroundTremorTimer
uint32 uiGroundTremorTimer
Definition
boss_moorabi.cpp:60
boss_moorabi::boss_moorabiAI::uiNumblingShoutTimer
uint32 uiNumblingShoutTimer
Definition
boss_moorabi.cpp:59
boss_moorabi::boss_moorabiAI::KilledUnit
void KilledUnit(Unit *victim) OVERRIDE
Definition
boss_moorabi.cpp:152
boss_moorabi::boss_moorabiAI::JustDied
void JustDied(Unit *) OVERRIDE
Definition
boss_moorabi.cpp:144
boss_moorabi::boss_moorabiAI::boss_moorabiAI
boss_moorabiAI(Creature *creature)
Definition
boss_moorabi.cpp:50
boss_moorabi::boss_moorabiAI::EnterCombat
void EnterCombat(Unit *) OVERRIDE
Definition
boss_moorabi.cpp:76
boss_moorabi::boss_moorabiAI::instance
InstanceScript * instance
Definition
boss_moorabi.cpp:55
boss_moorabi::boss_moorabiAI::Reset
void Reset() OVERRIDE
Definition
boss_moorabi.cpp:64
boss_moorabi::boss_moorabiAI::bPhase
bool bPhase
Definition
boss_moorabi.cpp:57
boss_moorabi::boss_moorabiAI::uiDeterminedStabTimer
uint32 uiDeterminedStabTimer
Definition
boss_moorabi.cpp:61
boss_moorabi::boss_moorabiAI::UpdateAI
void UpdateAI(uint32 uiDiff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_moorabi.cpp:85
boss_moorabi::boss_moorabiAI::GetData
uint32 GetData(uint32 type) const OVERRIDE
Definition
boss_moorabi.cpp:136
src
server
scripts
Northrend
Gundrak
boss_moorabi.cpp
Generated on
for Project SkyFire Core by
1.17.0