code:
<?xml version="1.0" encoding="utf-8"?>
<Defs>
  <AnimationDef>
    <defName>InitiatorPawn_DP_Stage5b</defName>
    <durationTicks>180</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>-87</angle>
              <visible>true</visible>
              <offset>(-0.6, -1, -0.37)</offset>
              <rotation>East</rotation>

              <tick>17</tick>
              <angle>-68</angle>
              <visible>true</visible>
              <offset>(-0.6, -1, -0.37)</offset>
              <rotation>East</rotation>
              <sound>Fuck</sound>

              <tick>25</tick>
              <angle>-95</angle>
              <visible>true</visible>
              <offset>(-0.6, -1, -0.37)</offset>
              <rotation>East</rotation>

              <tick>50</tick>
              <angle>-90</angle>
              <visible>true</visible>
              <offset>(-0.6, -1, -0.37)</offset>
              <rotation>East</rotation>
              <sound>Cum</sound>

              <tick>55</tick>
              <angle>-95</angle>
              <visible>true</visible>
              <offset>(-0.6, -1, -0.37)</offset>
              <rotation>East</rotation>
              <voice>Moan</voice>

              <tick>100</tick>
              <angle>-90</angle>
              <visible>true</visible>
              <offset>(-0.6, -1, -0.37)</offset>
              <rotation>East</rotation>
              <sound>Cum</sound>

              <tick>105</tick>
              <angle>-95</angle>
              <visible>true</visible>
              <offset>(-0.6, -1, -0.37)</offset>
              <rotation>East</rotation>

              <tick>180</tick>
              <angle>-90</angle>
              <visible>true</visible>
              <offset>(-0.6, -1, -0.37)</offset>
              <rotation>East</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>10</angle>
              <visible>true</visible>
              <rotation>East</rotation>

              <tick>18</tick>
              <angle>20</angle>
              <visible>true</visible>
              <rotation>East</rotation>

              <tick>180</tick>
              <angle>10</angle>
              <visible>true</visible>
              <rotation>East</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
  <AnimationDef>
    <defName>ReceiverPawn_DP_Stage5b</defName>
    <durationTicks>180</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>-30</angle>
              <visible>true</visible>
              <offset>(-0.45, 0, 0.12)</offset>
              <rotation>West</rotation>

              <tick>18</tick>
              <angle>-40</angle>
              <visible>true</visible>
              <offset>(-0.45, 0, 0.12)</offset>
              <rotation>West</rotation>
              <voice>Scream</voice>

              <tick>60</tick>
              <angle>-35</angle>
              <visible>true</visible>
              <offset>(-0.55, 0, 0.12)</offset>
              <rotation>West</rotation>

              <tick>100</tick>
              <angle>-60</angle>
              <visible>true</visible>
              <offset>(-0.6, 0, 0)</offset>
              <rotation>West</rotation>
              <voice>Scream</voice>

              <tick>180</tick>
              <angle>-60</angle>
              <visible>true</visible>
              <offset>(-0.6, 0, -0.02)</offset>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>70</tick>
              <angle>30</angle>
              <visible>true</visible>
              <rotation>South</rotation>

              <tick>180</tick>
              <angle>10</angle>
              <visible>true</visible>
              <rotation>South</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
  <AnimationDef>
    <defName>InitiatorPawn2_DP_Stage5b</defName>
    <durationTicks>180</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>20</angle>
              <visible>true</visible>
              <offset>(0.2, -1, 0.2)</offset>
              <rotation>West</rotation>

              <tick>18</tick>
              <angle>-10</angle>
              <visible>true</visible>
              <offset>(0.33, -1, 0.2)</offset>
              <rotation>West</rotation>
              <sound>Fuck</sound>

              <tick>23</tick>
              <angle>28</angle>
              <visible>true</visible>
              <offset>(0.16, -1, 0.2)</offset>
              <rotation>West</rotation>
              <voice>Grunt</voice>

              <tick>70</tick>
              <angle>20</angle>
              <visible>true</visible>
              <offset>(0.16, -1, 0.2)</offset>
              <rotation>West</rotation>
              <sound>Cum</sound>

              <tick>75</tick>
              <angle>28</angle>
              <visible>true</visible>
              <offset>(0.16, -1, 0.2)</offset>
              <rotation>West</rotation>
              <voice>Grunt</voice>

              <tick>130</tick>
              <angle>20</angle>
              <visible>true</visible>
              <offset>(0.16, -1, 0.2)</offset>
              <rotation>West</rotation>
              <sound>Cum</sound>

              <tick>135</tick>
              <angle>28</angle>
              <visible>true</visible>
              <offset>(0.16, -1, 0.2)</offset>
              <rotation>West</rotation>

              <tick>180</tick>
              <angle>20</angle>
              <visible>true</visible>
              <offset>(0.16, -1, 0.2)</offset>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>-22</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>17</tick>
              <angle>-10</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>180</tick>
              <angle>-22</angle>
              <visible>true</visible>
              <rotation>West</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8"?>
<Defs>
  <AnimationDef>
    <defName>InitiatorPawn_DP_Stage5c</defName>
    <durationTicks>180</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>-87</angle>
              <visible>true</visible>
              <offset>(-0.6, -1, -0.37)</offset>
              <rotation>East</rotation>

              <tick>17</tick>
              <angle>-68</angle>
              <visible>true</visible>
              <offset>(-0.6, -1, -0.37)</offset>
              <rotation>East</rotation>
              <sound>Fuck</sound>

              <tick>25</tick>
              <angle>-95</angle>
              <visible>true</visible>
              <offset>(-0.6, -1, -0.37)</offset>
              <rotation>East</rotation>

              <tick>50</tick>
              <angle>-90</angle>
              <visible>true</visible>
              <offset>(-0.6, -1, -0.37)</offset>
              <rotation>East</rotation>
              <sound>Cum</sound>

              <tick>55</tick>
              <angle>-95</angle>
              <visible>true</visible>
              <offset>(-0.6, -1, -0.37)</offset>
              <rotation>East</rotation>
              <voice>Grunt</voice>

              <tick>100</tick>
              <angle>-90</angle>
              <visible>true</visible>
              <offset>(-0.6, -1, -0.37)</offset>
              <rotation>East</rotation>
              <sound>Cum</sound>

              <tick>105</tick>
              <angle>-95</angle>
              <visible>true</visible>
              <offset>(-0.6, -1, -0.37)</offset>
              <rotation>East</rotation>

              <tick>180</tick>
              <angle>-90</angle>
              <visible>true</visible>
              <offset>(-0.6, -1, -0.37)</offset>
              <rotation>East</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>10</angle>
              <visible>true</visible>
              <rotation>East</rotation>

              <tick>18</tick>
              <angle>20</angle>
              <visible>true</visible>
              <rotation>East</rotation>

              <tick>180</tick>
              <angle>10</angle>
              <visible>true</visible>
              <rotation>East</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
  <AnimationDef>
    <defName>ReceiverPawn_DP_Stage5c</defName>
    <durationTicks>180</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>-30</angle>
              <visible>true</visible>
              <offset>(-0.45, 0, 0.12)</offset>
              <rotation>West</rotation>

              <tick>18</tick>
              <angle>-40</angle>
              <visible>true</visible>
              <offset>(-0.45, 0, 0.12)</offset>
              <rotation>West</rotation>

              <tick>23</tick>
              <angle>-30</angle>
              <visible>true</visible>
              <offset>(-0.45, 0, 0.12)</offset>
              <rotation>West</rotation>
              <voice>Scream</voice>

              <tick>60</tick>
              <angle>-35</angle>
              <visible>true</visible>
              <offset>(-0.5, 0, 0.12)</offset>
              <rotation>West</rotation>
              <voice>Scream</voice>

              <tick>65</tick>
              <angle>-30</angle>
              <visible>true</visible>
              <offset>(-0.5, 0, 0.12)</offset>
              <rotation>West</rotation>

              <tick>100</tick>
              <angle>-35</angle>
              <visible>true</visible>
              <offset>(-0.5, 0, 0.12)</offset>
              <rotation>West</rotation>

              <tick>105</tick>
              <angle>-30</angle>
              <visible>true</visible>
              <offset>(-0.5, 0, 0.12)</offset>
              <rotation>West</rotation>

              <tick>140</tick>
              <angle>-35</angle>
              <visible>true</visible>
              <offset>(-0.5, 0, 0.12)</offset>
              <rotation>West</rotation>
              <voice>Scream</voice>

              <tick>180</tick>
              <angle>-25</angle>
              <visible>true</visible>
              <offset>(-0.5, 0, 0.18)</offset>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>30</tick>
              <angle>25</angle>
              <visible>true</visible>
              <offset>(0, 0, -0.06)</offset>
              <rotation>West</rotation>

              <tick>90</tick>
              <angle>30</angle>
              <visible>true</visible>
              <offset>(0, 0, -0.06)</offset>
              <rotation>West</rotation>

              <tick>105</tick>
              <angle>50</angle>
              <visible>true</visible>
              <offset>(0, 0, -0.06)</offset>
              <rotation>West</rotation>

              <tick>160</tick>
              <angle>46</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>180</tick>
              <angle>0</angle>
              <visible>true</visible>
              <rotation>West</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
  <AnimationDef>
    <defName>InitiatorPawn2_DP_Stage5c</defName>
    <durationTicks>180</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>20</angle>
              <visible>true</visible>
              <offset>(0.2, -1, 0.2)</offset>
              <rotation>West</rotation>

              <tick>18</tick>
              <angle>-10</angle>
              <visible>true</visible>
              <offset>(0.33, -1, 0.2)</offset>
              <rotation>West</rotation>
              <sound>Fuck</sound>

              <tick>23</tick>
              <angle>28</angle>
              <visible>true</visible>
              <offset>(0.16, -1, 0.2)</offset>
              <rotation>West</rotation>

              <tick>70</tick>
              <angle>20</angle>
              <visible>true</visible>
              <offset>(0.16, -1, 0.2)</offset>
              <rotation>West</rotation>
              <sound>Cum</sound>

              <tick>75</tick>
              <angle>28</angle>
              <visible>true</visible>
              <offset>(0.16, -1, 0.2)</offset>
              <rotation>West</rotation>
              <voice>Grunt</voice>

              <tick>130</tick>
              <angle>20</angle>
              <visible>true</visible>
              <offset>(0.16, -1, 0.2)</offset>
              <rotation>West</rotation>
              <sound>Cum</sound>

              <tick>135</tick>
              <angle>28</angle>
              <visible>true</visible>
              <offset>(0.16, -1, 0.2)</offset>
              <rotation>West</rotation>

              <tick>180</tick>
              <angle>20</angle>
              <visible>true</visible>
              <offset>(0.16, -1, 0.2)</offset>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>-22</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>17</tick>
              <angle>-10</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>180</tick>
              <angle>-22</angle>
              <visible>true</visible>
              <rotation>West</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
</Defs>

repo_name: BELLATOR/rimworld

license: unknown


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
	<Rimworld_Animations.GroupAnimationDef>
		<defName>GroupAnimation_Missionary</defName>
		<numActors>2</numActors>
		<animationStages>

				<loops>1</loops>
				<loopOptions>

						<probability>1</probability>
						<animationDefs>

InitiatorPawn_Missionary_Stage1

ReceiverPawn_Missionary_Stage1

						</animationDefs>

				</loopOptions>

				<loops>5</loops>
				<paths>

Missionary_Stage2_Branch1

Missionary_Stage2_Branch2

Missionary_Stage2_Branch3

				</paths>

				<loops>1</loops>
				<loopOptions>

						<probability>1</probability>
						<animationDefs>

InitiatorPawn_Missionary_Stage3

ReceiverPawn_Missionary_Stage3

						</animationDefs>

				</loopOptions>

				<loops>20</loops>
				<loopOptions>

						<probability>1</probability>
						<animationDefs>

InitiatorPawn_Missionary_Stage4

ReceiverPawn_Missionary_Stage4

						</animationDefs>

				</loopOptions>

				<loops>35</loops>
				<loopOptions>

						<probability>1</probability>
						<animationDefs>

InitiatorPawn_Missionary_Stage5

ReceiverPawn_Missionary_Stage5

						</animationDefs>

				</loopOptions>

				<loops>1</loops>
				<loopOptions>

						<probability>1</probability>
						<animationDefs>

InitiatorPawn_Missionary_Stage6

ReceiverPawn_Missionary_Stage6

						</animationDefs>

				</loopOptions>

		</animationStages>

		<contexts>

				<priority>1</priority>
				<interactionDefs>

Sex_Anal

Sex_Vaginal

				</interactionDefs>

				<priority>1</priority>
				<actorShift>1</actorShift>
				<interactionDefs>

Sex_Reverse_Anal

Sex_Reverse_Vaginal

				</interactionDefs>

				<priority>0</priority>
				<interactionDefs>

Sex_MutualMasturbation

Rape_Anal

Rape_Vaginal

Rape_DoublePenetration

Rape_DoublePenetrationM

				</interactionDefs>

				<priority>0</priority>
				<interactionDefs>

Rape_Anal

Rape_Vaginal

Rape_DoublePenetration

Rape_DoublePenetrationM

				</interactionDefs>

		</contexts>
		<offsetDefs>

Offset_Missionary_Initiator

Offset_Missionary_Receiver

		</offsetDefs>

	</Rimworld_Animations.GroupAnimationDef>

	<Rimworld_Animations.GroupAnimationDef>
		<defName>Missionary_Stage2_Branch1</defName>
		<numActors>2</numActors>
		<animationStages>

				<loops>3</loops>
				<loopOptions>

						<probability>1</probability>
						<animationDefs>

InitiatorPawn_Missionary_Stage2a

ReceiverPawn_Missionary_Stage2a

						</animationDefs>

				</loopOptions>

		</animationStages>

		<offsetDefs>

Offset_Missionary_Initiator

Offset_Missionary_Receiver

		</offsetDefs>

	</Rimworld_Animations.GroupAnimationDef>

	<Rimworld_Animations.GroupAnimationDef>
		<defName>Missionary_Stage2_Branch2</defName>
		<numActors>2</numActors>
		<animationStages>

				<loops>3</loops>
				<loopOptions>

						<probability>1</probability>
						<animationDefs>

InitiatorPawn_Missionary_Stage2b

ReceiverPawn_Missionary_Stage2b

						</animationDefs>

				</loopOptions>

		</animationStages>

		<offsetDefs>

Offset_Missionary_Initiator

Offset_Missionary_Receiver

		</offsetDefs>

	</Rimworld_Animations.GroupAnimationDef>

	<Rimworld_Animations.GroupAnimationDef>
		<defName>Missionary_Stage2_Branch3</defName>
		<numActors>2</numActors>
		<animationStages>

				<loops>3</loops>
				<loopOptions>

						<probability>1</probability>
						<animationDefs>

InitiatorPawn_Missionary_Stage2c

ReceiverPawn_Missionary_Stage2c

						</animationDefs>

				</loopOptions>

		</animationStages>

		<offsetDefs>

Offset_Missionary_Initiator

Offset_Missionary_Receiver

		</offsetDefs>

	</Rimworld_Animations.GroupAnimationDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
	<Rimworld_Animations.AnimationOffsetDef>
		<defName>Offset_Missionary_Receiver</defName>
		<offsets>

				<races>

Human

				</races>
				<offsets>

<bodyType>Thin</bodyType><offset>(-0.1, 0, 0.05)</offset>

<bodyType>Female</bodyType><offset>(0, 0, 0)</offset>

<bodyType>Hulk</bodyType><offset>(0.1, 0, 0.1)</offset>

				</offsets>

		</offsets>
	</Rimworld_Animations.AnimationOffsetDef>

		<Rimworld_Animations.AnimationOffsetDef>
		<defName>Offset_Missionary_Initiator</defName>
		<offsets>

				<races>

Human

				</races>
				<offsets>

<bodyType>Hulk</bodyType><offset>(0, 0, 0.179)</offset>

				</offsets>

		</offsets>
	</Rimworld_Animations.AnimationOffsetDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8"?>
<Defs>
  <AnimationDef>
    <defName>InitiatorPawn_Missionary_Stage1</defName>
    <durationTicks>100</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <offset>(-0.85, 0, 0.5)</offset>
              <rotation>East</rotation>

              <tick>30</tick>
              <angle>0</angle>
              <visible>true</visible>
              <offset>(-0.79, 0, 0.44)</offset>
              <rotation>East</rotation>

              <tick>60</tick>
              <angle>20</angle>
              <visible>true</visible>
              <offset>(-0.75, 0, 0.38)</offset>
              <rotation>East</rotation>
              <sound>Fuck</sound>
              <voice>Grunt</voice>

              <tick>66</tick>
              <angle>-10</angle>
              <visible>true</visible>
              <offset>(-0.6, 0, 0.38)</offset>
              <rotation>East</rotation>

              <tick>100</tick>
              <angle>10</angle>
              <visible>true</visible>
              <offset>(-0.75, 0, 0.38)</offset>
              <rotation>East</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <rotation>East</rotation>

              <tick>40</tick>
              <angle>13</angle>
              <visible>true</visible>
              <rotation>East</rotation>

              <tick>100</tick>
              <angle>3</angle>
              <visible>true</visible>
              <rotation>East</rotation>

          </keyframes>
        </value>

        <key>RimNude_Penis</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>0</angle>
              <visible>true</visible>
              <offset>(0, -3, 0)</offset>
              <rotation>East</rotation>

              <tick>20</tick>
              <angle>0</angle>
              <visible>true</visible>
              <offset>(0, -3, 0)</offset>
              <rotation>East</rotation>

              <tick>60</tick>
              <angle>30</angle>
              <visible>true</visible>
              <offset>(0, -3, 0)</offset>
              <rotation>East</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
  <AnimationDef>
    <defName>ReceiverPawn_Missionary_Stage1</defName>
    <durationTicks>100</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>90</angle>
              <visible>true</visible>
              <offset>(0, -1, 0)</offset>
              <rotation>West</rotation>

              <tick>60</tick>
              <angle>90</angle>
              <visible>true</visible>
              <offset>(0.03, -1, 0)</offset>
              <rotation>West</rotation>

              <tick>66</tick>
              <angle>90</angle>
              <visible>true</visible>
              <offset>(0.1, -1, 0)</offset>
              <rotation>West</rotation>
              <voice>Grunt</voice>

              <tick>100</tick>
              <angle>90</angle>
              <visible>true</visible>
              <offset>(0.03, -1, 0)</offset>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>-15</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>60</tick>
              <angle>-20</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>66</tick>
              <angle>0</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>100</tick>
              <angle>-20</angle>
              <visible>true</visible>
              <rotation>West</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8"?>
<Defs>
  <AnimationDef>
    <defName>InitiatorPawn_Missionary_Stage2a</defName>
    <durationTicks>35</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>10</angle>
              <visible>true</visible>
              <offset>(-0.75, 0, 0.38)</offset>
              <rotation>East</rotation>
              <sound>Fuck</sound>

              <tick>5</tick>
              <angle>-25</angle>
              <visible>true</visible>
              <offset>(-0.6, 0, 0.38)</offset>
              <rotation>East</rotation>
              <voice>Moan</voice>

              <tick>35</tick>
              <angle>10</angle>
              <visible>true</visible>
              <offset>(-0.75, 0, 0.38)</offset>
              <rotation>East</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>3</angle>
              <visible>true</visible>
              <rotation>East</rotation>

              <tick>5</tick>
              <angle>20</angle>
              <visible>true</visible>
              <rotation>East</rotation>

              <tick>35</tick>
              <angle>3</angle>
              <visible>true</visible>
              <rotation>East</rotation>

          </keyframes>
        </value>

        <key>RimNude_Penis</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>30</angle>
              <visible>true</visible>
              <offset>(0, -3, 0)</offset>
              <rotation>East</rotation>

              <tick>5</tick>
              <angle>60</angle>
              <visible>true</visible>
              <offset>(0, -3, 0)</offset>
              <rotation>East</rotation>

              <tick>35</tick>
              <angle>30</angle>
              <visible>true</visible>
              <offset>(0, -3, 0)</offset>
              <rotation>East</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
  <AnimationDef>
    <defName>ReceiverPawn_Missionary_Stage2a</defName>
    <durationTicks>35</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>90</angle>
              <visible>true</visible>
              <offset>(0.03, -1, 0)</offset>
              <rotation>West</rotation>

              <tick>3</tick>
              <angle>90</angle>
              <visible>true</visible>
              <offset>(0.03, -1, 0)</offset>
              <rotation>West</rotation>
              <voice>Moan</voice>

              <tick>10</tick>
              <angle>88</angle>
              <visible>true</visible>
              <offset>(0.12, -1, 0.03)</offset>
              <rotation>West</rotation>

              <tick>35</tick>
              <angle>90</angle>
              <visible>true</visible>
              <offset>(0.03, -1, 0)</offset>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>-20</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>10</tick>
              <angle>-10</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>35</tick>
              <angle>-20</angle>
              <visible>true</visible>
              <rotation>West</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8"?>
<Defs>
  <AnimationDef>
    <defName>InitiatorPawn_Missionary_Stage2b</defName>
    <durationTicks>35</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>10</angle>
              <visible>true</visible>
              <offset>(-0.75, 0, 0.38)</offset>
              <rotation>East</rotation>
              <sound>Fuck</sound>

              <tick>5</tick>
              <angle>-25</angle>
              <visible>true</visible>
              <offset>(-0.6, 0, 0.38)</offset>
              <rotation>East</rotation>
              <voice>Moan</voice>

              <tick>35</tick>
              <angle>10</angle>
              <visible>true</visible>
              <offset>(-0.75, 0, 0.38)</offset>
              <rotation>East</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>3</angle>
              <visible>true</visible>
              <rotation>East</rotation>

              <tick>5</tick>
              <angle>20</angle>
              <visible>true</visible>
              <rotation>East</rotation>

              <tick>35</tick>
              <angle>3</angle>
              <visible>true</visible>
              <rotation>East</rotation>

          </keyframes>
        </value>

        <key>RimNude_Penis</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>30</angle>
              <visible>true</visible>
              <offset>(0, -3, 0)</offset>
              <rotation>East</rotation>

              <tick>5</tick>
              <angle>60</angle>
              <visible>true</visible>
              <offset>(0, -3, 0)</offset>
              <rotation>East</rotation>

              <tick>35</tick>
              <angle>30</angle>
              <visible>true</visible>
              <offset>(0, -3, 0)</offset>
              <rotation>East</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
  <AnimationDef>
    <defName>ReceiverPawn_Missionary_Stage2b</defName>
    <durationTicks>35</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>90</angle>
              <visible>true</visible>
              <offset>(0.03, -1, 0)</offset>
              <rotation>West</rotation>

              <tick>3</tick>
              <angle>90</angle>
              <visible>true</visible>
              <offset>(0.03, -1, 0)</offset>
              <rotation>West</rotation>
              <voice>Moan</voice>

              <tick>10</tick>
              <angle>88</angle>
              <visible>true</visible>
              <offset>(0.12, -1, 0.03)</offset>
              <rotation>West</rotation>

              <tick>35</tick>
              <angle>90</angle>
              <visible>true</visible>
              <offset>(0.03, -1, 0)</offset>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>-20</angle>
              <visible>true</visible>
              <rotation>South</rotation>

              <tick>10</tick>
              <angle>-17</angle>
              <visible>true</visible>
              <rotation>South</rotation>

              <tick>35</tick>
              <angle>-20</angle>
              <visible>true</visible>
              <rotation>South</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8"?>
<Defs>
  <AnimationDef>
    <defName>InitiatorPawn_Missionary_Stage2c</defName>
    <durationTicks>35</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>10</angle>
              <visible>true</visible>
              <offset>(-0.75, 0, 0.38)</offset>
              <rotation>East</rotation>
              <sound>Fuck</sound>

              <tick>5</tick>
              <angle>-25</angle>
              <visible>true</visible>
              <offset>(-0.6, 0, 0.38)</offset>
              <rotation>East</rotation>
              <voice>Moan</voice>

              <tick>35</tick>
              <angle>10</angle>
              <visible>true</visible>
              <offset>(-0.75, 0, 0.38)</offset>
              <rotation>East</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>3</angle>
              <visible>true</visible>
              <rotation>East</rotation>

              <tick>5</tick>
              <angle>20</angle>
              <visible>true</visible>
              <rotation>East</rotation>

              <tick>35</tick>
              <angle>3</angle>
              <visible>true</visible>
              <rotation>East</rotation>

          </keyframes>
        </value>

        <key>RimNude_Penis</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>30</angle>
              <visible>true</visible>
              <offset>(0, -3, 0)</offset>
              <rotation>East</rotation>

              <tick>5</tick>
              <angle>60</angle>
              <visible>true</visible>
              <offset>(0, -3, 0)</offset>
              <rotation>East</rotation>

              <tick>35</tick>
              <angle>30</angle>
              <visible>true</visible>
              <offset>(0, -3, 0)</offset>
              <rotation>East</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
  <AnimationDef>
    <defName>ReceiverPawn_Missionary_Stage2c</defName>
    <durationTicks>35</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>90</angle>
              <visible>true</visible>
              <offset>(0.03, -1, 0)</offset>
              <rotation>West</rotation>

              <tick>3</tick>
              <angle>90</angle>
              <visible>true</visible>
              <offset>(0.03, -1, 0)</offset>
              <rotation>West</rotation>

              <tick>10</tick>
              <angle>88</angle>
              <visible>true</visible>
              <offset>(0.12, -1, 0.03)</offset>
              <rotation>West</rotation>
              <voice>Moan</voice>

              <tick>35</tick>
              <angle>90</angle>
              <visible>true</visible>
              <offset>(0.03, -1, 0)</offset>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>-20</angle>
              <visible>true</visible>
              <rotation>North</rotation>

              <tick>10</tick>
              <angle>-17</angle>
              <visible>true</visible>
              <rotation>North</rotation>

              <tick>35</tick>
              <angle>-20</angle>
              <visible>true</visible>
              <rotation>North</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8"?>
<Defs>
  <AnimationDef>
    <defName>InitiatorPawn_Missionary_Stage3</defName>
    <durationTicks>35</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>10</angle>
              <visible>true</visible>
              <offset>(-0.75, 0, 0.38)</offset>
              <scale>(1, 1, 1)</scale>
              <rotation>East</rotation>

              <tick>35</tick>
              <angle>15</angle>
              <visible>true</visible>
              <offset>(-0.65, 0, 0.42)</offset>
              <scale>(1, 1, 1)</scale>
              <rotation>East</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>3</angle>
              <visible>true</visible>
              <scale>(1, 1, 1)</scale>
              <rotation>East</rotation>

              <tick>35</tick>
              <angle>20</angle>
              <visible>true</visible>
              <scale>(1, 1, 1)</scale>
              <rotation>East</rotation>

          </keyframes>
        </value>

        <key>RimNude_Penis</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>30</angle>
              <visible>true</visible>
              <scale>(1, 1, 1)</scale>
				<offset>(0, -3, 0)</offset>
              <rotation>East</rotation>

              <tick>35</tick>
              <angle>30</angle>
              <visible>true</visible>
              <scale>(1, 1, 1)</scale>
				<offset>(0, -3, 0)</offset>
              <rotation>East</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
  <AnimationDef>
    <defName>ReceiverPawn_Missionary_Stage3</defName>
    <durationTicks>35</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>90</angle>
              <visible>true</visible>
              <offset>(0.03, -1, 0)</offset>
              <scale>(1, 1, 1)</scale>
              <rotation>West</rotation>

              <tick>35</tick>
              <angle>95</angle>
              <visible>true</visible>
              <offset>(0.07, -1, 0)</offset>
              <scale>(1, 1, 1)</scale>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>-20</angle>
              <visible>true</visible>
              <scale>(1, 1, 1)</scale>
              <rotation>West</rotation>

              <tick>35</tick>
              <angle>-20</angle>
              <visible>true</visible>
              <scale>(1, 1, 1)</scale>
              <rotation>West</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8"?>
<Defs>
  <AnimationDef>
    <defName>InitiatorPawn_Missionary_Stage4</defName>
    <durationTicks>20</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>15</angle>
              <visible>true</visible>
              <offset>(-0.65, 0, 0.42)</offset>
              <rotation>East</rotation>
              <sound>Fuck</sound>

              <tick>5</tick>
              <angle>0</angle>
              <visible>true</visible>
              <offset>(-0.42, 0, 0.42)</offset>
              <rotation>East</rotation>
              <voice>MoanShort</voice>

              <tick>20</tick>
              <angle>15</angle>
              <visible>true</visible>
              <offset>(-0.65, 0, 0.42)</offset>
              <rotation>East</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>20</angle>
              <visible>true</visible>
              <rotation>East</rotation>

              <tick>5</tick>
              <angle>30</angle>
              <visible>true</visible>
              <rotation>East</rotation>

              <tick>20</tick>
              <angle>20</angle>
              <visible>true</visible>
              <rotation>East</rotation>

          </keyframes>
        </value>

        <key>RimNude_Penis</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>35</tick>
              <angle>30</angle>
              <visible>true</visible>
              <offset>(0, -3, 0)</offset>
              <rotation>East</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
  <AnimationDef>
    <defName>ReceiverPawn_Missionary_Stage4</defName>
    <durationTicks>20</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>95</angle>
              <visible>true</visible>
              <offset>(0.07, -1, 0)</offset>
              <rotation>West</rotation>

              <tick>5</tick>
              <angle>100</angle>
              <visible>true</visible>
              <offset>(0.2, -1, 0)</offset>
              <rotation>West</rotation>
              <voice>MoanShort</voice>

              <tick>20</tick>
              <angle>95</angle>
              <visible>true</visible>
              <offset>(0.07, -1, 0)</offset>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>-20</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>13</tick>
              <angle>-26</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>20</tick>
              <angle>-20</angle>
              <visible>true</visible>
              <rotation>West</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8"?>
<Defs>
  <AnimationDef>
    <defName>InitiatorPawn_Missionary_Stage5</defName>
    <durationTicks>13</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>15</angle>
              <visible>true</visible>
              <offset>(-0.65, 0, 0.42)</offset>
              <rotation>East</rotation>
              <sound>Fuck</sound>

              <tick>5</tick>
              <angle>0</angle>
              <visible>true</visible>
              <offset>(-0.45, 0, 0.42)</offset>
              <rotation>East</rotation>
              <voice>Grunt</voice>

              <tick>13</tick>
              <angle>15</angle>
              <visible>true</visible>
              <offset>(-0.65, 0, 0.42)</offset>
              <rotation>East</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>20</angle>
              <visible>true</visible>
              <rotation>East</rotation>

              <tick>5</tick>
              <angle>40</angle>
              <visible>true</visible>
              <rotation>East</rotation>

              <tick>20</tick>
              <angle>20</angle>
              <visible>true</visible>
              <rotation>East</rotation>

          </keyframes>
        </value>

        <key>RimNude_Penis</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>35</tick>
              <angle>30</angle>
              <visible>true</visible>
              <offset>(0, -3, 0)</offset>
              <rotation>East</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
  <AnimationDef>
    <defName>ReceiverPawn_Missionary_Stage5</defName>
    <durationTicks>13</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>95</angle>
              <visible>true</visible>
              <offset>(0.07, -1, 0)</offset>
              <rotation>West</rotation>

              <tick>3</tick>
              <angle>100</angle>
              <visible>true</visible>
              <offset>(0.16, -1, 0)</offset>
              <rotation>West</rotation>
              <voice>Grunt</voice>

              <tick>13</tick>
              <angle>95</angle>
              <visible>true</visible>
              <offset>(0.07, -1, 0)</offset>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>-20</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>3</tick>
              <angle>-34</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>13</tick>
              <angle>-20</angle>
              <visible>true</visible>
              <rotation>West</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8"?>
<Defs>
  <AnimationDef>
    <defName>InitiatorPawn_Missionary_Stage6</defName>
    <durationTicks>200</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>15</angle>
              <visible>true</visible>
              <offset>(-0.65, 0, 0.42)</offset>
              <rotation>East</rotation>

              <tick>13</tick>
              <angle>-20</angle>
              <visible>true</visible>
              <offset>(-0.43, 0, 0.42)</offset>
              <rotation>East</rotation>
              <sound>Fuck</sound>
              <voice>Scream</voice>

              <tick>80</tick>
              <angle>-15</angle>
              <visible>true</visible>
              <offset>(-0.49, 0, 0.42)</offset>
              <rotation>East</rotation>
              <sound>Cum</sound>

              <tick>85</tick>
              <angle>-20</angle>
              <visible>true</visible>
              <offset>(-0.43, 0, 0.42)</offset>
              <rotation>East</rotation>

              <tick>150</tick>
              <angle>-15</angle>
              <visible>true</visible>
              <offset>(-0.49, 0, 0.42)</offset>
              <rotation>East</rotation>
              <sound>Cum</sound>

              <tick>155</tick>
              <angle>-20</angle>
              <visible>true</visible>
              <offset>(-0.43, 0, 0.42)</offset>
              <rotation>East</rotation>
              <voice>Scream</voice>

              <tick>200</tick>
              <angle>-15</angle>
              <visible>true</visible>
              <offset>(-0.49, 0, 0.42)</offset>
              <rotation>East</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>20</angle>
              <visible>true</visible>
              <rotation>East</rotation>

              <tick>40</tick>
              <angle>25</angle>
              <visible>true</visible>
              <rotation>East</rotation>

              <tick>200</tick>
              <angle>30</angle>
              <visible>true</visible>
              <rotation>East</rotation>

          </keyframes>
        </value>

        <key>RimNude_Penis</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>30</angle>
              <visible>true</visible>
              <offset>(0, -3, 0)</offset>
              <rotation>East</rotation>

              <tick>13</tick>
              <angle>60</angle>
              <visible>true</visible>
              <offset>(0, -3, 0)</offset>
              <rotation>East</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
  <AnimationDef>
    <defName>ReceiverPawn_Missionary_Stage6</defName>
    <durationTicks>200</durationTicks>
    <animationParts>

        <key>Root</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>95</angle>
              <visible>true</visible>
              <offset>(0.07, -1, 0)</offset>
              <rotation>West</rotation>

              <tick>13</tick>
              <angle>100</angle>
              <visible>true</visible>
              <offset>(0.23, -1, 0)</offset>
              <rotation>West</rotation>
              <voice>Scream</voice>

              <tick>80</tick>
              <angle>100</angle>
              <visible>true</visible>
              <offset>(0.2, -1, 0)</offset>
              <rotation>West</rotation>
              <voice>Scream</voice>

              <tick>85</tick>
              <angle>100</angle>
              <visible>true</visible>
              <offset>(0.23, -1, 0)</offset>
              <rotation>West</rotation>

              <tick>150</tick>
              <angle>100</angle>
              <visible>true</visible>
              <offset>(0.2, -1, 0)</offset>
              <rotation>West</rotation>
              <voice>Scream</voice>

              <tick>155</tick>
              <angle>100</angle>
              <visible>true</visible>
              <offset>(0.23, -1, 0)</offset>
              <rotation>West</rotation>

              <tick>200</tick>
              <angle>100</angle>
              <visible>true</visible>
              <offset>(0.2, -1, 0)</offset>
              <rotation>West</rotation>

          </keyframes>
        </value>

        <key>Head</key>
        <value>
          <workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
          <keyframes>

              <tick>0</tick>
              <angle>-20</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>100</tick>
              <angle>-10</angle>
              <visible>true</visible>
              <rotation>West</rotation>

              <tick>200</tick>
              <angle>-23</angle>
              <visible>true</visible>
              <rotation>West</rotation>

          </keyframes>
        </value>

    </animationParts>
  </AnimationDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
	<AnimationDef>
		<defName>TestAnimation1</defName>
		<durationTicks>400</durationTicks>
		<playWhenDowned>False</playWhenDowned>
		<animationParts>

				<key>Root</key>
				<value>
					<workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
					<keyframes>

							<sound>Fuck</sound>
							<tick>30</tick>
							<angle>0</angle>
							<visible>true</visible>

							<tick>100</tick>
							<angle>0</angle>
							<visible>true</visible>

							<tick>200</tick>
							<angle>0</angle>
							<visible>true</visible>

							<tick>300</tick>
							<angle>0</angle>
							<visible>true</visible>

					</keyframes>
				</value>

				<key>Body</key>
				<value>
					<workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
					<keyframes>

							<tick>0</tick>
							<angle>0</angle>
							<rotation>North</rotation>
							<visible>true</visible>

							<tick>50</tick>
							<angle>0</angle>
							<rotation>South</rotation>
							<visible>true</visible>

							<tick>100</tick>
							<angle>30</angle>
							<rotation>East</rotation>
							<visible>true</visible>

					</keyframes>
				</value>

				<key>Head</key>
				<value>
					<workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
					<keyframes>

							<tick>0</tick>
							<angle>0</angle>
							<rotation>North</rotation>
							<visible>true</visible>

							<tick>2</tick>
							<angle>0</angle>
							<rotation>East</rotation>
							<visible>true</visible>

							<tick>4</tick>
							<angle>0</angle>
							<rotation>South</rotation>
							<visible>true</visible>

							<tick>6</tick>
							<angle>0</angle>
							<rotation>West</rotation>
							<visible>false</visible>

							<tick>8</tick>
							<angle>0</angle>
							<rotation>North</rotation>
							<visible>false</visible>

					</keyframes>
				</value>

				<key>RenderNodeTag_Xray_Inside</key>
				<value>
					<workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
					<keyframes>

							<tick>30</tick>
							<angle>0</angle>
							<visible>true</visible>

							<variant>1</variant>
							<tick>100</tick>
							<angle>0</angle>
							<visible>false</visible>

							<variant>2</variant>
							<tick>200</tick>
							<angle>0</angle>
							<visible>true</visible>

							<variant>1</variant>
							<tick>300</tick>
							<angle>0</angle>
							<visible>true</visible>

					</keyframes>
				</value>

		</animationParts>
	</AnimationDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
	<AnimationDef>
		<defName>TestAnimation2</defName>
		<durationTicks>400</durationTicks>
		<startOnRandomTick>False</startOnRandomTick>
		<playWhenDowned>False</playWhenDowned>

		<animationParts>

				<key>Root</key>
				<value>
					<workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
					<keyframes>

							<tick>0</tick>
							<angle>0</angle>
							<rotation>South</rotation>

						  <tick>100</tick>
						  <angle>45</angle>
						  <rotation>South</rotation>

						  <tick>0</tick>
						  <offset>(-0.73, 0, -0.02)</offset>
						  <angle>0</angle>
						  <rotation>East</rotation>

						  <tick>200</tick>
						  <angle>90</angle>
						  <rotation>South</rotation>

						  <tick>300</tick>
						  <angle>135</angle>
						  <rotation>South</rotation>

					</keyframes>
				</value>

		</animationParts>
	</AnimationDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
	<AnimationDef>
		<defName>TestAnimation3</defName>
		<durationTicks>400</durationTicks>
		<playWhenDowned>False</playWhenDowned>
		<animationParts>

				<key>Root</key>
				<value>
					<workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
					<keyframes>

							<sound>Fuck</sound>
							<tick>30</tick>
							<angle>90</angle>
							<rotation>East</rotation>
							<visible>true</visible>

							<tick>100</tick>
							<angle>80</angle>
							<rotation>East</rotation>
							<visible>true</visible>

							<tick>200</tick>
							<angle>90</angle>
							<rotation>East</rotation>
							<visible>true</visible>

							<tick>300</tick>
							<angle>80</angle>
							<rotation>East</rotation>
							<visible>true</visible>

					</keyframes>
				</value>

				<key>Head</key>
				<value>
					<workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
					<keyframes>

							<tick>0</tick>
							<angle>-30</angle>
							<rotation>East</rotation>
							<visible>true</visible>

					</keyframes>
				</value>

				<key>RenderNodeTag_Knees</key>
				<value>
					<workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
					<keyframes>

							<variant>1</variant>
							<tick>0</tick>
							<angle>0</angle>
							<visible>true</visible>

							<variant>1</variant>
							<tick>200</tick>
							<angle>3</angle>
							<visible>true</visible>

							<variant>1</variant>
							<tick>400</tick>
							<angle>0</angle>
							<visible>true</visible>

					</keyframes>
				</value>

				<key>RenderNodeTag_Arms</key>
				<value>
					<workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
					<keyframes>

							<variant>1</variant>
							<tick>0</tick>
							<angle>0</angle>
							<visible>true</visible>

							<variant>1</variant>
							<tick>200</tick>
							<angle>3</angle>
							<visible>true</visible>

							<variant>1</variant>
							<tick>400</tick>
							<angle>0</angle>
							<visible>true</visible>

					</keyframes>
				</value>

				<key>RimNude_Penis</key>
				<value>
					<workerClass>Rimworld_Animations.AnimationWorker_KeyframesExtended</workerClass>
					<keyframes>

							<tick>0</tick>
							<angle>-30</angle>
							<visible>true</visible>
							<rotation>East</rotation>

							<tick>400</tick>
							<angle>-600</angle>
							<visible>true</visible>
							<rotation>East</rotation>

					</keyframes>
				</value>

		</animationParts>
	</AnimationDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
	<Rimworld_Animations.GroupAnimationDef>
		<defName>TestGroupAnimation1</defName>
		<numActors>2</numActors>
		<animationStages>

				<loops>10</loops>
				<loopOptions>

						<probability>3</probability>
						<animationDefs>

TestAnimation2

TestAnimation2

						</animationDefs>

						<probability>1</probability>
						<animationDefs>

TestAnimation2

TestAnimation2

						</animationDefs>

				</loopOptions>

		</animationStages>

		<offsetDefs>

GroinToAppropriateHeight

GroinToAppropriateHeight

		</offsetDefs>

	</Rimworld_Animations.GroupAnimationDef>
</Defs>


code:
<?xml version="1.0" encoding="UTF-8"?>

<Defs>
  <MainButtonDef>
    <defName>OffsetManager</defName>
    <label>offset manager</label>
    <description>Control pawn offsets</description>
    <tabWindowClass>Rimworld_Animations.MainTabWindow_OffsetConfigure</tabWindowClass>
    <order>54</order>
    <buttonVisible>false</buttonVisible>
    <iconPath>UI/MainTab</iconPath>
    <minimized>true</minimized>
  </MainButtonDef>

</Defs>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
	<Rimworld_Animations.AnimationOffsetDef>
		<defName>GroinToAppropriateHeight</defName>
		<offsets>

		</offsets>
	</Rimworld_Animations.AnimationOffsetDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
	<Rimworld_Animations.AnimationOffsetDef>
		<!-- Empty offsets -->
		<!-- Placeholder for when you haven't created offsets yet for specific pawn -->
		<defName>Offset_Placeholder</defName>
		<offsets>
		</offsets>
	</Rimworld_Animations.AnimationOffsetDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8"?>

<Defs>
	<SoundDef>
		<defName>Cum</defName>
		<context>MapOnly</context>
		<eventNames />
		<maxSimultaneous>5</maxSimultaneous>
		<maxVoices>5</maxVoices>
		<subSounds>

				<grains>

						<clipPath>Sex/cum</clipPath>

				</grains>
				<volumeRange>
					<min>30</min>
					<max>40</max>
				</volumeRange>
				<pitchRange>
					<min>0.8</min>
					<max>1.2</max>
				</pitchRange>
				<distRange>
					<min>0</min>
					<max>51.86047</max>
				</distRange>
				<sustainLoop>False</sustainLoop>

		</subSounds>
	</SoundDef>
  <SoundDef>
		<defName>Sex</defName>
		<context>MapOnly</context>
		<eventNames />
		<maxSimultaneous>5</maxSimultaneous>
		<maxVoices>5</maxVoices>
		<subSounds>

				<grains>

						<clipPath>Sex/kucyu04</clipPath>

				</grains>
				<volumeRange>
					<min>16</min>
					<max>16</max>
				</volumeRange>
				<pitchRange>
					<min>0.8</min>
					<max>1.2</max>
				</pitchRange>
				<distRange>
					<min>0</min>
					<max>51.86047</max>
				</distRange>
				<sustainLoop>False</sustainLoop>

		</subSounds>
	</SoundDef>
	<SoundDef>
		<defName>Suck</defName>
		<context>MapOnly</context>
		<eventNames />
		<maxSimultaneous>5</maxSimultaneous>
		<maxVoices>5</maxVoices>
		<subSounds>

				<grains>

						<clipPath>Sex/Suck/Suck_1</clipPath>

						<clipPath>Sex/Suck/Suck_2</clipPath>

						<clipPath>Sex/Suck/Suck_3</clipPath>

						<clipPath>Sex/Suck/Suck_4</clipPath>

						<clipPath>Sex/Suck/Suck_5</clipPath>

					<clipPath>Sex/Suck/Suck_6</clipPath>

					<clipPath>Sex/Suck/Suck_7</clipPath>

					<clipPath>Sex/Suck/Suck_8</clipPath>

					<clipPath>Sex/Suck/Suck_9</clipPath>

					<clipPath>Sex/Suck/Suck_10</clipPath>

				</grains>
				<volumeRange>
          <min>20</min>
          <max>35</max>
				</volumeRange>
				<pitchRange>
					<min>1.0</min>
					<max>1.0</max>
				</pitchRange>
				<distRange>
					<min>0</min>
					<max>51.86047</max>
				</distRange>
				<repeatMode>NeverTwice</repeatMode>
				<sustainLoop>false</sustainLoop>

		</subSounds>
	</SoundDef>
  <SoundDef>
    <defName>Fuck</defName>
    <context>MapOnly</context>
    <eventNames />
    <maxSimultaneous>5</maxSimultaneous>
    <maxVoices>5</maxVoices>
    <subSounds>

        <grains>

            <clipPath>Sex/Clap_1</clipPath>

            <clipPath>Sex/Clap_2</clipPath>

            <clipPath>Sex/Clap_3</clipPath>

            <clipPath>Sex/Clap_4</clipPath>

            <clipPath>Sex/Clap_5</clipPath>

            <clipPath>Sex/Clap_6</clipPath>

            <clipPath>Sex/Clap_7</clipPath>

            <clipPath>Sex/Clap_8</clipPath>

        </grains>
        <volumeRange>35~45</volumeRange>
        <pitchRange>
          <min>1.0</min>
          <max>1.0</max>
        </pitchRange>
        <distRange>
          <min>0</min>
          <max>51.86047</max>
        </distRange>
        <repeatMode>NeverTwice</repeatMode>
        <sustainLoop>false</sustainLoop>

    </subSounds>
  </SoundDef>
  <SoundDef>
    <defName>Slimy</defName>
    <context>MapOnly</context>
    <eventNames />
    <maxSimultaneous>5</maxSimultaneous>
    <maxVoices>5</maxVoices>
    <subSounds>

        <grains>

            <clipPath>Sex/Slime/Slimy1</clipPath>

            <clipPath>Sex/Slime/Slimy2</clipPath>

            <clipPath>Sex/Slime/Slimy3</clipPath>

            <clipPath>Sex/Slime/Slimy4</clipPath>

            <clipPath>Sex/Slime/Slimy5</clipPath>

        </grains>
        <volumeRange>
          <min>45</min>
          <max>75</max>
        </volumeRange>
        <pitchRange>
          <min>1.4</min>
          <max>1.8</max>
        </pitchRange>
        <distRange>
          <min>0</min>
          <max>100</max>
        </distRange>
        <repeatMode>NeverTwice</repeatMode>
        <sustainLoop>false</sustainLoop>

    </subSounds>
  </SoundDef>
	<SoundDef>
		<defName>Slap</defName>
		<context>MapOnly</context>
		<eventNames />
		<maxSimultaneous>5</maxSimultaneous>
		<maxVoices>5</maxVoices>
		<subSounds>

				<grains>

						<clipPath>Sex/Slap/Slap_1</clipPath>

						<clipPath>Sex/Slap/Slap_2</clipPath>

						<clipPath>Sex/Slap/Slap_3</clipPath>

						<clipPath>Sex/Slap/Slap_4</clipPath>

						<clipPath>Sex/Slap/Slap_5</clipPath>

				</grains>
				<volumeRange>
					<min>75</min>
					<max>85</max>
				</volumeRange>
				<pitchRange>
					<min>0.8</min>
					<max>1.2</max>
				</pitchRange>
				<distRange>
					<min>0</min>
					<max>100</max>
				</distRange>
				<repeatMode>NeverTwice</repeatMode>
				<sustainLoop>false</sustainLoop>

		</subSounds>
	</SoundDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
	<Rimworld_Animations.TexPathVariantsDef>
		<defName>TexPathVariants_Arms</defName>
		<variants>

AnimationProps/Doggystyle/Doggy_Arms

		</variants>
	</Rimworld_Animations.TexPathVariantsDef>

</Defs>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
	<Rimworld_Animations.TexPathVariantsDef>
		<defName>TexPathVariants_Cat</defName>
		<variants>

AnimationProps/Cat/Cat1

AnimationProps/Cat/Cat2

		</variants>
	</Rimworld_Animations.TexPathVariantsDef>

</Defs>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
	<Rimworld_Animations.TexPathVariantsDef>
		<defName>TexPathVariants_Knees</defName>
		<variants>

AnimationProps/Doggystyle/Doggy_Legs

		</variants>
	</Rimworld_Animations.TexPathVariantsDef>

</Defs>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
	<Rimworld_Animations.TexPathVariantsDef>
		<defName>TexPathVariants_XrayPenis_Horse</defName>
		<variants>

AnimationProps/Cat/Cat1

AnimationProps/Cat/Cat2

		</variants>
	</Rimworld_Animations.TexPathVariantsDef>

</Defs>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
	<Rimworld_Animations.TexPathVariantsDef>
		<defName>TexPathVariants_XrayPenis_Human</defName>
		<variants>

AnimationProps/Cat/Cat1

AnimationProps/Cat/Cat2

		</variants>
	</Rimworld_Animations.TexPathVariantsDef>

</Defs>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
	<Rimworld_Animations.TexPathVariantsDef>
		<defName>TexPathVariants_Xray_Inside</defName>
		<variants>

AnimationProps/Cat/Cat1

AnimationProps/Cat/Cat2

		</variants>
	</Rimworld_Animations.TexPathVariantsDef>

</Defs>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
	<SoundDef>
		<defName>Moan_HumanFemale</defName>
		<context>MapOnly</context>
		<eventNames />
		<maxSimultaneous>5</maxSimultaneous>
		<maxVoices>5</maxVoices>
		<subSounds>

				<grains>

						<clipPath>Voices/FVoice/Moan1</clipPath>

						<clipPath>Voices/FVoice/Moan2</clipPath>

						<clipPath>Voices/FVoice/Moan3</clipPath>

						<clipPath>Voices/FVoice/Moan4</clipPath>

				</grains>
				<volumeRange>40~50</volumeRange>
				<pitchRange>0.99~1.02</pitchRange>
				<distRange>10~50</distRange>
				<repeatMode>NeverTwice</repeatMode>
				<sustainLoop>false</sustainLoop>

		</subSounds>
	</SoundDef>

	<SoundDef>
		<defName>MoanShort_HumanFemale</defName>
		<context>MapOnly</context>
		<eventNames />
		<maxSimultaneous>5</maxSimultaneous>
		<maxVoices>5</maxVoices>
		<subSounds>

				<grains>

						<clipPath>Voices/FVoice/MoanShort1</clipPath>

						<clipPath>Voices/FVoice/MoanShort2</clipPath>

						<clipPath>Voices/FVoice/MoanShort3</clipPath>

				</grains>
				<volumeRange>40~50</volumeRange>
				<pitchRange>0.99~1.02</pitchRange>
				<distRange>10~50</distRange>
				<repeatMode>NeverTwice</repeatMode>
				<sustainLoop>false</sustainLoop>

		</subSounds>
	</SoundDef>

	<SoundDef>
		<defName>Grunt_HumanFemale</defName>
		<context>MapOnly</context>
		<eventNames />
		<maxSimultaneous>5</maxSimultaneous>
		<maxVoices>5</maxVoices>
		<subSounds>

				<grains>

						<clipPath>Voices/FVoice/Grunt1</clipPath>

						<clipPath>Voices/FVoice/Grunt2</clipPath>

						<clipPath>Voices/FVoice/Grunt3</clipPath>

						<clipPath>Voices/FVoice/Grunt4</clipPath>

						<clipPath>Voices/FVoice/Grunt5</clipPath>

						<clipPath>Voices/FVoice/Grunt6</clipPath>

				</grains>
				<volumeRange>40~50</volumeRange>
				<pitchRange>0.99~1.02</pitchRange>
				<distRange>10~50</distRange>
				<repeatMode>NeverTwice</repeatMode>
				<sustainLoop>false</sustainLoop>

		</subSounds>
	</SoundDef>

	<SoundDef>
		<defName>Scream_HumanFemale</defName>
		<context>MapOnly</context>
		<eventNames />
		<maxSimultaneous>5</maxSimultaneous>
		<maxVoices>5</maxVoices>
		<subSounds>

				<grains>

						<clipPath>Voices/FVoice/Scream1</clipPath>

						<clipPath>Voices/FVoice/Scream2</clipPath>

						<clipPath>Voices/FVoice/Scream3</clipPath>

						<clipPath>Voices/FVoice/Scream4</clipPath>

				</grains>

				<pitchRange>0.99~1.02</pitchRange>
				<volumeRange>40~50</volumeRange>
				<distRange>10~50</distRange>
				<repeatMode>NeverTwice</repeatMode>
				<sustainLoop>false</sustainLoop>

		</subSounds>
	</SoundDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
	<SoundDef>
		<defName>Moan_HumanMale</defName>
		<context>MapOnly</context>
		<eventNames />
		<maxSimultaneous>5</maxSimultaneous>
		<maxVoices>5</maxVoices>
		<subSounds>

				<grains>

						<clipPath>Voices/MVoice/Moan1</clipPath>

						<clipPath>Voices/MVoice/Moan2</clipPath>

						<clipPath>Voices/MVoice/Moan3</clipPath>

						<clipPath>Voices/MVoice/Moan4</clipPath>

				</grains>
				<pitchRange>0.99~1.02</pitchRange>
				<volumeRange>40~50</volumeRange>
				<distRange>10~50</distRange>
				<repeatMode>NeverTwice</repeatMode>
				<sustainLoop>false</sustainLoop>

		</subSounds>
	</SoundDef>

	<SoundDef>
		<defName>MoanShort_HumanMale</defName>
		<context>MapOnly</context>
		<eventNames />
		<maxSimultaneous>5</maxSimultaneous>
		<maxVoices>5</maxVoices>
		<subSounds>

				<grains>

						<clipPath>Voices/MVoice/MoanShort1</clipPath>

						<clipPath>Voices/MVoice/MoanShort2</clipPath>

						<clipPath>Voices/MVoice/MoanShort3</clipPath>

				</grains>
				<pitchRange>0.99~1.02</pitchRange>
				<volumeRange>40~50</volumeRange>
				<distRange>10~50</distRange>
				<repeatMode>NeverTwice</repeatMode>
				<sustainLoop>false</sustainLoop>

		</subSounds>
	</SoundDef>

	<SoundDef>
		<defName>Grunt_HumanMale</defName>
		<context>MapOnly</context>
		<eventNames />
		<maxSimultaneous>5</maxSimultaneous>
		<maxVoices>5</maxVoices>
		<subSounds>

				<grains>

						<clipPath>Voices/MVoice/Grunt1</clipPath>

						<clipPath>Voices/MVoice/Grunt2</clipPath>

						<clipPath>Voices/MVoice/Grunt3</clipPath>

						<clipPath>Voices/MVoice/Grunt4</clipPath>

				</grains>
				<pitchRange>0.99~1.02</pitchRange>
				<volumeRange>40~50</volumeRange>
				<distRange>10~50</distRange>
				<repeatMode>NeverTwice</repeatMode>
				<sustainLoop>false</sustainLoop>

		</subSounds>
	</SoundDef>

	<SoundDef>
		<defName>Scream_HumanMale</defName>
		<context>MapOnly</context>
		<eventNames />
		<maxSimultaneous>5</maxSimultaneous>
		<maxVoices>5</maxVoices>
		<subSounds>

				<grains>

						<clipPath>Voices/MVoice/Scream1</clipPath>

						<clipPath>Voices/MVoice/Scream2</clipPath>

						<clipPath>Voices/MVoice/Scream3</clipPath>

				</grains>
				<pitchRange>0.99~1.02</pitchRange>
				<volumeRange>40~50</volumeRange>
				<distRange>10~50</distRange>
				<repeatMode>NeverTwice</repeatMode>
				<sustainLoop>false</sustainLoop>

		</subSounds>
	</SoundDef>
</Defs>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>

	<Rimworld_Animations.VoiceDef>
		<defName>Voice_HumanFemale</defName>
		<gender>Female</gender>
		<sounds>

<key>Moan</key><value>Moan_HumanFemale</value>

<key>MoanShort</key><value>MoanShort_HumanFemale</value>

<key>Grunt</key><value>Grunt_HumanFemale</value>

<key>Scream</key><value>Scream_HumanFemale</value>

		</sounds>
	</Rimworld_Animations.VoiceDef>

	<Rimworld_Animations.VoiceDef>
		<defName>Voice_HumanMale</defName>
		<gender>Male</gender>
		<sounds>

<key>Moan</key><value>Moan_HumanMale</value>

<key>MoanShort</key><value>MoanShort_HumanMale</value>

<key>Grunt</key><value>Grunt_HumanMale</value>

<key>Scream</key><value>Scream_HumanMale</value>

		</sounds>
	</Rimworld_Animations.VoiceDef>

</Defs>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>

</Defs>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
	<Rimworld_Animations.VoiceTagDef>
		<defName>Moan</defName>
		<probability>0.2</probability>
	</Rimworld_Animations.VoiceTagDef>

	<Rimworld_Animations.VoiceTagDef>
		<defName>MoanShort</defName>
		<probability>0.1</probability>
	</Rimworld_Animations.VoiceTagDef>

	<Rimworld_Animations.VoiceTagDef>
		<defName>Grunt</defName>
		<probability>0.1</probability>
	</Rimworld_Animations.VoiceTagDef>

	<!-- Screams are guaranteed -->
	<!-- Play once during orgasm -->
	<Rimworld_Animations.VoiceTagDef>
		<defName>Scream</defName>
		<probability>1</probability>
	</Rimworld_Animations.VoiceTagDef>

</Defs>


code:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{BA766964-1716-422D-A09E-29426F8EB9D5}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>Patch_HatsDisplaySelection</RootNamespace>
    <AssemblyName>Patch_HatsDisplaySelection</AssemblyName>
    <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <Deterministic>true</Deterministic>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>false</DebugSymbols>
    <DebugType>none</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>1.2\Assemblies\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="0Harmony">
      <HintPath>..\..\..\..\..\workshop\content\294100\2009463077\Current\Assemblies\0Harmony.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="Assembly-CSharp">
      <HintPath>..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="HatDisplaySelection">
      <HintPath>..\..\..\..\..\workshop\content\294100\1542291825\1.2\Assemblies\HatDisplaySelection.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="Rimworld-Animations">
      <HintPath>..\1.2\Assemblies\Rimworld-Animations.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="System.Data" />
    <Reference Include="System.Net.Http" />
    <Reference Include="System.Xml" />
    <Reference Include="UnityEngine">
      <HintPath>..\..\..\RimWorldWin64_Data\Managed\UnityEngine.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="UnityEngine.CoreModule">
      <HintPath>..\..\..\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll</HintPath>
      <Private>False</Private>
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="Source\Patches\Patch_HatsDisplaySelection.cs" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="1.2\Assemblies\" />
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>


code:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{0AD4F9B2-AE28-4E42-86D6-611FB93B7FF0}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>Patch_HumanoidAlienRaces</RootNamespace>
    <AssemblyName>Patch_HumanoidAlienRaces</AssemblyName>
    <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <Deterministic>true</Deterministic>
    <TargetFrameworkProfile />
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>false</DebugSymbols>
    <DebugType>none</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>Assemblies\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="0Harmony">
      <HintPath>..\..\..\..\..\..\workshop\content\294100\839005762\1.4\Assemblies\0Harmony.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="AlienRace">
      <HintPath>..\..\..\..\..\..\workshop\content\294100\839005762\1.4\Assemblies\AlienRace.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="Assembly-CSharp">
      <HintPath>..\..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="HugsLib">
      <HintPath>..\..\..\..\..\..\workshop\content\294100\818773962\v1.4\Assemblies\HugsLib.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="Rimworld-Animations">
      <HintPath>..\Assemblies\Rimworld-Animations.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="RJW">
      <HintPath>..\..\..\rjw\1.4\Assemblies\RJW.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="System.Data" />
    <Reference Include="System.Net.Http" />
    <Reference Include="System.Xml" />
    <Reference Include="UnityEngine">
      <HintPath>..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.dll</HintPath>
      <Private>False</Private>
    </Reference>
    <Reference Include="UnityEngine.CoreModule">
      <HintPath>..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll</HintPath>
      <Private>False</Private>
    </Reference>
  </ItemGroup>
  <ItemGroup>
    <Compile Include="HarmonyPatch_AlienRace.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>


code:
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Patch_HumanoidAlienRaces")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Patch_HumanoidAlienRaces")]
[assembly: AssemblyCopyright("Copyright ©  2022")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// Setting ComVisible to false makes the types in this assembly not visible
// to COM components.  If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]

// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("0ad4f9b2-ae28-4e42-86d6-611fb93b7ff0")]

// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]


code:
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
	<Operation Class="PatchOperationFindMod">
    <mods>

Core SK

    </mods>
		<match Class="PatchOperationSequence">
			<operations>

					<xpath>Defs/ThingDef/comps</xpath>
					<success>Always</success>
					<nomatch Class="PatchOperationAdd">
						<xpath>Defs/ThingDef</xpath>
						<value>
							<comps />
						</value>
					</nomatch>

					<xpath>Defs/ThingDef[@Name="BaseAnimalPawn" or @Name="SK_BasePawn" or @Name="BasePawnSkynet"]/comps</xpath>
					<value>

					</value>

			</operations>
		</match>
	</Operation>
</Patch>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
  <Operation Class="PatchOperationSequence">
    <success>Always</success>
    <operations>

		<success>Always</success>
		<xpath>Defs/ThingDef[race][not(comps)]</xpath>
		<value>
		  <comps />
		</value>

		<success>Always</success>
		<xpath>Defs/AlienRace.ThingDef_AlienRace[not(comps)]</xpath>
		<value>
		  <comps />
		</value>

        <xpath>Defs/ThingDef[@Name="BasePawn"]/comps</xpath>
        <value>

        </value>

        <xpath>Defs/AlienRace.ThingDef_AlienRace/comps</xpath>
        <value>

        </value>

    </operations>
  </Operation>
</Patch>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Patch>

	<Operation Class="PatchOperationSequence">
		<success>Always</success>
		<operations>

				<xpath>/Defs/PawnRenderTreeDef/root/subworkerClasses</xpath>
				<success>Always</success>
				<nomatch Class="PatchOperationAdd">
					<xpath>/Defs/PawnRenderTreeDef/root</xpath>
					<value>
						<subworkerClasses />
					</value>
				</nomatch>

				<xpath>/Defs/PawnRenderTreeDef/root/subworkerClasses</xpath>
				<value>

Rimworld_Animations.PawnRenderSubWorker_ChangeOffset

				</value>

		</operations>
	</Operation>

</Patch>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
  <Operation Class="PatchOperationSequence">
    <success>Always</success>
    <operations>

        <xpath>/Defs/ThingDef[@Name="BaseBaseAutocleaner"]/comps</xpath>
        <success>Always</success>
	    <match Class="PatchOperationAdd">
		  <xpath>/Defs/ThingDef[@Name="BaseBaseAutocleaner"]/comps</xpath>
		  <value>

		  </value>
	    </match>

    </operations>
  </Operation>
</Patch>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
  <Operation Class="PatchOperationSequence">
    <success>Always</success>
    <operations>

        <xpath>/Defs/ThingDef[@Name="BasePawnSimple"]/comps</xpath>
        <success>Always</success>
	    <match Class="PatchOperationAdd">
		  <xpath>/Defs/ThingDef[@Name="BasePawnSimple"]/comps</xpath>
		  <value>

		  </value>
	    </match>

    </operations>
  </Operation>
</Patch>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
  <Operation Class="PatchOperationSequence">
    <success>Always</success>
    <operations>

        <xpath>/Defs/ThingDef[@Name="BaseZombie"]/comps</xpath>
        <success>Always</success>
	    <match Class="PatchOperationAdd">
		  <xpath>/Defs/ThingDef[@Name="BaseZombie"]/comps</xpath>
		  <value>

		  </value>
	    </match>

    </operations>
  </Operation>
</Patch>


code:
<?xml version="1.0" encoding="utf-8"?>
<Patch>
  <Operation Class="PatchOperationFindMod">
    <mods>

[NL] Facial Animation - WIP

    </mods>
    <match Class="PatchOperationSequence">
      <success>Always</success>
      <operations>

          <xpath>/Defs/FacialAnimation.FaceAnimationDef[defName="Lovin" or defName="Lovin2"]/targetJobs</xpath>
          <success>Always</success>
          <value>

RJW_Masturbate

GettinBred

Bestiality

BestialityForFemale

ViolateCorpse

Quickie

GettingQuickie

GettinRaped

JoinInBed

GettinLoved

GettinLicked

GettinSucked

WhoreIsServingVisitors

JoinInBedAnimation

GettinLovedAnimation

          </value>

          <xpath>/Defs/FacialAnimation.FaceAnimationDef[defName="WaitCombat" or defName="Wait_Combat_Rare"]/targetJobs</xpath>
          <success>Always</success>
          <value>

RapeComfortPawn

RandomRape

RapeEnemy

          </value>

          <xpath>/Defs/FacialAnimation.FaceAnimationDef[defName="StandAndBeSociallyActive"]/targetJobs</xpath>
          <success>Always</success>
          <value>

WhoreInvitingVisitors

          </value>

          <xpath>/Defs/FacialAnimation.FaceAnimationDef[defName="Wear" or defName="Wear2" or defName="Wear3"]/targetJobs</xpath>
          <success>Always</success>
          <value>

CleanSelf

StruggleInBondageGear

          </value>

          <mods>

Rimworld-Animations

          </mods>
          <match Class="PatchOperationSequence">
            <success>Always</success>
            <operations>

                <xpath>/Defs/FacialAnimation.FaceAnimationDef[defName="Lovin" or defName="Lovin2"]/animationFrames/li[1]/headOffset</xpath>
                <success>Always</success>

                <xpath>/Defs/FacialAnimation.FaceAnimationDef[defName="Lovin"]/animationFrames/li[2]/headOffset</xpath>
                <success>Always</success>

                <xpath>/Defs/FacialAnimation.FaceAnimationDef[defName="Lovin"]/animationFrames/li[3]/headOffset</xpath>
                <success>Always</success>

            </operations>
          </match>

      </operations>
    </match>
  </Operation>
</Patch>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Patch>

	<Operation Class="PatchOperationFindMod">
   		<mods>

Core SK

   		</mods>
		<match Class="PatchOperationSequence">
			<success>Always</success>
            <operations>

                    <xpath>/Defs/ThingDef/comps</xpath>
                    <success>Always</success>
                    <nomatch Class="PatchOperationAdd">
                        <xpath>/Defs/ThingDef</xpath>
                        <value>
                            <comps />
                        </value>
                    </nomatch>

                    <xpath>/Defs/ThingDef[@Name="SK_BasePawn"]/comps</xpath>
                    <value>

                    </value>

                    <xpath>/Defs/ThingDef[@Name="BaseAnimalPawn"]/comps</xpath>
                    <value>

                    </value>

            </operations>
		</match>
    </Operation>

</Patch>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Patch>

</Patch>


code:
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
	<!-- Add genitalia rendernode to pawns, body is parent
	<Operation Class="PatchOperationAdd">
		<xpath>Defs/PawnRenderTreeDef[defName="Humanlike"]/root/children/li[debugLabel="Body"]/children</xpath>
		<value>
			<li Class="PawnRenderNodeProperties_Overlay">
				<debugLabel>Genitalia</debugLabel>
				<workerClass>PawnRenderNodeWorker_OverlayWounds</workerClass>
				<overlayLayer>Body</overlayLayer>
				<baseLayer>3</baseLayer>
			</li>
		</value>
	</Operation>
	-->
</Patch>


code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
using Verse;

namespace Rimworld_Animations {
    public class Actor {
        public List<string> defNames;
        public List<string> requiredGenitals;
        public List<AlienRaceOffset> raceOffsets;
        public List<string> blacklistedRaces;
        public bool initiator = false;
        public string gender;
        public bool isFucking = false;
        public bool isFucked = false;
        public bool controlGenitalAngle = false;
        public List<BodyDef> bodyDefTypes = new List<BodyDef>();
        public BodyTypeOffset bodyTypeOffset = new BodyTypeOffset();
        public Vector3 offset = new Vector2(0, 0);
		public List<string> requiredGender;
        public List<string> tags = new List<string>();
    }
}


code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;

namespace Rimworld_Animations {
    public class AlienRaceOffset {

        public string defName;
        public Vector2 offset;

    }
}


code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
using Verse;

namespace Rimworld_Animations
{
    public class AnimationOffsetDef : Def
    {

        public List<BaseAnimationOffset> offsets;

        public bool FindOffset(Pawn pawn, out BaseAnimationOffset offset)
        {
            foreach (BaseAnimationOffset animOffset in offsets)
            {
                if (animOffset.appliesToPawn(pawn)) {

                    offset = animOffset;
                    return true;

                }
            }

            offset = null;
            return false;
        }
    }
}


code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
using Verse;

namespace Rimworld_Animations
{
    public class AnimationOffset_AgeRange : BaseAnimationOffset
    {
        public List<BodyTypeOffset_AgeRange> offsetsMale;
        public List<BodyTypeOffset_AgeRange> offsetsFemale;

        public override Vector3? getOffset(Pawn pawn)
        {
            List<BodyTypeOffset_AgeRange> pawnOffsets = (pawn.gender == Gender.Male ? offsetsMale : offsetsFemale);
            return pawnOffsets.Find(x => x.bodyType == pawn.story.bodyType && x.ageRange.Includes(pawn.ageTracker.AgeBiologicalYears))?.offset ?? pawnOffsets.Last().offset;
        }

        public override int? getRotation(Pawn pawn)
        {
            List<BodyTypeOffset_AgeRange> pawnOffsets = (pawn.gender == Gender.Male ? offsetsMale : offsetsFemale);
            return pawnOffsets.Find(x => x.bodyType == pawn.story.bodyType && x.ageRange.Includes(pawn.ageTracker.AgeBiologicalYears))?.rotation ?? pawnOffsets.Last().rotation;
        }

        public override Vector3? getScale(Pawn pawn)
        {
            List<BodyTypeOffset_AgeRange> pawnOffsets = (pawn.gender == Gender.Male ? offsetsMale : offsetsFemale);
            return pawnOffsets.Find(x => x.bodyType == pawn.story.bodyType && x.ageRange.Includes(pawn.ageTracker.AgeBiologicalYears))?.scale ?? pawnOffsets.Last().scale;
        }
    }

    public class BodyTypeOffset_AgeRange : BodyTypeOffset
    {
        public FloatRange ageRange;

    }
}


code:
using RimWorld;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
using Verse;

namespace Rimworld_Animations
{
    public class AnimationOffset_BodyType : BaseAnimationOffset
    {

        public List<BodyTypeOffset> offsets;

        public override Vector3? getOffset(Pawn pawn)
        {
            return offsets.Find(x => x.bodyType == pawn.story.bodyType)?.offset;
        }

        public override int? getRotation(Pawn pawn)
        {
            return offsets.Find(x => x.bodyType == pawn.story.bodyType)?.rotation;
        }

        public override Vector3? getScale(Pawn pawn)
        {
            return offsets.Find(x => x.bodyType == pawn.story.bodyType)?.scale;
        }
    }

}


code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
using Verse;

namespace Rimworld_Animations
{
    public class AnimationOffset_BodyTypeGendered : BaseAnimationOffset
    {

        public List<BodyTypeOffset> offsetsMale;
        public List<BodyTypeOffset> offsetsFemale;

        public override Vector3? getOffset(Pawn pawn)
        {
            if (pawn.gender == Gender.Female)
            {
                return offsetsFemale.Find(x => x.bodyType == pawn.story.bodyType)?.offset;
            }
            else
            {
                return offsetsMale.Find(x => x.bodyType == pawn.story.bodyType)?.offset;
            }

        }

        public override int? getRotation(Pawn pawn)
        {

            if (pawn.gender == Gender.Female)
            {
                return offsetsFemale.Find(x => x.bodyType == pawn.story.bodyType)?.rotation;
            }
            else
            {
                return offsetsMale.Find(x => x.bodyType == pawn.story.bodyType)?.rotation;
            }

        }

        public override Vector3? getScale(Pawn pawn)
        {

            if (pawn.gender == Gender.Female)
            {
                return offsetsFemale.Find(x => x.bodyType == pawn.story.bodyType)?.scale;
            }
            else
            {
                return offsetsMale.Find(x => x.bodyType == pawn.story.bodyType)?.scale;
            }

        }
    }
}


code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
using Verse;

namespace Rimworld_Animations
{
    public class AnimationOffset_Single : BaseAnimationOffset
    {

        public Vector3 offset;
        public int? rotation;
        public Vector3? scale = Vector3.one;

        public override Vector3? getOffset(Pawn pawn)
        {
            return offset;
        }

        public override int? getRotation(Pawn pawn)
        {
            return rotation;
        }

        public override Vector3? getScale(Pawn pawn)
        {
            return scale;
        }
    }
}


code:
using RimWorld;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
using Verse;

namespace Rimworld_Animations
{
    public abstract class BaseAnimationOffset
    {
        public List<ThingDef> races;

        public abstract Vector3? getOffset(Pawn pawn);

        public abstract int? getRotation(Pawn pawn);

        public abstract Vector3? getScale(Pawn pawn);

        public bool appliesToPawn(Pawn pawn)
        {
            return races.Contains(pawn.def);

        }

    }
}


code:
using RimWorld;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;

namespace Rimworld_Animations
{

    public class BodyTypeOffset
    {
        public BodyTypeDef bodyType;
        public int rotation = 0;
        public Vector3 offset;
        public Vector3 scale = Vector3.one;
    }
}


code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse;

namespace Rimworld_Animations
{
    public class AnimationPropDef : Def
    {

        public PawnRenderNodeProperties animPropProperties;

    }
}