diff --git a/Subsurface/Content/Map/StructurePrefabs.xml b/Subsurface/Content/Map/StructurePrefabs.xml
index 711353e8f..7fc9df42a 100644
--- a/Subsurface/Content/Map/StructurePrefabs.xml
+++ b/Subsurface/Content/Map/StructurePrefabs.xml
@@ -78,7 +78,7 @@
width="24" height="32" resizevertical="true"/>
+ width = "128" height ="49" body="true" health="100"/>
diff --git a/Subsurface/Content/Map/testroom.png b/Subsurface/Content/Map/testroom.png
index 00f2787d5..3672e0776 100644
Binary files a/Subsurface/Content/Map/testroom.png and b/Subsurface/Content/Map/testroom.png differ
diff --git a/Subsurface/Source/DebugConsole.cs b/Subsurface/Source/DebugConsole.cs
index 308dbada2..1135aa8ca 100644
--- a/Subsurface/Source/DebugConsole.cs
+++ b/Subsurface/Source/DebugConsole.cs
@@ -363,8 +363,47 @@ namespace Barotrauma
case "controlcharacter":
case "control":
if (commands.Length < 2) break;
- string name = string.Join(" ", commands.Skip(1)).ToLowerInvariant();
- Character.Controlled = Character.CharacterList.Find(c => !c.IsNetworkPlayer && c.Name.ToLowerInvariant() == name);
+
+ int characterIndex;
+ string characterName;
+ if (int.TryParse(commands.Last(), out characterIndex))
+ {
+ characterName = string.Join(" ", commands.Skip(1).Take(commands.Length-2)).ToLowerInvariant();
+ }
+ else
+ {
+ characterName = string.Join(" ", commands.Skip(1)).ToLowerInvariant();
+ characterIndex = -1;
+ }
+
+ var matchingCharacters = Character.CharacterList.FindAll(c => !c.IsNetworkPlayer && c.Name.ToLowerInvariant() == characterName);
+
+ if (!matchingCharacters.Any())
+ {
+ ThrowError("Matching characters not found");
+ return;
+ }
+
+ if (characterIndex==-1)
+ {
+ Character.Controlled = matchingCharacters.First();
+ if (matchingCharacters.Count > 1)
+ {
+ NewMessage(
+ "Found multiple matching characters. "+
+ "Use \"control [charactername] [0-"+(matchingCharacters.Count-1)+"]\" to choose which character to control.",
+ Color.LightGray);
+ }
+ }
+ else if (characterIndex<0 || characterIndex>= matchingCharacters.Count)
+ {
+ ThrowError("Character index out of range. Select an index between 0 and " + (matchingCharacters.Count - 1));
+ }
+ else
+ {
+ Character.Controlled = matchingCharacters[characterIndex];
+ }
+
break;
case "godmode":
if (Submarine.MainSub == null) return;
diff --git a/Subsurface/Source/Networking/GameServer.cs b/Subsurface/Source/Networking/GameServer.cs
index 368a0f90c..8e4898810 100644
--- a/Subsurface/Source/Networking/GameServer.cs
+++ b/Subsurface/Source/Networking/GameServer.cs
@@ -1522,7 +1522,7 @@ namespace Barotrauma.Networking
}
else
{
- GameServer.Log(message.Text, message.Color);
+ GameServer.Log(message.TextWithSender, message.Color);
}
sender.ChatSpamSpeed += 5.0f;
diff --git a/Subsurface/Source/Networking/NetworkMember.cs b/Subsurface/Source/Networking/NetworkMember.cs
index 027b1afb2..d18587249 100644
--- a/Subsurface/Source/Networking/NetworkMember.cs
+++ b/Subsurface/Source/Networking/NetworkMember.cs
@@ -264,6 +264,7 @@ namespace Barotrauma.Networking
public void AddChatMessage(ChatMessage message)
{
+
if (message.Type == ChatMessageType.Radio &&
Character.Controlled != null &&
message.Sender != null && message.Sender != myCharacter)
@@ -278,6 +279,8 @@ namespace Barotrauma.Networking
return;
}
+ GameServer.Log(message.TextWithSender, message.Color);
+
string displayedText = message.Text;
if (message.Sender != null)
@@ -293,8 +296,6 @@ namespace Barotrauma.Networking
GameMain.NetLobbyScreen.NewChatMessage(message);
- GameServer.Log(message.Text, message.Color);
-
while (chatBox.CountChildren > 20)
{
chatBox.RemoveChild(chatBox.children[1]);
@@ -304,7 +305,7 @@ namespace Barotrauma.Networking
{
displayedText = message.SenderName + ": " + displayedText;
}
-
+
GUITextBlock msg = new GUITextBlock(new Rectangle(0, 0, 0, 20), displayedText,
((chatBox.CountChildren % 2) == 0) ? Color.Transparent : Color.Black * 0.1f, message.Color,
Alignment.Left, null, null, true);
diff --git a/Subsurface/Source/Networking/ServerLog.cs b/Subsurface/Source/Networking/ServerLog.cs
index a4b3858a8..ecdc5b2d4 100644
--- a/Subsurface/Source/Networking/ServerLog.cs
+++ b/Subsurface/Source/Networking/ServerLog.cs
@@ -98,10 +98,10 @@ namespace Barotrauma.Networking
{
float prevSize = listBox.BarSize;
- var textBlock = new GUITextBlock(new Rectangle(0, 0, 0, 0), line.Text, GUI.Style, Alignment.TopLeft, Alignment.TopLeft, null, true, GUI.SmallFont);
+ var textBlock = new GUITextBlock(new Rectangle(0, 0, 0, 0), line.Text, GUI.Style, Alignment.TopLeft, Alignment.TopLeft, listBox, true, GUI.SmallFont);
textBlock.Rect = new Rectangle(textBlock.Rect.X, textBlock.Rect.Y, textBlock.Rect.Width, Math.Max(13, textBlock.Rect.Height));
- listBox.AddChild(textBlock);
+ //listBox.AddChild(textBlock);
textBlock.TextColor = line.Color;
textBlock.CanBeFocused = false;