diff --git a/1.1/Assemblies/Rimworld-Animations.dll b/1.1/Assemblies/Rimworld-Animations.dll index c87398b..1fce4e7 100644 Binary files a/1.1/Assemblies/Rimworld-Animations.dll and b/1.1/Assemblies/Rimworld-Animations.dll differ diff --git a/Rimworld-Animations.csproj b/Rimworld-Animations.csproj index d2eea40..f56b6d4 100644 --- a/Rimworld-Animations.csproj +++ b/Rimworld-Animations.csproj @@ -96,7 +96,7 @@ - + diff --git a/Source/Comps/CompBodyAnimator.cs b/Source/Comps/CompBodyAnimator.cs index 96270d8..e3277f3 100644 --- a/Source/Comps/CompBodyAnimator.cs +++ b/Source/Comps/CompBodyAnimator.cs @@ -35,7 +35,7 @@ namespace Rimworld_Animations { } } private bool Animating; - private bool mirror = false, quiver = false; + private bool mirror = false, quiver = false, shiver = false; private int actor; private int animTicks = 0, stageTicks = 0, clipTicks = 0; @@ -92,7 +92,7 @@ namespace Rimworld_Animations { anchor = thing.Position.ToVector3Shifted(); } } - public void StartAnimation(AnimationDef anim, int actor, bool mirror = false) { + public void StartAnimation(AnimationDef anim, int actor, bool mirror = false, bool shiver = false) { isAnimating = true; @@ -115,6 +115,7 @@ namespace Rimworld_Animations { clipTicks = 0; quiver = false; + this.shiver = shiver && AnimationSettings.rapeShiver; //tick once for initialization tickAnim(); @@ -202,7 +203,7 @@ namespace Rimworld_Animations { public void calculateDrawValues() { deltaPos = new Vector3(clip.BodyOffsetX.Evaluate(clipPercent) * (mirror ? -1 : 1), clip.layer.AltitudeFor(), clip.BodyOffsetZ.Evaluate(clipPercent)); - bodyAngle = (clip.BodyAngle.Evaluate(clipPercent) + (quiver ? (Rand.Value * 2f) - 1f : 0f)) * (mirror ? -1 : 1); + bodyAngle = (clip.BodyAngle.Evaluate(clipPercent) + (quiver || shiver ? ((Rand.Value * AnimationSettings.shiverIntensity) - (AnimationSettings.shiverIntensity / 2f)) : 0f)) * (mirror ? -1 : 1); headAngle = clip.HeadAngle.Evaluate(clipPercent) * (mirror ? -1 : 1); bodyFacing = mirror ? new Rot4((int)clip.BodyFacing.Evaluate(clipPercent)).Opposite : new Rot4((int)clip.BodyFacing.Evaluate(clipPercent)); diff --git a/Source/Patches/rjwPatches/HarmonyPatch_JobDriver_SexBaseInitiator.cs b/Source/Patches/rjwPatches/HarmonyPatch_JobDriver_SexBaseInitiator.cs index 5f19afb..bac41d5 100644 --- a/Source/Patches/rjwPatches/HarmonyPatch_JobDriver_SexBaseInitiator.cs +++ b/Source/Patches/rjwPatches/HarmonyPatch_JobDriver_SexBaseInitiator.cs @@ -94,9 +94,9 @@ namespace Rimworld_Animations { pawnsToAnimate[i].TryGetComp().setAnchor(pos); } - - pawnsToAnimate[i].TryGetComp().StartAnimation(anim, i, mirror); + bool shiver = pawnsToAnimate[i].jobs.curDriver is JobDriver_SexBaseRecieverRaped; + pawnsToAnimate[i].TryGetComp().StartAnimation(anim, i, mirror, shiver); (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).duration = anim.animationTimeTicks; diff --git a/Source/Settings/Animation_Settings.cs b/Source/Settings/AnimationSettings.cs similarity index 64% rename from Source/Settings/Animation_Settings.cs rename to Source/Settings/AnimationSettings.cs index 6a8defe..2e783fb 100644 --- a/Source/Settings/Animation_Settings.cs +++ b/Source/Settings/AnimationSettings.cs @@ -9,10 +9,13 @@ using UnityEngine; namespace Rimworld_Animations { public class AnimationSettings : ModSettings { - public static bool orgasmQuiver; + public static bool orgasmQuiver, rapeShiver; + public static float shiverIntensity = 2f; public override void ExposeData() { Scribe_Values.Look(ref orgasmQuiver, "orgasmQuiver"); + Scribe_Values.Look(ref rapeShiver, "rapeShiver"); + Scribe_Values.Look(ref shiverIntensity, "shiverIntensity", 2f); base.ExposeData(); } @@ -29,6 +32,11 @@ namespace Rimworld_Animations { listingStandard.Begin(inRect); listingStandard.CheckboxLabeled("Enable Orgasm Quiver", ref AnimationSettings.orgasmQuiver); + listingStandard.CheckboxLabeled("Enable Rape Shiver", ref AnimationSettings.rapeShiver); + + listingStandard.Label("Shiver/Quiver Intensity (default 2): " + AnimationSettings.shiverIntensity); + AnimationSettings.shiverIntensity = listingStandard.Slider(AnimationSettings.shiverIntensity, 0.0f, 12f); + listingStandard.End(); base.DoSettingsWindowContents(inRect); }