From 655062727214c09b340c5c873a25ac1632e9f132 Mon Sep 17 00:00:00 2001 From: c0ffee Date: Tue, 20 Apr 2021 11:37:50 -0700 Subject: [PATCH] Update for RJW 4.6.7.2: accounts for orgasm ticker changes orgasm ticker count accounts for animation length vs standard jobdriver length difference Accounts for neverending loop settings in RJW todo: remove unnecessary harmonypatch in sextick next RJW update --- 1.2/Assemblies/Rimworld-Animations.dll | Bin 58880 -> 59904 bytes About/Manifest.xml | 2 +- Rimworld-Animations.csproj | 3 +- Source/Comps/CompBodyAnimator.cs | 47 ++++++-- .../JobDriver_SexCasualForAnimation.cs | 1 - ...HarmonyPatch_JobDriver_SexBaseInitiator.cs | 33 ++++-- .../rjwPatches/HarmonyPatch_PlaySexSounds.cs | 25 +++++ .../rjwPatches/HarmonyPatch_SexTick.cs | 101 ++++++++++++------ 8 files changed, 161 insertions(+), 51 deletions(-) create mode 100644 Source/Patches/rjwPatches/HarmonyPatch_PlaySexSounds.cs diff --git a/1.2/Assemblies/Rimworld-Animations.dll b/1.2/Assemblies/Rimworld-Animations.dll index 9b4e6934d793ff6ff366a774bbd9542c621c2c2a..c6044aa0a7a1bc7fbf3d5d292f187500c400571e 100644 GIT binary patch delta 20811 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 diff --git a/About/Manifest.xml b/About/Manifest.xml index 1ffa310..f0113b3 100644 --- a/About/Manifest.xml +++ b/About/Manifest.xml @@ -1,5 +1,5 @@  Rimworld-Animations - 1.0.16 + 1.1.0 \ No newline at end of file diff --git a/Rimworld-Animations.csproj b/Rimworld-Animations.csproj index 98c35d0..7bae38d 100644 --- a/Rimworld-Animations.csproj +++ b/Rimworld-Animations.csproj @@ -45,7 +45,7 @@ False - ..\rjw-master\1.2\Assemblies\RJW.dll + ..\RJW\1.2\Assemblies\RJW.dll False @@ -105,6 +105,7 @@ + diff --git a/Source/Comps/CompBodyAnimator.cs b/Source/Comps/CompBodyAnimator.cs index 4d3c791..941c304 100644 --- a/Source/Comps/CompBodyAnimator.cs +++ b/Source/Comps/CompBodyAnimator.cs @@ -159,9 +159,8 @@ namespace Rimworld_Animations { //tick once for initialization tickAnim(); - - } + public override void CompTick() { base.CompTick(); @@ -208,8 +207,16 @@ namespace Rimworld_Animations { if (animTicks < anim.animationTimeTicks) { tickStage(); } else { + + if(LoopNeverending()) + { + ResetOnLoop(); + } else + { + isAnimating = false; + } + - isAnimating = false; } } @@ -227,9 +234,16 @@ namespace Rimworld_Animations { } if(curStage >= anim.animationStages.Count) { - isAnimating = false; - pawn.jobs.curDriver.ReadyForNextToil(); - + if (LoopNeverending()) + { + ResetOnLoop(); + } + else + { + isAnimating = false; + pawn.jobs.curDriver.ReadyForNextToil(); + } + } else { tickClip(); } @@ -444,5 +458,26 @@ namespace Rimworld_Animations { tickAnim(); } + 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 false; + } + + public void ResetOnLoop() + { + curStage = 1; + animTicks = 0; + stageTicks = 0; + clipTicks = 0; + + tickAnim(); + } } } diff --git a/Source/JobDrivers/JobDriver_SexCasualForAnimation.cs b/Source/JobDrivers/JobDriver_SexCasualForAnimation.cs index 3fabe14..7b9aba0 100644 --- a/Source/JobDrivers/JobDriver_SexCasualForAnimation.cs +++ b/Source/JobDrivers/JobDriver_SexCasualForAnimation.cs @@ -64,7 +64,6 @@ namespace Rimworld_Animations { pawn.TryGetComp().isAnimating = false; } - ticks_left--; if(Gen.IsHashIntervalTick(pawn, ticks_between_hearts)) { MoteMaker.ThrowMetaIcon(pawn.Position, pawn.Map, ThingDefOf.Mote_Heart); } diff --git a/Source/Patches/rjwPatches/HarmonyPatch_JobDriver_SexBaseInitiator.cs b/Source/Patches/rjwPatches/HarmonyPatch_JobDriver_SexBaseInitiator.cs index 2967cd4..af0b9df 100644 --- a/Source/Patches/rjwPatches/HarmonyPatch_JobDriver_SexBaseInitiator.cs +++ b/Source/Patches/rjwPatches/HarmonyPatch_JobDriver_SexBaseInitiator.cs @@ -13,7 +13,6 @@ namespace Rimworld_Animations { [HarmonyPatch(typeof(JobDriver_SexBaseInitiator), "Start")] static class HarmonyPatch_JobDriver_SexBaseInitiator_Start { public static void Postfix(ref JobDriver_SexBaseInitiator __instance) { - /* These particular jobs need special code don't play anim for now @@ -52,16 +51,31 @@ namespace Rimworld_Animations { bool quickie = (__instance is JobDriver_SexQuick) && AnimationSettings.fastAnimForQuickie; + int preAnimDuration = __instance.duration; + int AnimationTimeTicks = 0; + + if (bed != null) { - RerollAnimations(Target, __instance.duration, bed as Thing, __instance.sexType, quickie, sexProps: __instance.Sexprops); - } + RerollAnimations(Target, out AnimationTimeTicks, bed as Thing, __instance.sexType, quickie, sexProps: __instance.Sexprops); + } else { - RerollAnimations(Target, __instance.duration, sexType: __instance.sexType, fastAnimForQuickie: quickie, sexProps: __instance.Sexprops); + RerollAnimations(Target, out AnimationTimeTicks, sexType: __instance.sexType, fastAnimForQuickie: quickie, sexProps: __instance.Sexprops); } + + + //Modify Orgasm ticks to only orgasm as many times as RJW stock orgasm allows + if(AnimationTimeTicks != 0) + { + __instance.orgasmstick = preAnimDuration * __instance.orgasmstick / AnimationTimeTicks; + } + + } } - public static void RerollAnimations(Pawn pawn, int duration, Thing bed = null, xxx.rjwSextype sexType = xxx.rjwSextype.None, bool fastAnimForQuickie = false, rjw.SexProps sexProps = null) { + public static void RerollAnimations(Pawn pawn, out int AnimationTimeTicks, Thing bed = null, xxx.rjwSextype sexType = xxx.rjwSextype.None, bool fastAnimForQuickie = false, rjw.SexProps sexProps = null) { + + AnimationTimeTicks = 0; if(pawn == null || !(pawn.jobs?.curDriver is JobDriver_SexBaseReciever)) { Log.Error("Error: Tried to reroll animations when pawn isn't sexing"); @@ -88,8 +102,6 @@ namespace Rimworld_Animations { bool mirror = GenTicks.TicksGame % 2 == 0; - Log.Message("Now playing " + anim.defName + (AnimationSettings.debugMode && mirror ? " mirrored" : "")); - IntVec3 pos = pawn.Position; if(pawnsToAnimate.Count > anim.actors.Count) @@ -112,9 +124,14 @@ namespace Rimworld_Animations { bool shiver = pawnsToAnimate[i].jobs.curDriver is JobDriver_SexBaseRecieverRaped; pawnsToAnimate[i].TryGetComp().StartAnimation(anim, pawnsToAnimate, i, mirror, shiver, fastAnimForQuickie); + (pawnsToAnimate[i].jobs.curDriver as JobDriver_Sex).ticks_left = anim.animationTimeTicks; - (pawnsToAnimate[i].jobs.curDriver as JobDriver_Sex).ticksLeftThisToil = anim.animationTimeTicks; + (pawnsToAnimate[i].jobs.curDriver as JobDriver_Sex).sex_ticks = anim.animationTimeTicks; (pawnsToAnimate[i].jobs.curDriver as JobDriver_Sex).duration = anim.animationTimeTicks; + + + AnimationTimeTicks = anim.animationTimeTicks; + if(!AnimationSettings.hearts) { (pawnsToAnimate[i].jobs.curDriver as JobDriver_Sex).ticks_between_hearts = Int32.MaxValue; } diff --git a/Source/Patches/rjwPatches/HarmonyPatch_PlaySexSounds.cs b/Source/Patches/rjwPatches/HarmonyPatch_PlaySexSounds.cs new file mode 100644 index 0000000..6544f13 --- /dev/null +++ b/Source/Patches/rjwPatches/HarmonyPatch_PlaySexSounds.cs @@ -0,0 +1,25 @@ +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), "PlaySexSound")] + class HarmonyPatch_PlaySexSounds + { + public static bool Prefix(JobDriver_Sex __instance) + { + if (__instance.pawn.TryGetComp().isAnimating) + { + return false; + } + + return true; + } + } +} diff --git a/Source/Patches/rjwPatches/HarmonyPatch_SexTick.cs b/Source/Patches/rjwPatches/HarmonyPatch_SexTick.cs index c645d18..42889ae 100644 --- a/Source/Patches/rjwPatches/HarmonyPatch_SexTick.cs +++ b/Source/Patches/rjwPatches/HarmonyPatch_SexTick.cs @@ -1,53 +1,86 @@ -using System; +using HarmonyLib; +using rjw; +using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; -using HarmonyLib; -using RimWorld; using Verse; -using rjw; -using Verse.Sound; +using Verse.AI; -namespace Rimworld_Animations { +namespace Rimworld_Animations +{ + [HarmonyPatch(typeof(JobDriver_Sex), "SexTick")] + public class HarmonyPatch_SexTick + { + public static bool Prefix(JobDriver_Sex __instance, Pawn pawn, Thing target) + { - [HarmonyPatch(typeof(JobDriver_Sex), "SexTick")] - public static class HarmonyPatch_SexTick { + Log.Message(pawn.Name + " ticks left: " + __instance.ticks_left); + Log.Message(pawn.Name + " sex ticks: " + __instance.sex_ticks); - public static bool Prefix(ref JobDriver_Sex __instance, ref Pawn pawn, ref Thing target, ref bool pawnnude, ref bool partnernude) { + if (!(target is Pawn) || + !( + (target as Pawn)?.jobs?.curDriver is JobDriver_SexBaseReciever + && + ((target as Pawn).jobs.curDriver as JobDriver_SexBaseReciever).parteners.Any() + && + ((target as Pawn).jobs.curDriver as JobDriver_SexBaseReciever).parteners[0] == pawn)) + { - Pawn pawn2 = target as Pawn; + __instance.ticks_left--; + __instance.sex_ticks--; + __instance.Orgasm(); - if (pawn == null || pawn2 == null) { - return true; + return false; + } + + return true; + } + + } + + [HarmonyPatch(typeof(JobDriver_Sex), "Orgasm")] + public class HarmonyPatch_Orgasm + { + public static bool Prefix(JobDriver_Sex __instance) + { + //todo: remove this code on next update + if (__instance.pawn.jobs.curDriver is JobDriver_SexBaseRecieverLoved || + __instance.pawn.jobs.curDriver is JobDriver_SexBaseRecieverRaped) return true; + + if (__instance.sex_ticks > __instance.orgasmstick) + { + return false; } + __instance.orgasms++; + __instance.PlayCumSound(); + __instance.PlayOrgasmVoice(); + __instance.CalculateSatisfactionPerTick(); - - if (pawn.IsHashIntervalTick(__instance.ticks_between_thrusts)) { - - __instance.ChangePsyfocus(pawn, pawn2); - - __instance.Animate(pawn, pawn2); - - if (!AnimationSettings.soundOverride || pawn.TryGetComp() == null || !pawn.TryGetComp().isAnimating) { - __instance.PlaySexSound(); - } - - if (!__instance.isRape) { - pawn.GainComfortFromCellIfPossible(); - pawn2?.GainComfortFromCellIfPossible(); - } + if (__instance.pawn?.jobs?.curDriver is JobDriver_SexBaseInitiator) + { + SexUtility.SatisfyPersonal(__instance.pawn, __instance.Partner, __instance.sexType, __instance.isRape, true, __instance.satisfaction); } - if (!xxx.has_quirk(pawn, "Endytophile")) { - if (pawnnude) { - SexUtility.DrawNude(pawn); - } - if (pawn2 != null && partnernude) { - SexUtility.DrawNude(pawn2); + else + { + if (__instance.pawn?.jobs?.curDriver is JobDriver_SexBaseReciever) + { + Pawn pawn = __instance.pawn; + Pawn_JobTracker jobs3 = __instance.pawn.jobs; + SexUtility.SatisfyPersonal(pawn, (__instance.pawn.jobs.curDriver as JobDriver_SexBaseReciever).parteners.FirstOrFallback(null), __instance.sexType, false, false, __instance.satisfaction); } + + } + Log.Message(xxx.get_pawnname(__instance.pawn) + " Orgasmed", false); + __instance.sex_ticks = __instance.Roll_Orgasm_Duration_Reset(); + if (__instance.neverendingsex) + { + __instance.ticks_left = __instance.duration; } return false; } - } + + } }