diff --git a/Subsurface/Source/Map/EntityGrid.cs b/Subsurface/Source/Map/EntityGrid.cs index c0aef6943..b5b5b9d90 100644 --- a/Subsurface/Source/Map/EntityGrid.cs +++ b/Subsurface/Source/Map/EntityGrid.cs @@ -40,9 +40,9 @@ namespace Barotrauma return; } - for (int x = Math.Max(indices.X, 0); x <= Math.Min(indices.Width, entities.GetLength(0)); x++) + for (int x = Math.Max(indices.X, 0); x <= Math.Min(indices.Width, entities.GetLength(0)-1); x++) { - for (int y = Math.Max(indices.Y,0); y <= Math.Min(indices.Height, entities.GetLength(1)); y++) + for (int y = Math.Max(indices.Y,0); y <= Math.Min(indices.Height, entities.GetLength(1)-1); y++) { entities[x, y].Add(entity); } diff --git a/Subsurface/Source/Networking/GameServer.cs b/Subsurface/Source/Networking/GameServer.cs index 429846431..f15001b48 100644 --- a/Subsurface/Source/Networking/GameServer.cs +++ b/Subsurface/Source/Networking/GameServer.cs @@ -1725,8 +1725,9 @@ namespace Barotrauma.Networking Client preferredClient = null; foreach (Client c in clients) { - int index = c.jobPreferences.FindIndex(jp => jp == job); - if (index == 0) index = 1000; + int index = c.jobPreferences.IndexOf(job); + if (index == -1) index = 1000; + if (preferredClient == null || index < bestPreference) { bestPreference = index; diff --git a/Subsurface/Source/Screens/NetLobbyScreen.cs b/Subsurface/Source/Screens/NetLobbyScreen.cs index a9d31afd8..dd5f3f382 100644 --- a/Subsurface/Source/Screens/NetLobbyScreen.cs +++ b/Subsurface/Source/Screens/NetLobbyScreen.cs @@ -354,6 +354,7 @@ namespace Barotrauma if (IsServer && GameMain.Server != null) { + int prevSelected = subList.SelectedIndex; UpdateSubList(Submarine.SavedSubmarines); modeList.OnSelected = VotableClicked; @@ -377,8 +378,11 @@ namespace Barotrauma var banListButton = new GUIButton(new Rectangle(0, 30, 100, 20), "Banned IPs", Alignment.BottomRight, GUI.Style, playerList.Parent); banListButton.OnClicked = GameMain.Server.BanList.ToggleBanFrame; banListButton.UserData = "banListButton"; - - if (subList.CountChildren > 0 && subList.Selected == null) subList.Select(0); + + if (subList.CountChildren > 0 && subList.Selected == null) + { + subList.Select(Math.Max(0, prevSelected)); + } if (GameModePreset.list.Count > 0 && modeList.Selected == null) modeList.Select(0); if (myPlayerFrame.children.Find(c => c.UserData as string == "playyourself") == null)