From 7e30ebe68eb39264d1683eaa57632a604748d737 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Sat, 22 Apr 2023 15:08:57 +0500 Subject: [PATCH] Optimized incest checks --- Source/IdeologyAddon/RelationHelpers.cs | 5 +++++ Source/IdeologyAddon/RomanceChanceFactorHelpers.cs | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Source/IdeologyAddon/RelationHelpers.cs b/Source/IdeologyAddon/RelationHelpers.cs index 2a5fe77..1033307 100644 --- a/Source/IdeologyAddon/RelationHelpers.cs +++ b/Source/IdeologyAddon/RelationHelpers.cs @@ -11,6 +11,11 @@ namespace RJWSexperience.Ideology /// public static BloodRelationDegree GetBloodRelationDegree(Pawn pawn, Pawn partner) { + if (!pawn.relations.FamilyByBlood.Contains(partner)) + { + return BloodRelationDegree.NotRelated; + } + PawnRelationDef closestBloodRelation = pawn .GetRelations(partner) ?.Where(def => def.familyByBloodRelation) diff --git a/Source/IdeologyAddon/RomanceChanceFactorHelpers.cs b/Source/IdeologyAddon/RomanceChanceFactorHelpers.cs index 298916c..9a834b2 100644 --- a/Source/IdeologyAddon/RomanceChanceFactorHelpers.cs +++ b/Source/IdeologyAddon/RomanceChanceFactorHelpers.cs @@ -17,11 +17,10 @@ namespace RJWSexperience.Ideology /// public static float GetRomanceChanceFactor(Pawn pawn, Pawn partner) { - IEnumerable relations = pawn.GetRelations(partner).Where(def => def.familyByBloodRelation); PreceptDef incestuousPrecept = pawn.Ideo?.PreceptsListForReading.Select(precept => precept.def).FirstOrFallback(def => def.issue == VariousDefOf.Incestuos); float romanceChanceFactor = 1f; - if (!relations.Any()) + if (!pawn.relations.FamilyByBlood.Contains(partner)) { if (incestuousPrecept == RsiPreceptDefOf.Incestuos_IncestOnly) { @@ -33,6 +32,7 @@ namespace RJWSexperience.Ideology } } + IEnumerable relations = pawn.GetRelations(partner).Where(def => def.familyByBloodRelation); foreach (PawnRelationDef relationDef in relations) { romanceChanceFactor *= GetRomanceChanceFactor(relationDef, incestuousPrecept);