From 1d1456b0bb0e532d495848f06b4d80b820f14144 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Wed, 7 Sep 2022 13:07:49 -0400 Subject: [PATCH] Core/Battlegrounds: Capture flag immediately when standing on capture point and your team's flag return due to drop timer ended Port From (https://github.com/TrinityCore/TrinityCore/commit/a1ddf5195b8d03ea87248b7037a3e50e3e793d8e) --- .../Game/BattleGrounds/Zones/WarsongGluch.cs | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/Source/Game/BattleGrounds/Zones/WarsongGluch.cs b/Source/Game/BattleGrounds/Zones/WarsongGluch.cs index 8c5874c67..c13f443d4 100644 --- a/Source/Game/BattleGrounds/Zones/WarsongGluch.cs +++ b/Source/Game/BattleGrounds/Zones/WarsongGluch.cs @@ -252,6 +252,8 @@ namespace Game.BattleGrounds.Zones SetDroppedFlagGUID(ObjectGuid.Empty, GetTeamIndexByTeamId(team)); _bothFlagsKept = false; + // Check opposing flag if it is in capture zone; if so, capture it + HandleFlagRoomCapturePoint(team == Team.Alliance ? TeamId.Horde : TeamId.Alliance); } void EventPlayerCapturedFlag(Player player) @@ -341,6 +343,14 @@ namespace Game.BattleGrounds.Zones } } + void HandleFlagRoomCapturePoint(int team) + { + Player flagCarrier = Global.ObjAccessor.GetPlayer(GetBgMap(), GetFlagPickerGUID(team)); + uint areaTrigger = team == TeamId.Alliance ? 3647 : 3646u; + if (flagCarrier != null && flagCarrier.IsInAreaTriggerRadius(CliDB.AreaTriggerStorage.LookupByKey(areaTrigger))) + EventPlayerCapturedFlag(flagCarrier); + } + public override void EventPlayerDroppedFlag(Player player) { Team team = GetPlayerTeam(player.GetGUID()); @@ -489,11 +499,7 @@ namespace Game.BattleGrounds.Zones UpdatePlayerScore(player, ScoreType.FlagReturns, 1); _bothFlagsKept = false; - // Check Horde flag if it is in capture zone; if so, capture it - Player hordeFlagCarrier = Global.ObjAccessor.GetPlayer(GetBgMap(), GetFlagPickerGUID(TeamId.Horde)); - if (hordeFlagCarrier != null) - if (hordeFlagCarrier.IsInAreaTriggerRadius(CliDB.AreaTriggerStorage.LookupByKey(3646))) - EventPlayerCapturedFlag(hordeFlagCarrier); + HandleFlagRoomCapturePoint(TeamId.Horde); // Check Horde flag if it is in capture zone; if so, capture it } else { @@ -527,11 +533,7 @@ namespace Game.BattleGrounds.Zones UpdatePlayerScore(player, ScoreType.FlagReturns, 1); _bothFlagsKept = false; - // Check Alliance flag if it is in capture zone; if so, capture it - Player allianceFlagCarrier = Global.ObjAccessor.GetPlayer(GetBgMap(), GetFlagPickerGUID(TeamId.Alliance)); - if (allianceFlagCarrier != null) - if (allianceFlagCarrier.IsInAreaTriggerRadius(CliDB.AreaTriggerStorage.LookupByKey(3647))) - EventPlayerCapturedFlag(allianceFlagCarrier); + HandleFlagRoomCapturePoint(TeamId.Alliance); // Check Alliance flag if it is in capture zone; if so, capture it } else {