From 8888f76708ebc5defa5dc2bdb7b6f5108d8b9fc7 Mon Sep 17 00:00:00 2001 From: Reisen Usagi Date: Tue, 22 Mar 2022 20:15:38 -0300 Subject: [PATCH 1/2] Fix NRE when jobdriver partner is null --- 1.3/Source/Comps/CompBodyAnimator.cs | 29 +++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/1.3/Source/Comps/CompBodyAnimator.cs b/1.3/Source/Comps/CompBodyAnimator.cs index 9f5f95c..0d9c966 100644 --- a/1.3/Source/Comps/CompBodyAnimator.cs +++ b/1.3/Source/Comps/CompBodyAnimator.cs @@ -501,14 +501,29 @@ namespace Rimworld_Animations { public bool LoopNeverending() { - if(pawn?.jobs?.curDriver != null && - (pawn.jobs.curDriver is JobDriver_Sex) && (pawn.jobs.curDriver as JobDriver_Sex).neverendingsex || - (pawn.jobs.curDriver is JobDriver_SexBaseReciever) && (pawn.jobs.curDriver as JobDriver_Sex).Partner?.jobs?.curDriver != null && ((pawn.jobs.curDriver as JobDriver_Sex).Partner.jobs.curDriver as JobDriver_Sex).neverendingsex) - { - return true; - } + return IsNeverEndingSex(pawn) || IsNeverEndingSexPartner(pawn); + } - return false; + public static bool IsNeverEndingSex(Pawn pawn) + { + bool hasDriver = pawn?.jobs?.curDriver != null; + if (!hasDriver) + return false; + + return (pawn.jobs.curDriver is JobDriver_Sex jds) && jds.neverendingsex; + } + + public static bool IsNeverEndingSexPartner(Pawn pawn) + { + bool hasDriver = pawn?.jobs?.curDriver != null; + if (!hasDriver) + return false; + + var partner = (pawn.jobs.curDriver is JobDriver_SexBaseReciever jds) ? jds.Partner : null; + if (partner == null) + return false; + + return IsNeverEndingSex(partner); } public void ResetOnLoop() From 3a0b9deb11ec0b8a42635c36c6b0b6611bfbabcb Mon Sep 17 00:00:00 2001 From: ghostclinic3YTB Date: Wed, 21 Jun 2023 20:10:05 +0000 Subject: [PATCH 2/2] Fix orgasm progress --- .../JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs | 1 + .../Source/Patches/HarmonyPatch_JobDriver_SexBaseInitiator.cs | 1 + 2 files changed, 2 insertions(+) diff --git a/1.4/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs b/1.4/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs index 260d924..00227c4 100644 --- a/1.4/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs +++ b/1.4/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs @@ -109,6 +109,7 @@ namespace Rimworld_Animations { int animTicks = anim.animationTimeTicks - (fastAnimForQuickie ? anim.animationStages[0].playTimeTicks : 0); (pawnsToAnimate[i].jobs.curDriver as JobDriver_Sex).ticks_left = animTicks; (pawnsToAnimate[i].jobs.curDriver as JobDriver_Sex).sex_ticks = animTicks; + (pawnsToAnimate[i].jobs.curDriver as JobDriver_Sex).orgasmStartTick = animTicks; (pawnsToAnimate[i].jobs.curDriver as JobDriver_Sex).duration = animTicks; diff --git a/Patch_SexToysMasturbation/Source/Patches/HarmonyPatch_JobDriver_SexBaseInitiator.cs b/Patch_SexToysMasturbation/Source/Patches/HarmonyPatch_JobDriver_SexBaseInitiator.cs index ef3f4fb..9f29203 100644 --- a/Patch_SexToysMasturbation/Source/Patches/HarmonyPatch_JobDriver_SexBaseInitiator.cs +++ b/Patch_SexToysMasturbation/Source/Patches/HarmonyPatch_JobDriver_SexBaseInitiator.cs @@ -59,6 +59,7 @@ namespace Patch_SexToysMasturbation (pawn.jobs.curDriver as JobDriver_Sex).ticks_left = anim.animationTimeTicks; (pawn.jobs.curDriver as JobDriver_Sex).sex_ticks = anim.animationTimeTicks; + (pawn.jobs.curDriver as JobDriver_Sex).orgasmStartTick = anim.animationTimeTicks; (pawn.jobs.curDriver as JobDriver_Sex).duration = anim.animationTimeTicks; } else