diff options
5 files changed, 104 insertions, 14 deletions
diff --git a/sql/updates/world/master/2023_12_25_01_world.sql b/sql/updates/world/master/2023_12_25_01_world.sql new file mode 100644 index 00000000000..eca31aa4a55 --- /dev/null +++ b/sql/updates/world/master/2023_12_25_01_world.sql @@ -0,0 +1,10 @@ +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=12646 AND SourceId = 0; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`, `NegativeCondition`, `ScriptName`,`Comment`) VALUES +(15, 12646, 1, 0, 0, 13, 0, 1, 3, 2, 0, 0, "", "Show gossip if Anraphet or Earthrager Ptah have been defeated"), +(15, 12646, 1, 0, 1, 13, 0, 2, 3, 2, 0, 0, "", "Show gossip if Anraphet or Earthrager Ptah have been defeated"), +(15, 12646, 2, 0, 0, 13, 0, 3, 3, 2, 0, 0, "", "Show gossip if the Constructs of the Four Seats have been defeated"), +(15, 12646, 2, 0, 0, 13, 0, 4, 3, 2, 0, 0, "", "Show gossip if the Constructs of the Four Seats have been defeated"), +(15, 12646, 2, 0, 0, 13, 0, 5, 3, 2, 0, 0, "", "Show gossip if the Constructs of the Four Seats have been defeated"), +(15, 12646, 2, 0, 0, 13, 0, 6, 3, 2, 0, 0, "", "Show gossip if the Constructs of the Four Seats have been defeated"); + +UPDATE `gameobject_template` SET `ScriptName`= 'go_hoo_the_makers_lift_controller' WHERE `entry`= 207669; diff --git a/src/server/scripts/Kalimdor/HallsOfOrigination/halls_of_origination.cpp b/src/server/scripts/Kalimdor/HallsOfOrigination/halls_of_origination.cpp new file mode 100644 index 00000000000..2d7fb010a88 --- /dev/null +++ b/src/server/scripts/Kalimdor/HallsOfOrigination/halls_of_origination.cpp @@ -0,0 +1,53 @@ +/* + * 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 "halls_of_origination.h" +#include "GameObject.h" +#include "GameObjectAI.h" +#include "InstanceScript.h" +#include "Player.h" +#include "ScriptedGossip.h" +#include "ScriptMgr.h" + + // 207669 - The Maker's Lift Controller +struct go_hoo_the_makers_lift_controller : public GameObjectAI +{ + go_hoo_the_makers_lift_controller(GameObject* go) : GameObjectAI(go), _instance(nullptr) { } + + void InitializeAI() override + { + _instance = me->GetInstanceScript(); + } + + bool OnGossipSelect(Player* player, uint32 /*menuId*/, uint32 gossipListId) override + { + ClearGossipMenuFor(player); + player->PlayerTalkClass->SendCloseGossip(); + + if (GameObject* elevator = _instance->GetGameObject(DATA_LIFT_OF_THE_MAKERS)) + elevator->SetGoState(GOState(GO_STATE_TRANSPORT_ACTIVE + gossipListId)); + + return false; + } +private: + InstanceScript* _instance; +}; + +void AddSC_halls_of_origination() +{ + RegisterHallsOfOriginationGameObjectAI(go_hoo_the_makers_lift_controller); +} diff --git a/src/server/scripts/Kalimdor/HallsOfOrigination/halls_of_origination.h b/src/server/scripts/Kalimdor/HallsOfOrigination/halls_of_origination.h index 64d6a95dbbf..ac16cfddd65 100644 --- a/src/server/scripts/Kalimdor/HallsOfOrigination/halls_of_origination.h +++ b/src/server/scripts/Kalimdor/HallsOfOrigination/halls_of_origination.h @@ -27,20 +27,22 @@ constexpr uint32 const EncounterCount = 12; enum HOOData { - // Bosses + // Encounters BOSS_TEMPLE_GUARDIAN_ANHUUR, BOSS_EARTHRAGER_PTAH, - BOSS_VAULT_OF_LIGHTS, - BOSS_FIRE_WARDEN, - BOSS_EARTH_WARDEN, - BOSS_WATER_WARDEN, - BOSS_AIR_WARDEN, BOSS_ANRAPHET, BOSS_ISISET, BOSS_AMMUNAE, BOSS_SETESH, BOSS_RAJH, + // Event Boss States + BOSS_VAULT_OF_LIGHTS, + BOSS_FIRE_WARDEN, + BOSS_EARTH_WARDEN, + BOSS_WATER_WARDEN, + BOSS_AIR_WARDEN, + // Temple Guardian Anhuur DATA_ANHUUR_GUID, DATA_ANHUUR_LEFT_BEACON, @@ -52,6 +54,9 @@ enum HOOData DATA_BRANN_0_GUID, DATA_DEAD_ELEMENTALS, DATA_ANRAPHET_GUID, + + // Events + DATA_LIFT_OF_THE_MAKERS }; enum HOOCreatures @@ -99,6 +104,8 @@ enum HOOGameObjects GO_DOODAD_ULDUM_LASERBEAMS_01 = 207663, // Matches GO_DOODAD_ULDUM_LIGHTMACHINE_01 GO_DOODAD_ULDUM_LASERBEAMS_02 = 207664, // Matches GO_DOODAD_ULDUM_LIGHTMACHINE_04 GO_DOODAD_ULDUM_LASERBEAMS_03 = 207665, // Matches GO_DOODAD_ULDUM_LIGHTMACHINE_03 + + GO_LIFT_OF_THE_MAKERS = 207547 }; enum HOOMisc @@ -116,12 +123,13 @@ enum HOOGlobalActions ACTION_OMEGA_TRIGGER, }; -template<typename AI> -inline AI* GetHallsOfOriginationAI(Creature* creature) +template <class AI, class T> +inline AI* GetHallsOfOriginationAI(T* obj) { - return GetInstanceAI<AI>(creature, HoOScriptName); + return GetInstanceAI<AI>(obj, HoOScriptName); } #define RegisterHallsOfOriginationCreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetHallsOfOriginationAI) +#define RegisterHallsOfOriginationGameObjectAI(ai_name) RegisterGameObjectAIWithFactory(ai_name, GetHallsOfOriginationAI) #endif // HALLS_OF_ORIGINATION_H diff --git a/src/server/scripts/Kalimdor/HallsOfOrigination/instance_halls_of_origination.cpp b/src/server/scripts/Kalimdor/HallsOfOrigination/instance_halls_of_origination.cpp index 838c0e53556..34a14defa54 100644 --- a/src/server/scripts/Kalimdor/HallsOfOrigination/instance_halls_of_origination.cpp +++ b/src/server/scripts/Kalimdor/HallsOfOrigination/instance_halls_of_origination.cpp @@ -40,6 +40,12 @@ DoorData const doorData[] = { 0, 0, EncounterDoorBehavior::OpenWhenNotInProgress } }; +ObjectData const gameObjectData[] = +{ + { GO_LIFT_OF_THE_MAKERS, DATA_LIFT_OF_THE_MAKERS }, + { 0, 0 } //END +}; + DungeonEncounterData const encounters[] = { { BOSS_TEMPLE_GUARDIAN_ANHUUR, {{ 1080 }} }, @@ -62,6 +68,7 @@ class instance_halls_of_origination : public InstanceMapScript { SetHeaders(DataHeader); SetBossNumber(EncounterCount); + LoadObjectData(nullptr, gameObjectData); LoadDoorData(doorData); LoadDungeonEncounterData(encounters); _deadElementals = 0; @@ -69,6 +76,8 @@ class instance_halls_of_origination : public InstanceMapScript void OnGameObjectCreate(GameObject* go) override { + InstanceScript::OnGameObjectCreate(go); + switch (go->GetEntry()) { case GO_ANHUURS_BRIDGE: @@ -107,6 +116,8 @@ class instance_halls_of_origination : public InstanceMapScript void OnGameObjectRemove(GameObject* go) override { + InstanceScript::OnGameObjectRemove(go); + switch (go->GetEntry()) { case GO_ANHUURS_BRIDGE: @@ -128,6 +139,8 @@ class instance_halls_of_origination : public InstanceMapScript void OnCreatureCreate(Creature* creature) override { + InstanceScript::OnCreatureCreate(creature); + switch (creature->GetEntry()) { case BOSS_TEMPLE_GUARDIAN_ANHUUR: @@ -155,9 +168,9 @@ class instance_halls_of_origination : public InstanceMapScript return 0; } - ObjectGuid GetGuidData(uint32 index) const override + ObjectGuid GetGuidData(uint32 type) const override { - switch (index) + switch (type) { case DATA_ANHUUR_BRIDGE: return AnhuursBridgeGUID; @@ -175,7 +188,7 @@ class instance_halls_of_origination : public InstanceMapScript return AnraphetGUID; } - return ObjectGuid::Empty; + return InstanceScript::GetGuidData(type); } void IncreaseDeadElementals(uint32 inc) @@ -192,6 +205,8 @@ class instance_halls_of_origination : public InstanceMapScript void OnUnitDeath(Unit* unit) override { + InstanceScript::OnUnitDeath(unit); + Creature* creature = unit->ToCreature(); if (!creature) return; diff --git a/src/server/scripts/Kalimdor/kalimdor_script_loader.cpp b/src/server/scripts/Kalimdor/kalimdor_script_loader.cpp index 6a61f5ed0cf..2d16e487f86 100644 --- a/src/server/scripts/Kalimdor/kalimdor_script_loader.cpp +++ b/src/server/scripts/Kalimdor/kalimdor_script_loader.cpp @@ -119,10 +119,13 @@ void AddSC_instance_wailing_caverns(); void AddSC_boss_zum_rah(); void AddSC_zulfarrak(); void AddSC_instance_zulfarrak(); +// Halls of Origination void AddSC_instance_halls_of_origination(); void AddSC_boss_temple_guardian_anhuur(); void AddSC_boss_earthrager_ptah(); void AddSC_boss_anraphet(); +void AddSC_halls_of_origination(); +// Firelands void AddSC_instance_firelands(); void AddSC_firelands(); void AddSC_boss_alysrazor(); @@ -279,12 +282,13 @@ void AddKalimdorScripts() AddSC_thunder_bluff(); // AddSC_ungoro_crater(); AddSC_winterspring(); - + // Halls of Origination AddSC_instance_halls_of_origination(); AddSC_boss_temple_guardian_anhuur(); AddSC_boss_earthrager_ptah(); AddSC_boss_anraphet(); - + AddSC_halls_of_origination(); + // Firelands AddSC_instance_firelands(); AddSC_firelands(); AddSC_boss_alysrazor(); |
