aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNyeriah <sarah.trysan@live.com>2014-12-26 03:58:42 -0200
committerNyeriah <sarah.trysan@live.com>2014-12-26 03:58:42 -0200
commitaff5229cd1777581bd85079d064037a57bf17799 (patch)
tree22193863cb67c840eeb13eec021e5496f6363e07 /src
parentd13036442e82f4fe8140db09707eaa37e2392160 (diff)
Scripts/Naxxramas: Add script support for quarter teleporters and spawn missing ones
Updates #13255
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp55
-rw-r--r--src/server/scripts/Northrend/Naxxramas/naxxramas.h13
2 files changed, 65 insertions, 3 deletions
diff --git a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp
index 100668979e8..e5895d78ab3 100644
--- a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp
@@ -69,6 +69,15 @@ MinionData const minionData[] =
{ 0, 0, }
};
+ObjectData const objectData[] =
+{
+ { GO_NAXX_PORTAL_ARACHNID, DATA_NAXX_PORTAL_ARACHNID },
+ { GO_NAXX_PORTAL_CONSTRUCT, DATA_NAXX_PORTAL_CONSTRUCT },
+ { GO_NAXX_PORTAL_PLAGUE, DATA_NAXX_PORTAL_PLAGUE },
+ { GO_NAXX_PORTAL_MILITARY, DATA_NAXX_PORTAL_MILITARY },
+ { 0, 0, }
+};
+
float const HeiganPos[2] = { 2796.0f, -3707.0f };
float const HeiganEruptionSlope[3] =
{
@@ -111,6 +120,7 @@ class instance_naxxramas : public InstanceMapScript
SetBossNumber(EncounterCount);
LoadDoorData(doorData);
LoadMinionData(minionData);
+ LoadObjectData(nullptr, objectData);
minHorsemenDiedTime = 0;
maxHorsemenDiedTime = 0;
@@ -208,11 +218,27 @@ class instance_naxxramas : public InstanceMapScript
case GO_ROOM_KELTHUZAD:
KelthuzadDoorGUID = go->GetGUID();
break;
+ case GO_NAXX_PORTAL_ARACHNID:
+ if (GetBossState(BOSS_MAEXXNA) == DONE)
+ go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
+ break;
+ case GO_NAXX_PORTAL_CONSTRUCT:
+ if (GetBossState(BOSS_THADDIUS) == DONE)
+ go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
+ break;
+ case GO_NAXX_PORTAL_PLAGUE:
+ if (GetBossState(BOSS_LOATHEB) == DONE)
+ go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
+ break;
+ case GO_NAXX_PORTAL_MILITARY:
+ if (GetBossState(BOSS_HORSEMEN) == DONE)
+ go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
+ break;
default:
break;
}
- AddDoor(go, true);
+ InstanceScript::OnGameObjectCreate(go);
}
void OnGameObjectRemove(GameObject* go) override
@@ -239,7 +265,7 @@ class instance_naxxramas : public InstanceMapScript
break;
}
- AddDoor(go, false);
+ InstanceScript::OnGameObjectRemove(go);
}
void OnUnitDeath(Unit* unit) override
@@ -358,10 +384,31 @@ class instance_naxxramas : public InstanceMapScript
switch (id)
{
case BOSS_MAEXXNA:
+ if (state == DONE)
+ {
+ if (GameObject* teleporter = GetGameObject(DATA_NAXX_PORTAL_ARACHNID))
+ teleporter->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
+
+ events.ScheduleEvent(EVENT_KELTHUZAD_WING_TAUNT, 6000);
+ }
+ break;
case BOSS_LOATHEB:
+ if (state == DONE)
+ {
+ if (GameObject* teleporter = GetGameObject(DATA_NAXX_PORTAL_PLAGUE))
+ teleporter->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
+
+ events.ScheduleEvent(EVENT_KELTHUZAD_WING_TAUNT, 6000);
+ }
+ break;
case BOSS_THADDIUS:
if (state == DONE)
+ {
+ if (GameObject* teleporter = GetGameObject(DATA_NAXX_PORTAL_CONSTRUCT))
+ teleporter->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
+
events.ScheduleEvent(EVENT_KELTHUZAD_WING_TAUNT, 6000);
+ }
break;
case BOSS_GOTHIK:
if (state == DONE)
@@ -375,6 +422,10 @@ class instance_naxxramas : public InstanceMapScript
horsemenChest->SetRespawnTime(horsemenChest->GetRespawnDelay());
horsemenChest->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
}
+
+ if (GameObject* teleporter = GetGameObject(DATA_NAXX_PORTAL_MILITARY))
+ teleporter->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
+
events.ScheduleEvent(EVENT_KELTHUZAD_WING_TAUNT, 6000);
}
break;
diff --git a/src/server/scripts/Northrend/Naxxramas/naxxramas.h b/src/server/scripts/Northrend/Naxxramas/naxxramas.h
index eb77980f3ba..0f710a66bbe 100644
--- a/src/server/scripts/Northrend/Naxxramas/naxxramas.h
+++ b/src/server/scripts/Northrend/Naxxramas/naxxramas.h
@@ -52,6 +52,11 @@ enum Data
DATA_HORSEMEN2,
DATA_HORSEMEN3,
DATA_ABOMINATION_KILLED,
+
+ DATA_NAXX_PORTAL_ARACHNID,
+ DATA_NAXX_PORTAL_CONSTRUCT,
+ DATA_NAXX_PORTAL_PLAGUE,
+ DATA_NAXX_PORTAL_MILITARY
};
enum Data64
@@ -137,7 +142,13 @@ enum GameObjectsIds
GO_CONS_EYE_RAMP_BOSS = 181232,
GO_CONS_NOX_TESLA_FEUGEN = 181477,
GO_CONS_NOX_TESLA_STALAGG = 181478,
- GO_BIRTH = 181356
+ GO_BIRTH = 181356,
+
+ // Teleporting pads spawned by the end of every quarter.
+ GO_NAXX_PORTAL_ARACHNID = 181575,
+ GO_NAXX_PORTAL_CONSTRUCT = 181576,
+ GO_NAXX_PORTAL_PLAGUE = 181577,
+ GO_NAXX_PORTAL_MILITARY = 181578
};
enum SpellIds