diff --git a/Subsurface/Source/Map/Submarine.cs b/Subsurface/Source/Map/Submarine.cs index 7a8d32f82..82a9e03f7 100644 --- a/Subsurface/Source/Map/Submarine.cs +++ b/Subsurface/Source/Map/Submarine.cs @@ -477,7 +477,7 @@ namespace Barotrauma /// check visibility between two points (in sim units) /// /// a physics body that was between the points (or null) - public static Body CheckVisibility(Vector2 rayStart, Vector2 rayEnd, bool ignoreLevel = false) + public static Body CheckVisibility(Vector2 rayStart, Vector2 rayEnd, bool ignoreLevel = false, bool ignoreSubs = false) { Body closestBody = null; float closestFraction = 1.0f; @@ -494,6 +494,7 @@ namespace Barotrauma (!fixture.CollisionCategories.HasFlag(Physics.CollisionWall) && !fixture.CollisionCategories.HasFlag(Physics.CollisionLevel))) return -1; if (ignoreLevel && fixture.CollisionCategories == Physics.CollisionLevel) return -1; + if (ignoreSubs && fixture.Body.UserData is Submarine) return -1; Structure structure = fixture.Body.UserData as Structure; if (structure != null) diff --git a/Subsurface/Source/Map/WayPoint.cs b/Subsurface/Source/Map/WayPoint.cs index efb67f350..dba83d407 100644 --- a/Subsurface/Source/Map/WayPoint.cs +++ b/Subsurface/Source/Map/WayPoint.cs @@ -465,9 +465,7 @@ namespace Barotrauma WayPoint[] ladderPoints = new WayPoint[2]; ladderPoints[0] = new WayPoint(new Vector2(item.Rect.Center.X, item.Rect.Y - item.Rect.Height + heightFromFloor), SpawnType.Path, submarine); - - ladderPoints[1] = new WayPoint(new Vector2(item.Rect.Center.X, item.Rect.Y-1.0f), SpawnType.Path, submarine); - + ladderPoints[1] = new WayPoint(new Vector2(item.Rect.Center.X, item.Rect.Y-1.0f), SpawnType.Path, submarine); WayPoint prevPoint = ladderPoints[0]; Vector2 prevPos = prevPoint.SimPosition; @@ -619,12 +617,12 @@ namespace Barotrauma float dist = Vector2.Distance(wp.Position, Position); if (closest == null || dist < closestDist) { - var body = Submarine.CheckVisibility(SimPosition, wp.SimPosition, true); + var body = Submarine.CheckVisibility(SimPosition, wp.SimPosition, true, true); if (body != null && body != ignoredBody && !(body.UserData is Submarine)) { if (body.UserData is Structure || body.FixtureList[0].CollisionCategories.HasFlag(Physics.CollisionWall)) continue; } - + closestDist = dist; closest = wp; } diff --git a/Subsurface/Submarines/Aegir Mark III.sub b/Subsurface/Submarines/Aegir Mark III.sub index 79c236a1a..6cab2cb69 100644 Binary files a/Subsurface/Submarines/Aegir Mark III.sub and b/Subsurface/Submarines/Aegir Mark III.sub differ diff --git a/Subsurface/Submarines/Nehalennia.sub b/Subsurface/Submarines/Nehalennia.sub index 21f66d536..1a8b8aa01 100644 Binary files a/Subsurface/Submarines/Nehalennia.sub and b/Subsurface/Submarines/Nehalennia.sub differ diff --git a/Subsurface/Submarines/Vellamo.sub b/Subsurface/Submarines/Vellamo.sub index d0789b22a..6d35b7f4d 100644 Binary files a/Subsurface/Submarines/Vellamo.sub and b/Subsurface/Submarines/Vellamo.sub differ