diff --git a/1.1/Assemblies/Rimworld-Animations.dll b/1.1/Assemblies/Rimworld-Animations.dll index 9aa60b5..c87398b 100644 Binary files a/1.1/Assemblies/Rimworld-Animations.dll and b/1.1/Assemblies/Rimworld-Animations.dll differ diff --git a/Defs/AnimationDefs/Animations_Beast.xml b/Defs/AnimationDefs/Animations_Beast.xml index 558047a..2f5a613 100644 --- a/Defs/AnimationDefs/Animations_Beast.xml +++ b/Defs/AnimationDefs/Animations_Beast.xml @@ -20,6 +20,19 @@
  • Wolf_Timber
  • Wolf_Arctic
  • Whitefox
  • + + +
  • AEXP_WelshTerrier
  • +
  • AEXP_Rottweiler
  • +
  • AEXP_Poodle
  • +
  • AEXP_GreatDane
  • +
  • AEXP_GermanShepherd
  • +
  • AEXP_FrenchBulldog
  • +
  • AEXP_Corgi
  • +
  • AEXP_CatAbyssinian
  • +
  • AEXP_CatBengal
  • +
  • AEXP_CatMaineCoon
  • +
  • AEXP_CatSphynx
  • true true @@ -899,6 +912,7 @@ LayingPawn
  • + true 60 53.7 25.4 diff --git a/Defs/AnimationDefs/Animations_Lesbian.xml b/Defs/AnimationDefs/Animations_Lesbian.xml index 4ca9c9c..98c365c 100644 --- a/Defs/AnimationDefs/Animations_Lesbian.xml +++ b/Defs/AnimationDefs/Animations_Lesbian.xml @@ -130,7 +130,6 @@
  • -
  • TribadismFast true diff --git a/Defs/AnimationDefs/Animations_Multi.xml b/Defs/AnimationDefs/Animations_Multi.xml index 325e36c..a5c2ba5 100644 --- a/Defs/AnimationDefs/Animations_Multi.xml +++ b/Defs/AnimationDefs/Animations_Multi.xml @@ -379,6 +379,7 @@ 0
  • + true 120 60.7 5.6 diff --git a/Defs/AnimationDefs/Animations_vanilla.xml b/Defs/AnimationDefs/Animations_vanilla.xml index 6375282..b05b0d4 100644 --- a/Defs/AnimationDefs/Animations_vanilla.xml +++ b/Defs/AnimationDefs/Animations_vanilla.xml @@ -382,6 +382,7 @@ -1 1 1 + true
  • 12 @@ -758,6 +759,7 @@ -0.008
  • + true 60 0 0 @@ -1776,6 +1778,7 @@ 0
  • + true 75 6.04 15 @@ -2367,6 +2370,7 @@ -0.03
  • + true 45 Cum 0 @@ -2378,6 +2382,7 @@ 0
  • + true 40 0 0 diff --git a/Rimworld-Animations.csproj b/Rimworld-Animations.csproj index 563cd64..d2eea40 100644 --- a/Rimworld-Animations.csproj +++ b/Rimworld-Animations.csproj @@ -96,6 +96,7 @@ + diff --git a/Source/AnimationUtility.cs b/Source/AnimationUtility.cs index 488fd8b..a6ab904 100644 --- a/Source/AnimationUtility.cs +++ b/Source/AnimationUtility.cs @@ -68,7 +68,7 @@ namespace Rimworld_Animations { //TESTING ANIMATIONS ONLY REMEMBER TO COMMENT OUT BEFORE PUSH /* - if (x.defName != "Cowgirl") + if (x.defName != "Doggystyle") return false; */ diff --git a/Source/Animations/Clips/PawnAnimationClip.cs b/Source/Animations/Clips/PawnAnimationClip.cs index cf9db9d..6fc767d 100644 --- a/Source/Animations/Clips/PawnAnimationClip.cs +++ b/Source/Animations/Clips/PawnAnimationClip.cs @@ -13,6 +13,7 @@ namespace Rimworld_Animations { public AltitudeLayer layer = AltitudeLayer.Pawn; public Dictionary SoundEffects = new Dictionary(); + public Dictionary quiver = new Dictionary(); public SimpleCurve BodyAngle = new SimpleCurve(); public SimpleCurve HeadAngle = new SimpleCurve(); public SimpleCurve HeadBob = new SimpleCurve(); @@ -89,6 +90,11 @@ namespace Rimworld_Animations { SoundEffects.Add(keyframePosition, frame.soundEffect); } + if(frame.tickDuration != 1 && frame.quiver.HasValue) { + + quiver.Add(keyframePosition, true); + quiver.Add(keyframePosition + frame.tickDuration - 1, false); + } keyframePosition += frame.tickDuration; } diff --git a/Source/Animations/Keyframes/PawnKeyframe.cs b/Source/Animations/Keyframes/PawnKeyframe.cs index 5ee8f8d..69b0a78 100644 --- a/Source/Animations/Keyframes/PawnKeyframe.cs +++ b/Source/Animations/Keyframes/PawnKeyframe.cs @@ -21,6 +21,7 @@ namespace Rimworld_Animations { public int? headFacing; public string soundEffect; + public bool? quiver; public float? atTick; } diff --git a/Source/Comps/CompBodyAnimator.cs b/Source/Comps/CompBodyAnimator.cs index 2be7c49..96270d8 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; + private bool mirror = false, quiver = false; private int actor; private int animTicks = 0, stageTicks = 0, clipTicks = 0; @@ -114,6 +114,8 @@ namespace Rimworld_Animations { stageTicks = 0; clipTicks = 0; + quiver = false; + //tick once for initialization tickAnim(); @@ -184,6 +186,9 @@ namespace Rimworld_Animations { if(rjw.RJWSettings.sounds_enabled && clip.SoundEffects.ContainsKey(clipTicks)) { SoundDef.Named(clip.SoundEffects[clipTicks]).PlayOneShot(new TargetInfo(pawn.Position, pawn.Map)); } + if(AnimationSettings.orgasmQuiver && clip.quiver.ContainsKey(clipTicks)) { + quiver = clip.quiver[clipTicks]; + } //loop animation if possible if (clipPercent >= 1 && stage.isLooping) { @@ -197,7 +202,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) * (mirror ? -1 : 1); + bodyAngle = (clip.BodyAngle.Evaluate(clipPercent) + (quiver ? (Rand.Value * 2f) - 1f : 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)); @@ -243,6 +248,8 @@ namespace Rimworld_Animations { Scribe_Values.Look(ref headFacing, "headFacing"); Scribe_Values.Look(ref headFacing, "bodyFacing"); + + Scribe_Values.Look(ref quiver, "orgasmQuiver"); } } diff --git a/Source/Settings/Animation_Settings.cs b/Source/Settings/Animation_Settings.cs new file mode 100644 index 0000000..6a8defe --- /dev/null +++ b/Source/Settings/Animation_Settings.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; +using UnityEngine; + +namespace Rimworld_Animations { + public class AnimationSettings : ModSettings { + + public static bool orgasmQuiver; + + public override void ExposeData() { + Scribe_Values.Look(ref orgasmQuiver, "orgasmQuiver"); + base.ExposeData(); + } + + } + + public class RJW_Animations : Mod { + + public RJW_Animations(ModContentPack content) : base(content) { + } + + public override void DoSettingsWindowContents(Rect inRect) { + + Listing_Standard listingStandard = new Listing_Standard(); + listingStandard.Begin(inRect); + + listingStandard.CheckboxLabeled("Enable Orgasm Quiver", ref AnimationSettings.orgasmQuiver); + listingStandard.End(); + base.DoSettingsWindowContents(inRect); + } + + public override string SettingsCategory() { + return "RJW Animation Settings"; + } + } +}