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
19SDName: boss_cannon_master_willey
20SD%Complete: 100
21SDComment:
22SDCategory: Stratholme
23EndScriptData */
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
76{
78 SPELL_PUMMEL = 15615,
79 SPELL_SHOOT = 16496
80 //SPELL_SUMMONCRIMSONRIFLEMAN = 17279
81};
82
84{
85public:
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
94 {
96 {
97 Initialize();
98 }
99
101 {
102 Shoot_Timer = 1000;
103 Pummel_Timer = 7000;
104 KnockAway_Timer = 11000;
105 SummonRifleman_Timer = 15000;
106 }
107
112
113 void Reset() override
114 {
116
117 Initialize();
118 }
119
120 void JustDied(Unit* killer) override
121 {
122 BossAI::JustDied(killer);
123
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 {
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 {
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
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:
182 break;
183 case 1:
187 break;
188 case 2:
192 break;
193 case 3:
197 break;
198 case 4:
202 break;
203 case 5:
207 break;
208 case 6:
212 break;
213 case 7:
217 break;
218 case 8:
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
233{
235}
uint32_t uint32
Definition: Define.h:142
@ TEMPSUMMON_TIMED_DESPAWN
Definition: ObjectDefines.h:65
Spells
Definition: PlayerAI.cpp:32
uint32 rand32()
Definition: Random.cpp:70
#define ADD_6O
#define ADD_3X
#define ADD_7Z
#define ADD_7O
#define ADD_9Y
#define ADD_1Z
#define ADD_3Z
#define ADD_7Y
#define ADD_8Y
#define ADD_5Z
#define ADD_6Z
#define ADD_9O
#define ADD_8Z
#define ADD_8X
#define ADD_5Y
#define ADD_2O
#define ADD_2Y
#define ADD_1Y
#define ADD_7X
#define ADD_9Z
#define ADD_1O
#define ADD_3Y
#define ADD_9X
#define ADD_6X
#define ADD_4Z
#define ADD_2Z
#define ADD_8O
#define ADD_4Y
#define ADD_4X
#define ADD_4O
void AddSC_boss_cannon_master_willey()
#define ADD_1X
#define ADD_5O
#define ADD_6Y
#define ADD_3O
#define ADD_5X
#define ADD_2X
void JustDied(Unit *) override
void Reset() override
bool UpdateVictim()
Definition: CreatureAI.cpp:245
Creature *const me
Definition: CreatureAI.h:61
SpellCastResult DoCastVictim(uint32 spellId, CastSpellExtraArgs const &args={})
Definition: UnitAI.cpp:180
Definition: Unit.h:627
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
CreatureAI * GetAI(Creature *creature) const override
@ BOSS_WILLEY_HOPEBREAKER
Definition: stratholme.h:31