diff --git a/Subsurface/Source/Events/Missions/CargoMission.cs b/Subsurface/Source/Events/Missions/CargoMission.cs index 68b2340ee..ace7fe0be 100644 --- a/Subsurface/Source/Events/Missions/CargoMission.cs +++ b/Subsurface/Source/Events/Missions/CargoMission.cs @@ -54,7 +54,7 @@ namespace Barotrauma return; } - WayPoint cargoSpawnPos = WayPoint.GetRandom(SpawnType.Cargo); + WayPoint cargoSpawnPos = WayPoint.GetRandom(SpawnType.Cargo, null, Submarine.MainSub); if (cargoSpawnPos==null) { DebugConsole.ThrowError("Couldn't spawn items for cargo mission, cargo spawnpoint not found"); diff --git a/Subsurface/Source/GameSession/CargoManager.cs b/Subsurface/Source/GameSession/CargoManager.cs index 53ebf8cb8..ec66319d1 100644 --- a/Subsurface/Source/GameSession/CargoManager.cs +++ b/Subsurface/Source/GameSession/CargoManager.cs @@ -19,7 +19,7 @@ namespace Barotrauma public void CreateItems() { - WayPoint wp = WayPoint.GetRandom(SpawnType.Cargo); + WayPoint wp = WayPoint.GetRandom(SpawnType.Cargo, null, Submarine.MainSub); if (wp==null) { diff --git a/Subsurface/Source/Items/Components/DockingPort.cs b/Subsurface/Source/Items/Components/DockingPort.cs index 397a6579f..3dac8197f 100644 --- a/Subsurface/Source/Items/Components/DockingPort.cs +++ b/Subsurface/Source/Items/Components/DockingPort.cs @@ -377,6 +377,7 @@ namespace Barotrauma.Items.Components hullIds[0] = hulls[0].ID; hullIds[1] = hulls[1].ID; + gap.DisableHullRechecks = true; gapId = gap.ID; item.linkedTo.Add(gap); diff --git a/Subsurface/Source/Map/Gap.cs b/Subsurface/Source/Map/Gap.cs index c1388b78b..1c082452f 100644 --- a/Subsurface/Source/Map/Gap.cs +++ b/Subsurface/Source/Map/Gap.cs @@ -30,6 +30,9 @@ namespace Barotrauma private float higherSurface; private float lowerSurface; + //if set to true, hull connections of this gap won't be updated when changes are being done to hulls + public bool DisableHullRechecks; + public float Open { get { return open; } @@ -119,6 +122,7 @@ namespace Barotrauma { foreach (Gap g in GapList) { + if (g.DisableHullRechecks) continue; g.FindHulls(); } } diff --git a/Subsurface/Source/Map/WayPoint.cs b/Subsurface/Source/Map/WayPoint.cs index 3c8eeb2c1..22e4c29cf 100644 --- a/Subsurface/Source/Map/WayPoint.cs +++ b/Subsurface/Source/Map/WayPoint.cs @@ -631,12 +631,13 @@ namespace Barotrauma if (!wayPoint2.linkedTo.Contains(this)) wayPoint2.linkedTo.Add(this); } - public static WayPoint GetRandom(SpawnType spawnType = SpawnType.Human, Job assignedJob = null) + public static WayPoint GetRandom(SpawnType spawnType = SpawnType.Human, Job assignedJob = null, Submarine sub = null) { List wayPoints = new List(); foreach (WayPoint wp in WayPointList) { + if (sub != null && wp.Submarine != sub) continue; if (wp.spawnType != spawnType) continue; if (assignedJob != null && wp.assignedJob != assignedJob.Prefab) continue;