TrinityCore
boss_cannon_master_willey.cpp
Go to the documentation of this file.
1
/*
2
* This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3
*
4
* This program is free software; you can redistribute it and/or modify it
5
* under the terms of the GNU General Public License as published by the
6
* Free Software Foundation; either version 2 of the License, or (at your
7
* option) any later version.
8
*
9
* This program is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12
* more details.
13
*
14
* You should have received a copy of the GNU General Public License along
15
* with this program. If not, see <http://www.gnu.org/licenses/>.
16
*/
17
18
/* ScriptData
19
SDName: boss_cannon_master_willey
20
SD%Complete: 100
21
SDComment:
22
SDCategory: Stratholme
23
EndScriptData */
24
25
#include "
ScriptMgr.h
"
26
#include "
ScriptedCreature.h
"
27
#include "
stratholme.h
"
28
29
//front, left
30
#define ADD_1X 3553.851807f
31
#define ADD_1Y -2945.885986f
32
#define ADD_1Z 125.001015f
33
#define ADD_1O 0.592007f
34
//front, right
35
#define ADD_2X 3559.206299f
36
#define ADD_2Y -2952.929932f
37
#define ADD_2Z 125.001015f
38
#define ADD_2O 0.592007f
39
//mid, left
40
#define ADD_3X 3552.417480f
41
#define ADD_3Y -2948.667236f
42
#define ADD_3Z 125.001015f
43
#define ADD_3O 0.592007f
44
//mid, right
45
#define ADD_4X 3555.651855f
46
#define ADD_4Y -2953.519043f
47
#define ADD_4Z 125.001015f
48
#define ADD_4O 0.592007f
49
//back, left
50
#define ADD_5X 3547.927246f
51
#define ADD_5Y -2950.977295f
52
#define ADD_5Z 125.001015f
53
#define ADD_5O 0.592007f
54
//back, mid
55
#define ADD_6X 3553.094697f
56
#define ADD_6Y -2952.123291f
57
#define ADD_6Z 125.001015f
58
#define ADD_6O 0.592007f
59
//back, right
60
#define ADD_7X 3552.727539f
61
#define ADD_7Y -2957.776123f
62
#define ADD_7Z 125.001015f
63
#define ADD_7O 0.592007f
64
//behind, left
65
#define ADD_8X 3547.156250f
66
#define ADD_8Y -2953.162354f
67
#define ADD_8Z 125.001015f
68
#define ADD_8O 0.592007f
69
//behind, right
70
#define ADD_9X 3550.202148f
71
#define ADD_9Y -2957.437744f
72
#define ADD_9Z 125.001015f
73
#define ADD_9O 0.592007f
74
75
enum
Spells
76
{
77
SPELL_KNOCKAWAY
= 10101,
78
SPELL_PUMMEL
= 15615,
79
SPELL_SHOOT
= 16496
80
//SPELL_SUMMONCRIMSONRIFLEMAN = 17279
81
};
82
83
class
boss_cannon_master_willey
:
public
CreatureScript
84
{
85
public
:
86
boss_cannon_master_willey
() :
CreatureScript
(
"boss_cannon_master_willey"
) { }
87
88
CreatureAI
*
GetAI
(
Creature
* creature)
const override
89
{
90
return
GetStratholmeAI<boss_cannon_master_willeyAI>(creature);
91
}
92
93
struct
boss_cannon_master_willeyAI
:
public
BossAI
94
{
95
boss_cannon_master_willeyAI
(
Creature
* creature) :
BossAI
(creature,
BOSS_WILLEY_HOPEBREAKER
)
96
{
97
Initialize
();
98
}
99
100
void
Initialize
()
101
{
102
Shoot_Timer
= 1000;
103
Pummel_Timer
= 7000;
104
KnockAway_Timer
= 11000;
105
SummonRifleman_Timer
= 15000;
106
}
107
108
uint32
KnockAway_Timer
;
109
uint32
Pummel_Timer
;
110
uint32
Shoot_Timer
;
111
uint32
SummonRifleman_Timer
;
112
113
void
Reset
()
override
114
{
115
BossAI::Reset
();
116
117
Initialize
();
118
}
119
120
void
JustDied
(
Unit
* killer)
override
121
{
122
BossAI::JustDied
(killer);
123
124
me
->
SummonCreature
(11054,
ADD_1X
,
ADD_1Y
,
ADD_1Z
,
ADD_1O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
125
me
->
SummonCreature
(11054,
ADD_2X
,
ADD_2Y
,
ADD_2Z
,
ADD_2O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
126
me
->
SummonCreature
(11054,
ADD_3X
,
ADD_3Y
,
ADD_3Z
,
ADD_3O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
127
me
->
SummonCreature
(11054,
ADD_4X
,
ADD_4Y
,
ADD_4Z
,
ADD_4O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
128
me
->
SummonCreature
(11054,
ADD_5X
,
ADD_5Y
,
ADD_5Z
,
ADD_5O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
129
me
->
SummonCreature
(11054,
ADD_7X
,
ADD_7Y
,
ADD_7Z
,
ADD_7O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
130
me
->
SummonCreature
(11054,
ADD_9X
,
ADD_9Y
,
ADD_9Z
,
ADD_9O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
131
}
132
133
void
UpdateAI
(
uint32
diff)
override
134
{
135
//Return since we have no target
136
if
(!
UpdateVictim
())
137
return
;
138
139
//Pummel
140
if
(
Pummel_Timer
<= diff)
141
{
142
//Cast
143
if
(
rand32
() % 100 < 90)
//90% chance to cast
144
{
145
DoCastVictim
(
SPELL_PUMMEL
);
146
}
147
//12 seconds until we should cast this again
148
Pummel_Timer
= 12000;
149
}
else
Pummel_Timer
-= diff;
150
151
//KnockAway
152
if
(
KnockAway_Timer
<= diff)
153
{
154
//Cast
155
if
(
rand32
() % 100 < 80)
//80% chance to cast
156
{
157
DoCastVictim
(
SPELL_KNOCKAWAY
);
158
}
159
//14 seconds until we should cast this again
160
KnockAway_Timer
= 14000;
161
}
else
KnockAway_Timer
-= diff;
162
163
//Shoot
164
if
(
Shoot_Timer
<= diff)
165
{
166
//Cast
167
DoCastVictim
(
SPELL_SHOOT
);
168
//1 seconds until we should cast this again
169
Shoot_Timer
= 1000;
170
}
else
Shoot_Timer
-= diff;
171
172
//SummonRifleman
173
if
(
SummonRifleman_Timer
<= diff)
174
{
175
//Cast
176
switch
(
rand32
() % 9)
177
{
178
case
0:
179
me
->
SummonCreature
(11054,
ADD_1X
,
ADD_1Y
,
ADD_1Z
,
ADD_1O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
180
me
->
SummonCreature
(11054,
ADD_2X
,
ADD_2Y
,
ADD_2Z
,
ADD_2O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
181
me
->
SummonCreature
(11054,
ADD_4X
,
ADD_4Y
,
ADD_4Z
,
ADD_4O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
182
break
;
183
case
1:
184
me
->
SummonCreature
(11054,
ADD_2X
,
ADD_2Y
,
ADD_2Z
,
ADD_2O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
185
me
->
SummonCreature
(11054,
ADD_3X
,
ADD_3Y
,
ADD_3Z
,
ADD_3O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
186
me
->
SummonCreature
(11054,
ADD_5X
,
ADD_5Y
,
ADD_5Z
,
ADD_5O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
187
break
;
188
case
2:
189
me
->
SummonCreature
(11054,
ADD_3X
,
ADD_3Y
,
ADD_3Z
,
ADD_3O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
190
me
->
SummonCreature
(11054,
ADD_4X
,
ADD_4Y
,
ADD_4Z
,
ADD_4O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
191
me
->
SummonCreature
(11054,
ADD_6X
,
ADD_6Y
,
ADD_6Z
,
ADD_6O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
192
break
;
193
case
3:
194
me
->
SummonCreature
(11054,
ADD_4X
,
ADD_4Y
,
ADD_4Z
,
ADD_4O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
195
me
->
SummonCreature
(11054,
ADD_5X
,
ADD_5Y
,
ADD_5Z
,
ADD_5O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
196
me
->
SummonCreature
(11054,
ADD_7X
,
ADD_7Y
,
ADD_7Z
,
ADD_7O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
197
break
;
198
case
4:
199
me
->
SummonCreature
(11054,
ADD_5X
,
ADD_5Y
,
ADD_5Z
,
ADD_5O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
200
me
->
SummonCreature
(11054,
ADD_6X
,
ADD_6Y
,
ADD_6Z
,
ADD_6O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
201
me
->
SummonCreature
(11054,
ADD_8X
,
ADD_8Y
,
ADD_8Z
,
ADD_8O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
202
break
;
203
case
5:
204
me
->
SummonCreature
(11054,
ADD_6X
,
ADD_6Y
,
ADD_6Z
,
ADD_6O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
205
me
->
SummonCreature
(11054,
ADD_7X
,
ADD_7Y
,
ADD_7Z
,
ADD_7O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
206
me
->
SummonCreature
(11054,
ADD_9X
,
ADD_9Y
,
ADD_9Z
,
ADD_9O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
207
break
;
208
case
6:
209
me
->
SummonCreature
(11054,
ADD_7X
,
ADD_7Y
,
ADD_7Z
,
ADD_7O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
210
me
->
SummonCreature
(11054,
ADD_8X
,
ADD_8Y
,
ADD_8Z
,
ADD_8O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
211
me
->
SummonCreature
(11054,
ADD_1X
,
ADD_1Y
,
ADD_1Z
,
ADD_1O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
212
break
;
213
case
7:
214
me
->
SummonCreature
(11054,
ADD_8X
,
ADD_8Y
,
ADD_8Z
,
ADD_8O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
215
me
->
SummonCreature
(11054,
ADD_9X
,
ADD_9Y
,
ADD_9Z
,
ADD_9O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
216
me
->
SummonCreature
(11054,
ADD_2X
,
ADD_2Y
,
ADD_2Z
,
ADD_2O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
217
break
;
218
case
8:
219
me
->
SummonCreature
(11054,
ADD_9X
,
ADD_9Y
,
ADD_9Z
,
ADD_9O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
220
me
->
SummonCreature
(11054,
ADD_1X
,
ADD_1Y
,
ADD_1Z
,
ADD_1O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
221
me
->
SummonCreature
(11054,
ADD_3X
,
ADD_3Y
,
ADD_3Z
,
ADD_3O
,
TEMPSUMMON_TIMED_DESPAWN
, 4min);
222
break
;
223
}
224
//30 seconds until we should cast this again
225
SummonRifleman_Timer
= 30000;
226
}
else
SummonRifleman_Timer
-= diff;
227
}
228
};
229
230
};
231
232
void
AddSC_boss_cannon_master_willey
()
233
{
234
new
boss_cannon_master_willey
();
235
}
uint32
uint32_t uint32
Definition:
Define.h:142
TEMPSUMMON_TIMED_DESPAWN
@ TEMPSUMMON_TIMED_DESPAWN
Definition:
ObjectDefines.h:65
Spells
Spells
Definition:
PlayerAI.cpp:32
rand32
uint32 rand32()
Definition:
Random.cpp:70
ScriptMgr.h
ScriptedCreature.h
ADD_6O
#define ADD_6O
Definition:
boss_cannon_master_willey.cpp:58
ADD_3X
#define ADD_3X
Definition:
boss_cannon_master_willey.cpp:40
ADD_7Z
#define ADD_7Z
Definition:
boss_cannon_master_willey.cpp:62
ADD_7O
#define ADD_7O
Definition:
boss_cannon_master_willey.cpp:63
ADD_9Y
#define ADD_9Y
Definition:
boss_cannon_master_willey.cpp:71
ADD_1Z
#define ADD_1Z
Definition:
boss_cannon_master_willey.cpp:32
ADD_3Z
#define ADD_3Z
Definition:
boss_cannon_master_willey.cpp:42
ADD_7Y
#define ADD_7Y
Definition:
boss_cannon_master_willey.cpp:61
ADD_8Y
#define ADD_8Y
Definition:
boss_cannon_master_willey.cpp:66
ADD_5Z
#define ADD_5Z
Definition:
boss_cannon_master_willey.cpp:52
ADD_6Z
#define ADD_6Z
Definition:
boss_cannon_master_willey.cpp:57
ADD_9O
#define ADD_9O
Definition:
boss_cannon_master_willey.cpp:73
ADD_8Z
#define ADD_8Z
Definition:
boss_cannon_master_willey.cpp:67
ADD_8X
#define ADD_8X
Definition:
boss_cannon_master_willey.cpp:65
SPELL_SHOOT
@ SPELL_SHOOT
Definition:
boss_cannon_master_willey.cpp:79
SPELL_PUMMEL
@ SPELL_PUMMEL
Definition:
boss_cannon_master_willey.cpp:78
SPELL_KNOCKAWAY
@ SPELL_KNOCKAWAY
Definition:
boss_cannon_master_willey.cpp:77
ADD_5Y
#define ADD_5Y
Definition:
boss_cannon_master_willey.cpp:51
ADD_2O
#define ADD_2O
Definition:
boss_cannon_master_willey.cpp:38
ADD_2Y
#define ADD_2Y
Definition:
boss_cannon_master_willey.cpp:36
ADD_1Y
#define ADD_1Y
Definition:
boss_cannon_master_willey.cpp:31
ADD_7X
#define ADD_7X
Definition:
boss_cannon_master_willey.cpp:60
ADD_9Z
#define ADD_9Z
Definition:
boss_cannon_master_willey.cpp:72
ADD_1O
#define ADD_1O
Definition:
boss_cannon_master_willey.cpp:33
ADD_3Y
#define ADD_3Y
Definition:
boss_cannon_master_willey.cpp:41
ADD_9X
#define ADD_9X
Definition:
boss_cannon_master_willey.cpp:70
ADD_6X
#define ADD_6X
Definition:
boss_cannon_master_willey.cpp:55
ADD_4Z
#define ADD_4Z
Definition:
boss_cannon_master_willey.cpp:47
ADD_2Z
#define ADD_2Z
Definition:
boss_cannon_master_willey.cpp:37
ADD_8O
#define ADD_8O
Definition:
boss_cannon_master_willey.cpp:68
ADD_4Y
#define ADD_4Y
Definition:
boss_cannon_master_willey.cpp:46
ADD_4X
#define ADD_4X
Definition:
boss_cannon_master_willey.cpp:45
ADD_4O
#define ADD_4O
Definition:
boss_cannon_master_willey.cpp:48
AddSC_boss_cannon_master_willey
void AddSC_boss_cannon_master_willey()
Definition:
boss_cannon_master_willey.cpp:232
ADD_1X
#define ADD_1X
Definition:
boss_cannon_master_willey.cpp:30
ADD_5O
#define ADD_5O
Definition:
boss_cannon_master_willey.cpp:53
ADD_6Y
#define ADD_6Y
Definition:
boss_cannon_master_willey.cpp:56
ADD_3O
#define ADD_3O
Definition:
boss_cannon_master_willey.cpp:43
ADD_5X
#define ADD_5X
Definition:
boss_cannon_master_willey.cpp:50
ADD_2X
#define ADD_2X
Definition:
boss_cannon_master_willey.cpp:35
BossAI
Definition:
ScriptedCreature.h:312
BossAI::JustDied
void JustDied(Unit *) override
Definition:
ScriptedCreature.h:334
BossAI::Reset
void Reset() override
Definition:
ScriptedCreature.h:332
CreatureAI
Definition:
CreatureAI.h:59
CreatureAI::UpdateVictim
bool UpdateVictim()
Definition:
CreatureAI.cpp:245
CreatureAI::me
Creature *const me
Definition:
CreatureAI.h:61
CreatureScript
Definition:
ScriptMgr.h:430
Creature
Definition:
Creature.h:70
UnitAI::DoCastVictim
SpellCastResult DoCastVictim(uint32 spellId, CastSpellExtraArgs const &args={})
Definition:
UnitAI.cpp:180
Unit
Definition:
Unit.h:627
WorldObject::SummonCreature
TempSummon * SummonCreature(uint32 entry, Position const &pos, TempSummonType despawnType=TEMPSUMMON_MANUAL_DESPAWN, Milliseconds despawnTime=0s, uint32 vehId=0, uint32 spellId=0, ObjectGuid privateObjectOwner=ObjectGuid::Empty)
Definition:
Object.cpp:2025
boss_cannon_master_willey
Definition:
boss_cannon_master_willey.cpp:84
boss_cannon_master_willey::boss_cannon_master_willey
boss_cannon_master_willey()
Definition:
boss_cannon_master_willey.cpp:86
boss_cannon_master_willey::GetAI
CreatureAI * GetAI(Creature *creature) const override
Definition:
boss_cannon_master_willey.cpp:88
stratholme.h
BOSS_WILLEY_HOPEBREAKER
@ BOSS_WILLEY_HOPEBREAKER
Definition:
stratholme.h:31
boss_cannon_master_willey::boss_cannon_master_willeyAI
Definition:
boss_cannon_master_willey.cpp:94
boss_cannon_master_willey::boss_cannon_master_willeyAI::Initialize
void Initialize()
Definition:
boss_cannon_master_willey.cpp:100
boss_cannon_master_willey::boss_cannon_master_willeyAI::UpdateAI
void UpdateAI(uint32 diff) override
Definition:
boss_cannon_master_willey.cpp:133
boss_cannon_master_willey::boss_cannon_master_willeyAI::SummonRifleman_Timer
uint32 SummonRifleman_Timer
Definition:
boss_cannon_master_willey.cpp:111
boss_cannon_master_willey::boss_cannon_master_willeyAI::Shoot_Timer
uint32 Shoot_Timer
Definition:
boss_cannon_master_willey.cpp:110
boss_cannon_master_willey::boss_cannon_master_willeyAI::Reset
void Reset() override
Definition:
boss_cannon_master_willey.cpp:113
boss_cannon_master_willey::boss_cannon_master_willeyAI::JustDied
void JustDied(Unit *killer) override
Definition:
boss_cannon_master_willey.cpp:120
boss_cannon_master_willey::boss_cannon_master_willeyAI::Pummel_Timer
uint32 Pummel_Timer
Definition:
boss_cannon_master_willey.cpp:109
boss_cannon_master_willey::boss_cannon_master_willeyAI::KnockAway_Timer
uint32 KnockAway_Timer
Definition:
boss_cannon_master_willey.cpp:108
boss_cannon_master_willey::boss_cannon_master_willeyAI::boss_cannon_master_willeyAI
boss_cannon_master_willeyAI(Creature *creature)
Definition:
boss_cannon_master_willey.cpp:95
server
scripts
EasternKingdoms
Stratholme
boss_cannon_master_willey.cpp
Generated on Thu Mar 14 2024 23:39:27 for TrinityCore by
1.9.4