Scripts/Ulduar: Spellscripts for Mimiron

Closes #12579

Signed-off-by: DDuarte <dnpd.dd@gmail.com>
This commit is contained in:
Unholychick
2014-08-18 22:01:47 +01:00
committed by DDuarte
parent 8257338dc7
commit 377f385c81
4 changed files with 1590 additions and 50 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -15,13 +15,12 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "InstanceScript.h"
#include "Player.h"
#include "WorldPacket.h"
#include "SpellScript.h"
#include "ulduar.h"
#include "Player.h"
#include "ScriptedCreature.h"
#include "ScriptMgr.h"
#include "SpellScript.h"
#include "WorldPacket.h"
static DoorData const doorData[] =
{
@@ -32,6 +31,9 @@ static DoorData const doorData[] =
{ GO_HODIR_ENTRANCE, BOSS_HODIR, DOOR_TYPE_ROOM, BOUNDARY_E },
{ GO_HODIR_DOOR, BOSS_HODIR, DOOR_TYPE_PASSAGE, BOUNDARY_NONE },
{ GO_HODIR_ICE_DOOR, BOSS_HODIR, DOOR_TYPE_PASSAGE, BOUNDARY_W },
{ GO_MIMIRON_DOOR_1, BOSS_MIMIRON, DOOR_TYPE_ROOM, BOUNDARY_W },
{ GO_MIMIRON_DOOR_2, BOSS_MIMIRON, DOOR_TYPE_ROOM, BOUNDARY_E },
{ GO_MIMIRON_DOOR_3, BOSS_MIMIRON, DOOR_TYPE_ROOM, BOUNDARY_S },
{ GO_VEZAX_DOOR, BOSS_VEZAX, DOOR_TYPE_PASSAGE, BOUNDARY_E },
{ GO_YOGG_SARON_DOOR, BOSS_YOGG_SARON, DOOR_TYPE_ROOM, BOUNDARY_S },
{ GO_DOODAD_UL_SIGILDOOR_03, BOSS_ALGALON, DOOR_TYPE_ROOM, BOUNDARY_W },
@@ -70,11 +72,14 @@ class instance_ulduar : public InstanceMapScript
uint64 AssemblyGUIDs[3];
uint64 KologarnGUID;
uint64 AuriayaGUID;
uint64 MimironGUID;
uint64 HodirGUID;
uint64 ThorimGUID;
uint64 FreyaGUID;
uint64 ElderGUIDs[3];
uint64 MimironGUID;
uint64 MimironVehicleGUIDs[3];
uint64 MimironComputerGUID;
uint64 MimironWorldTriggerGUID;
uint64 VezaxGUID;
uint64 YoggSaronGUID;
uint64 VoiceOfYoggSaronGUID;
@@ -92,6 +97,9 @@ class instance_ulduar : public InstanceMapScript
uint64 ThorimChestGUID;
uint64 HodirRareCacheGUID;
uint64 HodirChestGUID;
uint64 MimironTramGUID;
uint64 MimironElevatorGUID;
uint64 MimironButtonGUID;
uint64 BrainRoomDoorGUIDs[3];
uint64 AlgalonSigilDoorGUID[3];
uint64 AlgalonFloorGUID[2];
@@ -126,6 +134,8 @@ class instance_ulduar : public InstanceMapScript
KologarnGUID = 0;
AuriayaGUID = 0;
MimironGUID = 0;
MimironComputerGUID = 0;
MimironWorldTriggerGUID = 0;
HodirGUID = 0;
ThorimGUID = 0;
FreyaGUID = 0;
@@ -140,6 +150,9 @@ class instance_ulduar : public InstanceMapScript
ThorimChestGUID = 0;
HodirRareCacheGUID = 0;
HodirChestGUID = 0;
MimironTramGUID = 0;
MimironElevatorGUID = 0;
MimironButtonGUID = 0;
LeviathanGateGUID = 0;
AlgalonUniverseGUID = 0;
AlgalonTrapdoorGUID = 0;
@@ -166,6 +179,7 @@ class instance_ulduar : public InstanceMapScript
memset(AssemblyGUIDs, 0, sizeof(AssemblyGUIDs));
memset(RazorHarpoonGUIDs, 0, sizeof(RazorHarpoonGUIDs));
memset(ElderGUIDs, 0, sizeof(ElderGUIDs));
memset(MimironVehicleGUIDs, 0, sizeof(MimironVehicleGUIDs));
memset(BrainRoomDoorGUIDs, 0, sizeof(BrainRoomDoorGUIDs));
memset(KeeperGUIDs, 0, sizeof(KeeperGUIDs));
memset(_summonObservationRingKeeper, false, sizeof(_summonObservationRingKeeper));
@@ -289,9 +303,6 @@ class instance_ulduar : public InstanceMapScript
case NPC_AURIAYA:
AuriayaGUID = creature->GetGUID();
break;
case NPC_MIMIRON:
MimironGUID = creature->GetGUID();
break;
// Hodir
case NPC_HODIR:
@@ -354,6 +365,26 @@ class instance_ulduar : public InstanceMapScript
creature->DespawnOrUnsummon();
break;
// Mimiron
case NPC_MIMIRON:
MimironGUID = creature->GetGUID();
break;
case NPC_LEVIATHAN_MKII:
MimironVehicleGUIDs[0] = creature->GetGUID();
break;
case NPC_VX_001:
MimironVehicleGUIDs[1] = creature->GetGUID();
break;
case NPC_AERIAL_COMMAND_UNIT:
MimironVehicleGUIDs[2] = creature->GetGUID();
break;
case NPC_COMPUTER:
MimironComputerGUID = creature->GetGUID();
break;
case NPC_WORLD_TRIGGER_MIMIRON:
MimironWorldTriggerGUID = creature->GetGUID();
break;
case NPC_VEZAX:
VezaxGUID = creature->GetGUID();
break;
@@ -470,6 +501,15 @@ class instance_ulduar : public InstanceMapScript
case GO_HODIR_CHEST:
HodirChestGUID = gameObject->GetGUID();
break;
case GO_MIMIRON_TRAM:
MimironTramGUID = gameObject->GetGUID();
break;
case GO_MIMIRON_ELEVATOR:
MimironElevatorGUID = gameObject->GetGUID();
break;
case GO_MIMIRON_BUTTON:
MimironButtonGUID = gameObject->GetGUID();
break;
case GO_LEVIATHAN_GATE:
LeviathanGateGUID = gameObject->GetGUID();
if (GetBossState(BOSS_LEVIATHAN) == DONE)
@@ -482,6 +522,9 @@ class instance_ulduar : public InstanceMapScript
case GO_HODIR_ENTRANCE:
case GO_HODIR_DOOR:
case GO_HODIR_ICE_DOOR:
case GO_MIMIRON_DOOR_1:
case GO_MIMIRON_DOOR_2:
case GO_MIMIRON_DOOR_3:
case GO_VEZAX_DOOR:
case GO_YOGG_SARON_DOOR:
AddDoor(gameObject, true);
@@ -566,6 +609,9 @@ class instance_ulduar : public InstanceMapScript
case GO_HODIR_ENTRANCE:
case GO_HODIR_DOOR:
case GO_HODIR_ICE_DOOR:
case GO_MIMIRON_DOOR_1:
case GO_MIMIRON_DOOR_2:
case GO_MIMIRON_DOOR_3:
case GO_VEZAX_DOOR:
case GO_YOGG_SARON_DOOR:
case GO_DOODAD_UL_SIGILDOOR_03:
@@ -774,6 +820,10 @@ class instance_ulduar : public InstanceMapScript
break;
case DATA_UNBROKEN:
Unbroken = data != 0;
break;
case DATA_MIMIRON_ELEVATOR:
if (GameObject* gameObject = instance->GetGameObject(MimironElevatorGUID))
gameObject->SetGoState((GOState)data);
break;
case DATA_ILLUSION:
illusion = data;
@@ -846,8 +896,6 @@ class instance_ulduar : public InstanceMapScript
return KologarnGUID;
case BOSS_AURIAYA:
return AuriayaGUID;
case BOSS_MIMIRON:
return MimironGUID;
case BOSS_HODIR:
return HodirGUID;
case BOSS_THORIM:
@@ -863,6 +911,22 @@ class instance_ulduar : public InstanceMapScript
case BOSS_STONEBARK:
return ElderGUIDs[2];
// Mimiron
case BOSS_MIMIRON:
return MimironGUID;
case DATA_LEVIATHAN_MK_II:
return MimironVehicleGUIDs[0];
case DATA_VX_001:
return MimironVehicleGUIDs[1];
case DATA_AERIAL_COMMAND_UNIT:
return MimironVehicleGUIDs[2];
case DATA_COMPUTER:
return MimironComputerGUID;
case DATA_MIMIRON_WORLD_TRIGGER:
return MimironWorldTriggerGUID;
case DATA_MIMIRON_BUTTON:
return MimironButtonGUID;
case BOSS_VEZAX:
return VezaxGUID;

View File

@@ -18,6 +18,7 @@
#ifndef DEF_ULDUAR_H
#define DEF_ULDUAR_H
#include "InstanceScript.h"
#include "ObjectMgr.h"
#define UlduarScriptName "instance_ulduar"
@@ -83,6 +84,18 @@ enum UlduarNPCs
NPC_LEVIATHAN_MKII = 33432,
NPC_VX_001 = 33651,
NPC_AERIAL_COMMAND_UNIT = 33670,
NPC_ASSAULT_BOT = 34057,
NPC_BOMB_BOT = 33836,
NPC_JUNK_BOT = 33855,
NPC_EMERGENCY_FIRE_BOT = 34147,
NPC_FROST_BOMB = 34149,
NPC_BURST_TARGET = 34211,
NPC_FLAME = 34363,
NPC_FLAME_SPREAD = 34121,
NPC_DB_TARGET = 33576,
NPC_ROCKET_MIMIRON_VISUAL = 34050,
NPC_WORLD_TRIGGER_MIMIRON = 21252,
NPC_COMPUTER = 34143,
// Freya's Keepers
NPC_IRONBRANCH = 32913,
@@ -204,6 +217,18 @@ enum UlduarGameObjects
GO_THORIM_CHEST_HERO = 194315,
GO_THORIM_CHEST = 194314,
// Mimiron
GO_MIMIRON_TRAM = 194675,
GO_MIMIRON_ELEVATOR = 194749,
GO_MIMIRON_BUTTON = 194739,
GO_MIMIRON_DOOR_1 = 194774,
GO_MIMIRON_DOOR_2 = 194775,
GO_MIMIRON_DOOR_3 = 194776,
GO_CACHE_OF_INNOVATION = 194789,
GO_CACHE_OF_INNOVATION_FIREFIGHTER = 194957,
GO_CACHE_OF_INNOVATION_HERO = 194956,
GO_CACHE_OF_INNOVATION_FIREFIGHTER_HERO = 194958,
// Vezax
GO_VEZAX_DOOR = 194750,
@@ -292,6 +317,16 @@ enum UlduarData
// Hodir
DATA_HODIR_RARE_CACHE,
// Mimiron
DATA_LEVIATHAN_MK_II,
DATA_VX_001,
DATA_AERIAL_COMMAND_UNIT,
DATA_COMPUTER,
DATA_MIMIRON_WORLD_TRIGGER,
DATA_MIMIRON_ELEVATOR,
DATA_MIMIRON_TRAM,
DATA_MIMIRON_BUTTON,
// Yogg-Saron
DATA_VOICE_OF_YOGG_SARON,
DATA_SARA,