From b6942e3c107de76d6be6b9a994cac5a5ce8173d2 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Sat, 29 Oct 2022 16:22:41 +0500 Subject: [PATCH] Fixed biotech pregnancy not counting for pregnancy precepts --- Source/IdeologyAddon/IdeoUtility.cs | 13 +++++++++++++ .../ThoughtWorker_Precept_NonPregnant.cs | 3 +-- .../ThoughtWorker_Precept_NonPregnant_Social.cs | 3 +-- .../ThoughtWorker_Precept_Pregnant.cs | 3 +-- .../ThoughtWorker_Precept_Pregnant_Social.cs | 3 +-- Source/IdeologyAddon/VariousDefOf.cs | 1 + 6 files changed, 18 insertions(+), 8 deletions(-) diff --git a/Source/IdeologyAddon/IdeoUtility.cs b/Source/IdeologyAddon/IdeoUtility.cs index d02dda3..d37d4dc 100644 --- a/Source/IdeologyAddon/IdeoUtility.cs +++ b/Source/IdeologyAddon/IdeoUtility.cs @@ -80,5 +80,18 @@ namespace RJWSexperience.Ideology return bestSeenSize; } + + public static bool IsVisiblyPregnant(Pawn pawn) + { + Hediff pregnancy = PregnancyHelper.GetPregnancy(pawn); + + // Currently RJW does not check Biotech pregnancy + if (pregnancy == null && VariousDefOf.PregnantHuman != null) + { + pregnancy = pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.PregnantHuman); + } + + return pregnancy?.Visible == true; + } } } diff --git a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnant.cs b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnant.cs index e51ac29..124c0bf 100644 --- a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnant.cs +++ b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnant.cs @@ -1,5 +1,4 @@ using RimWorld; -using rjw; using Verse; namespace RJWSexperience.Ideology.PreceptWorkers @@ -15,7 +14,7 @@ namespace RJWSexperience.Ideology.PreceptWorkers /// protected override ThoughtState ShouldHaveThought(Pawn p) { - return p?.DevelopmentalStage == DevelopmentalStage.Adult && PregnancyHelper.GetPregnancy(p)?.Visible != true; + return p?.DevelopmentalStage == DevelopmentalStage.Adult && !IdeoUtility.IsVisiblyPregnant(p); } } } diff --git a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnant_Social.cs b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnant_Social.cs index c079682..465c4ce 100644 --- a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnant_Social.cs +++ b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_NonPregnant_Social.cs @@ -1,5 +1,4 @@ using RimWorld; -using rjw; using Verse; namespace RJWSexperience.Ideology.PreceptWorkers @@ -18,7 +17,7 @@ namespace RJWSexperience.Ideology.PreceptWorkers { return otherPawn?.DevelopmentalStage == DevelopmentalStage.Adult && p?.DevelopmentalStage == DevelopmentalStage.Adult && - PregnancyHelper.GetPregnancy(otherPawn)?.Visible != true; + !IdeoUtility.IsVisiblyPregnant(otherPawn); } } } diff --git a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant.cs b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant.cs index 6677ddf..bc980c1 100644 --- a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant.cs +++ b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant.cs @@ -1,5 +1,4 @@ using RimWorld; -using rjw; using Verse; namespace RJWSexperience.Ideology.PreceptWorkers @@ -15,7 +14,7 @@ namespace RJWSexperience.Ideology.PreceptWorkers /// protected override ThoughtState ShouldHaveThought(Pawn p) { - return p?.DevelopmentalStage == DevelopmentalStage.Adult && PregnancyHelper.GetPregnancy(p)?.Visible == true; + return p?.DevelopmentalStage == DevelopmentalStage.Adult && IdeoUtility.IsVisiblyPregnant(p); } } } diff --git a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant_Social.cs b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant_Social.cs index f52d009..3a57bc2 100644 --- a/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant_Social.cs +++ b/Source/IdeologyAddon/PreceptWorkers/ThoughtWorker_Precept_Pregnant_Social.cs @@ -1,5 +1,4 @@ using RimWorld; -using rjw; using Verse; namespace RJWSexperience.Ideology.PreceptWorkers @@ -18,7 +17,7 @@ namespace RJWSexperience.Ideology.PreceptWorkers { return otherPawn?.DevelopmentalStage == DevelopmentalStage.Adult && p?.DevelopmentalStage == DevelopmentalStage.Adult && - PregnancyHelper.GetPregnancy(otherPawn)?.Visible == true; + IdeoUtility.IsVisiblyPregnant(otherPawn); } } } diff --git a/Source/IdeologyAddon/VariousDefOf.cs b/Source/IdeologyAddon/VariousDefOf.cs index 52d2180..fb926ce 100644 --- a/Source/IdeologyAddon/VariousDefOf.cs +++ b/Source/IdeologyAddon/VariousDefOf.cs @@ -22,5 +22,6 @@ namespace RJWSexperience.Ideology [MayRequireIdeology] public static readonly PreceptDef Submissive_Male; [MayRequireIdeology] public static readonly PreceptDef Submissive_Female; [MayRequireIdeology] public static readonly PreceptDef ProselyzingByOrgasm; + [MayRequireBiotech] public static readonly HediffDef PregnantHuman; } }