aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2023_12_25_01_world.sql10
-rw-r--r--src/server/scripts/Kalimdor/HallsOfOrigination/halls_of_origination.cpp53
-rw-r--r--src/server/scripts/Kalimdor/HallsOfOrigination/halls_of_origination.h26
-rw-r--r--src/server/scripts/Kalimdor/HallsOfOrigination/instance_halls_of_origination.cpp21
-rw-r--r--src/server/scripts/Kalimdor/kalimdor_script_loader.cpp8
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();