diff options
author | Ovahlord <dreadkiller@gmx.de> | 2023-12-22 07:09:42 +0100 |
---|---|---|
committer | Ovahlord <dreadkiller@gmx.de> | 2023-12-22 08:40:11 +0100 |
commit | 16b7c3cca9a17f06f3f78e5a18afe4653983ccac (patch) | |
tree | 68f7c87170a1de752f362db54f29caa156250e35 | |
parent | dc881c94e19874fc7fca56f7f884a3025c6abe4b (diff) |
Scripts/Misc: added instance scripts and base definitions for all Cataclysm 4.0 raids
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(); |