From 1b590ba2a25a0e2a494d72dbb05e2b282b151946 Mon Sep 17 00:00:00 2001 From: Vegapnk Date: Fri, 10 Mar 2023 08:03:07 +0100 Subject: [PATCH] Hardened Utility to account for childs with in-active lifeforce --- Source/Genes/GeneUtility.cs | 31 +++++++++++++++++-- .../Genes/Life_Force/UI/Alert_LowFertilin.cs | 2 +- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/Source/Genes/GeneUtility.cs b/Source/Genes/GeneUtility.cs index 66cfd74..a6361aa 100644 --- a/Source/Genes/GeneUtility.cs +++ b/Source/Genes/GeneUtility.cs @@ -43,7 +43,9 @@ namespace RJW_Genes { if (HasLifeForce(pawn)) { - Gene_LifeForce gene = pawn.genes.GetFirstGeneOfType(); + Gene_LifeForce gene = pawn.genes.GetFirstGeneOfType(); + if (gene == null || !gene.Active) + return false; if (gene.Resource.Value < gene.targetValue) { return true; @@ -57,6 +59,8 @@ namespace RJW_Genes if (HasLifeForce(pawn)) { Gene_LifeForce gene = pawn.genes.GetFirstGeneOfType(); + if (gene == null || !gene.Active) + return false; if (gene.Resource.Value < gene.MinLevelForAlert) { return true; @@ -122,4 +126,27 @@ namespace RJW_Genes public static bool IsCumEater(Pawn pawn) { return HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_cum_eater); } } -} \ No newline at end of file +} + +/* +Exception in Verse.AI.ThinkNode_Priority TryIssueJobPackage: System.NullReferenceException: Object reference not set to an instance of an object + at RJW_Genes.GeneUtility.HasLowLifeForce (Verse.Pawn pawn) [0x00014] in < 881b7541af8144a78a14c9dad08e43c7 >:0 + at RJW_Genes.ThinkNode_ConditionalLowLifeForce.Satisfied(Verse.Pawn p) [0x00000] in < 881b7541af8144a78a14c9dad08e43c7 >:0 + at Verse.AI.ThinkNode_Conditional.TryIssueJobPackage(Verse.Pawn pawn, Verse.AI.JobIssueParams jobParams) [0x00000] in < 38562b1a2ab64eacb931fb5df05ca994 >:0 + at Verse.AI.ThinkNode_Priority.TryIssueJobPackage(Verse.Pawn pawn, Verse.AI.JobIssueParams jobParams) [0x00022] in < 38562b1a2ab64eacb931fb5df05ca994 >:0 +UnityEngine.StackTraceUtility:ExtractStackTrace() +Verse.Log:Error(string) +Verse.AI.ThinkNode_Priority:TryIssueJobPackage(Verse.Pawn, Verse.AI.JobIssueParams) +Verse.AI.ThinkNode_SubtreesByTag:TryIssueJobPackage(Verse.Pawn, Verse.AI.JobIssueParams) +Verse.AI.ThinkNode_Priority:TryIssueJobPackage(Verse.Pawn, Verse.AI.JobIssueParams) +Verse.AI.Pawn_JobTracker:DetermineNextJob(Verse.ThinkTreeDef &) +Verse.AI.Pawn_JobTracker:TryFindAndStartJob() +Verse.AI.Pawn_JobTracker:EndCurrentJob(Verse.AI.JobCondition, bool, bool) +Verse.AI.Pawn_JobTracker:JobTrackerTick() +Verse.Pawn:Tick() +Verse.TickList:Tick() +(wrapper dynamic - method) Verse.TickManager:Verse.TickManager.DoSingleTick_Patch2(Verse.TickManager) +Verse.TickManager:TickManagerUpdate() +Verse.Game:UpdatePlay() +Verse.Root_Play:Update() +*/ \ No newline at end of file diff --git a/Source/Genes/Life_Force/UI/Alert_LowFertilin.cs b/Source/Genes/Life_Force/UI/Alert_LowFertilin.cs index d76d4ce..09601de 100644 --- a/Source/Genes/Life_Force/UI/Alert_LowFertilin.cs +++ b/Source/Genes/Life_Force/UI/Alert_LowFertilin.cs @@ -42,7 +42,7 @@ namespace RJW_Genes { Pawn_GeneTracker genes = pawn.genes; Gene_LifeForce gene_Lifeforce = (genes != null) ? genes.GetFirstGeneOfType() : null; - if (gene_Lifeforce != null && gene_Lifeforce.Value < gene_Lifeforce.MinLevelForAlert) + if (gene_Lifeforce != null && gene_Lifeforce.Active && gene_Lifeforce.Value < gene_Lifeforce.MinLevelForAlert) { this.targets.Add(pawn); this.targetLabels.Add(pawn.NameShortColored.Resolve());