Experimental quivering on orgasm

This commit is contained in:
Platinum 2020-04-20 20:07:15 -07:00
parent 0a5b504d29
commit 9d70c2cb59
11 changed files with 78 additions and 4 deletions

View file

@ -20,6 +20,19 @@
<li>Wolf_Timber</li> <li>Wolf_Timber</li>
<li>Wolf_Arctic</li> <li>Wolf_Arctic</li>
<li>Whitefox</li> <li>Whitefox</li>
<!--Animals Expanded-->
<li>AEXP_WelshTerrier</li>
<li>AEXP_Rottweiler</li>
<li>AEXP_Poodle</li>
<li>AEXP_GreatDane</li>
<li>AEXP_GermanShepherd</li>
<li>AEXP_FrenchBulldog</li>
<li>AEXP_Corgi</li>
<li>AEXP_CatAbyssinian</li>
<li>AEXP_CatBengal</li>
<li>AEXP_CatMaineCoon</li>
<li>AEXP_CatSphynx</li>
</defNames> </defNames>
<isFucking>true</isFucking> <isFucking>true</isFucking>
<initiator>true</initiator> <initiator>true</initiator>
@ -899,6 +912,7 @@
<layer>LayingPawn</layer> <layer>LayingPawn</layer>
<keyframes> <keyframes>
<li> <li>
<quiver>true</quiver>
<tickDuration>60</tickDuration> <tickDuration>60</tickDuration>
<bodyAngle>53.7</bodyAngle> <bodyAngle>53.7</bodyAngle>
<headAngle>25.4</headAngle> <headAngle>25.4</headAngle>

View file

@ -130,7 +130,6 @@
</li> </li>
</animationClips> </animationClips>
</li> </li>
<li> <li>
<stageName>TribadismFast</stageName> <stageName>TribadismFast</stageName>
<isLooping>true</isLooping> <isLooping>true</isLooping>

View file

@ -379,6 +379,7 @@
<headBob>0</headBob> <headBob>0</headBob>
</li> </li>
<li> <li>
<quiver>true</quiver>
<tickDuration>120</tickDuration> <tickDuration>120</tickDuration>
<bodyAngle>60.7</bodyAngle> <bodyAngle>60.7</bodyAngle>
<headAngle>5.6</headAngle> <headAngle>5.6</headAngle>

View file

@ -382,6 +382,7 @@
<headAngle>-1</headAngle> <headAngle>-1</headAngle>
<bodyFacing>1</bodyFacing> <bodyFacing>1</bodyFacing>
<headFacing>1</headFacing> <headFacing>1</headFacing>
<quiver>true</quiver>
</li> </li>
<li> <li>
<tickDuration>12</tickDuration> <tickDuration>12</tickDuration>
@ -758,6 +759,7 @@
<headBob>-0.008</headBob> <headBob>-0.008</headBob>
</li> </li>
<li> <li>
<quiver>true</quiver>
<tickDuration>60</tickDuration> <tickDuration>60</tickDuration>
<bodyAngle>0</bodyAngle> <bodyAngle>0</bodyAngle>
<bodyOffsetX>0</bodyOffsetX> <bodyOffsetX>0</bodyOffsetX>
@ -1776,6 +1778,7 @@
<headBob>0</headBob> <headBob>0</headBob>
</li> </li>
<li> <li>
<quiver>true</quiver>
<tickDuration>75</tickDuration> <tickDuration>75</tickDuration>
<bodyAngle>6.04</bodyAngle> <bodyAngle>6.04</bodyAngle>
<headAngle>15</headAngle> <headAngle>15</headAngle>
@ -2367,6 +2370,7 @@
<headBob>-0.03</headBob> <headBob>-0.03</headBob>
</li> </li>
<li> <li>
<quiver>true</quiver>
<tickDuration>45</tickDuration> <tickDuration>45</tickDuration>
<soundEffect>Cum</soundEffect> <soundEffect>Cum</soundEffect>
<bodyAngle>0</bodyAngle> <bodyAngle>0</bodyAngle>
@ -2378,6 +2382,7 @@
<headBob>0</headBob> <headBob>0</headBob>
</li> </li>
<li> <li>
<quiver>true</quiver>
<tickDuration>40</tickDuration> <tickDuration>40</tickDuration>
<bodyAngle>0</bodyAngle> <bodyAngle>0</bodyAngle>
<headAngle>0</headAngle> <headAngle>0</headAngle>

View file

@ -96,6 +96,7 @@
<Compile Include="Source\Patches\rjwPatches\HarmonyPatch_JoinInBedGiveJob.cs" /> <Compile Include="Source\Patches\rjwPatches\HarmonyPatch_JoinInBedGiveJob.cs" />
<Compile Include="Source\Patches\rjwPatches\HarmonyPatch_SexTick.cs" /> <Compile Include="Source\Patches\rjwPatches\HarmonyPatch_SexTick.cs" />
<Compile Include="Source\Patches\rjwPatches\HarmonyPatch_WorkGiverSex.cs" /> <Compile Include="Source\Patches\rjwPatches\HarmonyPatch_WorkGiverSex.cs" />
<Compile Include="Source\Settings\Animation_Settings.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup /> <ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

View file

@ -68,7 +68,7 @@ namespace Rimworld_Animations {
//TESTING ANIMATIONS ONLY REMEMBER TO COMMENT OUT BEFORE PUSH //TESTING ANIMATIONS ONLY REMEMBER TO COMMENT OUT BEFORE PUSH
/* /*
if (x.defName != "Cowgirl") if (x.defName != "Doggystyle")
return false; return false;
*/ */

View file

@ -13,6 +13,7 @@ namespace Rimworld_Animations {
public AltitudeLayer layer = AltitudeLayer.Pawn; public AltitudeLayer layer = AltitudeLayer.Pawn;
public Dictionary<int, string> SoundEffects = new Dictionary<int, string>(); public Dictionary<int, string> SoundEffects = new Dictionary<int, string>();
public Dictionary<int, bool> quiver = new Dictionary<int, bool>();
public SimpleCurve BodyAngle = new SimpleCurve(); public SimpleCurve BodyAngle = new SimpleCurve();
public SimpleCurve HeadAngle = new SimpleCurve(); public SimpleCurve HeadAngle = new SimpleCurve();
public SimpleCurve HeadBob = new SimpleCurve(); public SimpleCurve HeadBob = new SimpleCurve();
@ -89,6 +90,11 @@ namespace Rimworld_Animations {
SoundEffects.Add(keyframePosition, frame.soundEffect); 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; keyframePosition += frame.tickDuration;
} }

View file

@ -21,6 +21,7 @@ namespace Rimworld_Animations {
public int? headFacing; public int? headFacing;
public string soundEffect; public string soundEffect;
public bool? quiver;
public float? atTick; public float? atTick;
} }

View file

@ -35,7 +35,7 @@ namespace Rimworld_Animations {
} }
} }
private bool Animating; private bool Animating;
private bool mirror = false; private bool mirror = false, quiver = false;
private int actor; private int actor;
private int animTicks = 0, stageTicks = 0, clipTicks = 0; private int animTicks = 0, stageTicks = 0, clipTicks = 0;
@ -114,6 +114,8 @@ namespace Rimworld_Animations {
stageTicks = 0; stageTicks = 0;
clipTicks = 0; clipTicks = 0;
quiver = false;
//tick once for initialization //tick once for initialization
tickAnim(); tickAnim();
@ -184,6 +186,9 @@ namespace Rimworld_Animations {
if(rjw.RJWSettings.sounds_enabled && clip.SoundEffects.ContainsKey(clipTicks)) { if(rjw.RJWSettings.sounds_enabled && clip.SoundEffects.ContainsKey(clipTicks)) {
SoundDef.Named(clip.SoundEffects[clipTicks]).PlayOneShot(new TargetInfo(pawn.Position, pawn.Map)); 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 //loop animation if possible
if (clipPercent >= 1 && stage.isLooping) { if (clipPercent >= 1 && stage.isLooping) {
@ -197,7 +202,7 @@ namespace Rimworld_Animations {
public void calculateDrawValues() { public void calculateDrawValues() {
deltaPos = new Vector3(clip.BodyOffsetX.Evaluate(clipPercent) * (mirror ? -1 : 1), clip.layer.AltitudeFor(), clip.BodyOffsetZ.Evaluate(clipPercent)); 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); 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)); 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, "headFacing");
Scribe_Values.Look(ref headFacing, "bodyFacing"); Scribe_Values.Look(ref headFacing, "bodyFacing");
Scribe_Values.Look(ref quiver, "orgasmQuiver");
} }
} }

View file

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