From b05414eeb534cfa65cd779f6c7e237073e125b02 Mon Sep 17 00:00:00 2001 From: user Date: Tue, 15 Oct 2024 23:50:45 +0300 Subject: [PATCH 1/2] Preserve forbidden doors on teapot conversion --- Source/1.5/Comp/CompArchoHullConversion.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Source/1.5/Comp/CompArchoHullConversion.cs b/Source/1.5/Comp/CompArchoHullConversion.cs index ddc3b1a3..2166ab37 100644 --- a/Source/1.5/Comp/CompArchoHullConversion.cs +++ b/Source/1.5/Comp/CompArchoHullConversion.cs @@ -103,8 +103,10 @@ private void ConvertHullTile(float radius) } if (t.def.defName == "ShipAirlock" || t.def.defName == "ShipAirlockMech") //maintain "hold open" { - ((Building_ShipAirlock)replacement).holdOpenInt = ((Building_ShipAirlock)t).holdOpenInt; - + ((Building_ShipAirlock)replacement).holdOpenInt = ((Building_ShipAirlock)t).holdOpenInt; + bool forbidden = ((Building_ShipAirlock)t).GetComp()?.Forbidden ?? false; + ((Building_ShipAirlock)replacement).GetComp().forbiddenInt = forbidden; + } int shipIndex = mapComp.ShipIndexOnVec(parent.Position); if (shipIndex > 0) From a794beaadf700f0db8176ba5d964c1dae96af9c5 Mon Sep 17 00:00:00 2001 From: user Date: Wed, 16 Oct 2024 00:43:01 +0300 Subject: [PATCH 2/2] Added preserving floors during archotech conversion based on exisitnc commented code --- Source/1.5/Comp/CompArchoHullConversion.cs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Source/1.5/Comp/CompArchoHullConversion.cs b/Source/1.5/Comp/CompArchoHullConversion.cs index 2166ab37..b5a3d124 100644 --- a/Source/1.5/Comp/CompArchoHullConversion.cs +++ b/Source/1.5/Comp/CompArchoHullConversion.cs @@ -120,6 +120,14 @@ private void ConvertHullTile(float radius) if (toDestroy.Count > 0) { ShipInteriorMod2.MoveShipFlag = true; + TerrainDef terrain = parent.Map.terrainGrid.TerrainAt(c); + bool nonShipTerrain = terrain != ResourceBank.TerrainDefOf.FakeFloorInsideShip && terrain != ResourceBank.TerrainDefOf.FakeFloorInsideShip && + terrain != ResourceBank.TerrainDefOf.FakeFloorInsideShipMech && terrain != ResourceBank.TerrainDefOf.ShipWreckageTerrain && + terrain != ResourceBank.TerrainDefOf.FakeFloorInsideShipFoam; + if (nonShipTerrain) + { + parent.Map.terrainGrid.RemoveTopLayer(c, false); + } foreach (Thing t in toDestroy) { t.Destroy(); @@ -130,12 +138,11 @@ private void ConvertHullTile(float radius) FleckMaker.ThrowSmoke(replacement.DrawPos, parent.Map, 2); } parent.Map.roofGrid.SetRoof(c, ResourceBank.RoofDefOf.RoofShip); + if (nonShipTerrain) + { + parent.Map.terrainGrid.SetTerrain(c, terrain); + } ShipInteriorMod2.MoveShipFlag = false; - /*TerrainDef terrain = parent.Map.terrainGrid.TerrainAt(c); - parent.Map.terrainGrid.RemoveTopLayer(c, false); - - if (terrain != ResourceBank.TerrainDefOf.FakeFloorInsideShip && terrain != ResourceBank.TerrainDefOf.FakeFloorInsideShip && terrain != ResourceBank.TerrainDefOf.FakeFloorInsideShipMech && terrain != ResourceBank.TerrainDefOf.ShipWreckageTerrain && terrain != ResourceBank.TerrainDefOf.FakeFloorInsideShipFoam) - parent.Map.terrainGrid.SetTerrain(c, terrain);*/ } }