Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
boss_blackheart_the_inciter.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_Blackheart_the_Inciter
8
%Complete: 75
9
Comment: Incite Chaos not functional since core lacks Mind Control support
10
Category: Auchindoun, Shadow Labyrinth
11
*/
12
13
#include "
ScriptMgr.h
"
14
#include "
ScriptedCreature.h
"
15
#include "
shadow_labyrinth.h
"
16
17
enum
BlackheartTheInciter
18
{
19
SPELL_INCITE_CHAOS
= 33676,
20
SPELL_INCITE_CHAOS_B
= 33684,
//debuff applied to each member of party
21
SPELL_CHARGE
= 33709,
22
SPELL_WAR_STOMP
= 33707,
23
24
SAY_INTRO
= 0,
25
SAY_AGGRO
= 1,
26
SAY_SLAY
= 2,
27
SAY_HELP
= 3,
28
SAY_DEATH
= 4,
29
30
//below, not used
31
SAY2_INTRO
= 5,
32
SAY2_AGGRO
= 6,
33
SAY2_SLAY
= 7,
34
SAY2_HELP
= 8,
35
SAY2_DEATH
= 9
36
};
37
38
enum
Events
39
{
40
EVENT_INCITE_CHAOS
= 1,
41
EVENT_CHARGE_ATTACK
= 2,
42
EVENT_WAR_STOMP
= 3
43
};
44
45
class
boss_blackheart_the_inciter
:
public
CreatureScript
46
{
47
public
:
48
boss_blackheart_the_inciter
() :
CreatureScript
(
"boss_blackheart_the_inciter"
) { }
49
50
struct
boss_blackheart_the_inciterAI
:
public
BossAI
51
{
52
boss_blackheart_the_inciterAI
(
Creature
* creature) :
BossAI
(creature,
DATA_BLACKHEART_THE_INCITER
) { }
53
54
void
Reset
()
OVERRIDE
55
{
56
_Reset
();
57
}
58
59
void
EnterCombat
(
Unit
*
/*who*/
)
OVERRIDE
60
{
61
_EnterCombat
();
62
events
.ScheduleEvent(
EVENT_INCITE_CHAOS
, 20000);
63
events
.ScheduleEvent(
EVENT_CHARGE_ATTACK
, 5000);
64
events
.ScheduleEvent(
EVENT_WAR_STOMP
, 15000);
65
66
Talk
(
SAY_AGGRO
);
67
}
68
69
void
KilledUnit
(
Unit
* who)
OVERRIDE
70
{
71
if
(who->GetTypeId() ==
TypeID::TYPEID_PLAYER
)
72
Talk
(
SAY_SLAY
);
73
}
74
75
void
JustDied
(
Unit
*
/*killer*/
)
OVERRIDE
76
{
77
_JustDied
();
78
Talk
(
SAY_DEATH
);
79
}
80
81
void
UpdateAI
(
uint32
diff)
OVERRIDE
82
{
83
if
(!
UpdateVictim
())
84
return
;
85
86
events
.Update(diff);
87
88
if
(
me
->HasUnitState(
UNIT_STATE_CASTING
))
89
return
;
90
91
while
(
uint32
eventId =
events
.ExecuteEvent())
92
{
93
switch
(eventId)
94
{
95
case
EVENT_INCITE_CHAOS
:
96
{
97
DoCast
(
me
,
SPELL_INCITE_CHAOS
);
98
99
std::list<HostileReference*> t_list =
me
->getThreatManager().getThreatList();
100
for
(std::list<HostileReference*>::const_iterator itr = t_list.begin(); itr!= t_list.end(); ++itr)
101
{
102
if
(
Unit
* target =
ObjectAccessor::GetUnit
(*
me
, (*itr)->getUnitGuid()))
103
if
(target->GetTypeId() ==
TypeID::TYPEID_PLAYER
)
104
me
->CastSpell(target,
SPELL_INCITE_CHAOS_B
,
true
);
105
}
106
107
DoResetThreat
();
108
events
.ScheduleEvent(
EVENT_INCITE_CHAOS
, 40000);
109
break
;
110
}
111
case
EVENT_CHARGE_ATTACK
:
112
if
(
Unit
* target =
SelectTarget
(
SELECT_TARGET_RANDOM
, 0))
113
DoCast
(target,
SPELL_CHARGE
);
114
events
.ScheduleEvent(
EVENT_CHARGE
, std::rand() % 25000 + 15000);
115
break
;
116
case
EVENT_WAR_STOMP
:
117
DoCast
(
me
,
SPELL_WAR_STOMP
);
118
events
.ScheduleEvent(
EVENT_WAR_STOMP
, std::rand() % 24000 + 18000);
119
break
;
120
}
121
}
122
123
DoMeleeAttackIfReady
();
124
}
125
};
126
127
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
128
{
129
return
GetShadowLabyrinthAI<boss_blackheart_the_inciterAI>
(creature);
130
}
131
};
132
133
void
AddSC_boss_blackheart_the_inciter
()
134
{
135
new
boss_blackheart_the_inciter
();
136
}
uint32
std::uint32_t uint32
Definition
Define.h:77
OVERRIDE
#define OVERRIDE
Definition
Define.h:60
TypeID::TYPEID_PLAYER
@ TYPEID_PLAYER
Definition
Object.h:55
ScriptMgr.h
ScriptedCreature.h
EVENT_CHARGE
@ EVENT_CHARGE
Definition
SharedDefines.h:3854
UNIT_STATE_CASTING
@ UNIT_STATE_CASTING
Definition
Unit.h:527
SELECT_TARGET_RANDOM
@ SELECT_TARGET_RANDOM
Definition
UnitAI.h:23
SPELL_CHARGE
@ SPELL_CHARGE
Definition
alterac_valley.cpp:11
Events
Events
Definition
alterac_valley.cpp:40
SAY_SLAY
@ SAY_SLAY
Definition
boss_alizabal.cpp:20
SAY_INTRO
@ SAY_INTRO
Definition
boss_alizabal.cpp:14
BlackheartTheInciter
BlackheartTheInciter
Definition
boss_blackheart_the_inciter.cpp:18
SAY_DEATH
@ SAY_DEATH
Definition
boss_blackheart_the_inciter.cpp:28
SAY2_HELP
@ SAY2_HELP
Definition
boss_blackheart_the_inciter.cpp:34
SAY2_DEATH
@ SAY2_DEATH
Definition
boss_blackheart_the_inciter.cpp:35
SPELL_CHARGE
@ SPELL_CHARGE
Definition
boss_blackheart_the_inciter.cpp:21
SAY_AGGRO
@ SAY_AGGRO
Definition
boss_blackheart_the_inciter.cpp:25
SAY2_INTRO
@ SAY2_INTRO
Definition
boss_blackheart_the_inciter.cpp:31
SAY2_SLAY
@ SAY2_SLAY
Definition
boss_blackheart_the_inciter.cpp:33
SPELL_INCITE_CHAOS
@ SPELL_INCITE_CHAOS
Definition
boss_blackheart_the_inciter.cpp:19
SAY_SLAY
@ SAY_SLAY
Definition
boss_blackheart_the_inciter.cpp:26
SPELL_WAR_STOMP
@ SPELL_WAR_STOMP
Definition
boss_blackheart_the_inciter.cpp:22
SAY2_AGGRO
@ SAY2_AGGRO
Definition
boss_blackheart_the_inciter.cpp:32
SPELL_INCITE_CHAOS_B
@ SPELL_INCITE_CHAOS_B
Definition
boss_blackheart_the_inciter.cpp:20
AddSC_boss_blackheart_the_inciter
void AddSC_boss_blackheart_the_inciter()
Definition
boss_blackheart_the_inciter.cpp:133
EVENT_WAR_STOMP
@ EVENT_WAR_STOMP
Definition
boss_blackheart_the_inciter.cpp:42
EVENT_INCITE_CHAOS
@ EVENT_INCITE_CHAOS
Definition
boss_blackheart_the_inciter.cpp:40
EVENT_CHARGE_ATTACK
@ EVENT_CHARGE_ATTACK
Definition
boss_blackheart_the_inciter.cpp:41
SAY_DEATH
#define SAY_DEATH
Definition
boss_commander_kolurg.cpp:30
SAY_AGGRO
#define SAY_AGGRO
Definition
boss_commander_kolurg.cpp:28
SPELL_WAR_STOMP
@ SPELL_WAR_STOMP
Definition
boss_priestess_delrissa.cpp:57
BossAI::events
EventMap events
Definition
ScriptedCreature.h:439
BossAI::BossAI
BossAI(Creature *creature, uint32 bossId)
Definition
ScriptedCreature.cpp:456
BossAI::_JustDied
void _JustDied()
Definition
ScriptedCreature.cpp:474
BossAI::_Reset
void _Reset()
Definition
ScriptedCreature.cpp:462
BossAI::_EnterCombat
void _EnterCombat()
Definition
ScriptedCreature.cpp:485
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
ObjectAccessor::GetUnit
static Unit * GetUnit(WorldObject const &, uint64 guid)
Definition
ObjectAccessor.cpp:204
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_blackheart_the_inciter
Definition
boss_blackheart_the_inciter.cpp:46
boss_blackheart_the_inciter::boss_blackheart_the_inciter
boss_blackheart_the_inciter()
Definition
boss_blackheart_the_inciter.cpp:48
boss_blackheart_the_inciter::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_blackheart_the_inciter.cpp:127
shadow_labyrinth.h
GetShadowLabyrinthAI
AI * GetShadowLabyrinthAI(Creature *creature)
Definition
shadow_labyrinth.h:45
DATA_BLACKHEART_THE_INCITER
@ DATA_BLACKHEART_THE_INCITER
Definition
shadow_labyrinth.h:17
ScriptedAI::DoResetThreat
void DoResetThreat()
Definition
ScriptedCreature.cpp:260
ScriptedAI::me
Creature * me
Definition
ScriptedCreature.h:182
boss_blackheart_the_inciter::boss_blackheart_the_inciterAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_blackheart_the_inciter.cpp:81
boss_blackheart_the_inciter::boss_blackheart_the_inciterAI::boss_blackheart_the_inciterAI
boss_blackheart_the_inciterAI(Creature *creature)
Definition
boss_blackheart_the_inciter.cpp:52
boss_blackheart_the_inciter::boss_blackheart_the_inciterAI::KilledUnit
void KilledUnit(Unit *who) OVERRIDE
Definition
boss_blackheart_the_inciter.cpp:69
boss_blackheart_the_inciter::boss_blackheart_the_inciterAI::EnterCombat
void EnterCombat(Unit *) OVERRIDE
Definition
boss_blackheart_the_inciter.cpp:59
boss_blackheart_the_inciter::boss_blackheart_the_inciterAI::Reset
void Reset() OVERRIDE
Definition
boss_blackheart_the_inciter.cpp:54
boss_blackheart_the_inciter::boss_blackheart_the_inciterAI::JustDied
void JustDied(Unit *) OVERRIDE
Definition
boss_blackheart_the_inciter.cpp:75
SAY_HELP
@ SAY_HELP
Definition
zone_azuremyst_isle.cpp:39
src
server
scripts
Outland
Auchindoun
ShadowLabyrinth
boss_blackheart_the_inciter.cpp
Generated on
for Project SkyFire Core by
1.17.0