From 091dcf35e6fc79d0a0a72d8b21a5a75a677b547c Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Sat, 11 Aug 2018 17:29:03 +0300 Subject: [PATCH] Server ignores kick votes if the client has already voted to kick the same player. Closes #615 --- Barotrauma/BarotraumaShared/Source/Networking/Client.cs | 5 +++++ Barotrauma/BarotraumaShared/Source/Networking/Voting.cs | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Barotrauma/BarotraumaShared/Source/Networking/Client.cs b/Barotrauma/BarotraumaShared/Source/Networking/Client.cs index f190311fb..c77cd7ca2 100644 --- a/Barotrauma/BarotraumaShared/Source/Networking/Client.cs +++ b/Barotrauma/BarotraumaShared/Source/Networking/Client.cs @@ -211,6 +211,11 @@ namespace Barotrauma.Networking { kickVoters.Remove(voter); } + + public bool HasKickVoteFrom(Client voter) + { + return kickVoters.Contains(voter); + } public bool HasKickVoteFromID(int id) { diff --git a/Barotrauma/BarotraumaShared/Source/Networking/Voting.cs b/Barotrauma/BarotraumaShared/Source/Networking/Voting.cs index 300198353..3d2b98a25 100644 --- a/Barotrauma/BarotraumaShared/Source/Networking/Voting.cs +++ b/Barotrauma/BarotraumaShared/Source/Networking/Voting.cs @@ -122,7 +122,7 @@ namespace Barotrauma byte kickedClientID = inc.ReadByte(); Client kicked = GameMain.Server.ConnectedClients.Find(c => c.ID == kickedClientID); - if (kicked != null) + if (kicked != null && !kicked.HasKickVoteFrom(sender)) { kicked.AddKickVote(sender); Client.UpdateKickVotes(GameMain.Server.ConnectedClients);