Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
boss_lord_valthalak.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 "
blackrock_spire.h
"
9
10
enum
Spells
11
{
12
SPELL_FRENZY
= 8269,
13
SPELL_SUMMON_SPECTRAL_ASSASSIN
= 27249,
14
SPELL_SHADOW_BOLT_VOLLEY
= 27382,
15
SPELL_SHADOW_WRATH
= 27286
16
};
17
18
enum
Says
19
{
20
EMOTE_FRENZY
= 0
21
};
22
23
enum
Events
24
{
25
EVENT_SUMMON_SPECTRAL_ASSASSIN
= 1,
26
EVENT_SHADOW_BOLT_VOLLEY
= 2,
27
EVENT_SHADOW_WRATH
= 3
28
};
29
30
class
boss_lord_valthalak
:
public
CreatureScript
31
{
32
public
:
33
boss_lord_valthalak
() :
CreatureScript
(
"boss_lord_valthalak"
) { }
34
35
struct
boss_lord_valthalakAI
:
public
BossAI
36
{
37
boss_lord_valthalakAI
(
Creature
* creature) :
BossAI
(creature,
DATA_LORD_VALTHALAK
) { }
38
39
void
Reset
()
OVERRIDE
40
{
41
_Reset
();
42
frenzy40
=
false
;
43
frenzy15
=
false
;
44
}
45
46
void
EnterCombat
(
Unit
*
/*who*/
)
OVERRIDE
47
{
48
_EnterCombat
();
49
events
.ScheduleEvent(
EVENT_SUMMON_SPECTRAL_ASSASSIN
, std::rand() % 8000 + 6000);
50
events
.ScheduleEvent(
EVENT_SHADOW_WRATH
, std::rand() % 18000 + 9000);
51
}
52
53
void
JustDied
(
Unit
*
/*killer*/
)
OVERRIDE
54
{
55
if
(
instance
)
56
instance
->SetData(
DATA_LORD_VALTHALAK
,
DONE
);
57
}
58
59
void
UpdateAI
(
uint32
diff)
OVERRIDE
60
{
61
if
(!
UpdateVictim
())
62
return
;
63
64
events
.Update(diff);
65
66
if
(
me
->HasUnitState(
UNIT_STATE_CASTING
))
67
return
;
68
69
while
(
uint32
eventId =
events
.ExecuteEvent())
70
{
71
switch
(eventId)
72
{
73
case
EVENT_SUMMON_SPECTRAL_ASSASSIN
:
74
DoCast
(
me
,
SPELL_SUMMON_SPECTRAL_ASSASSIN
);
75
events
.ScheduleEvent(
EVENT_SUMMON_SPECTRAL_ASSASSIN
, std::rand() % 35000 + 30000);
76
break
;
77
case
EVENT_SHADOW_BOLT_VOLLEY
:
78
DoCastVictim
(
SPELL_SHADOW_BOLT_VOLLEY
);
79
events
.ScheduleEvent(
EVENT_SHADOW_BOLT_VOLLEY
, std::rand() % 6000 + 4000);
80
break
;
81
case
EVENT_SHADOW_WRATH
:
82
DoCastVictim
(
SPELL_SHADOW_WRATH
);
83
events
.ScheduleEvent(
EVENT_SHADOW_WRATH
, std::rand() % 24000 + 19000);
84
break
;
85
default
:
86
break
;
87
}
88
}
89
90
if
(!
frenzy40
)
91
{
92
if
(
HealthBelowPct
(40))
93
{
94
DoCast
(
me
,
SPELL_FRENZY
);
95
events
.CancelEvent(
EVENT_SUMMON_SPECTRAL_ASSASSIN
);
96
frenzy40
=
true
;
97
}
98
}
99
100
if
(!
frenzy15
)
101
{
102
if
(
HealthBelowPct
(15))
103
{
104
DoCast
(
me
,
SPELL_FRENZY
);
105
events
.ScheduleEvent(
EVENT_SHADOW_BOLT_VOLLEY
, std::rand() % 14000 + 7000);
106
frenzy15
=
true
;
107
}
108
}
109
110
DoMeleeAttackIfReady
();
111
}
112
private
:
113
bool
frenzy40
;
114
bool
frenzy15
;
115
};
116
117
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
118
{
119
return
new
boss_lord_valthalakAI
(creature);
120
}
121
};
122
123
void
AddSC_boss_lord_valthalak
()
124
{
125
new
boss_lord_valthalak
();
126
}
Spells
Spells
Definition
BattlegroundIC.h:645
uint32
std::uint32_t uint32
Definition
Define.h:77
OVERRIDE
#define OVERRIDE
Definition
Define.h:60
DONE
@ DONE
Definition
InstanceScript.h:49
ScriptMgr.h
ScriptedCreature.h
UNIT_STATE_CASTING
@ UNIT_STATE_CASTING
Definition
Unit.h:527
Events
Events
Definition
alterac_valley.cpp:40
blackrock_spire.h
DATA_LORD_VALTHALAK
@ DATA_LORD_VALTHALAK
Definition
blackrock_spire.h:29
SPELL_FRENZY
@ SPELL_FRENZY
Definition
boss_drekthar.cpp:14
Says
Says
Definition
boss_halycon.cpp:17
EMOTE_FRENZY
@ EMOTE_FRENZY
Definition
boss_lord_valthalak.cpp:20
SPELL_SHADOW_BOLT_VOLLEY
@ SPELL_SHADOW_BOLT_VOLLEY
Definition
boss_lord_valthalak.cpp:14
SPELL_SHADOW_WRATH
@ SPELL_SHADOW_WRATH
Definition
boss_lord_valthalak.cpp:15
SPELL_FRENZY
@ SPELL_FRENZY
Definition
boss_lord_valthalak.cpp:12
SPELL_SUMMON_SPECTRAL_ASSASSIN
@ SPELL_SUMMON_SPECTRAL_ASSASSIN
Definition
boss_lord_valthalak.cpp:13
AddSC_boss_lord_valthalak
void AddSC_boss_lord_valthalak()
Definition
boss_lord_valthalak.cpp:123
EVENT_SHADOW_BOLT_VOLLEY
@ EVENT_SHADOW_BOLT_VOLLEY
Definition
boss_lord_valthalak.cpp:26
EVENT_SHADOW_WRATH
@ EVENT_SHADOW_WRATH
Definition
boss_lord_valthalak.cpp:27
EVENT_SUMMON_SPECTRAL_ASSASSIN
@ EVENT_SUMMON_SPECTRAL_ASSASSIN
Definition
boss_lord_valthalak.cpp:25
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
BossAI::_Reset
void _Reset()
Definition
ScriptedCreature.cpp:462
BossAI::_EnterCombat
void _EnterCombat()
Definition
ScriptedCreature.cpp:485
CreatureAI
Definition
CreatureAI.h:54
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_lord_valthalak
Definition
boss_lord_valthalak.cpp:31
boss_lord_valthalak::boss_lord_valthalak
boss_lord_valthalak()
Definition
boss_lord_valthalak.cpp:33
boss_lord_valthalak::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_lord_valthalak.cpp:117
ScriptedAI::me
Creature * me
Definition
ScriptedCreature.h:182
ScriptedAI::HealthBelowPct
bool HealthBelowPct(uint32 pct) const
Definition
ScriptedCreature.h:247
boss_lord_valthalak::boss_lord_valthalakAI
Definition
boss_lord_valthalak.cpp:36
boss_lord_valthalak::boss_lord_valthalakAI::EnterCombat
void EnterCombat(Unit *) OVERRIDE
Definition
boss_lord_valthalak.cpp:46
boss_lord_valthalak::boss_lord_valthalakAI::Reset
void Reset() OVERRIDE
Definition
boss_lord_valthalak.cpp:39
boss_lord_valthalak::boss_lord_valthalakAI::JustDied
void JustDied(Unit *) OVERRIDE
Definition
boss_lord_valthalak.cpp:53
boss_lord_valthalak::boss_lord_valthalakAI::frenzy40
bool frenzy40
Definition
boss_lord_valthalak.cpp:113
boss_lord_valthalak::boss_lord_valthalakAI::boss_lord_valthalakAI
boss_lord_valthalakAI(Creature *creature)
Definition
boss_lord_valthalak.cpp:37
boss_lord_valthalak::boss_lord_valthalakAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_lord_valthalak.cpp:59
boss_lord_valthalak::boss_lord_valthalakAI::frenzy15
bool frenzy15
Definition
boss_lord_valthalak.cpp:114
src
server
scripts
EasternKingdoms
BlackrockMountain
BlackrockSpire
boss_lord_valthalak.cpp
Generated on
for Project SkyFire Core by
1.17.0