private static void Postfix(string id, ref ProcGen.Mob __result) { if (__result != null) { var name = __result.name; var prefabName = __result.prefabName; if (prefabName == null) { prefabName = name; } if (name != null && !patched.Contains(name) && critters.Contains(prefabName)) { var densityModifier = xscale * yscale; if (name.Equals("Mole") || prefabName.Equals("Mole")) { densityModifier *= 4.0f; } patched.Add(name); Console.WriteLine("patching density of " + name); Console.WriteLine("pre-patch density: " + __result.density.min + ", " + __result.density.max); typeof(ProcGen.SampleDescriber).GetProperty("density", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance) .SetValue(__result, new ProcGen.MinMax(__result.density.min * densityModifier, __result.density.max * densityModifier), null); Console.WriteLine("pst-patch density: " + __result.density.min + ", " + __result.density.max); } } }
private static void Postfix(string id, ref ProcGen.Mob __result) { if (__result != null) { var name = __result.name; var prefabName = __result.prefabName; if (prefabName == null) { prefabName = name; } if (name != null && !patched.Contains(name)) { var densityModifier = SizeNotIncludedOptions.Instance.Density(); // surface biome gets mostly deleted. I don't know why. So just give the player lots of voles to compensate. squaring it is probably fine. if (name.Equals("Mole") || prefabName.Equals("Mole")) { densityModifier *= densityModifier; } patched.Add(name); typeof(ProcGen.SampleDescriber).GetProperty("density", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance) .SetValue(__result, new ProcGen.MinMax(__result.density.min * densityModifier, __result.density.max * densityModifier), null); } } }