From da26772efb00bace1b2612f71bf5716c19271068 Mon Sep 17 00:00:00 2001 From: Zsar Date: Thu, 20 Apr 2023 21:35:30 +0200 Subject: [PATCH 1/2] fix #6 "Beginning to panic tries to path even if incapacitated" --- Source/Scripts/Utilities/SexInteractionUtility.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Scripts/Utilities/SexInteractionUtility.cs b/Source/Scripts/Utilities/SexInteractionUtility.cs index 53ce3ce..31dc164 100644 --- a/Source/Scripts/Utilities/SexInteractionUtility.cs +++ b/Source/Scripts/Utilities/SexInteractionUtility.cs @@ -107,7 +107,7 @@ namespace Privacy_Please if (witness?.Drafted == true || witness?.mindState?.duty?.def.alwaysShowWeapon == true) return; // Panic reaction - if (reactionOfWitness == ReactionToSexAct.Panic) + if (reactionOfWitness == ReactionToSexAct.Panic && !witness.Downed) { Job job = JobMaker.MakeJob(JobDefOf.FleeAndCower, CellFinderLoose.GetFleeDest(witness, new List() { pawn }, 24f), pawn); From f016c7009d375f94dd13d26fdc8e53745ecb0e36 Mon Sep 17 00:00:00 2001 From: Zsar Date: Thu, 20 Apr 2023 22:51:08 +0200 Subject: [PATCH 2/2] fix #6 preemptively for unused vomit reaction --- .../Utilities/SexInteractionUtility.cs | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/Source/Scripts/Utilities/SexInteractionUtility.cs b/Source/Scripts/Utilities/SexInteractionUtility.cs index 31dc164..ea79959 100644 --- a/Source/Scripts/Utilities/SexInteractionUtility.cs +++ b/Source/Scripts/Utilities/SexInteractionUtility.cs @@ -2,7 +2,6 @@ using System.Linq; using Verse; using Verse.AI; -using Verse.AI.Group; using RimWorld; using rjw; using UnityEngine; @@ -115,24 +114,31 @@ namespace Privacy_Please witness.jobs.EndCurrentJob(JobCondition.InterruptForced, false, false); witness.jobs.StartJob(job); } - // Vomit reaction else if (reactionOfWitness == ReactionToSexAct.Nausea) { - Job jobVomit = JobMaker.MakeJob(JobDefOf.Vomit); - Job jobFlee = JobMaker.MakeJob(JobDefOf.FleeAndCower, CellFinderLoose.GetFleeDest(witness, new List() { pawn }, 24f), pawn); + bool vomit = Random.value <= 0.25f; + bool flee = !witness.Downed; + if (!(flee || vomit)) return; witness.jobs.ClearQueuedJobs(); witness.jobs.EndCurrentJob(JobCondition.InterruptForced, false, false); - if (Random.value <= 0.25f) + System.Action doFleeJob; + if (vomit) { + Job jobVomit = JobMaker.MakeJob(JobDefOf.Vomit); witness.jobs.StartJob(jobVomit); - witness.jobs.jobQueue.EnqueueFirst(jobFlee); + doFleeJob = job => witness.jobs.jobQueue.EnqueueFirst(job); } - else - { witness.jobs.StartJob(jobFlee); } + { doFleeJob = job => witness.jobs.StartJob(job); } + + if (flee) + { + Job jobFlee = JobMaker.MakeJob(JobDefOf.FleeAndCower, CellFinderLoose.GetFleeDest(witness, new List() { pawn }, 24f), pawn); + doFleeJob(jobFlee); + } } }