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";
+ }
+ }
+}