From 90834e720d6a7dc886cc5cc4b887a209643d5532 Mon Sep 17 00:00:00 2001 From: TheLoneTec Date: Wed, 12 Feb 2025 12:24:43 +0000 Subject: [PATCH] Updated source code + added DefOf --- Mods/Minerals/Assemblies/Minerals.dll | Bin 62464 -> 62464 bytes .../Source/Minerals/DynamicMineral.cs | 6 +- Mods/Minerals/Source/Minerals/Minerals.csproj | 73 ++------- .../Source/Minerals/Minerals.userprefs | 28 ---- .../Minerals/Properties/AssemblyInfo.cs | 3 +- .../Minerals/Source/Minerals/StaticMineral.cs | 31 ++-- .../Source/Minerals/harmonyPatching.cs | 143 +++++++++++------- 7 files changed, 125 insertions(+), 159 deletions(-) delete mode 100644 Mods/Minerals/Source/Minerals/Minerals.userprefs diff --git a/Mods/Minerals/Assemblies/Minerals.dll b/Mods/Minerals/Assemblies/Minerals.dll index 8bf745923b48b3df966e362fcbd88af6b6c43cfb..509cfcda8eeff3b736d24d650a9ff5d229631ad1 100644 GIT binary patch literal 62464 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�kV4IOcNX&7tOCYmYob6yW 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 L{}cRcz`*|nXIh6v literal 62464 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 0.1f || (sizeDiff > 0.02f && attributes.fastGraphicRefresh)) { sizeWhenLastPrinted = apparentSize; - base.Map.mapDrawer.MapMeshDirty(base.Position, MapMeshFlag.Things); + base.Map.mapDrawer.MapMeshDirty(base.Position, MapMeshFlagDefOf.Things); initializeTextureLocations(); } @@ -516,11 +516,11 @@ public float lightByBiome(BiomeDef biome) } public override float valueAtPos(DynamicMineral aMineral) { - return aMineral.Map.glowGrid.GameGlowAt(aMineral.Position); + return aMineral.Map.glowGrid.GroundGlowAt(aMineral.Position); } public override float valueAtPos(ThingDef_DynamicMineral myDef, IntVec3 aPosition, Map aMap) { - return aMap.glowGrid.GameGlowAt(aPosition); + return aMap.glowGrid.GroundGlowAt(aPosition); } public override float valueAtMap(Map aMap) { diff --git a/Mods/Minerals/Source/Minerals/Minerals.csproj b/Mods/Minerals/Source/Minerals/Minerals.csproj index 2e6ef06262..fe287aa7e6 100644 --- a/Mods/Minerals/Source/Minerals/Minerals.csproj +++ b/Mods/Minerals/Source/Minerals/Minerals.csproj @@ -1,72 +1,24 @@ - - + - Debug - AnyCPU - {D26AEA04-2715-4D47-86C6-EBE251DA0B7D} + net48 Library - Minerals - Minerals - v4.8 - - - - false - none - false - ..\..\Assemblies - DEBUG; - prompt - 4 - false - false - - - full + false + ..\..\Assemblies\ + Minerals + true + false true - ..\..\Assemblies - prompt - 4 - false - false + none - - False - ..\..\..\Hardcore-SK-Source\R1.1\Assemblies\0Harmony.dll - - - references\Assembly-CSharp.dll - False - - ..\..\..\..\..\public\Hardcore-SK\Mods\Core_SK\Assemblies\Core_SK.dll - False - - - - references\UnityEngine.CoreModule.dll + ..\..\..\Assemblies\Core_SK.dll False + + + - - - - - - - - - - - - - - - - - - xml\StaticMineralBase.xml @@ -84,4 +36,5 @@ xml\Item_Resource_Gems.xml + \ No newline at end of file diff --git a/Mods/Minerals/Source/Minerals/Minerals.userprefs b/Mods/Minerals/Source/Minerals/Minerals.userprefs deleted file mode 100644 index f81d925b6d..0000000000 --- a/Mods/Minerals/Source/Minerals/Minerals.userprefs +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Mods/Minerals/Source/Minerals/Properties/AssemblyInfo.cs b/Mods/Minerals/Source/Minerals/Properties/AssemblyInfo.cs index 8cac6fada4..72014903a0 100644 --- a/Mods/Minerals/Source/Minerals/Properties/AssemblyInfo.cs +++ b/Mods/Minerals/Source/Minerals/Properties/AssemblyInfo.cs @@ -17,7 +17,8 @@ // The form "{Major}.{Minor}.*" will automatically update the build and revision, // and "{Major}.{Minor}.{Build}.*" will update just the revision. -[assembly: AssemblyVersion ("1.0.*")] +[assembly: AssemblyVersion ("15.0.0.0")] +[assembly: AssemblyFileVersion ("15.0.0.0")] // The following attributes are used to specify the signing key for the assembly, // if desired. See the Mono documentation for more information about signing. diff --git a/Mods/Minerals/Source/Minerals/StaticMineral.cs b/Mods/Minerals/Source/Minerals/StaticMineral.cs index b059cef792..9a6d9c76c0 100644 --- a/Mods/Minerals/Source/Minerals/StaticMineral.cs +++ b/Mods/Minerals/Source/Minerals/StaticMineral.cs @@ -1,4 +1,4 @@ - + using System; using System.Collections.Generic; using System.Linq; @@ -124,6 +124,7 @@ public virtual ThingDef_StaticMineral attributes public virtual void incPctYeild(float amount, Pawn miner) { + //Log.Message("incPctYeild Entered with Pawn: " + miner.def.defName + ". Amount: " + amount); // Increase yeild for when it is destroyed float minerYield = 1f; if (miner.def.race.IsMechanoid) @@ -172,6 +173,7 @@ public virtual void incPctYeild(float amount, Pawn miner) { minerSkill = miner.skills.GetSkill(SkillDefOf.Mining).Level; } + //Log.Message("minerSkill is: " + minerSkill); float proportionDamaged = (float) Mathf.Min(amount, HitPoints) / (float) MaxHitPoints; float proportionMined = proportionDamaged * minerYield; yieldPct += proportionMined; @@ -921,7 +923,7 @@ public class ThingDef_StaticMineral : ThingDef { // How far away it can spawn from an existing location // Even though it is a static mineral, the map initialization uses "reproduction" to make clusters - public int spawnRadius = 1; + public float spawnRadius = 1; // The probability that this mineral type will be spawned at all on a given map public float perMapProbability = 0.5f; @@ -1375,7 +1377,7 @@ public virtual StaticMineral SpawnAt(Map map, IntVec3 dest, float size) GenSpawn.Spawn(output, dest, map, WipeMode.Vanish); //category = originalDef; output.size = size; - map.mapDrawer.MapMeshDirty(dest, MapMeshFlag.Buildings); + map.mapDrawer.MapMeshDirty(dest, MapMeshFlagDefOf.Buildings); //Log.Message("Spawned " + defName + " at " + dest); return output; } @@ -1408,17 +1410,6 @@ Predicate isValidSite(Map myMap, IntVec3 myPosition) { return c => c.DistanceTo(myPosition) <= spawnRadius && CanSpawnAt(myMap, c); } - - Predicate isValidSiteDebug(Map myMap, IntVec3 myPosition) - { - return c => - { - Log.Message("TryFindReproductionDestination: isValidSiteDebug: c: " + c); - Log.Message("TryFindReproductionDestination: isValidSiteDebug: c.DistanceTo(myPosition): " + c.DistanceTo(myPosition)); - Log.Message("TryFindReproductionDestination: isValidSiteDebug: CanSpawnAt(myMap, c): " + CanSpawnAt(myMap, c)); - return c.DistanceTo(myPosition) <= spawnRadius && CanSpawnAt(myMap, c); - }; - } } @@ -1510,7 +1501,17 @@ public virtual float diversitySettingFactor() // The probablility of spawning at each point when a map is created public virtual float mapSpawnProbFactor(Map map) { - return tileSpawnProbFactor(map.Tile); + float result; + try + { + result = tileSpawnProbFactor(map.IsPocketMap? (map.Parent as PocketMapParent).sourceMap.Tile : map.Tile); + } + catch (Exception e) + { + Log.Warning("Minerals: mapSpawnProbFactor: exception caught: " + e + "\n" + map + "\n" + map.Tile + "\n" + map.IsPocketMap + "\n" + (map.Parent as PocketMapParent).sourceMap.Tile); + return 0; + } + return result; } // The probablility of spawning at each point when a map is created diff --git a/Mods/Minerals/Source/Minerals/harmonyPatching.cs b/Mods/Minerals/Source/Minerals/harmonyPatching.cs index 72c44781de..0fb5ebda08 100644 --- a/Mods/Minerals/Source/Minerals/harmonyPatching.cs +++ b/Mods/Minerals/Source/Minerals/harmonyPatching.cs @@ -9,64 +9,48 @@ using RimWorld; // RimWorld specific functions using Verse; // RimWorld universal objects using RimWorld.Planet; +using System.Runtime.CompilerServices; +using PatchOperationWhatHappened; +using SK.Enlighten; +using System.IO; +using Verse.Noise; +using Log = Verse.Log; +using SK; namespace Minerals { - - - - /* Replace slate with basalt in the Alpha biomes Pyroclastic Conflagration biome*/ - [HarmonyPatch(typeof(World))] - [HarmonyPatch("NaturalRockTypesIn")] + [HarmonyPatch(typeof(World), nameof(World.NaturalRockTypesIn))] public static class Minerals_World_NaturalRockTypesIn_Patch { + private static List allRockDefs; [HarmonyPostfix] - public static void MakeRocksAccordingToBiome(int tile, ref World __instance, ref IEnumerable __result) + public static IEnumerable MakeRocksAccordingToBiome(IEnumerable results, int tile) { - if (__instance.grid.tiles[tile].biome.defName == "AB_PyroclasticConflagration") + if (allRockDefs.NullOrEmpty()) { - List replacedList = new List(); - ThingDef item = DefDatabase.GetNamed("AB_Obsidianstone"); - replacedList.Add(item); - replacedList.Add(DefDatabase.GetNamed("ZF_BasaltBase")); - - __result = replacedList; + allRockDefs = DefDatabase.AllDefs.Where(x => + (x.building?.buildingTags?.Contains("BaseRock") ?? false) && !x.IsSmoothed) + .ToList(); } - else if (__instance.grid.tiles[tile].biome.defName == "AB_OcularForest" || __instance.grid.tiles[tile].biome.defName == "AB_GallatrossGraveyard" || __instance.grid.tiles[tile].biome.defName == "AB_GelatinousSuperorganism" || __instance.grid.tiles[tile].biome.defName == "AB_MechanoidIntrusion" || __instance.grid.tiles[tile].biome.defName == "AB_RockyCrags") { - return; + // Pick a set of random rocks + Rand.PushState(); + Rand.Seed = tile; + int num = Rand.RangeInclusive(MineralsMain.Settings.terrainCountRangeSetting.min, MineralsMain.Settings.terrainCountRangeSetting.max); + if (num > allRockDefs.Count) + { + num = allRockDefs.Count; } - else + List tempRockDefList = new List(allRockDefs); + List resultList = tempRockDefList.TakeRandomDistinct(num); + for (int i = 0; i < num; i++) { - // Pick a set of random rocks - Rand.PushState(); - Rand.Seed = tile; - List list = (from d in DefDatabase.AllDefs - where d.category == ThingCategory.Building && d.building.isNaturalRock && !d.building.isResourceRock && - !d.IsSmoothed && d.defName != "GU_RoseQuartz" && d.defName != "AB_SlimeStone" && - d.defName != "GU_AncientMetals" && d.defName != "AB_Cragstone" && d.defName != "AB_Obsidianstone" && - d.defName != "BiomesIslands_CoralRock" && d.defName != "LavaRock" && d.defName != "AB_Mudstone" - select d).ToList(); - int num = Rand.RangeInclusive(MineralsMain.Settings.terrainCountRangeSetting.min, MineralsMain.Settings.terrainCountRangeSetting.max); - if (num > list.Count) - { - num = list.Count; - } - List list2 = new List(); - for (int i = 0; i < num; i++) - { - ThingDef item = list.RandomElement(); - list.Remove(item); - list2.Add(item); - } - Rand.PopState(); - __result = list2; + yield return resultList[i]; } + Rand.PopState(); } } - - [StaticConstructorOnStartup] static class HarmonyPatches { @@ -74,21 +58,15 @@ static class HarmonyPatches static HarmonyPatches() { Harmony harmony = new Harmony("com.zacharyfoster.minerals"); - // Spawn rocks on map generation MethodInfo targetmethod = AccessTools.Method(typeof(GenStep_RockChunks), "Generate"); HarmonyMethod postfixmethod = new HarmonyMethod(typeof(HarmonyPatches).GetMethod("initNewMapRocks")); harmony.Patch(targetmethod, null, postfixmethod); - // Spawn ice after plants MethodInfo icetargetmethod = AccessTools.Method(typeof(GenStep_Plants), "Generate"); HarmonyMethod icepostfixmethod = new HarmonyMethod(typeof(HarmonyPatches).GetMethod("initNewMapIce")); harmony.Patch(icetargetmethod, null, icepostfixmethod); - - harmony.PatchAll(); - - } public static void initNewMapRocks(GenStep_RockChunks __instance, Map map) @@ -103,7 +81,7 @@ public static void initNewMapIce(GenStep_RockChunks __instance, Map map) [HarmonyPatch(typeof(SK.SkyfallerUtil))] [HarmonyPatch("SpawnSkyfaller")] - [HarmonyPatch(new Type[] {typeof(ThingDef), typeof(IEnumerable), typeof(IntVec3), typeof(Map) })] + [HarmonyPatch(new Type[] { typeof(ThingDef), typeof(IEnumerable), typeof(IntVec3), typeof(Map) })] static class ImpactPatch { [HarmonyPrefix] @@ -113,7 +91,7 @@ public static void Prefix(ref IEnumerable things) foreach (Thing item in things) { Thing toReturn = item; - if (item.def.mineable && (! StaticMineral.isMineral(item))) + if (item.def.mineable && (!StaticMineral.isMineral(item))) { // check if any of the minerals replace this one foreach (ThingDef_StaticMineral mineralType in DefDatabase.AllDefs) @@ -125,7 +103,7 @@ public static void Prefix(ref IEnumerable things) if (mineralType.ThingsToReplace.Any(item.def.defName.Equals)) { - toReturn = (StaticMineral) ThingMaker.MakeThing(mineralType); + toReturn = (StaticMineral)ThingMaker.MakeThing(mineralType); break; } } @@ -135,7 +113,68 @@ public static void Prefix(ref IEnumerable things) } things = replacementList; } - } + } + + [HarmonyPatch(typeof(GenStep_PreciousLump))] + [HarmonyPatch("Generate")] + [HarmonyPatch(new Type[] { typeof(Map), typeof(GenStepParams) })] + static class GenStep_PreciousLump_Patch + { + [HarmonyPrefix] + public static bool Prefix(GenStep_PreciousLump __instance, Map map, GenStepParams parms) + { + if (parms.sitePart != null && parms.sitePart.parms.preciousLumpResources != null) + __instance.forcedDefToScatter = parms.sitePart.parms.preciousLumpResources; + else + __instance.forcedDefToScatter = __instance.mineables.RandomElement(); + + if (__instance.forcedDefToScatter is ThingDef_StaticMineral) + { + ThingDef_StaticMineral mineral = __instance.forcedDefToScatter as ThingDef_StaticMineral; + float averageDropAmount = 0; + float averageMarketValue = 0; + foreach (var item in mineral.randomlyDropResources) + { + averageDropAmount += item.DropProbability * item.CountPerDrop; + averageMarketValue += (item.DropProbability * item.CountPerDrop) * DefDatabase.GetNamed(item.ResourceDefName).BaseMarketValue; + } + int count = mineral.randomlyDropResources.Count; + __instance.count = 1; + float randomRangeAmount = __instance.totalValueRange.RandomInRange; + int minimumLumps = Mathf.Max(Mathf.RoundToInt((averageMarketValue / __instance.totalValueRange.min) * 6), 2); + __instance.forcedLumpSize = Mathf.Max(Mathf.RoundToInt(randomRangeAmount / + ((averageDropAmount / count) * (averageMarketValue / count))), 1) + Rand.Range(minimumLumps, minimumLumps * 2); + + float preRoundedValue = randomRangeAmount / (averageDropAmount / count) * (averageMarketValue / count); + + //Log.Message("Calculation: " + randomRangeAmount + " / (" + averageDropAmount + " / " + count +") * (" + averageMarketValue + " / " + count + ") = " + preRoundedValue); + //Log.Message("Spawning Precious Lumps for: " + __instance.forcedDefToScatter.defName + ". Forced Lump size is: " + __instance.forcedLumpSize); + + GenStep_ScatterLumpsMineable gen = new GenStep_ScatterLumpsMineable + { + forcedDefToScatter = __instance.forcedDefToScatter, + count = __instance.count, + forcedLumpSize = __instance.forcedLumpSize + }; + + gen.Generate(map, parms); + + return false; + } + + return true; + } + } + [HarmonyPatch(typeof(CompLongRangeMineralScanner))] + [HarmonyPatch("SetDefaultTargetMineral")] + static class SetDefaultTargetMineral_Patch + { + [HarmonyPostfix] + public static void Postfix(CompLongRangeMineralScanner __instance) + { + Traverse.Create(__instance).Field("targetMineable").SetValue(ThingDefOfLocal.SolidOreGold); + } + } } } \ No newline at end of file