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;