diff --git a/Barotrauma/BarotraumaShared/Content/Items/Engine/engine.xml b/Barotrauma/BarotraumaShared/Content/Items/Engine/engine.xml
index aedcec445..1f774a460 100644
--- a/Barotrauma/BarotraumaShared/Content/Items/Engine/engine.xml
+++ b/Barotrauma/BarotraumaShared/Content/Items/Engine/engine.xml
@@ -10,6 +10,8 @@
+
+
@@ -38,6 +40,8 @@
+
+
diff --git a/Barotrauma/BarotraumaShared/Source/Characters/Character.cs b/Barotrauma/BarotraumaShared/Source/Characters/Character.cs
index e51ebe7f8..2cb4c7ea5 100644
--- a/Barotrauma/BarotraumaShared/Source/Characters/Character.cs
+++ b/Barotrauma/BarotraumaShared/Source/Characters/Character.cs
@@ -1028,7 +1028,7 @@ namespace Barotrauma
// Get the point along the line between lowerBodyPosition and upperBodyPosition which is closest to the center of itemDisplayRect
playerDistanceCheckPosition = Vector2.Clamp(transformedTrigger.Center.ToVector2(), lowerBodyPosition, upperBodyPosition);
- if (!transformedTrigger.Contains(upperBodyPosition)) return false;
+ if (!transformedTrigger.Contains(upperBodyPosition) && !transformedTrigger.Contains(lowerBodyPosition)) return false;
insideTrigger = true;
}
@@ -1099,9 +1099,11 @@ namespace Barotrauma
foreach (Item item in Item.ItemList)
{
if (ignoredItems != null && ignoredItems.Contains(item)) continue;
+ if (hull != null && item.CurrentHull != hull) continue;
if (item.body != null && !item.body.Enabled) continue;
-
- if (CanInteractWith(item))
+
+ float distanceToItem = float.PositiveInfinity;
+ if (CanInteractWith(item, out distanceToItem))
{
if (item.IsMouseOn(displayPosition))
{
@@ -1115,7 +1117,6 @@ namespace Barotrauma
}
else if (aimAssistModifier > 0.0f)
{
- float distanceToItem = Vector2.Distance(item.WorldPosition, displayPosition);
if (distanceToItem < (100.0f * aimAssistModifier) && (closestItem == null || distanceToItem < closestItemDistance))
{
closestItem = item;