mirror of
https://gitgud.io/c0ffeeeeeeee/rimworld-animations.git
synced 2024-08-15 00:43:45 +00:00
update no har
This commit is contained in:
commit
1b13aa267c
13 changed files with 2698 additions and 37 deletions
BIN
Defs/AnimationDefs/AnimationDefs.rar
Normal file
BIN
Defs/AnimationDefs/AnimationDefs.rar
Normal file
Binary file not shown.
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
377
Defs/AnimationDefs/Animations_Vanilla2.xml
Normal file
377
Defs/AnimationDefs/Animations_Vanilla2.xml
Normal file
|
@ -0,0 +1,377 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
|
||||||
|
<Defs>
|
||||||
|
<!--
|
||||||
|
<Rimworld_Animations.AnimationDef>
|
||||||
|
<defName>Missionary</defName>
|
||||||
|
<label>missionary</label>
|
||||||
|
<sounds>true</sounds>
|
||||||
|
<sexTypes>
|
||||||
|
<li>Vaginal</li>
|
||||||
|
<li>Anal</li>
|
||||||
|
</sexTypes>
|
||||||
|
<actors>
|
||||||
|
<li>
|
||||||
|
<defNames>
|
||||||
|
<li>Human</li>
|
||||||
|
</defNames>
|
||||||
|
<isFucked>true</isFucked>
|
||||||
|
<bodyTypeOffset>
|
||||||
|
<Thin>(0.1, 0.1)</Thin>
|
||||||
|
</bodyTypeOffset>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<defNames>
|
||||||
|
<li>Human</li>
|
||||||
|
</defNames>
|
||||||
|
<isFucking>true</isFucking>
|
||||||
|
<initiator>true</initiator>
|
||||||
|
<bodyTypeOffset>
|
||||||
|
<Hulk>(0, 0.2)</Hulk>
|
||||||
|
</bodyTypeOffset>
|
||||||
|
</li>
|
||||||
|
</actors>
|
||||||
|
|
||||||
|
<animationStages>
|
||||||
|
<li>
|
||||||
|
<stageName>Slow_Insert</stageName>
|
||||||
|
<isLooping>false</isLooping>
|
||||||
|
<playTimeTicks>181</playTimeTicks>
|
||||||
|
<stageIndex>0</stageIndex>
|
||||||
|
<animationClips>
|
||||||
|
<li Class="Rimworld_Animations.PawnAnimationClip">
|
||||||
|
<keyframes>
|
||||||
|
<li>
|
||||||
|
<tickDuration>120</tickDuration>
|
||||||
|
<bodyAngle>-82.7437439</bodyAngle>
|
||||||
|
<headAngle>-77.76135</headAngle>
|
||||||
|
<genitalAngle>0</genitalAngle>
|
||||||
|
<bodyOffsetZ>0.00123929977</bodyOffsetZ>
|
||||||
|
<bodyOffsetX>-0.288235933</bodyOffsetX>
|
||||||
|
<headBob>0</headBob>
|
||||||
|
<bodyFacing>1</bodyFacing>
|
||||||
|
<headFacing>1</headFacing>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<tickDuration>60</tickDuration>
|
||||||
|
<bodyAngle>-82.7437439</bodyAngle>
|
||||||
|
<headAngle>-85.3898849</headAngle>
|
||||||
|
<genitalAngle>0</genitalAngle>
|
||||||
|
<bodyOffsetZ>0.0254950486</bodyOffsetZ>
|
||||||
|
<bodyOffsetX>-0.30147323</bodyOffsetX>
|
||||||
|
<headBob>0</headBob>
|
||||||
|
<bodyFacing>1</bodyFacing>
|
||||||
|
<headFacing>1</headFacing>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<tickDuration>1</tickDuration>
|
||||||
|
<bodyAngle>-82.7437439</bodyAngle>
|
||||||
|
<headAngle>-77.78256</headAngle>
|
||||||
|
<genitalAngle>0</genitalAngle>
|
||||||
|
<bodyOffsetZ>0.0254950486</bodyOffsetZ>
|
||||||
|
<bodyOffsetX>-0.30147323</bodyOffsetX>
|
||||||
|
<headBob>0</headBob>
|
||||||
|
<bodyFacing>1</bodyFacing>
|
||||||
|
<headFacing>1</headFacing>
|
||||||
|
</li>
|
||||||
|
</keyframes>
|
||||||
|
</li>
|
||||||
|
<li Class="Rimworld_Animations.PawnAnimationClip">
|
||||||
|
<layer>LayingPawn</layer>
|
||||||
|
<keyframes>
|
||||||
|
<li>
|
||||||
|
<tickDuration>120</tickDuration>
|
||||||
|
<bodyAngle>-8.415361</bodyAngle>
|
||||||
|
<headAngle>-24.7466831</headAngle>
|
||||||
|
<genitalAngle>0</genitalAngle>
|
||||||
|
<bodyOffsetZ>0.275328381</bodyOffsetZ>
|
||||||
|
<bodyOffsetX>0.5114879</bodyOffsetX>
|
||||||
|
<headBob>0</headBob>
|
||||||
|
<bodyFacing>3</bodyFacing>
|
||||||
|
<headFacing>3</headFacing>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<tickDuration>60</tickDuration>
|
||||||
|
<bodyAngle>11.5036926</bodyAngle>
|
||||||
|
<headAngle>-10.2523956</headAngle>
|
||||||
|
<genitalAngle>0</genitalAngle>
|
||||||
|
<bodyOffsetZ>0.226816757</bodyOffsetZ>
|
||||||
|
<bodyOffsetX>0.3989886</bodyOffsetX>
|
||||||
|
<headBob>0</headBob>
|
||||||
|
<bodyFacing>3</bodyFacing>
|
||||||
|
<headFacing>3</headFacing>
|
||||||
|
<soundEffect>Slimy</soundEffect>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<tickDuration>1</tickDuration>
|
||||||
|
<bodyAngle>3.36438</bodyAngle>
|
||||||
|
<headAngle>-18.3917084</headAngle>
|
||||||
|
<genitalAngle>0</genitalAngle>
|
||||||
|
<bodyOffsetZ>0.233432038</bodyOffsetZ>
|
||||||
|
<bodyOffsetX>0.4034014</bodyOffsetX>
|
||||||
|
<headBob>0</headBob>
|
||||||
|
<bodyFacing>3</bodyFacing>
|
||||||
|
<headFacing>3</headFacing>
|
||||||
|
</li>
|
||||||
|
</keyframes>
|
||||||
|
</li>
|
||||||
|
</animationClips>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<stageName>Breathing</stageName>
|
||||||
|
<isLooping>true</isLooping>
|
||||||
|
<playTimeTicks>182</playTimeTicks>
|
||||||
|
<stageIndex>0</stageIndex>
|
||||||
|
<animationClips>
|
||||||
|
<li Class="Rimworld_Animations.PawnAnimationClip">
|
||||||
|
<keyframes>
|
||||||
|
<li>
|
||||||
|
<tickDuration>45</tickDuration>
|
||||||
|
<bodyAngle>-82.7437439</bodyAngle>
|
||||||
|
<headAngle>-77.78256</headAngle>
|
||||||
|
<genitalAngle>0</genitalAngle>
|
||||||
|
<bodyOffsetZ>0.0254950486</bodyOffsetZ>
|
||||||
|
<bodyOffsetX>-0.30147323</bodyOffsetX>
|
||||||
|
<headBob>0</headBob>
|
||||||
|
<bodyFacing>1</bodyFacing>
|
||||||
|
<headFacing>1</headFacing>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<tickDuration>45</tickDuration>
|
||||||
|
<bodyAngle>-82.7437439</bodyAngle>
|
||||||
|
<headAngle>-77.78256</headAngle>
|
||||||
|
<genitalAngle>0</genitalAngle>
|
||||||
|
<bodyOffsetZ>0.0254950486</bodyOffsetZ>
|
||||||
|
<bodyOffsetX>-0.33147323</bodyOffsetX>
|
||||||
|
<headBob>-0.03</headBob>
|
||||||
|
<bodyFacing>1</bodyFacing>
|
||||||
|
<headFacing>1</headFacing>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<tickDuration>1</tickDuration>
|
||||||
|
<bodyAngle>-82.7437439</bodyAngle>
|
||||||
|
<headAngle>-77.78256</headAngle>
|
||||||
|
<genitalAngle>0</genitalAngle>
|
||||||
|
<bodyOffsetZ>0.0254950486</bodyOffsetZ>
|
||||||
|
<bodyOffsetX>-0.30147323</bodyOffsetX>
|
||||||
|
<headBob>0</headBob>
|
||||||
|
<bodyFacing>1</bodyFacing>
|
||||||
|
<headFacing>1</headFacing>
|
||||||
|
</li>
|
||||||
|
</keyframes>
|
||||||
|
</li>
|
||||||
|
<li Class="Rimworld_Animations.PawnAnimationClip">
|
||||||
|
<layer>LayingPawn</layer>
|
||||||
|
<keyframes>
|
||||||
|
<li>
|
||||||
|
<tickDuration>45</tickDuration>
|
||||||
|
<bodyAngle>3.36438</bodyAngle>
|
||||||
|
<headAngle>-18.3917084</headAngle>
|
||||||
|
<genitalAngle>0</genitalAngle>
|
||||||
|
<bodyOffsetZ>0.233432038</bodyOffsetZ>
|
||||||
|
<bodyOffsetX>0.4034014</bodyOffsetX>
|
||||||
|
<headBob>0</headBob>
|
||||||
|
<bodyFacing>3</bodyFacing>
|
||||||
|
<headFacing>3</headFacing>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<tickDuration>45</tickDuration>
|
||||||
|
<bodyAngle>3.36438</bodyAngle>
|
||||||
|
<headAngle>-18.3917084</headAngle>
|
||||||
|
<genitalAngle>0</genitalAngle>
|
||||||
|
<bodyOffsetZ>0.273432038</bodyOffsetZ>
|
||||||
|
<bodyOffsetX>0.4034014</bodyOffsetX>
|
||||||
|
<headBob>-0.03</headBob>
|
||||||
|
<bodyFacing>3</bodyFacing>
|
||||||
|
<headFacing>3</headFacing>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<tickDuration>1</tickDuration>
|
||||||
|
<bodyAngle>3.36438</bodyAngle>
|
||||||
|
<headAngle>-18.3917084</headAngle>
|
||||||
|
<genitalAngle>0</genitalAngle>
|
||||||
|
<bodyOffsetZ>0.233432038</bodyOffsetZ>
|
||||||
|
<bodyOffsetX>0.4034014</bodyOffsetX>
|
||||||
|
<headBob>0</headBob>
|
||||||
|
<bodyFacing>3</bodyFacing>
|
||||||
|
<headFacing>3</headFacing>
|
||||||
|
</li>
|
||||||
|
</keyframes>
|
||||||
|
</li>
|
||||||
|
</animationClips>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<stageName>Slow_Fuck_Start</stageName>
|
||||||
|
<isLooping>true</isLooping>
|
||||||
|
<playTimeTicks></playTimeTicks>
|
||||||
|
<stageIndex>0</stageIndex>
|
||||||
|
<animationClips>
|
||||||
|
<li Class="Rimworld_Animations.PawnAnimationClip">
|
||||||
|
<keyframes>
|
||||||
|
<li>
|
||||||
|
<tickDuration>60</tickDuration>
|
||||||
|
<bodyAngle>-82.7437439</bodyAngle>
|
||||||
|
<headAngle>-77.78256</headAngle>
|
||||||
|
<genitalAngle>0</genitalAngle>
|
||||||
|
<bodyOffsetZ>0.0254950486</bodyOffsetZ>
|
||||||
|
<bodyOffsetX>-0.30147323</bodyOffsetX>
|
||||||
|
<headBob>0</headBob>
|
||||||
|
<bodyFacing>1</bodyFacing>
|
||||||
|
<headFacing>1</headFacing>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<tickDuration>1</tickDuration>
|
||||||
|
<bodyAngle>-82.7437439</bodyAngle>
|
||||||
|
<headAngle>-72.1512451</headAngle>
|
||||||
|
<genitalAngle>0</genitalAngle>
|
||||||
|
<bodyOffsetZ>0.025494989</bodyOffsetZ>
|
||||||
|
<bodyOffsetX>-0.29485938</bodyOffsetX>
|
||||||
|
<headBob>0</headBob>
|
||||||
|
<bodyFacing>1</bodyFacing>
|
||||||
|
<headFacing>1</headFacing>
|
||||||
|
</li>
|
||||||
|
</keyframes>
|
||||||
|
</li>
|
||||||
|
<li Class="Rimworld_Animations.PawnAnimationClip">
|
||||||
|
<layer>LayingPawn</layer>
|
||||||
|
<keyframes>
|
||||||
|
<li>
|
||||||
|
<tickDuration>60</tickDuration>
|
||||||
|
<bodyAngle>3.36438</bodyAngle>
|
||||||
|
<headAngle>-18.3917084</headAngle>
|
||||||
|
<genitalAngle>0</genitalAngle>
|
||||||
|
<bodyOffsetZ>0.233432038</bodyOffsetZ>
|
||||||
|
<bodyOffsetX>0.4034014</bodyOffsetX>
|
||||||
|
<headBob>0</headBob>
|
||||||
|
<bodyFacing>3</bodyFacing>
|
||||||
|
<headFacing>3</headFacing>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<tickDuration>1</tickDuration>
|
||||||
|
<bodyAngle>-5.439103</bodyAngle>
|
||||||
|
<headAngle>-18.591362</headAngle>
|
||||||
|
<genitalAngle>0</genitalAngle>
|
||||||
|
<bodyOffsetZ>0.253895342</bodyOffsetZ>
|
||||||
|
<bodyOffsetX>0.5181109</bodyOffsetX>
|
||||||
|
<headBob>0</headBob>
|
||||||
|
<bodyFacing>3</bodyFacing>
|
||||||
|
<headFacing>3</headFacing>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</keyframes>
|
||||||
|
</li>
|
||||||
|
</animationClips>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<stageName>Slow_Fuck</stageName>
|
||||||
|
<isLooping>true</isLooping>
|
||||||
|
<playTimeTicks>1212</playTimeTicks>
|
||||||
|
<stageIndex>0</stageIndex>
|
||||||
|
<animationClips>
|
||||||
|
<li Class="Rimworld_Animations.PawnAnimationClip">
|
||||||
|
<keyframes>
|
||||||
|
<li>
|
||||||
|
<tickDuration>30</tickDuration>
|
||||||
|
<bodyAngle>-82.7437439</bodyAngle>
|
||||||
|
<headAngle>-72.1512451</headAngle>
|
||||||
|
<genitalAngle>0</genitalAngle>
|
||||||
|
<bodyOffsetZ>0.025494989</bodyOffsetZ>
|
||||||
|
<bodyOffsetX>-0.29485938</bodyOffsetX>
|
||||||
|
<headBob>0</headBob>
|
||||||
|
<bodyFacing>1</bodyFacing>
|
||||||
|
<headFacing>1</headFacing>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<tickDuration>5</tickDuration>
|
||||||
|
<bodyAngle>-82.7437439</bodyAngle>
|
||||||
|
<headAngle>-67.51352</headAngle>
|
||||||
|
<genitalAngle>0</genitalAngle>
|
||||||
|
<bodyOffsetZ>0.025494989</bodyOffsetZ>
|
||||||
|
<bodyOffsetX>-0.279417485</bodyOffsetX>
|
||||||
|
<headBob>0</headBob>
|
||||||
|
<bodyFacing>1</bodyFacing>
|
||||||
|
<headFacing>1</headFacing>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<tickDuration>60</tickDuration>
|
||||||
|
<bodyAngle>-82.7437439</bodyAngle>
|
||||||
|
<headAngle>-67.51352</headAngle>
|
||||||
|
<genitalAngle>0</genitalAngle>
|
||||||
|
<bodyOffsetZ>0.025494989</bodyOffsetZ>
|
||||||
|
<bodyOffsetX>-0.339417485</bodyOffsetX>
|
||||||
|
<headBob>0</headBob>
|
||||||
|
<bodyFacing>1</bodyFacing>
|
||||||
|
<headFacing>1</headFacing>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<tickDuration>1</tickDuration>
|
||||||
|
<bodyAngle>-82.7437439</bodyAngle>
|
||||||
|
<headAngle>-72.1512451</headAngle>
|
||||||
|
<genitalAngle>0</genitalAngle>
|
||||||
|
<bodyOffsetZ>0.025494989</bodyOffsetZ>
|
||||||
|
<bodyOffsetX>-0.29485938</bodyOffsetX>
|
||||||
|
<headBob>0</headBob>
|
||||||
|
<bodyFacing>1</bodyFacing>
|
||||||
|
<headFacing>1</headFacing>
|
||||||
|
</li>
|
||||||
|
</keyframes>
|
||||||
|
</li>
|
||||||
|
<li Class="Rimworld_Animations.PawnAnimationClip">
|
||||||
|
<layer>LayingPawn</layer>
|
||||||
|
<keyframes>
|
||||||
|
<li>
|
||||||
|
<tickDuration>30</tickDuration>
|
||||||
|
<bodyAngle>-5.439103</bodyAngle>
|
||||||
|
<headAngle>-18.591362</headAngle>
|
||||||
|
<genitalAngle>0</genitalAngle>
|
||||||
|
<bodyOffsetZ>0.253895342</bodyOffsetZ>
|
||||||
|
<bodyOffsetX>0.5181109</bodyOffsetX>
|
||||||
|
<headBob>0</headBob>
|
||||||
|
<bodyFacing>3</bodyFacing>
|
||||||
|
<headFacing>3</headFacing>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<tickDuration>5</tickDuration>
|
||||||
|
<bodyAngle>12.3350525</bodyAngle>
|
||||||
|
<headAngle>-14.779211</headAngle>
|
||||||
|
<genitalAngle>0</genitalAngle>
|
||||||
|
<bodyOffsetZ>0.2605105</bodyOffsetZ>
|
||||||
|
<bodyOffsetX>0.449729085</bodyOffsetX>
|
||||||
|
<headBob>0</headBob>
|
||||||
|
<bodyFacing>3</bodyFacing>
|
||||||
|
<headFacing>3</headFacing>
|
||||||
|
<soundEffect>Fuck</soundEffect>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<tickDuration>60</tickDuration>
|
||||||
|
<bodyAngle>12.3350525</bodyAngle>
|
||||||
|
<headAngle>-14.779211</headAngle>
|
||||||
|
<genitalAngle>0</genitalAngle>
|
||||||
|
<bodyOffsetZ>0.2605105</bodyOffsetZ>
|
||||||
|
<bodyOffsetX>0.389729085</bodyOffsetX>
|
||||||
|
<headBob>0</headBob>
|
||||||
|
<bodyFacing>3</bodyFacing>
|
||||||
|
<headFacing>3</headFacing>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<tickDuration>1</tickDuration>
|
||||||
|
<bodyAngle>-5.439103</bodyAngle>
|
||||||
|
<headAngle>-18.591362</headAngle>
|
||||||
|
<genitalAngle>0</genitalAngle>
|
||||||
|
<bodyOffsetZ>0.253895342</bodyOffsetZ>
|
||||||
|
<bodyOffsetX>0.5181109</bodyOffsetX>
|
||||||
|
<headBob>0</headBob>
|
||||||
|
<bodyFacing>3</bodyFacing>
|
||||||
|
<headFacing>3</headFacing>
|
||||||
|
</li>
|
||||||
|
</keyframes>
|
||||||
|
</li>
|
||||||
|
</animationClips>
|
||||||
|
</li>
|
||||||
|
</animationStages>
|
||||||
|
</Rimworld_Animations.AnimationDef>
|
||||||
|
-->
|
||||||
|
</Defs>
|
||||||
|
|
||||||
|
|
54
Defs/AnimationDefs/TemplateAnimation.xml
Normal file
54
Defs/AnimationDefs/TemplateAnimation.xml
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<Defs>
|
||||||
|
<!--
|
||||||
|
<Rimworld_Animations.AnimationDef>
|
||||||
|
<defName></defName>
|
||||||
|
<label></label>
|
||||||
|
<sounds>true</sounds>
|
||||||
|
<sexTypes>
|
||||||
|
<li>Anal</li>
|
||||||
|
<li>Vaginal</li>
|
||||||
|
</sexTypes>
|
||||||
|
<actors>
|
||||||
|
<li>
|
||||||
|
<defNames>
|
||||||
|
<li>Human</li>
|
||||||
|
</defNames>
|
||||||
|
<isFucked>true</isFucked>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<defNames>
|
||||||
|
</defNames>
|
||||||
|
<bodyDefTypes>
|
||||||
|
<li>QuadrupedAnimalWithHooves</li>
|
||||||
|
<li>QuadrupedAnimalWithPawsAndTail</li>
|
||||||
|
</bodyDefTypes>
|
||||||
|
<isFucking>true</isFucking>
|
||||||
|
<initiator>true</initiator>
|
||||||
|
</li>
|
||||||
|
</actors>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<animationStages>
|
||||||
|
<li>
|
||||||
|
<stageName></stageName>
|
||||||
|
<isLooping></isLooping>
|
||||||
|
<playTimeTicks></playTimeTicks>
|
||||||
|
<stageIndex>0</stageIndex>
|
||||||
|
<animationClips>
|
||||||
|
<li Class="Rimworld_Animations.PawnAnimationClip">
|
||||||
|
<layer>LayingPawn</layer>
|
||||||
|
<keyframes></keyframes>
|
||||||
|
</li>
|
||||||
|
<li Class="Rimworld_Animations.PawnAnimationClip">
|
||||||
|
<keyframes></keyframes>
|
||||||
|
</li>
|
||||||
|
</animationClips>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</animationStages>
|
||||||
|
|
||||||
|
</Rimworld_Animations.AnimationDef>
|
||||||
|
-->
|
||||||
|
</Defs>
|
|
@ -188,8 +188,8 @@
|
||||||
</li>
|
</li>
|
||||||
</grains>
|
</grains>
|
||||||
<volumeRange>
|
<volumeRange>
|
||||||
<min>15</min>
|
<min>45</min>
|
||||||
<max>25</max>
|
<max>75</max>
|
||||||
</volumeRange>
|
</volumeRange>
|
||||||
<pitchRange>
|
<pitchRange>
|
||||||
<min>1.4</min>
|
<min>1.4</min>
|
||||||
|
@ -197,7 +197,7 @@
|
||||||
</pitchRange>
|
</pitchRange>
|
||||||
<distRange>
|
<distRange>
|
||||||
<min>0</min>
|
<min>0</min>
|
||||||
<max>25</max>
|
<max>100</max>
|
||||||
</distRange>
|
</distRange>
|
||||||
<repeatMode>NeverTwice</repeatMode>
|
<repeatMode>NeverTwice</repeatMode>
|
||||||
<sustainLoop>false</sustainLoop>
|
<sustainLoop>false</sustainLoop>
|
||||||
|
|
|
@ -110,6 +110,7 @@
|
||||||
<Content Include="Defs\AnimationDefs\Animations_Masturbate.xml" />
|
<Content Include="Defs\AnimationDefs\Animations_Masturbate.xml" />
|
||||||
<Content Include="Defs\AnimationDefs\Animations_Multi.xml" />
|
<Content Include="Defs\AnimationDefs\Animations_Multi.xml" />
|
||||||
<Content Include="Defs\AnimationDefs\Animations_vanilla.xml" />
|
<Content Include="Defs\AnimationDefs\Animations_vanilla.xml" />
|
||||||
|
<Content Include="Defs\AnimationDefs\Animations_Vanilla2.xml" />
|
||||||
<Content Include="Defs\JobDefs\Jobs_SexForAnim.xml" />
|
<Content Include="Defs\JobDefs\Jobs_SexForAnim.xml" />
|
||||||
<Content Include="Defs\MainTabDefs\MainButtonDef.xml" />
|
<Content Include="Defs\MainTabDefs\MainButtonDef.xml" />
|
||||||
<Content Include="Defs\SoundDefs\Sounds_Sex.xml" />
|
<Content Include="Defs\SoundDefs\Sounds_Sex.xml" />
|
||||||
|
|
|
@ -17,6 +17,7 @@ namespace Rimworld_Animations {
|
||||||
public bool isFucking = false;
|
public bool isFucking = false;
|
||||||
public bool isFucked = false;
|
public bool isFucked = false;
|
||||||
public bool controlGenitalAngle = false;
|
public bool controlGenitalAngle = false;
|
||||||
|
public List<BodyDef> bodyDefTypes = new List<BodyDef>();
|
||||||
public BodyTypeOffset bodyTypeOffset = new BodyTypeOffset();
|
public BodyTypeOffset bodyTypeOffset = new BodyTypeOffset();
|
||||||
public Vector3 offset = new Vector2(0, 0);
|
public Vector3 offset = new Vector2(0, 0);
|
||||||
|
|
||||||
|
|
|
@ -14,28 +14,36 @@ namespace Rimworld_Animations {
|
||||||
Note: always make the list in this order:
|
Note: always make the list in this order:
|
||||||
Female pawns, animal female pawns, male pawns, animal male pawns
|
Female pawns, animal female pawns, male pawns, animal male pawns
|
||||||
*/
|
*/
|
||||||
public static AnimationDef tryFindAnimation(ref List<Pawn> participants, rjw.xxx.rjwSextype sexType = 0) {
|
public static AnimationDef tryFindAnimation(ref List<Pawn> participants, rjw.xxx.rjwSextype sexType = 0, rjw.SexProps sexProps = null) {
|
||||||
|
|
||||||
//aggressors last
|
//aggressors last
|
||||||
participants = participants.OrderBy(p => p.jobs.curDriver is rjw.JobDriver_SexBaseInitiator).ToList();
|
participants = participants.OrderBy(p => p.jobs.curDriver is rjw.JobDriver_SexBaseInitiator).ToList();
|
||||||
|
|
||||||
//fucked first, fucking second
|
participants = participants.OrderBy(p => p == sexProps.Giver).ToList();
|
||||||
|
|
||||||
|
participants = participants.OrderByDescending(p => rjw.GenderHelper.GetSex(p) == rjw.GenderHelper.Sex.futa).ToList();
|
||||||
|
|
||||||
|
//pawns that can fuck last
|
||||||
participants = participants.OrderBy(p => rjw.xxx.can_fuck(p)).ToList();
|
participants = participants.OrderBy(p => rjw.xxx.can_fuck(p)).ToList();
|
||||||
|
|
||||||
if(rjw.RJWPreferenceSettings.Malesex == rjw.RJWPreferenceSettings.AllowedSex.Nohomo) {
|
|
||||||
participants = participants.OrderBy(x => rjw.xxx.is_male(x)).ToList();
|
|
||||||
}
|
|
||||||
|
|
||||||
List<Pawn> localParticipants = new List<Pawn>(participants);
|
List<Pawn> localParticipants = new List<Pawn>(participants);
|
||||||
|
|
||||||
IEnumerable<AnimationDef> options = DefDatabase<AnimationDef>.AllDefs.Where((AnimationDef x) => {
|
IEnumerable<AnimationDef> options = DefDatabase<AnimationDef>.AllDefs.Where((AnimationDef x) => {
|
||||||
|
|
||||||
|
|
||||||
if (x.actors.Count != localParticipants.Count) {
|
if (x.actors.Count != localParticipants.Count) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
for (int i = 0; i < x.actors.Count; i++) {
|
for (int i = 0; i < x.actors.Count; i++) {
|
||||||
|
|
||||||
if((x.actors[i].blacklistedRaces != null) && x.actors[i].blacklistedRaces.Contains(localParticipants[i].def.defName)) {
|
if (rjw.RJWPreferenceSettings.Malesex == rjw.RJWPreferenceSettings.AllowedSex.Nohomo) {
|
||||||
|
if (rjw.xxx.is_male(localParticipants[i]) && x.actors[i].isFucked) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((x.actors[i].blacklistedRaces != null) && x.actors[i].blacklistedRaces.Contains(localParticipants[i].def.defName)) {
|
||||||
if (rjw.RJWSettings.DevMode) {
|
if (rjw.RJWSettings.DevMode) {
|
||||||
Log.Message(x.defName.ToStringSafe() + " not selected -- " + localParticipants[i].def.defName.ToStringSafe() + " " + localParticipants[i].Name.ToStringSafe() + " is blacklisted");
|
Log.Message(x.defName.ToStringSafe() + " not selected -- " + localParticipants[i].def.defName.ToStringSafe() + " " + localParticipants[i].Name.ToStringSafe() + " is blacklisted");
|
||||||
}
|
}
|
||||||
|
@ -51,7 +59,8 @@ namespace Rimworld_Animations {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
}
|
||||||
|
else if (!x.actors[i].bodyDefTypes.Contains(localParticipants[i].RaceProps.body)) {
|
||||||
|
|
||||||
if (!x.actors[i].defNames.Contains(localParticipants[i].def.defName)) {
|
if (!x.actors[i].defNames.Contains(localParticipants[i].def.defName)) {
|
||||||
|
|
||||||
|
@ -66,22 +75,103 @@ namespace Rimworld_Animations {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//genitals checking
|
||||||
|
if(x.actors[i].requiredGenitals != null) {
|
||||||
|
if (x.actors[i].requiredGenitals.Contains("Vagina")) {
|
||||||
|
|
||||||
if(x.actors[i].requiredGenitals != null && x.actors[i].requiredGenitals.Contains("Vagina")) {
|
if (!rjw.Genital_Helper.has_vagina(localParticipants[i])) {
|
||||||
|
Log.Message(x.defName.ToStringSafe() + " not selected -- " + localParticipants[i].def.defName.ToStringSafe() + " " + localParticipants[i].Name.ToStringSafe() + " doesn't have vagina");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (!rjw.Genital_Helper.has_vagina(localParticipants[i])) {
|
}
|
||||||
Log.Message(x.defName.ToStringSafe() + " not selected -- " + localParticipants[i].def.defName.ToStringSafe() + " " + localParticipants[i].Name.ToStringSafe() + " doesn't have vagina");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if (x.actors[i].requiredGenitals.Contains("Penis")) {
|
||||||
|
|
||||||
|
if (!(rjw.Genital_Helper.has_multipenis(localParticipants[i]) || rjw.Genital_Helper.has_penis_infertile(localParticipants[i]) || rjw.Genital_Helper.has_penis_fertile(localParticipants[i]))) {
|
||||||
|
Log.Message(x.defName.ToStringSafe() + " not selected -- " + localParticipants[i].def.defName.ToStringSafe() + " " + localParticipants[i].Name.ToStringSafe() + " doesn't have penis");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (x.actors[i].requiredGenitals.Contains("Mouth")) {
|
||||||
|
|
||||||
|
if (!rjw.Genital_Helper.has_mouth(localParticipants[i])) {
|
||||||
|
Log.Message(x.defName.ToStringSafe() + " not selected -- " + localParticipants[i].def.defName.ToStringSafe() + " " + localParticipants[i].Name.ToStringSafe() + " doesn't have mouth");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (x.actors[i].requiredGenitals.Contains("Anus")) {
|
||||||
|
|
||||||
|
if (!rjw.Genital_Helper.has_anus(localParticipants[i])) {
|
||||||
|
Log.Message(x.defName.ToStringSafe() + " not selected -- " + localParticipants[i].def.defName.ToStringSafe() + " " + localParticipants[i].Name.ToStringSafe() + " doesn't have anus");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if(x.actors[i].requiredGenitals.Contains("Breasts")) {
|
||||||
|
if (!rjw.Genital_Helper.can_do_breastjob(localParticipants[i])) {
|
||||||
|
Log.Message(x.defName.ToStringSafe() + " not selected -- " + localParticipants[i].def.defName.ToStringSafe() + " " + localParticipants[i].Name.ToStringSafe() + " doesn't have breasts");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (x.actors[i].requiredGenitals.Contains("NoVagina")) {
|
||||||
|
|
||||||
|
if (rjw.Genital_Helper.has_vagina(localParticipants[i])) {
|
||||||
|
Log.Message(x.defName.ToStringSafe() + " not selected -- " + localParticipants[i].def.defName.ToStringSafe() + " " + localParticipants[i].Name.ToStringSafe() + " has vagina");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (x.actors[i].requiredGenitals.Contains("NoPenis")) {
|
||||||
|
|
||||||
|
if ((rjw.Genital_Helper.has_multipenis(localParticipants[i]) || rjw.Genital_Helper.has_penis_infertile(localParticipants[i]) || rjw.Genital_Helper.has_penis_fertile(localParticipants[i]))) {
|
||||||
|
Log.Message(x.defName.ToStringSafe() + " not selected -- " + localParticipants[i].def.defName.ToStringSafe() + " " + localParticipants[i].Name.ToStringSafe() + " has penis");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (x.actors[i].requiredGenitals.Contains("NoMouth")) {
|
||||||
|
|
||||||
|
if (rjw.Genital_Helper.has_mouth(localParticipants[i])) {
|
||||||
|
Log.Message(x.defName.ToStringSafe() + " not selected -- " + localParticipants[i].def.defName.ToStringSafe() + " " + localParticipants[i].Name.ToStringSafe() + " has mouth");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (x.actors[i].requiredGenitals.Contains("NoAnus")) {
|
||||||
|
|
||||||
|
if (rjw.Genital_Helper.has_anus(localParticipants[i])) {
|
||||||
|
Log.Message(x.defName.ToStringSafe() + " not selected -- " + localParticipants[i].def.defName.ToStringSafe() + " " + localParticipants[i].Name.ToStringSafe() + " has anus");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (x.actors[i].requiredGenitals.Contains("NoBreasts")) {
|
||||||
|
if (rjw.Genital_Helper.can_do_breastjob(localParticipants[i])) {
|
||||||
|
Log.Message(x.defName.ToStringSafe() + " not selected -- " + localParticipants[i].def.defName.ToStringSafe() + " " + localParticipants[i].Name.ToStringSafe() + " has breasts");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//TESTING ANIMATIONS ONLY REMEMBER TO COMMENT OUT BEFORE PUSH
|
//TESTING ANIMATIONS ONLY REMEMBER TO COMMENT OUT BEFORE PUSH
|
||||||
/*
|
/*
|
||||||
if (x.defName != "Doggystyle")
|
if (x.defName != "Cunnilingus")
|
||||||
return false;
|
return false;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
if (x.actors[i].isFucking && !rjw.xxx.can_fuck(localParticipants[i])) {
|
if (x.actors[i].isFucking && !rjw.xxx.can_fuck(localParticipants[i])) {
|
||||||
Log.Message(x.defName.ToStringSafe() + " not selected -- " + localParticipants[i].def.defName.ToStringSafe() + " " + localParticipants[i].Name.ToStringSafe() + " can't fuck");
|
Log.Message(x.defName.ToStringSafe() + " not selected -- " + localParticipants[i].def.defName.ToStringSafe() + " " + localParticipants[i].Name.ToStringSafe() + " can't fuck");
|
||||||
|
@ -102,7 +192,15 @@ namespace Rimworld_Animations {
|
||||||
|
|
||||||
//if the animation not for initiators, but an initiator is playing it
|
//if the animation not for initiators, but an initiator is playing it
|
||||||
|
|
||||||
if (x.actors[i].initiator && !(localParticipants[i].jobs.curDriver is rjw.JobDriver_SexBaseInitiator)) {
|
if(sexProps != null) {
|
||||||
|
|
||||||
|
if(x.actors[i].initiator && localParticipants[i] == sexProps.Reciever) {
|
||||||
|
initiatorsAlignWithSexType = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (x.actors[i].initiator && !(localParticipants[i].jobs.curDriver is rjw.JobDriver_SexBaseInitiator)) {
|
||||||
initiatorsAlignWithSexType = false;
|
initiatorsAlignWithSexType = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -114,7 +212,15 @@ namespace Rimworld_Animations {
|
||||||
|
|
||||||
//if the animation not for initiators, but an initiator is playing it
|
//if the animation not for initiators, but an initiator is playing it
|
||||||
|
|
||||||
if (x.actors[i].initiator && !(localParticipants[i].jobs.curDriver is rjw.JobDriver_SexBaseInitiator)) {
|
if (sexProps != null) {
|
||||||
|
|
||||||
|
if (x.actors[i].initiator && localParticipants[i] == sexProps.Giver) {
|
||||||
|
initiatorsAlignWithSexType = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (x.actors[i].initiator && !(localParticipants[i].jobs.curDriver is rjw.JobDriver_SexBaseInitiator)) {
|
||||||
initiatorsAlignWithSexType = false;
|
initiatorsAlignWithSexType = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,13 +38,15 @@ namespace Rimworld_Animations {
|
||||||
private bool mirror = false, quiver = false, shiver = false;
|
private bool mirror = false, quiver = false, shiver = false;
|
||||||
private int actor;
|
private int actor;
|
||||||
|
|
||||||
|
private int lastDrawFrame = -1;
|
||||||
|
|
||||||
private int animTicks = 0, stageTicks = 0, clipTicks = 0;
|
private int animTicks = 0, stageTicks = 0, clipTicks = 0;
|
||||||
private int curStage = 0;
|
private int curStage = 0;
|
||||||
private float clipPercent = 0;
|
private float clipPercent = 0;
|
||||||
|
|
||||||
public Vector3 anchor, deltaPos, headBob;
|
public Vector3 anchor = Vector3.zero, deltaPos = Vector3.zero, headBob = Vector3.zero;
|
||||||
public float bodyAngle, headAngle, genitalAngle;
|
public float bodyAngle = 0, headAngle = 0, genitalAngle = 0;
|
||||||
public Rot4 headFacing, bodyFacing;
|
public Rot4 headFacing = Rot4.North, bodyFacing = Rot4.North;
|
||||||
|
|
||||||
public bool controlGenitalAngle = false;
|
public bool controlGenitalAngle = false;
|
||||||
|
|
||||||
|
@ -102,8 +104,6 @@ namespace Rimworld_Animations {
|
||||||
}
|
}
|
||||||
public void StartAnimation(AnimationDef anim, int actor, bool mirror = false, bool shiver = false, bool fastAnimForQuickie = false) {
|
public void StartAnimation(AnimationDef anim, int actor, bool mirror = false, bool shiver = false, bool fastAnimForQuickie = false) {
|
||||||
|
|
||||||
isAnimating = true;
|
|
||||||
|
|
||||||
AlienRaceOffset raceOffset = anim?.actors[actor]?.raceOffsets?.Find(x => x.defName == pawn.def.defName);
|
AlienRaceOffset raceOffset = anim?.actors[actor]?.raceOffsets?.Find(x => x.defName == pawn.def.defName);
|
||||||
|
|
||||||
if (raceOffset != null) {
|
if (raceOffset != null) {
|
||||||
|
@ -151,9 +151,12 @@ namespace Rimworld_Animations {
|
||||||
|
|
||||||
controlGenitalAngle = anim.actors[actor].controlGenitalAngle;
|
controlGenitalAngle = anim.actors[actor].controlGenitalAngle;
|
||||||
|
|
||||||
|
isAnimating = true;
|
||||||
//tick once for initialization
|
//tick once for initialization
|
||||||
tickAnim();
|
tickAnim();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
public override void CompTick() {
|
public override void CompTick() {
|
||||||
|
|
||||||
|
@ -259,6 +262,10 @@ namespace Rimworld_Animations {
|
||||||
|
|
||||||
public void calculateDrawValues() {
|
public void calculateDrawValues() {
|
||||||
|
|
||||||
|
/*if(Find.TickManager.TickRateMultiplier > 1 && (lastDrawFrame + 1 >= RealTime.frameCount || RealTime.deltaTime < 0.05f)) {
|
||||||
|
return;
|
||||||
|
}*/
|
||||||
|
|
||||||
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));
|
||||||
|
|
||||||
if (AnimationSettings.offsets != null && AnimationSettings.offsets.ContainsKey(CurrentAnimation.defName + pawn.def.defName + ActorIndex)) {
|
if (AnimationSettings.offsets != null && AnimationSettings.offsets.ContainsKey(CurrentAnimation.defName + pawn.def.defName + ActorIndex)) {
|
||||||
|
@ -307,6 +314,8 @@ namespace Rimworld_Animations {
|
||||||
}
|
}
|
||||||
headBob = new Vector3(0, 0, clip.HeadBob.Evaluate(clipPercent));
|
headBob = new Vector3(0, 0, clip.HeadBob.Evaluate(clipPercent));
|
||||||
|
|
||||||
|
lastDrawFrame = RealTime.frameCount;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vector3 getPawnHeadPosition() {
|
public Vector3 getPawnHeadPosition() {
|
||||||
|
|
|
@ -79,9 +79,9 @@ namespace Rimworld_Animations {
|
||||||
|
|
||||||
|
|
||||||
Vector2 bodyOffset = (portrait ? offset?.portraitBodyTypes ?? offset?.bodyTypes : offset?.bodyTypes)?.FirstOrDefault(predicate: to => to.bodyType == pawn.story.bodyType)
|
Vector2 bodyOffset = (portrait ? offset?.portraitBodyTypes ?? offset?.bodyTypes : offset?.bodyTypes)?.FirstOrDefault(predicate: to => to.bodyType == pawn.story.bodyType)
|
||||||
?.offset ?? Vector2.zero;
|
?.offset ?? Vector2.zero;
|
||||||
Vector2 crownOffset = (portrait ? offset?.portraitCrownTypes ?? offset?.crownTypes : offset?.crownTypes)?.FirstOrDefault(predicate: to => to.crownType == alienComp.crownType)
|
Vector2 crownOffset = (portrait ? offset?.portraitCrownTypes ?? offset?.crownTypes : offset?.crownTypes)?.FirstOrDefault(predicate: to => to.crownType == alienComp.crownType)
|
||||||
?.offset ?? Vector2.zero;
|
?.offset ?? Vector2.zero;
|
||||||
|
|
||||||
//Defaults for tails
|
//Defaults for tails
|
||||||
//south 0.42f, -0.3f, -0.22f
|
//south 0.42f, -0.3f, -0.22f
|
||||||
|
@ -130,7 +130,7 @@ namespace Rimworld_Animations {
|
||||||
else {
|
else {
|
||||||
|
|
||||||
Quaternion addonRotation = quat;
|
Quaternion addonRotation = quat;
|
||||||
if (AnimationSettings.controlGenitalRotation && pawnAnimator.controlGenitalAngle && ba.hediffGraphics[0] != null && (ba.hediffGraphics[0].path.Contains("Penis") || ba.hediffGraphics[0].path.Contains("penis"))) {
|
if (AnimationSettings.controlGenitalRotation && pawnAnimator.controlGenitalAngle && ba.hediffGraphics[0]?.path != null && (ba.hediffGraphics[0].path.Contains("Penis") || ba.hediffGraphics[0].path.Contains("penis"))) {
|
||||||
addonRotation = Quaternion.AngleAxis(angle: pawnAnimator.genitalAngle, axis: Vector3.up);
|
addonRotation = Quaternion.AngleAxis(angle: pawnAnimator.genitalAngle, axis: Vector3.up);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,8 +23,7 @@ namespace Rimworld_Animations {
|
||||||
}
|
}
|
||||||
|
|
||||||
if(__instance is JobDriver_JoinInBed) {
|
if(__instance is JobDriver_JoinInBed) {
|
||||||
Log.Warning("Tried to start wrong JobDriver with Rimworld-Animations installed. If you see this warning soon after installing this mod, it's fine and animated sex will start soon. If you see this a long time after installing, that's a problem.");
|
Log.Warning("Playing regular RJW joininbed jobdriver, if it animates properly ignore this warning");
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Pawn pawn = __instance.pawn;
|
Pawn pawn = __instance.pawn;
|
||||||
|
@ -55,15 +54,15 @@ namespace Rimworld_Animations {
|
||||||
bool quickie = (__instance is JobDriver_SexQuick) && AnimationSettings.fastAnimForQuickie;
|
bool quickie = (__instance is JobDriver_SexQuick) && AnimationSettings.fastAnimForQuickie;
|
||||||
|
|
||||||
if (bed != null) {
|
if (bed != null) {
|
||||||
RerollAnimations(Target, __instance.duration, bed as Thing, __instance.sexType, quickie);
|
RerollAnimations(Target, __instance.duration, bed as Thing, __instance.sexType, quickie, sexProps: __instance.Sexprops);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
RerollAnimations(Target, __instance.duration, sexType: __instance.sexType, fastAnimForQuickie: quickie);
|
RerollAnimations(Target, __instance.duration, sexType: __instance.sexType, fastAnimForQuickie: quickie, sexProps: __instance.Sexprops);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void RerollAnimations(Pawn pawn, int duration, Thing bed = null, xxx.rjwSextype sexType = xxx.rjwSextype.None, bool fastAnimForQuickie = false) {
|
public static void RerollAnimations(Pawn pawn, int duration, Thing bed = null, xxx.rjwSextype sexType = xxx.rjwSextype.None, bool fastAnimForQuickie = false, rjw.SexProps sexProps = null) {
|
||||||
|
|
||||||
if(pawn == null || !(pawn.jobs?.curDriver is JobDriver_SexBaseReciever)) {
|
if(pawn == null || !(pawn.jobs?.curDriver is JobDriver_SexBaseReciever)) {
|
||||||
Log.Message("Error: Tried to reroll animations when pawn isn't sexing");
|
Log.Message("Error: Tried to reroll animations when pawn isn't sexing");
|
||||||
|
@ -76,7 +75,7 @@ namespace Rimworld_Animations {
|
||||||
pawnsToAnimate = pawnsToAnimate.Append(pawn).ToList();
|
pawnsToAnimate = pawnsToAnimate.Append(pawn).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
AnimationDef anim = AnimationUtility.tryFindAnimation(ref pawnsToAnimate, sexType);
|
AnimationDef anim = AnimationUtility.tryFindAnimation(ref pawnsToAnimate, sexType, sexProps);
|
||||||
|
|
||||||
if (anim != null) {
|
if (anim != null) {
|
||||||
|
|
||||||
|
|
|
@ -25,9 +25,11 @@ namespace Rimworld_Animations {
|
||||||
|
|
||||||
if (pawn.IsHashIntervalTick(__instance.ticks_between_thrusts)) {
|
if (pawn.IsHashIntervalTick(__instance.ticks_between_thrusts)) {
|
||||||
|
|
||||||
__instance.Animate(pawn, (Thing)pawn2);
|
__instance.ChangePsyfocus(pawn, pawn2);
|
||||||
|
|
||||||
if (!AnimationSettings.soundOverride || !pawn.TryGetComp<CompBodyAnimator>().isAnimating) {
|
__instance.Animate(pawn, pawn2);
|
||||||
|
|
||||||
|
if (!AnimationSettings.soundOverride || pawn.TryGetComp<CompBodyAnimator>() == null || !pawn.TryGetComp<CompBodyAnimator>().isAnimating) {
|
||||||
__instance.PlaySexSound();
|
__instance.PlaySexSound();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue