TrinityCore
Loading...
Searching...
No Matches
instance_deadmines.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: Instance_Deadmines
20SD%Complete: 100
21SDComment:
22SDCategory: Deadmines
23EndScriptData */
24
25#include "ScriptMgr.h"
26#include "CreatureAI.h"
27#include "deadmines.h"
28#include "GameObject.h"
29#include "InstanceScript.h"
30#include "Map.h"
31#include "MotionMaster.h"
32#include "TemporarySummon.h"
33
35{
38};
39
46
54
56{
57 public:
59
61 {
73
80
86
87 virtual void Update(uint32 diff) override
88 {
90 return;
91
93 if (!pIronCladDoor)
94 return;
95
96 switch (State)
97 {
101 break;
105 if (CannonBlast_Timer <= diff)
106 {
108 ShootCannon();
109 BlastOutDoor();
110 LeverStucked();
111 instance->LoadGrid(-22.8f, -797.24f); // Loads Mr. Smite's grid.
112 if (Creature* smite = instance->GetCreature(MrSmiteGUID)) // goes off when door blows up
113 smite->AI()->Talk(SAY_ALARM1);
115 } else CannonBlast_Timer -= diff;
116 break;
117 case PIRATES_ATTACK:
118 if (PiratesDelay_Timer <= diff)
119 {
122 } else PiratesDelay_Timer -= diff;
123 break;
124 case SMITE_ALARMED:
125 if (SmiteAlarmDelay_Timer <= diff)
126 {
128 smite->AI()->Talk(SAY_ALARM2);
130 } else SmiteAlarmDelay_Timer -= diff;
131 break;
132 }
133 }
134
136 {
137 if (GameObject* pIronCladDoor = instance->GetGameObject(IronCladDoorGUID))
138 {
139 Creature* DefiasPirate1 = pIronCladDoor->SummonCreature(657, pIronCladDoor->GetPositionX() - 2, pIronCladDoor->GetPositionY()-7, pIronCladDoor->GetPositionZ(), 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 3s);
140 Creature* DefiasPirate2 = pIronCladDoor->SummonCreature(657, pIronCladDoor->GetPositionX() + 3, pIronCladDoor->GetPositionY()-6, pIronCladDoor->GetPositionZ(), 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 3s);
141
142 DefiasPirate1GUID = DefiasPirate1->GetGUID();
143 DefiasPirate2GUID = DefiasPirate2->GetGUID();
144 }
145 }
146
148 {
150 return;
151
154 if (!pDefiasPirate1 || !pDefiasPirate2)
155 return;
156
157 MoveCreatureInside(pDefiasPirate1);
158 MoveCreatureInside(pDefiasPirate2);
159 }
160
162 {
163 creature->SetWalk(false);
164 creature->GetMotionMaster()->MovePoint(0, -102.7f, -655.9f, creature->GetPositionZ());
165 }
166
168 {
169 if (GameObject* pDefiasCannon = instance->GetGameObject(DefiasCannonGUID))
170 {
171 pDefiasCannon->SetGoState(GO_STATE_ACTIVE);
172 pDefiasCannon->PlayDirectSound(SOUND_CANNONFIRE);
173 }
174 }
175
177 {
178 if (GameObject* pIronCladDoor = instance->GetGameObject(IronCladDoorGUID))
179 {
180 pIronCladDoor->SetGoState(GO_STATE_DESTROYED);
181 pIronCladDoor->PlayDirectSound(SOUND_DESTROYDOOR);
182 }
183 }
184
186 {
188 pDoorLever->SetFlag(GO_FLAG_INTERACT_COND);
189 }
190
191 void OnCreatureCreate(Creature* creature) override
192 {
194
195 switch (creature->GetEntry())
196 {
197 case NPC_MR_SMITE:
198 MrSmiteGUID = creature->GetGUID();
199 break;
200 default:
201 break;
202 }
203 }
204
206 {
208
209 switch (go->GetEntry())
210 {
211 case GO_IRONCLAD_DOOR:
213 break;
214 case GO_DEFIAS_CANNON:
216 break;
217 case GO_DOOR_LEVER:
218 DoorLeverGUID = go->GetGUID();
219 break;
222 break;
223 default:
224 break;
225 }
226 }
227
228 void OnUnitDeath(Unit* unit) override
229 {
230 if (Creature* creature = unit->ToCreature())
231 {
232 switch (creature->GetEntry())
233 {
234 case NPC_RHAHKZOR:
236 break;
237 case NPC_SNEED:
239 break;
240 case NPC_GILNID:
242 break;
243 case NPC_MR_SMITE:
245 break;
246 case NPC_GREENSKIN:
248 break;
249 case NPC_COOKIE:
251 break;
252 default:
253 break;
254 }
255 }
256 }
257
258 void SetData(uint32 type, uint32 data) override
259 {
260 switch (type)
261 {
262 case EVENT_STATE:
264 State = data;
265 break;
266 }
267 }
268
269 uint32 GetData(uint32 type) const override
270 {
271 switch (type)
272 {
273 case EVENT_STATE:
274 return State;
275 }
276
277 return 0;
278 }
279
280 ObjectGuid GetGuidData(uint32 data) const override
281 {
282 switch (data)
283 {
284 case DATA_SMITE_CHEST:
285 return uiSmiteChestGUID;
286 }
287
288 return ObjectGuid::Empty;
289 }
290 };
291
293 {
295 }
296};
297
uint32_t uint32
Definition Define.h:133
@ DONE
@ DOOR_TYPE_ROOM
@ DOOR_TYPE_PASSAGE
@ TEMPSUMMON_CORPSE_TIMED_DESPAWN
@ GO_FLAG_INTERACT_COND
@ GO_STATE_DESTROYED
@ GO_STATE_ACTIVE
#define DataHeader
uint32 const EncounterCount
void SetBossNumber(uint32 number)
virtual bool SetBossState(uint32 id, EncounterState state)
virtual void OnCreatureCreate(Creature *creature) override
InstanceMap * instance
virtual void OnGameObjectCreate(GameObject *go) override
void LoadDoorData(DoorData const *data)
void SetHeaders(std::string const &dataHeaders)
void LoadGrid(float x, float y)
Definition Map.cpp:578
GameObject * GetGameObject(ObjectGuid const &guid)
Definition Map.cpp:4430
Creature * GetCreature(ObjectGuid const &guid)
Definition Map.cpp:4397
void MovePoint(uint32 id, Position const &pos, bool generatePath=true, Optional< float > finalOrient={})
static ObjectGuid const Empty
Definition ObjectGuid.h:140
bool IsEmpty() const
Definition ObjectGuid.h:172
static Creature * ToCreature(Object *o)
Definition Object.h:186
uint32 GetEntry() const
Definition Object.h:81
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:78
Definition Unit.h:769
MotionMaster * GetMotionMaster()
Definition Unit.h:1667
bool SetWalk(bool enable)
Definition Unit.cpp:13268
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:1992
InstanceScript * GetInstanceScript(InstanceMap *map) const override
@ NPC_COOKIE
Definition deadmines.h:77
@ NPC_RHAHKZOR
Definition deadmines.h:71
@ NPC_SNEED
Definition deadmines.h:72
@ NPC_GILNID
Definition deadmines.h:73
@ NPC_GREENSKIN
Definition deadmines.h:75
@ NPC_MR_SMITE
Definition deadmines.h:74
@ GO_MR_SMITE_CHEST
Definition deadmines.h:66
@ GO_FOUNDRY_DOOR
Definition deadmines.h:62
@ GO_DOOR_LEVER
Definition deadmines.h:65
@ GO_FACTORY_DOOR
Definition deadmines.h:60
@ GO_IRONCLAD_DOOR
Definition deadmines.h:63
@ GO_DEFIAS_CANNON
Definition deadmines.h:64
@ GO_MAST_ROOM_DOOR
Definition deadmines.h:61
@ BOSS_COOKIE
Definition deadmines.h:47
@ EVENT_STATE
Definition deadmines.h:50
@ BOSS_SNEED
Definition deadmines.h:42
@ BOSS_GREENSKIN
Definition deadmines.h:45
@ BOSS_RHAHKZOR
Definition deadmines.h:41
@ BOSS_MR_SMITE
Definition deadmines.h:44
@ BOSS_GILNID
Definition deadmines.h:43
@ SAY_ALARM1
Definition deadmines.h:83
@ SAY_ALARM2
Definition deadmines.h:84
@ DATA_SMITE_CHEST
Definition deadmines.h:55
#define DMScriptName
Definition deadmines.h:23
@ PIRATES_ATTACK
Definition deadmines.h:33
@ CANNON_NOT_USED
Definition deadmines.h:30
@ EVENT_DONE
Definition deadmines.h:35
@ CANNON_BLAST_INITIATED
Definition deadmines.h:32
@ CANNON_GUNPOWDER_USED
Definition deadmines.h:31
@ SMITE_ALARMED
Definition deadmines.h:34
@ DATA_SMITE_ALARM_DELAY_TIMER
@ DATA_CANNON_BLAST_TIMER
@ DATA_PIRATES_DELAY_TIMER
@ SOUND_CANNONFIRE
@ SOUND_DESTROYDOOR
void AddSC_instance_deadmines()
DoorData const doorData[]
float GetPositionZ() const
Definition Position.h:81