diff --git a/data/sql/updates/pending_db_world/arena-ready-marker.sql b/data/sql/updates/pending_db_world/arena-ready-marker.sql new file mode 100644 index 000000000..bf1cd4405 --- /dev/null +++ b/data/sql/updates/pending_db_world/arena-ready-marker.sql @@ -0,0 +1,3 @@ +DELETE FROM `gameobject_template` WHERE `entry` = 301337; +DELETE FROM `gameobject_template_addon` WHERE `entry` = 301337; +DELETE FROM `gameobject_template_locale` WHERE `entry` = 301337; diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index b10feb7b8..828f1f5fa 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -18,12 +18,7 @@ #include "Battleground.h" #include "ArenaSpectator.h" #include "ArenaTeam.h" -#include "BattlegroundBE.h" -#include "BattlegroundDS.h" #include "BattlegroundMgr.h" -#include "BattlegroundNA.h" -#include "BattlegroundRL.h" -#include "BattlegroundRV.h" #include "Chat.h" #include "ChatTextBuilder.h" #include "Creature.h" @@ -533,6 +528,8 @@ inline void Battleground::_ProcessJoin(uint32 diff) // Mark setup as completed m_SetupCompleted = true; + + sScriptMgr->OnBattlegroundSetup(this); } // First announcement at 120s or 60s (Depending on BG or Arena and configured time) @@ -558,33 +555,6 @@ inline void Battleground::_ProcessJoin(uint32 diff) if (StartMessageIds[BG_STARTING_EVENT_THIRD]) SendBroadcastText(StartMessageIds[BG_STARTING_EVENT_THIRD], CHAT_MSG_BG_SYSTEM_NEUTRAL); - - if (isArena()) - switch (GetBgTypeID()) - { - case BATTLEGROUND_NA: - DelObject(BG_NA_OBJECT_READY_MARKER_1); - DelObject(BG_NA_OBJECT_READY_MARKER_2); - break; - case BATTLEGROUND_BE: - DelObject(BG_BE_OBJECT_READY_MARKER_1); - DelObject(BG_BE_OBJECT_READY_MARKER_2); - break; - case BATTLEGROUND_RL: - DelObject(BG_RL_OBJECT_READY_MARKER_1); - DelObject(BG_RL_OBJECT_READY_MARKER_2); - break; - case BATTLEGROUND_DS: - DelObject(BG_DS_OBJECT_READY_MARKER_1); - DelObject(BG_DS_OBJECT_READY_MARKER_2); - break; - case BATTLEGROUND_RV: - DelObject(BG_RV_OBJECT_READY_MARKER_1); - DelObject(BG_RV_OBJECT_READY_MARKER_2); - break; - default: - break; - } } // Delay expired (after configured prep time) else if (GetStartDelayTime() <= 0 && !(m_Events & BG_STARTING_EVENT_4)) @@ -1380,22 +1350,6 @@ void Battleground::SpectatorsSendPacket(WorldPacket& data) (*itr)->SendDirectMessage(&data); } -void Battleground::ReadyMarkerClicked(Player* p) -{ - if (!isArena() || GetStatus() >= STATUS_IN_PROGRESS || GetStartDelayTime() <= BG_START_DELAY_15S || (m_Events & BG_STARTING_EVENT_3) || p->IsSpectator()) - return; - readyMarkerClickedSet.insert(p->GetGUID()); - uint32 count = readyMarkerClickedSet.size(); - uint32 req = ArenaTeam::GetReqPlayersForType(GetArenaType()); - ChatHandler(p->GetSession()).SendNotification("You are marked as ready {}/{}", count, req); - if (count == req) - { - m_Events |= BG_STARTING_EVENT_2; - m_StartTime += GetStartDelayTime() - BG_START_DELAY_15S; - SetStartDelayTime(BG_START_DELAY_15S); - } -} - void Battleground::BuildPvPLogDataPacket(WorldPacket& data) { uint8 type = (isArena() ? 1 : 0); diff --git a/src/server/game/Battlegrounds/Battleground.h b/src/server/game/Battlegrounds/Battleground.h index 6f9d79e07..34f349af3 100644 --- a/src/server/game/Battlegrounds/Battleground.h +++ b/src/server/game/Battlegrounds/Battleground.h @@ -283,7 +283,6 @@ enum BGHonorMode }; #define ARENA_TIMELIMIT_POINTS_LOSS -16 -#define ARENA_READY_MARKER_ENTRY 301337 /* This class is used to: @@ -387,6 +386,9 @@ public: void ModifyStartDelayTime(int32 diff) { m_StartDelayTime -= diff; } void SetStartDelayTime(int32 Time) { m_StartDelayTime = Time; } + [[nodiscard]] uint8 GetStartingEventFlags() const { return m_Events; } + void AddStartingEventFlag(uint8 flag) { m_Events |= flag; } + void SetMaxPlayersPerTeam(uint32 MaxPlayers) { m_MaxPlayersPerTeam = MaxPlayers; } void SetMinPlayersPerTeam(uint32 MinPlayers) { m_MinPlayersPerTeam = MinPlayers; } @@ -419,9 +421,6 @@ public: [[nodiscard]] BattlegroundPlayerMap const& GetPlayers() const { return m_Players; } [[nodiscard]] uint32 GetPlayersSize() const { return m_Players.size(); } - void ReadyMarkerClicked(Player* p); // pussywizard - GuidSet readyMarkerClickedSet; // pussywizard - typedef std::unordered_map BattlegroundScoreMap; typedef std::unordered_map ArenaLogEntryDataMap; // pussywizard ArenaLogEntryDataMap ArenaLogEntries; // pussywizard diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundBE.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundBE.cpp index a467d3032..2a8064439 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundBE.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundBE.cpp @@ -104,10 +104,7 @@ bool BattlegroundBE::SetupBattleground() || !AddObject(BG_BE_OBJECT_DOOR_4, BG_BE_OBJECT_TYPE_DOOR_4, 6177.708f, 227.3481f, 3.604374f, -2.260201f, 0, 0, 0.9044551f, -0.4265689f, RESPAWN_IMMEDIATELY) // buffs || !AddObject(BG_BE_OBJECT_BUFF_1, BG_BE_OBJECT_TYPE_BUFF_1, 6249.042f, 275.3239f, 11.22033f, -1.448624f, 0, 0, 0.6626201f, -0.7489557f, 120) - || !AddObject(BG_BE_OBJECT_BUFF_2, BG_BE_OBJECT_TYPE_BUFF_2, 6228.26f, 249.566f, 11.21812f, -0.06981307f, 0, 0, 0.03489945f, -0.9993908f, 120) - // Arena Ready Marker - || !AddObject(BG_BE_OBJECT_READY_MARKER_1, ARENA_READY_MARKER_ENTRY, 6189.47f, 235.54f, 5.52f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 300) - || !AddObject(BG_BE_OBJECT_READY_MARKER_2, ARENA_READY_MARKER_ENTRY, 6287.19f, 288.25f, 5.33f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 300)) + || !AddObject(BG_BE_OBJECT_BUFF_2, BG_BE_OBJECT_TYPE_BUFF_2, 6228.26f, 249.566f, 11.21812f, -0.06981307f, 0, 0, 0.03489945f, -0.9993908f, 120)) { LOG_ERROR("sql.sql", "BatteGroundBE: Failed to spawn some object!"); return false; diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundBE.h b/src/server/game/Battlegrounds/Zones/BattlegroundBE.h index abb16edb2..dceafb225 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundBE.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundBE.h @@ -28,9 +28,7 @@ enum BattlegroundBEObjectTypes BG_BE_OBJECT_DOOR_4 = 3, BG_BE_OBJECT_BUFF_1 = 4, BG_BE_OBJECT_BUFF_2 = 5, - BG_BE_OBJECT_READY_MARKER_1 = 6, - BG_BE_OBJECT_READY_MARKER_2 = 7, - BG_BE_OBJECT_MAX = 8 + BG_BE_OBJECT_MAX = 6 }; enum BattlegroundBEGameObjects diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp index bd3a61f68..064e36478 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp @@ -195,10 +195,7 @@ bool BattlegroundDS::SetupBattleground() // knockback creatures || !AddCreature(BG_DS_NPC_TYPE_WATER_SPOUT, BG_DS_NPC_WATERFALL_KNOCKBACK, 1291.76f, 791.02f, 7.115f, 3.054326f, RESPAWN_IMMEDIATELY) || !AddCreature(BG_DS_NPC_TYPE_WATER_SPOUT, BG_DS_NPC_PIPE_KNOCKBACK_1, 1369.977f, 817.2882f, 16.08718f, 3.106686f, RESPAWN_IMMEDIATELY) - || !AddCreature(BG_DS_NPC_TYPE_WATER_SPOUT, BG_DS_NPC_PIPE_KNOCKBACK_2, 1212.833f, 765.3871f, 16.09484f, 0.0f, RESPAWN_IMMEDIATELY) - // Arena Ready Marker - || !AddObject(BG_DS_OBJECT_READY_MARKER_1, ARENA_READY_MARKER_ENTRY, 1229.44f, 759.35f, 17.89f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 300) - || !AddObject(BG_DS_OBJECT_READY_MARKER_2, ARENA_READY_MARKER_ENTRY, 1352.90f, 822.77f, 17.96f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 300)) + || !AddCreature(BG_DS_NPC_TYPE_WATER_SPOUT, BG_DS_NPC_PIPE_KNOCKBACK_2, 1212.833f, 765.3871f, 16.09484f, 0.0f, RESPAWN_IMMEDIATELY)) { LOG_ERROR("sql.sql", "BatteGroundDS: Failed to spawn some object!"); return false; diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundDS.h b/src/server/game/Battlegrounds/Zones/BattlegroundDS.h index 103ec6cfe..e83beebea 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundDS.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundDS.h @@ -30,9 +30,7 @@ enum BattlegroundDSObjectTypes BG_DS_OBJECT_WATER_2 = 3, BG_DS_OBJECT_BUFF_1 = 4, BG_DS_OBJECT_BUFF_2 = 5, - BG_DS_OBJECT_READY_MARKER_1 = 6, - BG_DS_OBJECT_READY_MARKER_2 = 7, - BG_DS_OBJECT_MAX = 8 + BG_DS_OBJECT_MAX = 6 }; enum BattlegroundDSGameObjects diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundNA.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundNA.cpp index fd1ec0bfa..41dc5543a 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundNA.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundNA.cpp @@ -80,10 +80,7 @@ bool BattlegroundNA::SetupBattleground() || !AddObject(BG_NA_OBJECT_DOOR_4, BG_NA_OBJECT_TYPE_DOOR_4, 4090.064f, 2858.438f, 10.23631f, 0.4928045f, 0, 0, 0.2439165f, 0.9697962f, RESPAWN_IMMEDIATELY) // buffs || !AddObject(BG_NA_OBJECT_BUFF_1, BG_NA_OBJECT_TYPE_BUFF_1, 4009.189941f, 2895.250000f, 13.052700f, -1.448624f, 0, 0, 0.6626201f, -0.7489557f, 120) - || !AddObject(BG_NA_OBJECT_BUFF_2, BG_NA_OBJECT_TYPE_BUFF_2, 4103.330078f, 2946.350098f, 13.051300f, -0.06981307f, 0, 0, 0.03489945f, -0.9993908f, 120) - // Arena Ready Marker - || !AddObject(BG_NA_OBJECT_READY_MARKER_1, ARENA_READY_MARKER_ENTRY, 4090.46f, 2875.43f, 12.16f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 300) - || !AddObject(BG_NA_OBJECT_READY_MARKER_2, ARENA_READY_MARKER_ENTRY, 4022.82f, 2966.61f, 12.17f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 300)) + || !AddObject(BG_NA_OBJECT_BUFF_2, BG_NA_OBJECT_TYPE_BUFF_2, 4103.330078f, 2946.350098f, 13.051300f, -0.06981307f, 0, 0, 0.03489945f, -0.9993908f, 120)) { LOG_ERROR("sql.sql", "BatteGroundNA: Failed to spawn some object!"); return false; diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundNA.h b/src/server/game/Battlegrounds/Zones/BattlegroundNA.h index 889b9ed0e..0f545c49b 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundNA.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundNA.h @@ -28,9 +28,7 @@ enum BattlegroundNAObjectTypes BG_NA_OBJECT_DOOR_4 = 3, BG_NA_OBJECT_BUFF_1 = 4, BG_NA_OBJECT_BUFF_2 = 5, - BG_NA_OBJECT_READY_MARKER_1 = 6, - BG_NA_OBJECT_READY_MARKER_2 = 7, - BG_NA_OBJECT_MAX = 8 + BG_NA_OBJECT_MAX = 6 }; enum BattlegroundNAGameObjects diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundRL.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundRL.cpp index ac845386f..e17ddf734 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundRL.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundRL.cpp @@ -105,10 +105,7 @@ bool BattlegroundRL::SetupBattleground() || !AddObject(BG_RL_OBJECT_DOOR_2, BG_RL_OBJECT_TYPE_DOOR_2, 1278.648f, 1730.557f, 31.60557f, 1.684245f, 0, 0, 0.7460582f, 0.6658807f, RESPAWN_IMMEDIATELY) // buffs || !AddObject(BG_RL_OBJECT_BUFF_1, BG_RL_OBJECT_TYPE_BUFF_1, 1328.719971f, 1632.719971f, 36.730400f, -1.448624f, 0, 0, 0.6626201f, -0.7489557f, 120) - || !AddObject(BG_RL_OBJECT_BUFF_2, BG_RL_OBJECT_TYPE_BUFF_2, 1243.300049f, 1699.170044f, 34.872601f, -0.06981307f, 0, 0, 0.03489945f, -0.9993908f, 120) - // Arena Ready Marker - || !AddObject(BG_RL_OBJECT_READY_MARKER_1, ARENA_READY_MARKER_ENTRY, 1298.61f, 1598.59f, 31.62f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 300) - || !AddObject(BG_RL_OBJECT_READY_MARKER_2, ARENA_READY_MARKER_ENTRY, 1273.71f, 1734.05f, 31.61f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 300)) + || !AddObject(BG_RL_OBJECT_BUFF_2, BG_RL_OBJECT_TYPE_BUFF_2, 1243.300049f, 1699.170044f, 34.872601f, -0.06981307f, 0, 0, 0.03489945f, -0.9993908f, 120)) { LOG_ERROR("sql.sql", "BatteGroundRL: Failed to spawn some object!"); return false; diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundRL.h b/src/server/game/Battlegrounds/Zones/BattlegroundRL.h index 3e273810c..9a7c63ff3 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundRL.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundRL.h @@ -26,9 +26,7 @@ enum BattlegroundRLObjectTypes BG_RL_OBJECT_DOOR_2 = 1, BG_RL_OBJECT_BUFF_1 = 2, BG_RL_OBJECT_BUFF_2 = 3, - BG_RL_OBJECT_READY_MARKER_1 = 4, - BG_RL_OBJECT_READY_MARKER_2 = 5, - BG_RL_OBJECT_MAX = 6 + BG_RL_OBJECT_MAX = 4 }; enum BattlegroundRLObjects diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundRV.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundRV.cpp index 5b77fc9a3..4120a054c 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundRV.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundRV.cpp @@ -240,12 +240,7 @@ bool BattlegroundRV::SetupBattleground() || !AddObject(BG_RV_OBJECT_PILAR_1, BG_RV_OBJECT_TYPE_PILAR_1, 763.632385f, -306.162384f, 25.909504f, 3.141593f, 0, 0, 0, RESPAWN_IMMEDIATELY) || !AddObject(BG_RV_OBJECT_PILAR_2, BG_RV_OBJECT_TYPE_PILAR_2, 723.644287f, -284.493256f, 24.648525f, 3.141593f, 0, 0, 0, RESPAWN_IMMEDIATELY) || !AddObject(BG_RV_OBJECT_PILAR_3, BG_RV_OBJECT_TYPE_PILAR_3, 763.611145f, -261.856750f, 25.909504f, 0.000000f, 0, 0, 0, RESPAWN_IMMEDIATELY) - || !AddObject(BG_RV_OBJECT_PILAR_4, BG_RV_OBJECT_TYPE_PILAR_4, 802.211609f, -284.493256f, 24.648525f, 0.000000f, 0, 0, 0, RESPAWN_IMMEDIATELY) - - // Arena Ready Marker - || !AddObject(BG_RV_OBJECT_READY_MARKER_1, ARENA_READY_MARKER_ENTRY, 769.93f, -301.04f, 2.80f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 300) - || !AddObject(BG_RV_OBJECT_READY_MARKER_2, ARENA_READY_MARKER_ENTRY, 757.02f, -267.30f, 2.80f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 300) - ) + || !AddObject(BG_RV_OBJECT_PILAR_4, BG_RV_OBJECT_TYPE_PILAR_4, 802.211609f, -284.493256f, 24.648525f, 0.000000f, 0, 0, 0, RESPAWN_IMMEDIATELY)) { LOG_ERROR("sql.sql", "BatteGroundRV: Failed to spawn some object!"); return false; diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundRV.h b/src/server/game/Battlegrounds/Zones/BattlegroundRV.h index ffa3d5809..38b7c7eb4 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundRV.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundRV.h @@ -22,53 +22,50 @@ enum BattlegroundRVObjectTypes { - BG_RV_OBJECT_BUFF_1, - BG_RV_OBJECT_BUFF_2, - BG_RV_OBJECT_FIRE_1, - BG_RV_OBJECT_FIRE_2, - BG_RV_OBJECT_FIREDOOR_1, - BG_RV_OBJECT_FIREDOOR_2, + BG_RV_OBJECT_BUFF_1 = 0, + BG_RV_OBJECT_BUFF_2 = 1, + BG_RV_OBJECT_FIRE_1 = 2, + BG_RV_OBJECT_FIRE_2 = 3, + BG_RV_OBJECT_FIREDOOR_1 = 4, + BG_RV_OBJECT_FIREDOOR_2 = 5, - BG_RV_OBJECT_PILAR_1, - BG_RV_OBJECT_PILAR_3, - BG_RV_OBJECT_GEAR_1, - BG_RV_OBJECT_GEAR_2, + BG_RV_OBJECT_PILAR_1 = 6, + BG_RV_OBJECT_PILAR_3 = 7, + BG_RV_OBJECT_GEAR_1 = 8, + BG_RV_OBJECT_GEAR_2 = 9, - BG_RV_OBJECT_PILAR_2, - BG_RV_OBJECT_PILAR_4, - BG_RV_OBJECT_PULLEY_1, - BG_RV_OBJECT_PULLEY_2, + BG_RV_OBJECT_PILAR_2 = 10, + BG_RV_OBJECT_PILAR_4 = 11, + BG_RV_OBJECT_PULLEY_1 = 12, + BG_RV_OBJECT_PULLEY_2 = 13, - BG_RV_OBJECT_ELEVATOR_1, - BG_RV_OBJECT_ELEVATOR_2, + BG_RV_OBJECT_ELEVATOR_1 = 14, + BG_RV_OBJECT_ELEVATOR_2 = 15, - BG_RV_OBJECT_READY_MARKER_1, - BG_RV_OBJECT_READY_MARKER_2, - - BG_RV_OBJECT_MAX, + BG_RV_OBJECT_MAX = 16 }; enum BattlegroundRVGameObjects { - BG_RV_OBJECT_TYPE_BUFF_1 = 184663, - BG_RV_OBJECT_TYPE_BUFF_2 = 184664, - BG_RV_OBJECT_TYPE_FIRE_1 = 192704, - BG_RV_OBJECT_TYPE_FIRE_2 = 192705, + BG_RV_OBJECT_TYPE_BUFF_1 = 184663, + BG_RV_OBJECT_TYPE_BUFF_2 = 184664, + BG_RV_OBJECT_TYPE_FIRE_1 = 192704, + BG_RV_OBJECT_TYPE_FIRE_2 = 192705, - BG_RV_OBJECT_TYPE_FIREDOOR_2 = 192387, - BG_RV_OBJECT_TYPE_FIREDOOR_1 = 192388, - BG_RV_OBJECT_TYPE_PULLEY_1 = 192389, - BG_RV_OBJECT_TYPE_PULLEY_2 = 192390, - BG_RV_OBJECT_TYPE_GEAR_1 = 192393, - BG_RV_OBJECT_TYPE_GEAR_2 = 192394, + BG_RV_OBJECT_TYPE_FIREDOOR_2 = 192387, + BG_RV_OBJECT_TYPE_FIREDOOR_1 = 192388, + BG_RV_OBJECT_TYPE_PULLEY_1 = 192389, + BG_RV_OBJECT_TYPE_PULLEY_2 = 192390, + BG_RV_OBJECT_TYPE_GEAR_1 = 192393, + BG_RV_OBJECT_TYPE_GEAR_2 = 192394, - BG_RV_OBJECT_TYPE_ELEVATOR_1 = 194582, - BG_RV_OBJECT_TYPE_ELEVATOR_2 = 194586, + BG_RV_OBJECT_TYPE_ELEVATOR_1 = 194582, + BG_RV_OBJECT_TYPE_ELEVATOR_2 = 194586, - BG_RV_OBJECT_TYPE_PILAR_1 = 194583, // axe - BG_RV_OBJECT_TYPE_PILAR_2 = 194584, // arena - BG_RV_OBJECT_TYPE_PILAR_3 = 194585, // lightning - BG_RV_OBJECT_TYPE_PILAR_4 = 194587, // ivory + BG_RV_OBJECT_TYPE_PILAR_1 = 194583, // axe + BG_RV_OBJECT_TYPE_PILAR_2 = 194584, // arena + BG_RV_OBJECT_TYPE_PILAR_3 = 194585, // lightning + BG_RV_OBJECT_TYPE_PILAR_4 = 194587, // ivory }; enum BattlegroundRVData diff --git a/src/server/game/Scripting/ScriptDefines/AllBattlegroundScript.cpp b/src/server/game/Scripting/ScriptDefines/AllBattlegroundScript.cpp index 9881a25f0..3d9213ed8 100644 --- a/src/server/game/Scripting/ScriptDefines/AllBattlegroundScript.cpp +++ b/src/server/game/Scripting/ScriptDefines/AllBattlegroundScript.cpp @@ -104,6 +104,11 @@ void ScriptMgr::OnBattlegroundCreate(Battleground* bg) CALL_ENABLED_HOOKS(AllBattlegroundScript, ALLBATTLEGROUNDHOOK_ON_BATTLEGROUND_CREATE, script->OnBattlegroundCreate(bg)); } +void ScriptMgr::OnBattlegroundSetup(Battleground* bg) +{ + CALL_ENABLED_HOOKS(AllBattlegroundScript, ALLBATTLEGROUNDHOOK_ON_BATTLEGROUND_SETUP, script->OnBattlegroundSetup(bg)); +} + bool ScriptMgr::CanAddGroupToMatchingPool(BattlegroundQueue* queue, GroupQueueInfo* group, uint32 poolPlayerCount, Battleground* bg, BattlegroundBracketId bracketId) { CALL_ENABLED_BOOLEAN_HOOKS(AllBattlegroundScript, ALLBATTLEGROUNDHOOK_CAN_ADD_GROUP_TO_MATCHING_POOL, !script->CanAddGroupToMatchingPool(queue, group, poolPlayerCount, bg, bracketId)); diff --git a/src/server/game/Scripting/ScriptDefines/AllBattlegroundScript.h b/src/server/game/Scripting/ScriptDefines/AllBattlegroundScript.h index 108f3cf7f..f1aaca7b3 100644 --- a/src/server/game/Scripting/ScriptDefines/AllBattlegroundScript.h +++ b/src/server/game/Scripting/ScriptDefines/AllBattlegroundScript.h @@ -41,6 +41,7 @@ enum AllBattlegroundHook ALLBATTLEGROUNDHOOK_ON_BATTLEGROUND_END, ALLBATTLEGROUNDHOOK_ON_BATTLEGROUND_DESTROY, ALLBATTLEGROUNDHOOK_ON_BATTLEGROUND_CREATE, + ALLBATTLEGROUNDHOOK_ON_BATTLEGROUND_SETUP, ALLBATTLEGROUNDHOOK_CAN_ADD_GROUP_TO_MATCHING_POOL, ALLBATTLEGROUNDHOOK_GET_PLAYER_MATCHMAKING_RATING, ALLBATTLEGROUNDHOOK_END @@ -139,6 +140,13 @@ public: */ virtual void OnBattlegroundCreate(Battleground* /*bg*/) { } + /** + * @brief This hook runs after the Battleground setup is completed (map is created and initial objects are spawned) + * + * @param bg Contains information about the Battleground + */ + virtual void OnBattlegroundSetup(Battleground* /*bg*/) { } + /** * @brief This hook runs before adding a group to the battleground matching pool * diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index d35f71852..cbc540866 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -613,6 +613,7 @@ public: /* BGScript */ void OnBattlegroundEnd(Battleground* bg, TeamId winnerTeamId); void OnBattlegroundDestroy(Battleground* bg); void OnBattlegroundCreate(Battleground* bg); + void OnBattlegroundSetup(Battleground* bg); bool CanAddGroupToMatchingPool(BattlegroundQueue* queue, GroupQueueInfo* group, uint32 poolPlayerCount, Battleground* bg, BattlegroundBracketId bracketId); bool GetPlayerMatchmakingRating(ObjectGuid playerGuid, BattlegroundTypeId bgTypeId, float& outRating); diff --git a/src/server/scripts/World/go_scripts.cpp b/src/server/scripts/World/go_scripts.cpp index cfcf56121..ac8c897e6 100644 --- a/src/server/scripts/World/go_scripts.cpp +++ b/src/server/scripts/World/go_scripts.cpp @@ -75,20 +75,6 @@ public: } }; -class go_arena_ready_marker : public GameObjectScript -{ -public: - go_arena_ready_marker() : GameObjectScript("go_arena_ready_marker") { } - - bool OnGossipHello(Player* player, GameObject* /*go*/) override - { - if (Battleground* bg = player->GetBattleground()) - bg->ReadyMarkerClicked(player); - - return false; - } -}; - /*###### ## go_ethereum_prison ######*/ @@ -1889,7 +1875,6 @@ void AddSC_go_scripts() { new go_seer_of_zebhalak(); new go_witherbark_totem_bundle(); - new go_arena_ready_marker(); new go_ethereum_prison(); new go_ethereum_stasis(); new go_resonite_cask();