From f433263eac8ecb4a3611e6b64c27aab58dd79751 Mon Sep 17 00:00:00 2001 From: Stardust3D <3dstardust@gmail.com> Date: Tue, 14 Dec 2021 18:15:09 +0100 Subject: [PATCH] prevent original method "TraverseBody" from executing and take over its work --- 1.3/Assemblies/RJW_patch_Autopsy.dll | Bin 6656 -> 8704 bytes Assemblies/RJW_patch_Autopsy.dll | Bin 6656 -> 8704 bytes .../Autopsy RJW Patch.csproj | 5 +- Source/RJW_patch_Autopsy/Mod.cs | 2 +- .../Patches/NewMedicalRecipesUtilityPatch.cs | 56 ++++++++++++++---- .../Properties/AssemblyInfo.cs | 6 +- 6 files changed, 52 insertions(+), 17 deletions(-) diff --git a/1.3/Assemblies/RJW_patch_Autopsy.dll b/1.3/Assemblies/RJW_patch_Autopsy.dll index bfab639626d0bb21de71c7d089aec75f48645065..f12ecf3d95c4e5122a2c3893cb5d137aadcc09b8 100644 GIT binary patch literal 8704 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 diff --git a/Assemblies/RJW_patch_Autopsy.dll b/Assemblies/RJW_patch_Autopsy.dll index bfab639626d0bb21de71c7d089aec75f48645065..f12ecf3d95c4e5122a2c3893cb5d137aadcc09b8 100644 GIT binary patch literal 8704 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 diff --git a/Source/RJW_patch_Autopsy/Autopsy RJW Patch.csproj b/Source/RJW_patch_Autopsy/Autopsy RJW Patch.csproj index 8121149..df29d59 100644 --- a/Source/RJW_patch_Autopsy/Autopsy RJW Patch.csproj +++ b/Source/RJW_patch_Autopsy/Autopsy RJW Patch.csproj @@ -49,9 +49,8 @@ ..\..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll False - - False - ..\..\..\__LocalCopy_Harvest Organs Post Mortem_-11-12\1.3\Assemblies\Autopsy.dll + + ..\..\..\RimwoldAutopsy\1.3\Assemblies\Autopsy.dll ..\..\..\..\..\..\workshop\content\294100\818773962\Assemblies\HugsLib.dll diff --git a/Source/RJW_patch_Autopsy/Mod.cs b/Source/RJW_patch_Autopsy/Mod.cs index 24be257..98f6bfe 100644 --- a/Source/RJW_patch_Autopsy/Mod.cs +++ b/Source/RJW_patch_Autopsy/Mod.cs @@ -4,7 +4,7 @@ namespace RJW_patch_Autopsy { public class Mod : ModBase { - public override string ModIdentifier => "RJW Patch - Autopsy"; + public override string ModIdentifier => "Stardust3D.RJW.patch.Autopsy"; } } \ No newline at end of file diff --git a/Source/RJW_patch_Autopsy/Patches/NewMedicalRecipesUtilityPatch.cs b/Source/RJW_patch_Autopsy/Patches/NewMedicalRecipesUtilityPatch.cs index 97f2e9c..633149c 100644 --- a/Source/RJW_patch_Autopsy/Patches/NewMedicalRecipesUtilityPatch.cs +++ b/Source/RJW_patch_Autopsy/Patches/NewMedicalRecipesUtilityPatch.cs @@ -11,26 +11,62 @@ namespace RJW_patch_Autopsy [HarmonyPatch(typeof(NewMedicalRecipesUtility), "TraverseBody")] public static class NewMedicalRecipesUtilityPatch { - [HarmonyPostfix] - public static void AddRjwParts(RecipeInfo recipeInfo, Corpse corpse, float skillChance, ref IEnumerable __result) + [HarmonyPrefix] + public static bool AddRjwParts(RecipeInfo recipeInfo, Corpse corpse, float skillChance, ref IEnumerable __result) { - var previousResult = __result.ToList(); + //Collect vanilla parts + BodyPartRecord core = corpse.InnerPawn.RaceProps.body.corePart; + List queue = new List { core }; + HediffSet hediffSet = corpse.InnerPawn.health.hediffSet; + List results = new List(); + List damagedParts = new List(); + while (queue.Count > 0) + { + BodyPartRecord part = queue.First(); + queue.Remove(part); + //Drop parts and bionics that are higher on the body tree. + if (NewMedicalRecipesUtility.TryGetParts(corpse, recipeInfo, part, skillChance, ref results, ref damagedParts) && core != part) + continue; + queue.AddRange(part.parts.Where(x => !hediffSet.PartIsMissing(x))); + } + + foreach (BodyPartRecord part in damagedParts) NewMedicalRecipesUtility.DamageHarvested(corpse.InnerPawn, part); //Collect rjw rediffs - IEnumerable rjwDiffs = from x in corpse.InnerPawn.health.hediffSet.hediffs - where x is Hediff_PartBaseNatural || x is Hediff_PartBaseArtifical - select x; + List rjwNaturalDiffs = (from x in corpse.InnerPawn.health.hediffSet.hediffs + where x is Hediff_PartBaseNatural + select x).ToList(); + List rjwArtificialDiffs = (from x in corpse.InnerPawn.health.hediffSet.hediffs + where x is Hediff_PartBaseArtifical + select x).ToList(); + + //Log.Message(String.Format("Collected {0} natural and {1} artifical hediffs", rjwNaturalDiffs.Count(), rjwArtificialDiffs.Count())); //Collect parts from hediffs rjw's surgery methods - IEnumerable rjwThings = rjwDiffs.Select(d => SexPartAdder.recipePartRemover(d)); + List rjwNaturalThings = rjwNaturalDiffs.Select(d => SexPartAdder.recipePartRemover(d)).ToList(); + List rjwArtificialThings = rjwArtificialDiffs.Select(d => SexPartAdder.recipePartRemover(d)).ToList(); + + //Log.Message(String.Format("Collected {0} things from {1} natural and {2} things from {3} artifical hediffs", rjwArtificialThings.Count(), rjwNaturalDiffs.Count(), rjwArtificialThings.Count(), rjwArtificialDiffs.Count())); //Simulate success chance scaled with skill etc. - rjwThings.ToList().ForEach(t => { if (Rand.Chance(Math.Min(skillChance, recipeInfo.NaturalChance))) previousResult.Add(t); }); + rjwNaturalThings.ToList().ForEach(t => { if (Rand.Chance(Math.Min(skillChance, recipeInfo.NaturalChance))) results.Add(t); }); + rjwArtificialThings.ToList().ForEach(t => { if (Rand.Chance(Math.Min(skillChance, recipeInfo.BionicChance))) results.Add(t); }); //Remove all parts that were tried to harves from the corpse - rjwDiffs.ToList().ForEach(d => corpse.InnerPawn.health.RemoveHediff(d)); + rjwNaturalDiffs.ToList().ForEach(d => corpse.InnerPawn.health.RemoveHediff(d)); + rjwArtificialDiffs.ToList().ForEach(d => corpse.InnerPawn.health.RemoveHediff(d)); - __result = previousResult; + if (results.Count() > recipeInfo.PartNumber) + { + Random random = new Random(); + __result = results.OrderBy(i => random.Next()).Take(recipeInfo.PartNumber); + } + else + { + __result = results; + } + + return false; } } } diff --git a/Source/RJW_patch_Autopsy/Properties/AssemblyInfo.cs b/Source/RJW_patch_Autopsy/Properties/AssemblyInfo.cs index 3856236..8117f2a 100644 --- a/Source/RJW_patch_Autopsy/Properties/AssemblyInfo.cs +++ b/Source/RJW_patch_Autopsy/Properties/AssemblyInfo.cs @@ -9,7 +9,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("RJW_patch_Autopsy")] -[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyCopyright("©2021 Stardust3D")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -31,5 +31,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] \ No newline at end of file +[assembly: AssemblyVersion("1.0.1.0")] +[assembly: AssemblyFileVersion("1.0.1.0")] \ No newline at end of file