Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
boss_dathrohan_balnazzar.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_Dathrohan_Balnazzar
8
SD%Complete: 95
9
SDComment: Possibly need to fix/improve summons after death
10
SDCategory: Stratholme
11
EndScriptData */
12
13
#include "
ScriptMgr.h
"
14
#include "
ScriptedCreature.h
"
15
16
enum
Spells
17
{
18
//Dathrohan spells
19
SPELL_CRUSADERSHAMMER
= 17286,
//AOE stun
20
SPELL_CRUSADERSTRIKE
= 17281,
21
SPELL_HOLYSTRIKE
= 17284,
//weapon dmg +3
22
23
//Transform
24
SPELL_BALNAZZARTRANSFORM
= 17288,
//restore full HP/mana, trigger spell Balnazzar Transform Stun
25
26
//Balnazzar spells
27
SPELL_SHADOWSHOCK
= 17399,
28
SPELL_MINDBLAST
= 17287,
29
SPELL_PSYCHICSCREAM
= 13704,
30
SPELL_SLEEP
= 12098,
31
SPELL_MINDCONTROL
= 15690
32
};
33
34
enum
Creatures
35
{
36
NPC_DATHROHAN
= 10812,
37
NPC_BALNAZZAR
= 10813,
38
NPC_ZOMBIE
= 10698
//probably incorrect
39
};
40
41
struct
SummonDef
42
{
43
float
m_fX
,
m_fY
,
m_fZ
,
m_fOrient
;
44
};
45
46
SummonDef
m_aSummonPoint
[]=
47
{
48
{3444.156f, -3090.626f, 135.002f, 2.240f},
//G1 front, left
49
{3449.123f, -3087.009f, 135.002f, 2.240f},
//G1 front, right
50
{3446.246f, -3093.466f, 135.002f, 2.240f},
//G1 back left
51
{3451.160f, -3089.904f, 135.002f, 2.240f},
//G1 back, right
52
53
{3457.995f, -3080.916f, 135.002f, 3.784f},
//G2 front, left
54
{3454.302f, -3076.330f, 135.002f, 3.784f},
//G2 front, right
55
{3460.975f, -3078.901f, 135.002f, 3.784f},
//G2 back left
56
{3457.338f, -3073.979f, 135.002f, 3.784f}
//G2 back, right
57
};
58
59
class
boss_dathrohan_balnazzar
:
public
CreatureScript
60
{
61
public
:
62
boss_dathrohan_balnazzar
() :
CreatureScript
(
"boss_dathrohan_balnazzar"
) { }
63
64
CreatureAI
*
GetAI
(
Creature
* creature)
const
OVERRIDE
65
{
66
return
new
boss_dathrohan_balnazzarAI
(creature);
67
}
68
69
struct
boss_dathrohan_balnazzarAI
:
public
ScriptedAI
70
{
71
boss_dathrohan_balnazzarAI
(
Creature
* creature) :
ScriptedAI
(creature) { }
72
73
uint32
m_uiCrusadersHammer_Timer
;
74
uint32
m_uiCrusaderStrike_Timer
;
75
uint32
m_uiMindBlast_Timer
;
76
uint32
m_uiHolyStrike_Timer
;
77
uint32
m_uiShadowShock_Timer
;
78
uint32
m_uiPsychicScream_Timer
;
79
uint32
m_uiDeepSleep_Timer
;
80
uint32
m_uiMindControl_Timer
;
81
bool
m_bTransformed
;
82
83
void
Reset
()
OVERRIDE
84
{
85
m_uiCrusadersHammer_Timer
= 8000;
86
m_uiCrusaderStrike_Timer
= 12000;
87
m_uiMindBlast_Timer
= 6000;
88
m_uiHolyStrike_Timer
= 18000;
89
m_uiShadowShock_Timer
= 4000;
90
m_uiPsychicScream_Timer
= 16000;
91
m_uiDeepSleep_Timer
= 20000;
92
m_uiMindControl_Timer
= 10000;
93
m_bTransformed
=
false
;
94
95
if
(
me
->GetEntry() ==
NPC_BALNAZZAR
)
96
me
->UpdateEntry(
NPC_DATHROHAN
);
97
}
98
99
void
JustDied
(
Unit
*
/*killer*/
)
OVERRIDE
100
{
101
static
uint32
uiCount =
sizeof
(
m_aSummonPoint
)/
sizeof
(
SummonDef
);
102
103
for
(
uint8
i=0; i<uiCount; ++i)
104
me
->SummonCreature(
NPC_ZOMBIE
,
105
m_aSummonPoint
[i].m_fX,
m_aSummonPoint
[i].m_fY,
m_aSummonPoint
[i].m_fZ,
m_aSummonPoint
[i].m_fOrient,
106
TempSummonType::TEMPSUMMON_TIMED_DESPAWN
,
HOUR
*
IN_MILLISECONDS
);
107
}
108
109
void
EnterCombat
(
Unit
*
/*who*/
)
OVERRIDE
110
{
111
}
112
113
void
UpdateAI
(
uint32
uiDiff)
OVERRIDE
114
{
115
if
(!
UpdateVictim
())
116
return
;
117
118
//START NOT TRANSFORMED
119
if
(!
m_bTransformed
)
120
{
121
//MindBlast
122
if
(
m_uiMindBlast_Timer
<= uiDiff)
123
{
124
DoCastVictim
(
SPELL_MINDBLAST
);
125
m_uiMindBlast_Timer
= std::rand() % 20000 + 15000;
126
}
else
m_uiMindBlast_Timer
-= uiDiff;
127
128
//CrusadersHammer
129
if
(
m_uiCrusadersHammer_Timer
<= uiDiff)
130
{
131
DoCastVictim
(
SPELL_CRUSADERSHAMMER
);
132
m_uiCrusadersHammer_Timer
= 12000;
133
}
else
m_uiCrusadersHammer_Timer
-= uiDiff;
134
135
//CrusaderStrike
136
if
(
m_uiCrusaderStrike_Timer
<= uiDiff)
137
{
138
DoCastVictim
(
SPELL_CRUSADERSTRIKE
);
139
m_uiCrusaderStrike_Timer
= 15000;
140
}
else
m_uiCrusaderStrike_Timer
-= uiDiff;
141
142
//HolyStrike
143
if
(
m_uiHolyStrike_Timer
<= uiDiff)
144
{
145
DoCastVictim
(
SPELL_HOLYSTRIKE
);
146
m_uiHolyStrike_Timer
= 15000;
147
}
else
m_uiHolyStrike_Timer
-= uiDiff;
148
149
//BalnazzarTransform
150
if
(
HealthBelowPct
(40))
151
{
152
if
(
me
->IsNonMeleeSpellCasted(
false
))
153
me
->InterruptNonMeleeSpells(
false
);
154
155
//restore hp, mana and stun
156
DoCast
(
me
,
SPELL_BALNAZZARTRANSFORM
);
157
me
->UpdateEntry(
NPC_BALNAZZAR
);
158
m_bTransformed
=
true
;
159
}
160
}
161
else
162
{
163
//MindBlast
164
if
(
m_uiMindBlast_Timer
<= uiDiff)
165
{
166
DoCastVictim
(
SPELL_MINDBLAST
);
167
m_uiMindBlast_Timer
= std::rand() % 20000 + 15000;
168
}
else
m_uiMindBlast_Timer
-= uiDiff;
169
170
//ShadowShock
171
if
(
m_uiShadowShock_Timer
<= uiDiff)
172
{
173
DoCastVictim
(
SPELL_SHADOWSHOCK
);
174
m_uiShadowShock_Timer
= 11000;
175
}
else
m_uiShadowShock_Timer
-= uiDiff;
176
177
//PsychicScream
178
if
(
m_uiPsychicScream_Timer
<= uiDiff)
179
{
180
if
(
Unit
* target =
SelectTarget
(
SELECT_TARGET_RANDOM
, 0))
181
DoCast
(target,
SPELL_PSYCHICSCREAM
);
182
183
m_uiPsychicScream_Timer
= 20000;
184
}
else
m_uiPsychicScream_Timer
-= uiDiff;
185
186
//DeepSleep
187
if
(
m_uiDeepSleep_Timer
<= uiDiff)
188
{
189
if
(
Unit
* target =
SelectTarget
(
SELECT_TARGET_RANDOM
, 0))
190
DoCast
(target,
SPELL_SLEEP
);
191
192
m_uiDeepSleep_Timer
= 15000;
193
}
else
m_uiDeepSleep_Timer
-= uiDiff;
194
195
//MindControl
196
if
(
m_uiMindControl_Timer
<= uiDiff)
197
{
198
DoCastVictim
(
SPELL_MINDCONTROL
);
199
m_uiMindControl_Timer
= 15000;
200
}
else
m_uiMindControl_Timer
-= uiDiff;
201
}
202
203
DoMeleeAttackIfReady
();
204
}
205
};
206
};
207
208
void
AddSC_boss_dathrohan_balnazzar
()
209
{
210
new
boss_dathrohan_balnazzar
();
211
}
Spells
Spells
Definition
BattlegroundIC.h:645
IN_MILLISECONDS
@ IN_MILLISECONDS
Definition
Common.h:125
HOUR
@ HOUR
Definition
Common.h:120
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
TempSummonType::TEMPSUMMON_TIMED_DESPAWN
@ TEMPSUMMON_TIMED_DESPAWN
Definition
Object.h:70
ScriptMgr.h
ScriptedCreature.h
SELECT_TARGET_RANDOM
@ SELECT_TARGET_RANDOM
Definition
UnitAI.h:23
Creatures
Creatures
Definition
alterac_valley.cpp:28
NPC_DATHROHAN
@ NPC_DATHROHAN
Definition
boss_dathrohan_balnazzar.cpp:36
NPC_BALNAZZAR
@ NPC_BALNAZZAR
Definition
boss_dathrohan_balnazzar.cpp:37
NPC_ZOMBIE
@ NPC_ZOMBIE
Definition
boss_dathrohan_balnazzar.cpp:38
SPELL_CRUSADERSTRIKE
@ SPELL_CRUSADERSTRIKE
Definition
boss_dathrohan_balnazzar.cpp:20
SPELL_HOLYSTRIKE
@ SPELL_HOLYSTRIKE
Definition
boss_dathrohan_balnazzar.cpp:21
SPELL_SLEEP
@ SPELL_SLEEP
Definition
boss_dathrohan_balnazzar.cpp:30
SPELL_PSYCHICSCREAM
@ SPELL_PSYCHICSCREAM
Definition
boss_dathrohan_balnazzar.cpp:29
SPELL_MINDBLAST
@ SPELL_MINDBLAST
Definition
boss_dathrohan_balnazzar.cpp:28
SPELL_SHADOWSHOCK
@ SPELL_SHADOWSHOCK
Definition
boss_dathrohan_balnazzar.cpp:27
SPELL_MINDCONTROL
@ SPELL_MINDCONTROL
Definition
boss_dathrohan_balnazzar.cpp:31
SPELL_BALNAZZARTRANSFORM
@ SPELL_BALNAZZARTRANSFORM
Definition
boss_dathrohan_balnazzar.cpp:24
SPELL_CRUSADERSHAMMER
@ SPELL_CRUSADERSHAMMER
Definition
boss_dathrohan_balnazzar.cpp:19
AddSC_boss_dathrohan_balnazzar
void AddSC_boss_dathrohan_balnazzar()
Definition
boss_dathrohan_balnazzar.cpp:208
m_aSummonPoint
SummonDef m_aSummonPoint[]
Definition
boss_dathrohan_balnazzar.cpp:46
SPELL_SLEEP
@ SPELL_SLEEP
Definition
boss_high_inquisitor_fairbanks.cpp:23
SPELL_PSYCHICSCREAM
@ SPELL_PSYCHICSCREAM
Definition
boss_high_interrogator_gerstahn.cpp:13
SPELL_CRUSADERSTRIKE
@ SPELL_CRUSADERSTRIKE
Definition
boss_mograine_and_whitemane.cpp:34
SPELL_MINDBLAST
@ SPELL_MINDBLAST
Definition
boss_moira_bronzebeard.cpp:14
SPELL_MINDCONTROL
@ SPELL_MINDCONTROL
Definition
boss_razorgore.cpp:22
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_dathrohan_balnazzar
Definition
boss_dathrohan_balnazzar.cpp:60
boss_dathrohan_balnazzar::boss_dathrohan_balnazzar
boss_dathrohan_balnazzar()
Definition
boss_dathrohan_balnazzar.cpp:62
boss_dathrohan_balnazzar::GetAI
CreatureAI * GetAI(Creature *creature) const OVERRIDE
Definition
boss_dathrohan_balnazzar.cpp:64
ScriptedAI::me
Creature * me
Definition
ScriptedCreature.h:182
ScriptedAI::HealthBelowPct
bool HealthBelowPct(uint32 pct) const
Definition
ScriptedCreature.h:247
ScriptedAI::ScriptedAI
ScriptedAI(Creature *creature)
Definition
ScriptedCreature.cpp:85
SummonDef
Definition
boss_dathrohan_balnazzar.cpp:42
SummonDef::m_fOrient
float m_fOrient
Definition
boss_dathrohan_balnazzar.cpp:43
SummonDef::m_fX
float m_fX
Definition
boss_dathrohan_balnazzar.cpp:43
SummonDef::m_fZ
float m_fZ
Definition
boss_dathrohan_balnazzar.cpp:43
SummonDef::m_fY
float m_fY
Definition
boss_dathrohan_balnazzar.cpp:43
boss_dathrohan_balnazzar::boss_dathrohan_balnazzarAI
Definition
boss_dathrohan_balnazzar.cpp:70
boss_dathrohan_balnazzar::boss_dathrohan_balnazzarAI::JustDied
void JustDied(Unit *) OVERRIDE
Definition
boss_dathrohan_balnazzar.cpp:99
boss_dathrohan_balnazzar::boss_dathrohan_balnazzarAI::m_bTransformed
bool m_bTransformed
Definition
boss_dathrohan_balnazzar.cpp:81
boss_dathrohan_balnazzar::boss_dathrohan_balnazzarAI::m_uiHolyStrike_Timer
uint32 m_uiHolyStrike_Timer
Definition
boss_dathrohan_balnazzar.cpp:76
boss_dathrohan_balnazzar::boss_dathrohan_balnazzarAI::EnterCombat
void EnterCombat(Unit *) OVERRIDE
Definition
boss_dathrohan_balnazzar.cpp:109
boss_dathrohan_balnazzar::boss_dathrohan_balnazzarAI::m_uiShadowShock_Timer
uint32 m_uiShadowShock_Timer
Definition
boss_dathrohan_balnazzar.cpp:77
boss_dathrohan_balnazzar::boss_dathrohan_balnazzarAI::m_uiCrusadersHammer_Timer
uint32 m_uiCrusadersHammer_Timer
Definition
boss_dathrohan_balnazzar.cpp:73
boss_dathrohan_balnazzar::boss_dathrohan_balnazzarAI::m_uiMindBlast_Timer
uint32 m_uiMindBlast_Timer
Definition
boss_dathrohan_balnazzar.cpp:75
boss_dathrohan_balnazzar::boss_dathrohan_balnazzarAI::UpdateAI
void UpdateAI(uint32 uiDiff) OVERRIDE
== Triggered Actions Requested ==================
Definition
boss_dathrohan_balnazzar.cpp:113
boss_dathrohan_balnazzar::boss_dathrohan_balnazzarAI::m_uiDeepSleep_Timer
uint32 m_uiDeepSleep_Timer
Definition
boss_dathrohan_balnazzar.cpp:79
boss_dathrohan_balnazzar::boss_dathrohan_balnazzarAI::Reset
void Reset() OVERRIDE
Definition
boss_dathrohan_balnazzar.cpp:83
boss_dathrohan_balnazzar::boss_dathrohan_balnazzarAI::m_uiMindControl_Timer
uint32 m_uiMindControl_Timer
Definition
boss_dathrohan_balnazzar.cpp:80
boss_dathrohan_balnazzar::boss_dathrohan_balnazzarAI::m_uiCrusaderStrike_Timer
uint32 m_uiCrusaderStrike_Timer
Definition
boss_dathrohan_balnazzar.cpp:74
boss_dathrohan_balnazzar::boss_dathrohan_balnazzarAI::boss_dathrohan_balnazzarAI
boss_dathrohan_balnazzarAI(Creature *creature)
Definition
boss_dathrohan_balnazzar.cpp:71
boss_dathrohan_balnazzar::boss_dathrohan_balnazzarAI::m_uiPsychicScream_Timer
uint32 m_uiPsychicScream_Timer
Definition
boss_dathrohan_balnazzar.cpp:78
src
server
scripts
EasternKingdoms
Stratholme
boss_dathrohan_balnazzar.cpp
Generated on
for Project SkyFire Core by
1.17.0