diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index 2bd6e5d..b47907e 100644 Binary files a/1.6/1.6/Assemblies/ArachnaeSwarm.dll and b/1.6/1.6/Assemblies/ArachnaeSwarm.dll differ diff --git a/1.6/1.6/Defs/Thing_building/ARA_InteractiveEggSac.xml b/1.6/1.6/Defs/Thing_building/ARA_InteractiveEggSac.xml index 89c1330..7fa1686 100644 --- a/1.6/1.6/Defs/Thing_building/ARA_InteractiveEggSac.xml +++ b/1.6/1.6/Defs/Thing_building/ARA_InteractiveEggSac.xml @@ -90,7 +90,13 @@ 4 5 +
  • + 60 + ARA_InsectSludge + 4.6 +
  • + diff --git a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj index a9ea442..e339504 100644 --- a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj +++ b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj @@ -85,6 +85,10 @@ + + + + diff --git a/Source/ArachnaeSwarm/CompDelayedTerrainSpawn.cs b/Source/ArachnaeSwarm/CompDelayedTerrainSpawn.cs new file mode 100644 index 0000000..5f8f3c7 --- /dev/null +++ b/Source/ArachnaeSwarm/CompDelayedTerrainSpawn.cs @@ -0,0 +1,57 @@ +using RimWorld; +using Verse; + +namespace ArachnaeSwarm +{ + public class CompDelayedTerrainSpawn : ThingComp + { + private CompProperties_DelayedTerrainSpawn Props => (CompProperties_DelayedTerrainSpawn)props; + + private int ticksToSpawn; + private bool started; + + public override void PostSpawnSetup(bool respawningAfterLoad) + { + base.PostSpawnSetup(respawningAfterLoad); + StartDelayedSpawn(); + } + + public override void CompTick() + { + base.CompTick(); + if (started) + { + ticksToSpawn--; + if (ticksToSpawn <= 0) + { + DoTerrainSpawn(); + } + } + } + + private void StartDelayedSpawn() + { + started = true; + ticksToSpawn = Props.delayTicks; + } + + private void DoTerrainSpawn() + { + if (parent.Destroyed) + { + return; + } + + if (Props.terrainToSpawn != null) + { + foreach (IntVec3 current in GenRadial.RadialCellsAround(parent.Position, Props.spawnRadius, true)) + { + if (current.InBounds(parent.Map) && current.Walkable(parent.Map)) + { + parent.Map.terrainGrid.SetTerrain(current, Props.terrainToSpawn); + } + } + } + } + } +} \ No newline at end of file diff --git a/Source/ArachnaeSwarm/CompProperties_DelayedTerrainSpawn.cs b/Source/ArachnaeSwarm/CompProperties_DelayedTerrainSpawn.cs new file mode 100644 index 0000000..5eb53fb --- /dev/null +++ b/Source/ArachnaeSwarm/CompProperties_DelayedTerrainSpawn.cs @@ -0,0 +1,16 @@ +using Verse; + +namespace ArachnaeSwarm +{ + public class CompProperties_DelayedTerrainSpawn : CompProperties + { + public int delayTicks = 0; + public TerrainDef terrainToSpawn; + public float spawnRadius = 0f; + + public CompProperties_DelayedTerrainSpawn() + { + compClass = typeof(CompDelayedTerrainSpawn); + } + } +} \ No newline at end of file