aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJinnaix <37972361+Jinnaix@users.noreply.github.com>2020-03-20 14:51:43 +0100
committerShauren <shauren.trinity@gmail.com>2021-12-24 00:58:04 +0100
commit340a107f6babc66109054bf7151514e9b03fc80d (patch)
tree666d9f6df66ae2e613337800abae6f2afe79a001 /src
parent4e0da6f7d12bdbf9a333901f58903757d236c59f (diff)
Scripts/Blackwing Lair - Doors correction (#24327)
Fix all doors corrected the Chromaggus fight start correctly close final bossfight door at fight and open it on reset or bosskill (cherry picked from commit a8a0f6b261994712e0339be96b8174a8382c51f7)
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/blackwing_lair.h18
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp43
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp35
3 files changed, 79 insertions, 17 deletions
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/blackwing_lair.h b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/blackwing_lair.h
index 8145578f43a..b25d11671e9 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/blackwing_lair.h
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/blackwing_lair.h
@@ -38,7 +38,10 @@ enum BWLEncounter
DATA_NEFARIAN = 7,
// Additional Data
- DATA_LORD_VICTOR_NEFARIUS = 8
+ DATA_LORD_VICTOR_NEFARIUS = 8,
+
+ // Doors
+ DATA_GO_CHROMAGGUS_DOOR = 9
};
enum BWLCreatureIds
@@ -61,11 +64,14 @@ enum BWLCreatureIds
enum BWLGameObjectIds
{
GO_BLACK_DRAGON_EGG = 177807,
- GO_PORTCULLIS = 176965,
- GO_DRAKE_RIDER_PORTCULLIS = 175185,
- GO_ALTERAC_VALLEY_GATE = 180424,
- GO_GATE = 185483,
- GO_VACCUUM_EXIT_GATE = 181125
+ GO_PORTCULLIS_RAZORGORE = 176965,
+ GO_PORTCULLIS_VAELASTRASZ = 179364,
+ GO_PORTCULLIS_BROODLORD = 179365,
+ GO_PORTCULLIS_THREEDRAGONS = 179115,
+ GO_PORTCULLIS_CHROMAGGUS = 179117, //Door after you kill him, not the one for his room
+ GO_CHROMAGGUS_LEVER = 179148,
+ GO_CHROMAGGUS_DOOR = 179116,
+ GO_PORTCULLIS_NEFARIAN = 176966
};
enum BWLEvents
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp
index be980775316..e3de1f2b904 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp
@@ -17,7 +17,11 @@
#include "ScriptMgr.h"
#include "blackwing_lair.h"
+#include "InstanceScript.h"
+#include "GameObject.h"
+#include "GameObjectAI.h"
#include "Map.h"
+#include "ObjectAccessor.h"
#include "Player.h"
#include "ScriptedCreature.h"
@@ -294,7 +298,46 @@ public:
}
};
+class go_chromaggus_lever : public GameObjectScript
+{
+ public:
+ go_chromaggus_lever() : GameObjectScript("go_chromaggus_lever") { }
+
+ struct go_chromaggus_leverAI : public GameObjectAI
+ {
+ go_chromaggus_leverAI(GameObject* go) : GameObjectAI(go), _instance(go->GetInstanceScript()) { }
+
+ bool GossipHello(Player* player) override
+ {
+ if (_instance->GetBossState(DATA_CHROMAGGUS) != DONE && _instance->GetBossState(DATA_CHROMAGGUS) != IN_PROGRESS)
+ {
+ _instance->SetBossState(DATA_CHROMAGGUS, IN_PROGRESS);
+
+ if (Creature* creature = _instance->GetCreature(DATA_CHROMAGGUS))
+ creature->AI()->JustEngagedWith(player);
+
+ if (GameObject* go = _instance->GetGameObject(DATA_GO_CHROMAGGUS_DOOR))
+ _instance->HandleGameObject(ObjectGuid::Empty, true, go);
+ }
+
+ me->AddFlag(GameObjectFlags(GO_FLAG_NOT_SELECTABLE | GO_FLAG_IN_USE));
+ me->SetGoState(GO_STATE_ACTIVE);
+
+ return true;
+ }
+
+ private:
+ InstanceScript* _instance;
+ };
+
+ GameObjectAI* GetAI(GameObject* go) const override
+ {
+ return GetBlackwingLairAI<go_chromaggus_leverAI>(go);
+ }
+};
+
void AddSC_boss_chromaggus()
{
new boss_chromaggus();
+ new go_chromaggus_lever();
}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp
index 592adc1d322..d4303b7e28c 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp
@@ -27,14 +27,15 @@
DoorData const doorData[] =
{
- { GO_PORTCULLIS, DATA_RAZORGORE_THE_UNTAMED, DOOR_TYPE_PASSAGE },
- { GO_DRAKE_RIDER_PORTCULLIS, DATA_VAELASTRAZ_THE_CORRUPT, DOOR_TYPE_PASSAGE },
- { GO_ALTERAC_VALLEY_GATE, DATA_BROODLORD_LASHLAYER, DOOR_TYPE_PASSAGE },
- { GO_GATE, DATA_FIREMAW, DOOR_TYPE_PASSAGE },
- { GO_GATE, DATA_EBONROC, DOOR_TYPE_PASSAGE },
- { GO_GATE, DATA_FLAMEGOR, DOOR_TYPE_PASSAGE },
- { GO_VACCUUM_EXIT_GATE, DATA_CHROMAGGUS, DOOR_TYPE_PASSAGE },
- { 0, 0, DOOR_TYPE_ROOM } // END
+ { GO_PORTCULLIS_RAZORGORE, DATA_RAZORGORE_THE_UNTAMED, DOOR_TYPE_PASSAGE },
+ { GO_PORTCULLIS_VAELASTRASZ, DATA_VAELASTRAZ_THE_CORRUPT, DOOR_TYPE_PASSAGE },
+ { GO_PORTCULLIS_BROODLORD, DATA_BROODLORD_LASHLAYER, DOOR_TYPE_PASSAGE },
+ { GO_PORTCULLIS_THREEDRAGONS, DATA_FIREMAW, DOOR_TYPE_PASSAGE },
+ { GO_PORTCULLIS_THREEDRAGONS, DATA_EBONROC, DOOR_TYPE_PASSAGE },
+ { GO_PORTCULLIS_THREEDRAGONS, DATA_FLAMEGOR, DOOR_TYPE_PASSAGE },
+ { GO_PORTCULLIS_CHROMAGGUS, DATA_CHROMAGGUS, DOOR_TYPE_PASSAGE },
+ { GO_PORTCULLIS_NEFARIAN, DATA_NEFARIAN, DOOR_TYPE_ROOM },
+ { 0, 0, DOOR_TYPE_ROOM } // END
};
ObjectData const creatureData[] =
@@ -51,6 +52,12 @@ ObjectData const creatureData[] =
{ 0, 0 } // END
};
+ObjectData const gameObjectData[] =
+{
+ { GO_CHROMAGGUS_DOOR, DATA_GO_CHROMAGGUS_DOOR },
+ { 0, 0 } //END
+};
+
Position const SummonPosition[8] =
{
{-7661.207520f, -1043.268188f, 407.199554f, 6.280452f},
@@ -77,7 +84,7 @@ public:
SetHeaders(DataHeader);
SetBossNumber(EncounterCount);
LoadDoorData(doorData);
- LoadObjectData(creatureData, nullptr);
+ LoadObjectData(creatureData, gameObjectData);
// Razorgore
EggCount = 0;
@@ -113,8 +120,14 @@ public:
{
InstanceScript::OnGameObjectCreate(go);
- if (go->GetEntry() == GO_BLACK_DRAGON_EGG)
- EggList.push_back(go->GetGUID());
+ switch(go->GetEntry())
+ {
+ case GO_BLACK_DRAGON_EGG:
+ EggList.push_back(go->GetGUID());
+ break;
+ default:
+ break;
+ }
}
void OnGameObjectRemove(GameObject* go) override