From 315a57e53de45855d958d210cdb5cdbee8f2d7eb Mon Sep 17 00:00:00 2001 From: c0ffee Date: Mon, 22 Apr 2024 14:46:00 -0700 Subject: [PATCH] fixed: invis sleeping sex job length matches anim length --- 1.5/Assemblies/Rimworld-Animations.dll | Bin 35328 -> 38400 bytes 1.5/Source/Comps/CompExtendedAnimator.cs | 17 ++++++++ ...HarmonyPatch_JobDriver_SexBaseInitiator.cs | 18 ++++---- .../JobDriver_Sex/HarmonyPatch_Animate.cs | 39 ++++++++++++++++++ .../HarmonyPatch_PlaySexSounds.cs | 0 .../JobDriver_Sex}/HarmonyPatch_SexTick.cs | 0 ...onyPatch_JobDriver_SexBaseReceiverLoved.cs | 29 +++++++++++++ 1.5/Source/Utilities/AnimationUtility.cs | 6 +++ Rimworld-Animations.csproj | 6 ++- 9 files changed, 104 insertions(+), 11 deletions(-) create mode 100644 1.5/Source/Patches/RJWPatches/JobDrivers/JobDriver_Sex/HarmonyPatch_Animate.cs rename 1.5/Source/Patches/RJWPatches/{ => JobDrivers/JobDriver_Sex}/HarmonyPatch_PlaySexSounds.cs (100%) rename 1.5/Source/Patches/RJWPatches/{ => JobDrivers/JobDriver_Sex}/HarmonyPatch_SexTick.cs (100%) diff --git a/1.5/Assemblies/Rimworld-Animations.dll b/1.5/Assemblies/Rimworld-Animations.dll index 56a78fd4736a3adf2ab02f7fec50ec3f923473d4..9ecd0832967adcf3ee268bfdf5a63adf8d6041b8 100644 GIT binary patch literal 38400 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 Y{FwT8c+QvKpZzaU`2UUm7fay(0wxnH;Q#;t literal 35328 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 diff --git a/1.5/Source/Comps/CompExtendedAnimator.cs b/1.5/Source/Comps/CompExtendedAnimator.cs index 2c57aa8..463dd3f 100644 --- a/1.5/Source/Comps/CompExtendedAnimator.cs +++ b/1.5/Source/Comps/CompExtendedAnimator.cs @@ -51,6 +51,23 @@ namespace Rimworld_Animations { } } + public int AnimationLength + { + get + { + if (!IsAnimating) return 0; + + int groupAnimLength = 0; + foreach(AnimationDef anim in animationQueue) + { + groupAnimLength += anim.durationTicks; + } + + return groupAnimLength; + + } + } + public Vector3 getAnchor() { return anchor.getDrawPos(); diff --git a/1.5/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs b/1.5/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs index 8980cec..07f286f 100644 --- a/1.5/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs +++ b/1.5/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs @@ -37,7 +37,7 @@ namespace Rimworld_Animations { bool quickie = (__instance is JobDriver_SexQuick) && AnimationSettings.fastAnimForQuickie; int preAnimDuration = __instance.duration; - int AnimationTimeTicks = 0; + List participants = partnerSexBaseReceiver.parteners.Append(partner).ToList(); @@ -45,16 +45,16 @@ namespace Rimworld_Animations { if (groupAnimation != null) { AnimationUtility.StartGroupAnimation(participants, groupAnimation, reorder, partner); - } - + int animTicks = AnimationUtility.GetAnimationLength(pawn); - //Modify Orgasm ticks to only orgasm as many times as RJW stock orgasm allows - if (AnimationTimeTicks != 0) - { - __instance.orgasmstick = preAnimDuration * __instance.orgasmstick / AnimationTimeTicks; + foreach(Pawn participant in participants) + { + (participant.jobs.curDriver as JobDriver_Sex).ticks_left = animTicks; + (participant.jobs.curDriver as JobDriver_Sex).sex_ticks = animTicks; + (participant.jobs.curDriver as JobDriver_Sex).orgasmStartTick = animTicks; + (participant.jobs.curDriver as JobDriver_Sex).duration = animTicks; + } } - - } } diff --git a/1.5/Source/Patches/RJWPatches/JobDrivers/JobDriver_Sex/HarmonyPatch_Animate.cs b/1.5/Source/Patches/RJWPatches/JobDrivers/JobDriver_Sex/HarmonyPatch_Animate.cs new file mode 100644 index 0000000..eaaf9b1 --- /dev/null +++ b/1.5/Source/Patches/RJWPatches/JobDrivers/JobDriver_Sex/HarmonyPatch_Animate.cs @@ -0,0 +1,39 @@ +using HarmonyLib; +using rjw; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + [HarmonyPatch(typeof(JobDriver_Sex), "Animate")] + public class HarmonyPatch_Animate + { + public static bool Prefix(ref JobDriver_Sex __instance, ref Pawn pawn, ref Thing target) + { + //remove all bumping stuff in animations; keep draw nude code + if (target != null) + { + Pawn pawn2 = target as Pawn; + if (!__instance.isEndytophile) + { + SexUtility.DrawNude(pawn, false); + if (pawn2 != null) + { + SexUtility.DrawNude(pawn2, false); + return false; + } + } + } + else if (!__instance.isEndytophile) + { + SexUtility.DrawNude(pawn, false); + } + + return false; + } + } +} diff --git a/1.5/Source/Patches/RJWPatches/HarmonyPatch_PlaySexSounds.cs b/1.5/Source/Patches/RJWPatches/JobDrivers/JobDriver_Sex/HarmonyPatch_PlaySexSounds.cs similarity index 100% rename from 1.5/Source/Patches/RJWPatches/HarmonyPatch_PlaySexSounds.cs rename to 1.5/Source/Patches/RJWPatches/JobDrivers/JobDriver_Sex/HarmonyPatch_PlaySexSounds.cs diff --git a/1.5/Source/Patches/RJWPatches/HarmonyPatch_SexTick.cs b/1.5/Source/Patches/RJWPatches/JobDrivers/JobDriver_Sex/HarmonyPatch_SexTick.cs similarity index 100% rename from 1.5/Source/Patches/RJWPatches/HarmonyPatch_SexTick.cs rename to 1.5/Source/Patches/RJWPatches/JobDrivers/JobDriver_Sex/HarmonyPatch_SexTick.cs diff --git a/1.5/Source/Patches/RJWPatches/JobDrivers/SexBaseReceivers/HarmonyPatch_JobDriver_SexBaseReceiverLoved.cs b/1.5/Source/Patches/RJWPatches/JobDrivers/SexBaseReceivers/HarmonyPatch_JobDriver_SexBaseReceiverLoved.cs index 6c4faa8..ca4df23 100644 --- a/1.5/Source/Patches/RJWPatches/JobDrivers/SexBaseReceivers/HarmonyPatch_JobDriver_SexBaseReceiverLoved.cs +++ b/1.5/Source/Patches/RJWPatches/JobDrivers/SexBaseReceivers/HarmonyPatch_JobDriver_SexBaseReceiverLoved.cs @@ -1,8 +1,10 @@ using HarmonyLib; +using RimWorld; using rjw; using System; using System.Collections.Generic; using System.Linq; +using System.Reflection.Emit; using System.Text; using System.Threading.Tasks; using Verse.AI; @@ -19,5 +21,32 @@ namespace Rimworld_Animations AnimationUtility.StopGroupAnimation(__instance.pawn); }); } + + public static IEnumerable Transpiler(IEnumerable codeInstructions) + { + + var ins = codeInstructions.ToList(); + for (int i = 0; i < ins.Count; i++) + { + if (i < ins.Count && ins[i].opcode == OpCodes.Call && ins[i].OperandIs(AccessTools.DeclaredMethod(typeof(Toils_LayDown), "LayDown"))) + { + + ins[i].operand = AccessTools.DeclaredMethod(typeof(HarmonyPatch_JobDriver_SexBaseReceiverLoved), "DoNotLayDown"); + yield return ins[i]; + + } + + else + { + yield return ins[i]; + } + } + + } + + public static Toil DoNotLayDown(TargetIndex bedOrRestSpotIndex, bool hasBed, bool lookForOtherJobs, bool canSleep = true, bool gainRestAndHealth = true, PawnPosture noBedLayingPosture = PawnPosture.LayingMask, bool deathrest = false) + { + return new Toil(); + } } } diff --git a/1.5/Source/Utilities/AnimationUtility.cs b/1.5/Source/Utilities/AnimationUtility.cs index 2431db7..e57a096 100644 --- a/1.5/Source/Utilities/AnimationUtility.cs +++ b/1.5/Source/Utilities/AnimationUtility.cs @@ -95,5 +95,11 @@ namespace Rimworld_Animations { } + + public static int GetAnimationLength(Pawn pawn) + { + return pawn.TryGetComp().AnimationLength; + } + } } diff --git a/Rimworld-Animations.csproj b/Rimworld-Animations.csproj index 2ab9ff6..bdf8615 100644 --- a/Rimworld-Animations.csproj +++ b/Rimworld-Animations.csproj @@ -46,6 +46,7 @@ ..\rjw\1.5\Assemblies\RJW.dll + False ..\rjw-toys-and-masturbation\Assemblies\RJW-ToysAndMasturbation.dll @@ -104,8 +105,9 @@ - - + + +