diff --git a/Common/Assemblies/Rjw-Genes.dll b/Common/Assemblies/Rjw-Genes.dll index 30fbc3b..98b02a6 100644 Binary files a/Common/Assemblies/Rjw-Genes.dll and b/Common/Assemblies/Rjw-Genes.dll differ diff --git a/PatchGetParents.cs b/PatchGetParents.cs new file mode 100644 index 0000000..9038d17 --- /dev/null +++ b/PatchGetParents.cs @@ -0,0 +1,129 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using HarmonyLib; +using RimWorld; +using Verse; +using rjw; + +namespace RJW_Genes +{ + [HarmonyPatch(typeof(ParentRelationUtility))] + public class PatchGetParents + { + // Token: 0x0600000F RID: 15 + [HarmonyPostfix] + [HarmonyPatch("GetFather")] + private static void FatherPostfix(ref Pawn __result, Pawn pawn) + { + if (__result == null && pawn.RaceProps.IsFlesh && pawn.relations != null) + { + List directRelations = pawn.relations.DirectRelations; + bool flag = false; + for (int i = 0; i < directRelations.Count; i++) + { + DirectPawnRelation directPawnRelation = directRelations[i]; + if (directPawnRelation.def == PawnRelationDefOf.Parent) + { + if (flag) + { + __result = directPawnRelation.otherPawn; + return; + } + flag = true; + } + } + } + } + + // Token: 0x06000010 RID: 16 + [HarmonyPostfix] + [HarmonyPatch("GetMother")] + private static void MotherPostfix(ref Pawn __result, Pawn pawn) + { + if (__result == null && pawn.RaceProps.IsFlesh && pawn.relations != null) + { + List directRelations = pawn.relations.DirectRelations; + for (int i = 0; i < directRelations.Count; i++) + { + DirectPawnRelation directPawnRelation = directRelations[i]; + if (directPawnRelation.def == PawnRelationDefOf.Parent) + { + __result = directPawnRelation.otherPawn; + return; + } + } + } + } + + // Token: 0x0600001F RID: 31 + [HarmonyPostfix] + [HarmonyPatch("HasSameFather")] + private static void HasSameFatherPostfix(ref bool __result, Pawn pawn, Pawn other) + { + if (!__result && pawn.RaceProps.IsFlesh && pawn.relations != null) + { + Pawn parent = pawn.GetFather(); + Pawn parent2 = other.GetMother(); + Pawn parent3 = other.GetFather(); + Pawn parent4 = pawn.GetMother(); + if (parent != null && parent2 != null && parent == parent2) + { + __result = true; + return; + } + if (parent3 != null && parent4 != null && parent3 == parent4) + { + __result = true; + return; + } + if (parent != null && parent3 != null && parent == parent3) + { + __result = true; + return; + } + if (parent2 != null && parent4 != null && parent2 == parent4) + { + __result = true; + return; + } + } + } + + // Token: 0x06000020 RID: 32 + [HarmonyPostfix] + [HarmonyPatch("HasSameMother")] + private static void HasSameMotherPostfix(ref bool __result, Pawn pawn, Pawn other) + { + if (!__result && pawn.RaceProps.IsFlesh && pawn.relations != null) + { + Pawn parent = pawn.GetFather(); + Pawn parent2 = other.GetMother(); + Pawn parent3 = other.GetFather(); + Pawn parent4 = pawn.GetMother(); + if (parent != null && parent2 != null && parent == parent2) + { + __result = true; + return; + } + if (parent3 != null && parent4 != null && parent3 == parent4) + { + __result = true; + return; + } + if (parent != null && parent3 != null && parent == parent3) + { + __result = true; + return; + } + if (parent2 != null && parent4 != null && parent2 == parent4) + { + __result = true; + return; + } + } + } + } +} diff --git a/Source/Rjw-Genes.csproj b/Source/Rjw-Genes.csproj index 6c6ef9a..500f87e 100644 --- a/Source/Rjw-Genes.csproj +++ b/Source/Rjw-Genes.csproj @@ -64,6 +64,7 @@ + @@ -217,7 +218,7 @@ False - ..\..\rjw-sexperience\1.5\Assemblies\RJWSexperience.dll + ..\..\rjw-sexperience-master\1.5\Assemblies\RJWSexperience.dll False