static void Postfix(Map map, GenStepParams parms) { if (!map.Biome.HasModExtension <BiomesMap>()) { return; } BiomesMap mapParms = map.Biome.GetModExtension <BiomesMap>(); // generate map shapes if (mapParms.isIsland) { new GenStep_Island().Generate(map, parms); } else if (mapParms.isOasis) { new GenStep_Oasis().Generate(map, parms); } // generate elevation grid if necessary if (mapParms.addIslandHills) { new GenStep_IslandElevation().Generate(map, parms); } // generate elevation shapes if (mapParms.isValley) { new GenStep_Valley().Generate(map, parms); } else if (mapParms.isCavern) { new GenStep_Cavern().Generate(map, parms); } }
static void Postfix(Map map, GenStepParams parms) { if (!map.Biome.HasModExtension <BiomesMap>()) { return; } BiomesMap biomesMap = map.Biome.GetModExtension <BiomesMap>(); if (!biomesMap.isValley) { return; } MapGenFloatGrid elevation = MapGenerator.Elevation; BiomesMap valleyMap = map.Biome.GetModExtension <BiomesMap>(); IntVec3 center = map.Center; float size = (map.Size.x * map.Size.y) / 2f; Random random = new Random(); int valleyDirectionDecider = random.Next(1, 2); float distance = 0; float distance2 = 0; float distance3 = 0; int valleyType = Rand.Range(0, 2); foreach (IntVec3 current in map.AllCells) { //distance = (float)Math.Sqrt(Math.Pow(current.x - center.x, 2) + Math.Pow(current.z - center.z, 2)) distance = (float)Math.Sqrt(Math.Pow(current.x - center.x, 2) + Math.Pow(current.z - center.z, 2)); switch (valleyType) { case 0: distance2 = (float)Math.Sqrt(Math.Pow(current.z - center.z, 2)); break; case 1: distance2 = (float)Math.Sqrt(Math.Pow(current.x - center.x, 2)); break; case 2: distance2 = (float)Math.Sqrt(Math.Pow(current.x - center.x, 2)); break; } distance3 = distance + (distance2 * 1.3f); //distance3 = Rand.Range(distance, distance2); elevation[current] *= (Math.Min(Rand.Range(valleyMap.minHillEdgeMultiplier, valleyMap.maxHillEdgeMultiplier), Rand.Range(valleyMap.minHillEncroachment, valleyMap.maxHillEncroachment) * 2) * distance3 / size); } }
internal static bool Prefix(ref bool __result, ThingDef plantDef, IntVec3 c, Map map) { TerrainDef terrain = map.terrainGrid.TerrainAt(c); List <Thing> list = map.thingGrid.ThingsListAt(c); foreach (Thing thing in list) { if (thing != null && thing.def.building != null) { if (plantDef.plant.sowTags.Contains(thing.def.building.sowTag)) { __result = plantDef.plant.sowTags.Contains(thing.def.building.sowTag); return(plantDef.plant.sowTags.Contains(thing.def.building.sowTag)); } } } if (!plantDef.HasModExtension <Biomes_PlantControl>()) //this section governs plants that should not use the BMT plant spawning system. { if (terrain.HasTag("Water")) { __result = false; return(false); } if (map.Biome.HasModExtension <BiomesMap>()) { BiomesMap biome = map.Biome.GetModExtension <BiomesMap>(); if (biome.isCavern) { __result = false; return(false); } } return(true); } if (plantDef.HasModExtension <Biomes_PlantControl>()) //this section governs plants that should. { if (map.Biome.HasModExtension <BiomesMap>()) { BiomesMap biome = map.Biome.GetModExtension <BiomesMap>(); if (biome.isCavern) { if (!map.Biome.AllWildPlants.Contains(plantDef)) { __result = false; return(false); } } } Biomes_PlantControl ext = plantDef.GetModExtension <Biomes_PlantControl>(); if (map.roofGrid.RoofAt(c) != null) //checks for cave cells. { if (!map.roofGrid.RoofAt(c).isNatural&& !ext.allowInBuilding) { __result = false; return(false); } if (map.roofGrid.RoofAt(c).isNatural&& !ext.allowInCave) { __result = false; return(false); } } else if (!ext.allowOutside) //and non cave cells { __result = false; return(false); } //And now some checks for terrain tags if (terrain.HasTag("Water") && !ext.allowInWater) { __result = false; return(false); } if (terrain.HasTag("Deep") && !ext.allowInDeep) { __result = false; return(false); } if (terrain.HasTag("ChestDeep") && !ext.allowInChestDeep) { __result = false; return(false); } if (terrain.HasTag("Shallow") && !ext.allowInShallow) { __result = false; return(false); } if (terrain.HasTag("Fresh") && !ext.allowInFresh) { __result = false; return(false); } if (terrain.HasTag("Salty") && !ext.allowInSalty) { __result = false; return(false); } if (terrain.HasTag("Sandy") && !ext.allowInSandy) { __result = false; return(false); } if (terrain.HasTag("Boggy") && !ext.allowInBoggy) { __result = false; return(false); } if (!ext.allowOnDry && !terrain.HasTag("Boggy") && !terrain.HasTag("Water")) { __result = false; return(false); } if (!ext.allowOnLand && terrain.HasTag("Soil")) { __result = false; return(false); } __result = true; return(true); } else { return(true); } }