diff --git a/Subsurface/Barotrauma.csproj b/Subsurface/Barotrauma.csproj
index e6764fe17..dfbf37b0e 100644
--- a/Subsurface/Barotrauma.csproj
+++ b/Subsurface/Barotrauma.csproj
@@ -1066,18 +1066,30 @@
PreserveNewest
+
+ PreserveNewest
+
PreserveNewest
PreserveNewest
+
+ PreserveNewest
+
PreserveNewest
PreserveNewest
+
+ PreserveNewest
+
+
+ PreserveNewest
+
PreserveNewest
diff --git a/Subsurface/Content/Sounds/Music/Road to Hell.ogg b/Subsurface/Content/Sounds/Music/Road to Hell.ogg
new file mode 100644
index 000000000..da7507ced
Binary files /dev/null and b/Subsurface/Content/Sounds/Music/Road to Hell.ogg differ
diff --git a/Subsurface/Content/Sounds/Music/The Descent.ogg b/Subsurface/Content/Sounds/Music/The Descent.ogg
new file mode 100644
index 000000000..7f85925ba
Binary files /dev/null and b/Subsurface/Content/Sounds/Music/The Descent.ogg differ
diff --git a/Subsurface/Content/Sounds/UI/beep-shinymetal.ogg b/Subsurface/Content/Sounds/UI/beep-shinymetal.ogg
new file mode 100644
index 000000000..32b4fdf12
Binary files /dev/null and b/Subsurface/Content/Sounds/UI/beep-shinymetal.ogg differ
diff --git a/Subsurface/Content/Sounds/UI/tap-zipper.ogg b/Subsurface/Content/Sounds/UI/tap-zipper.ogg
new file mode 100644
index 000000000..19645f206
Binary files /dev/null and b/Subsurface/Content/Sounds/UI/tap-zipper.ogg differ
diff --git a/Subsurface/Content/Sounds/sounds.xml b/Subsurface/Content/Sounds/sounds.xml
index 4c6afb20b..f64b4e44d 100644
--- a/Subsurface/Content/Sounds/sounds.xml
+++ b/Subsurface/Content/Sounds/sounds.xml
@@ -37,6 +37,10 @@
+
+
+
+
diff --git a/Subsurface/Source/Characters/AI/Objectives/AIObjectiveFixLeak.cs b/Subsurface/Source/Characters/AI/Objectives/AIObjectiveFixLeak.cs
index fc6ea845e..6099605ee 100644
--- a/Subsurface/Source/Characters/AI/Objectives/AIObjectiveFixLeak.cs
+++ b/Subsurface/Source/Characters/AI/Objectives/AIObjectiveFixLeak.cs
@@ -76,7 +76,7 @@ namespace Barotrauma
private Vector2 GetStandPosition()
{
Vector2 standPos = leak.Position;
- var hull = leak.linkedTo[0];
+ var hull = leak.FlowTargetHull;
if (hull == null) return standPos;
diff --git a/Subsurface/Source/Characters/Animation/HumanoidAnimController.cs b/Subsurface/Source/Characters/Animation/HumanoidAnimController.cs
index 2f27711f4..061e02b30 100644
--- a/Subsurface/Source/Characters/Animation/HumanoidAnimController.cs
+++ b/Subsurface/Source/Characters/Animation/HumanoidAnimController.cs
@@ -243,45 +243,33 @@ namespace Barotrauma
movement = MathUtils.SmoothStep(movement, TargetMovement, movementLerp);
movement.Y = 0.0f;
- bool legsUp = false;
for (int i = 0; i < 2; i++)
{
- Limb leg = GetLimb((i == 0) ? LimbType.LeftLeg : LimbType.RightLeg);// : leftLeg;
+ Limb leg = GetLimb((i == 0) ? LimbType.LeftThigh : LimbType.RightThigh);// : leftLeg;
float shortestAngle = leg.Rotation - torso.Rotation;
- if (Math.Abs(shortestAngle)<2.4f) continue;
+ if (Math.Abs(shortestAngle) < 2.5f) continue;
- leg.body.ApplyTorque(-shortestAngle*10.0f);
+ if (Math.Abs(shortestAngle) > 5.0f)
+ {
+ TargetDir = TargetDir == Direction.Right ? Direction.Left : Direction.Right;
+ }
+ else
+ {
- leg = GetLimb((i == 0) ? LimbType.LeftThigh : LimbType.RightThigh);
- leg.body.ApplyTorque(-shortestAngle * 5.0f);
-
- // float torsoRot = MathHelper.WrapAngle(torso.Rotation);
- // torsoRot = MathHelper.ToDegrees(torsoRot);
+ leg.body.ApplyTorque(shortestAngle * 10.0f);
- //float torque = Math.Sign(torso.SimPosition.X - leg.SimPosition.X) * leg.Mass * 10.0f;
- //leg.body.ApplyTorque(torque);
-
-
- //leg.body.ApplyTorque(torque);
- // if (Math.Sign(Dir)==Math.Sign(torsoRot))
- // {
- //leg.body.ApplyTorque(-leg.Mass * 100.0f);
- // }
- // else
- // {
- // leg.body.ApplyTorque(leg.Mass * 100.0f);
- // }
-
- //legsUp = true;
+ leg = GetLimb((i == 0) ? LimbType.LeftLeg : LimbType.RightLeg);
+ leg.body.ApplyTorque(-shortestAngle * 10.0f);
+ }
}
- if (legsUp || LowestLimb == null) return;
+ if (LowestLimb == null) return;
if (!onGround || (LowestLimb.SimPosition.Y - floorY > 0.5f && stairs == null)) return;
- getUpSpeed = getUpSpeed * Math.Max(head.SimPosition.Y - colliderPos.Y, 0.1f);
+ getUpSpeed = getUpSpeed * Math.Max(head.SimPosition.Y - colliderPos.Y, 0.5f);
if (stairs != null)
{
diff --git a/Subsurface/Source/Characters/Animation/Ragdoll.cs b/Subsurface/Source/Characters/Animation/Ragdoll.cs
index 85bf2a188..818ed294e 100644
--- a/Subsurface/Source/Characters/Animation/Ragdoll.cs
+++ b/Subsurface/Source/Characters/Animation/Ragdoll.cs
@@ -590,7 +590,6 @@ namespace Barotrauma
{
DebugConsole.ThrowError("Failed to update ragdoll limb collisioncategories", e);
}
-
}
}
diff --git a/Subsurface/Source/Characters/Character.cs b/Subsurface/Source/Characters/Character.cs
index 3e1f566f6..75dae6eb8 100644
--- a/Subsurface/Source/Characters/Character.cs
+++ b/Subsurface/Source/Characters/Character.cs
@@ -412,6 +412,7 @@ namespace Barotrauma
if (Info.PickedItemIDs[i] == 0) continue;
Item item = FindEntityByID(Info.PickedItemIDs[i]) as Item;
+ System.Diagnostics.Debug.Assert(item != null);
if (item == null) continue;
item.Pick(this, true, true, true);
@@ -1100,49 +1101,44 @@ namespace Barotrauma
Kill(CauseOfDeath.Pressure, isNetworkMessage);
}
- private IEnumerable