Scripts/Misc: added instance scripts and base definitions for all Cataclysm 4.0 raids

This commit is contained in:
Ovahlord
2023-12-22 07:09:42 +01:00
parent dc881c94e1
commit 16b7c3cca9
9 changed files with 413 additions and 0 deletions

View File

@@ -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');

View File

@@ -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__

View File

@@ -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();
}

View File

@@ -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__

View File

@@ -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();
}

View File

@@ -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();

View File

@@ -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();
}

View File

@@ -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__

View File

@@ -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();