aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2023_12_22_00_world.sql5
-rw-r--r--src/server/scripts/EasternKingdoms/BastionOfTwlight/bastion_of_twilight.h73
-rw-r--r--src/server/scripts/EasternKingdoms/BastionOfTwlight/instance_bastion_of_twilight.cpp77
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingDescent/blackwing_descent.h63
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingDescent/instance_blackwing_descent.cpp76
-rw-r--r--src/server/scripts/EasternKingdoms/eastern_kingdoms_script_loader.cpp4
-rw-r--r--src/server/scripts/Kalimdor/ThroneOfTheFourWinds/instance_throne_of_the_four_winds.cpp59
-rw-r--r--src/server/scripts/Kalimdor/ThroneOfTheFourWinds/throne_of_the_four_winds.h52
-rw-r--r--src/server/scripts/Kalimdor/kalimdor_script_loader.cpp4
9 files changed, 413 insertions, 0 deletions
diff --git a/sql/updates/world/master/2023_12_22_00_world.sql b/sql/updates/world/master/2023_12_22_00_world.sql
new file mode 100644
index 00000000000..de8d0bc44d6
--- /dev/null
+++ b/sql/updates/world/master/2023_12_22_00_world.sql
@@ -0,0 +1,5 @@
+DELETE FROM `instance_template` WHERE `map` IN (669, 671, 754);
+INSERT INTO `instance_template` (`map`, `parent`, `script`) VALUES
+(669, 0, 'instance_blackwing_descent'),
+(671, 0, 'instance_bastion_of_twilight'),
+(754, 1, 'instance_throne_of_the_four_winds');
diff --git a/src/server/scripts/EasternKingdoms/BastionOfTwlight/bastion_of_twilight.h b/src/server/scripts/EasternKingdoms/BastionOfTwlight/bastion_of_twilight.h
new file mode 100644
index 00000000000..857f965b53f
--- /dev/null
+++ b/src/server/scripts/EasternKingdoms/BastionOfTwlight/bastion_of_twilight.h
@@ -0,0 +1,73 @@
+/*
+ * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef _Bastion_of_Twilight_h__
+#define _Bastion_of_Twilight_h__
+
+#include "CreatureAIImpl.h"
+
+constexpr char const* DataHeader = "BOT";
+constexpr char const* BotScriptName = "instance_bastion_of_twilight";
+
+constexpr uint32 const EncounterCount = 5;
+
+enum BotDataTypes
+{
+ // Encounters
+ BOSS_HALFUS_WYRMBREAKER = 0,
+ BOSS_THERALION_AND_VALIONA = 1,
+ BOSS_ASCENDANT_COUNCIL = 2,
+ BOSS_CHOGALL = 3,
+ BOSS_SINESTRA = 4
+};
+
+enum BotCreatureIds
+{
+ // Bosses
+ NPC_HALFUS_WYRMBREAKER = 44600,
+ NPC_THERALION = 45993,
+ NPC_VALIONA = 45992,
+ NPC_IGNACIOUS = 43686,
+ NPC_FELUDIUS = 43687,
+ NPC_TERRASTRA = 43689,
+ NPC_ARION = 43688,
+ NPC_ELEMENTIUM_MONSTROSITY = 43735,
+ NPC_CHOGALL = 43324,
+ NPC_SINESTRA = 45213
+};
+
+enum BotGameObjectIds
+{
+ GO_HALFUS_ENTRANCE = 205222,
+ GO_HALFUS_EXIT = 205223,
+ GO_DRAGON_SIBLINGS_DOOR_ENTRANCE = 205224,
+ GO_DRAGON_SIBLINGS_DOOR_EXIT = 205225,
+ GO_ASCENDANT_COUNCIL_ENTRANCE = 205226,
+ GO_ASCENDANT_COUNCIL_EXIT = 205227,
+ GO_CHOGALL_ENTRANCE = 205228,
+ GO_GRIM_BATOL_RAID_TRAP_DOOR = 205898
+};
+
+template <class AI, class T>
+inline AI* GetBastionOfTwilightAI(T* obj)
+{
+ return GetInstanceAI<AI>(obj, BotScriptName);
+}
+
+#define RegisterBastionOfTwilightCreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetBastionOfTwilightAI)
+
+#endif // _Bastion_of_Twilight_h__
diff --git a/src/server/scripts/EasternKingdoms/BastionOfTwlight/instance_bastion_of_twilight.cpp b/src/server/scripts/EasternKingdoms/BastionOfTwlight/instance_bastion_of_twilight.cpp
new file mode 100644
index 00000000000..cb562424849
--- /dev/null
+++ b/src/server/scripts/EasternKingdoms/BastionOfTwlight/instance_bastion_of_twilight.cpp
@@ -0,0 +1,77 @@
+/*
+ * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "ScriptMgr.h"
+#include "bastion_of_twilight.h"
+#include "InstanceScript.h"
+
+ObjectData const creatureData[] =
+{
+ { NPC_HALFUS_WYRMBREAKER, BOSS_HALFUS_WYRMBREAKER },
+ { NPC_CHOGALL, BOSS_CHOGALL },
+ { NPC_SINESTRA, BOSS_SINESTRA },
+ { 0, 0 } // END
+};
+
+DoorData const doorData[] =
+{
+ { GO_HALFUS_ENTRANCE, BOSS_HALFUS_WYRMBREAKER, EncounterDoorBehavior::OpenWhenNotInProgress },
+ { GO_HALFUS_EXIT, BOSS_HALFUS_WYRMBREAKER, EncounterDoorBehavior::OpenWhenDone },
+ { GO_DRAGON_SIBLINGS_DOOR_ENTRANCE, BOSS_THERALION_AND_VALIONA, EncounterDoorBehavior::OpenWhenNotInProgress },
+ { GO_DRAGON_SIBLINGS_DOOR_EXIT, BOSS_THERALION_AND_VALIONA, EncounterDoorBehavior::OpenWhenDone },
+ { GO_ASCENDANT_COUNCIL_ENTRANCE, BOSS_ASCENDANT_COUNCIL, EncounterDoorBehavior::OpenWhenNotInProgress },
+ { GO_ASCENDANT_COUNCIL_EXIT, BOSS_ASCENDANT_COUNCIL, EncounterDoorBehavior::OpenWhenDone },
+ { GO_CHOGALL_ENTRANCE, BOSS_CHOGALL, EncounterDoorBehavior::OpenWhenNotInProgress },
+ { 0, 0, EncounterDoorBehavior::OpenWhenNotInProgress } // END
+};
+
+DungeonEncounterData const encounters[] =
+{
+ { BOSS_HALFUS_WYRMBREAKER, {{ 1030 }} },
+ { BOSS_THERALION_AND_VALIONA, {{ 1032 }} },
+ { BOSS_ASCENDANT_COUNCIL, {{ 1028 }} },
+ { BOSS_CHOGALL, {{ 1029 }} },
+ { BOSS_SINESTRA, {{ 0, 0, 1082, 1083 }} }
+};
+
+class instance_bastion_of_twilight : public InstanceMapScript
+{
+public:
+ instance_bastion_of_twilight() : InstanceMapScript(BotScriptName, 671) { }
+
+ struct instance_bastion_of_twilight_InstanceMapScript : public InstanceScript
+ {
+ instance_bastion_of_twilight_InstanceMapScript(InstanceMap* map) : InstanceScript(map)
+ {
+ SetHeaders(DataHeader);
+ SetBossNumber(EncounterCount);
+ LoadObjectData(creatureData, nullptr);
+ LoadDoorData(doorData);
+ LoadDungeonEncounterData(encounters);
+ }
+ };
+
+ InstanceScript* GetInstanceScript(InstanceMap* map) const override
+ {
+ return new instance_bastion_of_twilight_InstanceMapScript(map);
+ }
+};
+
+void AddSC_instance_bastion_of_twilight()
+{
+ new instance_bastion_of_twilight();
+}
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingDescent/blackwing_descent.h b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingDescent/blackwing_descent.h
new file mode 100644
index 00000000000..aae94987db8
--- /dev/null
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingDescent/blackwing_descent.h
@@ -0,0 +1,63 @@
+/*
+ * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef _Blackwing_Descent_h__
+#define _Blackwing_Descent_h__
+
+#include "CreatureAIImpl.h"
+
+constexpr char const* DataHeader = "BWD";
+constexpr char const* BWDScriptName = "instance_blackwing_descent";
+
+constexpr uint32 const EncounterCount = 6;
+
+enum BwdDataTypes
+{
+ // Encounters
+ BOSS_MAGMAW = 0,
+ BOSS_OMNOTRON_DEFENSE_SYSTEM = 1,
+ BOSS_CHIMAERON = 2,
+ BOSS_ATRAMEDES = 3,
+ BOSS_MALORIAK = 4,
+ BOSS_NEFARIANS_END = 5
+};
+
+enum BWDCreatureIds
+{
+ // Bosses
+ NPC_MAGMAW = 41570,
+ NPC_CHIMAERON = 43296,
+ NPC_ATRAMEDES = 41442,
+ NPC_MALORIAK = 41378,
+ NPC_NEFARIAN = 41376
+};
+
+enum BWDGameObjectIds
+{
+ GO_INNER_CHAMBER_DOOR = 205830,
+ GO_ATHENAEUM_DOOR = 208291
+};
+
+template <class AI, class T>
+inline AI* GetBlackwingDescentAI(T* obj)
+{
+ return GetInstanceAI<AI>(obj, BWDScriptName);
+}
+
+#define RegisterBlackwingDescentCreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetBlackwingDescentAI)
+
+#endif // _Blackwing_Descent_h__
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingDescent/instance_blackwing_descent.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingDescent/instance_blackwing_descent.cpp
new file mode 100644
index 00000000000..9c4e009a56b
--- /dev/null
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingDescent/instance_blackwing_descent.cpp
@@ -0,0 +1,76 @@
+/*
+ * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "ScriptMgr.h"
+#include "blackwing_descent.h"
+#include "InstanceScript.h"
+
+ObjectData const creatureData[] =
+{
+ { NPC_MAGMAW, BOSS_MAGMAW },
+ { NPC_CHIMAERON, BOSS_CHIMAERON },
+ { NPC_ATRAMEDES, BOSS_ATRAMEDES },
+ { NPC_MALORIAK, BOSS_MAGMAW },
+ { NPC_NEFARIAN, BOSS_NEFARIANS_END },
+ { 0, 0 } // END
+};
+
+DoorData const doorData[] =
+{
+ { GO_INNER_CHAMBER_DOOR, BOSS_MAGMAW, EncounterDoorBehavior::OpenWhenDone },
+ { GO_INNER_CHAMBER_DOOR, BOSS_OMNOTRON_DEFENSE_SYSTEM, EncounterDoorBehavior::OpenWhenDone },
+ { GO_ATHENAEUM_DOOR, BOSS_ATRAMEDES, EncounterDoorBehavior::OpenWhenInProgress },
+ { 0, 0, EncounterDoorBehavior::OpenWhenNotInProgress } // END
+};
+
+DungeonEncounterData const encounters[] =
+{
+ { BOSS_MAGMAW, {{ 1024 }} },
+ { BOSS_OMNOTRON_DEFENSE_SYSTEM, {{ 1027 }} },
+ { BOSS_CHIMAERON, {{ 1023 }} },
+ { BOSS_ATRAMEDES, {{ 1022 }} },
+ { BOSS_MALORIAK, {{ 1025 }} },
+ { BOSS_NEFARIANS_END, {{ 1026 }} }
+};
+
+class instance_blackwing_descent : public InstanceMapScript
+{
+public:
+ instance_blackwing_descent() : InstanceMapScript(BWDScriptName, 669) { }
+
+ struct instance_blackwing_descent_InstanceMapScript : public InstanceScript
+ {
+ instance_blackwing_descent_InstanceMapScript(InstanceMap* map) : InstanceScript(map)
+ {
+ SetHeaders(DataHeader);
+ SetBossNumber(EncounterCount);
+ LoadObjectData(creatureData, nullptr);
+ LoadDoorData(doorData);
+ LoadDungeonEncounterData(encounters);
+ }
+ };
+
+ InstanceScript* GetInstanceScript(InstanceMap* map) const override
+ {
+ return new instance_blackwing_descent_InstanceMapScript(map);
+ }
+};
+
+void AddSC_instance_blackwing_descent()
+{
+ new instance_blackwing_descent();
+}
diff --git a/src/server/scripts/EasternKingdoms/eastern_kingdoms_script_loader.cpp b/src/server/scripts/EasternKingdoms/eastern_kingdoms_script_loader.cpp
index 128880dd0f8..2bfac4ef094 100644
--- a/src/server/scripts/EasternKingdoms/eastern_kingdoms_script_loader.cpp
+++ b/src/server/scripts/EasternKingdoms/eastern_kingdoms_script_loader.cpp
@@ -26,6 +26,7 @@ void AddSC_boss_alizabal(); //Baradin Hold
void AddSC_boss_occuthar();
void AddSC_boss_pit_lord_argaloth();
void AddSC_instance_baradin_hold();
+void AddSC_instance_bastion_of_twilight(); //Bastion of Twilight
void AddSC_boss_romogg_bonecrusher(); //Blackrock Caverns
void AddSC_boss_corla();
void AddSC_boss_karsh_steelbender();
@@ -59,6 +60,7 @@ void AddSC_boss_gizrul_the_slavener();
void AddSC_boss_urok_doomhowl();
void AddSC_boss_lord_valthalak();
void AddSC_instance_blackrock_spire();
+void AddSC_instance_blackwing_descent(); //Blackwing Descent
void AddSC_boss_razorgore(); //Blackwing lair
void AddSC_boss_vaelastrasz();
void AddSC_boss_broodlord();
@@ -219,6 +221,7 @@ void AddEasternKingdomsScripts()
AddSC_boss_occuthar();
AddSC_boss_pit_lord_argaloth();
AddSC_instance_baradin_hold();
+ AddSC_instance_bastion_of_twilight(); //Bastion of Twilight
AddSC_boss_romogg_bonecrusher(); //Blackrock Caverns
AddSC_boss_corla();
AddSC_boss_karsh_steelbender();
@@ -252,6 +255,7 @@ void AddEasternKingdomsScripts()
AddSC_boss_urok_doomhowl();
AddSC_boss_lord_valthalak();
AddSC_instance_blackrock_spire();
+ AddSC_instance_blackwing_descent(); //Blackwing Descent
AddSC_boss_razorgore(); //Blackwing lair
AddSC_boss_vaelastrasz();
AddSC_boss_broodlord();
diff --git a/src/server/scripts/Kalimdor/ThroneOfTheFourWinds/instance_throne_of_the_four_winds.cpp b/src/server/scripts/Kalimdor/ThroneOfTheFourWinds/instance_throne_of_the_four_winds.cpp
new file mode 100644
index 00000000000..01b5a8afc71
--- /dev/null
+++ b/src/server/scripts/Kalimdor/ThroneOfTheFourWinds/instance_throne_of_the_four_winds.cpp
@@ -0,0 +1,59 @@
+/*
+ * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "ScriptMgr.h"
+#include "throne_of_the_four_winds.h"
+#include "InstanceScript.h"
+
+ObjectData const creatureData[] =
+{
+ { NPC_ALAKIR, BOSS_ALAKIR },
+ { 0, 0 } // END
+};
+
+DungeonEncounterData const encounters[] =
+{
+ { BOSS_CONCLAVE_OF_WIND, {{ 1035 }} },
+ { BOSS_ALAKIR, {{ 1034 }} }
+};
+
+class instance_throne_of_the_four_winds : public InstanceMapScript
+{
+public:
+ instance_throne_of_the_four_winds() : InstanceMapScript(TotFWScriptName, 754) { }
+
+ struct instance_throne_of_the_four_winds_InstanceMapScript : public InstanceScript
+ {
+ instance_throne_of_the_four_winds_InstanceMapScript(InstanceMap* map) : InstanceScript(map)
+ {
+ SetHeaders(DataHeader);
+ SetBossNumber(EncounterCount);
+ LoadObjectData(creatureData, nullptr);
+ LoadDungeonEncounterData(encounters);
+ }
+ };
+
+ InstanceScript* GetInstanceScript(InstanceMap* map) const override
+ {
+ return new instance_throne_of_the_four_winds_InstanceMapScript(map);
+ }
+};
+
+void AddSC_instance_throne_of_the_four_winds()
+{
+ new instance_throne_of_the_four_winds();
+}
diff --git a/src/server/scripts/Kalimdor/ThroneOfTheFourWinds/throne_of_the_four_winds.h b/src/server/scripts/Kalimdor/ThroneOfTheFourWinds/throne_of_the_four_winds.h
new file mode 100644
index 00000000000..990082f42b0
--- /dev/null
+++ b/src/server/scripts/Kalimdor/ThroneOfTheFourWinds/throne_of_the_four_winds.h
@@ -0,0 +1,52 @@
+/*
+ * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef _Throne_of_the_Four_Winds_h__
+#define _Throne_of_the_Four_Winds_h__
+
+#include "CreatureAIImpl.h"
+
+constexpr char const* DataHeader = "TFW";
+constexpr char const* TotFWScriptName = "instance_throne_of_the_four_winds";
+
+constexpr uint32 const EncounterCount = 2;
+
+enum TotFWDataTypes
+{
+ // Encounters
+ BOSS_CONCLAVE_OF_WIND = 0,
+ BOSS_ALAKIR = 1
+};
+
+enum TotFWCreatureIds
+{
+ // Bosses
+ NPC_ANSHAL = 45870,
+ NPC_NEZIR = 45871,
+ NPC_ROHASH = 45872,
+ NPC_ALAKIR = 46753
+};
+
+template <class AI, class T>
+inline AI* GetThroneOfTheFourWindsAI(T* obj)
+{
+ return GetInstanceAI<AI>(obj, TotFWScriptName);
+}
+
+#define RegisterThroneOfTheFourWindsCreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetThroneOfTheFourWindsAI)
+
+#endif // _Throne_of_the_Four_Winds_h__
diff --git a/src/server/scripts/Kalimdor/kalimdor_script_loader.cpp b/src/server/scripts/Kalimdor/kalimdor_script_loader.cpp
index 277348eefc8..990c2b3b51b 100644
--- a/src/server/scripts/Kalimdor/kalimdor_script_loader.cpp
+++ b/src/server/scripts/Kalimdor/kalimdor_script_loader.cpp
@@ -95,6 +95,8 @@ void AddSC_boss_twinemperors();
void AddSC_boss_ouro();
void AddSC_npc_anubisath_sentinel();
void AddSC_instance_temple_of_ahnqiraj();
+// Throne of the Four Winds
+void AddSC_instance_throne_of_the_four_winds();
// The Lost City of the Tol'vir
void AddSC_boss_general_husam();
void AddSC_boss_lockmaw();
@@ -220,6 +222,8 @@ void AddKalimdorScripts()
AddSC_boss_ouro();
AddSC_npc_anubisath_sentinel();
AddSC_instance_temple_of_ahnqiraj();
+ // Throne of the Four Winds
+ AddSC_instance_throne_of_the_four_winds();
// The Lost City of the Tol'vir
AddSC_boss_general_husam();
AddSC_boss_lockmaw();