Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
boss_baron_geddon.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
/* ScriptData
7
SDName: Boss_Baron_Geddon
8
SD%Complete: 100
9
SDComment:
10
SDCategory: Molten Core
11
EndScriptData */
12
13
#include "
ObjectMgr.h
"
14
#include "
ScriptMgr.h
"
15
#include "
ScriptedCreature.h
"
16
#include "
molten_core.h
"
17
18
enum
Emotes
19
{
20
EMOTE_SERVICE
= 0
21
};
22
23
enum
Spells
24
{
25
SPELL_INFERNO
= 19695,
26
SPELL_IGNITE_MANA
= 19659,
27
SPELL_LIVING_BOMB
= 20475,
28
SPELL_ARMAGEDDON
= 20479,
29
};
30
31
enum
Events
32
{
33
EVENT_INFERNO
= 1,
34
EVENT_IGNITE_MANA
= 2,
35
EVENT_LIVING_BOMB
= 3,
36
};
37
38
class
boss_baron_geddon
:
public
CreatureScript
39
{
40
public
:
41
boss_baron_geddon
() :
CreatureScript
(
"boss_baron_geddon"
) { }
42
43
struct
boss_baron_geddonAI
:
public
BossAI
44
{
45
boss_baron_geddonAI
(
Creature
* creature) :
BossAI
(creature,
BOSS_BARON_GEDDON
)
46
{
47
}
48
49
void
EnterCombat
(
Unit
* victim)
OVERRIDE
50
{
51
BossAI::EnterCombat
(victim);
52
events
.ScheduleEvent(
EVENT_INFERNO
, 45000);
53
events
.ScheduleEvent(
EVENT_IGNITE_MANA
, 30000);
54
events
.ScheduleEvent(
EVENT_LIVING_BOMB
, 35000);
55
}
56
57
void
UpdateAI
(
uint32
diff)
OVERRIDE
58
{
59
if
(!
UpdateVictim
())
60
return
;
61
62
events
.Update(diff);
63
64
// If we are <2% hp cast Armageddon
65
if
(!
HealthAbovePct
(2))
66
{
67
me
->InterruptNonMeleeSpells(
true
);
68
DoCast
(
me
,
SPELL_ARMAGEDDON
);
69
Talk
(
EMOTE_SERVICE
);
70
return
;
71
}
72
73
if
(
me
->HasUnitState(
UNIT_STATE_CASTING
))
74
return
;
75
76
while
(
uint32
eventId =
events
.ExecuteEvent())
77
{
78
switch
(eventId)
79
{
80
case
EVENT_INFERNO
:
81
DoCast
(
me
,
SPELL_INFERNO
);
82
events
.ScheduleEvent(
EVENT_INFERNO
, 45000);
83
break
;
84
case
EVENT_IGNITE_MANA
:
85
if
(
Unit
* target =
SelectTarget
(
SELECT_TARGET_RANDOM
, 0, 0.0f,
true
, -
SPELL_IGNITE_MANA
))
86
DoCast
(target,
SPELL_IGNITE_MANA
);
87
events
.ScheduleEvent(
EVENT_IGNITE_MANA
, 30000);
88
break
;
89
case
EVENT_LIVING_BOMB
:
90
if
(
Unit
* target =
SelectTarget
(
SELECT_TARGET_RANDOM
, 0, 0.0f,
true
))
91
DoCast
(target,
SPELL_LIVING_BOMB
);
92
events
.ScheduleEvent(
EVENT_LIVING_BOMB
, 35000);
93
break
;
94
default
:
95
break
;
96
}
97
}
98
99
DoMeleeAttackIfReady
();
100
}
101
};
102
103
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
104
{
105
return
new
boss_baron_geddonAI
(creature);
106
}
107
};
108
109
void
AddSC_boss_baron_geddon
()
110
{
111
new
boss_baron_geddon
();
112
}
Spells
Spells
Definition
BattlegroundIC.h:645
uint32
std::uint32_t uint32
Definition
Define.h:77
OVERRIDE
#define OVERRIDE
Definition
Define.h:60
ObjectMgr.h
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
EMOTE_SERVICE
@ EMOTE_SERVICE
Definition
boss_baron_geddon.cpp:20
SPELL_ARMAGEDDON
@ SPELL_ARMAGEDDON
Definition
boss_baron_geddon.cpp:28
SPELL_LIVING_BOMB
@ SPELL_LIVING_BOMB
Definition
boss_baron_geddon.cpp:27
SPELL_IGNITE_MANA
@ SPELL_IGNITE_MANA
Definition
boss_baron_geddon.cpp:26
SPELL_INFERNO
@ SPELL_INFERNO
Definition
boss_baron_geddon.cpp:25
AddSC_boss_baron_geddon
void AddSC_boss_baron_geddon()
Definition
boss_baron_geddon.cpp:109
EVENT_INFERNO
@ EVENT_INFERNO
Definition
boss_baron_geddon.cpp:33
EVENT_IGNITE_MANA
@ EVENT_IGNITE_MANA
Definition
boss_baron_geddon.cpp:34
EVENT_LIVING_BOMB
@ EVENT_LIVING_BOMB
Definition
boss_baron_geddon.cpp:35
Emotes
Emotes
Definition
boss_chromaggus.cpp:12
BossAI::events
EventMap events
Definition
ScriptedCreature.h:439
BossAI::BossAI
BossAI(Creature *creature, uint32 bossId)
Definition
ScriptedCreature.cpp:456
BossAI::EnterCombat
void EnterCombat(Unit *) OVERRIDE
Definition
ScriptedCreature.h:404
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_baron_geddon
Definition
boss_baron_geddon.cpp:39
boss_baron_geddon::boss_baron_geddon
boss_baron_geddon()
Definition
boss_baron_geddon.cpp:41
boss_baron_geddon::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_baron_geddon.cpp:103
molten_core.h
BOSS_BARON_GEDDON
@ BOSS_BARON_GEDDON
Definition
molten_core.h:16
ScriptedAI::me
Creature * me
Definition
ScriptedCreature.h:182
ScriptedAI::HealthAbovePct
bool HealthAbovePct(uint32 pct) const
Definition
ScriptedCreature.h:251
boss_baron_geddon::boss_baron_geddonAI
Definition
boss_baron_geddon.cpp:44
boss_baron_geddon::boss_baron_geddonAI::boss_baron_geddonAI
boss_baron_geddonAI(Creature *creature)
Definition
boss_baron_geddon.cpp:45
boss_baron_geddon::boss_baron_geddonAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_baron_geddon.cpp:57
boss_baron_geddon::boss_baron_geddonAI::EnterCombat
void EnterCombat(Unit *victim) OVERRIDE
Definition
boss_baron_geddon.cpp:49
src
server
scripts
EasternKingdoms
BlackrockMountain
MoltenCore
boss_baron_geddon.cpp
Generated on
for Project SkyFire Core by
1.17.0