Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
boss_shazzrah.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_Shazzrah
8
SD%Complete: 75
9
SDComment: Teleport NYI
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
Spells
19
{
20
SPELL_ARCANE_EXPLOSION
= 19712,
21
SPELL_SHAZZRAH_CURSE
= 19713,
22
SPELL_MAGIC_GROUNDING
= 19714,
23
SPELL_COUNTERSPELL
= 19715,
24
};
25
26
enum
Events
27
{
28
EVENT_ARCANE_EXPLOSION
= 1,
29
EVENT_SHAZZRAH_CURSE
= 2,
30
EVENT_MAGIC_GROUNDING
= 3,
31
EVENT_COUNTERSPELL
= 4,
32
EVENT_BLINK
= 5,
33
};
34
35
class
boss_shazzrah
:
public
CreatureScript
36
{
37
public
:
38
boss_shazzrah
() :
CreatureScript
(
"boss_shazzrah"
) { }
39
40
struct
boss_shazzrahAI
:
public
BossAI
41
{
42
boss_shazzrahAI
(
Creature
* creature) :
BossAI
(creature,
BOSS_SHAZZRAH
)
43
{
44
}
45
46
void
EnterCombat
(
Unit
* target)
OVERRIDE
47
{
48
BossAI::EnterCombat
(target);
49
events
.ScheduleEvent(
EVENT_ARCANE_EXPLOSION
, 6000);
50
events
.ScheduleEvent(
EVENT_SHAZZRAH_CURSE
, 10000);
51
events
.ScheduleEvent(
EVENT_MAGIC_GROUNDING
, 24000);
52
events
.ScheduleEvent(
EVENT_COUNTERSPELL
, 15000);
53
events
.ScheduleEvent(
EVENT_BLINK
, 30000);
54
}
55
56
void
UpdateAI
(
uint32
diff)
OVERRIDE
57
{
58
if
(!
UpdateVictim
())
59
return
;
60
61
events
.Update(diff);
62
63
if
(
me
->HasUnitState(
UNIT_STATE_CASTING
))
64
return
;
65
66
while
(
uint32
eventId =
events
.ExecuteEvent())
67
{
68
switch
(eventId)
69
{
70
case
EVENT_ARCANE_EXPLOSION
:
71
DoCastVictim
(
SPELL_ARCANE_EXPLOSION
);
72
events
.ScheduleEvent(
EVENT_ARCANE_EXPLOSION
, std::rand() % 9000 + 5000);
73
break
;
74
case
EVENT_SHAZZRAH_CURSE
:
75
if
(
Unit
* target =
SelectTarget
(
SELECT_TARGET_RANDOM
, 0, 0.0f,
true
, -
EVENT_SHAZZRAH_CURSE
))
76
DoCast
(target,
SPELL_SHAZZRAH_CURSE
);
77
events
.ScheduleEvent(
EVENT_SHAZZRAH_CURSE
, std::rand() % 30000 + 25000);
78
break
;
79
case
EVENT_MAGIC_GROUNDING
:
80
DoCast
(
me
,
SPELL_MAGIC_GROUNDING
);
81
events
.ScheduleEvent(
EVENT_MAGIC_GROUNDING
, 35000);
82
break
;
83
case
EVENT_COUNTERSPELL
:
84
DoCastVictim
(
SPELL_COUNTERSPELL
);
85
events
.ScheduleEvent(
EVENT_COUNTERSPELL
, std::rand() % 20000 + 16000);
86
break
;
87
case
EVENT_BLINK
:
88
// Teleporting him to a random player and casting Arcane Explosion after that.
89
// Blink is not working cause of LoS System we need to do this hardcoded.
90
if
(
Unit
* target =
SelectTarget
(
SELECT_TARGET_RANDOM
, 1, 100.0f,
true
))
91
{
92
DoTeleportTo
(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ());
93
DoCast
(target,
SPELL_ARCANE_EXPLOSION
);
94
DoResetThreat
();
95
}
96
events
.ScheduleEvent(
EVENT_BLINK
, 45000);
97
break
;
98
default
:
99
break
;
100
}
101
}
102
103
DoMeleeAttackIfReady
();
104
}
105
};
106
107
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
108
{
109
return
new
boss_shazzrahAI
(creature);
110
}
111
};
112
113
void
AddSC_boss_shazzrah
()
114
{
115
new
boss_shazzrah
();
116
}
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
SPELL_ARCANE_EXPLOSION
@ SPELL_ARCANE_EXPLOSION
Definition
boss_balinda.cpp:11
AddSC_boss_shazzrah
void AddSC_boss_shazzrah()
Definition
boss_shazzrah.cpp:113
SPELL_COUNTERSPELL
@ SPELL_COUNTERSPELL
Definition
boss_shazzrah.cpp:23
SPELL_ARCANE_EXPLOSION
@ SPELL_ARCANE_EXPLOSION
Definition
boss_shazzrah.cpp:20
SPELL_MAGIC_GROUNDING
@ SPELL_MAGIC_GROUNDING
Definition
boss_shazzrah.cpp:22
SPELL_SHAZZRAH_CURSE
@ SPELL_SHAZZRAH_CURSE
Definition
boss_shazzrah.cpp:21
EVENT_BLINK
@ EVENT_BLINK
Definition
boss_shazzrah.cpp:32
EVENT_COUNTERSPELL
@ EVENT_COUNTERSPELL
Definition
boss_shazzrah.cpp:31
EVENT_ARCANE_EXPLOSION
@ EVENT_ARCANE_EXPLOSION
Definition
boss_shazzrah.cpp:28
EVENT_SHAZZRAH_CURSE
@ EVENT_SHAZZRAH_CURSE
Definition
boss_shazzrah.cpp:29
EVENT_MAGIC_GROUNDING
@ EVENT_MAGIC_GROUNDING
Definition
boss_shazzrah.cpp:30
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::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
UnitAI::DoCastVictim
void DoCastVictim(uint32 spellId, bool triggered=false)
Definition
UnitAI.cpp:168
Unit
Definition
Unit.h:1367
boss_shazzrah
Definition
boss_shazzrah.cpp:36
boss_shazzrah::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_shazzrah.cpp:107
boss_shazzrah::boss_shazzrah
boss_shazzrah()
Definition
boss_shazzrah.cpp:38
molten_core.h
BOSS_SHAZZRAH
@ BOSS_SHAZZRAH
Definition
molten_core.h:15
ScriptedAI::DoResetThreat
void DoResetThreat()
Definition
ScriptedCreature.cpp:260
ScriptedAI::me
Creature * me
Definition
ScriptedCreature.h:182
ScriptedAI::DoTeleportTo
void DoTeleportTo(float x, float y, float z, uint32 time=0)
Definition
ScriptedCreature.cpp:292
boss_shazzrah::boss_shazzrahAI
Definition
boss_shazzrah.cpp:41
boss_shazzrah::boss_shazzrahAI::EnterCombat
void EnterCombat(Unit *target) OVERRIDE
Definition
boss_shazzrah.cpp:46
boss_shazzrah::boss_shazzrahAI::UpdateAI
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_shazzrah.cpp:56
boss_shazzrah::boss_shazzrahAI::boss_shazzrahAI
boss_shazzrahAI(Creature *creature)
Definition
boss_shazzrah.cpp:42
src
server
scripts
EasternKingdoms
BlackrockMountain
MoltenCore
boss_shazzrah.cpp
Generated on
for Project SkyFire Core by
1.17.0