From 1eb79de56ed6f31a3cea3346b90aee07a3960fae Mon Sep 17 00:00:00 2001 From: hondacrx Date: Mon, 30 May 2022 14:30:15 -0400 Subject: [PATCH] Core/Battlegrounds: Avoid reset BG and Arena scoreboard stats and BG map achievement criterias when relogin if player was already in the BG Port From (https://github.com/TrinityCore/TrinityCore/commit/1bfbc371d5e2c756da6dc9f658cafcac5779ff60) --- Source/Game/Arenas/Arena.cs | 4 +++- Source/Game/BattleGrounds/BattleGround.cs | 3 ++- Source/Game/BattleGrounds/Zones/ArathiBasin.cs | 4 +++- Source/Game/BattleGrounds/Zones/EyeofStorm.cs | 4 +++- Source/Game/BattleGrounds/Zones/StrandofAncients.cs | 4 +++- Source/Game/BattleGrounds/Zones/WarsongGluch.cs | 4 +++- 6 files changed, 17 insertions(+), 6 deletions(-) diff --git a/Source/Game/Arenas/Arena.cs b/Source/Game/Arenas/Arena.cs index 5e5a6f9f5..ec77a764f 100644 --- a/Source/Game/Arenas/Arena.cs +++ b/Source/Game/Arenas/Arena.cs @@ -45,8 +45,10 @@ namespace Game.Arenas public override void AddPlayer(Player player) { + bool isInBattleground = IsPlayerInBattleground(player.GetGUID()); base.AddPlayer(player); - PlayerScores[player.GetGUID()] = new ArenaScore(player.GetGUID(), player.GetBGTeam()); + if (!isInBattleground) + PlayerScores[player.GetGUID()] = new ArenaScore(player.GetGUID(), player.GetBGTeam()); if (player.GetBGTeam() == Team.Alliance) // gold { diff --git a/Source/Game/BattleGrounds/BattleGround.cs b/Source/Game/BattleGrounds/BattleGround.cs index ec42f53f7..4a4ed6c88 100644 --- a/Source/Game/BattleGrounds/BattleGround.cs +++ b/Source/Game/BattleGrounds/BattleGround.cs @@ -1068,7 +1068,8 @@ namespace Game.BattleGrounds } // reset all map criterias on map enter - player.ResetCriteria(CriteriaFailEvent.LeaveBattleground, GetMapId(), true); + if (!isInBattleground) + player.ResetCriteria(CriteriaFailEvent.LeaveBattleground, GetMapId(), true); // setup BG group membership PlayerAddedToBGCheckIfBGIsRunning(player); diff --git a/Source/Game/BattleGrounds/Zones/ArathiBasin.cs b/Source/Game/BattleGrounds/Zones/ArathiBasin.cs index 574e37e39..c02f64934 100644 --- a/Source/Game/BattleGrounds/Zones/ArathiBasin.cs +++ b/Source/Game/BattleGrounds/Zones/ArathiBasin.cs @@ -221,8 +221,10 @@ namespace Game.BattleGrounds.Zones public override void AddPlayer(Player player) { + bool isInBattleground = IsPlayerInBattleground(player.GetGUID()); base.AddPlayer(player); - PlayerScores[player.GetGUID()] = new BattlegroundABScore(player.GetGUID(), player.GetBGTeam()); + if (!isInBattleground) + PlayerScores[player.GetGUID()] = new BattlegroundABScore(player.GetGUID(), player.GetBGTeam()); } public override void RemovePlayer(Player Player, ObjectGuid guid, Team team) diff --git a/Source/Game/BattleGrounds/Zones/EyeofStorm.cs b/Source/Game/BattleGrounds/Zones/EyeofStorm.cs index 7b79d59b1..4a45f6f07 100644 --- a/Source/Game/BattleGrounds/Zones/EyeofStorm.cs +++ b/Source/Game/BattleGrounds/Zones/EyeofStorm.cs @@ -369,8 +369,10 @@ namespace Game.BattleGrounds.Zones public override void AddPlayer(Player player) { + bool isInBattleground = IsPlayerInBattleground(player.GetGUID()); base.AddPlayer(player); - PlayerScores[player.GetGUID()] = new BgEyeOfStormScore(player.GetGUID(), player.GetBGTeam()); + if (!isInBattleground) + PlayerScores[player.GetGUID()] = new BgEyeOfStormScore(player.GetGUID(), player.GetBGTeam()); m_PlayersNearPoint[EotSPoints.PointsMax].Add(player.GetGUID()); } diff --git a/Source/Game/BattleGrounds/Zones/StrandofAncients.cs b/Source/Game/BattleGrounds/Zones/StrandofAncients.cs index d05fb528a..80794c1ec 100644 --- a/Source/Game/BattleGrounds/Zones/StrandofAncients.cs +++ b/Source/Game/BattleGrounds/Zones/StrandofAncients.cs @@ -481,8 +481,10 @@ namespace Game.BattleGrounds.Zones public override void AddPlayer(Player player) { + bool isInBattleground = IsPlayerInBattleground(player.GetGUID()); base.AddPlayer(player); - PlayerScores[player.GetGUID()] = new BattlegroundSAScore(player.GetGUID(), player.GetBGTeam()); + if (!isInBattleground) + PlayerScores[player.GetGUID()] = new BattlegroundSAScore(player.GetGUID(), player.GetBGTeam()); SendTransportInit(player); diff --git a/Source/Game/BattleGrounds/Zones/WarsongGluch.cs b/Source/Game/BattleGrounds/Zones/WarsongGluch.cs index 676aaa057..098f84cd4 100644 --- a/Source/Game/BattleGrounds/Zones/WarsongGluch.cs +++ b/Source/Game/BattleGrounds/Zones/WarsongGluch.cs @@ -198,8 +198,10 @@ namespace Game.BattleGrounds.Zones public override void AddPlayer(Player player) { + bool isInBattleground = IsPlayerInBattleground(player.GetGUID()); base.AddPlayer(player); - PlayerScores[player.GetGUID()] = new BattlegroundWGScore(player.GetGUID(), player.GetBGTeam()); + if (!isInBattleground) + PlayerScores[player.GetGUID()] = new BattlegroundWGScore(player.GetGUID(), player.GetBGTeam()); } void RespawnFlag(Team Team, bool captured)