parent fix

This commit is contained in:
Jaaldabaoth 2024-06-10 19:46:45 +02:00
parent 1a3b6f3432
commit 20cc97daa3
3 changed files with 131 additions and 1 deletions

Binary file not shown.

129
PatchGetParents.cs Normal file
View file

@ -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<DirectPawnRelation> 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<DirectPawnRelation> 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;
}
}
}
}
}

View file

@ -64,6 +64,7 @@
<Compile Include="Common\ModLog.cs" /> <Compile Include="Common\ModLog.cs" />
<Compile Include="Common\Defs\TickIntervalExtension.cs" /> <Compile Include="Common\Defs\TickIntervalExtension.cs" />
<Compile Include="Common\Patches\PatchImplants.cs" /> <Compile Include="Common\Patches\PatchImplants.cs" />
<Compile Include="Common\Patches\Patch_ParentRelationUtility_GetParents.cs" />
<Compile Include="Genes\Breeding\Abilities\CompAbilityEffect_MatingCall.cs" /> <Compile Include="Genes\Breeding\Abilities\CompAbilityEffect_MatingCall.cs" />
<Compile Include="Genes\Breeding\Abilities\CompAbilityEffect_PheromoneSpit.cs" /> <Compile Include="Genes\Breeding\Abilities\CompAbilityEffect_PheromoneSpit.cs" />
<Compile Include="Genes\Breeding\Abilities\CompProperties_AbilityMatingCall.cs" /> <Compile Include="Genes\Breeding\Abilities\CompProperties_AbilityMatingCall.cs" />
@ -217,7 +218,7 @@
<Private>False</Private> <Private>False</Private>
</Reference> </Reference>
<Reference Include="RJWSexperience"> <Reference Include="RJWSexperience">
<HintPath>..\..\rjw-sexperience\1.5\Assemblies\RJWSexperience.dll</HintPath> <HintPath>..\..\rjw-sexperience-master\1.5\Assemblies\RJWSexperience.dll</HintPath>
<Private>False</Private> <Private>False</Private>
</Reference> </Reference>
<Reference Include="System" /> <Reference Include="System" />