diff options
author | Nyeriah <sarah.trysan@live.com> | 2014-12-26 03:58:42 -0200 |
---|---|---|
committer | Nyeriah <sarah.trysan@live.com> | 2014-12-26 03:58:42 -0200 |
commit | aff5229cd1777581bd85079d064037a57bf17799 (patch) | |
tree | 22193863cb67c840eeb13eec021e5496f6363e07 /src | |
parent | d13036442e82f4fe8140db09707eaa37e2392160 (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.cpp | 55 | ||||
-rw-r--r-- | src/server/scripts/Northrend/Naxxramas/naxxramas.h | 13 |
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 |