From d6c700b53517e955dd211a3b81233ac69389c7bc Mon Sep 17 00:00:00 2001 From: Regalis Date: Wed, 24 May 2017 18:43:21 +0300 Subject: [PATCH 01/56] Spawning extra cargo --- Subsurface/Source/Networking/GameServer.cs | 45 +++++++++++++++------- 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/Subsurface/Source/Networking/GameServer.cs b/Subsurface/Source/Networking/GameServer.cs index 667310552..8f4055560 100644 --- a/Subsurface/Source/Networking/GameServer.cs +++ b/Subsurface/Source/Networking/GameServer.cs @@ -1157,7 +1157,37 @@ namespace Barotrauma.Networking GameMain.GameSession.CrewManager.characters.Add(myCharacter); } } - + + + foreach (Submarine sub in Submarine.MainSubs) + { + if (sub == null) continue; + + WayPoint cargoSpawnPos = WayPoint.GetRandom(SpawnType.Cargo, null, sub); + + if (cargoSpawnPos?.CurrentHull == null) + { + DebugConsole.ThrowError("Couldn't spawn additional cargo (no cargo spawnpoint inside any of the hulls)"); + continue; + } + + var cargoRoom = cargoSpawnPos.CurrentHull; + Vector2 position = new Vector2( + cargoSpawnPos.Position.X, + cargoRoom.Rect.Y - cargoRoom.Rect.Height); + + foreach (string s in extraCargo.Keys) + { + ItemPrefab itemPrefab = MapEntityPrefab.list.Find(ip => ip.Name == s) as ItemPrefab; + if (itemPrefab == null) continue; + + for (int i = 0; i < extraCargo[s]; i++) + { + Entity.Spawner.AddToSpawnQueue(itemPrefab, position + new Vector2(Rand.Range(-20.0f, 20.0f), itemPrefab.Size.Y / 2), sub); + } + } + } + TraitorManager = null; if (TraitorsEnabled == YesNoMaybe.Yes || (TraitorsEnabled == YesNoMaybe.Maybe && Rand.Range(0.0f, 1.0f) < 0.5f)) @@ -1171,20 +1201,9 @@ namespace Barotrauma.Networking } SendStartMessage(roundStartSeed, Submarine.MainSub, GameMain.GameSession.gameMode.Preset, connectedClients); - //var startMessage = CreateStartMessage(roundStartSeed, Submarine.MainSub, GameMain.GameSession.gameMode.Preset); - //server.SendMessage(startMessage, connectedClients.Select(c => c.Connection).ToList(), NetDeliveryMethod.ReliableUnordered, 0); yield return CoroutineStatus.Running; - - //UpdateCrewFrame(); - - //TraitorManager = null; - //if (TraitorsEnabled == YesNoMaybe.Yes || - // (TraitorsEnabled == YesNoMaybe.Maybe && Rand.Range(0.0f, 1.0f) < 0.5f)) - //{ - // TraitorManager = new TraitorManager(this); - //} - + GameMain.GameScreen.Cam.TargetPos = Vector2.Zero; GameMain.GameScreen.Select(); From 6223861f7aa32cd503538dfac3e434057023f37a Mon Sep 17 00:00:00 2001 From: Regalis Date: Wed, 24 May 2017 19:27:51 +0300 Subject: [PATCH 02/56] Fixed clients' characters deselecting items when a status networkevent is received from the server --- Subsurface/Source/Characters/Character.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Subsurface/Source/Characters/Character.cs b/Subsurface/Source/Characters/Character.cs index 215946baa..f4d3a59d5 100644 --- a/Subsurface/Source/Characters/Character.cs +++ b/Subsurface/Source/Characters/Character.cs @@ -1774,9 +1774,12 @@ namespace Barotrauma } if (Math.Sign(newStun) != Math.Sign(stunTimer)) AnimController.ResetPullJoints(); + stunTimer = newStun; - - selectedConstruction = null; + if (newStun > 0.0f) + { + selectedConstruction = null; + } } private void Implode(bool isNetworkMessage = false) From 44349b97b067c349e036b73304cfe30532934c4d Mon Sep 17 00:00:00 2001 From: Regalis Date: Thu, 25 May 2017 17:05:28 +0300 Subject: [PATCH 03/56] Fixed a null exception when a dragged character is removed --- Subsurface/Source/Characters/Animation/Ragdoll.cs | 4 ++-- Subsurface/Source/Characters/Character.cs | 13 ++++++++----- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/Subsurface/Source/Characters/Animation/Ragdoll.cs b/Subsurface/Source/Characters/Animation/Ragdoll.cs index 85a93559e..b3f1a19ab 100644 --- a/Subsurface/Source/Characters/Animation/Ragdoll.cs +++ b/Subsurface/Source/Characters/Animation/Ragdoll.cs @@ -1256,7 +1256,7 @@ namespace Barotrauma //use simple interpolation for other players' characters and characters that can't move if (character.MemState.Count > 0) { - if (character.MemState[0].Interact == null) + if (character.MemState[0].Interact == null || character.MemState[0].Interact.Removed) { character.DeselectCharacter(); character.SelectedConstruction = null; @@ -1348,7 +1348,7 @@ namespace Barotrauma //the entity we're interacting with doesn't match the server's if (localPos.Interact != serverPos.Interact) { - if (serverPos.Interact == null) + if (serverPos.Interact == null || serverPos.Interact.Removed) { character.DeselectCharacter(); character.SelectedConstruction = null; diff --git a/Subsurface/Source/Characters/Character.cs b/Subsurface/Source/Characters/Character.cs index f4d3a59d5..e12eed995 100644 --- a/Subsurface/Source/Characters/Character.cs +++ b/Subsurface/Source/Characters/Character.cs @@ -440,7 +440,7 @@ namespace Barotrauma { get { - return isDead || Stun > 0.0f || LockHands || IsUnconscious; + return isDead || Stun > 0.0f || LockHands || IsUnconscious || Removed; } } @@ -932,7 +932,7 @@ namespace Barotrauma if (selectedConstruction != null && IsKeyDown(InputType.Aim)) selectedConstruction.SecondaryUse(deltaTime, this); } - if (selectedCharacter!=null) + if (selectedCharacter != null) { if (Vector2.DistanceSquared(selectedCharacter.WorldPosition, WorldPosition) > 90000.0f || !selectedCharacter.CanBeSelected) { @@ -1123,10 +1123,13 @@ namespace Barotrauma public void DeselectCharacter() { if (selectedCharacter == null) return; - - foreach (Limb limb in selectedCharacter.AnimController.Limbs) + + if (SelectedCharacter.AnimController != null) { - if (limb.pullJoint != null) limb.pullJoint.Enabled = false; + foreach (Limb limb in selectedCharacter.AnimController.Limbs) + { + if (limb.pullJoint != null) limb.pullJoint.Enabled = false; + } } selectedCharacter = null; From c40c3a1a98bbc07ee0ba08edec5d5825d92803e0 Mon Sep 17 00:00:00 2001 From: Regalis Date: Thu, 25 May 2017 18:27:47 +0300 Subject: [PATCH 04/56] Clients don't modify the colors of the texts in the netlobby sub list, only their alpha --- Subsurface/Source/Networking/GameClient.cs | 2 +- Subsurface/Source/Screens/NetLobbyScreen.cs | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Subsurface/Source/Networking/GameClient.cs b/Subsurface/Source/Networking/GameClient.cs index aed3daedb..5d123786a 100644 --- a/Subsurface/Source/Networking/GameClient.cs +++ b/Subsurface/Source/Networking/GameClient.cs @@ -1057,7 +1057,7 @@ namespace Barotrauma.Networking ((Submarine)c.UserData).MD5Hash.Hash == newSub.MD5Hash.Hash) as GUITextBlock; if (textBlock == null) continue; - textBlock.TextColor = Color.White; + textBlock.TextColor = new Color(textBlock.TextColor, 1.0f); textBlock.UserData = newSub; textBlock.ToolTip = newSub.Description; diff --git a/Subsurface/Source/Screens/NetLobbyScreen.cs b/Subsurface/Source/Screens/NetLobbyScreen.cs index 556de2f26..f5b648cb2 100644 --- a/Subsurface/Source/Screens/NetLobbyScreen.cs +++ b/Subsurface/Source/Screens/NetLobbyScreen.cs @@ -732,19 +732,19 @@ namespace Barotrauma if (matchingSub == null) { - subTextBlock.TextColor = Color.Gray; + subTextBlock.TextColor = new Color(subTextBlock.TextColor, 0.5f); subTextBlock.ToolTip = "Submarine not found in your submarine folder"; } else if (matchingSub.MD5Hash.Hash != sub.MD5Hash.Hash) { - subTextBlock.TextColor = Color.LightGray; + subTextBlock.TextColor = new Color(subTextBlock.TextColor, 0.5f); subTextBlock.ToolTip = "Your version of the submarine doesn't match the servers version"; } else { if (subList == shuttleList || subList == shuttleList.ListBox) { - subTextBlock.TextColor = sub.HasTag(SubmarineTag.Shuttle) ? Color.White : Color.DarkGray; + subTextBlock.TextColor = new Color(subTextBlock.TextColor, sub.HasTag(SubmarineTag.Shuttle) ? 1.0f : 0.6f); } } From 9a7a4e22fb46b3dda982bbcf7a7a91a8d5e77056 Mon Sep 17 00:00:00 2001 From: Regalis Date: Thu, 25 May 2017 18:27:57 +0300 Subject: [PATCH 05/56] Charybdis collider fix --- Subsurface/Content/Characters/Charybdis/charybdis.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Subsurface/Content/Characters/Charybdis/charybdis.xml b/Subsurface/Content/Characters/Charybdis/charybdis.xml index 9029f90f7..e027dce94 100644 --- a/Subsurface/Content/Characters/Charybdis/charybdis.xml +++ b/Subsurface/Content/Characters/Charybdis/charybdis.xml @@ -5,17 +5,17 @@ - + - + - + From 09785184b365002ca2dcd2e5ddda28d8a3c80a96 Mon Sep 17 00:00:00 2001 From: Regalis Date: Fri, 26 May 2017 19:43:55 +0300 Subject: [PATCH 06/56] Speech bubbles aren't shown above dead characters --- Subsurface/Source/Networking/NetworkMember.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Subsurface/Source/Networking/NetworkMember.cs b/Subsurface/Source/Networking/NetworkMember.cs index f7ce98a20..a58273954 100644 --- a/Subsurface/Source/Networking/NetworkMember.cs +++ b/Subsurface/Source/Networking/NetworkMember.cs @@ -231,7 +231,7 @@ namespace Barotrauma.Networking string displayedText = message.Text; - if (message.Sender != null) + if (message.Sender != null && !message.Sender.IsDead) { message.Sender.ShowSpeechBubble(2.0f, ChatMessage.MessageColor[(int)message.Type]); } From b7518fa8122779181a55c2ad1aeea93068292d64 Mon Sep 17 00:00:00 2001 From: Regalis Date: Fri, 26 May 2017 20:03:38 +0300 Subject: [PATCH 07/56] Item connections are cached in the Item constructor instead of OnMapLoaded (-> buttons created mid-round work now) --- Subsurface/Source/Items/Item.cs | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/Subsurface/Source/Items/Item.cs b/Subsurface/Source/Items/Item.cs index a6d46d672..a2eae6222 100644 --- a/Subsurface/Source/Items/Item.cs +++ b/Subsurface/Source/Items/Item.cs @@ -408,15 +408,27 @@ namespace Barotrauma break; } } - + + //cache connections into a dictionary for faster lookups + var connectionPanel = GetComponent(); + if (connectionPanel != null) + { + connections = new Dictionary(); + foreach (Connection c in connectionPanel.Connections) + { + if (!connections.ContainsKey(c.Name)) + connections.Add(c.Name, c); + } + } + //containers need to handle collision events to notify items inside them about the impact - if (ImpactTolerance > 0.0f || GetComponent() != null) + var itemContainer = GetComponent(); + if (ImpactTolerance > 0.0f || itemContainer != null) { if (body != null) body.FarseerBody.OnCollision += OnCollision; } - var itemContainer = GetComponent(); - if (itemContainer!=null) + if (itemContainer != null) { ownInventory = itemContainer.Inventory; } @@ -2244,17 +2256,6 @@ namespace Barotrauma { ic.OnMapLoaded(); } - - //cache connections into a dictionary for faster lookups - var connectionPanel = GetComponent(); - connections = new Dictionary(); - - if (connectionPanel == null) return; - foreach (Connection c in connectionPanel.Connections) - { - if (!connections.ContainsKey(c.Name)) - connections.Add(c.Name, c); - } } From dc80ee810c3ead9b9d2794facc66c6920f0c27ae Mon Sep 17 00:00:00 2001 From: Regalis Date: Sun, 28 May 2017 22:36:55 +0300 Subject: [PATCH 08/56] Separate servelog message type for inventory usage --- Subsurface/Source/Items/Inventory.cs | 8 ++++---- Subsurface/Source/Networking/ServerLog.cs | 3 +++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Subsurface/Source/Items/Inventory.cs b/Subsurface/Source/Items/Inventory.cs index f48846032..caeeaf480 100644 --- a/Subsurface/Source/Items/Inventory.cs +++ b/Subsurface/Source/Items/Inventory.cs @@ -590,11 +590,11 @@ namespace Barotrauma { if (Owner == c.Character) { - GameServer.Log(c.Character + " picked up " + item.Name, ServerLog.MessageType.ItemInteraction); + GameServer.Log(c.Character + " picked up " + item.Name, ServerLog.MessageType.Inventory); } else { - GameServer.Log(c.Character + " placed " + item.Name + " in " + Owner, ServerLog.MessageType.ItemInteraction); + GameServer.Log(c.Character + " placed " + item.Name + " in " + Owner, ServerLog.MessageType.Inventory); } } } @@ -605,11 +605,11 @@ namespace Barotrauma { if (Owner == c.Character) { - GameServer.Log(c.Character + " dropped " + item.Name, ServerLog.MessageType.ItemInteraction); + GameServer.Log(c.Character + " dropped " + item.Name, ServerLog.MessageType.Inventory); } else { - GameServer.Log(c.Character + " removed " + item.Name + " from " + Owner, ServerLog.MessageType.ItemInteraction); + GameServer.Log(c.Character + " removed " + item.Name + " from " + Owner, ServerLog.MessageType.Inventory); } } } diff --git a/Subsurface/Source/Networking/ServerLog.cs b/Subsurface/Source/Networking/ServerLog.cs index b1ab3ed7f..2bb50d026 100644 --- a/Subsurface/Source/Networking/ServerLog.cs +++ b/Subsurface/Source/Networking/ServerLog.cs @@ -24,6 +24,7 @@ namespace Barotrauma.Networking { Chat, ItemInteraction, + Inventory, Attack, ServerMessage, Error @@ -32,6 +33,7 @@ namespace Barotrauma.Networking private Color[] messageColor = new Color[] { Color.LightBlue, + new Color(255, 142, 0), new Color(238, 208, 0), new Color(204, 74, 78), new Color(157, 225, 160), @@ -42,6 +44,7 @@ namespace Barotrauma.Networking { "Chat message", "Item interaction", + "Inventory usage", "Attack & death", "Server message", "Error" From 744e2bd03145a013bfef225a6098ed24f2c6cddf Mon Sep 17 00:00:00 2001 From: Regalis Date: Sun, 28 May 2017 22:37:24 +0300 Subject: [PATCH 09/56] Fixed characters walking slightly above the floor --- .../Source/Characters/Animation/HumanoidAnimController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Subsurface/Source/Characters/Animation/HumanoidAnimController.cs b/Subsurface/Source/Characters/Animation/HumanoidAnimController.cs index 416133d62..99bab7f6e 100644 --- a/Subsurface/Source/Characters/Animation/HumanoidAnimController.cs +++ b/Subsurface/Source/Characters/Animation/HumanoidAnimController.cs @@ -360,7 +360,7 @@ namespace Barotrauma Limb leg = i == -1 ? leftLeg : rightLeg; Vector2 footPos = stepSize * -i; - if (stepSize.Y > 0.0f) stepSize.Y = -0.15f; + if (stepSize.Y < 0.0f) stepSize.Y = -0.15f; if (onSlope && stairs == null) { From b81ab4a480eb2ee25d186ee88f953971e50e8e32 Mon Sep 17 00:00:00 2001 From: Regalis Date: Mon, 29 May 2017 17:09:15 +0300 Subject: [PATCH 10/56] Fixed a null exception in AIObjectiveFindSafety --- .../Source/Characters/AI/Objectives/AIObjectiveFindSafety.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Subsurface/Source/Characters/AI/Objectives/AIObjectiveFindSafety.cs b/Subsurface/Source/Characters/AI/Objectives/AIObjectiveFindSafety.cs index 5c845dd78..7fb78c83f 100644 --- a/Subsurface/Source/Characters/AI/Objectives/AIObjectiveFindSafety.cs +++ b/Subsurface/Source/Characters/AI/Objectives/AIObjectiveFindSafety.cs @@ -188,7 +188,7 @@ namespace Barotrauma float waterPercentage = (hull.Volume / hull.FullVolume) * 100.0f; float fireAmount = 0.0f; - var nearbyHulls = character.AnimController.CurrentHull.GetConnectedHulls(3); + var nearbyHulls = hull.GetConnectedHulls(3); foreach (Hull hull2 in nearbyHulls) { From 33b3e5374b5516523efbd4f93fc7ac8d7d4bb923 Mon Sep 17 00:00:00 2001 From: Regalis Date: Mon, 29 May 2017 17:15:16 +0300 Subject: [PATCH 11/56] Fixed a null exception if the server log UI hasn't been opened and the max number of lines is reached --- Subsurface/Source/Networking/ServerLog.cs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Subsurface/Source/Networking/ServerLog.cs b/Subsurface/Source/Networking/ServerLog.cs index 2bb50d026..1018b9527 100644 --- a/Subsurface/Source/Networking/ServerLog.cs +++ b/Subsurface/Source/Networking/ServerLog.cs @@ -30,7 +30,7 @@ namespace Barotrauma.Networking Error } - private Color[] messageColor = new Color[] + private readonly Color[] messageColor = { Color.LightBlue, new Color(255, 142, 0), @@ -40,7 +40,7 @@ namespace Barotrauma.Networking Color.Red }; - private string[] messageTypeName = new string[] + private readonly string[] messageTypeName = { "Chat message", "Item interaction", @@ -105,9 +105,13 @@ namespace Barotrauma.Networking while (lines.Count > LinesPerFile) { - listBox.RemoveChild(listBox.children[0]); lines.Dequeue(); - } + } + + while (listBox != null && listBox.children.Count > LinesPerFile) + { + listBox.RemoveChild(listBox.children[0]); + } } public void CreateLogFrame() @@ -164,7 +168,7 @@ namespace Barotrauma.Networking if (listBox.BarScroll == 0.0f || listBox.BarScroll == 1.0f) listBox.BarScroll = 1.0f; GUIButton closeButton = new GUIButton(new Rectangle(-100, 10, 100, 15), "Close", Alignment.BottomRight, "", innerFrame); - closeButton.OnClicked = (GUIButton button, object userData) => + closeButton.OnClicked = (button, userData) => { LogFrame = null; return true; From 4a94f12c8b79310cc57754a2db0c4a68e0036286 Mon Sep 17 00:00:00 2001 From: Regalis Date: Mon, 29 May 2017 17:59:24 +0300 Subject: [PATCH 12/56] Item list is manually cleared if there are items left after unloading a sub. The "ItemList.Count == 0" assertion failed during one of the testing sessions. No idea why or how to reproduce it, but I hope this will do as a workaround until we figure out the actual cause. --- Subsurface/Source/Map/Submarine.cs | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/Subsurface/Source/Map/Submarine.cs b/Subsurface/Source/Map/Submarine.cs index ba24e6029..4e74bad2c 100644 --- a/Subsurface/Source/Map/Submarine.cs +++ b/Subsurface/Source/Map/Submarine.cs @@ -1277,9 +1277,25 @@ namespace Barotrauma if (GameMain.GameScreen.Cam != null) GameMain.GameScreen.Cam.TargetPos = Vector2.Zero; - Entity.RemoveAll(); + RemoveAll(); - System.Diagnostics.Debug.Assert(Item.ItemList.Count == 0); + if (Item.ItemList.Count > 0) + { + List items = new List(Item.ItemList); + foreach (Item item in items) + { + DebugConsole.ThrowError("Error while unloading submarines - item \""+item.Name+"\" not removed"); + try + { + item.Remove(); + } + catch (Exception e) + { + DebugConsole.ThrowError("Error while removing \"" + item.Name + "\"!", e); + } + } + Item.ItemList.Clear(); + } PhysicsBody.list.Clear(); From 52daeea1097776a6059a40aa2a8a79956722584f Mon Sep 17 00:00:00 2001 From: Regalis Date: Mon, 29 May 2017 18:41:36 +0300 Subject: [PATCH 13/56] Fixed limb lightsource flipping (or actually disabled flipping altogether and just made the lightsource follow the rotation of the limb) --- .../Source/Characters/Animation/Ragdoll.cs | 6 +++--- Subsurface/Source/Characters/Limb.cs | 1 - Subsurface/Source/Map/Lights/LightSource.cs | 17 +++++++---------- 3 files changed, 10 insertions(+), 14 deletions(-) diff --git a/Subsurface/Source/Characters/Animation/Ragdoll.cs b/Subsurface/Source/Characters/Animation/Ragdoll.cs index b3f1a19ab..f069d5d1f 100644 --- a/Subsurface/Source/Characters/Animation/Ragdoll.cs +++ b/Subsurface/Source/Characters/Animation/Ragdoll.cs @@ -645,10 +645,10 @@ namespace Barotrauma limb.Dir = Dir; - if (limb.LightSource != null) + /*if (limb.LightSource != null) { limb.LightSource.FlipX(); - } + }*/ if (limb.pullJoint != null) { @@ -943,7 +943,7 @@ namespace Barotrauma if (limb.LightSource != null) { - limb.LightSource.Rotation = limb.Rotation; + limb.LightSource.Rotation = dir == Direction.Right ? limb.body.DrawRotation : limb.body.DrawRotation - MathHelper.Pi; } limb.Update(deltaTime); } diff --git a/Subsurface/Source/Characters/Limb.cs b/Subsurface/Source/Characters/Limb.cs index 341415835..2fa474003 100644 --- a/Subsurface/Source/Characters/Limb.cs +++ b/Subsurface/Source/Characters/Limb.cs @@ -500,7 +500,6 @@ namespace Barotrauma if (LightSource != null) { LightSource.Position = body.DrawPosition; - LightSource.Rotation = body.DrawRotation; } foreach (WearableSprite wearable in wearingItems) diff --git a/Subsurface/Source/Map/Lights/LightSource.cs b/Subsurface/Source/Map/Lights/LightSource.cs index ef595d15e..e8bae993e 100644 --- a/Subsurface/Source/Map/Lights/LightSource.cs +++ b/Subsurface/Source/Map/Lights/LightSource.cs @@ -19,8 +19,7 @@ namespace Barotrauma.Lights private Sprite overrideLightTexture; private Texture2D texture; - - public SpriteEffects SpriteEffect = SpriteEffects.None; + public Sprite LightSprite; public Submarine ParentSub; @@ -520,7 +519,7 @@ namespace Barotrauma.Lights drawPos.Y = -drawPos.Y; - if (range > 1.0f && false) + /*if (range > 1.0f) { if (overrideLightTexture == null) { @@ -534,15 +533,14 @@ namespace Barotrauma.Lights overrideLightTexture.Draw(spriteBatch, drawPos, color * (color.A / 255.0f), overrideLightTexture.Origin, -Rotation, - new Vector2(overrideLightTexture.size.X / overrideLightTexture.SourceRect.Width, overrideLightTexture.size.Y / overrideLightTexture.SourceRect.Height), - SpriteEffect); + new Vector2(overrideLightTexture.size.X / overrideLightTexture.SourceRect.Width, overrideLightTexture.size.Y / overrideLightTexture.SourceRect.Height)); } } if (LightSprite != null) { - //LightSprite.Draw(spriteBatch, drawPos, Color, LightSprite.Origin, -Rotation, 1, SpriteEffect); - } + LightSprite.Draw(spriteBatch, drawPos, Color, LightSprite.Origin, -Rotation, 1); + }*/ if (NeedsRecalculation) { @@ -575,9 +573,8 @@ namespace Barotrauma.Lights ); } - public void FlipX() + /*public void FlipX() { - SpriteEffect = SpriteEffect == SpriteEffects.None ? SpriteEffects.FlipHorizontally : SpriteEffects.None; if (LightSprite != null) { Vector2 lightOrigin = LightSprite.Origin; @@ -591,7 +588,7 @@ namespace Barotrauma.Lights lightOrigin.X = overrideLightTexture.SourceRect.Width - lightOrigin.X; overrideLightTexture.Origin = lightOrigin; } - } + }*/ public void Remove() { From 9281795866f071f0bb9b973ebc0ffd469bcb85e4 Mon Sep 17 00:00:00 2001 From: Regalis Date: Mon, 29 May 2017 18:41:56 +0300 Subject: [PATCH 14/56] Null reference fixes --- Subsurface/Source/Characters/Character.cs | 2 +- Subsurface/Source/Map/Explosion.cs | 2 +- Subsurface/Source/Map/FireSource.cs | 2 +- Subsurface/Source/Map/MapEntity.cs | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Subsurface/Source/Characters/Character.cs b/Subsurface/Source/Characters/Character.cs index e12eed995..f54da6a98 100644 --- a/Subsurface/Source/Characters/Character.cs +++ b/Subsurface/Source/Characters/Character.cs @@ -1294,7 +1294,7 @@ namespace Barotrauma (c2.IsRemotePlayer || c2 == GameMain.Server.Character) && Vector2.Distance(c2.WorldPosition, c.WorldPosition) < NetConfig.CharacterIgnoreDistance); } - else + else if (Submarine.MainSub != null) { //disable AI characters that are far away from the sub and the controlled character c.Enabled = Vector2.Distance(Submarine.MainSub.WorldPosition, c.WorldPosition) < NetConfig.CharacterIgnoreDistance || diff --git a/Subsurface/Source/Map/Explosion.cs b/Subsurface/Source/Map/Explosion.cs index 2040e6d03..975dbd521 100644 --- a/Subsurface/Source/Map/Explosion.cs +++ b/Subsurface/Source/Map/Explosion.cs @@ -93,7 +93,7 @@ namespace Barotrauma item.ApplyStatusEffects(ActionType.OnFire, 1.0f); - if (item.Condition <= 0.0f) + if (item.Condition <= 0.0f && GameMain.Server != null) { GameMain.Server.CreateEntityEvent(item, new object[] { NetEntityEvent.Type.ApplyStatusEffect, ActionType.OnFire }); } diff --git a/Subsurface/Source/Map/FireSource.cs b/Subsurface/Source/Map/FireSource.cs index b15b307fd..977355bed 100644 --- a/Subsurface/Source/Map/FireSource.cs +++ b/Subsurface/Source/Map/FireSource.cs @@ -280,7 +280,7 @@ namespace Barotrauma if (item.Position.Y < position.Y - size.Y || item.Position.Y > hull.Rect.Y) continue; item.ApplyStatusEffects(ActionType.OnFire, deltaTime); - if (item.Condition <= 0.0f) + if (item.Condition <= 0.0f && GameMain.Server != null) { GameMain.Server.CreateEntityEvent(item, new object[] { NetEntityEvent.Type.ApplyStatusEffect, ActionType.OnFire }); } diff --git a/Subsurface/Source/Map/MapEntity.cs b/Subsurface/Source/Map/MapEntity.cs index 35a834d5f..2727c4054 100644 --- a/Subsurface/Source/Map/MapEntity.cs +++ b/Subsurface/Source/Map/MapEntity.cs @@ -382,8 +382,8 @@ namespace Barotrauma { item.Update(cam, deltaTime); } - - Entity.Spawner.Update(); + + Spawner?.Update(); } public virtual void Update(Camera cam, float deltaTime) { } From 7910b131203df234d9e28c5e5eb9b6ea254f5f68 Mon Sep 17 00:00:00 2001 From: Regalis Date: Mon, 29 May 2017 19:49:58 +0300 Subject: [PATCH 15/56] Hulls, gaps, structures & waypoints implement ShallowRemove (= a method that's used to remove entities without severing links between them when copypasting). Copied waypoints used to stay in the waypoint list, causing an exception to be thrown in PathFinder.GenerateNodes due to duplicate IDs. --- Subsurface/Source/Characters/AI/PathFinder.cs | 6 ++++ Subsurface/Source/Map/Gap.cs | 16 ++++++--- Subsurface/Source/Map/Hull.cs | 36 +++++++++++++++++-- Subsurface/Source/Map/Structure.cs | 29 ++++++++++++++- Subsurface/Source/Map/WayPoint.cs | 7 ++++ 5 files changed, 87 insertions(+), 7 deletions(-) diff --git a/Subsurface/Source/Characters/AI/PathFinder.cs b/Subsurface/Source/Characters/AI/PathFinder.cs index 78846b22c..f01d1b89c 100644 --- a/Subsurface/Source/Characters/AI/PathFinder.cs +++ b/Subsurface/Source/Characters/AI/PathFinder.cs @@ -45,6 +45,12 @@ namespace Barotrauma var nodes = new Dictionary(); foreach (WayPoint wayPoint in wayPoints) { + if (wayPoint == null) continue; + if (nodes.ContainsKey(wayPoint.ID)) + { + DebugConsole.ThrowError("Error in PathFinder.GenerateNodes (duplicate ID \"" + wayPoint.ID + "\")"); + continue; + } nodes.Add(wayPoint.ID, new PathNode(wayPoint)); } diff --git a/Subsurface/Source/Map/Gap.cs b/Subsurface/Source/Map/Gap.cs index 0724fae4e..f91af9527 100644 --- a/Subsurface/Source/Map/Gap.cs +++ b/Subsurface/Source/Map/Gap.cs @@ -670,19 +670,27 @@ namespace Barotrauma return null; } - public override void Remove() + public override void ShallowRemove() { - base.Remove(); - + base.ShallowRemove(); GapList.Remove(this); foreach (Hull hull in Hull.hullList) { hull.ConnectedGaps.Remove(this); } - } + public override void Remove() + { + base.Remove(); + GapList.Remove(this); + + foreach (Hull hull in Hull.hullList) + { + hull.ConnectedGaps.Remove(this); + } + } public override void OnMapLoaded() { diff --git a/Subsurface/Source/Map/Hull.cs b/Subsurface/Source/Map/Hull.cs index d2e30446a..e92b77ad6 100644 --- a/Subsurface/Source/Map/Hull.cs +++ b/Subsurface/Source/Map/Hull.cs @@ -332,6 +332,39 @@ namespace Barotrauma Pressure = surface; } + public override void ShallowRemove() + { + base.Remove(); + hullList.Remove(this); + + if (Submarine == null || (!Submarine.Loading && !Submarine.Unloading)) + { + Item.UpdateHulls(); + Gap.UpdateHulls(); + } + + List fireSourcesToRemove = new List(fireSources); + foreach (FireSource fireSource in fireSourcesToRemove) + { + fireSource.Remove(); + } + fireSources.Clear(); + + if (soundIndex > -1) + { + Sounds.SoundManager.Stop(soundIndex); + soundIndex = -1; + } + + if (entityGrids != null) + { + foreach (EntityGrid entityGrid in entityGrids) + { + entityGrid.RemoveEntity(this); + } + } + } + public override void Remove() { base.Remove(); @@ -355,8 +388,7 @@ namespace Barotrauma Sounds.SoundManager.Stop(soundIndex); soundIndex = -1; } - - //renderer.Dispose(); + if (entityGrids != null) { foreach (EntityGrid entityGrid in entityGrids) diff --git a/Subsurface/Source/Map/Structure.cs b/Subsurface/Source/Map/Structure.cs index 39eaa4e99..1ec5885a4 100644 --- a/Subsurface/Source/Map/Structure.cs +++ b/Subsurface/Source/Map/Structure.cs @@ -452,7 +452,34 @@ namespace Barotrauma } } } - + + public override void ShallowRemove() + { + base.ShallowRemove(); + + if (WallList.Contains(this)) WallList.Remove(this); + + if (bodies != null) + { + foreach (Body b in bodies) + GameMain.World.RemoveBody(b); + } + + if (sections != null) + { + foreach (WallSection s in sections) + { + if (s.gap != null) + { + s.gap.Remove(); + s.gap = null; + } + } + } + + if (convexHulls != null) convexHulls.ForEach(x => x.Remove()); + } + public override void Remove() { base.Remove(); diff --git a/Subsurface/Source/Map/WayPoint.cs b/Subsurface/Source/Map/WayPoint.cs index fcaf02b5c..8e7417812 100644 --- a/Subsurface/Source/Map/WayPoint.cs +++ b/Subsurface/Source/Map/WayPoint.cs @@ -820,6 +820,13 @@ namespace Barotrauma } } + public override void ShallowRemove() + { + base.ShallowRemove(); + + WayPointList.Remove(this); + } + public override void Remove() { base.Remove(); From 4651e666bf0638ef499caae8049289463d9f626c Mon Sep 17 00:00:00 2001 From: Regalis Date: Tue, 30 May 2017 17:04:14 +0300 Subject: [PATCH 16/56] All Powered components of an item are taken into account in grid power/load calculations, not just the first one --- .../Items/Components/Power/PowerTransfer.cs | 67 ++++++++++--------- 1 file changed, 35 insertions(+), 32 deletions(-) diff --git a/Subsurface/Source/Items/Components/Power/PowerTransfer.cs b/Subsurface/Source/Items/Components/Power/PowerTransfer.cs index ba246c616..26a424436 100644 --- a/Subsurface/Source/Items/Components/Power/PowerTransfer.cs +++ b/Subsurface/Source/Items/Components/Power/PowerTransfer.cs @@ -127,45 +127,48 @@ namespace Barotrauma.Items.Components if (it.Condition <= 0.0f) continue; - Powered powered = it.GetComponent(); - if (powered == null || !powered.IsActive) continue; - - if (connectedList.Contains(powered)) continue; - - PowerTransfer powerTransfer = powered as PowerTransfer; - if (powerTransfer != null) + foreach (Powered powered in it.GetComponents()) { - powerTransfer.CheckJunctions(deltaTime); - continue; - } - - PowerContainer powerContainer = powered as PowerContainer; - if (powerContainer != null) - { - if (recipient.Name == "power_in") + if (powered == null || !powered.IsActive) continue; + + if (connectedList.Contains(powered)) continue; + + PowerTransfer powerTransfer = powered as PowerTransfer; + if (powerTransfer != null) { - fullLoad += powerContainer.CurrPowerConsumption; + powerTransfer.CheckJunctions(deltaTime); + continue; + } + + PowerContainer powerContainer = powered as PowerContainer; + if (powerContainer != null) + { + if (recipient.Name == "power_in") + { + fullLoad += powerContainer.CurrPowerConsumption; + } + else + { + fullPower += powerContainer.CurrPowerOutput; + } } else { - fullPower += powerContainer.CurrPowerOutput; - } - } - else - { - connectedList.Add(powered); - //positive power consumption = the construction requires power -> increase load - if (powered.CurrPowerConsumption > 0.0f) - { - fullLoad += powered.CurrPowerConsumption; - } - else if (powered.CurrPowerConsumption < 0.0f) - //negative power consumption = the construction is a - //generator/battery or another junction box - { - fullPower -= powered.CurrPowerConsumption; + connectedList.Add(powered); + //positive power consumption = the construction requires power -> increase load + if (powered.CurrPowerConsumption > 0.0f) + { + fullLoad += powered.CurrPowerConsumption; + } + else if (powered.CurrPowerConsumption < 0.0f) + //negative power consumption = the construction is a + //generator/battery or another junction box + { + fullPower -= powered.CurrPowerConsumption; + } } } + } } } From 4c7a3b34fe3f6adbb9ea195845a18ca620401f74 Mon Sep 17 00:00:00 2001 From: Regalis Date: Tue, 30 May 2017 19:26:12 +0300 Subject: [PATCH 17/56] Console commands can be used on characters whose name is a number (FindMatchingCharacter method interpreted the name parameter as an index) --- Subsurface/Source/DebugConsole.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Subsurface/Source/DebugConsole.cs b/Subsurface/Source/DebugConsole.cs index cb6c83ada..9e117a51d 100644 --- a/Subsurface/Source/DebugConsole.cs +++ b/Subsurface/Source/DebugConsole.cs @@ -850,7 +850,7 @@ namespace Barotrauma int characterIndex; string characterName; - if (int.TryParse(commands.Last(), out characterIndex)) + if (int.TryParse(commands.Last(), out characterIndex) && commands.Length > 2) { characterName = string.Join(" ", commands.Skip(1).Take(commands.Length - 2)).ToLowerInvariant(); } From 87788b449ef4175b5c013de187693fd06a89d643 Mon Sep 17 00:00:00 2001 From: Regalis Date: Tue, 30 May 2017 19:47:29 +0300 Subject: [PATCH 18/56] Disabled EntityEvent debug messages from release builds --- .../NetEntityEvent/ClientEntityEventManager.cs | 12 ++++++++---- .../NetEntityEvent/ServerEntityEventManager.cs | 2 ++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/Subsurface/Source/Networking/NetEntityEvent/ClientEntityEventManager.cs b/Subsurface/Source/Networking/NetEntityEvent/ClientEntityEventManager.cs index ded8fc1e3..3c168e98a 100644 --- a/Subsurface/Source/Networking/NetEntityEvent/ClientEntityEventManager.cs +++ b/Subsurface/Source/Networking/NetEntityEvent/ClientEntityEventManager.cs @@ -112,12 +112,15 @@ namespace Barotrauma.Networking unreceivedEntityEventCount = msg.ReadUInt16(); firstNewID = msg.ReadUInt16(); +#if DEBUG DebugConsole.NewMessage("received midround syncing msg, unreceived: "+unreceivedEntityEventCount+", first new ID: "+firstNewID, Microsoft.Xna.Framework.Color.Yellow); - +#endif } else if (firstNewID != null) { +#if DEBUG DebugConsole.NewMessage("midround syncing complete, switching to ID "+ (UInt16)(firstNewID - 1), Microsoft.Xna.Framework.Color.Yellow); +#endif lastReceivedID = (UInt16)(firstNewID - 1); firstNewID = null; @@ -133,8 +136,6 @@ namespace Barotrauma.Networking if (entityID == 0 && thisEventID == (UInt16)(lastReceivedID + 1)) { - DebugConsole.NewMessage("received empty event " + thisEventID, Microsoft.Xna.Framework.Color.Orange); - msg.ReadPadBits(); lastReceivedID++; continue; @@ -147,6 +148,7 @@ namespace Barotrauma.Networking //skip the event if we've already received it or if the entity isn't found if (thisEventID != (UInt16)(lastReceivedID + 1) || entity == null) { +#if DEBUG if (thisEventID != (UInt16)(lastReceivedID + 1)) { DebugConsole.NewMessage("received msg " + thisEventID + " (waiting for "+ (lastReceivedID+1) + ")", thisEventID Date: Wed, 31 May 2017 17:45:27 +0300 Subject: [PATCH 19/56] WallAttackPos isn't reset when updating EnemyAIController targets if the target doesn't change --- Subsurface/Source/Characters/AI/EnemyAIController.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Subsurface/Source/Characters/AI/EnemyAIController.cs b/Subsurface/Source/Characters/AI/EnemyAIController.cs index bc2238579..a18c4e22e 100644 --- a/Subsurface/Source/Characters/AI/EnemyAIController.cs +++ b/Subsurface/Source/Characters/AI/EnemyAIController.cs @@ -369,7 +369,7 @@ namespace Barotrauma //sight/hearing range public void UpdateTargets(Character character) { - wallAttackPos = Vector2.Zero; + var prevAiTarget = selectedAiTarget; selectedAiTarget = null; selectedTargetMemory = null; @@ -456,6 +456,11 @@ namespace Barotrauma } } } + + if (selectedAiTarget != prevAiTarget) + { + wallAttackPos = Vector2.Zero; + } } From 6cc4f7c57552ba12ff5437fc91dc769bf21cd28b Mon Sep 17 00:00:00 2001 From: Regalis Date: Wed, 31 May 2017 19:38:39 +0300 Subject: [PATCH 20/56] v0.6.0.0 --- .../Tigerthresher/tigerthresher.xml | 2 +- .../Content/Items/Engine/pingCircle.png | Bin 172754 -> 268101 bytes Subsurface/Properties/AssemblyInfo.cs | 6 +++--- Subsurface/changelog.txt | 3 +++ 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Subsurface/Content/Characters/Tigerthresher/tigerthresher.xml b/Subsurface/Content/Characters/Tigerthresher/tigerthresher.xml index 1c9f3935c..aa3d7d237 100644 --- a/Subsurface/Content/Characters/Tigerthresher/tigerthresher.xml +++ b/Subsurface/Content/Characters/Tigerthresher/tigerthresher.xml @@ -19,7 +19,7 @@ - + diff --git a/Subsurface/Content/Items/Engine/pingCircle.png b/Subsurface/Content/Items/Engine/pingCircle.png index 6449f1272b232429236cc49fe20adeb54937ce62..b27f0d10ab4abcb217e243ef99a2ef540c269756 100644 GIT binary patch literal 268101 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

ZALEd}7mfwyGTh`5K?|>~!;28hCi`6cb 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ªY2diAG@IALs@)?1 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 b_@4s+6BBE>K(-TA00000NkvXXu0mjf>|wv2 literal 172754 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

Zfcji*;F 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 Date: Thu, 1 Jun 2017 19:37:08 +0300 Subject: [PATCH 21/56] Readded spam filter --- Subsurface/Source/Networking/ChatMessage.cs | 56 ++++++++++++++++++--- Subsurface/Source/Networking/Client.cs | 4 ++ Subsurface/Source/Networking/GameServer.cs | 19 ++++--- 3 files changed, 65 insertions(+), 14 deletions(-) diff --git a/Subsurface/Source/Networking/ChatMessage.cs b/Subsurface/Source/Networking/ChatMessage.cs index c2ef0099d..27c0eb21b 100644 --- a/Subsurface/Source/Networking/ChatMessage.cs +++ b/Subsurface/Source/Networking/ChatMessage.cs @@ -134,23 +134,65 @@ namespace Barotrauma.Networking msg.Write(Text); } - static public void ServerRead(NetIncomingMessage msg, Client c) + public static void ServerRead(NetIncomingMessage msg, Client c) { UInt16 ID = msg.ReadUInt16(); string txt = msg.ReadString(); - if (txt.Length > MaxLength) { txt = txt.Substring(0, MaxLength); } - if (NetIdUtils.IdMoreRecent(ID, c.lastSentChatMsgID)) + if (!NetIdUtils.IdMoreRecent(ID, c.lastSentChatMsgID)) return; + + c.lastSentChatMessages.Add(txt); + if (c.lastSentChatMessages.Count > 10) { - //this chat message is new to the server - GameMain.Server.SendChatMessage(txt, null, c); - //GameMain.Server.AddChatMessage(txt, ChatMessageType.Default, c.name); - c.lastSentChatMsgID = ID; + c.lastSentChatMessages.RemoveRange(0, c.lastSentChatMessages.Count-10); } + + + c.lastSentChatMsgID = ID; + + //SPAM FILTER + if (c.ChatSpamTimer > 0.0f) + { + //player has already been spamming, stop again + ChatMessage denyMsg = ChatMessage.Create("", "You have been blocked by the spam filter. Try again after 10 seconds.", ChatMessageType.Server, null); + c.ChatSpamTimer = 10.0f; + GameMain.Server.SendChatMessage(denyMsg, c); + return; + } + + float similarity = 0.0f; + for (int i = 0; i < c.lastSentChatMessages.Count; i++) + { + float closeFactor = 1.0f / (c.lastSentChatMessages.Count - i); + int levenshteinDist = ToolBox.LevenshteinDistance(txt, c.lastSentChatMessages[i]); + similarity += Math.Max((txt.Length - levenshteinDist) / (float)txt.Length * closeFactor, 0.0f); + } + + if (similarity + c.ChatSpamSpeed > 5.0f) + { + c.ChatSpamCount++; + + if (c.ChatSpamCount > 3) + { + //kick for spamming too much + GameMain.Server.KickClient(c); + } + else + { + ChatMessage denyMsg = ChatMessage.Create("", "You have been blocked by the spam filter. Try again after 10 seconds.", ChatMessageType.Server, null); + c.ChatSpamTimer = 10.0f; + GameMain.Server.SendChatMessage(denyMsg, c); + } + return; + } + + c.ChatSpamSpeed += similarity; + + GameMain.Server.SendChatMessage(txt, null, c); } public void ServerWrite(NetOutgoingMessage msg, Client c) diff --git a/Subsurface/Source/Networking/Client.cs b/Subsurface/Source/Networking/Client.cs index bec8eb339..dce365954 100644 --- a/Subsurface/Source/Networking/Client.cs +++ b/Subsurface/Source/Networking/Client.cs @@ -39,6 +39,10 @@ namespace Barotrauma.Networking public List chatMsgQueue = new List(); public UInt16 lastChatMsgQueueID; + + + //latest chat messages sent by this client + public List lastSentChatMessages = new List(); public float ChatSpamSpeed; public float ChatSpamTimer; public int ChatSpamCount; diff --git a/Subsurface/Source/Networking/GameServer.cs b/Subsurface/Source/Networking/GameServer.cs index 8f4055560..d84098147 100644 --- a/Subsurface/Source/Networking/GameServer.cs +++ b/Subsurface/Source/Networking/GameServer.cs @@ -1451,7 +1451,17 @@ namespace Barotrauma.Networking if (c.Character == null || !c.inGame) continue; } } - + + public void SendChatMessage(ChatMessage msg, Client recipient) + { + msg.NetStateID = recipient.chatMsgQueue.Count > 0 ? + (ushort)(recipient.chatMsgQueue.Last().NetStateID + 1) : + (ushort)(recipient.lastRecvChatMsgID + 1); + + recipient.chatMsgQueue.Add(msg); + recipient.lastChatMsgQueueID = msg.NetStateID; + } + ///

/// Add the message to the chatbox and pass it to all clients who can receive it /// @@ -1628,13 +1638,8 @@ namespace Barotrauma.Networking modifiedMessage, (ChatMessageType)type, senderCharacter); - - chatMsg.NetStateID = client.chatMsgQueue.Count > 0 ? - (ushort)(client.chatMsgQueue.Last().NetStateID + 1) : - (ushort)(client.lastRecvChatMsgID + 1); - client.chatMsgQueue.Add(chatMsg); - client.lastChatMsgQueueID = chatMsg.NetStateID; + SendChatMessage(chatMsg, client); } string myReceivedMessage = message; From ff322bd7a2c49c8abf590fc3e687cf381a570cb7 Mon Sep 17 00:00:00 2001 From: Regalis Date: Thu, 1 Jun 2017 19:38:20 +0300 Subject: [PATCH 22/56] Fixed "component doesn't have a GUIFrame" errors when selecting an artifact holder (or any other selectable item with non-selectable components) --- Subsurface/Source/Items/Item.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Subsurface/Source/Items/Item.cs b/Subsurface/Source/Items/Item.cs index a2eae6222..26f502ddc 100644 --- a/Subsurface/Source/Items/Item.cs +++ b/Subsurface/Source/Items/Item.cs @@ -1212,7 +1212,7 @@ namespace Barotrauma foreach (ItemComponent ic in components) { - ic.UpdateHUD(character); + if (ic.CanBeSelected) ic.UpdateHUD(character); } } From 9adb3fd8fa3fd4c385d89592f57f1359a2178dda Mon Sep 17 00:00:00 2001 From: Regalis Date: Thu, 1 Jun 2017 19:51:51 +0300 Subject: [PATCH 23/56] Disabled a leftover entityevent debug message --- .../Networking/NetEntityEvent/ServerEntityEventManager.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Subsurface/Source/Networking/NetEntityEvent/ServerEntityEventManager.cs b/Subsurface/Source/Networking/NetEntityEvent/ServerEntityEventManager.cs index dfb4de508..332f9be06 100644 --- a/Subsurface/Source/Networking/NetEntityEvent/ServerEntityEventManager.cs +++ b/Subsurface/Source/Networking/NetEntityEvent/ServerEntityEventManager.cs @@ -340,7 +340,9 @@ namespace Barotrauma.Networking } else { +#if DEBUG DebugConsole.NewMessage("received msg " + thisEventID, Microsoft.Xna.Framework.Color.Green); +#endif UInt16 characterStateID = msg.ReadUInt16(); From a07f2c8346de1697dbb6de85af5199809ee6da42 Mon Sep 17 00:00:00 2001 From: Regalis Date: Thu, 1 Jun 2017 22:00:55 +0300 Subject: [PATCH 24/56] Spam filter tweaking: ChatSpamSpeed increases even if messages aren't similar, clients can get kicked out if they keep sending messages after they've been muted --- Subsurface/Source/Networking/ChatMessage.cs | 37 +++++++++++---------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/Subsurface/Source/Networking/ChatMessage.cs b/Subsurface/Source/Networking/ChatMessage.cs index 27c0eb21b..d527d2a81 100644 --- a/Subsurface/Source/Networking/ChatMessage.cs +++ b/Subsurface/Source/Networking/ChatMessage.cs @@ -14,6 +14,8 @@ namespace Barotrauma.Networking { public const int MaxLength = 150; + public const int MaxMessagesPerPacket = 10; + public const float SpeakRange = 2000.0f; public static Color[] MessageColor = @@ -138,32 +140,23 @@ namespace Barotrauma.Networking { UInt16 ID = msg.ReadUInt16(); string txt = msg.ReadString(); + if (txt == null) txt = ""; + + if (!NetIdUtils.IdMoreRecent(ID, c.lastSentChatMsgID)) return; + + c.lastSentChatMsgID = ID; + if (txt.Length > MaxLength) { txt = txt.Substring(0, MaxLength); } - if (!NetIdUtils.IdMoreRecent(ID, c.lastSentChatMsgID)) return; - c.lastSentChatMessages.Add(txt); if (c.lastSentChatMessages.Count > 10) { c.lastSentChatMessages.RemoveRange(0, c.lastSentChatMessages.Count-10); } - - - c.lastSentChatMsgID = ID; - - //SPAM FILTER - if (c.ChatSpamTimer > 0.0f) - { - //player has already been spamming, stop again - ChatMessage denyMsg = ChatMessage.Create("", "You have been blocked by the spam filter. Try again after 10 seconds.", ChatMessageType.Server, null); - c.ChatSpamTimer = 10.0f; - GameMain.Server.SendChatMessage(denyMsg, c); - return; - } - + float similarity = 0.0f; for (int i = 0; i < c.lastSentChatMessages.Count; i++) { @@ -190,7 +183,15 @@ namespace Barotrauma.Networking return; } - c.ChatSpamSpeed += similarity; + c.ChatSpamSpeed += similarity + 0.5f; + + if (c.ChatSpamTimer > 0.0f) + { + ChatMessage denyMsg = ChatMessage.Create("", "You have been blocked by the spam filter. Try again after 10 seconds.", ChatMessageType.Server, null); + c.ChatSpamTimer = 10.0f; + GameMain.Server.SendChatMessage(denyMsg, c); + return; + } GameMain.Server.SendChatMessage(txt, null, c); } @@ -213,7 +214,7 @@ namespace Barotrauma.Networking } } - static public void ClientRead(NetIncomingMessage msg) + public static void ClientRead(NetIncomingMessage msg) { UInt16 ID = msg.ReadUInt16(); ChatMessageType type = (ChatMessageType)msg.ReadByte(); From 70e862e92f522f5af458aba533cf16679f20dd09 Mon Sep 17 00:00:00 2001 From: Regalis Date: Thu, 1 Jun 2017 22:07:01 +0300 Subject: [PATCH 25/56] - both clients and server limit the number of chat messages written per packet - added an error message if MTU is exceeded - if the server disconnects a client while reading a message from them, the rest of the message is ignored --- Subsurface/Source/Networking/GameClient.cs | 29 ++++++++++++-------- Subsurface/Source/Networking/GameServer.cs | 31 +++++++++++++++++----- 2 files changed, 42 insertions(+), 18 deletions(-) diff --git a/Subsurface/Source/Networking/GameClient.cs b/Subsurface/Source/Networking/GameClient.cs index 5d123786a..0f35ba280 100644 --- a/Subsurface/Source/Networking/GameClient.cs +++ b/Subsurface/Source/Networking/GameClient.cs @@ -958,12 +958,17 @@ namespace Barotrauma.Networking outmsg.Write(ChatMessage.LastID); chatMsgQueue.RemoveAll(cMsg => !NetIdUtils.IdMoreRecent(cMsg.NetStateID, lastSentChatMsgID)); - - foreach (ChatMessage cMsg in chatMsgQueue) + for (int i = 0; i < chatMsgQueue.Count && i < ChatMessage.MaxMessagesPerPacket; i++) { - cMsg.ClientWrite(outmsg); + chatMsgQueue[i].ClientWrite(outmsg); } outmsg.Write((byte)ClientNetObject.END_OF_MESSAGE); + + if (outmsg.LengthBytes > client.Configuration.MaximumTransmissionUnit) + { + DebugConsole.ThrowError("Maximum packet size exceeded (" + outmsg.LengthBytes + " > " + client.Configuration.MaximumTransmissionUnit); + } + client.SendMessage(outmsg, NetDeliveryMethod.Unreliable); } @@ -978,20 +983,22 @@ namespace Barotrauma.Networking outmsg.Write(entityEventManager.LastReceivedID); chatMsgQueue.RemoveAll(cMsg => !NetIdUtils.IdMoreRecent(cMsg.NetStateID, lastSentChatMsgID)); - - foreach (ChatMessage cMsg in chatMsgQueue) + for (int i = 0; i < chatMsgQueue.Count && i < ChatMessage.MaxMessagesPerPacket; i++) { - cMsg.ClientWrite(outmsg); - } - - if (Character.Controlled != null) - { - Character.Controlled.ClientWrite(outmsg); + chatMsgQueue[i].ClientWrite(outmsg); } + + Character.Controlled?.ClientWrite(outmsg); entityEventManager.Write(outmsg, client.ServerConnection); outmsg.Write((byte)ClientNetObject.END_OF_MESSAGE); + + if (outmsg.LengthBytes > client.Configuration.MaximumTransmissionUnit) + { + DebugConsole.ThrowError("Maximum packet size exceeded (" + outmsg.LengthBytes + " > " + client.Configuration.MaximumTransmissionUnit); + } + client.SendMessage(outmsg, NetDeliveryMethod.Unreliable); } diff --git a/Subsurface/Source/Networking/GameServer.cs b/Subsurface/Source/Networking/GameServer.cs index d84098147..bb57df447 100644 --- a/Subsurface/Source/Networking/GameServer.cs +++ b/Subsurface/Source/Networking/GameServer.cs @@ -652,8 +652,10 @@ namespace Barotrauma.Networking break; default: return; - //break; } + + //don't read further messages if the client has been disconnected (kicked due to spam for example) + if (!connectedClients.Contains(c)) break; } } @@ -752,6 +754,9 @@ namespace Barotrauma.Networking default: return; } + + //don't read further messages if the client has been disconnected (kicked due to spam for example) + if (!connectedClients.Contains(c)) break; } } @@ -846,9 +851,8 @@ namespace Barotrauma.Networking outmsg.Write(c.lastSentEntityEventID); c.chatMsgQueue.RemoveAll(cMsg => !NetIdUtils.IdMoreRecent(cMsg.NetStateID, c.lastRecvChatMsgID)); - - int maxChatMsgsPerPacket = 50; - for (int i = 0; i < c.chatMsgQueue.Count && i < maxChatMsgsPerPacket; i++) + + for (int i = 0; i < c.chatMsgQueue.Count && i < ChatMessage.MaxMessagesPerPacket; i++) { c.chatMsgQueue[i].ServerWrite(outmsg, c); } @@ -897,6 +901,12 @@ namespace Barotrauma.Networking entityEventManager.Write(c, outmsg); outmsg.Write((byte)ServerNetObject.END_OF_MESSAGE); + + if (outmsg.LengthBytes > config.MaximumTransmissionUnit) + { + DebugConsole.ThrowError("Maximum packet size exceeded (" + outmsg.LengthBytes + " > " + config.MaximumTransmissionUnit); + } + server.SendMessage(outmsg, c.Connection, NetDeliveryMethod.Unreliable); } @@ -959,12 +969,19 @@ namespace Barotrauma.Networking outmsg.Write(c.lastSentChatMsgID); //send this to client so they know which chat messages weren't received by the server c.chatMsgQueue.RemoveAll(cMsg => !NetIdUtils.IdMoreRecent(cMsg.NetStateID, c.lastRecvChatMsgID)); - foreach (ChatMessage cMsg in c.chatMsgQueue) + + for (int i = 0; i < c.chatMsgQueue.Count && i < ChatMessage.MaxMessagesPerPacket; i++) { - cMsg.ServerWrite(outmsg, c); - } + c.chatMsgQueue[i].ServerWrite(outmsg, c); + } outmsg.Write((byte)ServerNetObject.END_OF_MESSAGE); + + if (outmsg.LengthBytes > config.MaximumTransmissionUnit) + { + DebugConsole.ThrowError("Maximum packet size exceeded (" + outmsg.LengthBytes + " > " + config.MaximumTransmissionUnit); + } + server.SendMessage(outmsg, c.Connection, NetDeliveryMethod.Unreliable); } From 0e5cfbb579c8e30a0b2e593be9bbf29fdd07d2f9 Mon Sep 17 00:00:00 2001 From: Regalis Date: Fri, 2 Jun 2017 17:25:42 +0300 Subject: [PATCH 26/56] Reactor autotemp is logged --- Subsurface/Source/Items/Components/Machines/Reactor.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Subsurface/Source/Items/Components/Machines/Reactor.cs b/Subsurface/Source/Items/Components/Machines/Reactor.cs index 8018300a1..68e544d8a 100644 --- a/Subsurface/Source/Items/Components/Machines/Reactor.cs +++ b/Subsurface/Source/Items/Components/Machines/Reactor.cs @@ -262,7 +262,8 @@ namespace Barotrauma.Items.Components ", Fission rate: " + (int)fissionRate + ", Cooling rate: " + (int)coolingRate + ", Cooling rate: " + coolingRate + - ", Shutdown temp: " + shutDownTemp, + ", Shutdown temp: " + shutDownTemp + + (autoTemp ? "Autotemp ON" : "Autotemp OFF"), ServerLog.MessageType.ItemInteraction); nextServerLogWriteTime = null; From 6aae2f0ae98747e61645716f835777bab9cbcaab Mon Sep 17 00:00:00 2001 From: Regalis Date: Fri, 2 Jun 2017 21:54:20 +0300 Subject: [PATCH 27/56] - Job assignment fix: characters that are in a different team don't add to the assigned job count. - If a client doesn't enter the game within 30 seconds of starting the game, their character is automatically killed (otherwise the character would stay in-game in the disabled state indefinitely). - Clients don't update CombatMissions if neither team has any characters (the clients may not have received messages about the characters spawning yet, which would cause them to show the "team dead" message immediately when the round starts). --- .../Source/Events/Missions/CombatMission.cs | 8 +++++++- Subsurface/Source/Networking/GameServer.cs | 19 +++++++++++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/Subsurface/Source/Events/Missions/CombatMission.cs b/Subsurface/Source/Events/Missions/CombatMission.cs index cc2335880..08360dd2a 100644 --- a/Subsurface/Source/Events/Missions/CombatMission.cs +++ b/Subsurface/Source/Events/Missions/CombatMission.cs @@ -166,7 +166,13 @@ namespace Barotrauma } } } - + + if (GameMain.Client == null) + { + //no characters in either team, i.e. the client hasn't received spawn messages yet + if (crews[0].Count == 0 && crews[1].Count == 0) return; + } + bool[] teamDead = { crews[0].All(c => c.IsDead || c.IsUnconscious), diff --git a/Subsurface/Source/Networking/GameServer.cs b/Subsurface/Source/Networking/GameServer.cs index bb57df447..d51503625 100644 --- a/Subsurface/Source/Networking/GameServer.cs +++ b/Subsurface/Source/Networking/GameServer.cs @@ -33,6 +33,8 @@ namespace Barotrauma.Networking private DateTime sparseUpdateTimer; private DateTime refreshMasterTimer; + private DateTime roundStartTime; + private RestClient restClient; private bool masterServerResponded; private IRestResponse masterServerResponse; @@ -534,6 +536,14 @@ namespace Barotrauma.Networking } else { + //if 30 seconds have passed since the round started and the client isn't ingame yet, + //kill the clients character + if (gameStarted && c.Character != null && (DateTime.Now - roundStartTime).Seconds > 30.0f) + { + c.Character.Kill(CauseOfDeath.Disconnected); + c.Character = null; + } + ClientWriteLobby(c); } } @@ -1231,6 +1241,8 @@ namespace Barotrauma.Networking gameStarted = true; initiatedStartGame = false; + roundStartTime = DateTime.Now; + yield return CoroutineStatus.Success; } @@ -1944,6 +1956,9 @@ namespace Barotrauma.Networking unassigned = new List(unassigned); int[] assignedClientCount = new int[JobPrefab.List.Count]; + + int teamID = 0; + if (unassigned.Count > 0) teamID = unassigned[0].TeamID; if (assignHost) { @@ -1956,7 +1971,7 @@ namespace Barotrauma.Networking assignedClientCount[JobPrefab.List.IndexOf(myCharacter.Info.Job.Prefab)] = 1; } } - else if (myCharacter != null && !myCharacter.IsDead) + else if (myCharacter != null && !myCharacter.IsDead && myCharacter.TeamID == teamID) { assignedClientCount[JobPrefab.List.IndexOf(myCharacter.Info.Job.Prefab)]++; } @@ -1964,7 +1979,7 @@ namespace Barotrauma.Networking //count the clients who already have characters with an assigned job foreach (Client c in connectedClients) { - if (unassigned.Contains(c)) continue; + if (c.TeamID != teamID || unassigned.Contains(c)) continue; if (c.Character != null && !c.Character.IsDead) { assignedClientCount[JobPrefab.List.IndexOf(c.Character.Info.Job.Prefab)]++; From fe813550396cc5d2806523011a95fbc723240bb9 Mon Sep 17 00:00:00 2001 From: Regalis Date: Sat, 3 Jun 2017 16:32:44 +0300 Subject: [PATCH 28/56] Fixed crashing if attempting to send radio messages without a radio in the inventory (Undertow Games - first-rate QA since 2014) --- Subsurface/Source/Networking/GameServer.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Subsurface/Source/Networking/GameServer.cs b/Subsurface/Source/Networking/GameServer.cs index d51503625..46dc35c43 100644 --- a/Subsurface/Source/Networking/GameServer.cs +++ b/Subsurface/Source/Networking/GameServer.cs @@ -1613,7 +1613,7 @@ namespace Barotrauma.Networking if (senderCharacter == null) return; //return if senderCharacter doesn't have a working radio - var radio = senderCharacter.Inventory.Items.First(i => i != null && i.GetComponent() != null); + var radio = senderCharacter.Inventory.Items.FirstOrDefault(i => i != null && i.GetComponent() != null); if (radio == null) return; senderRadio = radio.GetComponent(); @@ -1699,11 +1699,11 @@ namespace Barotrauma.Networking case ChatMessageType.Radio: if (!receiver.IsDead) { - var receiverItem = receiver.Inventory.Items.First(i => i != null && i.GetComponent() != null); + var receiverItem = receiver.Inventory.Items.FirstOrDefault(i => i?.GetComponent() != null); //client doesn't have a radio -> don't send if (receiverItem == null) return ""; - var senderItem = sender.Inventory.Items.First(i => i != null && i.GetComponent() != null); + var senderItem = sender.Inventory.Items.FirstOrDefault(i => i?.GetComponent() != null); if (senderItem == null) return ""; var receiverRadio = receiverItem.GetComponent(); From 2b27755b619045fea9bc00423bb844073835c8c5 Mon Sep 17 00:00:00 2001 From: Regalis Date: Sat, 3 Jun 2017 18:08:47 +0300 Subject: [PATCH 29/56] Team ID assignment fixes: - Clients are assigned to team 1 in sandbox mode (because the host is also in team 1). - Respawning characters are always assigned to team 1 (otherwise mid-round joining clients would end up in team 0 because the team assignment is done when the round starts) --- Subsurface/Source/Events/Missions/CombatMission.cs | 4 ++-- Subsurface/Source/Events/Missions/Mission.cs | 2 +- Subsurface/Source/Networking/GameServer.cs | 14 +++++++++----- Subsurface/Source/Networking/RespawnManager.cs | 4 ++++ 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/Subsurface/Source/Events/Missions/CombatMission.cs b/Subsurface/Source/Events/Missions/CombatMission.cs index 08360dd2a..a010effed 100644 --- a/Subsurface/Source/Events/Missions/CombatMission.cs +++ b/Subsurface/Source/Events/Missions/CombatMission.cs @@ -90,7 +90,7 @@ namespace Barotrauma return teamNames[teamID]; } - public override bool AssignTeamIDs(List clients, out int hostTeam) + public override bool AssignTeamIDs(List clients, out byte hostTeam) { List randList = new List(clients); for (int i = 0; i < randList.Count; i++) @@ -115,7 +115,7 @@ namespace Barotrauma } if (halfPlayers * 2 == randList.Count) { - hostTeam = Rand.Range(1, 2); + hostTeam = (byte)Rand.Range(1, 2); } else if (halfPlayers * 2 < randList.Count) { diff --git a/Subsurface/Source/Events/Missions/Mission.cs b/Subsurface/Source/Events/Missions/Mission.cs index 119957f6a..fe90876ea 100644 --- a/Subsurface/Source/Events/Missions/Mission.cs +++ b/Subsurface/Source/Events/Missions/Mission.cs @@ -230,7 +230,7 @@ namespace Barotrauma public virtual void Update(float deltaTime) { } - public virtual bool AssignTeamIDs(List clients, out int hostTeam) + public virtual bool AssignTeamIDs(List clients, out byte hostTeam) { clients.ForEach(c => c.TeamID = 1); hostTeam = 1; diff --git a/Subsurface/Source/Networking/GameServer.cs b/Subsurface/Source/Networking/GameServer.cs index 46dc35c43..88131ded2 100644 --- a/Subsurface/Source/Networking/GameServer.cs +++ b/Subsurface/Source/Networking/GameServer.cs @@ -914,7 +914,7 @@ namespace Barotrauma.Networking if (outmsg.LengthBytes > config.MaximumTransmissionUnit) { - DebugConsole.ThrowError("Maximum packet size exceeded (" + outmsg.LengthBytes + " > " + config.MaximumTransmissionUnit); + DebugConsole.ThrowError("Maximum packet size exceeded (" + outmsg.LengthBytes + " > " + config.MaximumTransmissionUnit + ")"); } server.SendMessage(outmsg, c.Connection, NetDeliveryMethod.Unreliable); @@ -989,7 +989,7 @@ namespace Barotrauma.Networking if (outmsg.LengthBytes > config.MaximumTransmissionUnit) { - DebugConsole.ThrowError("Maximum packet size exceeded (" + outmsg.LengthBytes + " > " + config.MaximumTransmissionUnit); + DebugConsole.ThrowError("Maximum packet size exceeded (" + outmsg.LengthBytes + " > " + config.MaximumTransmissionUnit + ")"); } server.SendMessage(outmsg, c.Connection, NetDeliveryMethod.Unreliable); @@ -1103,15 +1103,19 @@ namespace Barotrauma.Networking Rand.SetSyncedSeed(roundStartSeed); int teamCount = 1; - int hostTeam = 1; + byte hostTeam = 1; GameMain.GameSession = new GameSession(selectedSub, "", selectedMode, Mission.MissionTypes[GameMain.NetLobbyScreen.MissionTypeIndex]); - if (GameMain.GameSession.gameMode.Mission != null && - GameMain.GameSession.gameMode.Mission.AssignTeamIDs(connectedClients,out hostTeam)) + if (GameMain.GameSession.gameMode.Mission != null && + GameMain.GameSession.gameMode.Mission.AssignTeamIDs(connectedClients, out hostTeam)) { teamCount = 2; } + else + { + connectedClients.ForEach(c => c.TeamID = hostTeam); + } GameMain.GameSession.StartShift(GameMain.NetLobbyScreen.LevelSeed, teamCount > 1); diff --git a/Subsurface/Source/Networking/RespawnManager.cs b/Subsurface/Source/Networking/RespawnManager.cs index cfeeecf75..8758fa84c 100644 --- a/Subsurface/Source/Networking/RespawnManager.cs +++ b/Subsurface/Source/Networking/RespawnManager.cs @@ -392,10 +392,14 @@ namespace Barotrauma.Networking { var server = networkMember as GameServer; if (server == null) return; + var clients = GetClientsToRespawn(); foreach (Client c in clients) { + //all characters are in Team 1 in game modes/missions with only one team. + //if at some point we add a game mode with multiple teams where respawning is possible, this needs to be reworked + c.TeamID = 1; if (c.characterInfo == null) c.characterInfo = new CharacterInfo(Character.HumanConfigFile, c.name); } From f5d8669da36ad8cc3f0a7de1c84d5a9efc8777e1 Mon Sep 17 00:00:00 2001 From: Regalis Date: Sat, 3 Jun 2017 18:12:25 +0300 Subject: [PATCH 30/56] Clients wait until both teams have characters in them before they start to update CombatMissions. Character spawn messages aren't guaranteed to arrive at the same frame, so it's possible for one team to be empty at the start of the round, causing the clients to think the other team already won. --- .../Source/Events/Missions/CombatMission.cs | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/Subsurface/Source/Events/Missions/CombatMission.cs b/Subsurface/Source/Events/Missions/CombatMission.cs index a010effed..64c696a4f 100644 --- a/Subsurface/Source/Events/Missions/CombatMission.cs +++ b/Subsurface/Source/Events/Missions/CombatMission.cs @@ -19,6 +19,8 @@ namespace Barotrauma private static string[] teamNames = { "Team A", "Team B" }; + private bool initialized = false; + public override bool AllowRespawn { get { return false; } @@ -152,8 +154,10 @@ namespace Barotrauma public override void Update(float deltaTime) { - if (crews[0].Count == 0 && crews[1].Count == 0) + if (!initialized) { + crews[0].Clear(); + crews[1].Clear(); foreach (Character character in Character.CharacterList) { if (character.TeamID == 1) @@ -165,14 +169,16 @@ namespace Barotrauma crews[1].Add(character); } } - } - if (GameMain.Client == null) - { - //no characters in either team, i.e. the client hasn't received spawn messages yet - if (crews[0].Count == 0 && crews[1].Count == 0) return; - } + if (GameMain.Client != null) + { + //no characters in one of the teams, the client may not have received all spawn messages yet + if (crews[0].Count == 0 || crews[1].Count == 0) return; + } + initialized = true; + } + bool[] teamDead = { crews[0].All(c => c.IsDead || c.IsUnconscious), From 1f8460e8ad02ca7e2a52f54ec15ce27789b99a71 Mon Sep 17 00:00:00 2001 From: Regalis Date: Sat, 3 Jun 2017 18:21:56 +0300 Subject: [PATCH 31/56] GameMain throws an exception immediately if loading the game fails (instead of closing the loading screen and waiting for the inevitable crash) --- Subsurface/Source/GameMain.cs | 13 +++++-------- .../Source/Items/Components/Machines/Reactor.cs | 2 +- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/Subsurface/Source/GameMain.cs b/Subsurface/Source/GameMain.cs index 4415a7629..9b3759882 100644 --- a/Subsurface/Source/GameMain.cs +++ b/Subsurface/Source/GameMain.cs @@ -181,16 +181,16 @@ namespace Barotrauma ConvertUnits.SetDisplayUnitToSimUnitRatio(Physics.DisplayToSimRation); - spriteBatch = new SpriteBatch(base.GraphicsDevice); - TextureLoader.Init(base.GraphicsDevice); + spriteBatch = new SpriteBatch(GraphicsDevice); + TextureLoader.Init(GraphicsDevice); loadingScreenOpen = true; - TitleScreen = new LoadingScreen(base.GraphicsDevice); + TitleScreen = new LoadingScreen(GraphicsDevice); loadingCoroutine = CoroutineManager.StartCoroutine(Load()); } - public IEnumerable Load() + private IEnumerable Load() { GUI.GraphicsDevice = base.GraphicsDevice; GUI.Init(Content); @@ -320,10 +320,7 @@ namespace Barotrauma if (!hasLoaded && !CoroutineManager.IsCoroutineRunning(loadingCoroutine)) { - DebugConsole.ThrowError("Loading was interrupted due to an error"); - loadingScreenOpen = false; - loadingCoroutine = null; - hasLoaded = true; + throw new Exception("Loading was interrupted due to an error"); } } else if (hasLoaded) diff --git a/Subsurface/Source/Items/Components/Machines/Reactor.cs b/Subsurface/Source/Items/Components/Machines/Reactor.cs index 68e544d8a..ed7ecb063 100644 --- a/Subsurface/Source/Items/Components/Machines/Reactor.cs +++ b/Subsurface/Source/Items/Components/Machines/Reactor.cs @@ -263,7 +263,7 @@ namespace Barotrauma.Items.Components ", Cooling rate: " + (int)coolingRate + ", Cooling rate: " + coolingRate + ", Shutdown temp: " + shutDownTemp + - (autoTemp ? "Autotemp ON" : "Autotemp OFF"), + (autoTemp ? ", Autotemp ON" : ", Autotemp OFF"), ServerLog.MessageType.ItemInteraction); nextServerLogWriteTime = null; From 96c425414c03aa23d2c8797dcb76721a01fd2d93 Mon Sep 17 00:00:00 2001 From: Regalis Date: Sat, 3 Jun 2017 19:01:39 +0300 Subject: [PATCH 32/56] Server and EntityEventManager debug logging can be enabled in release builds by enabling verbose logging, DebugConsole.ThrowError logs stacktraces --- Subsurface/Source/DebugConsole.cs | 7 ++- Subsurface/Source/Networking/GameServer.cs | 19 +++---- .../ClientEntityEventManager.cs | 55 ++++++++++++------- .../ServerEntityEventManager.cs | 33 ++++++----- 4 files changed, 66 insertions(+), 48 deletions(-) diff --git a/Subsurface/Source/DebugConsole.cs b/Subsurface/Source/DebugConsole.cs index 9e117a51d..03036e087 100644 --- a/Subsurface/Source/DebugConsole.cs +++ b/Subsurface/Source/DebugConsole.cs @@ -933,8 +933,11 @@ namespace Barotrauma } public static void ThrowError(string error, Exception e = null) - { - if (e != null) error += " {" + e.Message + "}"; + { + if (e != null) + { + error += " {" + e.Message + "}\n" + e.StackTrace; + } System.Diagnostics.Debug.WriteLine(error); NewMessage(error, Color.Red); isOpen = true; diff --git a/Subsurface/Source/Networking/GameServer.cs b/Subsurface/Source/Networking/GameServer.cs index 88131ded2..53249abc2 100644 --- a/Subsurface/Source/Networking/GameServer.cs +++ b/Subsurface/Source/Networking/GameServer.cs @@ -173,7 +173,7 @@ namespace Barotrauma.Networking fileSender = new FileSender(this); fileSender.OnEnded += FileTransferChanged; fileSender.OnStarted += FileTransferChanged; - + server.Start(); } catch (Exception e) @@ -513,11 +513,10 @@ namespace Barotrauma.Networking catch (Exception e) { -#if DEBUG - DebugConsole.ThrowError("Failed to read incoming message", e); -#endif - - continue; + if (GameSettings.VerboseLogging) + { + DebugConsole.ThrowError("Failed to read an incoming message. {" + e + "}\n" + e.StackTrace); + } } } @@ -723,28 +722,24 @@ namespace Barotrauma.Networking { c.lastRecvChatMsgID = lastRecvChatMsgID; } -#if DEBUG - else if (lastRecvChatMsgID != c.lastRecvChatMsgID) + else if (lastRecvChatMsgID != c.lastRecvChatMsgID && GameSettings.VerboseLogging) { DebugConsole.ThrowError( "Invalid lastRecvChatMsgID " + lastRecvChatMsgID + " (previous: " + c.lastChatMsgQueueID + ", latest: "+c.lastChatMsgQueueID+")"); } -#endif if (NetIdUtils.IdMoreRecent(lastRecvEntityEventID, c.lastRecvEntityEventID) && !NetIdUtils.IdMoreRecent(lastRecvEntityEventID, lastEntityEventID)) { c.lastRecvEntityEventID = lastRecvEntityEventID; } -#if DEBUG - else if (lastRecvEntityEventID != c.lastRecvEntityEventID) + else if (lastRecvEntityEventID != c.lastRecvEntityEventID && GameSettings.VerboseLogging) { DebugConsole.ThrowError( "Invalid lastRecvEntityEventID " + lastRecvEntityEventID + " (previous: " + c.lastRecvEntityEventID + ", latest: " + lastEntityEventID + ")"); } -#endif break; case ClientNetObject.CHAT_MESSAGE: ChatMessage.ServerRead(inc, c); diff --git a/Subsurface/Source/Networking/NetEntityEvent/ClientEntityEventManager.cs b/Subsurface/Source/Networking/NetEntityEvent/ClientEntityEventManager.cs index 3c168e98a..1153e0b1a 100644 --- a/Subsurface/Source/Networking/NetEntityEvent/ClientEntityEventManager.cs +++ b/Subsurface/Source/Networking/NetEntityEvent/ClientEntityEventManager.cs @@ -112,15 +112,20 @@ namespace Barotrauma.Networking unreceivedEntityEventCount = msg.ReadUInt16(); firstNewID = msg.ReadUInt16(); -#if DEBUG - DebugConsole.NewMessage("received midround syncing msg, unreceived: "+unreceivedEntityEventCount+", first new ID: "+firstNewID, Microsoft.Xna.Framework.Color.Yellow); -#endif + if (GameSettings.VerboseLogging) + { + DebugConsole.NewMessage( + "received midround syncing msg, unreceived: " + unreceivedEntityEventCount + + ", first new ID: " + firstNewID, Microsoft.Xna.Framework.Color.Yellow); + } } else if (firstNewID != null) { -#if DEBUG - DebugConsole.NewMessage("midround syncing complete, switching to ID "+ (UInt16)(firstNewID - 1), Microsoft.Xna.Framework.Color.Yellow); -#endif + if (GameSettings.VerboseLogging) + { + DebugConsole.NewMessage("midround syncing complete, switching to ID " + (UInt16) (firstNewID - 1), + Microsoft.Xna.Framework.Color.Yellow); + } lastReceivedID = (UInt16)(firstNewID - 1); firstNewID = null; @@ -148,24 +153,33 @@ namespace Barotrauma.Networking //skip the event if we've already received it or if the entity isn't found if (thisEventID != (UInt16)(lastReceivedID + 1) || entity == null) { -#if DEBUG - if (thisEventID != (UInt16)(lastReceivedID + 1)) + if (GameSettings.VerboseLogging) { - DebugConsole.NewMessage("received msg " + thisEventID + " (waiting for "+ (lastReceivedID+1) + ")", thisEventID Date: Sat, 3 Jun 2017 19:40:12 +0300 Subject: [PATCH 33/56] Servers report their game version and selected content package when registering to master server (not displayed anywhere atm but might be good to have the info available for future usage) --- Subsurface/Source/Networking/GameServer.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Subsurface/Source/Networking/GameServer.cs b/Subsurface/Source/Networking/GameServer.cs index 53249abc2..8e98daa73 100644 --- a/Subsurface/Source/Networking/GameServer.cs +++ b/Subsurface/Source/Networking/GameServer.cs @@ -256,7 +256,12 @@ namespace Barotrauma.Networking request.AddParameter("currplayers", connectedClients.Count); request.AddParameter("maxplayers", MaxPlayers); request.AddParameter("password", string.IsNullOrWhiteSpace(password) ? 0 : 1); - + request.AddParameter("version", GameMain.Version.ToString()); + if (GameMain.Config.SelectedContentPackage != null) + { + request.AddParameter("contentpackage", GameMain.Config.SelectedContentPackage.Name); + } + masterServerResponded = false; masterServerResponse = null; var restRequestHandle = restClient.ExecuteAsync(request, response => MasterServerCallBack(response)); From a0c23f8e948e19bab6928a97dd32d348a88935b9 Mon Sep 17 00:00:00 2001 From: Regalis Date: Sun, 4 Jun 2017 14:10:17 +0300 Subject: [PATCH 34/56] v0.6.0.1 --- Subsurface/Properties/AssemblyInfo.cs | 4 ++-- Subsurface/changelog.txt | 18 +++++++++++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/Subsurface/Properties/AssemblyInfo.cs b/Subsurface/Properties/AssemblyInfo.cs index a603a3386..155d0f07e 100644 --- a/Subsurface/Properties/AssemblyInfo.cs +++ b/Subsurface/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.6.0.0")] -[assembly: AssemblyFileVersion("0.6.0.0")] +[assembly: AssemblyVersion("0.6.0.1")] +[assembly: AssemblyFileVersion("0.6.0.1")] diff --git a/Subsurface/changelog.txt b/Subsurface/changelog.txt index e33541c12..3b74ad6bd 100644 --- a/Subsurface/changelog.txt +++ b/Subsurface/changelog.txt @@ -1,3 +1,20 @@ +--------------------------------------------------------------------------------------------------------- +v0.6.0.1 +--------------------------------------------------------------------------------------------------------- + +- Readded spam filter. +- Servers log the automatic temperature control setting of nuclear reactors. +- If a client fails to start a round (due to a missing sub file or an error, for example), their character +is automatically killed. This prevents situations where a team can't win a combat mission due to a +disabled, invisible character in the opposing team. +- Fixed clients occasionally displaying the "crew has been defeated" message immediately after a combat +mission starts. +- Fixed a bunch of bugs in the job assignment logic. +- Fixed errors if attempting to send radio messages without a radio in the inventory. +- Fixed "component doesn't have a GUIFrame component" errors when selecting an artifact holder. +- Disabled unnecessary server-side message ID logging. +- Option to enable additional network debug logging by enabling verbose logging in config.xml. + --------------------------------------------------------------------------------------------------------- v0.6.0.0 --------------------------------------------------------------------------------------------------------- @@ -52,7 +69,6 @@ Misc: - swimming animation fix: characters don't swim with their legs extended up over their shoulders after a sharp turn - --------------------------------------------------------------------------------------------------------- v0.5.4.5 --------------------------------------------------------------------------------------------------------- From ad03c8bf0d728e94443cfa5f2698b480b3251525 Mon Sep 17 00:00:00 2001 From: Regalis Date: Sun, 4 Jun 2017 14:48:15 +0300 Subject: [PATCH 35/56] EULA + readme update --- EULA.txt | 30 ++++++++++++++++++++++++++++++ Subsurface/readme.txt | 4 ++-- 2 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 EULA.txt diff --git a/EULA.txt b/EULA.txt new file mode 100644 index 000000000..9d020e92a --- /dev/null +++ b/EULA.txt @@ -0,0 +1,30 @@ +Barotrauma is not to be mistaken for free software or open source in +a free-software activist understanding. Undertow Games retains the +copyright to the source code and art assets and you are allowed to +use them under the following conditions. + +The source code, modifications or derivative works can be distributed +only if they are intended to be used as a mod for Barotrauma. You are +not allowed to create a standalone application, or use the code for +commercial purposes or in your own projects. You are not allowed to +remove or bypass Steam integration, SteamID authentication or any +other DRM measures from the code. + +By making a pull request on Barotrauma's git repository, you are +stating that you're author of these changes or have rights to the +changes you've made and agree to give Undertow Games permission to +use, copy, modify, adapt, distribute, and publicly display that +content, for free or as part of a commercial arrangement. + +The origin of this software must not be misrepresented; you must not +claim that you are the author of the original software. Derivative +works must be plainly marked as such, and must not be misrepresented +as being the original software. + +Undertow Games reserves the right to change this license at any time +with or without notice, with immediate and/or retroactive effect. + +If there's anything you don't understand or consider confusing, +please email us your questions or suggestions: contact@undertowgames.com + +Tl;dr: the code is intended for developing mods for Barotrauma. diff --git a/Subsurface/readme.txt b/Subsurface/readme.txt index dfda77b12..8caf4a01a 100644 --- a/Subsurface/readme.txt +++ b/Subsurface/readme.txt @@ -1,7 +1,7 @@ BAROTRAUMA -www.undertowgames.com/subsurface -Copyright © Undertow Games 2016 +www.undertowgames.com/barotrauma +Copyright © Undertow Games 2017 Default controls: WASD - move From 3ec108b3f752b151c732fe419156d13dce15571e Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Sun, 4 Jun 2017 14:50:25 +0300 Subject: [PATCH 36/56] Added readme.md --- README.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 000000000..d07924c25 --- /dev/null +++ b/README.md @@ -0,0 +1,17 @@ +# Barotrauma + +Copyright © Undertow Games 2017 + +Before downloading the source code, please read the [EULA](EULA.txt). + +## Links: + +**Official Website:** www.undertowgames.com/barotrauma + +**Forums:** http://undertowgames.com/forum/ + +**Wiki:** http://barotrauma.gamepedia.com/Barotrauma_Wiki + +## Prerequisities: +- [Visual Studio](https://www.visualstudio.com/vs/community/) with C# 6.0 support (VS 2015 or later recommended) +- [MonoGame 3.5](http://www.monogame.net/2016/03/17/monogame-3-5/) From 94c6a8ea1bfb99adf722937e7fd1139c8a35e2d3 Mon Sep 17 00:00:00 2001 From: Regalis Date: Sun, 4 Jun 2017 15:00:53 +0300 Subject: [PATCH 37/56] Renamed project folders from Subsurface to Barotrauma --- {Subsurface => Barotrauma}/Barotrauma.csproj | 0 .../Barotrauma.csproj.user | 0 .../BackgroundCreaturePrefabs.xml | 0 .../BackgroundSpritePrefabs.xml | 0 .../Content/BackgroundSprites/bgFish1.png | Bin .../Content/BackgroundSprites/ice.png | Bin .../Content/BackgroundSprites/vegetation.png | Bin .../Content/BackgroundSprites/vegetation2.png | Bin .../Content/BackgroundSprites/vegetation3.png | Bin .../Content/BackgroundSprites/vegetation4.png | Bin .../Content/BackgroundSprites/vegetation5.png | Bin .../Content/Characters/Carrier/alarm1.ogg | Bin .../Content/Characters/Carrier/carrier.png | Bin .../Content/Characters/Carrier/carrier.xml | 0 .../Content/Characters/Carrier/carrier1.ogg | Bin .../Content/Characters/Carrier/carrier2.ogg | Bin .../Content/Characters/Carrier/carrier3.ogg | Bin .../Content/Characters/Carrier/ping.ogg | Bin .../Characters/Charybdis/charybdis.png | Bin .../Characters/Charybdis/charybdis.xml | 0 .../Characters/Charybdis/charybdisattack.ogg | Bin .../Content/Characters/Coelanth/attack1.ogg | Bin .../Content/Characters/Coelanth/coelanth.png | Bin .../Content/Characters/Coelanth/coelanth.xml | 0 .../Content/Characters/Coelanth/idle1.ogg | Bin .../Content/Characters/Coelanth/idle2.ogg | Bin .../Content/Characters/Crawler/attack1.ogg | Bin .../Content/Characters/Crawler/attack2.ogg | Bin .../Content/Characters/Crawler/crawler.png | Bin .../Content/Characters/Crawler/crawler.xml | 0 .../Content/Characters/Crawler/idle1.ogg | Bin .../Content/Characters/Crawler/idle2.ogg | Bin .../Content/Characters/Endworm/endworm.png | Bin .../Content/Characters/Endworm/endworm.xml | 0 .../Characters/Endworm/endwormattack1.ogg | Bin .../Characters/Endworm/endwormattack2.ogg | Bin .../Characters/Endworm/endwormidle.ogg | Bin .../Characters/Fractalguardian/Die1.ogg | Bin .../Characters/Fractalguardian/Die2.ogg | Bin .../Fractalguardian/fractalguardian.png | Bin .../Fractalguardian/fractalguardian.xml | 0 .../Characters/Fractalguardian/guardian1.ogg | Bin .../Characters/Fractalguardian/guardian2.ogg | Bin .../Fractalguardian2/fractalguardian2.xml | 0 .../Content/Characters/Human/damagedhead.png | Bin .../Content/Characters/Human/damagedlegs.png | Bin .../Content/Characters/Human/damagedtorso.png | Bin .../Content/Characters/Human/ffirstnames.txt | 0 .../Content/Characters/Human/fhead1.png | Bin .../Content/Characters/Human/fhead2.png | Bin .../Content/Characters/Human/fhead3.png | Bin .../Content/Characters/Human/fhead4.png | Bin .../Content/Characters/Human/fhead5.png | Bin .../Content/Characters/Human/fhead6.png | Bin .../Characters/Human/fhead7[black].png | Bin .../Content/Characters/Human/fhead8.png | Bin .../Content/Characters/Human/firstnames.txt | 0 .../Content/Characters/Human/flegs.png | Bin .../Content/Characters/Human/ftorso.png | Bin .../Characters/Human/ftorso[black].png | Bin .../Content/Characters/Human/head1.png | Bin .../Content/Characters/Human/head2.png | Bin .../Content/Characters/Human/head3.png | Bin .../Content/Characters/Human/head4.png | Bin .../Content/Characters/Human/head5.png | Bin .../Content/Characters/Human/head6.png | Bin .../Content/Characters/Human/head7[black].png | Bin .../Content/Characters/Human/head8[black].png | Bin .../Content/Characters/Human/human.xml | 0 .../Content/Characters/Human/humanhusk.xml | 0 .../Characters/Human/huskappendage.xml | 0 .../Content/Characters/Human/lastnames.txt | 0 .../Content/Characters/Human/legs.png | Bin .../Content/Characters/Human/torso.png | Bin .../Content/Characters/Human/torso[black].png | Bin .../Content/Characters/Husk/DivingSuit.png | Bin .../Content/Characters/Husk/Husk1.ogg | Bin .../Content/Characters/Husk/Husk2.ogg | Bin .../Content/Characters/Husk/Husk3.ogg | Bin .../Content/Characters/Husk/husk.xml | 0 .../Content/Characters/Husk/legs.png | Bin .../Content/Characters/Mantis/attack1.ogg | Bin .../Content/Characters/Mantis/attack2.ogg | Bin .../Content/Characters/Mantis/idle1.ogg | Bin .../Content/Characters/Mantis/idle2.ogg | Bin .../Content/Characters/Mantis/idle3.ogg | Bin .../Content/Characters/Mantis/mantis.png | Bin .../Content/Characters/Mantis/mantis.xml | 0 .../Content/Characters/Moloch/attack1.ogg | Bin .../Content/Characters/Moloch/attack2.ogg | Bin .../Content/Characters/Moloch/idle1.ogg | Bin .../Content/Characters/Moloch/idle2.ogg | Bin .../Content/Characters/Moloch/moloch.png | Bin .../Content/Characters/Moloch/moloch.xml | 0 .../Content/Characters/Scorpion/scorpion.png | Bin .../Content/Characters/Scorpion/scorpion.xml | 0 .../Characters/Scorpion/scorpionattack1.ogg | Bin .../Characters/Scorpion/scorpionidle1.ogg | Bin .../Characters/Scorpion/scorpionidle2.ogg | Bin .../Tigerthresher/damagedtigerthresher.png | Bin .../Tigerthresher/tigerthresher.png | Bin .../Tigerthresher/tigerthresher.xml | 0 .../Content/Characters/Watcher/attack1.ogg | Bin .../Content/Characters/Watcher/attack2.ogg | Bin .../Content/Characters/Watcher/attack3.ogg | Bin .../Content/Characters/Watcher/watch1.ogg | Bin .../Content/Characters/Watcher/watch2.ogg | Bin .../Content/Characters/Watcher/watch3.ogg | Bin .../Content/Characters/Watcher/watch4.ogg | Bin .../Content/Characters/Watcher/watch5.ogg | Bin .../Content/Characters/Watcher/watch6.ogg | Bin .../Content/Characters/Watcher/watcher.png | Bin .../Content/Characters/Watcher/watcher.xml | 0 .../Content/Code Pro Bold.otf | Bin .../Content/Content.mgcb | 0 .../Content/Exo2-Light.otf | Bin .../Content/Exo2-Medium.otf | Bin .../Content/InfoTexts.xml | 0 .../Content/Items/Artifacts/aliendoor.ogg | Bin .../Content/Items/Artifacts/alientools.png | Bin .../Content/Items/Artifacts/alienweapon.ogg | Bin .../Content/Items/Artifacts/artifact.png | Bin .../Items/Artifacts/artifactholder.png | Bin .../Content/Items/Artifacts/artifacts.xml | 0 .../Content/Items/Button/beep.ogg | Bin .../Content/Items/Button/button.png | Bin .../Content/Items/Button/button.xml | 0 .../Content/Items/Containers/cabinets.png | Bin .../Content/Items/Containers/containers.xml | 0 .../Content/Items/Containers/crates.png | Bin .../Content/Items/Containers/locker.png | Bin .../Content/Items/Diving/DivingMask.png | Bin .../Content/Items/Diving/DivingSuit.png | Bin .../Content/Items/Diving/divingSuit.ogg | Bin .../Content/Items/Diving/divinggear.xml | 0 .../Content/Items/Diving/scooter.ogg | Bin .../Content/Items/Door/dockingport.png | Bin .../Content/Items/Door/dockingport1.ogg | Bin .../Content/Items/Door/dockingport2.ogg | Bin .../Content/Items/Door/dockingport2.png | Bin .../Content/Items/Door/door.ogg | Bin .../Content/Items/Door/door.png | Bin .../Content/Items/Door/doors.xml | 304 +++++++++--------- .../Content/Items/Electricity/battery.png | Bin .../Content/Items/Electricity/junctionbox.png | Bin .../Content/Items/Electricity/lamp.png | Bin .../Content/Items/Electricity/lights.xml | 0 .../Content/Items/Electricity/lightsprite.png | Bin .../Content/Items/Electricity/monitor.png | Bin .../Content/Items/Electricity/monitors.xml | 0 .../Content/Items/Electricity/powerOn.ogg | Bin .../Content/Items/Electricity/poweritems.xml | 0 .../Content/Items/Electricity/signalcomp.png | Bin .../Content/Items/Electricity/signalitems.xml | 0 .../Items/Electricity/supercapacitor.png | Bin .../Content/Items/Electricity/zap1.ogg | Bin .../Content/Items/Electricity/zap2.ogg | Bin .../Content/Items/Electricity/zap3.ogg | Bin .../Content/Items/Electricity/zap4.ogg | Bin .../Content/Items/Engine/engine.ogg | Bin .../Content/Items/Engine/engine.png | Bin .../Content/Items/Engine/engine.xml | 0 .../Content/Items/Engine/pingCircle.png | Bin .../Content/Items/Engine/radarBlip.png | Bin .../Content/Items/Engine/radarOverlay.png | Bin .../Content/Items/Engine/radarPing.ogg | Bin .../Items/Fabricators/deconstructor.ogg | Bin .../Content/Items/Fabricators/fabricator.ogg | Bin .../Content/Items/Fabricators/fabricators.xml | 0 .../Content/Items/Fabricators/materials.png | Bin .../Content/Items/Fabricators/materials.xml | 0 .../Content/Items/Jobgear/captainLegs.png | Bin .../Content/Items/Jobgear/captainTorso.png | Bin .../Content/Items/Jobgear/captaingear.xml | 0 .../Content/Items/Jobgear/captainhat.png | Bin .../Content/Items/Jobgear/clownmask.png | Bin .../Content/Items/Jobgear/clownpants.png | Bin .../Content/Items/Jobgear/clownshirt.png | Bin .../Content/Items/Jobgear/doctorgear.png | Bin .../Content/Items/Jobgear/doctorgear.xml | 0 .../Content/Items/Jobgear/engigear.png | Bin .../Content/Items/Jobgear/engigear.xml | 0 .../Content/Items/Jobgear/headset.png | Bin .../Content/Items/Jobgear/misc.xml | 0 .../Content/Items/Jobgear/securitygear.png | Bin .../Content/Items/Jobgear/securitygear.xml | 0 .../Content/Items/Ladder/ladder.png | Bin .../Content/Items/Ladder/ladder.xml | 0 .../Content/Items/Medical/bandage.ogg | Bin .../Content/Items/Medical/med.png | Bin .../Content/Items/Medical/medical.xml | 0 .../Content/Items/Medical/syringe.ogg | Bin .../Content/Items/MiniMap/item.xml | 0 .../Items/OxygenGenerator/oxygengenerator.ogg | Bin .../Items/OxygenGenerator/oxygengenerator.png | Bin .../Items/OxygenGenerator/oxygengenerator.xml | 0 .../Content/Items/OxygenGenerator/vent.png | Bin .../Items/OxygenGenerator/ventilation.ogg | Bin .../Content/Items/Pump/pump.ogg | Bin .../Content/Items/Pump/pump.png | Bin .../Content/Items/Pump/pump.xml | 0 .../Content/Items/Pump/smallpump.png | Bin .../Content/Items/Reactor/explosion.ogg | Bin .../Content/Items/Reactor/fuelrod.png | Bin .../Content/Items/Reactor/heatabsorber.png | Bin .../Content/Items/Reactor/reactor.ogg | Bin .../Content/Items/Reactor/reactor.png | Bin .../Content/Items/Reactor/reactor.xml | 0 .../Content/Items/Tools/extinguisher.ogg | Bin .../Content/Items/Tools/extinguisher.png | Bin .../Content/Items/Tools/flare.ogg | Bin .../Content/Items/Tools/plasmaCutter.ogg | Bin .../Content/Items/Tools/tools.png | Bin .../Content/Items/Tools/tools.xml | 0 .../Content/Items/Tools/weldingTool.ogg | Bin .../Content/Items/Weapons/bigexplosion.ogg | Bin .../Content/Items/Weapons/depthcharge.xml | 0 .../Content/Items/Weapons/explosives.xml | 0 .../Content/Items/Weapons/harpoon1.ogg | Bin .../Content/Items/Weapons/harpoon2.ogg | Bin .../Content/Items/Weapons/honk.ogg | Bin .../Content/Items/Weapons/railgun.ogg | Bin .../Content/Items/Weapons/railgun.xml | 0 .../Content/Items/Weapons/railgunbarrel.png | Bin .../Content/Items/Weapons/railgunbase.png | Bin .../Content/Items/Weapons/railgunetc.png | Bin .../Content/Items/Weapons/rope.png | Bin .../Content/Items/Weapons/smack.ogg | Bin .../Content/Items/Weapons/stunbaton.ogg | Bin .../Content/Items/Weapons/stungrenade.ogg | Bin .../Content/Items/Weapons/stungrenade.png | Bin .../Content/Items/Weapons/weapons.png | Bin .../Content/Items/Weapons/weapons.xml | 0 .../Content/Items/blank.png | Bin .../Content/Items/circuitboard.png | Bin .../Content/Items/connectionpanel.png | Bin .../Content/Items/connector.png | Bin .../Content/Items/idcard.png | Bin .../Content/Items/idcard.xml | 0 .../Content/Items/itemlabel.xml | 0 .../Content/Items/machines.png | Bin .../Content/Items/warningBeep.ogg | Bin .../Content/Items/warningSiren.ogg | Bin .../Content/Items/wireCorner.png | Bin .../Content/Items/wireHorizontal.png | Bin .../Content/Items/wireVertical.png | Bin {Subsurface => Barotrauma}/Content/Jobs.xml | 0 .../Content/Lights/alphaOne.png | Bin .../Content/Lights/light.png | Bin .../Content/Lights/lightcone.png | Bin .../Content/Lights/penumbra.png | Bin .../Content/Lights/visioncircle.png | Bin .../Content/Map/LevelGenerationParameters.xml | 0 .../Content/Map/RuinConfig.xml | 0 .../Content/Map/StructurePrefabs.xml | 0 .../Content/Map/TutorialSub.sub | Bin .../Content/Map/background.png | Bin .../Content/Map/background2.png | Bin .../Content/Map/beaconSymbol.png | Bin .../Content/Map/beaconbackground.jpg | Bin .../Content/Map/citySymbol.png | Bin .../Content/Map/citybackground.jpg | Bin .../Content/Map/dustparticles.png | Bin .../Content/Map/iceCrack.png | Bin .../Content/Map/iceCraters.png | Bin .../Content/Map/iceSurface.png | Bin .../Content/Map/iceWall.png | Bin .../Content/Map/locationNames.txt | 0 .../Content/Map/locationTypes.xml | 0 .../Content/Map/militarySymbol.png | Bin .../Content/Map/militarybackground.jpg | Bin .../Content/Map/researchSymbol.png | Bin .../Content/Map/researchbackground.jpg | Bin .../Content/Map/ruins.png | Bin .../Content/Map/ruins2.png | Bin .../Content/Map/ruins3.png | Bin .../Content/Map/shaft.png | Bin .../Content/Map/structures2.png | Bin .../Content/Map/testroom.png | Bin .../Content/Map/walldamage.png | Bin .../Content/Map/waypointIcons.png | Bin .../Content/Missions.xml | 0 {Subsurface => Barotrauma}/Content/Orders.xml | 0 .../Particles/FlameRoundParticleSheet.png | Bin .../Content/Particles/ParticlePrefabs.xml | 0 .../Content/Particles/SmokeParticleSheet.png | Bin .../Content/Particles/bubbles.png | Bin .../Content/Particles/explosion.png | Bin .../Content/Particles/fire.png | Bin .../Content/Particles/flames.png | Bin .../Content/Particles/shrapnel.png | Bin .../Content/Particles/spatter.png | Bin .../Content/Sounds/Ambient/Ambient1.ogg | Bin .../Content/Sounds/Ambient/Ambient10.ogg | Bin .../Content/Sounds/Ambient/Ambient11.ogg | Bin .../Content/Sounds/Ambient/Ambient12.ogg | Bin .../Content/Sounds/Ambient/Ambient13.ogg | Bin .../Content/Sounds/Ambient/Ambient2.ogg | Bin .../Content/Sounds/Ambient/Ambient3.ogg | Bin .../Content/Sounds/Ambient/Ambient4.ogg | Bin .../Content/Sounds/Ambient/Ambient5.ogg | Bin .../Content/Sounds/Ambient/Ambient6.ogg | Bin .../Content/Sounds/Ambient/Ambient7.ogg | Bin .../Content/Sounds/Ambient/Ambient8.ogg | Bin .../Content/Sounds/Ambient/Ambient9.ogg | Bin .../Content/Sounds/Ambient/DistantPod1.ogg | Bin .../Content/Sounds/Ambient/DistantPod2.ogg | Bin .../Content/Sounds/Ambient/DistantPod3.ogg | Bin .../Sounds/Ambient/GlacialMovement.ogg | Bin .../Content/Sounds/Damage/GlassBreak1.ogg | Bin .../Content/Sounds/Damage/GlassBreak2.ogg | Bin .../Content/Sounds/Damage/GlassBreak3.ogg | Bin .../Content/Sounds/Damage/GlassImpact1.ogg | Bin .../Content/Sounds/Damage/GlassImpact2.ogg | Bin .../Content/Sounds/Damage/GlassImpact3.ogg | Bin .../Content/Sounds/Damage/HitArmor1.ogg | Bin .../Content/Sounds/Damage/HitArmor2.ogg | Bin .../Content/Sounds/Damage/HitArmor3.ogg | Bin .../Content/Sounds/Damage/LimbBlunt1.ogg | Bin .../Content/Sounds/Damage/LimbBlunt2.ogg | Bin .../Content/Sounds/Damage/LimbBlunt3.ogg | Bin .../Content/Sounds/Damage/LimbBlunt4.ogg | Bin .../Content/Sounds/Damage/LimbBlunt5.ogg | Bin .../Content/Sounds/Damage/LimbSlash1.ogg | Bin .../Content/Sounds/Damage/LimbSlash2.ogg | Bin .../Content/Sounds/Damage/LimbSlash3.ogg | Bin .../Content/Sounds/Damage/StructureBlunt1.ogg | Bin .../Sounds/Damage/StructureBlunt10.ogg | Bin .../Content/Sounds/Damage/StructureBlunt2.ogg | Bin .../Content/Sounds/Damage/StructureBlunt3.ogg | Bin .../Content/Sounds/Damage/StructureBlunt4.ogg | Bin .../Content/Sounds/Damage/StructureBlunt5.ogg | Bin .../Content/Sounds/Damage/StructureBlunt6.ogg | Bin .../Content/Sounds/Damage/StructureBlunt7.ogg | Bin .../Content/Sounds/Damage/StructureBlunt8.ogg | Bin .../Content/Sounds/Damage/StructureBlunt9.ogg | Bin .../Sounds/Damage/StructureCrunch1.ogg | Bin .../Sounds/Damage/StructureCrunch2.ogg | Bin .../Sounds/Damage/StructureCrunch3.ogg | Bin .../Sounds/Damage/StructureCrunch4.ogg | Bin .../Sounds/Damage/StructureCrunch5.ogg | Bin .../Content/Sounds/Damage/creak1.ogg | Bin .../Content/Sounds/Damage/creak2.ogg | Bin .../Content/Sounds/Damage/creak3.ogg | Bin .../Content/Sounds/Damage/creak4.ogg | Bin .../Content/Sounds/Damage/creak5.ogg | Bin .../Content/Sounds/Damage/implode.ogg | Bin .../Sounds/Music/Controlled Chaos 2.ogg | Bin .../Content/Sounds/Music/Controlled Chaos.ogg | Bin .../Content/Sounds/Music/Enter the Maze.ogg | Bin .../Sounds/Music/Phantom From Space.ogg | Bin .../Content/Sounds/Music/Road to Hell.ogg | Bin .../Content/Sounds/Music/Simplex.ogg | Bin .../Content/Sounds/Music/Static Motion.ogg | Bin .../Tenebrous Brothers Carnival - Prelude.ogg | Bin .../Content/Sounds/Music/The Descent.ogg | Bin .../Content/Sounds/Music/Unseen Horrors.ogg | Bin .../Music/amb_JD_drone_clattering_machine.ogg | Bin .../Content/Sounds/UI/UImsg.ogg | Bin .../Content/Sounds/UI/beep-shinymetal.ogg | Bin .../Content/Sounds/UI/deadmsg.ogg | Bin .../Content/Sounds/UI/radiomsg.ogg | Bin .../Content/Sounds/UI/tap-zipper.ogg | Bin .../Content/Sounds/Water/Drown1.ogg | Bin .../Content/Sounds/Water/Drown2.ogg | Bin .../Content/Sounds/Water/Drown3.ogg | Bin .../Content/Sounds/Water/Drown4.ogg | Bin .../Content/Sounds/Water/DrownLoop.ogg | Bin .../Content/Sounds/Water/FlowLarge.ogg | Bin .../Content/Sounds/Water/FlowMedium.ogg | Bin .../Content/Sounds/Water/FlowSmall.ogg | Bin .../Content/Sounds/Water/Splash0.ogg | Bin .../Content/Sounds/Water/Splash1.ogg | Bin .../Content/Sounds/Water/Splash2.ogg | Bin .../Content/Sounds/Water/Splash3.ogg | Bin .../Content/Sounds/Water/Splash4.ogg | Bin .../Content/Sounds/Water/Splash5.ogg | Bin .../Content/Sounds/Water/Splash6.ogg | Bin .../Content/Sounds/Water/Splash7.ogg | Bin .../Content/Sounds/Water/Splash8.ogg | Bin .../Content/Sounds/Water/Splash9.ogg | Bin .../Content/Sounds/Water/WaterAmbience1.ogg | Bin .../Content/Sounds/Water/WaterAmbience2.ogg | Bin .../Content/Sounds/Water/splashLoop.ogg | Bin .../Content/Sounds/fire.ogg | Bin .../Content/Sounds/firelarge.ogg | Bin .../Content/Sounds/pickItem.ogg | Bin .../Content/Sounds/sounds.xml | 0 .../Content/Sounds/startDrone.ogg | Bin .../Content/Sounds/stepMetal.ogg | Bin .../Content/UI/UI_Atlas.png | Bin .../Content/UI/caret.png | Bin .../Content/UI/cursor.png | Bin .../Content/UI/damageOverlay.png | Bin .../Content/UI/inventoryIcons.png | Bin .../Content/UI/noise.png | Bin .../Content/UI/statusIcons.png | Bin .../Content/UI/style.xml | 0 .../Content/UI/textboxTexture.png | Bin .../Content/UI/titleBackground.png | Bin .../Content/UI/titleMonster.png | Bin .../Content/UI/titleText.png | Bin .../Content/UI/uiBackground.png | Bin .../Content/UI/uiButton.png | Bin .../Content/UI/uiIcons.png | Bin .../Content/blurshader.fx | 0 .../Content/blurshader.xnb | Bin .../Content/blurshader_opengl.xnb | Bin .../Content/damageshader.fx | 0 .../Content/damageshader.xnb | Bin .../Content/damageshader_opengl.xnb | Bin .../Content/effects.mgfx | Bin .../Content/randomevents.xml | 0 {Subsurface => Barotrauma}/Content/step.ogg | Bin {Subsurface => Barotrauma}/Content/utg_4.mp4 | Bin {Subsurface => Barotrauma}/Content/utg_4.xnb | Bin .../Content/waterbump.png | Bin .../Content/watershader.fx | 0 .../Content/watershader.xnb | Bin .../Content/watershader_opengl.xnb | Bin .../Data/ContentPackages/Vanilla 0.3.xml | 0 {Subsurface => Barotrauma}/Icon.ico | Bin {Subsurface => Barotrauma}/Mods/info.txt | 0 {Subsurface => Barotrauma}/OpenAL32.dll | Bin .../Properties/AssemblyInfo.cs | 0 {Subsurface => Barotrauma}/Source/Camera.cs | 0 .../Source/Characters/AI/AIController.cs | 0 .../Source/Characters/AI/AITarget.cs | 0 .../Source/Characters/AI/CrewCommander.cs | 0 .../Source/Characters/AI/EnemyAIController.cs | 0 .../Source/Characters/AI/HumanAIController.cs | 0 .../Source/Characters/AI/ISteerable.cs | 0 .../Characters/AI/IndoorsSteeringManager.cs | 0 .../Characters/AI/Objectives/AIObjective.cs | 0 .../AI/Objectives/AIObjectiveCombat.cs | 0 .../AI/Objectives/AIObjectiveContainItem.cs | 0 .../Objectives/AIObjectiveFindDivingGear.cs | 0 .../AI/Objectives/AIObjectiveFindSafety.cs | 0 .../AI/Objectives/AIObjectiveFixLeak.cs | 0 .../AI/Objectives/AIObjectiveFixLeaks.cs | 0 .../AI/Objectives/AIObjectiveGetItem.cs | 0 .../AI/Objectives/AIObjectiveGoTo.cs | 0 .../AI/Objectives/AIObjectiveIdle.cs | 0 .../AI/Objectives/AIObjectiveManager.cs | 0 .../AI/Objectives/AIObjectiveOperateItem.cs | 0 .../AI/Objectives/AIObjectiveRescue.cs | 0 .../AI/Objectives/AIObjectiveRescureAll.cs | 0 .../Source/Characters/AI/Order.cs | 0 .../Source/Characters/AI/PathFinder.cs | 0 .../Source/Characters/AI/SteeringManager.cs | 0 .../Source/Characters/AI/SteeringPath.cs | 0 .../Source/Characters/AICharacter.cs | 0 .../Characters/Animation/AnimController.cs | 0 .../Animation/FishAnimController.cs | 0 .../Animation/HumanoidAnimController.cs | 0 .../Source/Characters/Animation/Ragdoll.cs | 0 .../Source/Characters/Attack.cs | 0 .../BackgroundSprite/BackgroundCreature.cs | 0 .../BackgroundCreatureManager.cs | 0 .../BackgroundCreaturePrefab.cs | 0 .../BackgroundSpriteManager.cs | 0 .../BackgroundSpritePrefab.cs | 0 .../Source/Characters/Character.cs | 0 .../Source/Characters/CharacterHUD.cs | 0 .../Source/Characters/CharacterInfo.cs | 0 .../Source/Characters/CharacterNetworking.cs | 0 .../Source/Characters/CharacterSound.cs | 0 .../Source/Characters/DelayedEffect.cs | 0 .../Source/Characters/HUDProgressBar.cs | 0 .../Source/Characters/HuskInfection.cs | 0 .../Source/Characters/Jobs/Job.cs | 0 .../Source/Characters/Jobs/JobPrefab.cs | 0 .../Source/Characters/Jobs/Skill.cs | 0 .../Source/Characters/Jobs/SkillPrefab.cs | 0 .../Source/Characters/Limb.cs | 0 .../Source/Characters/StatusEffect.cs | 0 .../Source/ContentPackage.cs | 0 .../Source/CoroutineManager.cs | 0 .../Source/DebugConsole.cs | 0 .../Source/EventInput/EventInput.cs | 0 .../Source/EventInput/KeyboardDispatcher.cs | 0 .../Source/Events/ArtifactEvent.cs | 0 .../Source/Events/Missions/CargoMission.cs | 0 .../Source/Events/Missions/CombatMission.cs | 0 .../Source/Events/Missions/Mission.cs | 0 .../Source/Events/Missions/MonsterMission.cs | 0 .../Source/Events/Missions/SalvageMission.cs | 0 .../Source/Events/MonsterEvent.cs | 0 .../Source/Events/PropertyTask.cs | 0 .../Source/Events/RepairTask.cs | 0 .../Source/Events/ScriptedEvent.cs | 0 .../Source/Events/ScriptedTask.cs | 0 .../Source/Events/Task.cs | 0 .../Source/Events/TaskManager.cs | 0 .../Source/Fonts/ScalableFont.cs | 0 .../Source/FrameCounter.cs | 0 .../Source/GUI/ComponentStyle.cs | 0 {Subsurface => Barotrauma}/Source/GUI/GUI.cs | 0 .../Source/GUI/GUIButton.cs | 0 .../Source/GUI/GUIComponent.cs | 0 .../Source/GUI/GUIDropDown.cs | 0 .../Source/GUI/GUIFrame.cs | 0 .../Source/GUI/GUIImage.cs | 0 .../Source/GUI/GUIListBox.cs | 0 .../Source/GUI/GUIMessage.cs | 0 .../Source/GUI/GUIMessageBox.cs | 0 .../Source/GUI/GUIProgressBar.cs | 0 .../Source/GUI/GUIScrollBar.cs | 0 .../Source/GUI/GUIStyle.cs | 0 .../Source/GUI/GUITextBlock.cs | 0 .../Source/GUI/GUITextBox.cs | 0 .../Source/GUI/GUITickBox.cs | 0 .../Source/GUI/LoadingScreen.cs | 0 {Subsurface => Barotrauma}/Source/GameMain.cs | 0 .../Source/GameSession/CargoManager.cs | 0 .../Source/GameSession/CrewManager.cs | 0 .../Source/GameSession/GameModes/GameMode.cs | 0 .../GameSession/GameModes/GameModePreset.cs | 0 .../GameSession/GameModes/MissionMode.cs | 0 .../GameSession/GameModes/SinglePlayerMode.cs | 0 .../GameSession/GameModes/TraitorManager.cs | 0 .../GameModes/Tutorials/BasicTutorial.cs | 0 .../GameModes/Tutorials/EditorTutorial.cs | 0 .../GameModes/Tutorials/TutorialMode.cs | 0 .../GameModes/Tutorials/TutorialType.cs | 0 .../Source/GameSession/GameSession.cs | 0 .../Source/GameSession/HireManager.cs | 0 .../Source/GameSession/InfoTextManager.cs | 0 .../Source/GameSession/ShiftSummary.cs | 0 .../Source/GameSettings.cs | 0 .../Source/IPropertyObject.cs | 0 .../Source/Items/CharacterInventory.cs | 0 .../Source/Items/Components/DockingPort.cs | 0 .../Source/Items/Components/Door.cs | 0 .../Items/Components/Holdable/Holdable.cs | 0 .../Items/Components/Holdable/MeleeWeapon.cs | 0 .../Items/Components/Holdable/Pickable.cs | 0 .../Items/Components/Holdable/Propulsion.cs | 0 .../Items/Components/Holdable/RangedWeapon.cs | 0 .../Items/Components/Holdable/RepairTool.cs | 0 .../Items/Components/Holdable/Throwable.cs | 0 .../Source/Items/Components/ItemComponent.cs | 0 .../Source/Items/Components/ItemContainer.cs | 6 +- .../Source/Items/Components/ItemLabel.cs | 0 .../Source/Items/Components/Ladder.cs | 0 .../Items/Components/Machines/Controller.cs | 0 .../Components/Machines/Deconstructor.cs | 0 .../Items/Components/Machines/Engine.cs | 0 .../Items/Components/Machines/Fabricator.cs | 0 .../Items/Components/Machines/MiniMap.cs | 0 .../Components/Machines/OxygenGenerator.cs | 0 .../Source/Items/Components/Machines/Pump.cs | 0 .../Source/Items/Components/Machines/Radar.cs | 0 .../Items/Components/Machines/Reactor.cs | 0 .../Items/Components/Machines/Steering.cs | 0 .../Source/Items/Components/Machines/Vent.cs | 0 .../Items/Components/Power/PowerContainer.cs | 0 .../Items/Components/Power/PowerTransfer.cs | 0 .../Source/Items/Components/Power/Powered.cs | 0 .../Source/Items/Components/Projectile.cs | 0 .../Source/Items/Components/Rope.cs | 0 .../Items/Components/Signal/AndComponent.cs | 0 .../Items/Components/Signal/Connection.cs | 0 .../Components/Signal/ConnectionPanel.cs | 0 .../Items/Components/Signal/DelayComponent.cs | 0 .../Items/Components/Signal/LightComponent.cs | 0 .../Items/Components/Signal/MotionSensor.cs | 0 .../Items/Components/Signal/NotComponent.cs | 0 .../Items/Components/Signal/OrComponent.cs | 0 .../Items/Components/Signal/OxygenDetector.cs | 0 .../Components/Signal/RegExFindComponent.cs | 0 .../Items/Components/Signal/RelayComponent.cs | 0 .../Components/Signal/SignalCheckComponent.cs | 0 .../Items/Components/Signal/WaterDetector.cs | 0 .../Items/Components/Signal/WifiComponent.cs | 0 .../Source/Items/Components/Signal/Wire.cs | 0 .../Source/Items/Components/StatusHUD.cs | 0 .../Source/Items/Components/Turret.cs | 0 .../Source/Items/Components/Wearable.cs | 0 .../Source/Items/FixRequirement.cs | 0 .../Source/Items/Inventory.cs | 0 .../Source/Items/Item.cs | 0 .../Source/Items/ItemInventory.cs | 0 .../Source/Items/ItemPrefab.cs | 0 .../Source/Items/RelatedItem.cs | 0 .../Source/Map/Entity.cs | 0 .../Source/Map/EntityGrid.cs | 0 .../Source/Map/Explosion.cs | 0 .../Source/Map/FireSource.cs | 0 {Subsurface => Barotrauma}/Source/Map/Gap.cs | 0 {Subsurface => Barotrauma}/Source/Map/Hull.cs | 0 .../Source/Map/IDamageable.cs | 0 .../Source/Map/Levels/CaveGenerator.cs | 0 .../Source/Map/Levels/Level.cs | 0 .../Map/Levels/LevelGenerationParams.cs | 0 .../Source/Map/Levels/LevelRenderer.cs | 0 .../Source/Map/Levels/Ruins/BTRoom.cs | 0 .../Source/Map/Levels/Ruins/Corridor.cs | 0 .../Source/Map/Levels/Ruins/RuinGenerator.cs | 0 .../Source/Map/Levels/Ruins/RuinStructure.cs | 0 .../Source/Map/Levels/Voronoi.cs | 0 .../Source/Map/Levels/VoronoiElements.cs | 0 .../Source/Map/Levels/WaterRenderer.cs | 0 .../Source/Map/Levels/WrappingWall.cs | 0 .../Source/Map/Lights/ConvexHull.cs | 0 .../Source/Map/Lights/LightManager.cs | 0 .../Source/Map/Lights/LightSource.cs | 0 .../Source/Map/LinkedSubmarine.cs | 0 .../Source/Map/Map/Location.cs | 0 .../Source/Map/Map/LocationType.cs | 0 .../Source/Map/Map/Map.cs | 0 .../Source/Map/MapEntity.cs | 0 .../Source/Map/MapEntityPrefab.cs | 0 .../Source/Map/Md5Hash.cs | 0 .../Source/Map/Structure.cs | 0 .../Source/Map/StructurePrefab.cs | 0 .../Source/Map/Submarine.cs | 0 .../Source/Map/SubmarineBody.cs | 0 .../Source/Map/TransitionCinematic.cs | 0 .../Source/Map/WayPoint.cs | 0 .../Source/Networking/BanList.cs | 0 .../Source/Networking/ChatMessage.cs | 0 .../Source/Networking/Client.cs | 0 .../Source/Networking/EntitySpawner.cs | 0 .../Networking/FileTransfer/FileReceiver.cs | 0 .../Networking/FileTransfer/FileSender.cs | 0 .../Source/Networking/GameClient.cs | 0 .../Source/Networking/GameServer.cs | 0 .../Source/Networking/GameServerLogin.cs | 0 .../Source/Networking/GameServerSettings.cs | 0 .../Source/Networking/INetSerializable.cs | 0 .../Source/Networking/NetBufferExtensions.cs | 0 .../Source/Networking/NetConfig.cs | 0 .../ClientEntityEventManager.cs | 0 .../NetEntityEvent/NetEntityEvent.cs | 0 .../NetEntityEvent/NetEntityEventManager.cs | 0 .../ServerEntityEventManager.cs | 0 .../Source/Networking/NetIdUtils.cs | 0 .../Source/Networking/NetStats.cs | 0 .../Source/Networking/NetworkMember.cs | 0 .../Source/Networking/RespawnManager.cs | 0 .../Source/Networking/ServerLog.cs | 0 .../Source/Networking/Voting.cs | 0 .../Source/Networking/WhiteList.cs | 0 .../Networking/disabled/FileStreamReceiver.cs | 0 .../Networking/disabled/FileStreamSender.cs | 0 .../Networking/disabled/NetworkEvent.cs | 0 .../Networking/disabled/ReliableSender.cs | 0 .../Source/Particles/Particle.cs | 0 .../Source/Particles/ParticleEmitter.cs | 0 .../Source/Particles/ParticleManager.cs | 0 .../Source/Particles/ParticlePrefab.cs | 0 .../Source/Physics/Physics.cs | 0 .../Source/Physics/PhysicsBody.cs | 0 .../Source/PlayerInput.cs | 0 {Subsurface => Barotrauma}/Source/Program.cs | 0 .../Source/Properties.cs | 0 .../Source/Screens/BlurEffect.cs | 0 .../Source/Screens/EditCharacterScreen.cs | 0 .../Source/Screens/EditMapScreen.cs | 0 .../Source/Screens/GameScreen.cs | 0 .../Source/Screens/LobbyScreen.cs | 0 .../Source/Screens/MainMenuScreen.cs | 0 .../Source/Screens/NetLobbyScreen.cs | 0 .../Source/Screens/Screen.cs | 0 .../Source/Screens/ServerListScreen.cs | 0 .../Source/Screens/sygwkgy0.iv5 | 0 .../Source/Sounds/OggSound.cs | 0 .../Source/Sounds/OggStream.cs | 0 .../Source/Sounds/Sound.cs | 0 .../Source/Sounds/SoundManager.cs | 0 .../Source/Sounds/SoundPlayer.cs | 0 {Subsurface => Barotrauma}/Source/Sprite.cs | 0 .../Source/SpriteSheet.cs | 0 {Subsurface => Barotrauma}/Source/Timing.cs | 0 .../Source/Utils/Homoglyphs.cs | 0 .../Source/Utils/MTRandom.cs | 0 .../Source/Utils/MathUtils.cs | 0 .../Source/Utils/Rand.cs | 0 .../Source/Utils/SaveUtil.cs | 0 .../Source/Utils/TextureLoader.cs | 0 .../Source/Utils/ToolBox.cs | 0 .../Source/Utils/UpdaterUtil.cs | 0 .../Submarines/Aegir Mark III.sub | Bin .../Submarines/Nehalennia.sub | Bin .../Submarines/The Blind Carp.sub | Bin .../Submarines/The Nibbler.sub | Bin .../Submarines/TutorialSub.sub | Bin .../Submarines/Vellamo.sub | Bin {Subsurface => Barotrauma}/changelog.txt | 0 {Subsurface => Barotrauma}/config.xml | 0 {Subsurface => Barotrauma}/freetype6.dll | Bin {Subsurface => Barotrauma}/packages.config | 0 {Subsurface => Barotrauma}/readme.txt | 0 {Subsurface => Barotrauma}/wrap_oal.dll | Bin ...ce_Solution.sln => Barotrauma_Solution.sln | 2 +- NETCODE REWRITE DESIGN PLAN.html | 56 ---- 697 files changed, 157 insertions(+), 211 deletions(-) rename {Subsurface => Barotrauma}/Barotrauma.csproj (100%) rename {Subsurface => Barotrauma}/Barotrauma.csproj.user (100%) rename {Subsurface => Barotrauma}/Content/BackgroundSprites/BackgroundCreaturePrefabs.xml (100%) rename {Subsurface => Barotrauma}/Content/BackgroundSprites/BackgroundSpritePrefabs.xml (100%) rename {Subsurface => Barotrauma}/Content/BackgroundSprites/bgFish1.png (100%) rename {Subsurface => Barotrauma}/Content/BackgroundSprites/ice.png (100%) rename {Subsurface => Barotrauma}/Content/BackgroundSprites/vegetation.png (100%) rename {Subsurface => Barotrauma}/Content/BackgroundSprites/vegetation2.png (100%) rename {Subsurface => Barotrauma}/Content/BackgroundSprites/vegetation3.png (100%) rename {Subsurface => Barotrauma}/Content/BackgroundSprites/vegetation4.png (100%) rename {Subsurface => Barotrauma}/Content/BackgroundSprites/vegetation5.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Carrier/alarm1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Carrier/carrier.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Carrier/carrier.xml (100%) rename {Subsurface => Barotrauma}/Content/Characters/Carrier/carrier1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Carrier/carrier2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Carrier/carrier3.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Carrier/ping.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Charybdis/charybdis.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Charybdis/charybdis.xml (100%) rename {Subsurface => Barotrauma}/Content/Characters/Charybdis/charybdisattack.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Coelanth/attack1.ogg (100%) rename Subsurface/Content/Characters/Coelanth/Coelanth.png => Barotrauma/Content/Characters/Coelanth/coelanth.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Coelanth/coelanth.xml (100%) rename {Subsurface => Barotrauma}/Content/Characters/Coelanth/idle1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Coelanth/idle2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Crawler/attack1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Crawler/attack2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Crawler/crawler.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Crawler/crawler.xml (100%) rename {Subsurface => Barotrauma}/Content/Characters/Crawler/idle1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Crawler/idle2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Endworm/endworm.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Endworm/endworm.xml (100%) rename {Subsurface => Barotrauma}/Content/Characters/Endworm/endwormattack1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Endworm/endwormattack2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Endworm/endwormidle.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Fractalguardian/Die1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Fractalguardian/Die2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Fractalguardian/fractalguardian.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Fractalguardian/fractalguardian.xml (100%) rename {Subsurface => Barotrauma}/Content/Characters/Fractalguardian/guardian1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Fractalguardian/guardian2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Fractalguardian2/fractalguardian2.xml (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/damagedhead.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/damagedlegs.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/damagedtorso.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/ffirstnames.txt (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/fhead1.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/fhead2.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/fhead3.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/fhead4.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/fhead5.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/fhead6.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/fhead7[black].png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/fhead8.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/firstnames.txt (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/flegs.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/ftorso.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/ftorso[black].png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/head1.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/head2.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/head3.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/head4.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/head5.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/head6.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/head7[black].png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/head8[black].png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/human.xml (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/humanhusk.xml (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/huskappendage.xml (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/lastnames.txt (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/legs.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/torso.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Human/torso[black].png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Husk/DivingSuit.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Husk/Husk1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Husk/Husk2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Husk/Husk3.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Husk/husk.xml (100%) rename {Subsurface => Barotrauma}/Content/Characters/Husk/legs.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Mantis/attack1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Mantis/attack2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Mantis/idle1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Mantis/idle2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Mantis/idle3.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Mantis/mantis.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Mantis/mantis.xml (100%) rename {Subsurface => Barotrauma}/Content/Characters/Moloch/attack1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Moloch/attack2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Moloch/idle1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Moloch/idle2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Moloch/moloch.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Moloch/moloch.xml (100%) rename {Subsurface => Barotrauma}/Content/Characters/Scorpion/scorpion.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Scorpion/scorpion.xml (100%) rename {Subsurface => Barotrauma}/Content/Characters/Scorpion/scorpionattack1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Scorpion/scorpionidle1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Scorpion/scorpionidle2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Tigerthresher/damagedtigerthresher.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Tigerthresher/tigerthresher.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Tigerthresher/tigerthresher.xml (100%) rename {Subsurface => Barotrauma}/Content/Characters/Watcher/attack1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Watcher/attack2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Watcher/attack3.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Watcher/watch1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Watcher/watch2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Watcher/watch3.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Watcher/watch4.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Watcher/watch5.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Watcher/watch6.ogg (100%) rename {Subsurface => Barotrauma}/Content/Characters/Watcher/watcher.png (100%) rename {Subsurface => Barotrauma}/Content/Characters/Watcher/watcher.xml (100%) rename {Subsurface => Barotrauma}/Content/Code Pro Bold.otf (100%) rename {Subsurface => Barotrauma}/Content/Content.mgcb (100%) rename {Subsurface => Barotrauma}/Content/Exo2-Light.otf (100%) rename {Subsurface => Barotrauma}/Content/Exo2-Medium.otf (100%) rename {Subsurface => Barotrauma}/Content/InfoTexts.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/Artifacts/aliendoor.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Artifacts/alientools.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Artifacts/alienweapon.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Artifacts/artifact.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Artifacts/artifactholder.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Artifacts/artifacts.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/Button/beep.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Button/button.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Button/button.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/Containers/cabinets.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Containers/containers.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/Containers/crates.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Containers/locker.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Diving/DivingMask.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Diving/DivingSuit.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Diving/divingSuit.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Diving/divinggear.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/Diving/scooter.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Door/dockingport.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Door/dockingport1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Door/dockingport2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Door/dockingport2.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Door/door.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Door/door.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Door/doors.xml (97%) rename {Subsurface => Barotrauma}/Content/Items/Electricity/battery.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Electricity/junctionbox.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Electricity/lamp.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Electricity/lights.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/Electricity/lightsprite.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Electricity/monitor.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Electricity/monitors.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/Electricity/powerOn.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Electricity/poweritems.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/Electricity/signalcomp.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Electricity/signalitems.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/Electricity/supercapacitor.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Electricity/zap1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Electricity/zap2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Electricity/zap3.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Electricity/zap4.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Engine/engine.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Engine/engine.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Engine/engine.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/Engine/pingCircle.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Engine/radarBlip.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Engine/radarOverlay.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Engine/radarPing.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Fabricators/deconstructor.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Fabricators/fabricator.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Fabricators/fabricators.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/Fabricators/materials.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Fabricators/materials.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/Jobgear/captainLegs.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Jobgear/captainTorso.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Jobgear/captaingear.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/Jobgear/captainhat.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Jobgear/clownmask.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Jobgear/clownpants.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Jobgear/clownshirt.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Jobgear/doctorgear.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Jobgear/doctorgear.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/Jobgear/engigear.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Jobgear/engigear.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/Jobgear/headset.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Jobgear/misc.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/Jobgear/securitygear.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Jobgear/securitygear.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/Ladder/ladder.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Ladder/ladder.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/Medical/bandage.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Medical/med.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Medical/medical.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/Medical/syringe.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/MiniMap/item.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/OxygenGenerator/oxygengenerator.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/OxygenGenerator/oxygengenerator.png (100%) rename {Subsurface => Barotrauma}/Content/Items/OxygenGenerator/oxygengenerator.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/OxygenGenerator/vent.png (100%) rename {Subsurface => Barotrauma}/Content/Items/OxygenGenerator/ventilation.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Pump/pump.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Pump/pump.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Pump/pump.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/Pump/smallpump.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Reactor/explosion.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Reactor/fuelrod.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Reactor/heatabsorber.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Reactor/reactor.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Reactor/reactor.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Reactor/reactor.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/Tools/extinguisher.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Tools/extinguisher.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Tools/flare.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Tools/plasmaCutter.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Tools/tools.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Tools/tools.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/Tools/weldingTool.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Weapons/bigexplosion.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Weapons/depthcharge.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/Weapons/explosives.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/Weapons/harpoon1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Weapons/harpoon2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Weapons/honk.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Weapons/railgun.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Weapons/railgun.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/Weapons/railgunbarrel.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Weapons/railgunbase.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Weapons/railgunetc.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Weapons/rope.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Weapons/smack.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Weapons/stunbaton.ogg (100%) rename Subsurface/Content/Items/Weapons/stunGrenade.ogg => Barotrauma/Content/Items/Weapons/stungrenade.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/Weapons/stungrenade.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Weapons/weapons.png (100%) rename {Subsurface => Barotrauma}/Content/Items/Weapons/weapons.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/blank.png (100%) rename {Subsurface => Barotrauma}/Content/Items/circuitboard.png (100%) rename {Subsurface => Barotrauma}/Content/Items/connectionpanel.png (100%) rename {Subsurface => Barotrauma}/Content/Items/connector.png (100%) rename {Subsurface => Barotrauma}/Content/Items/idcard.png (100%) rename {Subsurface => Barotrauma}/Content/Items/idcard.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/itemlabel.xml (100%) rename {Subsurface => Barotrauma}/Content/Items/machines.png (100%) rename {Subsurface => Barotrauma}/Content/Items/warningBeep.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/warningSiren.ogg (100%) rename {Subsurface => Barotrauma}/Content/Items/wireCorner.png (100%) rename {Subsurface => Barotrauma}/Content/Items/wireHorizontal.png (100%) rename {Subsurface => Barotrauma}/Content/Items/wireVertical.png (100%) rename {Subsurface => Barotrauma}/Content/Jobs.xml (100%) rename {Subsurface => Barotrauma}/Content/Lights/alphaOne.png (100%) rename {Subsurface => Barotrauma}/Content/Lights/light.png (100%) rename {Subsurface => Barotrauma}/Content/Lights/lightcone.png (100%) rename {Subsurface => Barotrauma}/Content/Lights/penumbra.png (100%) rename {Subsurface => Barotrauma}/Content/Lights/visioncircle.png (100%) rename {Subsurface => Barotrauma}/Content/Map/LevelGenerationParameters.xml (100%) rename {Subsurface => Barotrauma}/Content/Map/RuinConfig.xml (100%) rename {Subsurface => Barotrauma}/Content/Map/StructurePrefabs.xml (100%) rename {Subsurface => Barotrauma}/Content/Map/TutorialSub.sub (100%) rename {Subsurface => Barotrauma}/Content/Map/background.png (100%) rename {Subsurface => Barotrauma}/Content/Map/background2.png (100%) rename {Subsurface => Barotrauma}/Content/Map/beaconSymbol.png (100%) rename {Subsurface => Barotrauma}/Content/Map/beaconbackground.jpg (100%) rename {Subsurface => Barotrauma}/Content/Map/citySymbol.png (100%) rename {Subsurface => Barotrauma}/Content/Map/citybackground.jpg (100%) rename {Subsurface => Barotrauma}/Content/Map/dustparticles.png (100%) rename {Subsurface => Barotrauma}/Content/Map/iceCrack.png (100%) rename {Subsurface => Barotrauma}/Content/Map/iceCraters.png (100%) rename {Subsurface => Barotrauma}/Content/Map/iceSurface.png (100%) rename {Subsurface => Barotrauma}/Content/Map/iceWall.png (100%) rename {Subsurface => Barotrauma}/Content/Map/locationNames.txt (100%) rename {Subsurface => Barotrauma}/Content/Map/locationTypes.xml (100%) rename {Subsurface => Barotrauma}/Content/Map/militarySymbol.png (100%) rename {Subsurface => Barotrauma}/Content/Map/militarybackground.jpg (100%) rename {Subsurface => Barotrauma}/Content/Map/researchSymbol.png (100%) rename {Subsurface => Barotrauma}/Content/Map/researchbackground.jpg (100%) rename {Subsurface => Barotrauma}/Content/Map/ruins.png (100%) rename {Subsurface => Barotrauma}/Content/Map/ruins2.png (100%) rename {Subsurface => Barotrauma}/Content/Map/ruins3.png (100%) rename {Subsurface => Barotrauma}/Content/Map/shaft.png (100%) rename {Subsurface => Barotrauma}/Content/Map/structures2.png (100%) rename {Subsurface => Barotrauma}/Content/Map/testroom.png (100%) rename {Subsurface => Barotrauma}/Content/Map/walldamage.png (100%) rename {Subsurface => Barotrauma}/Content/Map/waypointIcons.png (100%) rename {Subsurface => Barotrauma}/Content/Missions.xml (100%) rename {Subsurface => Barotrauma}/Content/Orders.xml (100%) rename {Subsurface => Barotrauma}/Content/Particles/FlameRoundParticleSheet.png (100%) rename {Subsurface => Barotrauma}/Content/Particles/ParticlePrefabs.xml (100%) rename {Subsurface => Barotrauma}/Content/Particles/SmokeParticleSheet.png (100%) rename {Subsurface => Barotrauma}/Content/Particles/bubbles.png (100%) rename {Subsurface => Barotrauma}/Content/Particles/explosion.png (100%) rename {Subsurface => Barotrauma}/Content/Particles/fire.png (100%) rename {Subsurface => Barotrauma}/Content/Particles/flames.png (100%) rename {Subsurface => Barotrauma}/Content/Particles/shrapnel.png (100%) rename {Subsurface => Barotrauma}/Content/Particles/spatter.png (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Ambient/Ambient1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Ambient/Ambient10.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Ambient/Ambient11.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Ambient/Ambient12.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Ambient/Ambient13.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Ambient/Ambient2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Ambient/Ambient3.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Ambient/Ambient4.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Ambient/Ambient5.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Ambient/Ambient6.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Ambient/Ambient7.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Ambient/Ambient8.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Ambient/Ambient9.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Ambient/DistantPod1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Ambient/DistantPod2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Ambient/DistantPod3.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Ambient/GlacialMovement.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/GlassBreak1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/GlassBreak2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/GlassBreak3.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/GlassImpact1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/GlassImpact2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/GlassImpact3.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/HitArmor1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/HitArmor2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/HitArmor3.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/LimbBlunt1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/LimbBlunt2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/LimbBlunt3.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/LimbBlunt4.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/LimbBlunt5.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/LimbSlash1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/LimbSlash2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/LimbSlash3.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/StructureBlunt1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/StructureBlunt10.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/StructureBlunt2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/StructureBlunt3.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/StructureBlunt4.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/StructureBlunt5.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/StructureBlunt6.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/StructureBlunt7.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/StructureBlunt8.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/StructureBlunt9.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/StructureCrunch1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/StructureCrunch2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/StructureCrunch3.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/StructureCrunch4.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/StructureCrunch5.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/creak1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/creak2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/creak3.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/creak4.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/creak5.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Damage/implode.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Music/Controlled Chaos 2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Music/Controlled Chaos.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Music/Enter the Maze.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Music/Phantom From Space.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Music/Road to Hell.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Music/Simplex.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Music/Static Motion.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Music/Tenebrous Brothers Carnival - Prelude.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Music/The Descent.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Music/Unseen Horrors.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Music/amb_JD_drone_clattering_machine.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/UI/UImsg.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/UI/beep-shinymetal.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/UI/deadmsg.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/UI/radiomsg.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/UI/tap-zipper.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Water/Drown1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Water/Drown2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Water/Drown3.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Water/Drown4.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Water/DrownLoop.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Water/FlowLarge.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Water/FlowMedium.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Water/FlowSmall.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Water/Splash0.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Water/Splash1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Water/Splash2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Water/Splash3.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Water/Splash4.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Water/Splash5.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Water/Splash6.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Water/Splash7.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Water/Splash8.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Water/Splash9.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Water/WaterAmbience1.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Water/WaterAmbience2.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/Water/splashLoop.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/fire.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/firelarge.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/pickItem.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/sounds.xml (100%) rename {Subsurface => Barotrauma}/Content/Sounds/startDrone.ogg (100%) rename {Subsurface => Barotrauma}/Content/Sounds/stepMetal.ogg (100%) rename {Subsurface => Barotrauma}/Content/UI/UI_Atlas.png (100%) rename {Subsurface => Barotrauma}/Content/UI/caret.png (100%) rename {Subsurface => Barotrauma}/Content/UI/cursor.png (100%) rename {Subsurface => Barotrauma}/Content/UI/damageOverlay.png (100%) rename {Subsurface => Barotrauma}/Content/UI/inventoryIcons.png (100%) rename {Subsurface => Barotrauma}/Content/UI/noise.png (100%) rename {Subsurface => Barotrauma}/Content/UI/statusIcons.png (100%) rename {Subsurface => Barotrauma}/Content/UI/style.xml (100%) rename {Subsurface => Barotrauma}/Content/UI/textboxTexture.png (100%) rename {Subsurface => Barotrauma}/Content/UI/titleBackground.png (100%) rename {Subsurface => Barotrauma}/Content/UI/titleMonster.png (100%) rename {Subsurface => Barotrauma}/Content/UI/titleText.png (100%) rename {Subsurface => Barotrauma}/Content/UI/uiBackground.png (100%) rename {Subsurface => Barotrauma}/Content/UI/uiButton.png (100%) rename {Subsurface => Barotrauma}/Content/UI/uiIcons.png (100%) rename {Subsurface => Barotrauma}/Content/blurshader.fx (100%) rename {Subsurface => Barotrauma}/Content/blurshader.xnb (100%) rename {Subsurface => Barotrauma}/Content/blurshader_opengl.xnb (100%) rename {Subsurface => Barotrauma}/Content/damageshader.fx (100%) rename {Subsurface => Barotrauma}/Content/damageshader.xnb (100%) rename {Subsurface => Barotrauma}/Content/damageshader_opengl.xnb (100%) rename {Subsurface => Barotrauma}/Content/effects.mgfx (100%) rename {Subsurface => Barotrauma}/Content/randomevents.xml (100%) rename {Subsurface => Barotrauma}/Content/step.ogg (100%) rename {Subsurface => Barotrauma}/Content/utg_4.mp4 (100%) rename {Subsurface => Barotrauma}/Content/utg_4.xnb (100%) rename {Subsurface => Barotrauma}/Content/waterbump.png (100%) rename {Subsurface => Barotrauma}/Content/watershader.fx (100%) rename {Subsurface => Barotrauma}/Content/watershader.xnb (100%) rename {Subsurface => Barotrauma}/Content/watershader_opengl.xnb (100%) rename {Subsurface => Barotrauma}/Data/ContentPackages/Vanilla 0.3.xml (100%) rename {Subsurface => Barotrauma}/Icon.ico (100%) rename {Subsurface => Barotrauma}/Mods/info.txt (100%) rename {Subsurface => Barotrauma}/OpenAL32.dll (100%) rename {Subsurface => Barotrauma}/Properties/AssemblyInfo.cs (100%) rename {Subsurface => Barotrauma}/Source/Camera.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/AI/AIController.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/AI/AITarget.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/AI/CrewCommander.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/AI/EnemyAIController.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/AI/HumanAIController.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/AI/ISteerable.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/AI/IndoorsSteeringManager.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/AI/Objectives/AIObjective.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/AI/Objectives/AIObjectiveCombat.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/AI/Objectives/AIObjectiveContainItem.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/AI/Objectives/AIObjectiveFindDivingGear.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/AI/Objectives/AIObjectiveFindSafety.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/AI/Objectives/AIObjectiveFixLeak.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/AI/Objectives/AIObjectiveFixLeaks.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/AI/Objectives/AIObjectiveGetItem.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/AI/Objectives/AIObjectiveGoTo.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/AI/Objectives/AIObjectiveIdle.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/AI/Objectives/AIObjectiveManager.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/AI/Objectives/AIObjectiveOperateItem.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/AI/Objectives/AIObjectiveRescue.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/AI/Objectives/AIObjectiveRescureAll.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/AI/Order.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/AI/PathFinder.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/AI/SteeringManager.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/AI/SteeringPath.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/AICharacter.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/Animation/AnimController.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/Animation/FishAnimController.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/Animation/HumanoidAnimController.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/Animation/Ragdoll.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/Attack.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/BackgroundSprite/BackgroundCreature.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/BackgroundSprite/BackgroundCreatureManager.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/BackgroundSprite/BackgroundCreaturePrefab.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/BackgroundSprite/BackgroundSpriteManager.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/BackgroundSprite/BackgroundSpritePrefab.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/Character.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/CharacterHUD.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/CharacterInfo.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/CharacterNetworking.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/CharacterSound.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/DelayedEffect.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/HUDProgressBar.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/HuskInfection.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/Jobs/Job.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/Jobs/JobPrefab.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/Jobs/Skill.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/Jobs/SkillPrefab.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/Limb.cs (100%) rename {Subsurface => Barotrauma}/Source/Characters/StatusEffect.cs (100%) rename {Subsurface => Barotrauma}/Source/ContentPackage.cs (100%) rename {Subsurface => Barotrauma}/Source/CoroutineManager.cs (100%) rename {Subsurface => Barotrauma}/Source/DebugConsole.cs (100%) rename {Subsurface => Barotrauma}/Source/EventInput/EventInput.cs (100%) rename {Subsurface => Barotrauma}/Source/EventInput/KeyboardDispatcher.cs (100%) rename {Subsurface => Barotrauma}/Source/Events/ArtifactEvent.cs (100%) rename {Subsurface => Barotrauma}/Source/Events/Missions/CargoMission.cs (100%) rename {Subsurface => Barotrauma}/Source/Events/Missions/CombatMission.cs (100%) rename {Subsurface => Barotrauma}/Source/Events/Missions/Mission.cs (100%) rename {Subsurface => Barotrauma}/Source/Events/Missions/MonsterMission.cs (100%) rename {Subsurface => Barotrauma}/Source/Events/Missions/SalvageMission.cs (100%) rename {Subsurface => Barotrauma}/Source/Events/MonsterEvent.cs (100%) rename {Subsurface => Barotrauma}/Source/Events/PropertyTask.cs (100%) rename {Subsurface => Barotrauma}/Source/Events/RepairTask.cs (100%) rename {Subsurface => Barotrauma}/Source/Events/ScriptedEvent.cs (100%) rename {Subsurface => Barotrauma}/Source/Events/ScriptedTask.cs (100%) rename {Subsurface => Barotrauma}/Source/Events/Task.cs (100%) rename {Subsurface => Barotrauma}/Source/Events/TaskManager.cs (100%) rename {Subsurface => Barotrauma}/Source/Fonts/ScalableFont.cs (100%) rename {Subsurface => Barotrauma}/Source/FrameCounter.cs (100%) rename {Subsurface => Barotrauma}/Source/GUI/ComponentStyle.cs (100%) rename {Subsurface => Barotrauma}/Source/GUI/GUI.cs (100%) rename {Subsurface => Barotrauma}/Source/GUI/GUIButton.cs (100%) rename {Subsurface => Barotrauma}/Source/GUI/GUIComponent.cs (100%) rename {Subsurface => Barotrauma}/Source/GUI/GUIDropDown.cs (100%) rename {Subsurface => Barotrauma}/Source/GUI/GUIFrame.cs (100%) rename {Subsurface => Barotrauma}/Source/GUI/GUIImage.cs (100%) rename {Subsurface => Barotrauma}/Source/GUI/GUIListBox.cs (100%) rename {Subsurface => Barotrauma}/Source/GUI/GUIMessage.cs (100%) rename {Subsurface => Barotrauma}/Source/GUI/GUIMessageBox.cs (100%) rename {Subsurface => Barotrauma}/Source/GUI/GUIProgressBar.cs (100%) rename {Subsurface => Barotrauma}/Source/GUI/GUIScrollBar.cs (100%) rename {Subsurface => Barotrauma}/Source/GUI/GUIStyle.cs (100%) rename {Subsurface => Barotrauma}/Source/GUI/GUITextBlock.cs (100%) rename {Subsurface => Barotrauma}/Source/GUI/GUITextBox.cs (100%) rename {Subsurface => Barotrauma}/Source/GUI/GUITickBox.cs (100%) rename {Subsurface => Barotrauma}/Source/GUI/LoadingScreen.cs (100%) rename {Subsurface => Barotrauma}/Source/GameMain.cs (100%) rename {Subsurface => Barotrauma}/Source/GameSession/CargoManager.cs (100%) rename {Subsurface => Barotrauma}/Source/GameSession/CrewManager.cs (100%) rename {Subsurface => Barotrauma}/Source/GameSession/GameModes/GameMode.cs (100%) rename {Subsurface => Barotrauma}/Source/GameSession/GameModes/GameModePreset.cs (100%) rename {Subsurface => Barotrauma}/Source/GameSession/GameModes/MissionMode.cs (100%) rename {Subsurface => Barotrauma}/Source/GameSession/GameModes/SinglePlayerMode.cs (100%) rename {Subsurface => Barotrauma}/Source/GameSession/GameModes/TraitorManager.cs (100%) rename {Subsurface => Barotrauma}/Source/GameSession/GameModes/Tutorials/BasicTutorial.cs (100%) rename {Subsurface => Barotrauma}/Source/GameSession/GameModes/Tutorials/EditorTutorial.cs (100%) rename {Subsurface => Barotrauma}/Source/GameSession/GameModes/Tutorials/TutorialMode.cs (100%) rename {Subsurface => Barotrauma}/Source/GameSession/GameModes/Tutorials/TutorialType.cs (100%) rename {Subsurface => Barotrauma}/Source/GameSession/GameSession.cs (100%) rename {Subsurface => Barotrauma}/Source/GameSession/HireManager.cs (100%) rename {Subsurface => Barotrauma}/Source/GameSession/InfoTextManager.cs (100%) rename {Subsurface => Barotrauma}/Source/GameSession/ShiftSummary.cs (100%) rename {Subsurface => Barotrauma}/Source/GameSettings.cs (100%) rename {Subsurface => Barotrauma}/Source/IPropertyObject.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/CharacterInventory.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/DockingPort.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Door.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Holdable/Holdable.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Holdable/MeleeWeapon.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Holdable/Pickable.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Holdable/Propulsion.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Holdable/RangedWeapon.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Holdable/RepairTool.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Holdable/Throwable.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/ItemComponent.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/ItemContainer.cs (99%) rename {Subsurface => Barotrauma}/Source/Items/Components/ItemLabel.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Ladder.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Machines/Controller.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Machines/Deconstructor.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Machines/Engine.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Machines/Fabricator.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Machines/MiniMap.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Machines/OxygenGenerator.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Machines/Pump.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Machines/Radar.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Machines/Reactor.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Machines/Steering.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Machines/Vent.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Power/PowerContainer.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Power/PowerTransfer.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Power/Powered.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Projectile.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Rope.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Signal/AndComponent.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Signal/Connection.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Signal/ConnectionPanel.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Signal/DelayComponent.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Signal/LightComponent.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Signal/MotionSensor.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Signal/NotComponent.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Signal/OrComponent.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Signal/OxygenDetector.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Signal/RegExFindComponent.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Signal/RelayComponent.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Signal/SignalCheckComponent.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Signal/WaterDetector.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Signal/WifiComponent.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Signal/Wire.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/StatusHUD.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Turret.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Components/Wearable.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/FixRequirement.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Inventory.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/Item.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/ItemInventory.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/ItemPrefab.cs (100%) rename {Subsurface => Barotrauma}/Source/Items/RelatedItem.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/Entity.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/EntityGrid.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/Explosion.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/FireSource.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/Gap.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/Hull.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/IDamageable.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/Levels/CaveGenerator.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/Levels/Level.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/Levels/LevelGenerationParams.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/Levels/LevelRenderer.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/Levels/Ruins/BTRoom.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/Levels/Ruins/Corridor.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/Levels/Ruins/RuinGenerator.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/Levels/Ruins/RuinStructure.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/Levels/Voronoi.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/Levels/VoronoiElements.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/Levels/WaterRenderer.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/Levels/WrappingWall.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/Lights/ConvexHull.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/Lights/LightManager.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/Lights/LightSource.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/LinkedSubmarine.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/Map/Location.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/Map/LocationType.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/Map/Map.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/MapEntity.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/MapEntityPrefab.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/Md5Hash.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/Structure.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/StructurePrefab.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/Submarine.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/SubmarineBody.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/TransitionCinematic.cs (100%) rename {Subsurface => Barotrauma}/Source/Map/WayPoint.cs (100%) rename {Subsurface => Barotrauma}/Source/Networking/BanList.cs (100%) rename {Subsurface => Barotrauma}/Source/Networking/ChatMessage.cs (100%) rename {Subsurface => Barotrauma}/Source/Networking/Client.cs (100%) rename {Subsurface => Barotrauma}/Source/Networking/EntitySpawner.cs (100%) rename {Subsurface => Barotrauma}/Source/Networking/FileTransfer/FileReceiver.cs (100%) rename {Subsurface => Barotrauma}/Source/Networking/FileTransfer/FileSender.cs (100%) rename {Subsurface => Barotrauma}/Source/Networking/GameClient.cs (100%) rename {Subsurface => Barotrauma}/Source/Networking/GameServer.cs (100%) rename {Subsurface => Barotrauma}/Source/Networking/GameServerLogin.cs (100%) rename {Subsurface => Barotrauma}/Source/Networking/GameServerSettings.cs (100%) rename {Subsurface => Barotrauma}/Source/Networking/INetSerializable.cs (100%) rename {Subsurface => Barotrauma}/Source/Networking/NetBufferExtensions.cs (100%) rename {Subsurface => Barotrauma}/Source/Networking/NetConfig.cs (100%) rename {Subsurface => Barotrauma}/Source/Networking/NetEntityEvent/ClientEntityEventManager.cs (100%) rename {Subsurface => Barotrauma}/Source/Networking/NetEntityEvent/NetEntityEvent.cs (100%) rename {Subsurface => Barotrauma}/Source/Networking/NetEntityEvent/NetEntityEventManager.cs (100%) rename {Subsurface => Barotrauma}/Source/Networking/NetEntityEvent/ServerEntityEventManager.cs (100%) rename {Subsurface => Barotrauma}/Source/Networking/NetIdUtils.cs (100%) rename {Subsurface => Barotrauma}/Source/Networking/NetStats.cs (100%) rename {Subsurface => Barotrauma}/Source/Networking/NetworkMember.cs (100%) rename {Subsurface => Barotrauma}/Source/Networking/RespawnManager.cs (100%) rename {Subsurface => Barotrauma}/Source/Networking/ServerLog.cs (100%) rename {Subsurface => Barotrauma}/Source/Networking/Voting.cs (100%) rename {Subsurface => Barotrauma}/Source/Networking/WhiteList.cs (100%) rename {Subsurface => Barotrauma}/Source/Networking/disabled/FileStreamReceiver.cs (100%) rename {Subsurface => Barotrauma}/Source/Networking/disabled/FileStreamSender.cs (100%) rename {Subsurface => Barotrauma}/Source/Networking/disabled/NetworkEvent.cs (100%) rename {Subsurface => Barotrauma}/Source/Networking/disabled/ReliableSender.cs (100%) rename {Subsurface => Barotrauma}/Source/Particles/Particle.cs (100%) rename {Subsurface => Barotrauma}/Source/Particles/ParticleEmitter.cs (100%) rename {Subsurface => Barotrauma}/Source/Particles/ParticleManager.cs (100%) rename {Subsurface => Barotrauma}/Source/Particles/ParticlePrefab.cs (100%) rename {Subsurface => Barotrauma}/Source/Physics/Physics.cs (100%) rename {Subsurface => Barotrauma}/Source/Physics/PhysicsBody.cs (100%) rename {Subsurface => Barotrauma}/Source/PlayerInput.cs (100%) rename {Subsurface => Barotrauma}/Source/Program.cs (100%) rename {Subsurface => Barotrauma}/Source/Properties.cs (100%) rename {Subsurface => Barotrauma}/Source/Screens/BlurEffect.cs (100%) rename {Subsurface => Barotrauma}/Source/Screens/EditCharacterScreen.cs (100%) rename {Subsurface => Barotrauma}/Source/Screens/EditMapScreen.cs (100%) rename {Subsurface => Barotrauma}/Source/Screens/GameScreen.cs (100%) rename {Subsurface => Barotrauma}/Source/Screens/LobbyScreen.cs (100%) rename {Subsurface => Barotrauma}/Source/Screens/MainMenuScreen.cs (100%) rename {Subsurface => Barotrauma}/Source/Screens/NetLobbyScreen.cs (100%) rename {Subsurface => Barotrauma}/Source/Screens/Screen.cs (100%) rename {Subsurface => Barotrauma}/Source/Screens/ServerListScreen.cs (100%) rename {Subsurface => Barotrauma}/Source/Screens/sygwkgy0.iv5 (100%) rename {Subsurface => Barotrauma}/Source/Sounds/OggSound.cs (100%) rename {Subsurface => Barotrauma}/Source/Sounds/OggStream.cs (100%) rename {Subsurface => Barotrauma}/Source/Sounds/Sound.cs (100%) rename {Subsurface => Barotrauma}/Source/Sounds/SoundManager.cs (100%) rename {Subsurface => Barotrauma}/Source/Sounds/SoundPlayer.cs (100%) rename {Subsurface => Barotrauma}/Source/Sprite.cs (100%) rename {Subsurface => Barotrauma}/Source/SpriteSheet.cs (100%) rename {Subsurface => Barotrauma}/Source/Timing.cs (100%) rename {Subsurface => Barotrauma}/Source/Utils/Homoglyphs.cs (100%) rename {Subsurface => Barotrauma}/Source/Utils/MTRandom.cs (100%) rename {Subsurface => Barotrauma}/Source/Utils/MathUtils.cs (100%) rename {Subsurface => Barotrauma}/Source/Utils/Rand.cs (100%) rename {Subsurface => Barotrauma}/Source/Utils/SaveUtil.cs (100%) rename {Subsurface => Barotrauma}/Source/Utils/TextureLoader.cs (100%) rename {Subsurface => Barotrauma}/Source/Utils/ToolBox.cs (100%) rename {Subsurface => Barotrauma}/Source/Utils/UpdaterUtil.cs (100%) rename {Subsurface => Barotrauma}/Submarines/Aegir Mark III.sub (100%) rename {Subsurface => Barotrauma}/Submarines/Nehalennia.sub (100%) rename {Subsurface => Barotrauma}/Submarines/The Blind Carp.sub (100%) rename {Subsurface => Barotrauma}/Submarines/The Nibbler.sub (100%) rename {Subsurface => Barotrauma}/Submarines/TutorialSub.sub (100%) rename {Subsurface => Barotrauma}/Submarines/Vellamo.sub (100%) rename {Subsurface => Barotrauma}/changelog.txt (100%) rename {Subsurface => Barotrauma}/config.xml (100%) rename {Subsurface => Barotrauma}/freetype6.dll (100%) rename {Subsurface => Barotrauma}/packages.config (100%) rename {Subsurface => Barotrauma}/readme.txt (100%) rename {Subsurface => Barotrauma}/wrap_oal.dll (100%) rename Subsurface_Solution.sln => Barotrauma_Solution.sln (99%) delete mode 100644 NETCODE REWRITE DESIGN PLAN.html diff --git a/Subsurface/Barotrauma.csproj b/Barotrauma/Barotrauma.csproj similarity index 100% rename from Subsurface/Barotrauma.csproj rename to Barotrauma/Barotrauma.csproj diff --git a/Subsurface/Barotrauma.csproj.user b/Barotrauma/Barotrauma.csproj.user similarity index 100% rename from Subsurface/Barotrauma.csproj.user rename to Barotrauma/Barotrauma.csproj.user diff --git a/Subsurface/Content/BackgroundSprites/BackgroundCreaturePrefabs.xml b/Barotrauma/Content/BackgroundSprites/BackgroundCreaturePrefabs.xml similarity index 100% rename from Subsurface/Content/BackgroundSprites/BackgroundCreaturePrefabs.xml rename to Barotrauma/Content/BackgroundSprites/BackgroundCreaturePrefabs.xml diff --git a/Subsurface/Content/BackgroundSprites/BackgroundSpritePrefabs.xml b/Barotrauma/Content/BackgroundSprites/BackgroundSpritePrefabs.xml similarity index 100% rename from Subsurface/Content/BackgroundSprites/BackgroundSpritePrefabs.xml rename to Barotrauma/Content/BackgroundSprites/BackgroundSpritePrefabs.xml diff --git a/Subsurface/Content/BackgroundSprites/bgFish1.png b/Barotrauma/Content/BackgroundSprites/bgFish1.png similarity index 100% rename from Subsurface/Content/BackgroundSprites/bgFish1.png rename to Barotrauma/Content/BackgroundSprites/bgFish1.png diff --git a/Subsurface/Content/BackgroundSprites/ice.png b/Barotrauma/Content/BackgroundSprites/ice.png similarity index 100% rename from Subsurface/Content/BackgroundSprites/ice.png rename to Barotrauma/Content/BackgroundSprites/ice.png diff --git a/Subsurface/Content/BackgroundSprites/vegetation.png b/Barotrauma/Content/BackgroundSprites/vegetation.png similarity index 100% rename from Subsurface/Content/BackgroundSprites/vegetation.png rename to Barotrauma/Content/BackgroundSprites/vegetation.png diff --git a/Subsurface/Content/BackgroundSprites/vegetation2.png b/Barotrauma/Content/BackgroundSprites/vegetation2.png similarity index 100% rename from Subsurface/Content/BackgroundSprites/vegetation2.png rename to Barotrauma/Content/BackgroundSprites/vegetation2.png diff --git a/Subsurface/Content/BackgroundSprites/vegetation3.png b/Barotrauma/Content/BackgroundSprites/vegetation3.png similarity index 100% rename from Subsurface/Content/BackgroundSprites/vegetation3.png rename to Barotrauma/Content/BackgroundSprites/vegetation3.png diff --git a/Subsurface/Content/BackgroundSprites/vegetation4.png b/Barotrauma/Content/BackgroundSprites/vegetation4.png similarity index 100% rename from Subsurface/Content/BackgroundSprites/vegetation4.png rename to Barotrauma/Content/BackgroundSprites/vegetation4.png diff --git a/Subsurface/Content/BackgroundSprites/vegetation5.png b/Barotrauma/Content/BackgroundSprites/vegetation5.png similarity index 100% rename from Subsurface/Content/BackgroundSprites/vegetation5.png rename to Barotrauma/Content/BackgroundSprites/vegetation5.png diff --git a/Subsurface/Content/Characters/Carrier/alarm1.ogg b/Barotrauma/Content/Characters/Carrier/alarm1.ogg similarity index 100% rename from Subsurface/Content/Characters/Carrier/alarm1.ogg rename to Barotrauma/Content/Characters/Carrier/alarm1.ogg diff --git a/Subsurface/Content/Characters/Carrier/carrier.png b/Barotrauma/Content/Characters/Carrier/carrier.png similarity index 100% rename from Subsurface/Content/Characters/Carrier/carrier.png rename to Barotrauma/Content/Characters/Carrier/carrier.png diff --git a/Subsurface/Content/Characters/Carrier/carrier.xml b/Barotrauma/Content/Characters/Carrier/carrier.xml similarity index 100% rename from Subsurface/Content/Characters/Carrier/carrier.xml rename to Barotrauma/Content/Characters/Carrier/carrier.xml diff --git a/Subsurface/Content/Characters/Carrier/carrier1.ogg b/Barotrauma/Content/Characters/Carrier/carrier1.ogg similarity index 100% rename from Subsurface/Content/Characters/Carrier/carrier1.ogg rename to Barotrauma/Content/Characters/Carrier/carrier1.ogg diff --git a/Subsurface/Content/Characters/Carrier/carrier2.ogg b/Barotrauma/Content/Characters/Carrier/carrier2.ogg similarity index 100% rename from Subsurface/Content/Characters/Carrier/carrier2.ogg rename to Barotrauma/Content/Characters/Carrier/carrier2.ogg diff --git a/Subsurface/Content/Characters/Carrier/carrier3.ogg b/Barotrauma/Content/Characters/Carrier/carrier3.ogg similarity index 100% rename from Subsurface/Content/Characters/Carrier/carrier3.ogg rename to Barotrauma/Content/Characters/Carrier/carrier3.ogg diff --git a/Subsurface/Content/Characters/Carrier/ping.ogg b/Barotrauma/Content/Characters/Carrier/ping.ogg similarity index 100% rename from Subsurface/Content/Characters/Carrier/ping.ogg rename to Barotrauma/Content/Characters/Carrier/ping.ogg diff --git a/Subsurface/Content/Characters/Charybdis/charybdis.png b/Barotrauma/Content/Characters/Charybdis/charybdis.png similarity index 100% rename from Subsurface/Content/Characters/Charybdis/charybdis.png rename to Barotrauma/Content/Characters/Charybdis/charybdis.png diff --git a/Subsurface/Content/Characters/Charybdis/charybdis.xml b/Barotrauma/Content/Characters/Charybdis/charybdis.xml similarity index 100% rename from Subsurface/Content/Characters/Charybdis/charybdis.xml rename to Barotrauma/Content/Characters/Charybdis/charybdis.xml diff --git a/Subsurface/Content/Characters/Charybdis/charybdisattack.ogg b/Barotrauma/Content/Characters/Charybdis/charybdisattack.ogg similarity index 100% rename from Subsurface/Content/Characters/Charybdis/charybdisattack.ogg rename to Barotrauma/Content/Characters/Charybdis/charybdisattack.ogg diff --git a/Subsurface/Content/Characters/Coelanth/attack1.ogg b/Barotrauma/Content/Characters/Coelanth/attack1.ogg similarity index 100% rename from Subsurface/Content/Characters/Coelanth/attack1.ogg rename to Barotrauma/Content/Characters/Coelanth/attack1.ogg diff --git a/Subsurface/Content/Characters/Coelanth/Coelanth.png b/Barotrauma/Content/Characters/Coelanth/coelanth.png similarity index 100% rename from Subsurface/Content/Characters/Coelanth/Coelanth.png rename to Barotrauma/Content/Characters/Coelanth/coelanth.png diff --git a/Subsurface/Content/Characters/Coelanth/coelanth.xml b/Barotrauma/Content/Characters/Coelanth/coelanth.xml similarity index 100% rename from Subsurface/Content/Characters/Coelanth/coelanth.xml rename to Barotrauma/Content/Characters/Coelanth/coelanth.xml diff --git a/Subsurface/Content/Characters/Coelanth/idle1.ogg b/Barotrauma/Content/Characters/Coelanth/idle1.ogg similarity index 100% rename from Subsurface/Content/Characters/Coelanth/idle1.ogg rename to Barotrauma/Content/Characters/Coelanth/idle1.ogg diff --git a/Subsurface/Content/Characters/Coelanth/idle2.ogg b/Barotrauma/Content/Characters/Coelanth/idle2.ogg similarity index 100% rename from Subsurface/Content/Characters/Coelanth/idle2.ogg rename to Barotrauma/Content/Characters/Coelanth/idle2.ogg diff --git a/Subsurface/Content/Characters/Crawler/attack1.ogg b/Barotrauma/Content/Characters/Crawler/attack1.ogg similarity index 100% rename from Subsurface/Content/Characters/Crawler/attack1.ogg rename to Barotrauma/Content/Characters/Crawler/attack1.ogg diff --git a/Subsurface/Content/Characters/Crawler/attack2.ogg b/Barotrauma/Content/Characters/Crawler/attack2.ogg similarity index 100% rename from Subsurface/Content/Characters/Crawler/attack2.ogg rename to Barotrauma/Content/Characters/Crawler/attack2.ogg diff --git a/Subsurface/Content/Characters/Crawler/crawler.png b/Barotrauma/Content/Characters/Crawler/crawler.png similarity index 100% rename from Subsurface/Content/Characters/Crawler/crawler.png rename to Barotrauma/Content/Characters/Crawler/crawler.png diff --git a/Subsurface/Content/Characters/Crawler/crawler.xml b/Barotrauma/Content/Characters/Crawler/crawler.xml similarity index 100% rename from Subsurface/Content/Characters/Crawler/crawler.xml rename to Barotrauma/Content/Characters/Crawler/crawler.xml diff --git a/Subsurface/Content/Characters/Crawler/idle1.ogg b/Barotrauma/Content/Characters/Crawler/idle1.ogg similarity index 100% rename from Subsurface/Content/Characters/Crawler/idle1.ogg rename to Barotrauma/Content/Characters/Crawler/idle1.ogg diff --git a/Subsurface/Content/Characters/Crawler/idle2.ogg b/Barotrauma/Content/Characters/Crawler/idle2.ogg similarity index 100% rename from Subsurface/Content/Characters/Crawler/idle2.ogg rename to Barotrauma/Content/Characters/Crawler/idle2.ogg diff --git a/Subsurface/Content/Characters/Endworm/endworm.png b/Barotrauma/Content/Characters/Endworm/endworm.png similarity index 100% rename from Subsurface/Content/Characters/Endworm/endworm.png rename to Barotrauma/Content/Characters/Endworm/endworm.png diff --git a/Subsurface/Content/Characters/Endworm/endworm.xml b/Barotrauma/Content/Characters/Endworm/endworm.xml similarity index 100% rename from Subsurface/Content/Characters/Endworm/endworm.xml rename to Barotrauma/Content/Characters/Endworm/endworm.xml diff --git a/Subsurface/Content/Characters/Endworm/endwormattack1.ogg b/Barotrauma/Content/Characters/Endworm/endwormattack1.ogg similarity index 100% rename from Subsurface/Content/Characters/Endworm/endwormattack1.ogg rename to Barotrauma/Content/Characters/Endworm/endwormattack1.ogg diff --git a/Subsurface/Content/Characters/Endworm/endwormattack2.ogg b/Barotrauma/Content/Characters/Endworm/endwormattack2.ogg similarity index 100% rename from Subsurface/Content/Characters/Endworm/endwormattack2.ogg rename to Barotrauma/Content/Characters/Endworm/endwormattack2.ogg diff --git a/Subsurface/Content/Characters/Endworm/endwormidle.ogg b/Barotrauma/Content/Characters/Endworm/endwormidle.ogg similarity index 100% rename from Subsurface/Content/Characters/Endworm/endwormidle.ogg rename to Barotrauma/Content/Characters/Endworm/endwormidle.ogg diff --git a/Subsurface/Content/Characters/Fractalguardian/Die1.ogg b/Barotrauma/Content/Characters/Fractalguardian/Die1.ogg similarity index 100% rename from Subsurface/Content/Characters/Fractalguardian/Die1.ogg rename to Barotrauma/Content/Characters/Fractalguardian/Die1.ogg diff --git a/Subsurface/Content/Characters/Fractalguardian/Die2.ogg b/Barotrauma/Content/Characters/Fractalguardian/Die2.ogg similarity index 100% rename from Subsurface/Content/Characters/Fractalguardian/Die2.ogg rename to Barotrauma/Content/Characters/Fractalguardian/Die2.ogg diff --git a/Subsurface/Content/Characters/Fractalguardian/fractalguardian.png b/Barotrauma/Content/Characters/Fractalguardian/fractalguardian.png similarity index 100% rename from Subsurface/Content/Characters/Fractalguardian/fractalguardian.png rename to Barotrauma/Content/Characters/Fractalguardian/fractalguardian.png diff --git a/Subsurface/Content/Characters/Fractalguardian/fractalguardian.xml b/Barotrauma/Content/Characters/Fractalguardian/fractalguardian.xml similarity index 100% rename from Subsurface/Content/Characters/Fractalguardian/fractalguardian.xml rename to Barotrauma/Content/Characters/Fractalguardian/fractalguardian.xml diff --git a/Subsurface/Content/Characters/Fractalguardian/guardian1.ogg b/Barotrauma/Content/Characters/Fractalguardian/guardian1.ogg similarity index 100% rename from Subsurface/Content/Characters/Fractalguardian/guardian1.ogg rename to Barotrauma/Content/Characters/Fractalguardian/guardian1.ogg diff --git a/Subsurface/Content/Characters/Fractalguardian/guardian2.ogg b/Barotrauma/Content/Characters/Fractalguardian/guardian2.ogg similarity index 100% rename from Subsurface/Content/Characters/Fractalguardian/guardian2.ogg rename to Barotrauma/Content/Characters/Fractalguardian/guardian2.ogg diff --git a/Subsurface/Content/Characters/Fractalguardian2/fractalguardian2.xml b/Barotrauma/Content/Characters/Fractalguardian2/fractalguardian2.xml similarity index 100% rename from Subsurface/Content/Characters/Fractalguardian2/fractalguardian2.xml rename to Barotrauma/Content/Characters/Fractalguardian2/fractalguardian2.xml diff --git a/Subsurface/Content/Characters/Human/damagedhead.png b/Barotrauma/Content/Characters/Human/damagedhead.png similarity index 100% rename from Subsurface/Content/Characters/Human/damagedhead.png rename to Barotrauma/Content/Characters/Human/damagedhead.png diff --git a/Subsurface/Content/Characters/Human/damagedlegs.png b/Barotrauma/Content/Characters/Human/damagedlegs.png similarity index 100% rename from Subsurface/Content/Characters/Human/damagedlegs.png rename to Barotrauma/Content/Characters/Human/damagedlegs.png diff --git a/Subsurface/Content/Characters/Human/damagedtorso.png b/Barotrauma/Content/Characters/Human/damagedtorso.png similarity index 100% rename from Subsurface/Content/Characters/Human/damagedtorso.png rename to Barotrauma/Content/Characters/Human/damagedtorso.png diff --git a/Subsurface/Content/Characters/Human/ffirstnames.txt b/Barotrauma/Content/Characters/Human/ffirstnames.txt similarity index 100% rename from Subsurface/Content/Characters/Human/ffirstnames.txt rename to Barotrauma/Content/Characters/Human/ffirstnames.txt diff --git a/Subsurface/Content/Characters/Human/fhead1.png b/Barotrauma/Content/Characters/Human/fhead1.png similarity index 100% rename from Subsurface/Content/Characters/Human/fhead1.png rename to Barotrauma/Content/Characters/Human/fhead1.png diff --git a/Subsurface/Content/Characters/Human/fhead2.png b/Barotrauma/Content/Characters/Human/fhead2.png similarity index 100% rename from Subsurface/Content/Characters/Human/fhead2.png rename to Barotrauma/Content/Characters/Human/fhead2.png diff --git a/Subsurface/Content/Characters/Human/fhead3.png b/Barotrauma/Content/Characters/Human/fhead3.png similarity index 100% rename from Subsurface/Content/Characters/Human/fhead3.png rename to Barotrauma/Content/Characters/Human/fhead3.png diff --git a/Subsurface/Content/Characters/Human/fhead4.png b/Barotrauma/Content/Characters/Human/fhead4.png similarity index 100% rename from Subsurface/Content/Characters/Human/fhead4.png rename to Barotrauma/Content/Characters/Human/fhead4.png diff --git a/Subsurface/Content/Characters/Human/fhead5.png b/Barotrauma/Content/Characters/Human/fhead5.png similarity index 100% rename from Subsurface/Content/Characters/Human/fhead5.png rename to Barotrauma/Content/Characters/Human/fhead5.png diff --git a/Subsurface/Content/Characters/Human/fhead6.png b/Barotrauma/Content/Characters/Human/fhead6.png similarity index 100% rename from Subsurface/Content/Characters/Human/fhead6.png rename to Barotrauma/Content/Characters/Human/fhead6.png diff --git a/Subsurface/Content/Characters/Human/fhead7[black].png b/Barotrauma/Content/Characters/Human/fhead7[black].png similarity index 100% rename from Subsurface/Content/Characters/Human/fhead7[black].png rename to Barotrauma/Content/Characters/Human/fhead7[black].png diff --git a/Subsurface/Content/Characters/Human/fhead8.png b/Barotrauma/Content/Characters/Human/fhead8.png similarity index 100% rename from Subsurface/Content/Characters/Human/fhead8.png rename to Barotrauma/Content/Characters/Human/fhead8.png diff --git a/Subsurface/Content/Characters/Human/firstnames.txt b/Barotrauma/Content/Characters/Human/firstnames.txt similarity index 100% rename from Subsurface/Content/Characters/Human/firstnames.txt rename to Barotrauma/Content/Characters/Human/firstnames.txt diff --git a/Subsurface/Content/Characters/Human/flegs.png b/Barotrauma/Content/Characters/Human/flegs.png similarity index 100% rename from Subsurface/Content/Characters/Human/flegs.png rename to Barotrauma/Content/Characters/Human/flegs.png diff --git a/Subsurface/Content/Characters/Human/ftorso.png b/Barotrauma/Content/Characters/Human/ftorso.png similarity index 100% rename from Subsurface/Content/Characters/Human/ftorso.png rename to Barotrauma/Content/Characters/Human/ftorso.png diff --git a/Subsurface/Content/Characters/Human/ftorso[black].png b/Barotrauma/Content/Characters/Human/ftorso[black].png similarity index 100% rename from Subsurface/Content/Characters/Human/ftorso[black].png rename to Barotrauma/Content/Characters/Human/ftorso[black].png diff --git a/Subsurface/Content/Characters/Human/head1.png b/Barotrauma/Content/Characters/Human/head1.png similarity index 100% rename from Subsurface/Content/Characters/Human/head1.png rename to Barotrauma/Content/Characters/Human/head1.png diff --git a/Subsurface/Content/Characters/Human/head2.png b/Barotrauma/Content/Characters/Human/head2.png similarity index 100% rename from Subsurface/Content/Characters/Human/head2.png rename to Barotrauma/Content/Characters/Human/head2.png diff --git a/Subsurface/Content/Characters/Human/head3.png b/Barotrauma/Content/Characters/Human/head3.png similarity index 100% rename from Subsurface/Content/Characters/Human/head3.png rename to Barotrauma/Content/Characters/Human/head3.png diff --git a/Subsurface/Content/Characters/Human/head4.png b/Barotrauma/Content/Characters/Human/head4.png similarity index 100% rename from Subsurface/Content/Characters/Human/head4.png rename to Barotrauma/Content/Characters/Human/head4.png diff --git a/Subsurface/Content/Characters/Human/head5.png b/Barotrauma/Content/Characters/Human/head5.png similarity index 100% rename from Subsurface/Content/Characters/Human/head5.png rename to Barotrauma/Content/Characters/Human/head5.png diff --git a/Subsurface/Content/Characters/Human/head6.png b/Barotrauma/Content/Characters/Human/head6.png similarity index 100% rename from Subsurface/Content/Characters/Human/head6.png rename to Barotrauma/Content/Characters/Human/head6.png diff --git a/Subsurface/Content/Characters/Human/head7[black].png b/Barotrauma/Content/Characters/Human/head7[black].png similarity index 100% rename from Subsurface/Content/Characters/Human/head7[black].png rename to Barotrauma/Content/Characters/Human/head7[black].png diff --git a/Subsurface/Content/Characters/Human/head8[black].png b/Barotrauma/Content/Characters/Human/head8[black].png similarity index 100% rename from Subsurface/Content/Characters/Human/head8[black].png rename to Barotrauma/Content/Characters/Human/head8[black].png diff --git a/Subsurface/Content/Characters/Human/human.xml b/Barotrauma/Content/Characters/Human/human.xml similarity index 100% rename from Subsurface/Content/Characters/Human/human.xml rename to Barotrauma/Content/Characters/Human/human.xml diff --git a/Subsurface/Content/Characters/Human/humanhusk.xml b/Barotrauma/Content/Characters/Human/humanhusk.xml similarity index 100% rename from Subsurface/Content/Characters/Human/humanhusk.xml rename to Barotrauma/Content/Characters/Human/humanhusk.xml diff --git a/Subsurface/Content/Characters/Human/huskappendage.xml b/Barotrauma/Content/Characters/Human/huskappendage.xml similarity index 100% rename from Subsurface/Content/Characters/Human/huskappendage.xml rename to Barotrauma/Content/Characters/Human/huskappendage.xml diff --git a/Subsurface/Content/Characters/Human/lastnames.txt b/Barotrauma/Content/Characters/Human/lastnames.txt similarity index 100% rename from Subsurface/Content/Characters/Human/lastnames.txt rename to Barotrauma/Content/Characters/Human/lastnames.txt diff --git a/Subsurface/Content/Characters/Human/legs.png b/Barotrauma/Content/Characters/Human/legs.png similarity index 100% rename from Subsurface/Content/Characters/Human/legs.png rename to Barotrauma/Content/Characters/Human/legs.png diff --git a/Subsurface/Content/Characters/Human/torso.png b/Barotrauma/Content/Characters/Human/torso.png similarity index 100% rename from Subsurface/Content/Characters/Human/torso.png rename to Barotrauma/Content/Characters/Human/torso.png diff --git a/Subsurface/Content/Characters/Human/torso[black].png b/Barotrauma/Content/Characters/Human/torso[black].png similarity index 100% rename from Subsurface/Content/Characters/Human/torso[black].png rename to Barotrauma/Content/Characters/Human/torso[black].png diff --git a/Subsurface/Content/Characters/Husk/DivingSuit.png b/Barotrauma/Content/Characters/Husk/DivingSuit.png similarity index 100% rename from Subsurface/Content/Characters/Husk/DivingSuit.png rename to Barotrauma/Content/Characters/Husk/DivingSuit.png diff --git a/Subsurface/Content/Characters/Husk/Husk1.ogg b/Barotrauma/Content/Characters/Husk/Husk1.ogg similarity index 100% rename from Subsurface/Content/Characters/Husk/Husk1.ogg rename to Barotrauma/Content/Characters/Husk/Husk1.ogg diff --git a/Subsurface/Content/Characters/Husk/Husk2.ogg b/Barotrauma/Content/Characters/Husk/Husk2.ogg similarity index 100% rename from Subsurface/Content/Characters/Husk/Husk2.ogg rename to Barotrauma/Content/Characters/Husk/Husk2.ogg diff --git a/Subsurface/Content/Characters/Husk/Husk3.ogg b/Barotrauma/Content/Characters/Husk/Husk3.ogg similarity index 100% rename from Subsurface/Content/Characters/Husk/Husk3.ogg rename to Barotrauma/Content/Characters/Husk/Husk3.ogg diff --git a/Subsurface/Content/Characters/Husk/husk.xml b/Barotrauma/Content/Characters/Husk/husk.xml similarity index 100% rename from Subsurface/Content/Characters/Husk/husk.xml rename to Barotrauma/Content/Characters/Husk/husk.xml diff --git a/Subsurface/Content/Characters/Husk/legs.png b/Barotrauma/Content/Characters/Husk/legs.png similarity index 100% rename from Subsurface/Content/Characters/Husk/legs.png rename to Barotrauma/Content/Characters/Husk/legs.png diff --git a/Subsurface/Content/Characters/Mantis/attack1.ogg b/Barotrauma/Content/Characters/Mantis/attack1.ogg similarity index 100% rename from Subsurface/Content/Characters/Mantis/attack1.ogg rename to Barotrauma/Content/Characters/Mantis/attack1.ogg diff --git a/Subsurface/Content/Characters/Mantis/attack2.ogg b/Barotrauma/Content/Characters/Mantis/attack2.ogg similarity index 100% rename from Subsurface/Content/Characters/Mantis/attack2.ogg rename to Barotrauma/Content/Characters/Mantis/attack2.ogg diff --git a/Subsurface/Content/Characters/Mantis/idle1.ogg b/Barotrauma/Content/Characters/Mantis/idle1.ogg similarity index 100% rename from Subsurface/Content/Characters/Mantis/idle1.ogg rename to Barotrauma/Content/Characters/Mantis/idle1.ogg diff --git a/Subsurface/Content/Characters/Mantis/idle2.ogg b/Barotrauma/Content/Characters/Mantis/idle2.ogg similarity index 100% rename from Subsurface/Content/Characters/Mantis/idle2.ogg rename to Barotrauma/Content/Characters/Mantis/idle2.ogg diff --git a/Subsurface/Content/Characters/Mantis/idle3.ogg b/Barotrauma/Content/Characters/Mantis/idle3.ogg similarity index 100% rename from Subsurface/Content/Characters/Mantis/idle3.ogg rename to Barotrauma/Content/Characters/Mantis/idle3.ogg diff --git a/Subsurface/Content/Characters/Mantis/mantis.png b/Barotrauma/Content/Characters/Mantis/mantis.png similarity index 100% rename from Subsurface/Content/Characters/Mantis/mantis.png rename to Barotrauma/Content/Characters/Mantis/mantis.png diff --git a/Subsurface/Content/Characters/Mantis/mantis.xml b/Barotrauma/Content/Characters/Mantis/mantis.xml similarity index 100% rename from Subsurface/Content/Characters/Mantis/mantis.xml rename to Barotrauma/Content/Characters/Mantis/mantis.xml diff --git a/Subsurface/Content/Characters/Moloch/attack1.ogg b/Barotrauma/Content/Characters/Moloch/attack1.ogg similarity index 100% rename from Subsurface/Content/Characters/Moloch/attack1.ogg rename to Barotrauma/Content/Characters/Moloch/attack1.ogg diff --git a/Subsurface/Content/Characters/Moloch/attack2.ogg b/Barotrauma/Content/Characters/Moloch/attack2.ogg similarity index 100% rename from Subsurface/Content/Characters/Moloch/attack2.ogg rename to Barotrauma/Content/Characters/Moloch/attack2.ogg diff --git a/Subsurface/Content/Characters/Moloch/idle1.ogg b/Barotrauma/Content/Characters/Moloch/idle1.ogg similarity index 100% rename from Subsurface/Content/Characters/Moloch/idle1.ogg rename to Barotrauma/Content/Characters/Moloch/idle1.ogg diff --git a/Subsurface/Content/Characters/Moloch/idle2.ogg b/Barotrauma/Content/Characters/Moloch/idle2.ogg similarity index 100% rename from Subsurface/Content/Characters/Moloch/idle2.ogg rename to Barotrauma/Content/Characters/Moloch/idle2.ogg diff --git a/Subsurface/Content/Characters/Moloch/moloch.png b/Barotrauma/Content/Characters/Moloch/moloch.png similarity index 100% rename from Subsurface/Content/Characters/Moloch/moloch.png rename to Barotrauma/Content/Characters/Moloch/moloch.png diff --git a/Subsurface/Content/Characters/Moloch/moloch.xml b/Barotrauma/Content/Characters/Moloch/moloch.xml similarity index 100% rename from Subsurface/Content/Characters/Moloch/moloch.xml rename to Barotrauma/Content/Characters/Moloch/moloch.xml diff --git a/Subsurface/Content/Characters/Scorpion/scorpion.png b/Barotrauma/Content/Characters/Scorpion/scorpion.png similarity index 100% rename from Subsurface/Content/Characters/Scorpion/scorpion.png rename to Barotrauma/Content/Characters/Scorpion/scorpion.png diff --git a/Subsurface/Content/Characters/Scorpion/scorpion.xml b/Barotrauma/Content/Characters/Scorpion/scorpion.xml similarity index 100% rename from Subsurface/Content/Characters/Scorpion/scorpion.xml rename to Barotrauma/Content/Characters/Scorpion/scorpion.xml diff --git a/Subsurface/Content/Characters/Scorpion/scorpionattack1.ogg b/Barotrauma/Content/Characters/Scorpion/scorpionattack1.ogg similarity index 100% rename from Subsurface/Content/Characters/Scorpion/scorpionattack1.ogg rename to Barotrauma/Content/Characters/Scorpion/scorpionattack1.ogg diff --git a/Subsurface/Content/Characters/Scorpion/scorpionidle1.ogg b/Barotrauma/Content/Characters/Scorpion/scorpionidle1.ogg similarity index 100% rename from Subsurface/Content/Characters/Scorpion/scorpionidle1.ogg rename to Barotrauma/Content/Characters/Scorpion/scorpionidle1.ogg diff --git a/Subsurface/Content/Characters/Scorpion/scorpionidle2.ogg b/Barotrauma/Content/Characters/Scorpion/scorpionidle2.ogg similarity index 100% rename from Subsurface/Content/Characters/Scorpion/scorpionidle2.ogg rename to Barotrauma/Content/Characters/Scorpion/scorpionidle2.ogg diff --git a/Subsurface/Content/Characters/Tigerthresher/damagedtigerthresher.png b/Barotrauma/Content/Characters/Tigerthresher/damagedtigerthresher.png similarity index 100% rename from Subsurface/Content/Characters/Tigerthresher/damagedtigerthresher.png rename to Barotrauma/Content/Characters/Tigerthresher/damagedtigerthresher.png diff --git a/Subsurface/Content/Characters/Tigerthresher/tigerthresher.png b/Barotrauma/Content/Characters/Tigerthresher/tigerthresher.png similarity index 100% rename from Subsurface/Content/Characters/Tigerthresher/tigerthresher.png rename to Barotrauma/Content/Characters/Tigerthresher/tigerthresher.png diff --git a/Subsurface/Content/Characters/Tigerthresher/tigerthresher.xml b/Barotrauma/Content/Characters/Tigerthresher/tigerthresher.xml similarity index 100% rename from Subsurface/Content/Characters/Tigerthresher/tigerthresher.xml rename to Barotrauma/Content/Characters/Tigerthresher/tigerthresher.xml diff --git a/Subsurface/Content/Characters/Watcher/attack1.ogg b/Barotrauma/Content/Characters/Watcher/attack1.ogg similarity index 100% rename from Subsurface/Content/Characters/Watcher/attack1.ogg rename to Barotrauma/Content/Characters/Watcher/attack1.ogg diff --git a/Subsurface/Content/Characters/Watcher/attack2.ogg b/Barotrauma/Content/Characters/Watcher/attack2.ogg similarity index 100% rename from Subsurface/Content/Characters/Watcher/attack2.ogg rename to Barotrauma/Content/Characters/Watcher/attack2.ogg diff --git a/Subsurface/Content/Characters/Watcher/attack3.ogg b/Barotrauma/Content/Characters/Watcher/attack3.ogg similarity index 100% rename from Subsurface/Content/Characters/Watcher/attack3.ogg rename to Barotrauma/Content/Characters/Watcher/attack3.ogg diff --git a/Subsurface/Content/Characters/Watcher/watch1.ogg b/Barotrauma/Content/Characters/Watcher/watch1.ogg similarity index 100% rename from Subsurface/Content/Characters/Watcher/watch1.ogg rename to Barotrauma/Content/Characters/Watcher/watch1.ogg diff --git a/Subsurface/Content/Characters/Watcher/watch2.ogg b/Barotrauma/Content/Characters/Watcher/watch2.ogg similarity index 100% rename from Subsurface/Content/Characters/Watcher/watch2.ogg rename to Barotrauma/Content/Characters/Watcher/watch2.ogg diff --git a/Subsurface/Content/Characters/Watcher/watch3.ogg b/Barotrauma/Content/Characters/Watcher/watch3.ogg similarity index 100% rename from Subsurface/Content/Characters/Watcher/watch3.ogg rename to Barotrauma/Content/Characters/Watcher/watch3.ogg diff --git a/Subsurface/Content/Characters/Watcher/watch4.ogg b/Barotrauma/Content/Characters/Watcher/watch4.ogg similarity index 100% rename from Subsurface/Content/Characters/Watcher/watch4.ogg rename to Barotrauma/Content/Characters/Watcher/watch4.ogg diff --git a/Subsurface/Content/Characters/Watcher/watch5.ogg b/Barotrauma/Content/Characters/Watcher/watch5.ogg similarity index 100% rename from Subsurface/Content/Characters/Watcher/watch5.ogg rename to Barotrauma/Content/Characters/Watcher/watch5.ogg diff --git a/Subsurface/Content/Characters/Watcher/watch6.ogg b/Barotrauma/Content/Characters/Watcher/watch6.ogg similarity index 100% rename from Subsurface/Content/Characters/Watcher/watch6.ogg rename to Barotrauma/Content/Characters/Watcher/watch6.ogg diff --git a/Subsurface/Content/Characters/Watcher/watcher.png b/Barotrauma/Content/Characters/Watcher/watcher.png similarity index 100% rename from Subsurface/Content/Characters/Watcher/watcher.png rename to Barotrauma/Content/Characters/Watcher/watcher.png diff --git a/Subsurface/Content/Characters/Watcher/watcher.xml b/Barotrauma/Content/Characters/Watcher/watcher.xml similarity index 100% rename from Subsurface/Content/Characters/Watcher/watcher.xml rename to Barotrauma/Content/Characters/Watcher/watcher.xml diff --git a/Subsurface/Content/Code Pro Bold.otf b/Barotrauma/Content/Code Pro Bold.otf similarity index 100% rename from Subsurface/Content/Code Pro Bold.otf rename to Barotrauma/Content/Code Pro Bold.otf diff --git a/Subsurface/Content/Content.mgcb b/Barotrauma/Content/Content.mgcb similarity index 100% rename from Subsurface/Content/Content.mgcb rename to Barotrauma/Content/Content.mgcb diff --git a/Subsurface/Content/Exo2-Light.otf b/Barotrauma/Content/Exo2-Light.otf similarity index 100% rename from Subsurface/Content/Exo2-Light.otf rename to Barotrauma/Content/Exo2-Light.otf diff --git a/Subsurface/Content/Exo2-Medium.otf b/Barotrauma/Content/Exo2-Medium.otf similarity index 100% rename from Subsurface/Content/Exo2-Medium.otf rename to Barotrauma/Content/Exo2-Medium.otf diff --git a/Subsurface/Content/InfoTexts.xml b/Barotrauma/Content/InfoTexts.xml similarity index 100% rename from Subsurface/Content/InfoTexts.xml rename to Barotrauma/Content/InfoTexts.xml diff --git a/Subsurface/Content/Items/Artifacts/aliendoor.ogg b/Barotrauma/Content/Items/Artifacts/aliendoor.ogg similarity index 100% rename from Subsurface/Content/Items/Artifacts/aliendoor.ogg rename to Barotrauma/Content/Items/Artifacts/aliendoor.ogg diff --git a/Subsurface/Content/Items/Artifacts/alientools.png b/Barotrauma/Content/Items/Artifacts/alientools.png similarity index 100% rename from Subsurface/Content/Items/Artifacts/alientools.png rename to Barotrauma/Content/Items/Artifacts/alientools.png diff --git a/Subsurface/Content/Items/Artifacts/alienweapon.ogg b/Barotrauma/Content/Items/Artifacts/alienweapon.ogg similarity index 100% rename from Subsurface/Content/Items/Artifacts/alienweapon.ogg rename to Barotrauma/Content/Items/Artifacts/alienweapon.ogg diff --git a/Subsurface/Content/Items/Artifacts/artifact.png b/Barotrauma/Content/Items/Artifacts/artifact.png similarity index 100% rename from Subsurface/Content/Items/Artifacts/artifact.png rename to Barotrauma/Content/Items/Artifacts/artifact.png diff --git a/Subsurface/Content/Items/Artifacts/artifactholder.png b/Barotrauma/Content/Items/Artifacts/artifactholder.png similarity index 100% rename from Subsurface/Content/Items/Artifacts/artifactholder.png rename to Barotrauma/Content/Items/Artifacts/artifactholder.png diff --git a/Subsurface/Content/Items/Artifacts/artifacts.xml b/Barotrauma/Content/Items/Artifacts/artifacts.xml similarity index 100% rename from Subsurface/Content/Items/Artifacts/artifacts.xml rename to Barotrauma/Content/Items/Artifacts/artifacts.xml diff --git a/Subsurface/Content/Items/Button/beep.ogg b/Barotrauma/Content/Items/Button/beep.ogg similarity index 100% rename from Subsurface/Content/Items/Button/beep.ogg rename to Barotrauma/Content/Items/Button/beep.ogg diff --git a/Subsurface/Content/Items/Button/button.png b/Barotrauma/Content/Items/Button/button.png similarity index 100% rename from Subsurface/Content/Items/Button/button.png rename to Barotrauma/Content/Items/Button/button.png diff --git a/Subsurface/Content/Items/Button/button.xml b/Barotrauma/Content/Items/Button/button.xml similarity index 100% rename from Subsurface/Content/Items/Button/button.xml rename to Barotrauma/Content/Items/Button/button.xml diff --git a/Subsurface/Content/Items/Containers/cabinets.png b/Barotrauma/Content/Items/Containers/cabinets.png similarity index 100% rename from Subsurface/Content/Items/Containers/cabinets.png rename to Barotrauma/Content/Items/Containers/cabinets.png diff --git a/Subsurface/Content/Items/Containers/containers.xml b/Barotrauma/Content/Items/Containers/containers.xml similarity index 100% rename from Subsurface/Content/Items/Containers/containers.xml rename to Barotrauma/Content/Items/Containers/containers.xml diff --git a/Subsurface/Content/Items/Containers/crates.png b/Barotrauma/Content/Items/Containers/crates.png similarity index 100% rename from Subsurface/Content/Items/Containers/crates.png rename to Barotrauma/Content/Items/Containers/crates.png diff --git a/Subsurface/Content/Items/Containers/locker.png b/Barotrauma/Content/Items/Containers/locker.png similarity index 100% rename from Subsurface/Content/Items/Containers/locker.png rename to Barotrauma/Content/Items/Containers/locker.png diff --git a/Subsurface/Content/Items/Diving/DivingMask.png b/Barotrauma/Content/Items/Diving/DivingMask.png similarity index 100% rename from Subsurface/Content/Items/Diving/DivingMask.png rename to Barotrauma/Content/Items/Diving/DivingMask.png diff --git a/Subsurface/Content/Items/Diving/DivingSuit.png b/Barotrauma/Content/Items/Diving/DivingSuit.png similarity index 100% rename from Subsurface/Content/Items/Diving/DivingSuit.png rename to Barotrauma/Content/Items/Diving/DivingSuit.png diff --git a/Subsurface/Content/Items/Diving/divingSuit.ogg b/Barotrauma/Content/Items/Diving/divingSuit.ogg similarity index 100% rename from Subsurface/Content/Items/Diving/divingSuit.ogg rename to Barotrauma/Content/Items/Diving/divingSuit.ogg diff --git a/Subsurface/Content/Items/Diving/divinggear.xml b/Barotrauma/Content/Items/Diving/divinggear.xml similarity index 100% rename from Subsurface/Content/Items/Diving/divinggear.xml rename to Barotrauma/Content/Items/Diving/divinggear.xml diff --git a/Subsurface/Content/Items/Diving/scooter.ogg b/Barotrauma/Content/Items/Diving/scooter.ogg similarity index 100% rename from Subsurface/Content/Items/Diving/scooter.ogg rename to Barotrauma/Content/Items/Diving/scooter.ogg diff --git a/Subsurface/Content/Items/Door/dockingport.png b/Barotrauma/Content/Items/Door/dockingport.png similarity index 100% rename from Subsurface/Content/Items/Door/dockingport.png rename to Barotrauma/Content/Items/Door/dockingport.png diff --git a/Subsurface/Content/Items/Door/dockingport1.ogg b/Barotrauma/Content/Items/Door/dockingport1.ogg similarity index 100% rename from Subsurface/Content/Items/Door/dockingport1.ogg rename to Barotrauma/Content/Items/Door/dockingport1.ogg diff --git a/Subsurface/Content/Items/Door/dockingport2.ogg b/Barotrauma/Content/Items/Door/dockingport2.ogg similarity index 100% rename from Subsurface/Content/Items/Door/dockingport2.ogg rename to Barotrauma/Content/Items/Door/dockingport2.ogg diff --git a/Subsurface/Content/Items/Door/dockingport2.png b/Barotrauma/Content/Items/Door/dockingport2.png similarity index 100% rename from Subsurface/Content/Items/Door/dockingport2.png rename to Barotrauma/Content/Items/Door/dockingport2.png diff --git a/Subsurface/Content/Items/Door/door.ogg b/Barotrauma/Content/Items/Door/door.ogg similarity index 100% rename from Subsurface/Content/Items/Door/door.ogg rename to Barotrauma/Content/Items/Door/door.ogg diff --git a/Subsurface/Content/Items/Door/door.png b/Barotrauma/Content/Items/Door/door.png similarity index 100% rename from Subsurface/Content/Items/Door/door.png rename to Barotrauma/Content/Items/Door/door.png diff --git a/Subsurface/Content/Items/Door/doors.xml b/Barotrauma/Content/Items/Door/doors.xml similarity index 97% rename from Subsurface/Content/Items/Door/doors.xml rename to Barotrauma/Content/Items/Door/doors.xml index f6c6f3c78..9587ecf87 100644 --- a/Subsurface/Content/Items/Door/doors.xml +++ b/Barotrauma/Content/Items/Door/doors.xml @@ -1,153 +1,153 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Subsurface/Content/Items/Electricity/battery.png b/Barotrauma/Content/Items/Electricity/battery.png similarity index 100% rename from Subsurface/Content/Items/Electricity/battery.png rename to Barotrauma/Content/Items/Electricity/battery.png diff --git a/Subsurface/Content/Items/Electricity/junctionbox.png b/Barotrauma/Content/Items/Electricity/junctionbox.png similarity index 100% rename from Subsurface/Content/Items/Electricity/junctionbox.png rename to Barotrauma/Content/Items/Electricity/junctionbox.png diff --git a/Subsurface/Content/Items/Electricity/lamp.png b/Barotrauma/Content/Items/Electricity/lamp.png similarity index 100% rename from Subsurface/Content/Items/Electricity/lamp.png rename to Barotrauma/Content/Items/Electricity/lamp.png diff --git a/Subsurface/Content/Items/Electricity/lights.xml b/Barotrauma/Content/Items/Electricity/lights.xml similarity index 100% rename from Subsurface/Content/Items/Electricity/lights.xml rename to Barotrauma/Content/Items/Electricity/lights.xml diff --git a/Subsurface/Content/Items/Electricity/lightsprite.png b/Barotrauma/Content/Items/Electricity/lightsprite.png similarity index 100% rename from Subsurface/Content/Items/Electricity/lightsprite.png rename to Barotrauma/Content/Items/Electricity/lightsprite.png diff --git a/Subsurface/Content/Items/Electricity/monitor.png b/Barotrauma/Content/Items/Electricity/monitor.png similarity index 100% rename from Subsurface/Content/Items/Electricity/monitor.png rename to Barotrauma/Content/Items/Electricity/monitor.png diff --git a/Subsurface/Content/Items/Electricity/monitors.xml b/Barotrauma/Content/Items/Electricity/monitors.xml similarity index 100% rename from Subsurface/Content/Items/Electricity/monitors.xml rename to Barotrauma/Content/Items/Electricity/monitors.xml diff --git a/Subsurface/Content/Items/Electricity/powerOn.ogg b/Barotrauma/Content/Items/Electricity/powerOn.ogg similarity index 100% rename from Subsurface/Content/Items/Electricity/powerOn.ogg rename to Barotrauma/Content/Items/Electricity/powerOn.ogg diff --git a/Subsurface/Content/Items/Electricity/poweritems.xml b/Barotrauma/Content/Items/Electricity/poweritems.xml similarity index 100% rename from Subsurface/Content/Items/Electricity/poweritems.xml rename to Barotrauma/Content/Items/Electricity/poweritems.xml diff --git a/Subsurface/Content/Items/Electricity/signalcomp.png b/Barotrauma/Content/Items/Electricity/signalcomp.png similarity index 100% rename from Subsurface/Content/Items/Electricity/signalcomp.png rename to Barotrauma/Content/Items/Electricity/signalcomp.png diff --git a/Subsurface/Content/Items/Electricity/signalitems.xml b/Barotrauma/Content/Items/Electricity/signalitems.xml similarity index 100% rename from Subsurface/Content/Items/Electricity/signalitems.xml rename to Barotrauma/Content/Items/Electricity/signalitems.xml diff --git a/Subsurface/Content/Items/Electricity/supercapacitor.png b/Barotrauma/Content/Items/Electricity/supercapacitor.png similarity index 100% rename from Subsurface/Content/Items/Electricity/supercapacitor.png rename to Barotrauma/Content/Items/Electricity/supercapacitor.png diff --git a/Subsurface/Content/Items/Electricity/zap1.ogg b/Barotrauma/Content/Items/Electricity/zap1.ogg similarity index 100% rename from Subsurface/Content/Items/Electricity/zap1.ogg rename to Barotrauma/Content/Items/Electricity/zap1.ogg diff --git a/Subsurface/Content/Items/Electricity/zap2.ogg b/Barotrauma/Content/Items/Electricity/zap2.ogg similarity index 100% rename from Subsurface/Content/Items/Electricity/zap2.ogg rename to Barotrauma/Content/Items/Electricity/zap2.ogg diff --git a/Subsurface/Content/Items/Electricity/zap3.ogg b/Barotrauma/Content/Items/Electricity/zap3.ogg similarity index 100% rename from Subsurface/Content/Items/Electricity/zap3.ogg rename to Barotrauma/Content/Items/Electricity/zap3.ogg diff --git a/Subsurface/Content/Items/Electricity/zap4.ogg b/Barotrauma/Content/Items/Electricity/zap4.ogg similarity index 100% rename from Subsurface/Content/Items/Electricity/zap4.ogg rename to Barotrauma/Content/Items/Electricity/zap4.ogg diff --git a/Subsurface/Content/Items/Engine/engine.ogg b/Barotrauma/Content/Items/Engine/engine.ogg similarity index 100% rename from Subsurface/Content/Items/Engine/engine.ogg rename to Barotrauma/Content/Items/Engine/engine.ogg diff --git a/Subsurface/Content/Items/Engine/engine.png b/Barotrauma/Content/Items/Engine/engine.png similarity index 100% rename from Subsurface/Content/Items/Engine/engine.png rename to Barotrauma/Content/Items/Engine/engine.png diff --git a/Subsurface/Content/Items/Engine/engine.xml b/Barotrauma/Content/Items/Engine/engine.xml similarity index 100% rename from Subsurface/Content/Items/Engine/engine.xml rename to Barotrauma/Content/Items/Engine/engine.xml diff --git a/Subsurface/Content/Items/Engine/pingCircle.png b/Barotrauma/Content/Items/Engine/pingCircle.png similarity index 100% rename from Subsurface/Content/Items/Engine/pingCircle.png rename to Barotrauma/Content/Items/Engine/pingCircle.png diff --git a/Subsurface/Content/Items/Engine/radarBlip.png b/Barotrauma/Content/Items/Engine/radarBlip.png similarity index 100% rename from Subsurface/Content/Items/Engine/radarBlip.png rename to Barotrauma/Content/Items/Engine/radarBlip.png diff --git a/Subsurface/Content/Items/Engine/radarOverlay.png b/Barotrauma/Content/Items/Engine/radarOverlay.png similarity index 100% rename from Subsurface/Content/Items/Engine/radarOverlay.png rename to Barotrauma/Content/Items/Engine/radarOverlay.png diff --git a/Subsurface/Content/Items/Engine/radarPing.ogg b/Barotrauma/Content/Items/Engine/radarPing.ogg similarity index 100% rename from Subsurface/Content/Items/Engine/radarPing.ogg rename to Barotrauma/Content/Items/Engine/radarPing.ogg diff --git a/Subsurface/Content/Items/Fabricators/deconstructor.ogg b/Barotrauma/Content/Items/Fabricators/deconstructor.ogg similarity index 100% rename from Subsurface/Content/Items/Fabricators/deconstructor.ogg rename to Barotrauma/Content/Items/Fabricators/deconstructor.ogg diff --git a/Subsurface/Content/Items/Fabricators/fabricator.ogg b/Barotrauma/Content/Items/Fabricators/fabricator.ogg similarity index 100% rename from Subsurface/Content/Items/Fabricators/fabricator.ogg rename to Barotrauma/Content/Items/Fabricators/fabricator.ogg diff --git a/Subsurface/Content/Items/Fabricators/fabricators.xml b/Barotrauma/Content/Items/Fabricators/fabricators.xml similarity index 100% rename from Subsurface/Content/Items/Fabricators/fabricators.xml rename to Barotrauma/Content/Items/Fabricators/fabricators.xml diff --git a/Subsurface/Content/Items/Fabricators/materials.png b/Barotrauma/Content/Items/Fabricators/materials.png similarity index 100% rename from Subsurface/Content/Items/Fabricators/materials.png rename to Barotrauma/Content/Items/Fabricators/materials.png diff --git a/Subsurface/Content/Items/Fabricators/materials.xml b/Barotrauma/Content/Items/Fabricators/materials.xml similarity index 100% rename from Subsurface/Content/Items/Fabricators/materials.xml rename to Barotrauma/Content/Items/Fabricators/materials.xml diff --git a/Subsurface/Content/Items/Jobgear/captainLegs.png b/Barotrauma/Content/Items/Jobgear/captainLegs.png similarity index 100% rename from Subsurface/Content/Items/Jobgear/captainLegs.png rename to Barotrauma/Content/Items/Jobgear/captainLegs.png diff --git a/Subsurface/Content/Items/Jobgear/captainTorso.png b/Barotrauma/Content/Items/Jobgear/captainTorso.png similarity index 100% rename from Subsurface/Content/Items/Jobgear/captainTorso.png rename to Barotrauma/Content/Items/Jobgear/captainTorso.png diff --git a/Subsurface/Content/Items/Jobgear/captaingear.xml b/Barotrauma/Content/Items/Jobgear/captaingear.xml similarity index 100% rename from Subsurface/Content/Items/Jobgear/captaingear.xml rename to Barotrauma/Content/Items/Jobgear/captaingear.xml diff --git a/Subsurface/Content/Items/Jobgear/captainhat.png b/Barotrauma/Content/Items/Jobgear/captainhat.png similarity index 100% rename from Subsurface/Content/Items/Jobgear/captainhat.png rename to Barotrauma/Content/Items/Jobgear/captainhat.png diff --git a/Subsurface/Content/Items/Jobgear/clownmask.png b/Barotrauma/Content/Items/Jobgear/clownmask.png similarity index 100% rename from Subsurface/Content/Items/Jobgear/clownmask.png rename to Barotrauma/Content/Items/Jobgear/clownmask.png diff --git a/Subsurface/Content/Items/Jobgear/clownpants.png b/Barotrauma/Content/Items/Jobgear/clownpants.png similarity index 100% rename from Subsurface/Content/Items/Jobgear/clownpants.png rename to Barotrauma/Content/Items/Jobgear/clownpants.png diff --git a/Subsurface/Content/Items/Jobgear/clownshirt.png b/Barotrauma/Content/Items/Jobgear/clownshirt.png similarity index 100% rename from Subsurface/Content/Items/Jobgear/clownshirt.png rename to Barotrauma/Content/Items/Jobgear/clownshirt.png diff --git a/Subsurface/Content/Items/Jobgear/doctorgear.png b/Barotrauma/Content/Items/Jobgear/doctorgear.png similarity index 100% rename from Subsurface/Content/Items/Jobgear/doctorgear.png rename to Barotrauma/Content/Items/Jobgear/doctorgear.png diff --git a/Subsurface/Content/Items/Jobgear/doctorgear.xml b/Barotrauma/Content/Items/Jobgear/doctorgear.xml similarity index 100% rename from Subsurface/Content/Items/Jobgear/doctorgear.xml rename to Barotrauma/Content/Items/Jobgear/doctorgear.xml diff --git a/Subsurface/Content/Items/Jobgear/engigear.png b/Barotrauma/Content/Items/Jobgear/engigear.png similarity index 100% rename from Subsurface/Content/Items/Jobgear/engigear.png rename to Barotrauma/Content/Items/Jobgear/engigear.png diff --git a/Subsurface/Content/Items/Jobgear/engigear.xml b/Barotrauma/Content/Items/Jobgear/engigear.xml similarity index 100% rename from Subsurface/Content/Items/Jobgear/engigear.xml rename to Barotrauma/Content/Items/Jobgear/engigear.xml diff --git a/Subsurface/Content/Items/Jobgear/headset.png b/Barotrauma/Content/Items/Jobgear/headset.png similarity index 100% rename from Subsurface/Content/Items/Jobgear/headset.png rename to Barotrauma/Content/Items/Jobgear/headset.png diff --git a/Subsurface/Content/Items/Jobgear/misc.xml b/Barotrauma/Content/Items/Jobgear/misc.xml similarity index 100% rename from Subsurface/Content/Items/Jobgear/misc.xml rename to Barotrauma/Content/Items/Jobgear/misc.xml diff --git a/Subsurface/Content/Items/Jobgear/securitygear.png b/Barotrauma/Content/Items/Jobgear/securitygear.png similarity index 100% rename from Subsurface/Content/Items/Jobgear/securitygear.png rename to Barotrauma/Content/Items/Jobgear/securitygear.png diff --git a/Subsurface/Content/Items/Jobgear/securitygear.xml b/Barotrauma/Content/Items/Jobgear/securitygear.xml similarity index 100% rename from Subsurface/Content/Items/Jobgear/securitygear.xml rename to Barotrauma/Content/Items/Jobgear/securitygear.xml diff --git a/Subsurface/Content/Items/Ladder/ladder.png b/Barotrauma/Content/Items/Ladder/ladder.png similarity index 100% rename from Subsurface/Content/Items/Ladder/ladder.png rename to Barotrauma/Content/Items/Ladder/ladder.png diff --git a/Subsurface/Content/Items/Ladder/ladder.xml b/Barotrauma/Content/Items/Ladder/ladder.xml similarity index 100% rename from Subsurface/Content/Items/Ladder/ladder.xml rename to Barotrauma/Content/Items/Ladder/ladder.xml diff --git a/Subsurface/Content/Items/Medical/bandage.ogg b/Barotrauma/Content/Items/Medical/bandage.ogg similarity index 100% rename from Subsurface/Content/Items/Medical/bandage.ogg rename to Barotrauma/Content/Items/Medical/bandage.ogg diff --git a/Subsurface/Content/Items/Medical/med.png b/Barotrauma/Content/Items/Medical/med.png similarity index 100% rename from Subsurface/Content/Items/Medical/med.png rename to Barotrauma/Content/Items/Medical/med.png diff --git a/Subsurface/Content/Items/Medical/medical.xml b/Barotrauma/Content/Items/Medical/medical.xml similarity index 100% rename from Subsurface/Content/Items/Medical/medical.xml rename to Barotrauma/Content/Items/Medical/medical.xml diff --git a/Subsurface/Content/Items/Medical/syringe.ogg b/Barotrauma/Content/Items/Medical/syringe.ogg similarity index 100% rename from Subsurface/Content/Items/Medical/syringe.ogg rename to Barotrauma/Content/Items/Medical/syringe.ogg diff --git a/Subsurface/Content/Items/MiniMap/item.xml b/Barotrauma/Content/Items/MiniMap/item.xml similarity index 100% rename from Subsurface/Content/Items/MiniMap/item.xml rename to Barotrauma/Content/Items/MiniMap/item.xml diff --git a/Subsurface/Content/Items/OxygenGenerator/oxygengenerator.ogg b/Barotrauma/Content/Items/OxygenGenerator/oxygengenerator.ogg similarity index 100% rename from Subsurface/Content/Items/OxygenGenerator/oxygengenerator.ogg rename to Barotrauma/Content/Items/OxygenGenerator/oxygengenerator.ogg diff --git a/Subsurface/Content/Items/OxygenGenerator/oxygengenerator.png b/Barotrauma/Content/Items/OxygenGenerator/oxygengenerator.png similarity index 100% rename from Subsurface/Content/Items/OxygenGenerator/oxygengenerator.png rename to Barotrauma/Content/Items/OxygenGenerator/oxygengenerator.png diff --git a/Subsurface/Content/Items/OxygenGenerator/oxygengenerator.xml b/Barotrauma/Content/Items/OxygenGenerator/oxygengenerator.xml similarity index 100% rename from Subsurface/Content/Items/OxygenGenerator/oxygengenerator.xml rename to Barotrauma/Content/Items/OxygenGenerator/oxygengenerator.xml diff --git a/Subsurface/Content/Items/OxygenGenerator/vent.png b/Barotrauma/Content/Items/OxygenGenerator/vent.png similarity index 100% rename from Subsurface/Content/Items/OxygenGenerator/vent.png rename to Barotrauma/Content/Items/OxygenGenerator/vent.png diff --git a/Subsurface/Content/Items/OxygenGenerator/ventilation.ogg b/Barotrauma/Content/Items/OxygenGenerator/ventilation.ogg similarity index 100% rename from Subsurface/Content/Items/OxygenGenerator/ventilation.ogg rename to Barotrauma/Content/Items/OxygenGenerator/ventilation.ogg diff --git a/Subsurface/Content/Items/Pump/pump.ogg b/Barotrauma/Content/Items/Pump/pump.ogg similarity index 100% rename from Subsurface/Content/Items/Pump/pump.ogg rename to Barotrauma/Content/Items/Pump/pump.ogg diff --git a/Subsurface/Content/Items/Pump/pump.png b/Barotrauma/Content/Items/Pump/pump.png similarity index 100% rename from Subsurface/Content/Items/Pump/pump.png rename to Barotrauma/Content/Items/Pump/pump.png diff --git a/Subsurface/Content/Items/Pump/pump.xml b/Barotrauma/Content/Items/Pump/pump.xml similarity index 100% rename from Subsurface/Content/Items/Pump/pump.xml rename to Barotrauma/Content/Items/Pump/pump.xml diff --git a/Subsurface/Content/Items/Pump/smallpump.png b/Barotrauma/Content/Items/Pump/smallpump.png similarity index 100% rename from Subsurface/Content/Items/Pump/smallpump.png rename to Barotrauma/Content/Items/Pump/smallpump.png diff --git a/Subsurface/Content/Items/Reactor/explosion.ogg b/Barotrauma/Content/Items/Reactor/explosion.ogg similarity index 100% rename from Subsurface/Content/Items/Reactor/explosion.ogg rename to Barotrauma/Content/Items/Reactor/explosion.ogg diff --git a/Subsurface/Content/Items/Reactor/fuelrod.png b/Barotrauma/Content/Items/Reactor/fuelrod.png similarity index 100% rename from Subsurface/Content/Items/Reactor/fuelrod.png rename to Barotrauma/Content/Items/Reactor/fuelrod.png diff --git a/Subsurface/Content/Items/Reactor/heatabsorber.png b/Barotrauma/Content/Items/Reactor/heatabsorber.png similarity index 100% rename from Subsurface/Content/Items/Reactor/heatabsorber.png rename to Barotrauma/Content/Items/Reactor/heatabsorber.png diff --git a/Subsurface/Content/Items/Reactor/reactor.ogg b/Barotrauma/Content/Items/Reactor/reactor.ogg similarity index 100% rename from Subsurface/Content/Items/Reactor/reactor.ogg rename to Barotrauma/Content/Items/Reactor/reactor.ogg diff --git a/Subsurface/Content/Items/Reactor/reactor.png b/Barotrauma/Content/Items/Reactor/reactor.png similarity index 100% rename from Subsurface/Content/Items/Reactor/reactor.png rename to Barotrauma/Content/Items/Reactor/reactor.png diff --git a/Subsurface/Content/Items/Reactor/reactor.xml b/Barotrauma/Content/Items/Reactor/reactor.xml similarity index 100% rename from Subsurface/Content/Items/Reactor/reactor.xml rename to Barotrauma/Content/Items/Reactor/reactor.xml diff --git a/Subsurface/Content/Items/Tools/extinguisher.ogg b/Barotrauma/Content/Items/Tools/extinguisher.ogg similarity index 100% rename from Subsurface/Content/Items/Tools/extinguisher.ogg rename to Barotrauma/Content/Items/Tools/extinguisher.ogg diff --git a/Subsurface/Content/Items/Tools/extinguisher.png b/Barotrauma/Content/Items/Tools/extinguisher.png similarity index 100% rename from Subsurface/Content/Items/Tools/extinguisher.png rename to Barotrauma/Content/Items/Tools/extinguisher.png diff --git a/Subsurface/Content/Items/Tools/flare.ogg b/Barotrauma/Content/Items/Tools/flare.ogg similarity index 100% rename from Subsurface/Content/Items/Tools/flare.ogg rename to Barotrauma/Content/Items/Tools/flare.ogg diff --git a/Subsurface/Content/Items/Tools/plasmaCutter.ogg b/Barotrauma/Content/Items/Tools/plasmaCutter.ogg similarity index 100% rename from Subsurface/Content/Items/Tools/plasmaCutter.ogg rename to Barotrauma/Content/Items/Tools/plasmaCutter.ogg diff --git a/Subsurface/Content/Items/Tools/tools.png b/Barotrauma/Content/Items/Tools/tools.png similarity index 100% rename from Subsurface/Content/Items/Tools/tools.png rename to Barotrauma/Content/Items/Tools/tools.png diff --git a/Subsurface/Content/Items/Tools/tools.xml b/Barotrauma/Content/Items/Tools/tools.xml similarity index 100% rename from Subsurface/Content/Items/Tools/tools.xml rename to Barotrauma/Content/Items/Tools/tools.xml diff --git a/Subsurface/Content/Items/Tools/weldingTool.ogg b/Barotrauma/Content/Items/Tools/weldingTool.ogg similarity index 100% rename from Subsurface/Content/Items/Tools/weldingTool.ogg rename to Barotrauma/Content/Items/Tools/weldingTool.ogg diff --git a/Subsurface/Content/Items/Weapons/bigexplosion.ogg b/Barotrauma/Content/Items/Weapons/bigexplosion.ogg similarity index 100% rename from Subsurface/Content/Items/Weapons/bigexplosion.ogg rename to Barotrauma/Content/Items/Weapons/bigexplosion.ogg diff --git a/Subsurface/Content/Items/Weapons/depthcharge.xml b/Barotrauma/Content/Items/Weapons/depthcharge.xml similarity index 100% rename from Subsurface/Content/Items/Weapons/depthcharge.xml rename to Barotrauma/Content/Items/Weapons/depthcharge.xml diff --git a/Subsurface/Content/Items/Weapons/explosives.xml b/Barotrauma/Content/Items/Weapons/explosives.xml similarity index 100% rename from Subsurface/Content/Items/Weapons/explosives.xml rename to Barotrauma/Content/Items/Weapons/explosives.xml diff --git a/Subsurface/Content/Items/Weapons/harpoon1.ogg b/Barotrauma/Content/Items/Weapons/harpoon1.ogg similarity index 100% rename from Subsurface/Content/Items/Weapons/harpoon1.ogg rename to Barotrauma/Content/Items/Weapons/harpoon1.ogg diff --git a/Subsurface/Content/Items/Weapons/harpoon2.ogg b/Barotrauma/Content/Items/Weapons/harpoon2.ogg similarity index 100% rename from Subsurface/Content/Items/Weapons/harpoon2.ogg rename to Barotrauma/Content/Items/Weapons/harpoon2.ogg diff --git a/Subsurface/Content/Items/Weapons/honk.ogg b/Barotrauma/Content/Items/Weapons/honk.ogg similarity index 100% rename from Subsurface/Content/Items/Weapons/honk.ogg rename to Barotrauma/Content/Items/Weapons/honk.ogg diff --git a/Subsurface/Content/Items/Weapons/railgun.ogg b/Barotrauma/Content/Items/Weapons/railgun.ogg similarity index 100% rename from Subsurface/Content/Items/Weapons/railgun.ogg rename to Barotrauma/Content/Items/Weapons/railgun.ogg diff --git a/Subsurface/Content/Items/Weapons/railgun.xml b/Barotrauma/Content/Items/Weapons/railgun.xml similarity index 100% rename from Subsurface/Content/Items/Weapons/railgun.xml rename to Barotrauma/Content/Items/Weapons/railgun.xml diff --git a/Subsurface/Content/Items/Weapons/railgunbarrel.png b/Barotrauma/Content/Items/Weapons/railgunbarrel.png similarity index 100% rename from Subsurface/Content/Items/Weapons/railgunbarrel.png rename to Barotrauma/Content/Items/Weapons/railgunbarrel.png diff --git a/Subsurface/Content/Items/Weapons/railgunbase.png b/Barotrauma/Content/Items/Weapons/railgunbase.png similarity index 100% rename from Subsurface/Content/Items/Weapons/railgunbase.png rename to Barotrauma/Content/Items/Weapons/railgunbase.png diff --git a/Subsurface/Content/Items/Weapons/railgunetc.png b/Barotrauma/Content/Items/Weapons/railgunetc.png similarity index 100% rename from Subsurface/Content/Items/Weapons/railgunetc.png rename to Barotrauma/Content/Items/Weapons/railgunetc.png diff --git a/Subsurface/Content/Items/Weapons/rope.png b/Barotrauma/Content/Items/Weapons/rope.png similarity index 100% rename from Subsurface/Content/Items/Weapons/rope.png rename to Barotrauma/Content/Items/Weapons/rope.png diff --git a/Subsurface/Content/Items/Weapons/smack.ogg b/Barotrauma/Content/Items/Weapons/smack.ogg similarity index 100% rename from Subsurface/Content/Items/Weapons/smack.ogg rename to Barotrauma/Content/Items/Weapons/smack.ogg diff --git a/Subsurface/Content/Items/Weapons/stunbaton.ogg b/Barotrauma/Content/Items/Weapons/stunbaton.ogg similarity index 100% rename from Subsurface/Content/Items/Weapons/stunbaton.ogg rename to Barotrauma/Content/Items/Weapons/stunbaton.ogg diff --git a/Subsurface/Content/Items/Weapons/stunGrenade.ogg b/Barotrauma/Content/Items/Weapons/stungrenade.ogg similarity index 100% rename from Subsurface/Content/Items/Weapons/stunGrenade.ogg rename to Barotrauma/Content/Items/Weapons/stungrenade.ogg diff --git a/Subsurface/Content/Items/Weapons/stungrenade.png b/Barotrauma/Content/Items/Weapons/stungrenade.png similarity index 100% rename from Subsurface/Content/Items/Weapons/stungrenade.png rename to Barotrauma/Content/Items/Weapons/stungrenade.png diff --git a/Subsurface/Content/Items/Weapons/weapons.png b/Barotrauma/Content/Items/Weapons/weapons.png similarity index 100% rename from Subsurface/Content/Items/Weapons/weapons.png rename to Barotrauma/Content/Items/Weapons/weapons.png diff --git a/Subsurface/Content/Items/Weapons/weapons.xml b/Barotrauma/Content/Items/Weapons/weapons.xml similarity index 100% rename from Subsurface/Content/Items/Weapons/weapons.xml rename to Barotrauma/Content/Items/Weapons/weapons.xml diff --git a/Subsurface/Content/Items/blank.png b/Barotrauma/Content/Items/blank.png similarity index 100% rename from Subsurface/Content/Items/blank.png rename to Barotrauma/Content/Items/blank.png diff --git a/Subsurface/Content/Items/circuitboard.png b/Barotrauma/Content/Items/circuitboard.png similarity index 100% rename from Subsurface/Content/Items/circuitboard.png rename to Barotrauma/Content/Items/circuitboard.png diff --git a/Subsurface/Content/Items/connectionpanel.png b/Barotrauma/Content/Items/connectionpanel.png similarity index 100% rename from Subsurface/Content/Items/connectionpanel.png rename to Barotrauma/Content/Items/connectionpanel.png diff --git a/Subsurface/Content/Items/connector.png b/Barotrauma/Content/Items/connector.png similarity index 100% rename from Subsurface/Content/Items/connector.png rename to Barotrauma/Content/Items/connector.png diff --git a/Subsurface/Content/Items/idcard.png b/Barotrauma/Content/Items/idcard.png similarity index 100% rename from Subsurface/Content/Items/idcard.png rename to Barotrauma/Content/Items/idcard.png diff --git a/Subsurface/Content/Items/idcard.xml b/Barotrauma/Content/Items/idcard.xml similarity index 100% rename from Subsurface/Content/Items/idcard.xml rename to Barotrauma/Content/Items/idcard.xml diff --git a/Subsurface/Content/Items/itemlabel.xml b/Barotrauma/Content/Items/itemlabel.xml similarity index 100% rename from Subsurface/Content/Items/itemlabel.xml rename to Barotrauma/Content/Items/itemlabel.xml diff --git a/Subsurface/Content/Items/machines.png b/Barotrauma/Content/Items/machines.png similarity index 100% rename from Subsurface/Content/Items/machines.png rename to Barotrauma/Content/Items/machines.png diff --git a/Subsurface/Content/Items/warningBeep.ogg b/Barotrauma/Content/Items/warningBeep.ogg similarity index 100% rename from Subsurface/Content/Items/warningBeep.ogg rename to Barotrauma/Content/Items/warningBeep.ogg diff --git a/Subsurface/Content/Items/warningSiren.ogg b/Barotrauma/Content/Items/warningSiren.ogg similarity index 100% rename from Subsurface/Content/Items/warningSiren.ogg rename to Barotrauma/Content/Items/warningSiren.ogg diff --git a/Subsurface/Content/Items/wireCorner.png b/Barotrauma/Content/Items/wireCorner.png similarity index 100% rename from Subsurface/Content/Items/wireCorner.png rename to Barotrauma/Content/Items/wireCorner.png diff --git a/Subsurface/Content/Items/wireHorizontal.png b/Barotrauma/Content/Items/wireHorizontal.png similarity index 100% rename from Subsurface/Content/Items/wireHorizontal.png rename to Barotrauma/Content/Items/wireHorizontal.png diff --git a/Subsurface/Content/Items/wireVertical.png b/Barotrauma/Content/Items/wireVertical.png similarity index 100% rename from Subsurface/Content/Items/wireVertical.png rename to Barotrauma/Content/Items/wireVertical.png diff --git a/Subsurface/Content/Jobs.xml b/Barotrauma/Content/Jobs.xml similarity index 100% rename from Subsurface/Content/Jobs.xml rename to Barotrauma/Content/Jobs.xml diff --git a/Subsurface/Content/Lights/alphaOne.png b/Barotrauma/Content/Lights/alphaOne.png similarity index 100% rename from Subsurface/Content/Lights/alphaOne.png rename to Barotrauma/Content/Lights/alphaOne.png diff --git a/Subsurface/Content/Lights/light.png b/Barotrauma/Content/Lights/light.png similarity index 100% rename from Subsurface/Content/Lights/light.png rename to Barotrauma/Content/Lights/light.png diff --git a/Subsurface/Content/Lights/lightcone.png b/Barotrauma/Content/Lights/lightcone.png similarity index 100% rename from Subsurface/Content/Lights/lightcone.png rename to Barotrauma/Content/Lights/lightcone.png diff --git a/Subsurface/Content/Lights/penumbra.png b/Barotrauma/Content/Lights/penumbra.png similarity index 100% rename from Subsurface/Content/Lights/penumbra.png rename to Barotrauma/Content/Lights/penumbra.png diff --git a/Subsurface/Content/Lights/visioncircle.png b/Barotrauma/Content/Lights/visioncircle.png similarity index 100% rename from Subsurface/Content/Lights/visioncircle.png rename to Barotrauma/Content/Lights/visioncircle.png diff --git a/Subsurface/Content/Map/LevelGenerationParameters.xml b/Barotrauma/Content/Map/LevelGenerationParameters.xml similarity index 100% rename from Subsurface/Content/Map/LevelGenerationParameters.xml rename to Barotrauma/Content/Map/LevelGenerationParameters.xml diff --git a/Subsurface/Content/Map/RuinConfig.xml b/Barotrauma/Content/Map/RuinConfig.xml similarity index 100% rename from Subsurface/Content/Map/RuinConfig.xml rename to Barotrauma/Content/Map/RuinConfig.xml diff --git a/Subsurface/Content/Map/StructurePrefabs.xml b/Barotrauma/Content/Map/StructurePrefabs.xml similarity index 100% rename from Subsurface/Content/Map/StructurePrefabs.xml rename to Barotrauma/Content/Map/StructurePrefabs.xml diff --git a/Subsurface/Content/Map/TutorialSub.sub b/Barotrauma/Content/Map/TutorialSub.sub similarity index 100% rename from Subsurface/Content/Map/TutorialSub.sub rename to Barotrauma/Content/Map/TutorialSub.sub diff --git a/Subsurface/Content/Map/background.png b/Barotrauma/Content/Map/background.png similarity index 100% rename from Subsurface/Content/Map/background.png rename to Barotrauma/Content/Map/background.png diff --git a/Subsurface/Content/Map/background2.png b/Barotrauma/Content/Map/background2.png similarity index 100% rename from Subsurface/Content/Map/background2.png rename to Barotrauma/Content/Map/background2.png diff --git a/Subsurface/Content/Map/beaconSymbol.png b/Barotrauma/Content/Map/beaconSymbol.png similarity index 100% rename from Subsurface/Content/Map/beaconSymbol.png rename to Barotrauma/Content/Map/beaconSymbol.png diff --git a/Subsurface/Content/Map/beaconbackground.jpg b/Barotrauma/Content/Map/beaconbackground.jpg similarity index 100% rename from Subsurface/Content/Map/beaconbackground.jpg rename to Barotrauma/Content/Map/beaconbackground.jpg diff --git a/Subsurface/Content/Map/citySymbol.png b/Barotrauma/Content/Map/citySymbol.png similarity index 100% rename from Subsurface/Content/Map/citySymbol.png rename to Barotrauma/Content/Map/citySymbol.png diff --git a/Subsurface/Content/Map/citybackground.jpg b/Barotrauma/Content/Map/citybackground.jpg similarity index 100% rename from Subsurface/Content/Map/citybackground.jpg rename to Barotrauma/Content/Map/citybackground.jpg diff --git a/Subsurface/Content/Map/dustparticles.png b/Barotrauma/Content/Map/dustparticles.png similarity index 100% rename from Subsurface/Content/Map/dustparticles.png rename to Barotrauma/Content/Map/dustparticles.png diff --git a/Subsurface/Content/Map/iceCrack.png b/Barotrauma/Content/Map/iceCrack.png similarity index 100% rename from Subsurface/Content/Map/iceCrack.png rename to Barotrauma/Content/Map/iceCrack.png diff --git a/Subsurface/Content/Map/iceCraters.png b/Barotrauma/Content/Map/iceCraters.png similarity index 100% rename from Subsurface/Content/Map/iceCraters.png rename to Barotrauma/Content/Map/iceCraters.png diff --git a/Subsurface/Content/Map/iceSurface.png b/Barotrauma/Content/Map/iceSurface.png similarity index 100% rename from Subsurface/Content/Map/iceSurface.png rename to Barotrauma/Content/Map/iceSurface.png diff --git a/Subsurface/Content/Map/iceWall.png b/Barotrauma/Content/Map/iceWall.png similarity index 100% rename from Subsurface/Content/Map/iceWall.png rename to Barotrauma/Content/Map/iceWall.png diff --git a/Subsurface/Content/Map/locationNames.txt b/Barotrauma/Content/Map/locationNames.txt similarity index 100% rename from Subsurface/Content/Map/locationNames.txt rename to Barotrauma/Content/Map/locationNames.txt diff --git a/Subsurface/Content/Map/locationTypes.xml b/Barotrauma/Content/Map/locationTypes.xml similarity index 100% rename from Subsurface/Content/Map/locationTypes.xml rename to Barotrauma/Content/Map/locationTypes.xml diff --git a/Subsurface/Content/Map/militarySymbol.png b/Barotrauma/Content/Map/militarySymbol.png similarity index 100% rename from Subsurface/Content/Map/militarySymbol.png rename to Barotrauma/Content/Map/militarySymbol.png diff --git a/Subsurface/Content/Map/militarybackground.jpg b/Barotrauma/Content/Map/militarybackground.jpg similarity index 100% rename from Subsurface/Content/Map/militarybackground.jpg rename to Barotrauma/Content/Map/militarybackground.jpg diff --git a/Subsurface/Content/Map/researchSymbol.png b/Barotrauma/Content/Map/researchSymbol.png similarity index 100% rename from Subsurface/Content/Map/researchSymbol.png rename to Barotrauma/Content/Map/researchSymbol.png diff --git a/Subsurface/Content/Map/researchbackground.jpg b/Barotrauma/Content/Map/researchbackground.jpg similarity index 100% rename from Subsurface/Content/Map/researchbackground.jpg rename to Barotrauma/Content/Map/researchbackground.jpg diff --git a/Subsurface/Content/Map/ruins.png b/Barotrauma/Content/Map/ruins.png similarity index 100% rename from Subsurface/Content/Map/ruins.png rename to Barotrauma/Content/Map/ruins.png diff --git a/Subsurface/Content/Map/ruins2.png b/Barotrauma/Content/Map/ruins2.png similarity index 100% rename from Subsurface/Content/Map/ruins2.png rename to Barotrauma/Content/Map/ruins2.png diff --git a/Subsurface/Content/Map/ruins3.png b/Barotrauma/Content/Map/ruins3.png similarity index 100% rename from Subsurface/Content/Map/ruins3.png rename to Barotrauma/Content/Map/ruins3.png diff --git a/Subsurface/Content/Map/shaft.png b/Barotrauma/Content/Map/shaft.png similarity index 100% rename from Subsurface/Content/Map/shaft.png rename to Barotrauma/Content/Map/shaft.png diff --git a/Subsurface/Content/Map/structures2.png b/Barotrauma/Content/Map/structures2.png similarity index 100% rename from Subsurface/Content/Map/structures2.png rename to Barotrauma/Content/Map/structures2.png diff --git a/Subsurface/Content/Map/testroom.png b/Barotrauma/Content/Map/testroom.png similarity index 100% rename from Subsurface/Content/Map/testroom.png rename to Barotrauma/Content/Map/testroom.png diff --git a/Subsurface/Content/Map/walldamage.png b/Barotrauma/Content/Map/walldamage.png similarity index 100% rename from Subsurface/Content/Map/walldamage.png rename to Barotrauma/Content/Map/walldamage.png diff --git a/Subsurface/Content/Map/waypointIcons.png b/Barotrauma/Content/Map/waypointIcons.png similarity index 100% rename from Subsurface/Content/Map/waypointIcons.png rename to Barotrauma/Content/Map/waypointIcons.png diff --git a/Subsurface/Content/Missions.xml b/Barotrauma/Content/Missions.xml similarity index 100% rename from Subsurface/Content/Missions.xml rename to Barotrauma/Content/Missions.xml diff --git a/Subsurface/Content/Orders.xml b/Barotrauma/Content/Orders.xml similarity index 100% rename from Subsurface/Content/Orders.xml rename to Barotrauma/Content/Orders.xml diff --git a/Subsurface/Content/Particles/FlameRoundParticleSheet.png b/Barotrauma/Content/Particles/FlameRoundParticleSheet.png similarity index 100% rename from Subsurface/Content/Particles/FlameRoundParticleSheet.png rename to Barotrauma/Content/Particles/FlameRoundParticleSheet.png diff --git a/Subsurface/Content/Particles/ParticlePrefabs.xml b/Barotrauma/Content/Particles/ParticlePrefabs.xml similarity index 100% rename from Subsurface/Content/Particles/ParticlePrefabs.xml rename to Barotrauma/Content/Particles/ParticlePrefabs.xml diff --git a/Subsurface/Content/Particles/SmokeParticleSheet.png b/Barotrauma/Content/Particles/SmokeParticleSheet.png similarity index 100% rename from Subsurface/Content/Particles/SmokeParticleSheet.png rename to Barotrauma/Content/Particles/SmokeParticleSheet.png diff --git a/Subsurface/Content/Particles/bubbles.png b/Barotrauma/Content/Particles/bubbles.png similarity index 100% rename from Subsurface/Content/Particles/bubbles.png rename to Barotrauma/Content/Particles/bubbles.png diff --git a/Subsurface/Content/Particles/explosion.png b/Barotrauma/Content/Particles/explosion.png similarity index 100% rename from Subsurface/Content/Particles/explosion.png rename to Barotrauma/Content/Particles/explosion.png diff --git a/Subsurface/Content/Particles/fire.png b/Barotrauma/Content/Particles/fire.png similarity index 100% rename from Subsurface/Content/Particles/fire.png rename to Barotrauma/Content/Particles/fire.png diff --git a/Subsurface/Content/Particles/flames.png b/Barotrauma/Content/Particles/flames.png similarity index 100% rename from Subsurface/Content/Particles/flames.png rename to Barotrauma/Content/Particles/flames.png diff --git a/Subsurface/Content/Particles/shrapnel.png b/Barotrauma/Content/Particles/shrapnel.png similarity index 100% rename from Subsurface/Content/Particles/shrapnel.png rename to Barotrauma/Content/Particles/shrapnel.png diff --git a/Subsurface/Content/Particles/spatter.png b/Barotrauma/Content/Particles/spatter.png similarity index 100% rename from Subsurface/Content/Particles/spatter.png rename to Barotrauma/Content/Particles/spatter.png diff --git a/Subsurface/Content/Sounds/Ambient/Ambient1.ogg b/Barotrauma/Content/Sounds/Ambient/Ambient1.ogg similarity index 100% rename from Subsurface/Content/Sounds/Ambient/Ambient1.ogg rename to Barotrauma/Content/Sounds/Ambient/Ambient1.ogg diff --git a/Subsurface/Content/Sounds/Ambient/Ambient10.ogg b/Barotrauma/Content/Sounds/Ambient/Ambient10.ogg similarity index 100% rename from Subsurface/Content/Sounds/Ambient/Ambient10.ogg rename to Barotrauma/Content/Sounds/Ambient/Ambient10.ogg diff --git a/Subsurface/Content/Sounds/Ambient/Ambient11.ogg b/Barotrauma/Content/Sounds/Ambient/Ambient11.ogg similarity index 100% rename from Subsurface/Content/Sounds/Ambient/Ambient11.ogg rename to Barotrauma/Content/Sounds/Ambient/Ambient11.ogg diff --git a/Subsurface/Content/Sounds/Ambient/Ambient12.ogg b/Barotrauma/Content/Sounds/Ambient/Ambient12.ogg similarity index 100% rename from Subsurface/Content/Sounds/Ambient/Ambient12.ogg rename to Barotrauma/Content/Sounds/Ambient/Ambient12.ogg diff --git a/Subsurface/Content/Sounds/Ambient/Ambient13.ogg b/Barotrauma/Content/Sounds/Ambient/Ambient13.ogg similarity index 100% rename from Subsurface/Content/Sounds/Ambient/Ambient13.ogg rename to Barotrauma/Content/Sounds/Ambient/Ambient13.ogg diff --git a/Subsurface/Content/Sounds/Ambient/Ambient2.ogg b/Barotrauma/Content/Sounds/Ambient/Ambient2.ogg similarity index 100% rename from Subsurface/Content/Sounds/Ambient/Ambient2.ogg rename to Barotrauma/Content/Sounds/Ambient/Ambient2.ogg diff --git a/Subsurface/Content/Sounds/Ambient/Ambient3.ogg b/Barotrauma/Content/Sounds/Ambient/Ambient3.ogg similarity index 100% rename from Subsurface/Content/Sounds/Ambient/Ambient3.ogg rename to Barotrauma/Content/Sounds/Ambient/Ambient3.ogg diff --git a/Subsurface/Content/Sounds/Ambient/Ambient4.ogg b/Barotrauma/Content/Sounds/Ambient/Ambient4.ogg similarity index 100% rename from Subsurface/Content/Sounds/Ambient/Ambient4.ogg rename to Barotrauma/Content/Sounds/Ambient/Ambient4.ogg diff --git a/Subsurface/Content/Sounds/Ambient/Ambient5.ogg b/Barotrauma/Content/Sounds/Ambient/Ambient5.ogg similarity index 100% rename from Subsurface/Content/Sounds/Ambient/Ambient5.ogg rename to Barotrauma/Content/Sounds/Ambient/Ambient5.ogg diff --git a/Subsurface/Content/Sounds/Ambient/Ambient6.ogg b/Barotrauma/Content/Sounds/Ambient/Ambient6.ogg similarity index 100% rename from Subsurface/Content/Sounds/Ambient/Ambient6.ogg rename to Barotrauma/Content/Sounds/Ambient/Ambient6.ogg diff --git a/Subsurface/Content/Sounds/Ambient/Ambient7.ogg b/Barotrauma/Content/Sounds/Ambient/Ambient7.ogg similarity index 100% rename from Subsurface/Content/Sounds/Ambient/Ambient7.ogg rename to Barotrauma/Content/Sounds/Ambient/Ambient7.ogg diff --git a/Subsurface/Content/Sounds/Ambient/Ambient8.ogg b/Barotrauma/Content/Sounds/Ambient/Ambient8.ogg similarity index 100% rename from Subsurface/Content/Sounds/Ambient/Ambient8.ogg rename to Barotrauma/Content/Sounds/Ambient/Ambient8.ogg diff --git a/Subsurface/Content/Sounds/Ambient/Ambient9.ogg b/Barotrauma/Content/Sounds/Ambient/Ambient9.ogg similarity index 100% rename from Subsurface/Content/Sounds/Ambient/Ambient9.ogg rename to Barotrauma/Content/Sounds/Ambient/Ambient9.ogg diff --git a/Subsurface/Content/Sounds/Ambient/DistantPod1.ogg b/Barotrauma/Content/Sounds/Ambient/DistantPod1.ogg similarity index 100% rename from Subsurface/Content/Sounds/Ambient/DistantPod1.ogg rename to Barotrauma/Content/Sounds/Ambient/DistantPod1.ogg diff --git a/Subsurface/Content/Sounds/Ambient/DistantPod2.ogg b/Barotrauma/Content/Sounds/Ambient/DistantPod2.ogg similarity index 100% rename from Subsurface/Content/Sounds/Ambient/DistantPod2.ogg rename to Barotrauma/Content/Sounds/Ambient/DistantPod2.ogg diff --git a/Subsurface/Content/Sounds/Ambient/DistantPod3.ogg b/Barotrauma/Content/Sounds/Ambient/DistantPod3.ogg similarity index 100% rename from Subsurface/Content/Sounds/Ambient/DistantPod3.ogg rename to Barotrauma/Content/Sounds/Ambient/DistantPod3.ogg diff --git a/Subsurface/Content/Sounds/Ambient/GlacialMovement.ogg b/Barotrauma/Content/Sounds/Ambient/GlacialMovement.ogg similarity index 100% rename from Subsurface/Content/Sounds/Ambient/GlacialMovement.ogg rename to Barotrauma/Content/Sounds/Ambient/GlacialMovement.ogg diff --git a/Subsurface/Content/Sounds/Damage/GlassBreak1.ogg b/Barotrauma/Content/Sounds/Damage/GlassBreak1.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/GlassBreak1.ogg rename to Barotrauma/Content/Sounds/Damage/GlassBreak1.ogg diff --git a/Subsurface/Content/Sounds/Damage/GlassBreak2.ogg b/Barotrauma/Content/Sounds/Damage/GlassBreak2.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/GlassBreak2.ogg rename to Barotrauma/Content/Sounds/Damage/GlassBreak2.ogg diff --git a/Subsurface/Content/Sounds/Damage/GlassBreak3.ogg b/Barotrauma/Content/Sounds/Damage/GlassBreak3.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/GlassBreak3.ogg rename to Barotrauma/Content/Sounds/Damage/GlassBreak3.ogg diff --git a/Subsurface/Content/Sounds/Damage/GlassImpact1.ogg b/Barotrauma/Content/Sounds/Damage/GlassImpact1.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/GlassImpact1.ogg rename to Barotrauma/Content/Sounds/Damage/GlassImpact1.ogg diff --git a/Subsurface/Content/Sounds/Damage/GlassImpact2.ogg b/Barotrauma/Content/Sounds/Damage/GlassImpact2.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/GlassImpact2.ogg rename to Barotrauma/Content/Sounds/Damage/GlassImpact2.ogg diff --git a/Subsurface/Content/Sounds/Damage/GlassImpact3.ogg b/Barotrauma/Content/Sounds/Damage/GlassImpact3.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/GlassImpact3.ogg rename to Barotrauma/Content/Sounds/Damage/GlassImpact3.ogg diff --git a/Subsurface/Content/Sounds/Damage/HitArmor1.ogg b/Barotrauma/Content/Sounds/Damage/HitArmor1.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/HitArmor1.ogg rename to Barotrauma/Content/Sounds/Damage/HitArmor1.ogg diff --git a/Subsurface/Content/Sounds/Damage/HitArmor2.ogg b/Barotrauma/Content/Sounds/Damage/HitArmor2.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/HitArmor2.ogg rename to Barotrauma/Content/Sounds/Damage/HitArmor2.ogg diff --git a/Subsurface/Content/Sounds/Damage/HitArmor3.ogg b/Barotrauma/Content/Sounds/Damage/HitArmor3.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/HitArmor3.ogg rename to Barotrauma/Content/Sounds/Damage/HitArmor3.ogg diff --git a/Subsurface/Content/Sounds/Damage/LimbBlunt1.ogg b/Barotrauma/Content/Sounds/Damage/LimbBlunt1.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/LimbBlunt1.ogg rename to Barotrauma/Content/Sounds/Damage/LimbBlunt1.ogg diff --git a/Subsurface/Content/Sounds/Damage/LimbBlunt2.ogg b/Barotrauma/Content/Sounds/Damage/LimbBlunt2.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/LimbBlunt2.ogg rename to Barotrauma/Content/Sounds/Damage/LimbBlunt2.ogg diff --git a/Subsurface/Content/Sounds/Damage/LimbBlunt3.ogg b/Barotrauma/Content/Sounds/Damage/LimbBlunt3.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/LimbBlunt3.ogg rename to Barotrauma/Content/Sounds/Damage/LimbBlunt3.ogg diff --git a/Subsurface/Content/Sounds/Damage/LimbBlunt4.ogg b/Barotrauma/Content/Sounds/Damage/LimbBlunt4.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/LimbBlunt4.ogg rename to Barotrauma/Content/Sounds/Damage/LimbBlunt4.ogg diff --git a/Subsurface/Content/Sounds/Damage/LimbBlunt5.ogg b/Barotrauma/Content/Sounds/Damage/LimbBlunt5.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/LimbBlunt5.ogg rename to Barotrauma/Content/Sounds/Damage/LimbBlunt5.ogg diff --git a/Subsurface/Content/Sounds/Damage/LimbSlash1.ogg b/Barotrauma/Content/Sounds/Damage/LimbSlash1.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/LimbSlash1.ogg rename to Barotrauma/Content/Sounds/Damage/LimbSlash1.ogg diff --git a/Subsurface/Content/Sounds/Damage/LimbSlash2.ogg b/Barotrauma/Content/Sounds/Damage/LimbSlash2.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/LimbSlash2.ogg rename to Barotrauma/Content/Sounds/Damage/LimbSlash2.ogg diff --git a/Subsurface/Content/Sounds/Damage/LimbSlash3.ogg b/Barotrauma/Content/Sounds/Damage/LimbSlash3.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/LimbSlash3.ogg rename to Barotrauma/Content/Sounds/Damage/LimbSlash3.ogg diff --git a/Subsurface/Content/Sounds/Damage/StructureBlunt1.ogg b/Barotrauma/Content/Sounds/Damage/StructureBlunt1.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/StructureBlunt1.ogg rename to Barotrauma/Content/Sounds/Damage/StructureBlunt1.ogg diff --git a/Subsurface/Content/Sounds/Damage/StructureBlunt10.ogg b/Barotrauma/Content/Sounds/Damage/StructureBlunt10.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/StructureBlunt10.ogg rename to Barotrauma/Content/Sounds/Damage/StructureBlunt10.ogg diff --git a/Subsurface/Content/Sounds/Damage/StructureBlunt2.ogg b/Barotrauma/Content/Sounds/Damage/StructureBlunt2.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/StructureBlunt2.ogg rename to Barotrauma/Content/Sounds/Damage/StructureBlunt2.ogg diff --git a/Subsurface/Content/Sounds/Damage/StructureBlunt3.ogg b/Barotrauma/Content/Sounds/Damage/StructureBlunt3.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/StructureBlunt3.ogg rename to Barotrauma/Content/Sounds/Damage/StructureBlunt3.ogg diff --git a/Subsurface/Content/Sounds/Damage/StructureBlunt4.ogg b/Barotrauma/Content/Sounds/Damage/StructureBlunt4.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/StructureBlunt4.ogg rename to Barotrauma/Content/Sounds/Damage/StructureBlunt4.ogg diff --git a/Subsurface/Content/Sounds/Damage/StructureBlunt5.ogg b/Barotrauma/Content/Sounds/Damage/StructureBlunt5.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/StructureBlunt5.ogg rename to Barotrauma/Content/Sounds/Damage/StructureBlunt5.ogg diff --git a/Subsurface/Content/Sounds/Damage/StructureBlunt6.ogg b/Barotrauma/Content/Sounds/Damage/StructureBlunt6.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/StructureBlunt6.ogg rename to Barotrauma/Content/Sounds/Damage/StructureBlunt6.ogg diff --git a/Subsurface/Content/Sounds/Damage/StructureBlunt7.ogg b/Barotrauma/Content/Sounds/Damage/StructureBlunt7.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/StructureBlunt7.ogg rename to Barotrauma/Content/Sounds/Damage/StructureBlunt7.ogg diff --git a/Subsurface/Content/Sounds/Damage/StructureBlunt8.ogg b/Barotrauma/Content/Sounds/Damage/StructureBlunt8.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/StructureBlunt8.ogg rename to Barotrauma/Content/Sounds/Damage/StructureBlunt8.ogg diff --git a/Subsurface/Content/Sounds/Damage/StructureBlunt9.ogg b/Barotrauma/Content/Sounds/Damage/StructureBlunt9.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/StructureBlunt9.ogg rename to Barotrauma/Content/Sounds/Damage/StructureBlunt9.ogg diff --git a/Subsurface/Content/Sounds/Damage/StructureCrunch1.ogg b/Barotrauma/Content/Sounds/Damage/StructureCrunch1.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/StructureCrunch1.ogg rename to Barotrauma/Content/Sounds/Damage/StructureCrunch1.ogg diff --git a/Subsurface/Content/Sounds/Damage/StructureCrunch2.ogg b/Barotrauma/Content/Sounds/Damage/StructureCrunch2.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/StructureCrunch2.ogg rename to Barotrauma/Content/Sounds/Damage/StructureCrunch2.ogg diff --git a/Subsurface/Content/Sounds/Damage/StructureCrunch3.ogg b/Barotrauma/Content/Sounds/Damage/StructureCrunch3.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/StructureCrunch3.ogg rename to Barotrauma/Content/Sounds/Damage/StructureCrunch3.ogg diff --git a/Subsurface/Content/Sounds/Damage/StructureCrunch4.ogg b/Barotrauma/Content/Sounds/Damage/StructureCrunch4.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/StructureCrunch4.ogg rename to Barotrauma/Content/Sounds/Damage/StructureCrunch4.ogg diff --git a/Subsurface/Content/Sounds/Damage/StructureCrunch5.ogg b/Barotrauma/Content/Sounds/Damage/StructureCrunch5.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/StructureCrunch5.ogg rename to Barotrauma/Content/Sounds/Damage/StructureCrunch5.ogg diff --git a/Subsurface/Content/Sounds/Damage/creak1.ogg b/Barotrauma/Content/Sounds/Damage/creak1.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/creak1.ogg rename to Barotrauma/Content/Sounds/Damage/creak1.ogg diff --git a/Subsurface/Content/Sounds/Damage/creak2.ogg b/Barotrauma/Content/Sounds/Damage/creak2.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/creak2.ogg rename to Barotrauma/Content/Sounds/Damage/creak2.ogg diff --git a/Subsurface/Content/Sounds/Damage/creak3.ogg b/Barotrauma/Content/Sounds/Damage/creak3.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/creak3.ogg rename to Barotrauma/Content/Sounds/Damage/creak3.ogg diff --git a/Subsurface/Content/Sounds/Damage/creak4.ogg b/Barotrauma/Content/Sounds/Damage/creak4.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/creak4.ogg rename to Barotrauma/Content/Sounds/Damage/creak4.ogg diff --git a/Subsurface/Content/Sounds/Damage/creak5.ogg b/Barotrauma/Content/Sounds/Damage/creak5.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/creak5.ogg rename to Barotrauma/Content/Sounds/Damage/creak5.ogg diff --git a/Subsurface/Content/Sounds/Damage/implode.ogg b/Barotrauma/Content/Sounds/Damage/implode.ogg similarity index 100% rename from Subsurface/Content/Sounds/Damage/implode.ogg rename to Barotrauma/Content/Sounds/Damage/implode.ogg diff --git a/Subsurface/Content/Sounds/Music/Controlled Chaos 2.ogg b/Barotrauma/Content/Sounds/Music/Controlled Chaos 2.ogg similarity index 100% rename from Subsurface/Content/Sounds/Music/Controlled Chaos 2.ogg rename to Barotrauma/Content/Sounds/Music/Controlled Chaos 2.ogg diff --git a/Subsurface/Content/Sounds/Music/Controlled Chaos.ogg b/Barotrauma/Content/Sounds/Music/Controlled Chaos.ogg similarity index 100% rename from Subsurface/Content/Sounds/Music/Controlled Chaos.ogg rename to Barotrauma/Content/Sounds/Music/Controlled Chaos.ogg diff --git a/Subsurface/Content/Sounds/Music/Enter the Maze.ogg b/Barotrauma/Content/Sounds/Music/Enter the Maze.ogg similarity index 100% rename from Subsurface/Content/Sounds/Music/Enter the Maze.ogg rename to Barotrauma/Content/Sounds/Music/Enter the Maze.ogg diff --git a/Subsurface/Content/Sounds/Music/Phantom From Space.ogg b/Barotrauma/Content/Sounds/Music/Phantom From Space.ogg similarity index 100% rename from Subsurface/Content/Sounds/Music/Phantom From Space.ogg rename to Barotrauma/Content/Sounds/Music/Phantom From Space.ogg diff --git a/Subsurface/Content/Sounds/Music/Road to Hell.ogg b/Barotrauma/Content/Sounds/Music/Road to Hell.ogg similarity index 100% rename from Subsurface/Content/Sounds/Music/Road to Hell.ogg rename to Barotrauma/Content/Sounds/Music/Road to Hell.ogg diff --git a/Subsurface/Content/Sounds/Music/Simplex.ogg b/Barotrauma/Content/Sounds/Music/Simplex.ogg similarity index 100% rename from Subsurface/Content/Sounds/Music/Simplex.ogg rename to Barotrauma/Content/Sounds/Music/Simplex.ogg diff --git a/Subsurface/Content/Sounds/Music/Static Motion.ogg b/Barotrauma/Content/Sounds/Music/Static Motion.ogg similarity index 100% rename from Subsurface/Content/Sounds/Music/Static Motion.ogg rename to Barotrauma/Content/Sounds/Music/Static Motion.ogg diff --git a/Subsurface/Content/Sounds/Music/Tenebrous Brothers Carnival - Prelude.ogg b/Barotrauma/Content/Sounds/Music/Tenebrous Brothers Carnival - Prelude.ogg similarity index 100% rename from Subsurface/Content/Sounds/Music/Tenebrous Brothers Carnival - Prelude.ogg rename to Barotrauma/Content/Sounds/Music/Tenebrous Brothers Carnival - Prelude.ogg diff --git a/Subsurface/Content/Sounds/Music/The Descent.ogg b/Barotrauma/Content/Sounds/Music/The Descent.ogg similarity index 100% rename from Subsurface/Content/Sounds/Music/The Descent.ogg rename to Barotrauma/Content/Sounds/Music/The Descent.ogg diff --git a/Subsurface/Content/Sounds/Music/Unseen Horrors.ogg b/Barotrauma/Content/Sounds/Music/Unseen Horrors.ogg similarity index 100% rename from Subsurface/Content/Sounds/Music/Unseen Horrors.ogg rename to Barotrauma/Content/Sounds/Music/Unseen Horrors.ogg diff --git a/Subsurface/Content/Sounds/Music/amb_JD_drone_clattering_machine.ogg b/Barotrauma/Content/Sounds/Music/amb_JD_drone_clattering_machine.ogg similarity index 100% rename from Subsurface/Content/Sounds/Music/amb_JD_drone_clattering_machine.ogg rename to Barotrauma/Content/Sounds/Music/amb_JD_drone_clattering_machine.ogg diff --git a/Subsurface/Content/Sounds/UI/UImsg.ogg b/Barotrauma/Content/Sounds/UI/UImsg.ogg similarity index 100% rename from Subsurface/Content/Sounds/UI/UImsg.ogg rename to Barotrauma/Content/Sounds/UI/UImsg.ogg diff --git a/Subsurface/Content/Sounds/UI/beep-shinymetal.ogg b/Barotrauma/Content/Sounds/UI/beep-shinymetal.ogg similarity index 100% rename from Subsurface/Content/Sounds/UI/beep-shinymetal.ogg rename to Barotrauma/Content/Sounds/UI/beep-shinymetal.ogg diff --git a/Subsurface/Content/Sounds/UI/deadmsg.ogg b/Barotrauma/Content/Sounds/UI/deadmsg.ogg similarity index 100% rename from Subsurface/Content/Sounds/UI/deadmsg.ogg rename to Barotrauma/Content/Sounds/UI/deadmsg.ogg diff --git a/Subsurface/Content/Sounds/UI/radiomsg.ogg b/Barotrauma/Content/Sounds/UI/radiomsg.ogg similarity index 100% rename from Subsurface/Content/Sounds/UI/radiomsg.ogg rename to Barotrauma/Content/Sounds/UI/radiomsg.ogg diff --git a/Subsurface/Content/Sounds/UI/tap-zipper.ogg b/Barotrauma/Content/Sounds/UI/tap-zipper.ogg similarity index 100% rename from Subsurface/Content/Sounds/UI/tap-zipper.ogg rename to Barotrauma/Content/Sounds/UI/tap-zipper.ogg diff --git a/Subsurface/Content/Sounds/Water/Drown1.ogg b/Barotrauma/Content/Sounds/Water/Drown1.ogg similarity index 100% rename from Subsurface/Content/Sounds/Water/Drown1.ogg rename to Barotrauma/Content/Sounds/Water/Drown1.ogg diff --git a/Subsurface/Content/Sounds/Water/Drown2.ogg b/Barotrauma/Content/Sounds/Water/Drown2.ogg similarity index 100% rename from Subsurface/Content/Sounds/Water/Drown2.ogg rename to Barotrauma/Content/Sounds/Water/Drown2.ogg diff --git a/Subsurface/Content/Sounds/Water/Drown3.ogg b/Barotrauma/Content/Sounds/Water/Drown3.ogg similarity index 100% rename from Subsurface/Content/Sounds/Water/Drown3.ogg rename to Barotrauma/Content/Sounds/Water/Drown3.ogg diff --git a/Subsurface/Content/Sounds/Water/Drown4.ogg b/Barotrauma/Content/Sounds/Water/Drown4.ogg similarity index 100% rename from Subsurface/Content/Sounds/Water/Drown4.ogg rename to Barotrauma/Content/Sounds/Water/Drown4.ogg diff --git a/Subsurface/Content/Sounds/Water/DrownLoop.ogg b/Barotrauma/Content/Sounds/Water/DrownLoop.ogg similarity index 100% rename from Subsurface/Content/Sounds/Water/DrownLoop.ogg rename to Barotrauma/Content/Sounds/Water/DrownLoop.ogg diff --git a/Subsurface/Content/Sounds/Water/FlowLarge.ogg b/Barotrauma/Content/Sounds/Water/FlowLarge.ogg similarity index 100% rename from Subsurface/Content/Sounds/Water/FlowLarge.ogg rename to Barotrauma/Content/Sounds/Water/FlowLarge.ogg diff --git a/Subsurface/Content/Sounds/Water/FlowMedium.ogg b/Barotrauma/Content/Sounds/Water/FlowMedium.ogg similarity index 100% rename from Subsurface/Content/Sounds/Water/FlowMedium.ogg rename to Barotrauma/Content/Sounds/Water/FlowMedium.ogg diff --git a/Subsurface/Content/Sounds/Water/FlowSmall.ogg b/Barotrauma/Content/Sounds/Water/FlowSmall.ogg similarity index 100% rename from Subsurface/Content/Sounds/Water/FlowSmall.ogg rename to Barotrauma/Content/Sounds/Water/FlowSmall.ogg diff --git a/Subsurface/Content/Sounds/Water/Splash0.ogg b/Barotrauma/Content/Sounds/Water/Splash0.ogg similarity index 100% rename from Subsurface/Content/Sounds/Water/Splash0.ogg rename to Barotrauma/Content/Sounds/Water/Splash0.ogg diff --git a/Subsurface/Content/Sounds/Water/Splash1.ogg b/Barotrauma/Content/Sounds/Water/Splash1.ogg similarity index 100% rename from Subsurface/Content/Sounds/Water/Splash1.ogg rename to Barotrauma/Content/Sounds/Water/Splash1.ogg diff --git a/Subsurface/Content/Sounds/Water/Splash2.ogg b/Barotrauma/Content/Sounds/Water/Splash2.ogg similarity index 100% rename from Subsurface/Content/Sounds/Water/Splash2.ogg rename to Barotrauma/Content/Sounds/Water/Splash2.ogg diff --git a/Subsurface/Content/Sounds/Water/Splash3.ogg b/Barotrauma/Content/Sounds/Water/Splash3.ogg similarity index 100% rename from Subsurface/Content/Sounds/Water/Splash3.ogg rename to Barotrauma/Content/Sounds/Water/Splash3.ogg diff --git a/Subsurface/Content/Sounds/Water/Splash4.ogg b/Barotrauma/Content/Sounds/Water/Splash4.ogg similarity index 100% rename from Subsurface/Content/Sounds/Water/Splash4.ogg rename to Barotrauma/Content/Sounds/Water/Splash4.ogg diff --git a/Subsurface/Content/Sounds/Water/Splash5.ogg b/Barotrauma/Content/Sounds/Water/Splash5.ogg similarity index 100% rename from Subsurface/Content/Sounds/Water/Splash5.ogg rename to Barotrauma/Content/Sounds/Water/Splash5.ogg diff --git a/Subsurface/Content/Sounds/Water/Splash6.ogg b/Barotrauma/Content/Sounds/Water/Splash6.ogg similarity index 100% rename from Subsurface/Content/Sounds/Water/Splash6.ogg rename to Barotrauma/Content/Sounds/Water/Splash6.ogg diff --git a/Subsurface/Content/Sounds/Water/Splash7.ogg b/Barotrauma/Content/Sounds/Water/Splash7.ogg similarity index 100% rename from Subsurface/Content/Sounds/Water/Splash7.ogg rename to Barotrauma/Content/Sounds/Water/Splash7.ogg diff --git a/Subsurface/Content/Sounds/Water/Splash8.ogg b/Barotrauma/Content/Sounds/Water/Splash8.ogg similarity index 100% rename from Subsurface/Content/Sounds/Water/Splash8.ogg rename to Barotrauma/Content/Sounds/Water/Splash8.ogg diff --git a/Subsurface/Content/Sounds/Water/Splash9.ogg b/Barotrauma/Content/Sounds/Water/Splash9.ogg similarity index 100% rename from Subsurface/Content/Sounds/Water/Splash9.ogg rename to Barotrauma/Content/Sounds/Water/Splash9.ogg diff --git a/Subsurface/Content/Sounds/Water/WaterAmbience1.ogg b/Barotrauma/Content/Sounds/Water/WaterAmbience1.ogg similarity index 100% rename from Subsurface/Content/Sounds/Water/WaterAmbience1.ogg rename to Barotrauma/Content/Sounds/Water/WaterAmbience1.ogg diff --git a/Subsurface/Content/Sounds/Water/WaterAmbience2.ogg b/Barotrauma/Content/Sounds/Water/WaterAmbience2.ogg similarity index 100% rename from Subsurface/Content/Sounds/Water/WaterAmbience2.ogg rename to Barotrauma/Content/Sounds/Water/WaterAmbience2.ogg diff --git a/Subsurface/Content/Sounds/Water/splashLoop.ogg b/Barotrauma/Content/Sounds/Water/splashLoop.ogg similarity index 100% rename from Subsurface/Content/Sounds/Water/splashLoop.ogg rename to Barotrauma/Content/Sounds/Water/splashLoop.ogg diff --git a/Subsurface/Content/Sounds/fire.ogg b/Barotrauma/Content/Sounds/fire.ogg similarity index 100% rename from Subsurface/Content/Sounds/fire.ogg rename to Barotrauma/Content/Sounds/fire.ogg diff --git a/Subsurface/Content/Sounds/firelarge.ogg b/Barotrauma/Content/Sounds/firelarge.ogg similarity index 100% rename from Subsurface/Content/Sounds/firelarge.ogg rename to Barotrauma/Content/Sounds/firelarge.ogg diff --git a/Subsurface/Content/Sounds/pickItem.ogg b/Barotrauma/Content/Sounds/pickItem.ogg similarity index 100% rename from Subsurface/Content/Sounds/pickItem.ogg rename to Barotrauma/Content/Sounds/pickItem.ogg diff --git a/Subsurface/Content/Sounds/sounds.xml b/Barotrauma/Content/Sounds/sounds.xml similarity index 100% rename from Subsurface/Content/Sounds/sounds.xml rename to Barotrauma/Content/Sounds/sounds.xml diff --git a/Subsurface/Content/Sounds/startDrone.ogg b/Barotrauma/Content/Sounds/startDrone.ogg similarity index 100% rename from Subsurface/Content/Sounds/startDrone.ogg rename to Barotrauma/Content/Sounds/startDrone.ogg diff --git a/Subsurface/Content/Sounds/stepMetal.ogg b/Barotrauma/Content/Sounds/stepMetal.ogg similarity index 100% rename from Subsurface/Content/Sounds/stepMetal.ogg rename to Barotrauma/Content/Sounds/stepMetal.ogg diff --git a/Subsurface/Content/UI/UI_Atlas.png b/Barotrauma/Content/UI/UI_Atlas.png similarity index 100% rename from Subsurface/Content/UI/UI_Atlas.png rename to Barotrauma/Content/UI/UI_Atlas.png diff --git a/Subsurface/Content/UI/caret.png b/Barotrauma/Content/UI/caret.png similarity index 100% rename from Subsurface/Content/UI/caret.png rename to Barotrauma/Content/UI/caret.png diff --git a/Subsurface/Content/UI/cursor.png b/Barotrauma/Content/UI/cursor.png similarity index 100% rename from Subsurface/Content/UI/cursor.png rename to Barotrauma/Content/UI/cursor.png diff --git a/Subsurface/Content/UI/damageOverlay.png b/Barotrauma/Content/UI/damageOverlay.png similarity index 100% rename from Subsurface/Content/UI/damageOverlay.png rename to Barotrauma/Content/UI/damageOverlay.png diff --git a/Subsurface/Content/UI/inventoryIcons.png b/Barotrauma/Content/UI/inventoryIcons.png similarity index 100% rename from Subsurface/Content/UI/inventoryIcons.png rename to Barotrauma/Content/UI/inventoryIcons.png diff --git a/Subsurface/Content/UI/noise.png b/Barotrauma/Content/UI/noise.png similarity index 100% rename from Subsurface/Content/UI/noise.png rename to Barotrauma/Content/UI/noise.png diff --git a/Subsurface/Content/UI/statusIcons.png b/Barotrauma/Content/UI/statusIcons.png similarity index 100% rename from Subsurface/Content/UI/statusIcons.png rename to Barotrauma/Content/UI/statusIcons.png diff --git a/Subsurface/Content/UI/style.xml b/Barotrauma/Content/UI/style.xml similarity index 100% rename from Subsurface/Content/UI/style.xml rename to Barotrauma/Content/UI/style.xml diff --git a/Subsurface/Content/UI/textboxTexture.png b/Barotrauma/Content/UI/textboxTexture.png similarity index 100% rename from Subsurface/Content/UI/textboxTexture.png rename to Barotrauma/Content/UI/textboxTexture.png diff --git a/Subsurface/Content/UI/titleBackground.png b/Barotrauma/Content/UI/titleBackground.png similarity index 100% rename from Subsurface/Content/UI/titleBackground.png rename to Barotrauma/Content/UI/titleBackground.png diff --git a/Subsurface/Content/UI/titleMonster.png b/Barotrauma/Content/UI/titleMonster.png similarity index 100% rename from Subsurface/Content/UI/titleMonster.png rename to Barotrauma/Content/UI/titleMonster.png diff --git a/Subsurface/Content/UI/titleText.png b/Barotrauma/Content/UI/titleText.png similarity index 100% rename from Subsurface/Content/UI/titleText.png rename to Barotrauma/Content/UI/titleText.png diff --git a/Subsurface/Content/UI/uiBackground.png b/Barotrauma/Content/UI/uiBackground.png similarity index 100% rename from Subsurface/Content/UI/uiBackground.png rename to Barotrauma/Content/UI/uiBackground.png diff --git a/Subsurface/Content/UI/uiButton.png b/Barotrauma/Content/UI/uiButton.png similarity index 100% rename from Subsurface/Content/UI/uiButton.png rename to Barotrauma/Content/UI/uiButton.png diff --git a/Subsurface/Content/UI/uiIcons.png b/Barotrauma/Content/UI/uiIcons.png similarity index 100% rename from Subsurface/Content/UI/uiIcons.png rename to Barotrauma/Content/UI/uiIcons.png diff --git a/Subsurface/Content/blurshader.fx b/Barotrauma/Content/blurshader.fx similarity index 100% rename from Subsurface/Content/blurshader.fx rename to Barotrauma/Content/blurshader.fx diff --git a/Subsurface/Content/blurshader.xnb b/Barotrauma/Content/blurshader.xnb similarity index 100% rename from Subsurface/Content/blurshader.xnb rename to Barotrauma/Content/blurshader.xnb diff --git a/Subsurface/Content/blurshader_opengl.xnb b/Barotrauma/Content/blurshader_opengl.xnb similarity index 100% rename from Subsurface/Content/blurshader_opengl.xnb rename to Barotrauma/Content/blurshader_opengl.xnb diff --git a/Subsurface/Content/damageshader.fx b/Barotrauma/Content/damageshader.fx similarity index 100% rename from Subsurface/Content/damageshader.fx rename to Barotrauma/Content/damageshader.fx diff --git a/Subsurface/Content/damageshader.xnb b/Barotrauma/Content/damageshader.xnb similarity index 100% rename from Subsurface/Content/damageshader.xnb rename to Barotrauma/Content/damageshader.xnb diff --git a/Subsurface/Content/damageshader_opengl.xnb b/Barotrauma/Content/damageshader_opengl.xnb similarity index 100% rename from Subsurface/Content/damageshader_opengl.xnb rename to Barotrauma/Content/damageshader_opengl.xnb diff --git a/Subsurface/Content/effects.mgfx b/Barotrauma/Content/effects.mgfx similarity index 100% rename from Subsurface/Content/effects.mgfx rename to Barotrauma/Content/effects.mgfx diff --git a/Subsurface/Content/randomevents.xml b/Barotrauma/Content/randomevents.xml similarity index 100% rename from Subsurface/Content/randomevents.xml rename to Barotrauma/Content/randomevents.xml diff --git a/Subsurface/Content/step.ogg b/Barotrauma/Content/step.ogg similarity index 100% rename from Subsurface/Content/step.ogg rename to Barotrauma/Content/step.ogg diff --git a/Subsurface/Content/utg_4.mp4 b/Barotrauma/Content/utg_4.mp4 similarity index 100% rename from Subsurface/Content/utg_4.mp4 rename to Barotrauma/Content/utg_4.mp4 diff --git a/Subsurface/Content/utg_4.xnb b/Barotrauma/Content/utg_4.xnb similarity index 100% rename from Subsurface/Content/utg_4.xnb rename to Barotrauma/Content/utg_4.xnb diff --git a/Subsurface/Content/waterbump.png b/Barotrauma/Content/waterbump.png similarity index 100% rename from Subsurface/Content/waterbump.png rename to Barotrauma/Content/waterbump.png diff --git a/Subsurface/Content/watershader.fx b/Barotrauma/Content/watershader.fx similarity index 100% rename from Subsurface/Content/watershader.fx rename to Barotrauma/Content/watershader.fx diff --git a/Subsurface/Content/watershader.xnb b/Barotrauma/Content/watershader.xnb similarity index 100% rename from Subsurface/Content/watershader.xnb rename to Barotrauma/Content/watershader.xnb diff --git a/Subsurface/Content/watershader_opengl.xnb b/Barotrauma/Content/watershader_opengl.xnb similarity index 100% rename from Subsurface/Content/watershader_opengl.xnb rename to Barotrauma/Content/watershader_opengl.xnb diff --git a/Subsurface/Data/ContentPackages/Vanilla 0.3.xml b/Barotrauma/Data/ContentPackages/Vanilla 0.3.xml similarity index 100% rename from Subsurface/Data/ContentPackages/Vanilla 0.3.xml rename to Barotrauma/Data/ContentPackages/Vanilla 0.3.xml diff --git a/Subsurface/Icon.ico b/Barotrauma/Icon.ico similarity index 100% rename from Subsurface/Icon.ico rename to Barotrauma/Icon.ico diff --git a/Subsurface/Mods/info.txt b/Barotrauma/Mods/info.txt similarity index 100% rename from Subsurface/Mods/info.txt rename to Barotrauma/Mods/info.txt diff --git a/Subsurface/OpenAL32.dll b/Barotrauma/OpenAL32.dll similarity index 100% rename from Subsurface/OpenAL32.dll rename to Barotrauma/OpenAL32.dll diff --git a/Subsurface/Properties/AssemblyInfo.cs b/Barotrauma/Properties/AssemblyInfo.cs similarity index 100% rename from Subsurface/Properties/AssemblyInfo.cs rename to Barotrauma/Properties/AssemblyInfo.cs diff --git a/Subsurface/Source/Camera.cs b/Barotrauma/Source/Camera.cs similarity index 100% rename from Subsurface/Source/Camera.cs rename to Barotrauma/Source/Camera.cs diff --git a/Subsurface/Source/Characters/AI/AIController.cs b/Barotrauma/Source/Characters/AI/AIController.cs similarity index 100% rename from Subsurface/Source/Characters/AI/AIController.cs rename to Barotrauma/Source/Characters/AI/AIController.cs diff --git a/Subsurface/Source/Characters/AI/AITarget.cs b/Barotrauma/Source/Characters/AI/AITarget.cs similarity index 100% rename from Subsurface/Source/Characters/AI/AITarget.cs rename to Barotrauma/Source/Characters/AI/AITarget.cs diff --git a/Subsurface/Source/Characters/AI/CrewCommander.cs b/Barotrauma/Source/Characters/AI/CrewCommander.cs similarity index 100% rename from Subsurface/Source/Characters/AI/CrewCommander.cs rename to Barotrauma/Source/Characters/AI/CrewCommander.cs diff --git a/Subsurface/Source/Characters/AI/EnemyAIController.cs b/Barotrauma/Source/Characters/AI/EnemyAIController.cs similarity index 100% rename from Subsurface/Source/Characters/AI/EnemyAIController.cs rename to Barotrauma/Source/Characters/AI/EnemyAIController.cs diff --git a/Subsurface/Source/Characters/AI/HumanAIController.cs b/Barotrauma/Source/Characters/AI/HumanAIController.cs similarity index 100% rename from Subsurface/Source/Characters/AI/HumanAIController.cs rename to Barotrauma/Source/Characters/AI/HumanAIController.cs diff --git a/Subsurface/Source/Characters/AI/ISteerable.cs b/Barotrauma/Source/Characters/AI/ISteerable.cs similarity index 100% rename from Subsurface/Source/Characters/AI/ISteerable.cs rename to Barotrauma/Source/Characters/AI/ISteerable.cs diff --git a/Subsurface/Source/Characters/AI/IndoorsSteeringManager.cs b/Barotrauma/Source/Characters/AI/IndoorsSteeringManager.cs similarity index 100% rename from Subsurface/Source/Characters/AI/IndoorsSteeringManager.cs rename to Barotrauma/Source/Characters/AI/IndoorsSteeringManager.cs diff --git a/Subsurface/Source/Characters/AI/Objectives/AIObjective.cs b/Barotrauma/Source/Characters/AI/Objectives/AIObjective.cs similarity index 100% rename from Subsurface/Source/Characters/AI/Objectives/AIObjective.cs rename to Barotrauma/Source/Characters/AI/Objectives/AIObjective.cs diff --git a/Subsurface/Source/Characters/AI/Objectives/AIObjectiveCombat.cs b/Barotrauma/Source/Characters/AI/Objectives/AIObjectiveCombat.cs similarity index 100% rename from Subsurface/Source/Characters/AI/Objectives/AIObjectiveCombat.cs rename to Barotrauma/Source/Characters/AI/Objectives/AIObjectiveCombat.cs diff --git a/Subsurface/Source/Characters/AI/Objectives/AIObjectiveContainItem.cs b/Barotrauma/Source/Characters/AI/Objectives/AIObjectiveContainItem.cs similarity index 100% rename from Subsurface/Source/Characters/AI/Objectives/AIObjectiveContainItem.cs rename to Barotrauma/Source/Characters/AI/Objectives/AIObjectiveContainItem.cs diff --git a/Subsurface/Source/Characters/AI/Objectives/AIObjectiveFindDivingGear.cs b/Barotrauma/Source/Characters/AI/Objectives/AIObjectiveFindDivingGear.cs similarity index 100% rename from Subsurface/Source/Characters/AI/Objectives/AIObjectiveFindDivingGear.cs rename to Barotrauma/Source/Characters/AI/Objectives/AIObjectiveFindDivingGear.cs diff --git a/Subsurface/Source/Characters/AI/Objectives/AIObjectiveFindSafety.cs b/Barotrauma/Source/Characters/AI/Objectives/AIObjectiveFindSafety.cs similarity index 100% rename from Subsurface/Source/Characters/AI/Objectives/AIObjectiveFindSafety.cs rename to Barotrauma/Source/Characters/AI/Objectives/AIObjectiveFindSafety.cs diff --git a/Subsurface/Source/Characters/AI/Objectives/AIObjectiveFixLeak.cs b/Barotrauma/Source/Characters/AI/Objectives/AIObjectiveFixLeak.cs similarity index 100% rename from Subsurface/Source/Characters/AI/Objectives/AIObjectiveFixLeak.cs rename to Barotrauma/Source/Characters/AI/Objectives/AIObjectiveFixLeak.cs diff --git a/Subsurface/Source/Characters/AI/Objectives/AIObjectiveFixLeaks.cs b/Barotrauma/Source/Characters/AI/Objectives/AIObjectiveFixLeaks.cs similarity index 100% rename from Subsurface/Source/Characters/AI/Objectives/AIObjectiveFixLeaks.cs rename to Barotrauma/Source/Characters/AI/Objectives/AIObjectiveFixLeaks.cs diff --git a/Subsurface/Source/Characters/AI/Objectives/AIObjectiveGetItem.cs b/Barotrauma/Source/Characters/AI/Objectives/AIObjectiveGetItem.cs similarity index 100% rename from Subsurface/Source/Characters/AI/Objectives/AIObjectiveGetItem.cs rename to Barotrauma/Source/Characters/AI/Objectives/AIObjectiveGetItem.cs diff --git a/Subsurface/Source/Characters/AI/Objectives/AIObjectiveGoTo.cs b/Barotrauma/Source/Characters/AI/Objectives/AIObjectiveGoTo.cs similarity index 100% rename from Subsurface/Source/Characters/AI/Objectives/AIObjectiveGoTo.cs rename to Barotrauma/Source/Characters/AI/Objectives/AIObjectiveGoTo.cs diff --git a/Subsurface/Source/Characters/AI/Objectives/AIObjectiveIdle.cs b/Barotrauma/Source/Characters/AI/Objectives/AIObjectiveIdle.cs similarity index 100% rename from Subsurface/Source/Characters/AI/Objectives/AIObjectiveIdle.cs rename to Barotrauma/Source/Characters/AI/Objectives/AIObjectiveIdle.cs diff --git a/Subsurface/Source/Characters/AI/Objectives/AIObjectiveManager.cs b/Barotrauma/Source/Characters/AI/Objectives/AIObjectiveManager.cs similarity index 100% rename from Subsurface/Source/Characters/AI/Objectives/AIObjectiveManager.cs rename to Barotrauma/Source/Characters/AI/Objectives/AIObjectiveManager.cs diff --git a/Subsurface/Source/Characters/AI/Objectives/AIObjectiveOperateItem.cs b/Barotrauma/Source/Characters/AI/Objectives/AIObjectiveOperateItem.cs similarity index 100% rename from Subsurface/Source/Characters/AI/Objectives/AIObjectiveOperateItem.cs rename to Barotrauma/Source/Characters/AI/Objectives/AIObjectiveOperateItem.cs diff --git a/Subsurface/Source/Characters/AI/Objectives/AIObjectiveRescue.cs b/Barotrauma/Source/Characters/AI/Objectives/AIObjectiveRescue.cs similarity index 100% rename from Subsurface/Source/Characters/AI/Objectives/AIObjectiveRescue.cs rename to Barotrauma/Source/Characters/AI/Objectives/AIObjectiveRescue.cs diff --git a/Subsurface/Source/Characters/AI/Objectives/AIObjectiveRescureAll.cs b/Barotrauma/Source/Characters/AI/Objectives/AIObjectiveRescureAll.cs similarity index 100% rename from Subsurface/Source/Characters/AI/Objectives/AIObjectiveRescureAll.cs rename to Barotrauma/Source/Characters/AI/Objectives/AIObjectiveRescureAll.cs diff --git a/Subsurface/Source/Characters/AI/Order.cs b/Barotrauma/Source/Characters/AI/Order.cs similarity index 100% rename from Subsurface/Source/Characters/AI/Order.cs rename to Barotrauma/Source/Characters/AI/Order.cs diff --git a/Subsurface/Source/Characters/AI/PathFinder.cs b/Barotrauma/Source/Characters/AI/PathFinder.cs similarity index 100% rename from Subsurface/Source/Characters/AI/PathFinder.cs rename to Barotrauma/Source/Characters/AI/PathFinder.cs diff --git a/Subsurface/Source/Characters/AI/SteeringManager.cs b/Barotrauma/Source/Characters/AI/SteeringManager.cs similarity index 100% rename from Subsurface/Source/Characters/AI/SteeringManager.cs rename to Barotrauma/Source/Characters/AI/SteeringManager.cs diff --git a/Subsurface/Source/Characters/AI/SteeringPath.cs b/Barotrauma/Source/Characters/AI/SteeringPath.cs similarity index 100% rename from Subsurface/Source/Characters/AI/SteeringPath.cs rename to Barotrauma/Source/Characters/AI/SteeringPath.cs diff --git a/Subsurface/Source/Characters/AICharacter.cs b/Barotrauma/Source/Characters/AICharacter.cs similarity index 100% rename from Subsurface/Source/Characters/AICharacter.cs rename to Barotrauma/Source/Characters/AICharacter.cs diff --git a/Subsurface/Source/Characters/Animation/AnimController.cs b/Barotrauma/Source/Characters/Animation/AnimController.cs similarity index 100% rename from Subsurface/Source/Characters/Animation/AnimController.cs rename to Barotrauma/Source/Characters/Animation/AnimController.cs diff --git a/Subsurface/Source/Characters/Animation/FishAnimController.cs b/Barotrauma/Source/Characters/Animation/FishAnimController.cs similarity index 100% rename from Subsurface/Source/Characters/Animation/FishAnimController.cs rename to Barotrauma/Source/Characters/Animation/FishAnimController.cs diff --git a/Subsurface/Source/Characters/Animation/HumanoidAnimController.cs b/Barotrauma/Source/Characters/Animation/HumanoidAnimController.cs similarity index 100% rename from Subsurface/Source/Characters/Animation/HumanoidAnimController.cs rename to Barotrauma/Source/Characters/Animation/HumanoidAnimController.cs diff --git a/Subsurface/Source/Characters/Animation/Ragdoll.cs b/Barotrauma/Source/Characters/Animation/Ragdoll.cs similarity index 100% rename from Subsurface/Source/Characters/Animation/Ragdoll.cs rename to Barotrauma/Source/Characters/Animation/Ragdoll.cs diff --git a/Subsurface/Source/Characters/Attack.cs b/Barotrauma/Source/Characters/Attack.cs similarity index 100% rename from Subsurface/Source/Characters/Attack.cs rename to Barotrauma/Source/Characters/Attack.cs diff --git a/Subsurface/Source/Characters/BackgroundSprite/BackgroundCreature.cs b/Barotrauma/Source/Characters/BackgroundSprite/BackgroundCreature.cs similarity index 100% rename from Subsurface/Source/Characters/BackgroundSprite/BackgroundCreature.cs rename to Barotrauma/Source/Characters/BackgroundSprite/BackgroundCreature.cs diff --git a/Subsurface/Source/Characters/BackgroundSprite/BackgroundCreatureManager.cs b/Barotrauma/Source/Characters/BackgroundSprite/BackgroundCreatureManager.cs similarity index 100% rename from Subsurface/Source/Characters/BackgroundSprite/BackgroundCreatureManager.cs rename to Barotrauma/Source/Characters/BackgroundSprite/BackgroundCreatureManager.cs diff --git a/Subsurface/Source/Characters/BackgroundSprite/BackgroundCreaturePrefab.cs b/Barotrauma/Source/Characters/BackgroundSprite/BackgroundCreaturePrefab.cs similarity index 100% rename from Subsurface/Source/Characters/BackgroundSprite/BackgroundCreaturePrefab.cs rename to Barotrauma/Source/Characters/BackgroundSprite/BackgroundCreaturePrefab.cs diff --git a/Subsurface/Source/Characters/BackgroundSprite/BackgroundSpriteManager.cs b/Barotrauma/Source/Characters/BackgroundSprite/BackgroundSpriteManager.cs similarity index 100% rename from Subsurface/Source/Characters/BackgroundSprite/BackgroundSpriteManager.cs rename to Barotrauma/Source/Characters/BackgroundSprite/BackgroundSpriteManager.cs diff --git a/Subsurface/Source/Characters/BackgroundSprite/BackgroundSpritePrefab.cs b/Barotrauma/Source/Characters/BackgroundSprite/BackgroundSpritePrefab.cs similarity index 100% rename from Subsurface/Source/Characters/BackgroundSprite/BackgroundSpritePrefab.cs rename to Barotrauma/Source/Characters/BackgroundSprite/BackgroundSpritePrefab.cs diff --git a/Subsurface/Source/Characters/Character.cs b/Barotrauma/Source/Characters/Character.cs similarity index 100% rename from Subsurface/Source/Characters/Character.cs rename to Barotrauma/Source/Characters/Character.cs diff --git a/Subsurface/Source/Characters/CharacterHUD.cs b/Barotrauma/Source/Characters/CharacterHUD.cs similarity index 100% rename from Subsurface/Source/Characters/CharacterHUD.cs rename to Barotrauma/Source/Characters/CharacterHUD.cs diff --git a/Subsurface/Source/Characters/CharacterInfo.cs b/Barotrauma/Source/Characters/CharacterInfo.cs similarity index 100% rename from Subsurface/Source/Characters/CharacterInfo.cs rename to Barotrauma/Source/Characters/CharacterInfo.cs diff --git a/Subsurface/Source/Characters/CharacterNetworking.cs b/Barotrauma/Source/Characters/CharacterNetworking.cs similarity index 100% rename from Subsurface/Source/Characters/CharacterNetworking.cs rename to Barotrauma/Source/Characters/CharacterNetworking.cs diff --git a/Subsurface/Source/Characters/CharacterSound.cs b/Barotrauma/Source/Characters/CharacterSound.cs similarity index 100% rename from Subsurface/Source/Characters/CharacterSound.cs rename to Barotrauma/Source/Characters/CharacterSound.cs diff --git a/Subsurface/Source/Characters/DelayedEffect.cs b/Barotrauma/Source/Characters/DelayedEffect.cs similarity index 100% rename from Subsurface/Source/Characters/DelayedEffect.cs rename to Barotrauma/Source/Characters/DelayedEffect.cs diff --git a/Subsurface/Source/Characters/HUDProgressBar.cs b/Barotrauma/Source/Characters/HUDProgressBar.cs similarity index 100% rename from Subsurface/Source/Characters/HUDProgressBar.cs rename to Barotrauma/Source/Characters/HUDProgressBar.cs diff --git a/Subsurface/Source/Characters/HuskInfection.cs b/Barotrauma/Source/Characters/HuskInfection.cs similarity index 100% rename from Subsurface/Source/Characters/HuskInfection.cs rename to Barotrauma/Source/Characters/HuskInfection.cs diff --git a/Subsurface/Source/Characters/Jobs/Job.cs b/Barotrauma/Source/Characters/Jobs/Job.cs similarity index 100% rename from Subsurface/Source/Characters/Jobs/Job.cs rename to Barotrauma/Source/Characters/Jobs/Job.cs diff --git a/Subsurface/Source/Characters/Jobs/JobPrefab.cs b/Barotrauma/Source/Characters/Jobs/JobPrefab.cs similarity index 100% rename from Subsurface/Source/Characters/Jobs/JobPrefab.cs rename to Barotrauma/Source/Characters/Jobs/JobPrefab.cs diff --git a/Subsurface/Source/Characters/Jobs/Skill.cs b/Barotrauma/Source/Characters/Jobs/Skill.cs similarity index 100% rename from Subsurface/Source/Characters/Jobs/Skill.cs rename to Barotrauma/Source/Characters/Jobs/Skill.cs diff --git a/Subsurface/Source/Characters/Jobs/SkillPrefab.cs b/Barotrauma/Source/Characters/Jobs/SkillPrefab.cs similarity index 100% rename from Subsurface/Source/Characters/Jobs/SkillPrefab.cs rename to Barotrauma/Source/Characters/Jobs/SkillPrefab.cs diff --git a/Subsurface/Source/Characters/Limb.cs b/Barotrauma/Source/Characters/Limb.cs similarity index 100% rename from Subsurface/Source/Characters/Limb.cs rename to Barotrauma/Source/Characters/Limb.cs diff --git a/Subsurface/Source/Characters/StatusEffect.cs b/Barotrauma/Source/Characters/StatusEffect.cs similarity index 100% rename from Subsurface/Source/Characters/StatusEffect.cs rename to Barotrauma/Source/Characters/StatusEffect.cs diff --git a/Subsurface/Source/ContentPackage.cs b/Barotrauma/Source/ContentPackage.cs similarity index 100% rename from Subsurface/Source/ContentPackage.cs rename to Barotrauma/Source/ContentPackage.cs diff --git a/Subsurface/Source/CoroutineManager.cs b/Barotrauma/Source/CoroutineManager.cs similarity index 100% rename from Subsurface/Source/CoroutineManager.cs rename to Barotrauma/Source/CoroutineManager.cs diff --git a/Subsurface/Source/DebugConsole.cs b/Barotrauma/Source/DebugConsole.cs similarity index 100% rename from Subsurface/Source/DebugConsole.cs rename to Barotrauma/Source/DebugConsole.cs diff --git a/Subsurface/Source/EventInput/EventInput.cs b/Barotrauma/Source/EventInput/EventInput.cs similarity index 100% rename from Subsurface/Source/EventInput/EventInput.cs rename to Barotrauma/Source/EventInput/EventInput.cs diff --git a/Subsurface/Source/EventInput/KeyboardDispatcher.cs b/Barotrauma/Source/EventInput/KeyboardDispatcher.cs similarity index 100% rename from Subsurface/Source/EventInput/KeyboardDispatcher.cs rename to Barotrauma/Source/EventInput/KeyboardDispatcher.cs diff --git a/Subsurface/Source/Events/ArtifactEvent.cs b/Barotrauma/Source/Events/ArtifactEvent.cs similarity index 100% rename from Subsurface/Source/Events/ArtifactEvent.cs rename to Barotrauma/Source/Events/ArtifactEvent.cs diff --git a/Subsurface/Source/Events/Missions/CargoMission.cs b/Barotrauma/Source/Events/Missions/CargoMission.cs similarity index 100% rename from Subsurface/Source/Events/Missions/CargoMission.cs rename to Barotrauma/Source/Events/Missions/CargoMission.cs diff --git a/Subsurface/Source/Events/Missions/CombatMission.cs b/Barotrauma/Source/Events/Missions/CombatMission.cs similarity index 100% rename from Subsurface/Source/Events/Missions/CombatMission.cs rename to Barotrauma/Source/Events/Missions/CombatMission.cs diff --git a/Subsurface/Source/Events/Missions/Mission.cs b/Barotrauma/Source/Events/Missions/Mission.cs similarity index 100% rename from Subsurface/Source/Events/Missions/Mission.cs rename to Barotrauma/Source/Events/Missions/Mission.cs diff --git a/Subsurface/Source/Events/Missions/MonsterMission.cs b/Barotrauma/Source/Events/Missions/MonsterMission.cs similarity index 100% rename from Subsurface/Source/Events/Missions/MonsterMission.cs rename to Barotrauma/Source/Events/Missions/MonsterMission.cs diff --git a/Subsurface/Source/Events/Missions/SalvageMission.cs b/Barotrauma/Source/Events/Missions/SalvageMission.cs similarity index 100% rename from Subsurface/Source/Events/Missions/SalvageMission.cs rename to Barotrauma/Source/Events/Missions/SalvageMission.cs diff --git a/Subsurface/Source/Events/MonsterEvent.cs b/Barotrauma/Source/Events/MonsterEvent.cs similarity index 100% rename from Subsurface/Source/Events/MonsterEvent.cs rename to Barotrauma/Source/Events/MonsterEvent.cs diff --git a/Subsurface/Source/Events/PropertyTask.cs b/Barotrauma/Source/Events/PropertyTask.cs similarity index 100% rename from Subsurface/Source/Events/PropertyTask.cs rename to Barotrauma/Source/Events/PropertyTask.cs diff --git a/Subsurface/Source/Events/RepairTask.cs b/Barotrauma/Source/Events/RepairTask.cs similarity index 100% rename from Subsurface/Source/Events/RepairTask.cs rename to Barotrauma/Source/Events/RepairTask.cs diff --git a/Subsurface/Source/Events/ScriptedEvent.cs b/Barotrauma/Source/Events/ScriptedEvent.cs similarity index 100% rename from Subsurface/Source/Events/ScriptedEvent.cs rename to Barotrauma/Source/Events/ScriptedEvent.cs diff --git a/Subsurface/Source/Events/ScriptedTask.cs b/Barotrauma/Source/Events/ScriptedTask.cs similarity index 100% rename from Subsurface/Source/Events/ScriptedTask.cs rename to Barotrauma/Source/Events/ScriptedTask.cs diff --git a/Subsurface/Source/Events/Task.cs b/Barotrauma/Source/Events/Task.cs similarity index 100% rename from Subsurface/Source/Events/Task.cs rename to Barotrauma/Source/Events/Task.cs diff --git a/Subsurface/Source/Events/TaskManager.cs b/Barotrauma/Source/Events/TaskManager.cs similarity index 100% rename from Subsurface/Source/Events/TaskManager.cs rename to Barotrauma/Source/Events/TaskManager.cs diff --git a/Subsurface/Source/Fonts/ScalableFont.cs b/Barotrauma/Source/Fonts/ScalableFont.cs similarity index 100% rename from Subsurface/Source/Fonts/ScalableFont.cs rename to Barotrauma/Source/Fonts/ScalableFont.cs diff --git a/Subsurface/Source/FrameCounter.cs b/Barotrauma/Source/FrameCounter.cs similarity index 100% rename from Subsurface/Source/FrameCounter.cs rename to Barotrauma/Source/FrameCounter.cs diff --git a/Subsurface/Source/GUI/ComponentStyle.cs b/Barotrauma/Source/GUI/ComponentStyle.cs similarity index 100% rename from Subsurface/Source/GUI/ComponentStyle.cs rename to Barotrauma/Source/GUI/ComponentStyle.cs diff --git a/Subsurface/Source/GUI/GUI.cs b/Barotrauma/Source/GUI/GUI.cs similarity index 100% rename from Subsurface/Source/GUI/GUI.cs rename to Barotrauma/Source/GUI/GUI.cs diff --git a/Subsurface/Source/GUI/GUIButton.cs b/Barotrauma/Source/GUI/GUIButton.cs similarity index 100% rename from Subsurface/Source/GUI/GUIButton.cs rename to Barotrauma/Source/GUI/GUIButton.cs diff --git a/Subsurface/Source/GUI/GUIComponent.cs b/Barotrauma/Source/GUI/GUIComponent.cs similarity index 100% rename from Subsurface/Source/GUI/GUIComponent.cs rename to Barotrauma/Source/GUI/GUIComponent.cs diff --git a/Subsurface/Source/GUI/GUIDropDown.cs b/Barotrauma/Source/GUI/GUIDropDown.cs similarity index 100% rename from Subsurface/Source/GUI/GUIDropDown.cs rename to Barotrauma/Source/GUI/GUIDropDown.cs diff --git a/Subsurface/Source/GUI/GUIFrame.cs b/Barotrauma/Source/GUI/GUIFrame.cs similarity index 100% rename from Subsurface/Source/GUI/GUIFrame.cs rename to Barotrauma/Source/GUI/GUIFrame.cs diff --git a/Subsurface/Source/GUI/GUIImage.cs b/Barotrauma/Source/GUI/GUIImage.cs similarity index 100% rename from Subsurface/Source/GUI/GUIImage.cs rename to Barotrauma/Source/GUI/GUIImage.cs diff --git a/Subsurface/Source/GUI/GUIListBox.cs b/Barotrauma/Source/GUI/GUIListBox.cs similarity index 100% rename from Subsurface/Source/GUI/GUIListBox.cs rename to Barotrauma/Source/GUI/GUIListBox.cs diff --git a/Subsurface/Source/GUI/GUIMessage.cs b/Barotrauma/Source/GUI/GUIMessage.cs similarity index 100% rename from Subsurface/Source/GUI/GUIMessage.cs rename to Barotrauma/Source/GUI/GUIMessage.cs diff --git a/Subsurface/Source/GUI/GUIMessageBox.cs b/Barotrauma/Source/GUI/GUIMessageBox.cs similarity index 100% rename from Subsurface/Source/GUI/GUIMessageBox.cs rename to Barotrauma/Source/GUI/GUIMessageBox.cs diff --git a/Subsurface/Source/GUI/GUIProgressBar.cs b/Barotrauma/Source/GUI/GUIProgressBar.cs similarity index 100% rename from Subsurface/Source/GUI/GUIProgressBar.cs rename to Barotrauma/Source/GUI/GUIProgressBar.cs diff --git a/Subsurface/Source/GUI/GUIScrollBar.cs b/Barotrauma/Source/GUI/GUIScrollBar.cs similarity index 100% rename from Subsurface/Source/GUI/GUIScrollBar.cs rename to Barotrauma/Source/GUI/GUIScrollBar.cs diff --git a/Subsurface/Source/GUI/GUIStyle.cs b/Barotrauma/Source/GUI/GUIStyle.cs similarity index 100% rename from Subsurface/Source/GUI/GUIStyle.cs rename to Barotrauma/Source/GUI/GUIStyle.cs diff --git a/Subsurface/Source/GUI/GUITextBlock.cs b/Barotrauma/Source/GUI/GUITextBlock.cs similarity index 100% rename from Subsurface/Source/GUI/GUITextBlock.cs rename to Barotrauma/Source/GUI/GUITextBlock.cs diff --git a/Subsurface/Source/GUI/GUITextBox.cs b/Barotrauma/Source/GUI/GUITextBox.cs similarity index 100% rename from Subsurface/Source/GUI/GUITextBox.cs rename to Barotrauma/Source/GUI/GUITextBox.cs diff --git a/Subsurface/Source/GUI/GUITickBox.cs b/Barotrauma/Source/GUI/GUITickBox.cs similarity index 100% rename from Subsurface/Source/GUI/GUITickBox.cs rename to Barotrauma/Source/GUI/GUITickBox.cs diff --git a/Subsurface/Source/GUI/LoadingScreen.cs b/Barotrauma/Source/GUI/LoadingScreen.cs similarity index 100% rename from Subsurface/Source/GUI/LoadingScreen.cs rename to Barotrauma/Source/GUI/LoadingScreen.cs diff --git a/Subsurface/Source/GameMain.cs b/Barotrauma/Source/GameMain.cs similarity index 100% rename from Subsurface/Source/GameMain.cs rename to Barotrauma/Source/GameMain.cs diff --git a/Subsurface/Source/GameSession/CargoManager.cs b/Barotrauma/Source/GameSession/CargoManager.cs similarity index 100% rename from Subsurface/Source/GameSession/CargoManager.cs rename to Barotrauma/Source/GameSession/CargoManager.cs diff --git a/Subsurface/Source/GameSession/CrewManager.cs b/Barotrauma/Source/GameSession/CrewManager.cs similarity index 100% rename from Subsurface/Source/GameSession/CrewManager.cs rename to Barotrauma/Source/GameSession/CrewManager.cs diff --git a/Subsurface/Source/GameSession/GameModes/GameMode.cs b/Barotrauma/Source/GameSession/GameModes/GameMode.cs similarity index 100% rename from Subsurface/Source/GameSession/GameModes/GameMode.cs rename to Barotrauma/Source/GameSession/GameModes/GameMode.cs diff --git a/Subsurface/Source/GameSession/GameModes/GameModePreset.cs b/Barotrauma/Source/GameSession/GameModes/GameModePreset.cs similarity index 100% rename from Subsurface/Source/GameSession/GameModes/GameModePreset.cs rename to Barotrauma/Source/GameSession/GameModes/GameModePreset.cs diff --git a/Subsurface/Source/GameSession/GameModes/MissionMode.cs b/Barotrauma/Source/GameSession/GameModes/MissionMode.cs similarity index 100% rename from Subsurface/Source/GameSession/GameModes/MissionMode.cs rename to Barotrauma/Source/GameSession/GameModes/MissionMode.cs diff --git a/Subsurface/Source/GameSession/GameModes/SinglePlayerMode.cs b/Barotrauma/Source/GameSession/GameModes/SinglePlayerMode.cs similarity index 100% rename from Subsurface/Source/GameSession/GameModes/SinglePlayerMode.cs rename to Barotrauma/Source/GameSession/GameModes/SinglePlayerMode.cs diff --git a/Subsurface/Source/GameSession/GameModes/TraitorManager.cs b/Barotrauma/Source/GameSession/GameModes/TraitorManager.cs similarity index 100% rename from Subsurface/Source/GameSession/GameModes/TraitorManager.cs rename to Barotrauma/Source/GameSession/GameModes/TraitorManager.cs diff --git a/Subsurface/Source/GameSession/GameModes/Tutorials/BasicTutorial.cs b/Barotrauma/Source/GameSession/GameModes/Tutorials/BasicTutorial.cs similarity index 100% rename from Subsurface/Source/GameSession/GameModes/Tutorials/BasicTutorial.cs rename to Barotrauma/Source/GameSession/GameModes/Tutorials/BasicTutorial.cs diff --git a/Subsurface/Source/GameSession/GameModes/Tutorials/EditorTutorial.cs b/Barotrauma/Source/GameSession/GameModes/Tutorials/EditorTutorial.cs similarity index 100% rename from Subsurface/Source/GameSession/GameModes/Tutorials/EditorTutorial.cs rename to Barotrauma/Source/GameSession/GameModes/Tutorials/EditorTutorial.cs diff --git a/Subsurface/Source/GameSession/GameModes/Tutorials/TutorialMode.cs b/Barotrauma/Source/GameSession/GameModes/Tutorials/TutorialMode.cs similarity index 100% rename from Subsurface/Source/GameSession/GameModes/Tutorials/TutorialMode.cs rename to Barotrauma/Source/GameSession/GameModes/Tutorials/TutorialMode.cs diff --git a/Subsurface/Source/GameSession/GameModes/Tutorials/TutorialType.cs b/Barotrauma/Source/GameSession/GameModes/Tutorials/TutorialType.cs similarity index 100% rename from Subsurface/Source/GameSession/GameModes/Tutorials/TutorialType.cs rename to Barotrauma/Source/GameSession/GameModes/Tutorials/TutorialType.cs diff --git a/Subsurface/Source/GameSession/GameSession.cs b/Barotrauma/Source/GameSession/GameSession.cs similarity index 100% rename from Subsurface/Source/GameSession/GameSession.cs rename to Barotrauma/Source/GameSession/GameSession.cs diff --git a/Subsurface/Source/GameSession/HireManager.cs b/Barotrauma/Source/GameSession/HireManager.cs similarity index 100% rename from Subsurface/Source/GameSession/HireManager.cs rename to Barotrauma/Source/GameSession/HireManager.cs diff --git a/Subsurface/Source/GameSession/InfoTextManager.cs b/Barotrauma/Source/GameSession/InfoTextManager.cs similarity index 100% rename from Subsurface/Source/GameSession/InfoTextManager.cs rename to Barotrauma/Source/GameSession/InfoTextManager.cs diff --git a/Subsurface/Source/GameSession/ShiftSummary.cs b/Barotrauma/Source/GameSession/ShiftSummary.cs similarity index 100% rename from Subsurface/Source/GameSession/ShiftSummary.cs rename to Barotrauma/Source/GameSession/ShiftSummary.cs diff --git a/Subsurface/Source/GameSettings.cs b/Barotrauma/Source/GameSettings.cs similarity index 100% rename from Subsurface/Source/GameSettings.cs rename to Barotrauma/Source/GameSettings.cs diff --git a/Subsurface/Source/IPropertyObject.cs b/Barotrauma/Source/IPropertyObject.cs similarity index 100% rename from Subsurface/Source/IPropertyObject.cs rename to Barotrauma/Source/IPropertyObject.cs diff --git a/Subsurface/Source/Items/CharacterInventory.cs b/Barotrauma/Source/Items/CharacterInventory.cs similarity index 100% rename from Subsurface/Source/Items/CharacterInventory.cs rename to Barotrauma/Source/Items/CharacterInventory.cs diff --git a/Subsurface/Source/Items/Components/DockingPort.cs b/Barotrauma/Source/Items/Components/DockingPort.cs similarity index 100% rename from Subsurface/Source/Items/Components/DockingPort.cs rename to Barotrauma/Source/Items/Components/DockingPort.cs diff --git a/Subsurface/Source/Items/Components/Door.cs b/Barotrauma/Source/Items/Components/Door.cs similarity index 100% rename from Subsurface/Source/Items/Components/Door.cs rename to Barotrauma/Source/Items/Components/Door.cs diff --git a/Subsurface/Source/Items/Components/Holdable/Holdable.cs b/Barotrauma/Source/Items/Components/Holdable/Holdable.cs similarity index 100% rename from Subsurface/Source/Items/Components/Holdable/Holdable.cs rename to Barotrauma/Source/Items/Components/Holdable/Holdable.cs diff --git a/Subsurface/Source/Items/Components/Holdable/MeleeWeapon.cs b/Barotrauma/Source/Items/Components/Holdable/MeleeWeapon.cs similarity index 100% rename from Subsurface/Source/Items/Components/Holdable/MeleeWeapon.cs rename to Barotrauma/Source/Items/Components/Holdable/MeleeWeapon.cs diff --git a/Subsurface/Source/Items/Components/Holdable/Pickable.cs b/Barotrauma/Source/Items/Components/Holdable/Pickable.cs similarity index 100% rename from Subsurface/Source/Items/Components/Holdable/Pickable.cs rename to Barotrauma/Source/Items/Components/Holdable/Pickable.cs diff --git a/Subsurface/Source/Items/Components/Holdable/Propulsion.cs b/Barotrauma/Source/Items/Components/Holdable/Propulsion.cs similarity index 100% rename from Subsurface/Source/Items/Components/Holdable/Propulsion.cs rename to Barotrauma/Source/Items/Components/Holdable/Propulsion.cs diff --git a/Subsurface/Source/Items/Components/Holdable/RangedWeapon.cs b/Barotrauma/Source/Items/Components/Holdable/RangedWeapon.cs similarity index 100% rename from Subsurface/Source/Items/Components/Holdable/RangedWeapon.cs rename to Barotrauma/Source/Items/Components/Holdable/RangedWeapon.cs diff --git a/Subsurface/Source/Items/Components/Holdable/RepairTool.cs b/Barotrauma/Source/Items/Components/Holdable/RepairTool.cs similarity index 100% rename from Subsurface/Source/Items/Components/Holdable/RepairTool.cs rename to Barotrauma/Source/Items/Components/Holdable/RepairTool.cs diff --git a/Subsurface/Source/Items/Components/Holdable/Throwable.cs b/Barotrauma/Source/Items/Components/Holdable/Throwable.cs similarity index 100% rename from Subsurface/Source/Items/Components/Holdable/Throwable.cs rename to Barotrauma/Source/Items/Components/Holdable/Throwable.cs diff --git a/Subsurface/Source/Items/Components/ItemComponent.cs b/Barotrauma/Source/Items/Components/ItemComponent.cs similarity index 100% rename from Subsurface/Source/Items/Components/ItemComponent.cs rename to Barotrauma/Source/Items/Components/ItemComponent.cs diff --git a/Subsurface/Source/Items/Components/ItemContainer.cs b/Barotrauma/Source/Items/Components/ItemContainer.cs similarity index 99% rename from Subsurface/Source/Items/Components/ItemContainer.cs rename to Barotrauma/Source/Items/Components/ItemContainer.cs index 6eceeaf21..db295927a 100644 --- a/Subsurface/Source/Items/Components/ItemContainer.cs +++ b/Barotrauma/Source/Items/Components/ItemContainer.cs @@ -269,10 +269,12 @@ namespace Barotrauma.Items.Components itemIds = null; } + protected override void ShallowRemoveComponentSpecific() + { + } + protected override void RemoveComponentSpecific() { - base.RemoveComponentSpecific(); - foreach (Item item in Inventory.Items) { if (item == null) continue; diff --git a/Subsurface/Source/Items/Components/ItemLabel.cs b/Barotrauma/Source/Items/Components/ItemLabel.cs similarity index 100% rename from Subsurface/Source/Items/Components/ItemLabel.cs rename to Barotrauma/Source/Items/Components/ItemLabel.cs diff --git a/Subsurface/Source/Items/Components/Ladder.cs b/Barotrauma/Source/Items/Components/Ladder.cs similarity index 100% rename from Subsurface/Source/Items/Components/Ladder.cs rename to Barotrauma/Source/Items/Components/Ladder.cs diff --git a/Subsurface/Source/Items/Components/Machines/Controller.cs b/Barotrauma/Source/Items/Components/Machines/Controller.cs similarity index 100% rename from Subsurface/Source/Items/Components/Machines/Controller.cs rename to Barotrauma/Source/Items/Components/Machines/Controller.cs diff --git a/Subsurface/Source/Items/Components/Machines/Deconstructor.cs b/Barotrauma/Source/Items/Components/Machines/Deconstructor.cs similarity index 100% rename from Subsurface/Source/Items/Components/Machines/Deconstructor.cs rename to Barotrauma/Source/Items/Components/Machines/Deconstructor.cs diff --git a/Subsurface/Source/Items/Components/Machines/Engine.cs b/Barotrauma/Source/Items/Components/Machines/Engine.cs similarity index 100% rename from Subsurface/Source/Items/Components/Machines/Engine.cs rename to Barotrauma/Source/Items/Components/Machines/Engine.cs diff --git a/Subsurface/Source/Items/Components/Machines/Fabricator.cs b/Barotrauma/Source/Items/Components/Machines/Fabricator.cs similarity index 100% rename from Subsurface/Source/Items/Components/Machines/Fabricator.cs rename to Barotrauma/Source/Items/Components/Machines/Fabricator.cs diff --git a/Subsurface/Source/Items/Components/Machines/MiniMap.cs b/Barotrauma/Source/Items/Components/Machines/MiniMap.cs similarity index 100% rename from Subsurface/Source/Items/Components/Machines/MiniMap.cs rename to Barotrauma/Source/Items/Components/Machines/MiniMap.cs diff --git a/Subsurface/Source/Items/Components/Machines/OxygenGenerator.cs b/Barotrauma/Source/Items/Components/Machines/OxygenGenerator.cs similarity index 100% rename from Subsurface/Source/Items/Components/Machines/OxygenGenerator.cs rename to Barotrauma/Source/Items/Components/Machines/OxygenGenerator.cs diff --git a/Subsurface/Source/Items/Components/Machines/Pump.cs b/Barotrauma/Source/Items/Components/Machines/Pump.cs similarity index 100% rename from Subsurface/Source/Items/Components/Machines/Pump.cs rename to Barotrauma/Source/Items/Components/Machines/Pump.cs diff --git a/Subsurface/Source/Items/Components/Machines/Radar.cs b/Barotrauma/Source/Items/Components/Machines/Radar.cs similarity index 100% rename from Subsurface/Source/Items/Components/Machines/Radar.cs rename to Barotrauma/Source/Items/Components/Machines/Radar.cs diff --git a/Subsurface/Source/Items/Components/Machines/Reactor.cs b/Barotrauma/Source/Items/Components/Machines/Reactor.cs similarity index 100% rename from Subsurface/Source/Items/Components/Machines/Reactor.cs rename to Barotrauma/Source/Items/Components/Machines/Reactor.cs diff --git a/Subsurface/Source/Items/Components/Machines/Steering.cs b/Barotrauma/Source/Items/Components/Machines/Steering.cs similarity index 100% rename from Subsurface/Source/Items/Components/Machines/Steering.cs rename to Barotrauma/Source/Items/Components/Machines/Steering.cs diff --git a/Subsurface/Source/Items/Components/Machines/Vent.cs b/Barotrauma/Source/Items/Components/Machines/Vent.cs similarity index 100% rename from Subsurface/Source/Items/Components/Machines/Vent.cs rename to Barotrauma/Source/Items/Components/Machines/Vent.cs diff --git a/Subsurface/Source/Items/Components/Power/PowerContainer.cs b/Barotrauma/Source/Items/Components/Power/PowerContainer.cs similarity index 100% rename from Subsurface/Source/Items/Components/Power/PowerContainer.cs rename to Barotrauma/Source/Items/Components/Power/PowerContainer.cs diff --git a/Subsurface/Source/Items/Components/Power/PowerTransfer.cs b/Barotrauma/Source/Items/Components/Power/PowerTransfer.cs similarity index 100% rename from Subsurface/Source/Items/Components/Power/PowerTransfer.cs rename to Barotrauma/Source/Items/Components/Power/PowerTransfer.cs diff --git a/Subsurface/Source/Items/Components/Power/Powered.cs b/Barotrauma/Source/Items/Components/Power/Powered.cs similarity index 100% rename from Subsurface/Source/Items/Components/Power/Powered.cs rename to Barotrauma/Source/Items/Components/Power/Powered.cs diff --git a/Subsurface/Source/Items/Components/Projectile.cs b/Barotrauma/Source/Items/Components/Projectile.cs similarity index 100% rename from Subsurface/Source/Items/Components/Projectile.cs rename to Barotrauma/Source/Items/Components/Projectile.cs diff --git a/Subsurface/Source/Items/Components/Rope.cs b/Barotrauma/Source/Items/Components/Rope.cs similarity index 100% rename from Subsurface/Source/Items/Components/Rope.cs rename to Barotrauma/Source/Items/Components/Rope.cs diff --git a/Subsurface/Source/Items/Components/Signal/AndComponent.cs b/Barotrauma/Source/Items/Components/Signal/AndComponent.cs similarity index 100% rename from Subsurface/Source/Items/Components/Signal/AndComponent.cs rename to Barotrauma/Source/Items/Components/Signal/AndComponent.cs diff --git a/Subsurface/Source/Items/Components/Signal/Connection.cs b/Barotrauma/Source/Items/Components/Signal/Connection.cs similarity index 100% rename from Subsurface/Source/Items/Components/Signal/Connection.cs rename to Barotrauma/Source/Items/Components/Signal/Connection.cs diff --git a/Subsurface/Source/Items/Components/Signal/ConnectionPanel.cs b/Barotrauma/Source/Items/Components/Signal/ConnectionPanel.cs similarity index 100% rename from Subsurface/Source/Items/Components/Signal/ConnectionPanel.cs rename to Barotrauma/Source/Items/Components/Signal/ConnectionPanel.cs diff --git a/Subsurface/Source/Items/Components/Signal/DelayComponent.cs b/Barotrauma/Source/Items/Components/Signal/DelayComponent.cs similarity index 100% rename from Subsurface/Source/Items/Components/Signal/DelayComponent.cs rename to Barotrauma/Source/Items/Components/Signal/DelayComponent.cs diff --git a/Subsurface/Source/Items/Components/Signal/LightComponent.cs b/Barotrauma/Source/Items/Components/Signal/LightComponent.cs similarity index 100% rename from Subsurface/Source/Items/Components/Signal/LightComponent.cs rename to Barotrauma/Source/Items/Components/Signal/LightComponent.cs diff --git a/Subsurface/Source/Items/Components/Signal/MotionSensor.cs b/Barotrauma/Source/Items/Components/Signal/MotionSensor.cs similarity index 100% rename from Subsurface/Source/Items/Components/Signal/MotionSensor.cs rename to Barotrauma/Source/Items/Components/Signal/MotionSensor.cs diff --git a/Subsurface/Source/Items/Components/Signal/NotComponent.cs b/Barotrauma/Source/Items/Components/Signal/NotComponent.cs similarity index 100% rename from Subsurface/Source/Items/Components/Signal/NotComponent.cs rename to Barotrauma/Source/Items/Components/Signal/NotComponent.cs diff --git a/Subsurface/Source/Items/Components/Signal/OrComponent.cs b/Barotrauma/Source/Items/Components/Signal/OrComponent.cs similarity index 100% rename from Subsurface/Source/Items/Components/Signal/OrComponent.cs rename to Barotrauma/Source/Items/Components/Signal/OrComponent.cs diff --git a/Subsurface/Source/Items/Components/Signal/OxygenDetector.cs b/Barotrauma/Source/Items/Components/Signal/OxygenDetector.cs similarity index 100% rename from Subsurface/Source/Items/Components/Signal/OxygenDetector.cs rename to Barotrauma/Source/Items/Components/Signal/OxygenDetector.cs diff --git a/Subsurface/Source/Items/Components/Signal/RegExFindComponent.cs b/Barotrauma/Source/Items/Components/Signal/RegExFindComponent.cs similarity index 100% rename from Subsurface/Source/Items/Components/Signal/RegExFindComponent.cs rename to Barotrauma/Source/Items/Components/Signal/RegExFindComponent.cs diff --git a/Subsurface/Source/Items/Components/Signal/RelayComponent.cs b/Barotrauma/Source/Items/Components/Signal/RelayComponent.cs similarity index 100% rename from Subsurface/Source/Items/Components/Signal/RelayComponent.cs rename to Barotrauma/Source/Items/Components/Signal/RelayComponent.cs diff --git a/Subsurface/Source/Items/Components/Signal/SignalCheckComponent.cs b/Barotrauma/Source/Items/Components/Signal/SignalCheckComponent.cs similarity index 100% rename from Subsurface/Source/Items/Components/Signal/SignalCheckComponent.cs rename to Barotrauma/Source/Items/Components/Signal/SignalCheckComponent.cs diff --git a/Subsurface/Source/Items/Components/Signal/WaterDetector.cs b/Barotrauma/Source/Items/Components/Signal/WaterDetector.cs similarity index 100% rename from Subsurface/Source/Items/Components/Signal/WaterDetector.cs rename to Barotrauma/Source/Items/Components/Signal/WaterDetector.cs diff --git a/Subsurface/Source/Items/Components/Signal/WifiComponent.cs b/Barotrauma/Source/Items/Components/Signal/WifiComponent.cs similarity index 100% rename from Subsurface/Source/Items/Components/Signal/WifiComponent.cs rename to Barotrauma/Source/Items/Components/Signal/WifiComponent.cs diff --git a/Subsurface/Source/Items/Components/Signal/Wire.cs b/Barotrauma/Source/Items/Components/Signal/Wire.cs similarity index 100% rename from Subsurface/Source/Items/Components/Signal/Wire.cs rename to Barotrauma/Source/Items/Components/Signal/Wire.cs diff --git a/Subsurface/Source/Items/Components/StatusHUD.cs b/Barotrauma/Source/Items/Components/StatusHUD.cs similarity index 100% rename from Subsurface/Source/Items/Components/StatusHUD.cs rename to Barotrauma/Source/Items/Components/StatusHUD.cs diff --git a/Subsurface/Source/Items/Components/Turret.cs b/Barotrauma/Source/Items/Components/Turret.cs similarity index 100% rename from Subsurface/Source/Items/Components/Turret.cs rename to Barotrauma/Source/Items/Components/Turret.cs diff --git a/Subsurface/Source/Items/Components/Wearable.cs b/Barotrauma/Source/Items/Components/Wearable.cs similarity index 100% rename from Subsurface/Source/Items/Components/Wearable.cs rename to Barotrauma/Source/Items/Components/Wearable.cs diff --git a/Subsurface/Source/Items/FixRequirement.cs b/Barotrauma/Source/Items/FixRequirement.cs similarity index 100% rename from Subsurface/Source/Items/FixRequirement.cs rename to Barotrauma/Source/Items/FixRequirement.cs diff --git a/Subsurface/Source/Items/Inventory.cs b/Barotrauma/Source/Items/Inventory.cs similarity index 100% rename from Subsurface/Source/Items/Inventory.cs rename to Barotrauma/Source/Items/Inventory.cs diff --git a/Subsurface/Source/Items/Item.cs b/Barotrauma/Source/Items/Item.cs similarity index 100% rename from Subsurface/Source/Items/Item.cs rename to Barotrauma/Source/Items/Item.cs diff --git a/Subsurface/Source/Items/ItemInventory.cs b/Barotrauma/Source/Items/ItemInventory.cs similarity index 100% rename from Subsurface/Source/Items/ItemInventory.cs rename to Barotrauma/Source/Items/ItemInventory.cs diff --git a/Subsurface/Source/Items/ItemPrefab.cs b/Barotrauma/Source/Items/ItemPrefab.cs similarity index 100% rename from Subsurface/Source/Items/ItemPrefab.cs rename to Barotrauma/Source/Items/ItemPrefab.cs diff --git a/Subsurface/Source/Items/RelatedItem.cs b/Barotrauma/Source/Items/RelatedItem.cs similarity index 100% rename from Subsurface/Source/Items/RelatedItem.cs rename to Barotrauma/Source/Items/RelatedItem.cs diff --git a/Subsurface/Source/Map/Entity.cs b/Barotrauma/Source/Map/Entity.cs similarity index 100% rename from Subsurface/Source/Map/Entity.cs rename to Barotrauma/Source/Map/Entity.cs diff --git a/Subsurface/Source/Map/EntityGrid.cs b/Barotrauma/Source/Map/EntityGrid.cs similarity index 100% rename from Subsurface/Source/Map/EntityGrid.cs rename to Barotrauma/Source/Map/EntityGrid.cs diff --git a/Subsurface/Source/Map/Explosion.cs b/Barotrauma/Source/Map/Explosion.cs similarity index 100% rename from Subsurface/Source/Map/Explosion.cs rename to Barotrauma/Source/Map/Explosion.cs diff --git a/Subsurface/Source/Map/FireSource.cs b/Barotrauma/Source/Map/FireSource.cs similarity index 100% rename from Subsurface/Source/Map/FireSource.cs rename to Barotrauma/Source/Map/FireSource.cs diff --git a/Subsurface/Source/Map/Gap.cs b/Barotrauma/Source/Map/Gap.cs similarity index 100% rename from Subsurface/Source/Map/Gap.cs rename to Barotrauma/Source/Map/Gap.cs diff --git a/Subsurface/Source/Map/Hull.cs b/Barotrauma/Source/Map/Hull.cs similarity index 100% rename from Subsurface/Source/Map/Hull.cs rename to Barotrauma/Source/Map/Hull.cs diff --git a/Subsurface/Source/Map/IDamageable.cs b/Barotrauma/Source/Map/IDamageable.cs similarity index 100% rename from Subsurface/Source/Map/IDamageable.cs rename to Barotrauma/Source/Map/IDamageable.cs diff --git a/Subsurface/Source/Map/Levels/CaveGenerator.cs b/Barotrauma/Source/Map/Levels/CaveGenerator.cs similarity index 100% rename from Subsurface/Source/Map/Levels/CaveGenerator.cs rename to Barotrauma/Source/Map/Levels/CaveGenerator.cs diff --git a/Subsurface/Source/Map/Levels/Level.cs b/Barotrauma/Source/Map/Levels/Level.cs similarity index 100% rename from Subsurface/Source/Map/Levels/Level.cs rename to Barotrauma/Source/Map/Levels/Level.cs diff --git a/Subsurface/Source/Map/Levels/LevelGenerationParams.cs b/Barotrauma/Source/Map/Levels/LevelGenerationParams.cs similarity index 100% rename from Subsurface/Source/Map/Levels/LevelGenerationParams.cs rename to Barotrauma/Source/Map/Levels/LevelGenerationParams.cs diff --git a/Subsurface/Source/Map/Levels/LevelRenderer.cs b/Barotrauma/Source/Map/Levels/LevelRenderer.cs similarity index 100% rename from Subsurface/Source/Map/Levels/LevelRenderer.cs rename to Barotrauma/Source/Map/Levels/LevelRenderer.cs diff --git a/Subsurface/Source/Map/Levels/Ruins/BTRoom.cs b/Barotrauma/Source/Map/Levels/Ruins/BTRoom.cs similarity index 100% rename from Subsurface/Source/Map/Levels/Ruins/BTRoom.cs rename to Barotrauma/Source/Map/Levels/Ruins/BTRoom.cs diff --git a/Subsurface/Source/Map/Levels/Ruins/Corridor.cs b/Barotrauma/Source/Map/Levels/Ruins/Corridor.cs similarity index 100% rename from Subsurface/Source/Map/Levels/Ruins/Corridor.cs rename to Barotrauma/Source/Map/Levels/Ruins/Corridor.cs diff --git a/Subsurface/Source/Map/Levels/Ruins/RuinGenerator.cs b/Barotrauma/Source/Map/Levels/Ruins/RuinGenerator.cs similarity index 100% rename from Subsurface/Source/Map/Levels/Ruins/RuinGenerator.cs rename to Barotrauma/Source/Map/Levels/Ruins/RuinGenerator.cs diff --git a/Subsurface/Source/Map/Levels/Ruins/RuinStructure.cs b/Barotrauma/Source/Map/Levels/Ruins/RuinStructure.cs similarity index 100% rename from Subsurface/Source/Map/Levels/Ruins/RuinStructure.cs rename to Barotrauma/Source/Map/Levels/Ruins/RuinStructure.cs diff --git a/Subsurface/Source/Map/Levels/Voronoi.cs b/Barotrauma/Source/Map/Levels/Voronoi.cs similarity index 100% rename from Subsurface/Source/Map/Levels/Voronoi.cs rename to Barotrauma/Source/Map/Levels/Voronoi.cs diff --git a/Subsurface/Source/Map/Levels/VoronoiElements.cs b/Barotrauma/Source/Map/Levels/VoronoiElements.cs similarity index 100% rename from Subsurface/Source/Map/Levels/VoronoiElements.cs rename to Barotrauma/Source/Map/Levels/VoronoiElements.cs diff --git a/Subsurface/Source/Map/Levels/WaterRenderer.cs b/Barotrauma/Source/Map/Levels/WaterRenderer.cs similarity index 100% rename from Subsurface/Source/Map/Levels/WaterRenderer.cs rename to Barotrauma/Source/Map/Levels/WaterRenderer.cs diff --git a/Subsurface/Source/Map/Levels/WrappingWall.cs b/Barotrauma/Source/Map/Levels/WrappingWall.cs similarity index 100% rename from Subsurface/Source/Map/Levels/WrappingWall.cs rename to Barotrauma/Source/Map/Levels/WrappingWall.cs diff --git a/Subsurface/Source/Map/Lights/ConvexHull.cs b/Barotrauma/Source/Map/Lights/ConvexHull.cs similarity index 100% rename from Subsurface/Source/Map/Lights/ConvexHull.cs rename to Barotrauma/Source/Map/Lights/ConvexHull.cs diff --git a/Subsurface/Source/Map/Lights/LightManager.cs b/Barotrauma/Source/Map/Lights/LightManager.cs similarity index 100% rename from Subsurface/Source/Map/Lights/LightManager.cs rename to Barotrauma/Source/Map/Lights/LightManager.cs diff --git a/Subsurface/Source/Map/Lights/LightSource.cs b/Barotrauma/Source/Map/Lights/LightSource.cs similarity index 100% rename from Subsurface/Source/Map/Lights/LightSource.cs rename to Barotrauma/Source/Map/Lights/LightSource.cs diff --git a/Subsurface/Source/Map/LinkedSubmarine.cs b/Barotrauma/Source/Map/LinkedSubmarine.cs similarity index 100% rename from Subsurface/Source/Map/LinkedSubmarine.cs rename to Barotrauma/Source/Map/LinkedSubmarine.cs diff --git a/Subsurface/Source/Map/Map/Location.cs b/Barotrauma/Source/Map/Map/Location.cs similarity index 100% rename from Subsurface/Source/Map/Map/Location.cs rename to Barotrauma/Source/Map/Map/Location.cs diff --git a/Subsurface/Source/Map/Map/LocationType.cs b/Barotrauma/Source/Map/Map/LocationType.cs similarity index 100% rename from Subsurface/Source/Map/Map/LocationType.cs rename to Barotrauma/Source/Map/Map/LocationType.cs diff --git a/Subsurface/Source/Map/Map/Map.cs b/Barotrauma/Source/Map/Map/Map.cs similarity index 100% rename from Subsurface/Source/Map/Map/Map.cs rename to Barotrauma/Source/Map/Map/Map.cs diff --git a/Subsurface/Source/Map/MapEntity.cs b/Barotrauma/Source/Map/MapEntity.cs similarity index 100% rename from Subsurface/Source/Map/MapEntity.cs rename to Barotrauma/Source/Map/MapEntity.cs diff --git a/Subsurface/Source/Map/MapEntityPrefab.cs b/Barotrauma/Source/Map/MapEntityPrefab.cs similarity index 100% rename from Subsurface/Source/Map/MapEntityPrefab.cs rename to Barotrauma/Source/Map/MapEntityPrefab.cs diff --git a/Subsurface/Source/Map/Md5Hash.cs b/Barotrauma/Source/Map/Md5Hash.cs similarity index 100% rename from Subsurface/Source/Map/Md5Hash.cs rename to Barotrauma/Source/Map/Md5Hash.cs diff --git a/Subsurface/Source/Map/Structure.cs b/Barotrauma/Source/Map/Structure.cs similarity index 100% rename from Subsurface/Source/Map/Structure.cs rename to Barotrauma/Source/Map/Structure.cs diff --git a/Subsurface/Source/Map/StructurePrefab.cs b/Barotrauma/Source/Map/StructurePrefab.cs similarity index 100% rename from Subsurface/Source/Map/StructurePrefab.cs rename to Barotrauma/Source/Map/StructurePrefab.cs diff --git a/Subsurface/Source/Map/Submarine.cs b/Barotrauma/Source/Map/Submarine.cs similarity index 100% rename from Subsurface/Source/Map/Submarine.cs rename to Barotrauma/Source/Map/Submarine.cs diff --git a/Subsurface/Source/Map/SubmarineBody.cs b/Barotrauma/Source/Map/SubmarineBody.cs similarity index 100% rename from Subsurface/Source/Map/SubmarineBody.cs rename to Barotrauma/Source/Map/SubmarineBody.cs diff --git a/Subsurface/Source/Map/TransitionCinematic.cs b/Barotrauma/Source/Map/TransitionCinematic.cs similarity index 100% rename from Subsurface/Source/Map/TransitionCinematic.cs rename to Barotrauma/Source/Map/TransitionCinematic.cs diff --git a/Subsurface/Source/Map/WayPoint.cs b/Barotrauma/Source/Map/WayPoint.cs similarity index 100% rename from Subsurface/Source/Map/WayPoint.cs rename to Barotrauma/Source/Map/WayPoint.cs diff --git a/Subsurface/Source/Networking/BanList.cs b/Barotrauma/Source/Networking/BanList.cs similarity index 100% rename from Subsurface/Source/Networking/BanList.cs rename to Barotrauma/Source/Networking/BanList.cs diff --git a/Subsurface/Source/Networking/ChatMessage.cs b/Barotrauma/Source/Networking/ChatMessage.cs similarity index 100% rename from Subsurface/Source/Networking/ChatMessage.cs rename to Barotrauma/Source/Networking/ChatMessage.cs diff --git a/Subsurface/Source/Networking/Client.cs b/Barotrauma/Source/Networking/Client.cs similarity index 100% rename from Subsurface/Source/Networking/Client.cs rename to Barotrauma/Source/Networking/Client.cs diff --git a/Subsurface/Source/Networking/EntitySpawner.cs b/Barotrauma/Source/Networking/EntitySpawner.cs similarity index 100% rename from Subsurface/Source/Networking/EntitySpawner.cs rename to Barotrauma/Source/Networking/EntitySpawner.cs diff --git a/Subsurface/Source/Networking/FileTransfer/FileReceiver.cs b/Barotrauma/Source/Networking/FileTransfer/FileReceiver.cs similarity index 100% rename from Subsurface/Source/Networking/FileTransfer/FileReceiver.cs rename to Barotrauma/Source/Networking/FileTransfer/FileReceiver.cs diff --git a/Subsurface/Source/Networking/FileTransfer/FileSender.cs b/Barotrauma/Source/Networking/FileTransfer/FileSender.cs similarity index 100% rename from Subsurface/Source/Networking/FileTransfer/FileSender.cs rename to Barotrauma/Source/Networking/FileTransfer/FileSender.cs diff --git a/Subsurface/Source/Networking/GameClient.cs b/Barotrauma/Source/Networking/GameClient.cs similarity index 100% rename from Subsurface/Source/Networking/GameClient.cs rename to Barotrauma/Source/Networking/GameClient.cs diff --git a/Subsurface/Source/Networking/GameServer.cs b/Barotrauma/Source/Networking/GameServer.cs similarity index 100% rename from Subsurface/Source/Networking/GameServer.cs rename to Barotrauma/Source/Networking/GameServer.cs diff --git a/Subsurface/Source/Networking/GameServerLogin.cs b/Barotrauma/Source/Networking/GameServerLogin.cs similarity index 100% rename from Subsurface/Source/Networking/GameServerLogin.cs rename to Barotrauma/Source/Networking/GameServerLogin.cs diff --git a/Subsurface/Source/Networking/GameServerSettings.cs b/Barotrauma/Source/Networking/GameServerSettings.cs similarity index 100% rename from Subsurface/Source/Networking/GameServerSettings.cs rename to Barotrauma/Source/Networking/GameServerSettings.cs diff --git a/Subsurface/Source/Networking/INetSerializable.cs b/Barotrauma/Source/Networking/INetSerializable.cs similarity index 100% rename from Subsurface/Source/Networking/INetSerializable.cs rename to Barotrauma/Source/Networking/INetSerializable.cs diff --git a/Subsurface/Source/Networking/NetBufferExtensions.cs b/Barotrauma/Source/Networking/NetBufferExtensions.cs similarity index 100% rename from Subsurface/Source/Networking/NetBufferExtensions.cs rename to Barotrauma/Source/Networking/NetBufferExtensions.cs diff --git a/Subsurface/Source/Networking/NetConfig.cs b/Barotrauma/Source/Networking/NetConfig.cs similarity index 100% rename from Subsurface/Source/Networking/NetConfig.cs rename to Barotrauma/Source/Networking/NetConfig.cs diff --git a/Subsurface/Source/Networking/NetEntityEvent/ClientEntityEventManager.cs b/Barotrauma/Source/Networking/NetEntityEvent/ClientEntityEventManager.cs similarity index 100% rename from Subsurface/Source/Networking/NetEntityEvent/ClientEntityEventManager.cs rename to Barotrauma/Source/Networking/NetEntityEvent/ClientEntityEventManager.cs diff --git a/Subsurface/Source/Networking/NetEntityEvent/NetEntityEvent.cs b/Barotrauma/Source/Networking/NetEntityEvent/NetEntityEvent.cs similarity index 100% rename from Subsurface/Source/Networking/NetEntityEvent/NetEntityEvent.cs rename to Barotrauma/Source/Networking/NetEntityEvent/NetEntityEvent.cs diff --git a/Subsurface/Source/Networking/NetEntityEvent/NetEntityEventManager.cs b/Barotrauma/Source/Networking/NetEntityEvent/NetEntityEventManager.cs similarity index 100% rename from Subsurface/Source/Networking/NetEntityEvent/NetEntityEventManager.cs rename to Barotrauma/Source/Networking/NetEntityEvent/NetEntityEventManager.cs diff --git a/Subsurface/Source/Networking/NetEntityEvent/ServerEntityEventManager.cs b/Barotrauma/Source/Networking/NetEntityEvent/ServerEntityEventManager.cs similarity index 100% rename from Subsurface/Source/Networking/NetEntityEvent/ServerEntityEventManager.cs rename to Barotrauma/Source/Networking/NetEntityEvent/ServerEntityEventManager.cs diff --git a/Subsurface/Source/Networking/NetIdUtils.cs b/Barotrauma/Source/Networking/NetIdUtils.cs similarity index 100% rename from Subsurface/Source/Networking/NetIdUtils.cs rename to Barotrauma/Source/Networking/NetIdUtils.cs diff --git a/Subsurface/Source/Networking/NetStats.cs b/Barotrauma/Source/Networking/NetStats.cs similarity index 100% rename from Subsurface/Source/Networking/NetStats.cs rename to Barotrauma/Source/Networking/NetStats.cs diff --git a/Subsurface/Source/Networking/NetworkMember.cs b/Barotrauma/Source/Networking/NetworkMember.cs similarity index 100% rename from Subsurface/Source/Networking/NetworkMember.cs rename to Barotrauma/Source/Networking/NetworkMember.cs diff --git a/Subsurface/Source/Networking/RespawnManager.cs b/Barotrauma/Source/Networking/RespawnManager.cs similarity index 100% rename from Subsurface/Source/Networking/RespawnManager.cs rename to Barotrauma/Source/Networking/RespawnManager.cs diff --git a/Subsurface/Source/Networking/ServerLog.cs b/Barotrauma/Source/Networking/ServerLog.cs similarity index 100% rename from Subsurface/Source/Networking/ServerLog.cs rename to Barotrauma/Source/Networking/ServerLog.cs diff --git a/Subsurface/Source/Networking/Voting.cs b/Barotrauma/Source/Networking/Voting.cs similarity index 100% rename from Subsurface/Source/Networking/Voting.cs rename to Barotrauma/Source/Networking/Voting.cs diff --git a/Subsurface/Source/Networking/WhiteList.cs b/Barotrauma/Source/Networking/WhiteList.cs similarity index 100% rename from Subsurface/Source/Networking/WhiteList.cs rename to Barotrauma/Source/Networking/WhiteList.cs diff --git a/Subsurface/Source/Networking/disabled/FileStreamReceiver.cs b/Barotrauma/Source/Networking/disabled/FileStreamReceiver.cs similarity index 100% rename from Subsurface/Source/Networking/disabled/FileStreamReceiver.cs rename to Barotrauma/Source/Networking/disabled/FileStreamReceiver.cs diff --git a/Subsurface/Source/Networking/disabled/FileStreamSender.cs b/Barotrauma/Source/Networking/disabled/FileStreamSender.cs similarity index 100% rename from Subsurface/Source/Networking/disabled/FileStreamSender.cs rename to Barotrauma/Source/Networking/disabled/FileStreamSender.cs diff --git a/Subsurface/Source/Networking/disabled/NetworkEvent.cs b/Barotrauma/Source/Networking/disabled/NetworkEvent.cs similarity index 100% rename from Subsurface/Source/Networking/disabled/NetworkEvent.cs rename to Barotrauma/Source/Networking/disabled/NetworkEvent.cs diff --git a/Subsurface/Source/Networking/disabled/ReliableSender.cs b/Barotrauma/Source/Networking/disabled/ReliableSender.cs similarity index 100% rename from Subsurface/Source/Networking/disabled/ReliableSender.cs rename to Barotrauma/Source/Networking/disabled/ReliableSender.cs diff --git a/Subsurface/Source/Particles/Particle.cs b/Barotrauma/Source/Particles/Particle.cs similarity index 100% rename from Subsurface/Source/Particles/Particle.cs rename to Barotrauma/Source/Particles/Particle.cs diff --git a/Subsurface/Source/Particles/ParticleEmitter.cs b/Barotrauma/Source/Particles/ParticleEmitter.cs similarity index 100% rename from Subsurface/Source/Particles/ParticleEmitter.cs rename to Barotrauma/Source/Particles/ParticleEmitter.cs diff --git a/Subsurface/Source/Particles/ParticleManager.cs b/Barotrauma/Source/Particles/ParticleManager.cs similarity index 100% rename from Subsurface/Source/Particles/ParticleManager.cs rename to Barotrauma/Source/Particles/ParticleManager.cs diff --git a/Subsurface/Source/Particles/ParticlePrefab.cs b/Barotrauma/Source/Particles/ParticlePrefab.cs similarity index 100% rename from Subsurface/Source/Particles/ParticlePrefab.cs rename to Barotrauma/Source/Particles/ParticlePrefab.cs diff --git a/Subsurface/Source/Physics/Physics.cs b/Barotrauma/Source/Physics/Physics.cs similarity index 100% rename from Subsurface/Source/Physics/Physics.cs rename to Barotrauma/Source/Physics/Physics.cs diff --git a/Subsurface/Source/Physics/PhysicsBody.cs b/Barotrauma/Source/Physics/PhysicsBody.cs similarity index 100% rename from Subsurface/Source/Physics/PhysicsBody.cs rename to Barotrauma/Source/Physics/PhysicsBody.cs diff --git a/Subsurface/Source/PlayerInput.cs b/Barotrauma/Source/PlayerInput.cs similarity index 100% rename from Subsurface/Source/PlayerInput.cs rename to Barotrauma/Source/PlayerInput.cs diff --git a/Subsurface/Source/Program.cs b/Barotrauma/Source/Program.cs similarity index 100% rename from Subsurface/Source/Program.cs rename to Barotrauma/Source/Program.cs diff --git a/Subsurface/Source/Properties.cs b/Barotrauma/Source/Properties.cs similarity index 100% rename from Subsurface/Source/Properties.cs rename to Barotrauma/Source/Properties.cs diff --git a/Subsurface/Source/Screens/BlurEffect.cs b/Barotrauma/Source/Screens/BlurEffect.cs similarity index 100% rename from Subsurface/Source/Screens/BlurEffect.cs rename to Barotrauma/Source/Screens/BlurEffect.cs diff --git a/Subsurface/Source/Screens/EditCharacterScreen.cs b/Barotrauma/Source/Screens/EditCharacterScreen.cs similarity index 100% rename from Subsurface/Source/Screens/EditCharacterScreen.cs rename to Barotrauma/Source/Screens/EditCharacterScreen.cs diff --git a/Subsurface/Source/Screens/EditMapScreen.cs b/Barotrauma/Source/Screens/EditMapScreen.cs similarity index 100% rename from Subsurface/Source/Screens/EditMapScreen.cs rename to Barotrauma/Source/Screens/EditMapScreen.cs diff --git a/Subsurface/Source/Screens/GameScreen.cs b/Barotrauma/Source/Screens/GameScreen.cs similarity index 100% rename from Subsurface/Source/Screens/GameScreen.cs rename to Barotrauma/Source/Screens/GameScreen.cs diff --git a/Subsurface/Source/Screens/LobbyScreen.cs b/Barotrauma/Source/Screens/LobbyScreen.cs similarity index 100% rename from Subsurface/Source/Screens/LobbyScreen.cs rename to Barotrauma/Source/Screens/LobbyScreen.cs diff --git a/Subsurface/Source/Screens/MainMenuScreen.cs b/Barotrauma/Source/Screens/MainMenuScreen.cs similarity index 100% rename from Subsurface/Source/Screens/MainMenuScreen.cs rename to Barotrauma/Source/Screens/MainMenuScreen.cs diff --git a/Subsurface/Source/Screens/NetLobbyScreen.cs b/Barotrauma/Source/Screens/NetLobbyScreen.cs similarity index 100% rename from Subsurface/Source/Screens/NetLobbyScreen.cs rename to Barotrauma/Source/Screens/NetLobbyScreen.cs diff --git a/Subsurface/Source/Screens/Screen.cs b/Barotrauma/Source/Screens/Screen.cs similarity index 100% rename from Subsurface/Source/Screens/Screen.cs rename to Barotrauma/Source/Screens/Screen.cs diff --git a/Subsurface/Source/Screens/ServerListScreen.cs b/Barotrauma/Source/Screens/ServerListScreen.cs similarity index 100% rename from Subsurface/Source/Screens/ServerListScreen.cs rename to Barotrauma/Source/Screens/ServerListScreen.cs diff --git a/Subsurface/Source/Screens/sygwkgy0.iv5 b/Barotrauma/Source/Screens/sygwkgy0.iv5 similarity index 100% rename from Subsurface/Source/Screens/sygwkgy0.iv5 rename to Barotrauma/Source/Screens/sygwkgy0.iv5 diff --git a/Subsurface/Source/Sounds/OggSound.cs b/Barotrauma/Source/Sounds/OggSound.cs similarity index 100% rename from Subsurface/Source/Sounds/OggSound.cs rename to Barotrauma/Source/Sounds/OggSound.cs diff --git a/Subsurface/Source/Sounds/OggStream.cs b/Barotrauma/Source/Sounds/OggStream.cs similarity index 100% rename from Subsurface/Source/Sounds/OggStream.cs rename to Barotrauma/Source/Sounds/OggStream.cs diff --git a/Subsurface/Source/Sounds/Sound.cs b/Barotrauma/Source/Sounds/Sound.cs similarity index 100% rename from Subsurface/Source/Sounds/Sound.cs rename to Barotrauma/Source/Sounds/Sound.cs diff --git a/Subsurface/Source/Sounds/SoundManager.cs b/Barotrauma/Source/Sounds/SoundManager.cs similarity index 100% rename from Subsurface/Source/Sounds/SoundManager.cs rename to Barotrauma/Source/Sounds/SoundManager.cs diff --git a/Subsurface/Source/Sounds/SoundPlayer.cs b/Barotrauma/Source/Sounds/SoundPlayer.cs similarity index 100% rename from Subsurface/Source/Sounds/SoundPlayer.cs rename to Barotrauma/Source/Sounds/SoundPlayer.cs diff --git a/Subsurface/Source/Sprite.cs b/Barotrauma/Source/Sprite.cs similarity index 100% rename from Subsurface/Source/Sprite.cs rename to Barotrauma/Source/Sprite.cs diff --git a/Subsurface/Source/SpriteSheet.cs b/Barotrauma/Source/SpriteSheet.cs similarity index 100% rename from Subsurface/Source/SpriteSheet.cs rename to Barotrauma/Source/SpriteSheet.cs diff --git a/Subsurface/Source/Timing.cs b/Barotrauma/Source/Timing.cs similarity index 100% rename from Subsurface/Source/Timing.cs rename to Barotrauma/Source/Timing.cs diff --git a/Subsurface/Source/Utils/Homoglyphs.cs b/Barotrauma/Source/Utils/Homoglyphs.cs similarity index 100% rename from Subsurface/Source/Utils/Homoglyphs.cs rename to Barotrauma/Source/Utils/Homoglyphs.cs diff --git a/Subsurface/Source/Utils/MTRandom.cs b/Barotrauma/Source/Utils/MTRandom.cs similarity index 100% rename from Subsurface/Source/Utils/MTRandom.cs rename to Barotrauma/Source/Utils/MTRandom.cs diff --git a/Subsurface/Source/Utils/MathUtils.cs b/Barotrauma/Source/Utils/MathUtils.cs similarity index 100% rename from Subsurface/Source/Utils/MathUtils.cs rename to Barotrauma/Source/Utils/MathUtils.cs diff --git a/Subsurface/Source/Utils/Rand.cs b/Barotrauma/Source/Utils/Rand.cs similarity index 100% rename from Subsurface/Source/Utils/Rand.cs rename to Barotrauma/Source/Utils/Rand.cs diff --git a/Subsurface/Source/Utils/SaveUtil.cs b/Barotrauma/Source/Utils/SaveUtil.cs similarity index 100% rename from Subsurface/Source/Utils/SaveUtil.cs rename to Barotrauma/Source/Utils/SaveUtil.cs diff --git a/Subsurface/Source/Utils/TextureLoader.cs b/Barotrauma/Source/Utils/TextureLoader.cs similarity index 100% rename from Subsurface/Source/Utils/TextureLoader.cs rename to Barotrauma/Source/Utils/TextureLoader.cs diff --git a/Subsurface/Source/Utils/ToolBox.cs b/Barotrauma/Source/Utils/ToolBox.cs similarity index 100% rename from Subsurface/Source/Utils/ToolBox.cs rename to Barotrauma/Source/Utils/ToolBox.cs diff --git a/Subsurface/Source/Utils/UpdaterUtil.cs b/Barotrauma/Source/Utils/UpdaterUtil.cs similarity index 100% rename from Subsurface/Source/Utils/UpdaterUtil.cs rename to Barotrauma/Source/Utils/UpdaterUtil.cs diff --git a/Subsurface/Submarines/Aegir Mark III.sub b/Barotrauma/Submarines/Aegir Mark III.sub similarity index 100% rename from Subsurface/Submarines/Aegir Mark III.sub rename to Barotrauma/Submarines/Aegir Mark III.sub diff --git a/Subsurface/Submarines/Nehalennia.sub b/Barotrauma/Submarines/Nehalennia.sub similarity index 100% rename from Subsurface/Submarines/Nehalennia.sub rename to Barotrauma/Submarines/Nehalennia.sub diff --git a/Subsurface/Submarines/The Blind Carp.sub b/Barotrauma/Submarines/The Blind Carp.sub similarity index 100% rename from Subsurface/Submarines/The Blind Carp.sub rename to Barotrauma/Submarines/The Blind Carp.sub diff --git a/Subsurface/Submarines/The Nibbler.sub b/Barotrauma/Submarines/The Nibbler.sub similarity index 100% rename from Subsurface/Submarines/The Nibbler.sub rename to Barotrauma/Submarines/The Nibbler.sub diff --git a/Subsurface/Submarines/TutorialSub.sub b/Barotrauma/Submarines/TutorialSub.sub similarity index 100% rename from Subsurface/Submarines/TutorialSub.sub rename to Barotrauma/Submarines/TutorialSub.sub diff --git a/Subsurface/Submarines/Vellamo.sub b/Barotrauma/Submarines/Vellamo.sub similarity index 100% rename from Subsurface/Submarines/Vellamo.sub rename to Barotrauma/Submarines/Vellamo.sub diff --git a/Subsurface/changelog.txt b/Barotrauma/changelog.txt similarity index 100% rename from Subsurface/changelog.txt rename to Barotrauma/changelog.txt diff --git a/Subsurface/config.xml b/Barotrauma/config.xml similarity index 100% rename from Subsurface/config.xml rename to Barotrauma/config.xml diff --git a/Subsurface/freetype6.dll b/Barotrauma/freetype6.dll similarity index 100% rename from Subsurface/freetype6.dll rename to Barotrauma/freetype6.dll diff --git a/Subsurface/packages.config b/Barotrauma/packages.config similarity index 100% rename from Subsurface/packages.config rename to Barotrauma/packages.config diff --git a/Subsurface/readme.txt b/Barotrauma/readme.txt similarity index 100% rename from Subsurface/readme.txt rename to Barotrauma/readme.txt diff --git a/Subsurface/wrap_oal.dll b/Barotrauma/wrap_oal.dll similarity index 100% rename from Subsurface/wrap_oal.dll rename to Barotrauma/wrap_oal.dll diff --git a/Subsurface_Solution.sln b/Barotrauma_Solution.sln similarity index 99% rename from Subsurface_Solution.sln rename to Barotrauma_Solution.sln index 33d7b3913..4bf948c25 100644 --- a/Subsurface_Solution.sln +++ b/Barotrauma_Solution.sln @@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 14 VisualStudioVersion = 14.0.25420.1 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Barotrauma", "Subsurface\Barotrauma.csproj", "{008C0F83-E914-4966-9135-EA885059EDD8}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Barotrauma", "Barotrauma\Barotrauma.csproj", "{008C0F83-E914-4966-9135-EA885059EDD8}" ProjectSection(ProjectDependencies) = postProject {C293DB32-FA42-486D-B128-5A12522FAE4E} = {C293DB32-FA42-486D-B128-5A12522FAE4E} EndProjectSection diff --git a/NETCODE REWRITE DESIGN PLAN.html b/NETCODE REWRITE DESIGN PLAN.html deleted file mode 100644 index 358f87832..000000000 --- a/NETCODE REWRITE DESIGN PLAN.html +++ /dev/null @@ -1,56 +0,0 @@ - - - -Netcode Rewrite Design Plan - - - -

NETCODE REWRITE DESIGN PLAN

-

Problems with current netcode

-
    -
  • Packet rate is a bit too high
  • -
  • Heavy use of reliable channel
  • -
  • Hacking is really easy
  • -
  • Lag is really hard to hide
  • -
  • It'll eventually be unusable because of new stuff being added
  • -
  • Client and server shares code, requiring security checks on the server's side which are too easy to miss
  • -
-

Goals of rewrite

-
    -
  • Greatly reduce use of reliable channel, preferring redundancy instead
  • -
  • Authoritative server; less hacking
  • -
  • More secure code
  • -
  • Maybe better interpolation; make lag less noticeable
  • -
  • Make client and server code as isolated from each other as possible
  • -
-

How new netcode will work

-

Authentication

-Login encryption consists of sending a hash of hashed password with the nonce appended. -
-
Authentication will be split into two steps: -
    -
  • Auth Request: Clients don't know whether they need to use a password until the server tells them. Instead of making the client send an incorrect login packet and bring up a login box after the fact, get them to ask the server first. -
    Server will tell the player if they need a password, in that case they'll be given the random Nonce integer for encryption.
  • -
  • Init Request: Once the auth request goes through, the client will need to send the password with encryption, or will just login automatically if it isn't required.
    -If the client sends an incorrect password, rather than immediately closing the connection, the server will give the client a few chances to retry.
    -If a client connects with the same name as an existing client and has the same IP as it, server will assume the old connection is dead and replace it.
  • -
- -

Syncing data

-Rather than sending data (chat messages, character inputs, etc) with Lidgren's reliability, changes are stacked on each peer's side and given IDs. -
Each peer will tell the other which was the last ID they got. The other peer will send all messages in their stack that are newer than that ID. -
If a peer gets data that it already has, it'll discard it. The other peer will eventually know that it has to stop sending this data. -
-
In the case of player input, the server will freeze each character until it receives input. Once it does, it'll move the player accordingly. -
Clients WILL NOT send positions to the server. Instead, they'll send a queue with inputs from the last frames that haven't been synced, with a limit of about 100 inputs or so. -
Since server will be receiving all inputs from the player, a normal client should not have too much desyncing if their connection is good enough. -
Server will send each client their own positions, because that's the server's decision, not the client's. The client will remember its last 100 predicted positions, so when it receives this data from the server it'll compare with old data and compensate only if there's a big enough difference with that old position. -
-
If none of this makes sense, ask me on Discord and I'll reply whenever I'm on. -
      - juan - - \ No newline at end of file From ce69e155fd2ba56c04fbae4671e4b7464a1c5b94 Mon Sep 17 00:00:00 2001 From: Regalis Date: Sun, 4 Jun 2017 16:02:48 +0300 Subject: [PATCH 38/56] Fixed GUITickBoxes appearing unchecked if they're set to the checked state when interaction with the box has been disabled (or vice versa) --- Barotrauma/Source/GUI/GUITickBox.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Barotrauma/Source/GUI/GUITickBox.cs b/Barotrauma/Source/GUI/GUITickBox.cs index 1f895dfd3..7e24f58ef 100644 --- a/Barotrauma/Source/GUI/GUITickBox.cs +++ b/Barotrauma/Source/GUI/GUITickBox.cs @@ -1,13 +1,12 @@ using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; -using Microsoft.Xna.Framework.Input; namespace Barotrauma { public class GUITickBox : GUIComponent { - GUIFrame box; - GUITextBlock text; + private GUIFrame box; + private GUITextBlock text; public delegate bool OnSelectedHandler(GUITickBox obj); public OnSelectedHandler OnSelected; @@ -22,6 +21,8 @@ namespace Barotrauma if (value == selected) return; selected = value; state = (selected) ? ComponentState.Selected : ComponentState.None; + + box.State = state; } } @@ -107,9 +108,9 @@ namespace Barotrauma public override void Update(float deltaTime) { - if (!Visible || !Enabled) return; + if (!Visible) return; - if (MouseOn == this) + if (MouseOn == this && Enabled) { box.State = ComponentState.Hover; From 0864505fda4bf534b12f6ceb8722a7d3768300ba Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Sun, 4 Jun 2017 16:21:58 +0300 Subject: [PATCH 39/56] Skill level syncing isn't dependent on the order of a character's skills. The skills are sorted in a descending order based on the skill level, which may cause the order to differ between the server and the clients after the initial random skill levels have been assigned. --- .../Source/Characters/CharacterNetworking.cs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/Barotrauma/Source/Characters/CharacterNetworking.cs b/Barotrauma/Source/Characters/CharacterNetworking.cs index 43884d168..00b8e7785 100644 --- a/Barotrauma/Source/Characters/CharacterNetworking.cs +++ b/Barotrauma/Source/Characters/CharacterNetworking.cs @@ -741,6 +741,7 @@ namespace Barotrauma msg.Write((byte)info.Job.Skills.Count); foreach (Skill skill in info.Job.Skills) { + msg.Write(skill.Name); msg.WriteRangedInteger(0, 100, MathHelper.Clamp(skill.Level, 0, 100)); } } @@ -787,14 +788,17 @@ namespace Barotrauma string jobName = inc.ReadString(); JobPrefab jobPrefab = null; - List skillLevels = new List(); + Dictionary skillLevels = new Dictionary(); if (!string.IsNullOrEmpty(jobName)) { jobPrefab = JobPrefab.List.Find(jp => jp.Name == jobName); int skillCount = inc.ReadByte(); for (int i = 0; i < skillCount; i++) { - skillLevels.Add(inc.ReadRangedInteger(0, 100)); + string skillName = inc.ReadString(); + int skillLevel = inc.ReadRangedInteger(0, 100); + + skillLevels.Add(skillName, skillLevel); } } @@ -807,9 +811,15 @@ namespace Barotrauma System.Diagnostics.Debug.Assert(skillLevels.Count == ch.Job.Skills.Count); if (ch.Job != null) { - for (int i = 0; i < skillLevels.Count && i < ch.Job.Skills.Count; i++) + foreach (KeyValuePair skill in skillLevels) { - ch.Job.Skills[i].Level = skillLevels[i]; + Skill matchingSkill = ch.Job.Skills.Find(s => s.Name == skill.Key); + if (matchingSkill == null) + { + DebugConsole.ThrowError("Skill \""+skill.Key+"\" not found in character \""+newName+"\""); + continue; + } + matchingSkill.Level = skill.Value; } } From 24424cfb51ca5e7e74a77379cbd0daf2e8d9806f Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Sun, 4 Jun 2017 17:54:54 +0300 Subject: [PATCH 40/56] IP address is logged in all login error messages and the errors are logged to both the debug console and the server log --- .../Source/Networking/GameServerLogin.cs | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/Barotrauma/Source/Networking/GameServerLogin.cs b/Barotrauma/Source/Networking/GameServerLogin.cs index eca8a0ed7..9fde7eeaa 100644 --- a/Barotrauma/Source/Networking/GameServerLogin.cs +++ b/Barotrauma/Source/Networking/GameServerLogin.cs @@ -104,6 +104,9 @@ namespace Barotrauma.Networking //disconnect and ban after too many failed attempts banList.BanPlayer("Unnamed", unauthClient.Connection.RemoteEndPoint.Address.ToString()); DisconnectUnauthClient(inc, unauthClient, "Too many failed login attempts. You have been automatically banned from the server."); + + Log(inc.SenderConnection.RemoteEndPoint.Address.ToString() + " has been banned from the server (too many wrong passwords)", ServerLog.MessageType.Error); + DebugConsole.NewMessage(inc.SenderConnection.RemoteEndPoint.Address.ToString() + " has been banned from the server (too many wrong passwords)", Color.Red); return; } else @@ -112,6 +115,8 @@ namespace Barotrauma.Networking NetOutgoingMessage reject = server.CreateMessage(); reject.Write((byte)ServerPacketHeader.AUTH_FAILURE); reject.Write("Wrong password! You have "+Convert.ToString(4-unauthClient.failedAttempts)+" more attempts before you're banned from the server."); + Log(inc.SenderConnection.RemoteEndPoint.Address.ToString() + " failed to join the server (incorrect password)", ServerLog.MessageType.Error); + DebugConsole.NewMessage(inc.SenderConnection.RemoteEndPoint.Address.ToString() + " failed to join the server (incorrect password)", Color.Red); server.SendMessage(reject, unauthClient.Connection, NetDeliveryMethod.Unreliable); unauthClient.AuthTimer = 10.0f; return; @@ -128,25 +133,30 @@ namespace Barotrauma.Networking DisconnectUnauthClient(inc, unauthClient, "You need a name."); Log(inc.SenderConnection.RemoteEndPoint.Address.ToString() + " couldn't join the server (no name given)", ServerLog.MessageType.Error); + DebugConsole.NewMessage(inc.SenderConnection.RemoteEndPoint.Address.ToString() + " couldn't join the server (no name given)", Color.Red); return; } if (clVersion != GameMain.Version.ToString()) { DisconnectUnauthClient(inc, unauthClient, "Version " + GameMain.Version + " required to connect to the server (Your version: " + clVersion + ")"); - Log(clName + " couldn't join the server (wrong game version)", ServerLog.MessageType.Error); + + Log(clName + " (" + inc.SenderConnection.RemoteEndPoint.Address.ToString() + ") couldn't join the server (wrong game version)", ServerLog.MessageType.Error); + DebugConsole.NewMessage(clName + " (" + inc.SenderConnection.RemoteEndPoint.Address.ToString() + ") couldn't join the server (wrong game version)", Color.Red); return; } if (clPackageName != GameMain.SelectedPackage.Name) { DisconnectUnauthClient(inc, unauthClient, "Your content package (" + clPackageName + ") doesn't match the server's version (" + GameMain.SelectedPackage.Name + ")"); - Log(clName + " couldn't join the server (wrong content package name)", ServerLog.MessageType.Error); + Log(clName + " (" + inc.SenderConnection.RemoteEndPoint.Address.ToString() + ") couldn't join the server (wrong content package name)", ServerLog.MessageType.Error); + DebugConsole.NewMessage(clName + " (" + inc.SenderConnection.RemoteEndPoint.Address.ToString() + ") couldn't join the server (wrong content package name)", Color.Red); return; } if (clPackageHash != GameMain.SelectedPackage.MD5hash.Hash) { DisconnectUnauthClient(inc, unauthClient, "Your content package (MD5: " + clPackageHash + ") doesn't match the server's version (MD5: " + GameMain.SelectedPackage.MD5hash.Hash + ")"); - Log(clName + " couldn't join the server (wrong content package hash)", ServerLog.MessageType.Error); + Log(clName + " (" + inc.SenderConnection.RemoteEndPoint.Address.ToString() + ") couldn't join the server (wrong content package hash)", ServerLog.MessageType.Error); + DebugConsole.NewMessage(clName + " (" + inc.SenderConnection.RemoteEndPoint.Address.ToString() + ") couldn't join the server (wrong content package hash)", Color.Red); return; } @@ -154,18 +164,21 @@ namespace Barotrauma.Networking { DisconnectUnauthClient(inc, unauthClient, "You're not in this server's whitelist."); Log(clName + " (" + inc.SenderConnection.RemoteEndPoint.Address.ToString() + ") couldn't join the server (not in whitelist)", ServerLog.MessageType.Error); + DebugConsole.NewMessage(clName + " (" + inc.SenderConnection.RemoteEndPoint.Address.ToString() + ") couldn't join the server (not in whitelist)", Color.Red); return; } if (!Client.IsValidName(clName)) { DisconnectUnauthClient(inc, unauthClient, "Your name contains illegal symbols."); Log(clName + " (" + inc.SenderConnection.RemoteEndPoint.Address.ToString() + ") couldn't join the server (invalid name)", ServerLog.MessageType.Error); + DebugConsole.NewMessage(clName + " (" + inc.SenderConnection.RemoteEndPoint.Address.ToString() + ") couldn't join the server (invalid name)", Color.Red); return; } if (clName.ToLower() == Name.ToLower()) { DisconnectUnauthClient(inc, unauthClient, "That name is taken."); Log(clName + " (" + inc.SenderConnection.RemoteEndPoint.Address.ToString() + ") couldn't join the server (name taken by the server)", ServerLog.MessageType.Error); + DebugConsole.NewMessage(clName + " (" + inc.SenderConnection.RemoteEndPoint.Address.ToString() + ") couldn't join the server (name taken by the server)", Color.Red); return; } Client nameTaken = ConnectedClients.Find(c => c.name.ToLower() == clName.ToLower()); @@ -186,6 +199,7 @@ namespace Barotrauma.Networking //can't authorize this client DisconnectUnauthClient(inc, unauthClient, "That name is taken."); Log(clName + " (" + inc.SenderConnection.RemoteEndPoint.Address.ToString() + ") couldn't join the server (name already taken)", ServerLog.MessageType.Error); + DebugConsole.NewMessage(clName + " (" + inc.SenderConnection.RemoteEndPoint.Address.ToString() + ") couldn't join the server (name already taken)", Color.Red); return; } } @@ -199,7 +213,6 @@ namespace Barotrauma.Networking ConnectedClients.Add(newClient); GameMain.NetLobbyScreen.AddPlayer(newClient.name); - GameMain.Server.SendChatMessage(clName + " has joined the server.", ChatMessageType.Server, null); var savedPermissions = clientPermissions.Find(cp => cp.IP == newClient.Connection.RemoteEndPoint.Address.ToString()); @@ -212,7 +225,7 @@ namespace Barotrauma.Networking newClient.SetPermissions(ClientPermissions.None); } } - + private void DisconnectUnauthClient(NetIncomingMessage inc, UnauthenticatedClient unauthClient, string reason) { inc.SenderConnection.Disconnect(reason); From 55cb56da59611c459d2569b759dd77ac95e0a3d1 Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Sun, 4 Jun 2017 18:04:37 +0300 Subject: [PATCH 41/56] Server ends the round if all characters are either dead or unconscious when autorestart is on (instead of waiting for everyone to be dead) --- Barotrauma/Source/Networking/GameServer.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Barotrauma/Source/Networking/GameServer.cs b/Barotrauma/Source/Networking/GameServer.cs index 8e98daa73..936cecb39 100644 --- a/Barotrauma/Source/Networking/GameServer.cs +++ b/Barotrauma/Source/Networking/GameServer.cs @@ -402,9 +402,9 @@ namespace Barotrauma.Networking entityEventManager.Update(connectedClients); - bool isCrewDead = - connectedClients.Find(c => c.Character != null && !c.Character.IsDead)==null && - (myCharacter == null || myCharacter.IsDead); + bool isCrewDead = + connectedClients.All(c => c.Character == null || c.Character.IsDead || c.Character.IsUnconscious) && + (myCharacter == null || myCharacter.IsDead || myCharacter.IsUnconscious); //restart if all characters are dead or submarine is at the end of the level if ((autoRestart && isCrewDead) From 72ecba8e5b96c7431e8e513f4ba992cc017cdfbe Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Sun, 4 Jun 2017 19:56:57 +0300 Subject: [PATCH 42/56] Fixed message fragmentation issues caused by initial lobby syncing. The size of the initial message exceeds MTU if the host has a large number of subs, and apparently Lidgren doesn't attempt to handle fragmenting by default when sending the messages with the unreliable delivery method. Now the initial syncing message is sent only once with the reliable delivery method which should be able to handle fragmented messages. --- Barotrauma/Source/Networking/GameServer.cs | 26 ++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/Barotrauma/Source/Networking/GameServer.cs b/Barotrauma/Source/Networking/GameServer.cs index 936cecb39..32fc800b0 100644 --- a/Barotrauma/Source/Networking/GameServer.cs +++ b/Barotrauma/Source/Networking/GameServer.cs @@ -922,6 +922,8 @@ namespace Barotrauma.Networking private void ClientWriteLobby(Client c) { + bool isInitialUpdate = false; + NetOutgoingMessage outmsg = server.CreateMessage(); outmsg.Write((byte)ServerPacketHeader.UPDATE_LOBBY); @@ -939,6 +941,7 @@ namespace Barotrauma.Networking outmsg.Write(c.lastRecvGeneralUpdate < 1); if (c.lastRecvGeneralUpdate < 1) { + isInitialUpdate = true; ClientWriteInitial(c, outmsg); } outmsg.Write((GameMain.NetLobbyScreen.SubList.SelectedData as Submarine).Name); @@ -987,12 +990,27 @@ namespace Barotrauma.Networking outmsg.Write((byte)ServerNetObject.END_OF_MESSAGE); - if (outmsg.LengthBytes > config.MaximumTransmissionUnit) + if (isInitialUpdate) { - DebugConsole.ThrowError("Maximum packet size exceeded (" + outmsg.LengthBytes + " > " + config.MaximumTransmissionUnit + ")"); - } + //the initial update may be very large if the host has a large number + //of submarine files, so the message may have to be fragmented - server.SendMessage(outmsg, c.Connection, NetDeliveryMethod.Unreliable); + //unreliable messages don't play nicely with fragmenting, so we'll send the message reliably + server.SendMessage(outmsg, c.Connection, NetDeliveryMethod.ReliableUnordered); + + //and assume the message was received, so we don't have to keep resending + //these large initial messages until the client acknowledges receiving them + c.lastRecvGeneralUpdate++; + } + else + { + if (outmsg.LengthBytes > config.MaximumTransmissionUnit) + { + DebugConsole.ThrowError("Maximum packet size exceeded (" + outmsg.LengthBytes + " > " + config.MaximumTransmissionUnit + ")"); + } + + server.SendMessage(outmsg, c.Connection, NetDeliveryMethod.Unreliable); + } } public bool StartGameClicked(GUIButton button, object obj) From e3016fbbcfa82ccbab088414e11dee98c6018fd9 Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Sun, 4 Jun 2017 21:24:36 +0300 Subject: [PATCH 43/56] Legalese version of the EULA --- EULA.txt | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/EULA.txt b/EULA.txt index 9d020e92a..9b4e6120b 100644 --- a/EULA.txt +++ b/EULA.txt @@ -1,3 +1,5 @@ +Human-readable version (does not replace the official EULA) + Barotrauma is not to be mistaken for free software or open source in a free-software activist understanding. Undertow Games retains the copyright to the source code and art assets and you are allowed to @@ -28,3 +30,90 @@ If there's anything you don't understand or consider confusing, please email us your questions or suggestions: contact@undertowgames.com Tl;dr: the code is intended for developing mods for Barotrauma. + +OFFICIAL EULA: + +This is a legal agreement between you and Undertow Games. (“Undertow Games” “we” “us” “our”) for computer software, the data supplied with the software, and the associated media (Software) and online documents (Documents) that are necessary for the operation of the following game/s: +- Barotrauma (a Game/the Games) + +BY PURCHASING, DOWNLOADING, ACCESSING, OR USING THE GAME SOFTWARE, YOU ARE AGREEING TO BE BOUND BY THE TERMS OF THIS AGREEMENT. + +1. GRANT AND SCOPE OF LICENCE + +1.1. We hereby grant to you a non-exclusive, non-transferable licence to use the Software and the Documents for your personal, non-commercial use (except where commercial use has been expressly permitted by us) on the terms of this Licence. +1.2. You may: + 1.2.1. Download, install and use the Software for your personal purposes only and only for the purpose of the operation of the Game/s; + 1.2.2. Provided you comply with the provisions in condition 2, copy the Software for back-up purposes only; + 1.2.3. Receive and use any free supplementary software code or update of the Software as may be provided by us from time to time; and + 1.2.4. Use any Documents in support of the use permitted under condition. +1.3. The Software may include access to various third party/Licensor tools that can be used to create content within a Game, edit the content of a Game and generally make modifications to the Software (Development Tools). +1.4. The Software is made available to you on an “open source” basis and therefore you may use the Development Tools to modify the Software and you may use, reproduce, publish, perform, display and distribute any modified Software you create in source or object form (subject to clauses 1.5 and 1.6 below) but solely on a non-commercial basis (except where commercial use has been expressly permitted by us) and solely in relation to the Game/s. +1.5. You must not misrepresent modified Software as the original Software and you agree to use all reasonable endeavours to credit us as the owners of the Software and modified Software as part of any modified Software created and distributed by you. Without prejudice to the generality of the foregoing, you must ensure all modified Software carries a prominent notice stating that you have modified the Software. +1.6. YOU UNCONDITIONALLY UNDERTAKE NOT TO SELL, LOAN, LEASE OR SUB-LICENCE MODIFIED SOFTWARE TO ANY THIRD PARTY USER AND YOU UNDERTAKE NOT TO TRANSFER TO, SHARE WITH OR IN ANY WAY DISTRIBUTE MODIFIED SOFTWARE TO ANY THIRD PARTY USER WHO HAS NOT ALREADY LICENSED THE SOFTWARE FROM US AND WHO IS NOT ALREADY AGREEED TO THE TERMS OF THIS LICENCE. +1.7. Without prejudice to clause 3.2 of this Licence, you grant to us a non-exclusive, irrevocable right to use, reproduce, modify, create derivative works from, distribute, transmit, broadcast or otherwise communicate your modified Software in connection with the promotion and operation of a Game. +1.8. If you distribute or otherwise make available your modifications or derivate works of the source code or/and art assets (hereinafter " New Work") , you automatically grant to UNDERTOW GAMES the irrevocable, perpetual, royalty free, sublicensable right and license under all applicable copyrights and intellectual property rights laws to use, reproduce, modify, adapt, perform, display, distribute and otherwise exploit and/or dispose of the New Work (or any part of the New Work) in any way UNDERTOW GAMES, or its respective designee(s), sees fit. You also waive and agree never to assert against UNDERTOW GAMES or its affiliates, distributors or licensors any moral rights or similar rights, however designated, that you may have in or to any of the New Work. + +2. RESTRICTIONS + +2.1. Except as otherwise permitted in this agreement, you may not use the Software or Documents or any modified Software for any purpose other than in relation to the operation of a Game. +2.2. Except as expressly set out in this Licence or as permitted by any local law, you undertake: + 2.2.1. not to copy the Software or Documents except where such copying is incidental to normal use of the Software, or where it is necessary for the purpose of back-up or operational security; + 2.2.2. not to rent, lease, sub-license, loan, translate, merge, adapt, vary or modify the Software or Documents; + 2.2.3. not to make alterations to, or modifications of, the whole or any part of the Software, nor permit the Software or any part of it to be combined with, or become incorporated in, any other programs; + 2.2.4. not to disassemble, decompile, reverse-engineer or create derivative works based on the whole or any part of the Software nor attempt to do any such thing except to the extent that (by virtue of section 296A of the Copyright, Designs and Patents Act 1988) such actions cannot be prohibited because they are essential for the purpose of achieving inter-operability of the Software with another software program, and provided that the information obtained by you during such activities: + 2.2.4.1. is used only for the purpose of achieving inter-operability of the Software with another software programs; and + 2.2.4.2. is not disclosed or communicated without our prior written consent to any third party; and + 2.2.4.3. is not used to create any software which is substantially similar to the Software; + 2.2.5. to keep all copies of the Software secure and to maintain accurate and up-to-date records of the number and locations of all copies of the Software; + 2.2.6. to include our copyright notice on all entire and partial copies and modifications you make of the Software on any medium; + +3. INTELLECTUAL PROPERTY RIGHTS + +3.1. You acknowledge that all intellectual property rights in the Software and the Documents anywhere in the world belong to us, that rights in the Software are licensed (not sold) to you, and that you have no rights in, or to, the Software or the Documents other than the right to use them in accordance with the terms of this Licence. +3.2. You acknowledge that all intellectual property rights in any modified Software created by you belong to us and we shall have the exclusive right to deal with and restrict the dealing with any modified Software at our sole discretion. +3.3. You must retain, in the source form of any modified Software that you distribute, all copyright, patent, and trade mark notices from the source form of the original Software. +3.4. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the original software. +3.5. You acknowledge that in agreeing to the terms of this Licence, you relinquish your legal rights, including your right to bring legal proceedings, in respect of any part of the Software in which you claim to own intellectual property rights. + +4. LIMITATION OF LIABILITY + +4.1. You acknowledge that the Software has not been developed to meet your individual requirements, and that it is therefore your responsibility to ensure that the facilities and functions of the Software meet your requirements. +4.2. If you are a consumer, we only supply the Software and Documents for domestic and private use. You agree not to use the Software and Documents for any commercial, business or re-sale purposes, and we have no liability to you for any loss of profit, loss of business, business interruption, or loss of business opportunity. +4.3. If you are a business customer (such as an educational establishment), we only supply the Software and the Documents for internal use by your business, and you agree not to use the Software or Documents for any re-sale purposes. +4.4. You acknowledge that the Software may not be free of bugs or errors, and agree that the existence of minor errors shall not constitute a breach of this Licence. +4.5. We do not offer any warranty or guarantee in respect of the operation of your Steam Account and we shall have no liability to you resulting from the operation of your Steam account and the effect that has on the Software +4.6. We shall have no liability under or in connection with this Licence whether in contract, tort (including negligence), breach of statutory duty or otherwise This does not apply to the types of loss set out in condition 4.7. +4.7. Nothing in this Licence shall limit or exclude our liability for: + 4.7.1. death or personal injury resulting from our negligence; + 4.7.2. fraud or fraudulent misrepresentation; or + 4.7.3. any other liability that cannot be excluded or limited by Finnish law. +4.8. This Licence sets out the full extent of our obligations and liabilities in respect of the supply of the Software and Documents. Except as expressly stated in this Licence, there are no conditions, warranties, representations or other terms, express or implied, that are binding on us. Any condition, warranty, representation or other term concerning the supply of the Software and Documents which might otherwise be implied into, or incorporated in, this Licence whether by statute, common law or otherwise, is excluded to the fullest extent permitted by law. + +5. TERMINATION + +5.1. We may terminate this Licence immediately by written notice to you if you commit a material or persistent breach of this Licence which you fail to remedy (if remediable) within 14 days after the service of written notice requiring you to do so. +5.2. Upon termination for any reason: + 5.2.1. all rights granted to you under this Licence shall cease; + 5.2.2. you must immediately cease all activities authorised by this Licence; + 5.2.3. you must immediately delete or remove the Software from all computer equipment in your possession, and immediately destroy or return to us (at our option) all copies of the Software and Documents then in your possession, custody or control and, in the case of destruction, certify to us that you have done so. + +6. COMMUNICATIONS BETWEEN US + +6.1. If you wish to contact us in writing, or if any condition in this Licence requires you to give us notice in writing, you can send this to us by e-mail to contact@undertowgames.com) or by pre-paid post to Undertow Games, Pormestarinkatu 4 H 70, 20750 Turku, Finland. We will confirm receipt of this by contacting you in writing, normally by e-mail. +6.2. If we have to contact you or give you notice in writing, we will do so by e-mail or by pre-paid post to the address you provide to us in your order for the Software. + +7. EVENTS OUTSIDE OUR CONTROL + +7.1. We will not be liable or responsible for any failure to perform, or delay in performance of, any of our obligations under this Licence that is caused by an Event Outside Our Control. An Event Outside Our Control is defined below in condition 7.2. +7.2. An Event Outside Our Control means any act or event beyond our reasonable control, including without limitation failure of public or private telecommunications networks. +7.3. If an Event Outside Our Control takes place that affects the performance of our obligations under this Licence: + 7.3.1. our obligations under this Licence will be suspended and the time for performance of our obligations will be extended for the duration of the Event Outside Our Control; and + 7.3.2. we will use our reasonable endeavours to find a solution by which our obligations under this Licence may be performed despite the Event Outside Our Control. + +8. OTHER IMPORTANT TERMS + +8.1. We may transfer our rights and obligations under this Licence to another organisation, but this will not affect your rights or our obligations under this Licence. +8.2. We may amend this Licence at any time at our sole discretion. You can view the Licence at any time at https://github.com/Regalis11/Barotrauma/blob/master/EULA.txt. If you do not agree to the amendments or any of the terms of this Licence, your only remedy shall be to terminate the Licence. We shall not have any obligation to refund the Licence Fee. +8.3. You may only transfer your rights or your obligations under this Licence to another person if we agree in writing. +8.4. If we fail to insist that you perform any of your obligations under this Licence, or if we do not enforce our rights against you, or if we delay in doing so, that will not mean that we have waived our rights against you and will not mean that you do not have to comply with those obligations. If we do waive a default by you, we will only do so in writing, and that will not mean that we will automatically waive any later default by you. +8.5. Each of the conditions of this Licence operates separately. If any court or competent authority decides that any of them are unlawful or unenforceable, the remaining conditions will remain in full force and effect. \ No newline at end of file From da3731bae65e8b658462139f343b05fbf4a5af78 Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Mon, 5 Jun 2017 18:11:38 +0300 Subject: [PATCH 44/56] Fixed nuclear shells exploding immediately when launched --- Barotrauma/Source/Items/Components/Turret.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Barotrauma/Source/Items/Components/Turret.cs b/Barotrauma/Source/Items/Components/Turret.cs index 76374cde2..c97085f14 100644 --- a/Barotrauma/Source/Items/Components/Turret.cs +++ b/Barotrauma/Source/Items/Components/Turret.cs @@ -213,7 +213,11 @@ namespace Barotrauma.Items.Components projectile.FindHull(); projectile.Submarine = projectile.body.Submarine; - projectile.Use((float)Timing.Step); + Projectile projectileComponent = projectile.GetComponent(); + if (projectileComponent != null) + { + projectileComponent.Use((float)Timing.Step); + } if (projectile.Container != null) projectile.Container.RemoveContained(projectile); From 892d28fd3947856a13b41829fc6a432f2e707348 Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Mon, 5 Jun 2017 18:18:30 +0300 Subject: [PATCH 45/56] Items can be fixed in single player again --- Barotrauma/Source/Items/FixRequirement.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Barotrauma/Source/Items/FixRequirement.cs b/Barotrauma/Source/Items/FixRequirement.cs index 8aa532429..15ae83dbb 100644 --- a/Barotrauma/Source/Items/FixRequirement.cs +++ b/Barotrauma/Source/Items/FixRequirement.cs @@ -155,6 +155,10 @@ namespace Barotrauma GameMain.Server.CreateEntityEvent(item, new object[] { NetEntityEvent.Type.Status }); requirement.Fixed = true; } + else + { + requirement.Fixed = true; + } return true; } From acad7980f22b69c934ae32c3a27b49f582a5802a Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Mon, 5 Jun 2017 18:40:25 +0300 Subject: [PATCH 46/56] Added some null checks --- .../Source/Characters/Animation/HumanoidAnimController.cs | 2 +- Barotrauma/Source/Characters/Character.cs | 5 ++++- Barotrauma/Source/Items/Components/Holdable/Holdable.cs | 6 +++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Barotrauma/Source/Characters/Animation/HumanoidAnimController.cs b/Barotrauma/Source/Characters/Animation/HumanoidAnimController.cs index 99bab7f6e..74de33026 100644 --- a/Barotrauma/Source/Characters/Animation/HumanoidAnimController.cs +++ b/Barotrauma/Source/Characters/Animation/HumanoidAnimController.cs @@ -1109,7 +1109,7 @@ namespace Barotrauma for (int i = 0; i < character.SelectedItems.Length; i++) { - if (character.SelectedItems[i] != null) + if (character.SelectedItems[i] != null && character.SelectedItems[i].body != null) { difference = character.SelectedItems[i].body.SimPosition - torso.SimPosition; difference = Vector2.Transform(difference, torsoTransform); diff --git a/Barotrauma/Source/Characters/Character.cs b/Barotrauma/Source/Characters/Character.cs index f54da6a98..bb5e6b4aa 100644 --- a/Barotrauma/Source/Characters/Character.cs +++ b/Barotrauma/Source/Characters/Character.cs @@ -52,7 +52,10 @@ namespace Barotrauma foreach (Limb limb in AnimController.Limbs) { - limb.body.Enabled = enabled; + if (limb.body != null) + { + limb.body.Enabled = enabled; + } } AnimController.Collider.Enabled = value; } diff --git a/Barotrauma/Source/Items/Components/Holdable/Holdable.cs b/Barotrauma/Source/Items/Components/Holdable/Holdable.cs index d692fad36..cc57a1cb4 100644 --- a/Barotrauma/Source/Items/Components/Holdable/Holdable.cs +++ b/Barotrauma/Source/Items/Components/Holdable/Holdable.cs @@ -243,7 +243,11 @@ namespace Barotrauma.Items.Components public override void Update(float deltaTime, Camera cam) { if (item.body == null || !item.body.Enabled) return; - if (!picker.HasSelectedItem(item)) IsActive = false; + if (picker == null || !picker.HasSelectedItem(item)) + { + IsActive = false; + return; + } ApplyStatusEffects(ActionType.OnActive, deltaTime, picker); From 46957684f356527dc8371d6bc334631b28b4bc1c Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Mon, 5 Jun 2017 19:27:51 +0300 Subject: [PATCH 47/56] Clients and server limit the number of chat messages included in a message if their byte size exceeds the MTU --- Barotrauma/Source/Networking/ChatMessage.cs | 28 +++++++++++++++++ Barotrauma/Source/Networking/GameClient.cs | 22 +++++++++---- Barotrauma/Source/Networking/GameServer.cs | 34 ++++++++++++--------- 3 files changed, 63 insertions(+), 21 deletions(-) diff --git a/Barotrauma/Source/Networking/ChatMessage.cs b/Barotrauma/Source/Networking/ChatMessage.cs index d527d2a81..fd448eb22 100644 --- a/Barotrauma/Source/Networking/ChatMessage.cs +++ b/Barotrauma/Source/Networking/ChatMessage.cs @@ -196,6 +196,34 @@ namespace Barotrauma.Networking GameMain.Server.SendChatMessage(txt, null, c); } + public int EstimateLengthBytesClient() + { + int length = 1 + //(byte)ServerNetObject.CHAT_MESSAGE + 2 + //(UInt16)NetStateID + Encoding.UTF8.GetBytes(Text).Length + 2; + + return length; + } + + public int EstimateLengthBytesServer(Client c) + { + int length = 1 + //(byte)ServerNetObject.CHAT_MESSAGE + 2 + //(UInt16)NetStateID + 1 + //(byte)Type + Encoding.UTF8.GetBytes(Text).Length + 2; + + if (Sender != null && c.inGame) + { + length += 2; //sender ID (UInt16) + } + else if (SenderName != null) + { + length += Encoding.UTF8.GetBytes(SenderName).Length + 2; + } + + return length; + } + public void ServerWrite(NetOutgoingMessage msg, Client c) { msg.Write((byte)ServerNetObject.CHAT_MESSAGE); diff --git a/Barotrauma/Source/Networking/GameClient.cs b/Barotrauma/Source/Networking/GameClient.cs index 0f35ba280..121601014 100644 --- a/Barotrauma/Source/Networking/GameClient.cs +++ b/Barotrauma/Source/Networking/GameClient.cs @@ -960,6 +960,11 @@ namespace Barotrauma.Networking chatMsgQueue.RemoveAll(cMsg => !NetIdUtils.IdMoreRecent(cMsg.NetStateID, lastSentChatMsgID)); for (int i = 0; i < chatMsgQueue.Count && i < ChatMessage.MaxMessagesPerPacket; i++) { + if (outmsg.LengthBytes + chatMsgQueue[i].EstimateLengthBytesClient() > client.Configuration.MaximumTransmissionUnit - 5) + { + //not enough room in this packet + return; + } chatMsgQueue[i].ClientWrite(outmsg); } outmsg.Write((byte)ClientNetObject.END_OF_MESSAGE); @@ -982,16 +987,21 @@ namespace Barotrauma.Networking outmsg.Write(ChatMessage.LastID); outmsg.Write(entityEventManager.LastReceivedID); - chatMsgQueue.RemoveAll(cMsg => !NetIdUtils.IdMoreRecent(cMsg.NetStateID, lastSentChatMsgID)); - for (int i = 0; i < chatMsgQueue.Count && i < ChatMessage.MaxMessagesPerPacket; i++) - { - chatMsgQueue[i].ClientWrite(outmsg); - } - Character.Controlled?.ClientWrite(outmsg); entityEventManager.Write(outmsg, client.ServerConnection); + chatMsgQueue.RemoveAll(cMsg => !NetIdUtils.IdMoreRecent(cMsg.NetStateID, lastSentChatMsgID)); + for (int i = 0; i < chatMsgQueue.Count && i < ChatMessage.MaxMessagesPerPacket; i++) + { + if (outmsg.LengthBytes + chatMsgQueue[i].EstimateLengthBytesClient() > client.Configuration.MaximumTransmissionUnit - 5) + { + //not enough room in this packet + return; + } + chatMsgQueue[i].ClientWrite(outmsg); + } + outmsg.Write((byte)ClientNetObject.END_OF_MESSAGE); if (outmsg.LengthBytes > client.Configuration.MaximumTransmissionUnit) diff --git a/Barotrauma/Source/Networking/GameServer.cs b/Barotrauma/Source/Networking/GameServer.cs index 32fc800b0..e78821349 100644 --- a/Barotrauma/Source/Networking/GameServer.cs +++ b/Barotrauma/Source/Networking/GameServer.cs @@ -859,14 +859,7 @@ namespace Barotrauma.Networking outmsg.Write((byte)ServerNetObject.SYNC_IDS); outmsg.Write(c.lastSentChatMsgID); //send this to client so they know which chat messages weren't received by the server outmsg.Write(c.lastSentEntityEventID); - - c.chatMsgQueue.RemoveAll(cMsg => !NetIdUtils.IdMoreRecent(cMsg.NetStateID, c.lastRecvChatMsgID)); - for (int i = 0; i < c.chatMsgQueue.Count && i < ChatMessage.MaxMessagesPerPacket; i++) - { - c.chatMsgQueue[i].ServerWrite(outmsg, c); - } - //don't send position updates to characters who are still midround syncing //characters or items spawned mid-round don't necessarily exist at the client's end yet if (!c.NeedsMidRoundSync) @@ -909,6 +902,8 @@ namespace Barotrauma.Networking } entityEventManager.Write(c, outmsg); + + WriteChatMessages(outmsg, c); outmsg.Write((byte)ServerNetObject.END_OF_MESSAGE); @@ -978,15 +973,10 @@ namespace Barotrauma.Networking outmsg.Write(false); outmsg.WritePadBits(); } - - outmsg.Write(c.lastSentChatMsgID); //send this to client so they know which chat messages weren't received by the server - - c.chatMsgQueue.RemoveAll(cMsg => !NetIdUtils.IdMoreRecent(cMsg.NetStateID, c.lastRecvChatMsgID)); - for (int i = 0; i < c.chatMsgQueue.Count && i < ChatMessage.MaxMessagesPerPacket; i++) - { - c.chatMsgQueue[i].ServerWrite(outmsg, c); - } + outmsg.Write(c.lastSentChatMsgID); //send this to client so they know which chat messages weren't received by the server + + WriteChatMessages(outmsg, c); outmsg.Write((byte)ServerNetObject.END_OF_MESSAGE); @@ -1013,6 +1003,20 @@ namespace Barotrauma.Networking } } + private void WriteChatMessages(NetOutgoingMessage outmsg, Client c) + { + c.chatMsgQueue.RemoveAll(cMsg => !NetIdUtils.IdMoreRecent(cMsg.NetStateID, c.lastRecvChatMsgID)); + for (int i = 0; i < c.chatMsgQueue.Count && i < ChatMessage.MaxMessagesPerPacket; i++) + { + if (outmsg.LengthBytes + c.chatMsgQueue[i].EstimateLengthBytesServer(c) > config.MaximumTransmissionUnit - 5) + { + //not enough room in this packet + return; + } + c.chatMsgQueue[i].ServerWrite(outmsg, c); + } + } + public bool StartGameClicked(GUIButton button, object obj) { Submarine selectedSub = null; From c71af56e78a3ccf77f9183fac9ba8f7c9fba8392 Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Mon, 5 Jun 2017 20:11:19 +0300 Subject: [PATCH 48/56] Added teleport console command --- Barotrauma/Source/DebugConsole.cs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/Barotrauma/Source/DebugConsole.cs b/Barotrauma/Source/DebugConsole.cs index 03036e087..e88ba9a9a 100644 --- a/Barotrauma/Source/DebugConsole.cs +++ b/Barotrauma/Source/DebugConsole.cs @@ -7,6 +7,7 @@ using Microsoft.Xna.Framework.Input; using Barotrauma.Networking; using Barotrauma.Items.Components; using System.Text; +using FarseerPhysics; namespace Barotrauma { @@ -219,6 +220,8 @@ namespace Barotrauma NewMessage(" ", Color.Cyan); + NewMessage("teleport: teleport the controlled character to the position of the cursor", Color.Cyan); + NewMessage("teleport [character name]: teleport the specified character to the position of the cursor", Color.Cyan); NewMessage("heal: restore the controlled character to full health", Color.Cyan); NewMessage("heal [character name]: restore the specified character to full health", Color.Cyan); NewMessage("revive: bring the controlled character back from the dead", Color.Cyan); @@ -468,6 +471,24 @@ namespace Barotrauma Character.Controlled = character; } + break; + case "teleportcharacter": + case "teleport": + var tpCharacter = FindMatchingCharacter(commands, true); + + if (commands.Length < 2) + { + tpCharacter = Character.Controlled; + } + + if (tpCharacter != null) + { + var cam = GameMain.GameScreen.Cam; + tpCharacter.AnimController.CurrentHull = null; + tpCharacter.Submarine = null; + tpCharacter.AnimController.SetPosition(ConvertUnits.ToSimUnits(cam.ScreenToWorld(PlayerInput.MousePosition))); + tpCharacter.AnimController.FindHull(cam.ScreenToWorld(PlayerInput.MousePosition), true); + } break; case "godmode": if (Submarine.MainSub == null) return; From 2433a4d7fb2e3acced707a43f2cd91a226ba7218 Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Mon, 5 Jun 2017 21:56:12 +0300 Subject: [PATCH 49/56] Teleport command can be used on remote players, fixed launcher.csproj --- Barotrauma/Source/DebugConsole.cs | 2 +- Launcher2/Launcher.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Barotrauma/Source/DebugConsole.cs b/Barotrauma/Source/DebugConsole.cs index e88ba9a9a..893364235 100644 --- a/Barotrauma/Source/DebugConsole.cs +++ b/Barotrauma/Source/DebugConsole.cs @@ -474,7 +474,7 @@ namespace Barotrauma break; case "teleportcharacter": case "teleport": - var tpCharacter = FindMatchingCharacter(commands, true); + var tpCharacter = FindMatchingCharacter(commands, false); if (commands.Length < 2) { diff --git a/Launcher2/Launcher.csproj b/Launcher2/Launcher.csproj index 9aa7ec09b..1d9f91c42 100644 --- a/Launcher2/Launcher.csproj +++ b/Launcher2/Launcher.csproj @@ -66,7 +66,7 @@ - + {008c0f83-e914-4966-9135-ea885059edd8} Barotrauma From 4395179afae839f4834b9a7b573896863102b094 Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Mon, 5 Jun 2017 21:56:22 +0300 Subject: [PATCH 50/56] v0.6.0.2 --- Barotrauma/Properties/AssemblyInfo.cs | 4 ++-- Barotrauma/changelog.txt | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/Barotrauma/Properties/AssemblyInfo.cs b/Barotrauma/Properties/AssemblyInfo.cs index 155d0f07e..8f0f2c21e 100644 --- a/Barotrauma/Properties/AssemblyInfo.cs +++ b/Barotrauma/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.6.0.1")] -[assembly: AssemblyFileVersion("0.6.0.1")] +[assembly: AssemblyVersion("0.6.0.2")] +[assembly: AssemblyFileVersion("0.6.0.2")] diff --git a/Barotrauma/changelog.txt b/Barotrauma/changelog.txt index 3b74ad6bd..f7b0e5df7 100644 --- a/Barotrauma/changelog.txt +++ b/Barotrauma/changelog.txt @@ -1,3 +1,18 @@ +--------------------------------------------------------------------------------------------------------- +v0.6.0.2 +--------------------------------------------------------------------------------------------------------- + +- Fixed "maximum packet size exceeded" errors when clients join servers. +- Fixed a bug that caused non-interactable checkboxes to always appear unchecked. +- Skill level syncing fix: the syncing isn't dependent on the order of the characters skills anymore. +- IP addresses are included in all login error messages and the errors are also logged to the debug console. +- Servers end rounds if all players are either dead or unconscious when autorestart is on (instead of +waiting for all players to die) +- Fixed nuclear shells and depth charges exploding immediately when launched. +- Fixed a bug that prevented any broken items from being repaired in the single player. +- Fixed items disappearing from inside copypasted items (e.g. cabinets). +- Added character teleporting console command. + --------------------------------------------------------------------------------------------------------- v0.6.0.1 --------------------------------------------------------------------------------------------------------- From 9527d53558fbe252355a56d09058a261b399c21f Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Wed, 7 Jun 2017 20:20:14 +0300 Subject: [PATCH 51/56] Fixed exceptions in CharacterNetworking.WriteStatus if a characters stun timer goes over 60.0 --- Barotrauma/Source/Characters/Character.cs | 4 ++++ Barotrauma/Source/Characters/CharacterNetworking.cs | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Barotrauma/Source/Characters/Character.cs b/Barotrauma/Source/Characters/Character.cs index bb5e6b4aa..b76febfd4 100644 --- a/Barotrauma/Source/Characters/Character.cs +++ b/Barotrauma/Source/Characters/Character.cs @@ -277,6 +277,8 @@ namespace Barotrauma set { oxygenAvailable = MathHelper.Clamp(value, 0.0f, 100.0f); } } + public const float MaxStun = 60.0f; + private float stunTimer; public float Stun { @@ -1771,6 +1773,8 @@ namespace Barotrauma { if (GameMain.Client != null && !isNetworkMessage) return; + newStun = MathHelper.Clamp(newStun, 0.0f, MaxStun); + if ((newStun <= stunTimer && !allowStunDecrease) || !MathUtils.IsValid(newStun)) return; if (GameMain.Server != null && diff --git a/Barotrauma/Source/Characters/CharacterNetworking.cs b/Barotrauma/Source/Characters/CharacterNetworking.cs index 00b8e7785..2787e1164 100644 --- a/Barotrauma/Source/Characters/CharacterNetworking.cs +++ b/Barotrauma/Source/Characters/CharacterNetworking.cs @@ -620,8 +620,7 @@ namespace Barotrauma msg.Write(Stun > 0.0f); if (Stun > 0.0f) { - Stun = MathHelper.Clamp(Stun, 0.0f, 60.0f); - msg.WriteRangedSingle(Stun, 0.0f, 60.0f, 8); + msg.WriteRangedSingle(MathHelper.Clamp(Stun, 0.0f, MaxStun), 0.0f, MaxStun, 8); } msg.Write(HuskInfectionState > 0.0f); From 8886409d56d7f190b8e9ffbc662d3444d0261d74 Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Wed, 7 Jun 2017 21:14:38 +0300 Subject: [PATCH 52/56] Respawning characters get ID card tags for both the shuttle and the main sub --- Barotrauma/Source/Networking/RespawnManager.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Barotrauma/Source/Networking/RespawnManager.cs b/Barotrauma/Source/Networking/RespawnManager.cs index 8758fa84c..400953b97 100644 --- a/Barotrauma/Source/Networking/RespawnManager.cs +++ b/Barotrauma/Source/Networking/RespawnManager.cs @@ -469,7 +469,19 @@ namespace Barotrauma.Networking scooter.Combine(battery); } + //give the character the items they would've gotten if they had spawned in the main sub character.GiveJobItems(mainSubSpawnPoints[i]); + + //add the ID card tags they should've gotten when spawning in the shuttle + foreach (Item item in character.Inventory.Items) + { + if (item == null || item.Prefab.Name != "ID Card") continue; + foreach (string s in shuttleSpawnPoints[i].IdCardTags) + { + item.AddTag(s); + } + } + GameMain.GameSession.CrewManager.characters.Add(character); } From 9b0d7c10200a2adeeffb1463c76ff34151de4c3a Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Sat, 10 Jun 2017 15:07:10 +0300 Subject: [PATCH 53/56] Added a method for changing a client's controlled character. Clients now get back control if their character is revived via the debug console. + It's possible to give clients control of monsters, which should add some new gameplay possibilitie. ;) --- Barotrauma/Source/Characters/AICharacter.cs | 2 +- Barotrauma/Source/Characters/Character.cs | 8 +- .../Source/Characters/CharacterNetworking.cs | 62 +++++++++++--- Barotrauma/Source/DebugConsole.cs | 84 ++++++++++++++----- Barotrauma/Source/Networking/GameServer.cs | 34 +++++++- .../NetEntityEvent/NetEntityEvent.cs | 7 +- 6 files changed, 151 insertions(+), 46 deletions(-) diff --git a/Barotrauma/Source/Characters/AICharacter.cs b/Barotrauma/Source/Characters/AICharacter.cs index d4fcb7ca6..7a32bd5b6 100644 --- a/Barotrauma/Source/Characters/AICharacter.cs +++ b/Barotrauma/Source/Characters/AICharacter.cs @@ -27,7 +27,7 @@ namespace Barotrauma { base.Update(cam, deltaTime); - if (!Enabled) return; + if (!Enabled || IsRemotePlayer) return; float dist = Vector2.DistanceSquared(cam.WorldViewCenter, WorldPosition); if (dist > 8000.0f * 8000.0f) diff --git a/Barotrauma/Source/Characters/Character.cs b/Barotrauma/Source/Characters/Character.cs index b76febfd4..0e133f1fa 100644 --- a/Barotrauma/Source/Characters/Character.cs +++ b/Barotrauma/Source/Characters/Character.cs @@ -64,7 +64,7 @@ namespace Barotrauma public Hull PreviousHull = null; public Hull CurrentHull = null; - public readonly bool IsRemotePlayer; + public bool IsRemotePlayer; private CharacterInventory inventory; @@ -810,7 +810,7 @@ namespace Barotrauma ViewTarget = null; if (!AllowInput) return; - if (!(this is AICharacter) || controlled == this) + if (!(this is AICharacter) || controlled == this || IsRemotePlayer) { Vector2 targetMovement = GetTargetMovement(); @@ -1289,7 +1289,7 @@ namespace Barotrauma { foreach (Character c in CharacterList) { - if (!(c is AICharacter)) continue; + if (!(c is AICharacter) && !c.IsRemotePlayer) continue; if (GameMain.Server != null) { @@ -1432,7 +1432,7 @@ namespace Barotrauma selectedConstruction = null; } - if (controlled != this && !(this is AICharacter)) + if (controlled != this && (!(this is AICharacter) || IsRemotePlayer)) { if (!LockHands) { diff --git a/Barotrauma/Source/Characters/CharacterNetworking.cs b/Barotrauma/Source/Characters/CharacterNetworking.cs index 2787e1164..0f52f1c80 100644 --- a/Barotrauma/Source/Characters/CharacterNetworking.cs +++ b/Barotrauma/Source/Characters/CharacterNetworking.cs @@ -82,7 +82,7 @@ namespace Barotrauma private bool networkUpdateSent; public bool isSynced = false; - + public List MemState { get { return memState; } @@ -93,6 +93,16 @@ namespace Barotrauma get { return memLocalState; } } + public void ResetNetState() + { + memInput.Clear(); + memState.Clear(); + memLocalState.Clear(); + + LastNetworkUpdateID = 0; + LastProcessedID = 0; + } + private void UpdateNetInput() { if (this != Character.Controlled) @@ -112,7 +122,7 @@ namespace Barotrauma } } } - else if (GameMain.Server != null && !(this is AICharacter)) + else if (GameMain.Server != null && (!(this is AICharacter) || IsRemotePlayer)) { if (!AllowInput) { @@ -387,17 +397,24 @@ namespace Barotrauma if (extraData != null) { + switch ((NetEntityEvent.Type)extraData[0]) { case NetEntityEvent.Type.InventoryState: - msg.Write(true); + msg.WriteRangedInteger(0, 2, 0); inventory.ClientWrite(msg, extraData); break; + case NetEntityEvent.Type.Control: + msg.WriteRangedInteger(0, 2, 1); + Client owner = ((Client)extraData[1]); + msg.Write(owner == null ? (byte)0 : owner.ID); + break; case NetEntityEvent.Type.Status: - msg.Write(false); + msg.WriteRangedInteger(0, 2, 2); WriteStatus(msg); break; } + msg.WritePadBits(); } else { @@ -573,15 +590,36 @@ namespace Barotrauma break; case ServerNetObject.ENTITY_EVENT: - bool isInventoryUpdate = msg.ReadBoolean(); + + int eventType = msg.ReadRangedInteger(0, 2); + switch (eventType) + { + case 0: + inventory.ClientRead(type, msg, sendingTime); + break; + case 1: + byte ownerID = msg.ReadByte(); + ResetNetState(); + if (ownerID == GameMain.Client.ID) + { + if (controlled != null) + { + LastNetworkUpdateID = controlled.LastNetworkUpdateID; + } - if (isInventoryUpdate) - { - inventory.ClientRead(type, msg, sendingTime); - } - else - { - ReadStatus(msg); + controlled = this; + IsRemotePlayer = false; + GameMain.Client.Character = this; + } + else if (controlled == this) + { + controlled = null; + IsRemotePlayer = ownerID > 0; + } + break; + case 2: + ReadStatus(msg); + break; } break; diff --git a/Barotrauma/Source/DebugConsole.cs b/Barotrauma/Source/DebugConsole.cs index 893364235..288d04a4a 100644 --- a/Barotrauma/Source/DebugConsole.cs +++ b/Barotrauma/Source/DebugConsole.cs @@ -404,17 +404,19 @@ namespace Barotrauma break; case "banip": - if (GameMain.Server == null || commands.Length < 2) break; + { + if (GameMain.Server == null || commands.Length < 2) break; - var client = GameMain.Server.ConnectedClients.Find(c => c.Connection.RemoteEndPoint.Address.ToString() == commands[1]); - if (client == null) - { - GameMain.Server.BanList.BanPlayer("Unnamed", commands[1]); - } - else - { - //GameMain.Server.KickClient(client, true); - } + var client = GameMain.Server.ConnectedClients.Find(c => c.Connection.RemoteEndPoint.Address.ToString() == commands[1]); + if (client == null) + { + GameMain.Server.BanList.BanPlayer("Unnamed", commands[1]); + } + else + { + GameMain.Server.KickClient(client, true); + } + } break; case "startclient": if (commands.Length == 1) return; @@ -462,15 +464,43 @@ namespace Barotrauma break; case "controlcharacter": case "control": - if (commands.Length < 2) break; - - var character = FindMatchingCharacter(commands, true); - - if (character != null) { - Character.Controlled = character; + if (commands.Length < 2) break; + + var character = FindMatchingCharacter(commands, true); + + if (character != null) + { + Character.Controlled = character; + } + } + break; + case "setclientcharacter": + { + if (GameMain.Server == null) break; + + int separatorIndex = Array.IndexOf(commands, ";"); + + if (separatorIndex == -1 || commands.Length < 4) + { + ThrowError("Invalid parameters. The command should be formatted as \"setclientcharacter [client] ; [character]\""); + break; + } + + string[] commandsLeft = commands.Take(separatorIndex).ToArray(); + string[] commandsRight = commands.Skip(separatorIndex).ToArray(); + + string clientName = String.Join(" ", commandsLeft.Skip(1)); + + var client = GameMain.Server.ConnectedClients.Find(c => c.name == clientName); + if (client == null) + { + ThrowError("Client \"" + clientName + "\" not found."); + } + + var character = FindMatchingCharacter(commandsRight, false); + GameMain.Server.SetClientCharacter(client, character); } - break; case "teleportcharacter": case "teleport": @@ -533,19 +563,29 @@ namespace Barotrauma break; case "revive": - Character reveivedCharacter = null; + Character revivedCharacter = null; if (commands.Length == 1) { - reveivedCharacter = Character.Controlled; + revivedCharacter = Character.Controlled; } else { - reveivedCharacter = FindMatchingCharacter(commands); + revivedCharacter = FindMatchingCharacter(commands); } - if (reveivedCharacter != null) + if (revivedCharacter != null) { - reveivedCharacter.Revive(false); + revivedCharacter.Revive(false); + if (GameMain.Server != null) + { + foreach (Client c in GameMain.Server.ConnectedClients) + { + if (c.Character != revivedCharacter) continue; + //clients stop controlling the character when it dies, force control back + GameMain.Server.SetClientCharacter(c, revivedCharacter); + break; + } + } } break; case "freeze": diff --git a/Barotrauma/Source/Networking/GameServer.cs b/Barotrauma/Source/Networking/GameServer.cs index e78821349..766d5a11d 100644 --- a/Barotrauma/Source/Networking/GameServer.cs +++ b/Barotrauma/Source/Networking/GameServer.cs @@ -1,5 +1,4 @@ - -using System; +using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; @@ -1945,6 +1944,37 @@ namespace Barotrauma.Networking return true; } + public void SetClientCharacter(Client client, Character newCharacter) + { + if (client == null) return; + + //the client's previous character is no longer a remote player + if (client.Character != null) + { + client.Character.IsRemotePlayer = false; + } + + if (newCharacter == null) + { + if (client.Character != null) //removing control of the current character + { + newCharacter.IsRemotePlayer = false; + CreateEntityEvent(client.Character, new object[] { NetEntityEvent.Type.Control, null }); + client.Character = null; + } + + } + else if (client.Character != newCharacter) //taking control of a new character + { + newCharacter.ResetNetState(); + newCharacter.LastNetworkUpdateID = client.Character.LastNetworkUpdateID; + + newCharacter.IsRemotePlayer = true; + client.Character = newCharacter; + CreateEntityEvent(newCharacter, new object[] { NetEntityEvent.Type.Control, client }); + } + } + private void UpdateCharacterInfo(NetIncomingMessage message, Client sender) { Gender gender = Gender.Male; diff --git a/Barotrauma/Source/Networking/NetEntityEvent/NetEntityEvent.cs b/Barotrauma/Source/Networking/NetEntityEvent/NetEntityEvent.cs index c0cb081df..7d304601e 100644 --- a/Barotrauma/Source/Networking/NetEntityEvent/NetEntityEvent.cs +++ b/Barotrauma/Source/Networking/NetEntityEvent/NetEntityEvent.cs @@ -1,9 +1,5 @@ using Lidgren.Network; using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Barotrauma.Networking { @@ -16,7 +12,8 @@ namespace Barotrauma.Networking Status, Repair, ApplyStatusEffect, - ChangeProperty + ChangeProperty, + Control } public readonly Entity Entity; From ed5039c43c4102f261944ac8df441c1af9cad922 Mon Sep 17 00:00:00 2001 From: CommanderMark Date: Sat, 10 Jun 2017 22:17:16 -0400 Subject: [PATCH 54/56] The ordering of job preferences in net lobby are saved in config.xml. - Added a coroutine which will save the current settings to the config.xml file if no further changes to the preferences are applied after 10 seconds. -The default ordering is now Engineer, Mechanic, Captain, Security, Doctor and Assistant. --- Barotrauma/Content/Jobs.xml | 6 +-- Barotrauma/Source/GameMain.cs | 5 +++ Barotrauma/Source/GameSettings.cs | 46 +++++++++++++++++++++ Barotrauma/Source/Screens/NetLobbyScreen.cs | 14 +++++-- Barotrauma/config.xml | 10 +++++ 5 files changed, 75 insertions(+), 6 deletions(-) diff --git a/Barotrauma/Content/Jobs.xml b/Barotrauma/Content/Jobs.xml index 15abeb486..86b9ab96c 100644 --- a/Barotrauma/Content/Jobs.xml +++ b/Barotrauma/Content/Jobs.xml @@ -32,7 +32,7 @@ - +
@@ -50,11 +50,11 @@ - + - + diff --git a/Barotrauma/Source/GameMain.cs b/Barotrauma/Source/GameMain.cs index 9b3759882..6f291cd27 100644 --- a/Barotrauma/Source/GameMain.cs +++ b/Barotrauma/Source/GameMain.cs @@ -217,6 +217,11 @@ namespace Barotrauma yield return CoroutineStatus.Running; JobPrefab.LoadAll(SelectedPackage.GetFilesOfType(ContentType.Jobs)); + // Add any missing jobs from the prefab into Config.JobNamePreferences. + foreach (JobPrefab job in JobPrefab.List) + { + if (!Config.JobNamePreferences.Contains(job.Name)) { Config.JobNamePreferences.Add(job.Name); } + } StructurePrefab.LoadAll(SelectedPackage.GetFilesOfType(ContentType.Structure)); TitleScreen.LoadState = 20.0f; yield return CoroutineStatus.Running; diff --git a/Barotrauma/Source/GameSettings.cs b/Barotrauma/Source/GameSettings.cs index 92031d217..7f969eb44 100644 --- a/Barotrauma/Source/GameSettings.cs +++ b/Barotrauma/Source/GameSettings.cs @@ -23,6 +23,8 @@ namespace Barotrauma private WindowMode windowMode; + public List jobNamePreferences; + private KeyOrMouse[] keyMapping; private bool unsavedSettings; @@ -56,6 +58,12 @@ namespace Barotrauma public ContentPackage SelectedContentPackage { get; set; } + public List JobNamePreferences + { + get { return jobNamePreferences; } + set { UnsavedSettings = true; jobNamePreferences = value; } + } + public string MasterServerUrl { get; set; } public bool AutoCheckUpdates { get; set; } public bool WasGameUpdated { get; set; } @@ -73,6 +81,13 @@ namespace Barotrauma private set { unsavedSettings = value; + // Beging saving coroutine. Remove any existing save coroutines if one is running. + if (CoroutineManager.IsCoroutineRunning("saveCoroutine")) { CoroutineManager.StopCoroutines("saveCoroutine"); } + if (unsavedSettings == true) + { + CoroutineManager.StartCoroutine(ApplyUnsavedChanges(), "saveCoroutine"); + } + if (applyButton != null) { //applyButton.Selected = unsavedSettings; @@ -124,6 +139,12 @@ namespace Barotrauma SelectedContentPackage = ContentPackage.list.Any() ? ContentPackage.list[0] : new ContentPackage(""); + JobNamePreferences = new List(); + foreach (JobPrefab job in JobPrefab.List) + { + JobNamePreferences.Add(job.Name); + } + return; } @@ -208,6 +229,13 @@ namespace Barotrauma } } break; + case "gameplay": + JobNamePreferences = new List(); + foreach (XElement ele in subElement.Element("jobpreferences").Elements("job")) + { + JobNamePreferences.Add(ToolBox.GetAttributeString(ele, "name", "")); + } + break; } } @@ -291,6 +319,17 @@ namespace Barotrauma } + var gameplay = new XElement("gameplay"); + + var jobPreferences = new XElement("jobpreferences"); + foreach (string jobName in JobNamePreferences) + { + jobPreferences.Add(new XElement("job", new XAttribute("name", jobName))); + } + + gameplay.Add(jobPreferences); + doc.Root.Add(gameplay); + doc.Save(filePath); } @@ -500,6 +539,13 @@ namespace Barotrauma yield return CoroutineStatus.Success; } + private IEnumerable ApplyUnsavedChanges() + { + yield return new WaitForSeconds(10.0f); + + Save("config.xml"); + } + private bool ApplyClicked(GUIButton button, object userData) { Save("config.xml"); diff --git a/Barotrauma/Source/Screens/NetLobbyScreen.cs b/Barotrauma/Source/Screens/NetLobbyScreen.cs index f5b648cb2..fb77c397a 100644 --- a/Barotrauma/Source/Screens/NetLobbyScreen.cs +++ b/Barotrauma/Source/Screens/NetLobbyScreen.cs @@ -540,9 +540,12 @@ namespace Barotrauma int i = 1; - foreach (JobPrefab job in JobPrefab.List) + foreach (string jobName in GameMain.Config.JobNamePreferences) { - GUITextBlock jobText = new GUITextBlock(new Rectangle(0, 0, 0, 20), i + ". " + job.Name+" ", + JobPrefab job = JobPrefab.List.First(x => x.Name == jobName); + if (job == null) { continue; } + + GUITextBlock jobText = new GUITextBlock(new Rectangle(0, 0, 0, 20), i + ". " + job.Name + " ", "",Alignment.Left, Alignment.Right, jobList, false, GameMain.GraphicsWidth<1000 ? GUI.SmallFont : GUI.Font); jobText.UserData = job; @@ -1199,6 +1202,8 @@ namespace Barotrauma private void UpdateJobPreferences(GUIListBox listBox) { listBox.Deselect(); + List jobNamePreferences = new List(); + for (int i = 0; i < listBox.children.Count; i++) { float a = (float)(i - 1) / 3.0f; @@ -1210,8 +1215,11 @@ namespace Barotrauma listBox.children[i].SelectedColor = color; (listBox.children[i] as GUITextBlock).Text = (i+1) + ". " + (listBox.children[i].UserData as JobPrefab).Name; + + jobNamePreferences.Add((listBox.children[i].UserData as JobPrefab).Name); } - + + GameMain.Config.JobNamePreferences = jobNamePreferences; } public bool TrySelectSub(string subName, string md5Hash, GUIListBox subList) diff --git a/Barotrauma/config.xml b/Barotrauma/config.xml index b59175f88..131fbcafc 100644 --- a/Barotrauma/config.xml +++ b/Barotrauma/config.xml @@ -3,4 +3,14 @@ + + + + + + + + + + \ No newline at end of file From cc6e2206916ab7d31ee454367eccd64f585f4552 Mon Sep 17 00:00:00 2001 From: CommanderMark Date: Sat, 10 Jun 2017 23:24:24 -0400 Subject: [PATCH 55/56] Moved the execution of the save coroutine to JobNamePreferences' setter. Juanjp pointed out that it would run the coroutine if you modified changes in the settings without yet pressing "Apply". Also reworded the job descriptions. --- Barotrauma/Content/Jobs.xml | 10 +++++----- Barotrauma/Source/GameSettings.cs | 15 ++++++++------- Barotrauma/Source/Screens/NetLobbyScreen.cs | 2 +- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/Barotrauma/Content/Jobs.xml b/Barotrauma/Content/Jobs.xml index 86b9ab96c..0b98e6c24 100644 --- a/Barotrauma/Content/Jobs.xml +++ b/Barotrauma/Content/Jobs.xml @@ -1,6 +1,6 @@  - + @@ -18,7 +18,7 @@ - + @@ -36,7 +36,7 @@ - + @@ -54,7 +54,7 @@ - + @@ -74,7 +74,7 @@ - + diff --git a/Barotrauma/Source/GameSettings.cs b/Barotrauma/Source/GameSettings.cs index 7f969eb44..c032645d5 100644 --- a/Barotrauma/Source/GameSettings.cs +++ b/Barotrauma/Source/GameSettings.cs @@ -61,7 +61,14 @@ namespace Barotrauma public List JobNamePreferences { get { return jobNamePreferences; } - set { UnsavedSettings = true; jobNamePreferences = value; } + set + { + // Begin saving coroutine. Remove any existing save coroutines if one is running. + if (CoroutineManager.IsCoroutineRunning("saveCoroutine")) { CoroutineManager.StopCoroutines("saveCoroutine"); } + CoroutineManager.StartCoroutine(ApplyUnsavedChanges(), "saveCoroutine"); + + jobNamePreferences = value; + } } public string MasterServerUrl { get; set; } @@ -81,12 +88,6 @@ namespace Barotrauma private set { unsavedSettings = value; - // Beging saving coroutine. Remove any existing save coroutines if one is running. - if (CoroutineManager.IsCoroutineRunning("saveCoroutine")) { CoroutineManager.StopCoroutines("saveCoroutine"); } - if (unsavedSettings == true) - { - CoroutineManager.StartCoroutine(ApplyUnsavedChanges(), "saveCoroutine"); - } if (applyButton != null) { diff --git a/Barotrauma/Source/Screens/NetLobbyScreen.cs b/Barotrauma/Source/Screens/NetLobbyScreen.cs index fb77c397a..8d1ea20ff 100644 --- a/Barotrauma/Source/Screens/NetLobbyScreen.cs +++ b/Barotrauma/Source/Screens/NetLobbyScreen.cs @@ -546,7 +546,7 @@ namespace Barotrauma if (job == null) { continue; } GUITextBlock jobText = new GUITextBlock(new Rectangle(0, 0, 0, 20), i + ". " + job.Name + " ", - "",Alignment.Left, Alignment.Right, jobList, false, + "", Alignment.Left, Alignment.Right, jobList, false, GameMain.GraphicsWidth<1000 ? GUI.SmallFont : GUI.Font); jobText.UserData = job; From f469041363ea72e8da6f9bda7ea7cfceadcd00a1 Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Sun, 11 Jun 2017 18:49:48 +0300 Subject: [PATCH 56/56] Fixed exceptions in NetLobbyScreen.UpdatePlayerFrame if job preferences contain jobs that aren't in the list of job prefabs --- Barotrauma/Source/Screens/NetLobbyScreen.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Barotrauma/Source/Screens/NetLobbyScreen.cs b/Barotrauma/Source/Screens/NetLobbyScreen.cs index 8d1ea20ff..e4e8a2ad7 100644 --- a/Barotrauma/Source/Screens/NetLobbyScreen.cs +++ b/Barotrauma/Source/Screens/NetLobbyScreen.cs @@ -542,8 +542,11 @@ namespace Barotrauma int i = 1; foreach (string jobName in GameMain.Config.JobNamePreferences) { - JobPrefab job = JobPrefab.List.First(x => x.Name == jobName); - if (job == null) { continue; } + JobPrefab job = JobPrefab.List.Find(x => x.Name == jobName); + if (job == null) + { + continue; + } GUITextBlock jobText = new GUITextBlock(new Rectangle(0, 0, 0, 20), i + ". " + job.Name + " ", "", Alignment.Left, Alignment.Right, jobList, false,