static void Prefix(Map map) { // Adjust the frequency a bit to match the increased stones spawning in the map double multiplier = 0.5d * Find.World.NaturalRockTypesIn(map.Tile).ToList().Count; // Adjust the octaves to either be more blob-like or scattered -- base value is 6 int octaves = Rand.RangeInclusive(3, 8); RockNoises.rockNoises = new List <RockNoises.RockNoise>(); foreach (ThingDef current in Find.World.NaturalRockTypesIn(map.Tile)) { RockNoises.RockNoise rockNoise = new RockNoises.RockNoise() { rockDef = current, noise = new Perlin((multiplier * 0.004999999888241291), 2.0, 0.5, octaves, Rand.Range(0, 2147483647), QualityMode.Medium) }; RockNoises.rockNoises.Add(rockNoise); NoiseDebugUI.StoreNoiseRender(rockNoise.noise, rockNoise.rockDef + " score", map.Size.ToIntVec2); } }
public static void UndergroundRockAdder(Map origin, Map newMap) { var rockNoises = new List <RockNoises.RockNoise>(); foreach (ThingDef item in Find.World.NaturalRockTypesIn(origin.Tile)) { RockNoises.RockNoise rockNoise = new RockNoises.RockNoise(); rockNoise.rockDef = item; rockNoise.noise = new Verse.Noise.Perlin(0.004999999888241291, 2.0, 0.5, 6, Rand.Range(0, int.MaxValue), QualityMode.Medium); rockNoises.Add(rockNoise); NoiseDebugUI.StoreNoiseRender(rockNoise.noise, rockNoise.rockDef + " score", origin.Size.ToIntVec2); } foreach (IntVec3 cell in origin.AllCells) { var originTerrain = cell.GetTerrain(origin); var newTerrain = lastTerrain; if (!originTerrain.BuildableByPlayer && originTerrain.defName != "BrokenAsphalt" && !originTerrain.IsWater) { newTerrain = originTerrain; lastTerrain = originTerrain; } if (originTerrain.defName != "WaterDeep") { newMap.roofGrid.SetRoof(cell, RoofDefOf.RoofRockThick); newMap.terrainGrid.SetTerrain(cell, newTerrain); GenSpawn.Spawn(RockDefAt(cell, origin, rockNoises), cell, newMap); } else { newMap.terrainGrid.SetTerrain(cell, TerrainDefOf.WaterDeep); } } }