Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
boss_falric.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 "
halls_of_reflection.h
"
9
10
enum
Texts
11
{
12
SAY_AGGRO
= 0,
13
SAY_SLAY
= 1,
14
SAY_DEATH
= 2,
15
SAY_IMPENDING_DESPAIR
= 3,
16
SAY_DEFILING_HORROR
= 4,
17
};
18
19
enum
Spells
20
{
21
SPELL_QUIVERING_STRIKE
= 72422,
22
SPELL_IMPENDING_DESPAIR
= 72426,
23
SPELL_DEFILING_HORROR
= 72435,
24
SPELL_HOPELESSNESS
= 72395,
25
H_SPELL_HOPELESSNESS
= 72390,
26
};
27
28
enum
Events
29
{
30
EVENT_NONE
,
31
EVENT_QUIVERING_STRIKE
,
32
EVENT_IMPENDING_DESPAIR
,
33
EVENT_DEFILING_HORROR
,
34
};
35
36
class
boss_falric
:
public
CreatureScript
37
{
38
public
:
39
boss_falric
() :
CreatureScript
(
"boss_falric"
) { }
40
41
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
42
{
43
return
new
boss_falricAI
(creature);
44
}
45
46
struct
boss_falricAI
:
public
boss_horAI
47
{
48
boss_falricAI
(
Creature
* creature) :
boss_horAI
(creature) { }
49
50
uint8
uiHopelessnessCount
;
51
52
void
Reset
()
OVERRIDE
53
{
54
boss_horAI::Reset
();
55
56
uiHopelessnessCount
= 0;
57
58
if
(
instance
)
59
instance
->SetBossState(
DATA_FALRIC_EVENT
,
NOT_STARTED
);
60
}
61
62
void
EnterCombat
(
Unit
*
/*who*/
)
OVERRIDE
63
{
64
Talk
(
SAY_AGGRO
);
65
if
(
instance
)
66
instance
->SetBossState(
DATA_FALRIC_EVENT
,
IN_PROGRESS
);
67
68
events
.ScheduleEvent(
EVENT_QUIVERING_STRIKE
, 23000);
69
events
.ScheduleEvent(
EVENT_IMPENDING_DESPAIR
, 9000);
70
events
.ScheduleEvent(
EVENT_DEFILING_HORROR
, std::rand() % 45000 + 25000);
71
}
72
73
void
JustDied
(
Unit
*
/*killer*/
)
OVERRIDE
74
{
75
Talk
(
SAY_DEATH
);
76
77
if
(
instance
)
78
instance
->SetBossState(
DATA_FALRIC_EVENT
,
DONE
);
79
}
80
81
void
KilledUnit
(
Unit
*
/*victim*/
)
OVERRIDE
82
{
83
Talk
(
SAY_SLAY
);
84
}
85
86
void
UpdateAI
(
uint32
diff)
OVERRIDE
87
{
88
// Return since we have no target
89
if
(!
UpdateVictim
())
90
return
;
91
92
events
.Update(diff);
93
94
if
(
me
->HasUnitState(
UNIT_STATE_CASTING
))
95
return
;
96
97
switch
(
events
.ExecuteEvent())
98
{
99
case
EVENT_QUIVERING_STRIKE
:
100
DoCast
(
SPELL_QUIVERING_STRIKE
);
101
events
.ScheduleEvent(
EVENT_QUIVERING_STRIKE
, 10000);
102
break
;
103
case
EVENT_IMPENDING_DESPAIR
:
104
if
(
Unit
* target =
SelectTarget
(
SELECT_TARGET_RANDOM
))
105
{
106
Talk
(
SAY_IMPENDING_DESPAIR
);
107
DoCast
(target,
SPELL_IMPENDING_DESPAIR
);
108
}
109
events
.ScheduleEvent(
EVENT_IMPENDING_DESPAIR
, 13000);
110
break
;
111
case
EVENT_DEFILING_HORROR
:
112
DoCast
(
SPELL_DEFILING_HORROR
);
113
events
.ScheduleEvent(
EVENT_DEFILING_HORROR
, std::rand() % 45000 + 25000);
114
break
;
115
}
116
117
if
((
uiHopelessnessCount
< 1 &&
HealthBelowPct
(66))
118
|| (
uiHopelessnessCount
< 2 &&
HealthBelowPct
(33))
119
|| (
uiHopelessnessCount
< 3 &&
HealthBelowPct
(10)))
120
{
121
uiHopelessnessCount
++;
122
DoCast
(
DUNGEON_MODE
(
SPELL_HOPELESSNESS
,
H_SPELL_HOPELESSNESS
));
123
}
124
125
DoMeleeAttackIfReady
();
126
}
127
};
128
};
129
130
void
AddSC_boss_falric
()
131
{
132
new
boss_falric
();
133
}
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
ScriptMgr.h
ScriptedCreature.h
UNIT_STATE_CASTING
@ UNIT_STATE_CASTING
Definition
Unit.h:527
SELECT_TARGET_RANDOM
@ SELECT_TARGET_RANDOM
Definition
UnitAI.h:23
Events
Events
Definition
alterac_valley.cpp:40
Texts
Texts
Definition
boss_alizabal.cpp:13
SAY_SLAY
@ SAY_SLAY
Definition
boss_alizabal.cpp:20
SAY_DEATH
#define SAY_DEATH
Definition
boss_commander_kolurg.cpp:30
SAY_AGGRO
#define SAY_AGGRO
Definition
boss_commander_kolurg.cpp:28
AddSC_boss_falric
void AddSC_boss_falric()
Definition
boss_falric.cpp:130
SPELL_DEFILING_HORROR
@ SPELL_DEFILING_HORROR
Definition
boss_falric.cpp:23
H_SPELL_HOPELESSNESS
@ H_SPELL_HOPELESSNESS
Definition
boss_falric.cpp:25
SPELL_QUIVERING_STRIKE
@ SPELL_QUIVERING_STRIKE
Definition
boss_falric.cpp:21
SPELL_IMPENDING_DESPAIR
@ SPELL_IMPENDING_DESPAIR
Definition
boss_falric.cpp:22
SPELL_HOPELESSNESS
@ SPELL_HOPELESSNESS
Definition
boss_falric.cpp:24
SAY_DEATH
@ SAY_DEATH
Definition
boss_falric.cpp:14
SAY_DEFILING_HORROR
@ SAY_DEFILING_HORROR
Definition
boss_falric.cpp:16
SAY_AGGRO
@ SAY_AGGRO
Definition
boss_falric.cpp:12
SAY_IMPENDING_DESPAIR
@ SAY_IMPENDING_DESPAIR
Definition
boss_falric.cpp:15
SAY_SLAY
@ SAY_SLAY
Definition
boss_falric.cpp:13
EVENT_IMPENDING_DESPAIR
@ EVENT_IMPENDING_DESPAIR
Definition
boss_falric.cpp:32
EVENT_DEFILING_HORROR
@ EVENT_DEFILING_HORROR
Definition
boss_falric.cpp:33
EVENT_QUIVERING_STRIKE
@ EVENT_QUIVERING_STRIKE
Definition
boss_falric.cpp:31
EVENT_NONE
@ EVENT_NONE
Definition
boss_felmyst.cpp:84
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
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
Unit
Definition
Unit.h:1367
boss_falric
Definition
boss_falric.cpp:37
boss_falric::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_falric.cpp:41
boss_falric::boss_falric
boss_falric()
Definition
boss_falric.cpp:39
halls_of_reflection.h
DATA_FALRIC_EVENT
@ DATA_FALRIC_EVENT
Definition
halls_of_reflection.h:20
ScriptedAI::me
Creature * me
Definition
ScriptedCreature.h:182
ScriptedAI::HealthBelowPct
bool HealthBelowPct(uint32 pct) const
Definition
ScriptedCreature.h:247
ScriptedAI::DUNGEON_MODE
const T & DUNGEON_MODE(const T &normal5, const T &heroic5) const
Definition
ScriptedCreature.h:294
boss_falric::boss_falricAI
Definition
boss_falric.cpp:47
boss_falric::boss_falricAI::uiHopelessnessCount
uint8 uiHopelessnessCount
Definition
boss_falric.cpp:50
boss_falric::boss_falricAI::Reset
void Reset() OVERRIDE
Definition
boss_falric.cpp:52
boss_falric::boss_falricAI::JustDied
void JustDied(Unit *) OVERRIDE
Definition
boss_falric.cpp:73
boss_falric::boss_falricAI::KilledUnit
void KilledUnit(Unit *) OVERRIDE
Definition
boss_falric.cpp:81
boss_falric::boss_falricAI::boss_falricAI
boss_falricAI(Creature *creature)
Definition
boss_falric.cpp:48
boss_falric::boss_falricAI::EnterCombat
void EnterCombat(Unit *) OVERRIDE
Definition
boss_falric.cpp:62
boss_falric::boss_falricAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_falric.cpp:86
boss_horAI::events
EventMap events
Definition
halls_of_reflection.h:131
boss_horAI::instance
InstanceScript * instance
Definition
halls_of_reflection.h:130
boss_horAI::Reset
void Reset()
Definition
halls_of_reflection.h:134
boss_horAI::boss_horAI
boss_horAI(Creature *creature)
Definition
halls_of_reflection.h:125
src
server
scripts
Northrend
FrozenHalls
HallsOfReflection
boss_falric.cpp
Generated on
for Project SkyFire Core by
1.17.0