diff --git a/Subsurface/Barotrauma.csproj b/Subsurface/Barotrauma.csproj
index 539ce7732..a0285d8a9 100644
--- a/Subsurface/Barotrauma.csproj
+++ b/Subsurface/Barotrauma.csproj
@@ -103,6 +103,7 @@
+
@@ -457,6 +458,9 @@
PreserveNewest
+
+ PreserveNewest
+
PreserveNewest
Designer
@@ -464,9 +468,6 @@
PreserveNewest
-
- PreserveNewest
-
PreserveNewest
@@ -537,18 +538,12 @@
PreserveNewest
-
- PreserveNewest
-
PreserveNewest
PreserveNewest
-
- PreserveNewest
-
PreserveNewest
Designer
diff --git a/Subsurface/Content/Characters/Human/human.xml b/Subsurface/Content/Characters/Human/human.xml
index 0f826b5ac..c4d03a9ca 100644
--- a/Subsurface/Content/Characters/Human/human.xml
+++ b/Subsurface/Content/Characters/Human/human.xml
@@ -11,16 +11,16 @@
thightorque="-5.0">
-
+
-
+
-
+
diff --git a/Subsurface/Content/Items/Door/doors.xml b/Subsurface/Content/Items/Door/doors.xml
index 8c0819d0e..bf3a18d10 100644
--- a/Subsurface/Content/Items/Door/doors.xml
+++ b/Subsurface/Content/Items/Door/doors.xml
@@ -25,7 +25,6 @@
-
-
\ No newline at end of file
diff --git a/Subsurface/Content/Items/Electricity/signalcomp.png b/Subsurface/Content/Items/Electricity/signalcomp.png
index 82ca40a94..726b7921e 100644
Binary files a/Subsurface/Content/Items/Electricity/signalcomp.png and b/Subsurface/Content/Items/Electricity/signalcomp.png differ
diff --git a/Subsurface/Content/Items/Electricity/signalitems.xml b/Subsurface/Content/Items/Electricity/signalitems.xml
index 4cf60b7d2..6a828cdfe 100644
--- a/Subsurface/Content/Items/Electricity/signalitems.xml
+++ b/Subsurface/Content/Items/Electricity/signalitems.xml
@@ -100,7 +100,7 @@
-
+
-
-
+
@@ -54,8 +54,8 @@
linkable="true"
category="Machine"
pickdistance="150">
-
-
+
+
diff --git a/Subsurface/Content/Items/Engine/fabricator.png b/Subsurface/Content/Items/Engine/fabricator.png
deleted file mode 100644
index 29579d52d..000000000
Binary files a/Subsurface/Content/Items/Engine/fabricator.png and /dev/null differ
diff --git a/Subsurface/Content/Items/Fabricators/fabricator.png b/Subsurface/Content/Items/Fabricators/fabricator.png
deleted file mode 100644
index 24af1ee9c..000000000
Binary files a/Subsurface/Content/Items/Fabricators/fabricator.png and /dev/null differ
diff --git a/Subsurface/Content/Items/Fabricators/fabricators.xml b/Subsurface/Content/Items/Fabricators/fabricators.xml
index 1cc85e0c8..ef0f0a55e 100644
--- a/Subsurface/Content/Items/Fabricators/fabricators.xml
+++ b/Subsurface/Content/Items/Fabricators/fabricators.xml
@@ -6,8 +6,8 @@
pickdistance="150"
category="Machine"
description="A machine capable of manufacturing a wide range of items out of basic raw materials.">
-
-
+
+
@@ -55,8 +55,8 @@
pickdistance="150"
category="Machine"
description="Disassembles and breaks down items to reusable components and material bars.">
-
-
+
+
diff --git a/Subsurface/Content/Items/MiniMap/fabricator.png b/Subsurface/Content/Items/MiniMap/fabricator.png
deleted file mode 100644
index 29579d52d..000000000
Binary files a/Subsurface/Content/Items/MiniMap/fabricator.png and /dev/null differ
diff --git a/Subsurface/Content/Items/MiniMap/item.xml b/Subsurface/Content/Items/MiniMap/item.xml
index 14f414d58..7511ae36b 100644
--- a/Subsurface/Content/Items/MiniMap/item.xml
+++ b/Subsurface/Content/Items/MiniMap/item.xml
@@ -2,8 +2,8 @@
name="MiniMap"
category="Machine"
linkable="true">
-
-
+
+
diff --git a/Subsurface/Content/Items/machines.png b/Subsurface/Content/Items/machines.png
new file mode 100644
index 000000000..0088db9cd
Binary files /dev/null and b/Subsurface/Content/Items/machines.png differ
diff --git a/Subsurface/Content/Map/StructurePrefabs.xml b/Subsurface/Content/Map/StructurePrefabs.xml
index 5b7b2af85..0c6384379 100644
--- a/Subsurface/Content/Map/StructurePrefabs.xml
+++ b/Subsurface/Content/Map/StructurePrefabs.xml
@@ -1,18 +1,24 @@
-
controller.Item.PickDistance * 2.0f) continue;
+ if (Vector2.Distance(controller.Item.Position, character.Position) > controller.Item.PickDistance * 2.0f) continue;
controller.Item.Pick(character, false, true);
break;
diff --git a/Subsurface/Source/Characters/AI/Objectives/AIObjectiveContainItem.cs b/Subsurface/Source/Characters/AI/Objectives/AIObjectiveContainItem.cs
index 83a4b573a..607e6a612 100644
--- a/Subsurface/Source/Characters/AI/Objectives/AIObjectiveContainItem.cs
+++ b/Subsurface/Source/Characters/AI/Objectives/AIObjectiveContainItem.cs
@@ -64,7 +64,7 @@ namespace Barotrauma
}
else
{
- if (Vector2.Distance(character.SimPosition, container.Item.SimPosition) > container.Item.PickDistance
+ if (Vector2.Distance(character.Position, container.Item.Position) > container.Item.PickDistance
&& !container.Item.IsInsideTrigger(character.Position))
{
AddSubObjective(new AIObjectiveGoTo(container.Item, character));
diff --git a/Subsurface/Source/Characters/AI/Objectives/AIObjectiveGetItem.cs b/Subsurface/Source/Characters/AI/Objectives/AIObjectiveGetItem.cs
index aa7f8210c..27f3f894c 100644
--- a/Subsurface/Source/Characters/AI/Objectives/AIObjectiveGetItem.cs
+++ b/Subsurface/Source/Characters/AI/Objectives/AIObjectiveGetItem.cs
@@ -54,7 +54,7 @@ namespace Barotrauma
{
if (targetItem != null)
{
- if (Vector2.Distance(character.SimPosition, targetItem.SimPosition) < targetItem.PickDistance)
+ if (Vector2.Distance(character.Position, targetItem.Position) < targetItem.PickDistance)
{
int targetSlot = -1;
if (equip)
diff --git a/Subsurface/Source/Characters/AI/Objectives/AIObjectiveGoTo.cs b/Subsurface/Source/Characters/AI/Objectives/AIObjectiveGoTo.cs
index e2cc46235..09f668857 100644
--- a/Subsurface/Source/Characters/AI/Objectives/AIObjectiveGoTo.cs
+++ b/Subsurface/Source/Characters/AI/Objectives/AIObjectiveGoTo.cs
@@ -108,7 +108,7 @@ namespace Barotrauma
if (item != null)
{
- allowedDistance = Math.Max(item.PickDistance, allowedDistance);
+ allowedDistance = Math.Max(ConvertUnits.ToSimUnits(item.PickDistance), allowedDistance);
if (item.IsInsideTrigger(character.WorldPosition)) completed = true;
}
diff --git a/Subsurface/Source/Characters/AI/Objectives/AIObjectiveOperateItem.cs b/Subsurface/Source/Characters/AI/Objectives/AIObjectiveOperateItem.cs
index b23df973b..01937ede8 100644
--- a/Subsurface/Source/Characters/AI/Objectives/AIObjectiveOperateItem.cs
+++ b/Subsurface/Source/Characters/AI/Objectives/AIObjectiveOperateItem.cs
@@ -47,7 +47,7 @@ namespace Barotrauma
{
if (component.CanBeSelected)
{
- if (Vector2.Distance(character.SimPosition, component.Item.SimPosition) < component.Item.PickDistance
+ if (Vector2.Distance(character.Position, component.Item.Position) < component.Item.PickDistance
|| component.Item.IsInsideTrigger(character.WorldPosition))
{
if (character.SelectedConstruction != component.Item && component.CanBeSelected)
diff --git a/Subsurface/Source/Characters/Animation/Ragdoll.cs b/Subsurface/Source/Characters/Animation/Ragdoll.cs
index 3a5e7699a..da1716e5d 100644
--- a/Subsurface/Source/Characters/Animation/Ragdoll.cs
+++ b/Subsurface/Source/Characters/Animation/Ragdoll.cs
@@ -383,7 +383,7 @@ namespace Barotrauma
avgVelocity = avgVelocity / Limbs.Count();
- float impact = Vector2.Dot((f1.Body.LinearVelocity + avgVelocity) / 2.0f, -normal);
+ float impact = Vector2.Dot(avgVelocity, -normal);
if (GameMain.Server != null) impact = impact / 2.0f;
diff --git a/Subsurface/Source/Characters/Character.cs b/Subsurface/Source/Characters/Character.cs
index db40f3d36..116581fc8 100644
--- a/Subsurface/Source/Characters/Character.cs
+++ b/Subsurface/Source/Characters/Character.cs
@@ -676,8 +676,15 @@ namespace Barotrauma
if (torso == null) return null;
Vector2 pos = (torso.body.TargetPosition != Vector2.Zero) ? torso.body.TargetPosition : torso.SimPosition;
+ Vector2 pickPos = selectedConstruction == null ? mouseSimPos : selectedConstruction.SimPosition;
- return Item.FindPickable(pos, selectedConstruction == null ? mouseSimPos : selectedConstruction.SimPosition, AnimController.CurrentHull, selectedItems);
+ if (Submarine != null)
+ {
+ pos += Submarine.SimPosition;
+ pickPos += Submarine.SimPosition;
+ }
+
+ return Item.FindPickable(pos, pickPos, AnimController.CurrentHull, selectedItems);
}
private Character FindClosestCharacter(Vector2 mouseSimPos, float maxDist = 150.0f)
diff --git a/Subsurface/Source/Characters/Limb.cs b/Subsurface/Source/Characters/Limb.cs
index 24c7ef5dd..fd0a25df7 100644
--- a/Subsurface/Source/Characters/Limb.cs
+++ b/Subsurface/Source/Characters/Limb.cs
@@ -210,7 +210,7 @@ namespace Barotrauma
body.CollidesWith = Physics.CollisionAll & ~Physics.CollisionCharacter & ~Physics.CollisionMisc;
}
- impactTolerance = ToolBox.GetAttributeFloat(element, "impacttolerance", character.IsHumanoid ? 15.0f : 50.0f);
+ impactTolerance = ToolBox.GetAttributeFloat(element, "impacttolerance", character.IsHumanoid ? 10.0f : 50.0f);
body.UserData = this;
diff --git a/Subsurface/Source/DebugConsole.cs b/Subsurface/Source/DebugConsole.cs
index 0906250a0..631dd8c3b 100644
--- a/Subsurface/Source/DebugConsole.cs
+++ b/Subsurface/Source/DebugConsole.cs
@@ -340,6 +340,12 @@ namespace Barotrauma
break;
case "tutorial":
TutorialMode.StartTutorial(Tutorials.TutorialType.TutorialTypes[0]);
+
+
+ break;
+ case "editortutorial":
+ GameMain.EditMapScreen.Select();
+ GameMain.EditMapScreen.StartTutorial();
break;
case "lobbyscreen":
case "lobby":
diff --git a/Subsurface/Source/GameSession/GameModes/Tutorials/BasicTutorial.cs b/Subsurface/Source/GameSession/GameModes/Tutorials/BasicTutorial.cs
index b1f1fb1a1..c852f1416 100644
--- a/Subsurface/Source/GameSession/GameModes/Tutorials/BasicTutorial.cs
+++ b/Subsurface/Source/GameSession/GameModes/Tutorials/BasicTutorial.cs
@@ -15,7 +15,7 @@ namespace Barotrauma.Tutorials
}
- protected override IEnumerable