diff --git a/.gitignore b/.gitignore index 1c79e0c..d392330 100644 --- a/.gitignore +++ b/.gitignore @@ -348,3 +348,15 @@ healthchecksdb /Source/Patches/OtherModPatches/HarmonyPatch_AlienRace.cs /Source/Patches/ThingAnimationPatches/HarmonyPatch_ThingDrawAt.cs /Defs/AnimationDefs/Animations_SexToys.xml +/1.5/Defs/AnimationDefs/BasicBestiality/HumanRotatedOffset.xml +/1.5/Defs/AnimationDefs/BasicBestiality/BasicBestiality4v1.xml +/1.5/Defs/AnimationDefs/BasicBestiality/BasicBestiality3v1.xml +/1.5/Defs/AnimationDefs/BasicBestiality/BasicBestiality2v1.xml +/1.5/Defs/AnimationDefs/BasicBestiality/BasicBestiality1v1.xml +/1.5/Defs/AnimationDefs/BasicBestiality/!BasicBestiality.xml +/1.5/Defs/TestDoNotPush +/1.5/Textures/AnimationProps/BEV +1.6/Defs/HawkTestDefs/Basic Fuck Stage 1.xml +1.6/Defs/HawkTestDefs/Basic Fuck Stage 2.xml +1.6/Defs/HawkTestDefs/Basic Fuck Stage 3.xml +1.6/Defs/HawkTestDefs/BasicFuck.xml diff --git a/1.1/Assemblies/Rimworld-Animations.dll b/1.1/Assemblies/Rimworld-Animations.dll deleted file mode 100644 index b2bba40..0000000 Binary files a/1.1/Assemblies/Rimworld-Animations.dll and /dev/null differ diff --git a/1.2/Assemblies/Rimworld-Animations.dll b/1.2/Assemblies/Rimworld-Animations.dll deleted file mode 100644 index 13afe5e..0000000 Binary files a/1.2/Assemblies/Rimworld-Animations.dll and /dev/null differ diff --git a/1.2/Defs/AnimationDefs/AnimationDefs.rar b/1.2/Defs/AnimationDefs/AnimationDefs.rar deleted file mode 100644 index e7bf2a1..0000000 Binary files a/1.2/Defs/AnimationDefs/AnimationDefs.rar and /dev/null differ diff --git a/1.2/Defs/AnimationDefs/Animations_Beast.xml b/1.2/Defs/AnimationDefs/Animations_Beast.xml deleted file mode 100644 index 30d14fc..0000000 --- a/1.2/Defs/AnimationDefs/Animations_Beast.xml +++ /dev/null @@ -1,2180 +0,0 @@ - - - - Dog_Doggystyle - - true - -
  • Anal
  • -
  • Vaginal
  • -
    - - -
  • VaginalBreeding
  • -
  • AnalBreeding
  • -
    - - -
  • - -
  • Human
  • - - true - -
  • - -
  • Wolf_Timber
  • -
  • Wolf_Arctic
  • -
  • Whitefox
  • -
  • Warg
  • -
  • Husky
  • -
  • LabradorRetriever
  • - -
  • AEXP_WelshTerrier
  • -
  • AEXP_Rottweiler
  • -
  • AEXP_Poodle
  • -
  • AEXP_GreatDane
  • -
  • AEXP_GermanShepherd
  • -
  • AEXP_FrenchBulldog
  • -
  • AEXP_Corgi
  • -
  • AEXP_CatAbyssinian
  • -
  • AEXP_CatBengal
  • -
  • AEXP_CatMaineCoon
  • -
  • AEXP_CatSphynx
  • - - -
  • QuadrupedAnimalWithHooves
  • -
  • QuadrupedAnimalWithPawsAndTail
  • -
    - true - true - -
    - - - - -
  • - Fuck - true - 765 - 0 - -
  • - LayingPawn - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 - 0 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • -
  • - 6 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 2 -
  • -
  • - 1 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • - -
  • - - 10 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • -
  • - 6 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 2 -
  • -
  • - 1 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • - -
  • - - 10 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • -
  • - 6 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 2 -
  • -
  • - 1 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • - -
  • - - 10 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • -
  • - 6 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 2 -
  • -
  • - 1 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • - - -
  • - - 10 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • -
  • - 6 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 2 -
  • -
  • - 1 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • - -
  • - - 10 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • -
  • - 6 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 2 -
  • -
  • - 1 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • - -
  • - - 10 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • -
  • - 6 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 2 -
  • -
  • - 1 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • - -
  • - - 10 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • -
  • - 6 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 2 -
  • -
  • - 1 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 - 0 -
  • - - - -
  • - -
  • - - 8 - -33.7 - 0 - -0.492 - 0.266 - 1 - 0 - 0 -
  • -
  • - 8 - Fuck - -39.6 - 0 - -0.353 - 0.256 - 1 - 0 -
  • -
  • - 1 - -33.7 - 0 - -0.492 - 0.266 - 1 - 0 - 0 -
  • - - - - -
  • - Knot - False - 71 - 0 - -
  • - LayingPawn - -
  • - true - 60 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 1 - 0 -
  • -
  • - 6 - Cum - 53.7 - 28.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 4 - 51.7 - 33.4 - 0.098 - -0.038 - 1 - 1 -
  • -
  • - 1 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 1 - 0 -
  • - - - -
  • - -
  • - - 60 - -33.7 - 0 - -0.492 - 0.266 - 1 - 0 - 0 -
  • -
  • - 6 - -39.6 - 0 - -0.353 - 0.256 - 1 - 0 -
  • -
  • - 4 - Fuck - -41.6 - 0 - -0.383 - 0.256 - 1 - 0 -
  • -
  • - 1 - -39.6 - 0 - -0.353 - 0.256 - 1 - 0 - 0 -
  • - - - - - - -
  • - Cum - true - 600 - 0 - -
  • - LayingPawn - -
  • - 40 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 1 - 0 -
  • -
  • - 40 - Cum - 57.7 - 28.4 - 0.073 - -0.038 - 1 - 1 -
  • -
  • - 1 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 1 - 0 -
  • - - - -
  • - - -
  • - 10 - -39.6 - 0 - -0.353 - 0.256 - 1 - 0 - 0 -
  • -
  • - 10 - -40.6 - 0 - -0.358 - 0.256 - 1 - 0 -
  • -
  • - 10 - -39.6 - 0 - -0.353 - 0.256 - 1 - 0 -
  • -
  • - 10 - -40.6 - 0 - -0.358 - 0.256 - 1 - 0 -
  • -
  • - 10 - -39.6 - 0 - -0.353 - 0.256 - 1 - 0 -
  • -
  • - 10 - -40.6 - 0 - -0.358 - 0.256 - 1 - 0 -
  • -
  • - 10 - -39.6 - 0 - -0.353 - 0.256 - 1 - 0 -
  • -
  • - 10 - -40.6 - 0 - -0.358 - 0.256 - 1 - 0 -
  • -
  • - 1 - -39.6 - 0 - -0.353 - 0.256 - 1 - 0 - 0 -
  • - - - - - - - -
    - -
    - - Horse_Cowgirl - - true - -
  • Anal
  • -
  • Vaginal
  • -
    - - -
  • RequestVaginalBreeding
  • -
  • RequestAnalBreeding
  • -
    - - -
  • - -
  • Human
  • - - true - true - - (0, 0.2) - - -
  • - -
  • Horse
  • - - -
  • QuadrupedAnimalWithHooves
  • -
    - true - -
    - - - - -
  • - Insertion - false - 0 - -
  • - -
  • - 180 - -24.337 - -37.1218948 - 0 - 0.698042035 - -0.20718734 - 0 - 3 - 3 -
  • -
  • - 70 - -2.54239845 - 7.31265259 - 0 - 0.606091142 - -0.045959726 - 0 - 3 - 3 - Slimy -
  • -
  • - 60 - -4.84361649 - -23.6405125 - 0 - 0.650456548 - -0.0570534021 - 0 - 3 - 3 - Slimy -
  • -
  • - 1 - -35.01766 - -26.3706665 - 0 - 0.455286169 - -0.3646413 - 0 - 3 - 3 - Slimy -
  • - - -
  • - LayingPawn - -
  • - 250 - 177.083145 - 0 - 0 - -0.256229281 - -0.362511069 - 0 - 1 - 0 - -
  • -
  • - 60 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • -
  • - 1 - 179.6811 - 0 - 0 - -0.267210543 - -0.3991253 - 0 - 1 - 0 -
  • - - - - - -
  • - SlowFuck - true - 1300 - 0 - -
  • - -
  • - 80 - -35.01766 - -26.3706665 - 0 - 0.455286169 - -0.3646413 - 0 - 3 - 3 -
  • -
  • - 49 - -49.8178673 - -35.7418823 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • -
  • - 1 - -35.01766 - -26.3706665 - 0 - 0.455286169 - -0.3646413 - 0 - 3 - 3 - Fuck -
  • - - -
  • - LayingPawn - -
  • - 80 - 179.6811 - 0 - 0 - -0.267210543 - -0.3991253 - 0 - 1 - 0 -
  • -
  • - 49 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • -
  • - 1 - 179.6811 - 0 - 0 - -0.267210543 - -0.3991253 - 0 - 1 - 0 -
  • - - - - - -
  • - Transition - false - 0 - -
  • - -
  • - 50 - -35.01766 - -26.3706665 - 0 - 0.455286169 - -0.3646413 - 0 - 3 - 3 - Fuck -
  • - -
  • - 15 - -49.8178673 - -35.7418823 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • - -
  • - 80 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 3 -
  • - -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.48456946 - -0.489136577 - 0 - 3 - 3 -
  • - - -
  • - LayingPawn - -
  • - 50 - 179.6811 - 0 - 0 - -0.267210543 - -0.3991253 - 0 - 1 - 0 -
  • - -
  • - 15 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • - -
  • - 80 - 175.467651 - 0 - 0 - -0.2123042 - -0.5309518 - 0 - 1 - 0 - Fuck -
  • - -
  • - 1 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • - - - - - -
  • - FastFuck - true - 1260 - 0 - -
  • - - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 3 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 3 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 2 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 2 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 2 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 2 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 2 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 2 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 3 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 3 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 3 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 3 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • - - -
  • - LayingPawn - - -
  • - 10 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • -
  • - 24 - 175.467651 - 0 - 0 - -0.2123042 - -0.5309518 - 0 - 1 - 0 - Fuck -
  • -
  • - 1 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • - - - - - -
  • - FasterFuck - true - 418 - 0 - -
  • - - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 -
  • -
  • - 8 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 3 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • - - -
  • - LayingPawn - -
  • - 10 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • -
  • - 8 - 175.467651 - 0 - 0 - -0.2123042 - -0.5309518 - 0 - 1 - 0 - Fuck -
  • -
  • - 1 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • - - - - - -
  • - Cum - True - 318 - 0 - -
  • - - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - -
  • -
  • - true - 80 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 3 - Cum -
  • -
  • - 25 - -49.8178673 - 2.654541 - 0 - 0.5175133 - -0.547725141 - 0 - 3 - 3 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 -
  • - - - -
  • - LayingPawn - - -
  • - 10 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • -
  • - 80 - 175.467651 - 0 - 0 - -0.2123042 - -0.5309518 - 0 - 1 - 0 -
  • -
  • - 25 - 173.81427 - 0 - 0 - -0.197662517 - -0.545600235 - 0 - 1 - 0 -
  • -
  • - 1 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • - - - - - - -
    - -
    -
    diff --git a/1.2/Defs/AnimationDefs/Animations_Lesbian.xml b/1.2/Defs/AnimationDefs/Animations_Lesbian.xml deleted file mode 100644 index 56d805a..0000000 --- a/1.2/Defs/AnimationDefs/Animations_Lesbian.xml +++ /dev/null @@ -1,1782 +0,0 @@ - - - - Tribadism - - true - -
  • Scissoring
  • -
    - - -
  • - -
  • Human
  • - - true - -
  • Vagina
  • -
    - -
  • - -
  • Human
  • - - true - true - -
  • Vagina
  • -
    - - -
    - - -
  • - Tribbing - true - 992 - 0 - -
  • - LayingPawn - -
  • - - 20 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 2 - 0 -
  • -
  • - 20 - -79.56 - -79.56 - -0.218 - 0.082 - 2 - 2 - 0 -
  • -
  • - 20 - -81.53 - -81.53 - -0.219 - 0.07 - 2 - 2 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 2 - 0 -
  • - - -
  • - -
  • - - 20 - 9.97 - -7.61 - 0.444 - 0.368 - 3 - 3 - 0 -
  • -
  • - 20 - 23.82 - -6.90 - 0.432 - 0.403 - 3 - 3 - 0 -
  • -
  • - 20 - 5.19 - -6.19 - 0.442 - 0.388 - 3 - 3 - 0 -
  • -
  • - 1 - 9.97 - -7.61 - 0.444 - 0.368 - 3 - 3 - 0 -
  • - - - - - -
  • - TribadismFast - true - 682 - 0 - -
  • - LayingPawn - -
  • - - 10 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • -
  • - 10 - -79.56 - -79.56 - -0.218 - 0.082 - 2 - 1 - 0 -
  • -
  • - 10 - -81.53 - -81.53 - -0.219 - 0.07 - 2 - 1 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • -
  • - - 10 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • -
  • - 10 - -79.56 - -79.56 - -0.218 - 0.082 - 2 - 1 - 0 -
  • -
  • - 10 - -81.53 - -81.53 - -0.219 - 0.07 - 2 - 1 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • - -
  • - - 10 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • -
  • - 10 - -79.56 - -79.56 - -0.218 - 0.082 - 2 - 1 - 0 -
  • -
  • - 10 - -81.53 - -81.53 - -0.219 - 0.07 - 2 - 1 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • -
  • - - 10 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • -
  • - 10 - -79.56 - -79.56 - -0.218 - 0.082 - 2 - 1 - 0 -
  • -
  • - 10 - -81.53 - -81.53 - -0.219 - 0.07 - 2 - 1 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • - - -
  • - - 10 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • -
  • - 10 - -79.56 - -77.66 - -0.218 - 0.082 - 2 - 2 - 0 -
  • -
  • - 10 - -81.53 - -77.74 - -0.219 - 0.07 - 2 - 2 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • - - -
  • - - 10 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • -
  • - 10 - -79.56 - -77.66 - -0.218 - 0.082 - 2 - 2 - 0 -
  • -
  • - 10 - -81.53 - -77.74 - -0.219 - 0.07 - 2 - 2 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • - - -
  • - - 10 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • -
  • - 10 - -79.56 - -77.66 - -0.218 - 0.082 - 2 - 2 - 0 -
  • -
  • - 10 - -81.53 - -77.74 - -0.219 - 0.07 - 2 - 2 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • - - -
  • - - 10 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • -
  • - 10 - -79.56 - -77.66 - -0.218 - 0.082 - 2 - 2 - 0 -
  • -
  • - 10 - -81.53 - -77.74 - -0.219 - 0.07 - 2 - 2 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • - - -
  • - - 10 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • -
  • - 10 - -79.56 - -77.66 - -0.218 - 0.082 - 2 - 2 - 0 -
  • -
  • - 10 - -81.53 - -77.74 - -0.219 - 0.07 - 2 - 2 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • - - -
  • - - 10 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • -
  • - 10 - -79.56 - -77.66 - -0.218 - 0.082 - 2 - 2 - 0 -
  • -
  • - 10 - -81.53 - -77.74 - -0.219 - 0.07 - 2 - 2 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • - -
  • - - 10 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • -
  • - 10 - -79.56 - -79.56 - -0.218 - 0.082 - 2 - 1 - 0 -
  • -
  • - 10 - -81.53 - -81.53 - -0.219 - 0.07 - 2 - 1 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • - - -
  • - -
  • - - 10 - 9.97 - -7.61 - 0.444 - 0.368 - 3 - 3 - 0 -
  • -
  • - 10 - 23.82 - -6.90 - 0.432 - 0.403 - 3 - 3 - 0 -
  • -
  • - 10 - 5.19 - -6.19 - 0.442 - 0.388 - 3 - 3 - 0 -
  • -
  • - 1 - 9.97 - -7.61 - 0.444 - 0.368 - 3 - 3 - 0 -
  • - - - - - -
    - -
    - - Cunnilingus - - true - -
  • Oral
  • -
  • Fingering
  • -
  • Cunnilingus
  • -
    - - -
  • Cunnilingus
  • -
  • CunnilingusF
  • -
  • CunnilingusRape
  • -
  • CunnilingusRapeF
  • - -
  • Fingering
  • -
  • FingeringF
  • -
  • FingeringRape
  • -
  • FingeringRapeF
  • - -
  • Fisting
  • -
  • FistingF
  • -
  • FistingRape
  • -
  • FistingRapeF
  • - -
    - -
  • - -
  • Human
  • - - true - -
  • Vagina
  • -
    - - (-0.2, 0.1) - - -
  • - -
  • Human
  • - - true - - (-0.1, 0.15) - - -
    - - - - -
  • - Initial - False - 0 - -
  • - -
  • - 60 - -81.06536 - -56.4483032 - 0 - -0.0624052179 - -0.437134951 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.0692383763 - -0.440020353 - 0 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - 60 - -27.578373 - 0.2816162 - 0 - 0.102704488 - 0.50675 - 0 - 3 - 3 -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - -0.1 - 3 - 3 - Slimy -
  • - - - - - - -
  • - Slow - True - 1497 - 0 - -
  • - -
  • - 98 - -87.3645554 - -69.70276 - 0 - -0.0692383763 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 40 - -87.26528 - -65.901825 - 0 - -0.0737426062 - -0.432820916 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.0692383763 - -0.440020353 - 0 - 1 - 1 -
  • - -
  • - 98 - -87.3645554 - -69.70276 - 0 - -0.0692383763 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 40 - -87.26528 - -65.901825 - 0 - -0.0737426062 - -0.432820916 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.0692383763 - -0.440020353 - 0 - 1 - 1 -
  • - -
  • - 60 - -87.3645554 - -69.70276 - 0 - -0.0692383763 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 120 - -86.52611 - -68.86432 - 0 - -0.05432228 - -0.439906 - 0 - 1 - 1 -
  • -
  • - 40 - -88.36286 - -84.3309 - 0 - -0.06637782 - -0.440140843 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.0692383763 - -0.440020353 - 0 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - 80 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - -0.1 - 3 - 3 -
  • -
  • - 18 - -41.1054764 - -10.1737061 - 0 - 0.04582855 - 0.462155169 - 0 - 3 - 3 -
  • -
  • - 40 - -38.1903877 - -31.6517334 - 0 - 0.0384018831 - 0.4874894 - 0 - 3 - 3 -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - -0.1 - 3 - 3 - Slimy -
  • - -
  • - 80 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - -0.1 - 3 - 3 -
  • -
  • - 18 - -41.1054764 - -10.1737061 - 0 - 0.04582855 - 0.462155169 - 0 - 3 - 3 -
  • -
  • - 40 - -38.1903877 - -31.6517334 - 0 - 0.0384018831 - 0.4874894 - 0 - 3 - 3 -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - -0.1 - 3 - 3 - Slimy -
  • - -
  • - 60 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - -0.1 - 3 - 3 - Slimy -
  • -
  • - 40 - -45.2595444 - -13.57782 - 0 - 0.009577712 - 0.4726282 - 0 - 3 - 3 - Slimy -
  • -
  • - 20 - -45.2595444 - -24.2278748 - 0 - 0.0315402448 - 0.415024319 - 0 - 3 - 3 - -
  • -
  • - 40 - -45.2595444 - -13.57782 - 0 - 0.009577712 - 0.4726282 - 0 - 3 - 3 - Slimy -
  • -
  • - 20 - -45.2595444 - -24.2278748 - 0 - 0.0315402448 - 0.415024319 - 0 - 3 - 3 - -
  • -
  • - 40 - -45.2595444 - -13.57782 - 0 - 0.009577712 - 0.4726282 - 0 - 3 - 3 - Slimy -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - -0.1 - 3 - 3 - Slimy -
  • - - - - - - -
  • - Transition - False - 0 - -
  • - -
  • - 40 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 30 - -97.90959 - -69.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - 40 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - -0.1 - 3 - 3 - Slimy -
  • -
  • - 30 - -35.8792953 - -9.312592 - 0 - 0.03684573 - 0.4285702 - 0 - 3 - 3 - Slimy -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • - - - - - -
  • - Fast - True - 710 - 0 - -
  • - -
  • - 40 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 30 - -97.90959 - -69.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • - -
  • - 40 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 30 - -97.90959 - -69.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • - -
  • - 40 - -87.3645554 - -79.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 2 -
  • -
  • - 30 - -97.90959 - -79.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 2 -
  • -
  • - 1 - -87.3645554 - -79.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 2 -
  • - -
  • - 40 - -87.3645554 - -79.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 2 -
  • -
  • - 30 - -97.90959 - -79.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 2 -
  • -
  • - 1 - -87.3645554 - -79.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 2 -
  • - -
  • - 40 - -87.3645554 - -79.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 2 -
  • -
  • - 30 - -97.90959 - -79.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 2 -
  • -
  • - 1 - -87.3645554 - -79.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 2 -
  • - -
  • - 40 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 30 - -97.90959 - -69.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - 40 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • -
  • - 30 - -35.8792953 - -3.312592 - 0 - 0.03684573 - 0.4285702 - 0 - 3 - 3 - Slimy -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • - - - - -
  • - Faster - True - 360 - 0 - -
  • - -
  • - 20 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 15 - -97.90959 - -69.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - 20 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • -
  • - 15 - -35.8792953 - -9.312592 - 0 - 0.03684573 - 0.4285702 - 0 - 3 - 3 - Slimy -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • - - - - -
  • - Cum - True - 639 - 0 - -
  • - -
  • - 20 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 15 - -97.90959 - -69.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • - -
  • - 20 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 15 - -97.90959 - -69.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • - -
  • - 20 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - True - 80 - -97.90959 - -69.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 1 - Cum -
  • -
  • - 40 - -99.80413 - -94.4023743 - 0 - -0.01950606 - -0.447728932 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • - - -
  • - LayingPawn - - -
  • - 20 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • -
  • - 15 - -35.8792953 - -9.312592 - 0 - 0.03684573 - 0.4285702 - 0 - 3 - 3 - Slimy -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • - -
  • - 20 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • -
  • - 15 - -35.8792953 - -9.312592 - 0 - 0.03684573 - 0.4285702 - 0 - 3 - 3 - Slimy -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • - -
  • - 20 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • -
  • - 80 - -35.8792953 - -9.312592 - 0 - 0.03684573 - 0.4285702 - 0 - 3 - 3 -
  • -
  • - 40 - -38.5277061 - -1.13140869 - 0 - 0.0376501828 - 0.42935127 - 0 - 3 - 3 -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • - - - - - -
    - -
    -
    diff --git a/1.2/Defs/AnimationDefs/Animations_Masturbate.xml b/1.2/Defs/AnimationDefs/Animations_Masturbate.xml deleted file mode 100644 index 2968fa1..0000000 --- a/1.2/Defs/AnimationDefs/Animations_Masturbate.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - \ No newline at end of file diff --git a/1.2/Defs/AnimationDefs/Animations_Multi.xml b/1.2/Defs/AnimationDefs/Animations_Multi.xml deleted file mode 100644 index ce4e595..0000000 --- a/1.2/Defs/AnimationDefs/Animations_Multi.xml +++ /dev/null @@ -1,657 +0,0 @@ - - - - Double_Penetration - - true - -
  • DoublePenetration
  • -
    - -
  • - -
  • Human
  • - - true - -
  • - -
  • Human
  • - - true - true - true - -
  • - -
  • Human
  • - - true - true - true - -
    - - -
  • - Slow - true - 976 - 0 - -
  • - - -
  • - 25 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • -
  • - 35 - 48.1 - 16.3 - 0 - 0.188 - 1 - 1 - 0 -
  • -
  • - Suck - 1 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • - - -
  • - - LayingPawn - -
  • - -10 - 30 - 12 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • -
  • - 30 - 12 - -15.1 - 0.729 - 0.378 - 3 - 3 - 0 -
  • -
  • - -10 - 1 - 12 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • - - -
  • - - LayingPawn - -
  • - 43 - 27 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • -
  • - Fuck - 33 - -6.7 - 14.1 - -0.53 - 0.378 - 1 - 1 - 0 -
  • -
  • - 43 - 1 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • - - - - -
  • - Face_Fuck - true - 650 - 0 - -
  • - - -
  • - 13 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • -
  • - 6 - 60.7 - 5.6 - 0.025 - 0.118 - 1 - 1 - 0 -
  • -
  • - 6 - 62.7 - 0.2 - 0.08 - 0.118 - 1 - 1 - 0 -
  • -
  • - Suck - 1 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • - - -
  • - - LayingPawn - -
  • - -10 - 13 - 12 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • -
  • - 12 - 2 - -15.1 - 0.729 - 0.378 - 3 - 3 - 0 -
  • -
  • - -10 - 1 - 12 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • - - -
  • - - LayingPawn - -
  • - 43 - 13 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • -
  • - Fuck - 12 - -6.7 - 14.1 - -0.53 - 0.378 - 1 - 1 - 0 -
  • -
  • - 43 - 1 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • - - - - -
  • - Cum - true - 392 - 0 - -
  • - - -
  • - 9 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • -
  • - 4 - 60.7 - 5.6 - 0.025 - 0.118 - 1 - 1 - 0 -
  • -
  • - 4 - 62.7 - 0.2 - 0.056 - 0.118 - 1 - 1 - 0 -
  • -
  • - Suck - 1 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • - -
  • - 9 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • -
  • - 4 - 60.7 - 5.6 - 0.025 - 0.118 - 1 - 1 - 0 -
  • -
  • - 4 - 62.7 - 0.2 - 0.056 - 0.118 - 1 - 1 - 0 -
  • -
  • - Suck - 1 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • - -
  • - 9 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • -
  • - true - 120 - 60.7 - 5.6 - 0.025 - 0.118 - 1 - 1 - 0 -
  • -
  • - 30 - 62.7 - 0.2 - 0.056 - 0.118 - 1 - 1 - 0 -
  • -
  • - Suck - 1 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • - - -
  • - - LayingPawn - -
  • - -10 - 9 - 9 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • -
  • - 8 - 0 - -15.1 - 0.729 - 0.378 - 3 - 3 - 0 -
  • -
  • - 1 - 9 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • - -
  • - 9 - 9 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • -
  • - 8 - 0 - -15.1 - 0.729 - 0.378 - 3 - 3 - 0 -
  • -
  • - 1 - 9 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • - - -
  • - 9 - 9 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • -
  • - 120 - 9 - -15.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • -
  • - 30 - 9 - 7 - 0.674 - 0.378 - 3 - 3 - 0 -
  • -
  • - 1 - 9 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 - -10 -
  • - - - -
  • - - LayingPawn - -
  • - 43 - 9 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • -
  • - Fuck - 8 - -6.7 - 14.1 - -0.53 - 0.378 - 1 - 1 - 0 -
  • -
  • - 1 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • - -
  • - 9 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • -
  • - Fuck - 8 - -6.7 - 14.1 - -0.53 - 0.378 - 1 - 1 - 0 -
  • -
  • - 1 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • - -
  • - 9 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • -
  • - Cum - 120 - -6.7 - 14.1 - -0.53 - 0.378 - 1 - 1 - 0 -
  • -
  • - 30 - -6.7 - -7 - -0.53 - 0.378 - 1 - 1 - 0 -
  • -
  • - 43 - 1 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • - - - - - -
    - -
    - -
    diff --git a/1.2/Defs/AnimationDefs/Animations_Vanilla2.xml b/1.2/Defs/AnimationDefs/Animations_Vanilla2.xml deleted file mode 100644 index fcab1a9..0000000 --- a/1.2/Defs/AnimationDefs/Animations_Vanilla2.xml +++ /dev/null @@ -1,377 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/1.2/Defs/AnimationDefs/Animations_vanilla.xml b/1.2/Defs/AnimationDefs/Animations_vanilla.xml deleted file mode 100644 index 079753a..0000000 --- a/1.2/Defs/AnimationDefs/Animations_vanilla.xml +++ /dev/null @@ -1,2796 +0,0 @@ - - - - - Doggystyle - - true - -
  • Vaginal
  • -
  • Anal
  • -
    - - -
  • AnalSex
  • -
  • AnalSexF
  • -
  • AnalRape
  • -
  • VaginalSex
  • -
  • VaginalSexF
  • -
  • VaginalRape
  • -
    - - -
  • - - -
  • Human
  • - - true - -
  • - -
  • Human
  • - - true - true - true - - (0, 0.2) - - -
    - - -
  • - Slow_Fuck - true - 612 - 0 - -
  • - -
  • - 0 - 10 - 27 - 0.298 - 0.166 - 0 - 1 - 2 -
  • -
  • - 40 - 32 - 0.326 - 0.190 - 1 - 2 -
  • -
  • - 1 - 27 - 0.298 - 0.166 - 1 - 2 -
  • - -
  • - 10 - 27 - 0.298 - 0.166 - 1 - 2 -
  • -
  • - 40 - 32 - 0.326 - 0.190 - 1 - 2 -
  • -
  • - 1 - 27 - 0.298 - 0.166 - 1 - 2 -
  • - -
  • - 10 - 27 - 0.298 - 0.166 - 1 - 2 -
  • -
  • - 40 - 32 - 0.326 - 0.190 - 1 - 2 -
  • -
  • - 1 - 27 - 0.298 - 0.166 - 1 - 2 -
  • - -
  • - 10 - 27 - 0.298 - 0.166 - 1 - 1 -
  • -
  • - 40 - 32 - 0.326 - 0.190 - 1 - 1 -
  • -
  • - 1 - 27 - 0.298 - 0.166 - 1 - 1 -
  • - -
  • - 10 - 27 - 0.298 - 0.166 - 1 - 1 -
  • -
  • - 40 - 32 - 0.326 - 0.190 - 1 - 1 -
  • -
  • - 1 - 27 - 0.298 - 0.166 - 1 - 1 -
  • - -
  • - 10 - 27 - 0.298 - 0.166 - 1 - 1 -
  • -
  • - 40 - 32 - 0.326 - 0.190 - 1 - 1 -
  • -
  • - 1 - 27 - 0.298 - 0.166 - 1 - 1 -
  • - -
  • - 10 - 27 - 0.298 - 0.166 - 1 - 1 -
  • -
  • - 40 - 32 - 0.326 - 0.190 - 1 - 1 -
  • -
  • - 1 - 27 - 0.298 - 0.166 - 1 - 1 -
  • - -
  • - 10 - 27 - 0.298 - 0.166 - 1 - 1 -
  • -
  • - 40 - 32 - 0.326 - 0.190 - 1 - 1 -
  • -
  • - 0 - 1 - 27 - 0.298 - 0.166 - 0 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - 27 - 0 - 10 - 16.6 - -0.217 - 0.175 - 3 - 1 - 1 -
  • - -
  • - 40 - Fuck - -17 - -0.217 - 0.272 - 5.4 - 1 - 1 -
  • -
  • - 1 - 16.6 - -0.217 - 0.175 - 3 - 1 - 1 - 0 - 27 -
  • - - - - -
  • - Fast_Fuck - true - 609 - 0 - -
  • - -
  • - 8 - 27 - 0.298 - 0.166 - 1 - 1 - 1 - 0 -
  • -
  • - 12 - 32 - 0.326 - 0.190 - 4 - 1 - 1 -
  • -
  • - 1 - 27 - 0.298 - 0.166 - 1 - 1 - 1 - 0 -
  • - - -
  • - LayingPawn - -
  • - 27 - 8 - 11 - -0.217 - 0.175 - 8 - 1 - 1 - 0 -
  • - -
  • - 12 - Fuck - -12 - -0.217 - 0.272 - 9 - 1 - 1 -
  • -
  • - 1 - 11 - -0.217 - 0.175 - 8 - 1 - 1 - 0 - 27 -
  • - - - - -
  • - Cum - true - 300 - 0 - -
  • - -
  • - 8 - 27 - 0.298 - 0.166 - 0 - 1 - 1 - 0 -
  • -
  • - Cum - 100 - 32 - 0.326 - 0.190 - -1 - 1 - 1 - true -
  • -
  • - 12 - 35 - 0.326 - 0.190 - -14 - 1 - 1 -
  • -
  • - 1 - 27 - 0.298 - 0.166 - 0 - 1 - 1 - 0 -
  • - - -
  • - LayingPawn - -
  • - 27 - 8 - 11 - -0.217 - 0.175 - -8 - 1 - 1 - 0 -
  • -
  • - 100 - -12 - -0.217 - 0.272 - -9 - 1 - 1 -
  • -
  • - 12 - -15 - -0.227 - 0.272 - -4 - 1 - 1 -
  • -
  • - 1 - 11 - -0.217 - 0.175 - -8 - 1 - 1 - 0 - 27 -
  • - - - - -
    -
    - - Blowjob - - true - -
  • Oral
  • -
  • Fellatio
  • -
    - -
  • Handjob
  • -
  • HandjobF
  • -
  • HandjobRape
  • -
  • HandjobRapeF
  • - -
  • Breastjob
  • -
  • BreastjobF
  • -
  • BreastjobRape
  • -
  • BreastjobRapeF
  • - -
  • Fellatio
  • -
  • FellatioF
  • -
  • FellatioRape
  • -
  • FellatioRapeF
  • - -
  • Beakjob
  • -
  • BeakjobF
  • -
  • BeakjobRape
  • -
  • BeakjobRapeF
  • - - -
    - -
  • - - -
  • Human
  • - - - (0, -0.2) - - -
  • - -
  • Human
  • - - true - true - true - - (0, 0.2) - - -
    - -
  • - Slow_Suck - true - 1140 - 0 - -
  • - -
  • - 35 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • -
  • - Suck - 59 - 0 - 0 - -0.33 - 0 - 0 - -0.16 -
  • -
  • - 1 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • - -
  • - 35 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • -
  • - Suck - 59 - 0 - 0 - -0.33 - 0 - 0 - -0.15 -
  • -
  • - 1 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • - -
  • - 35 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • -
  • - Suck - 59 - - 6 - 0 - -0.33 - 0 - 0 - -0.13 -
  • -
  • - 1 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • - -
  • - 35 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • -
  • - Suck - 59 - 0 - -4 - 0 - -0.33 - 0 - 0 - -0.12 -
  • -
  • - 1 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • - - -
  • - LayingPawn - -
  • - 35 - 0 - 0 - 0 - 0.473 - 2 - 2 - 0 - 180 -
  • -
  • - 59 - 0 - 0 - 0.490 - 2 - 2 - -0.003 -
  • -
  • - 1 - 0 - 0 - 0 - 0.473 - 2 - 2 - 0 - 180 -
  • - - - - -
  • - Face_Fuck - true - 300 - 0 - -
  • - -
  • - 15 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • -
  • - Suck - 14 - 0 - 0 - -0.270 - 0 - 0 - -0.06 -
  • -
  • - 1 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • - - -
  • - LayingPawn - -
  • - 15 - 0 - 0 - 0 - 0.473 - 2 - 2 - 0 - 180 -
  • -
  • - 14 - 0 - 0 - 0.575 - 2 - 2 - -0.051 -
  • -
  • - 1 - 0 - 0 - 0 - 0.473 - 2 - 2 - 0 - 180 -
  • - - - - -
  • - Cum - true - 600 - 0 - -
  • - -
  • - 12 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • -
  • - 7 - 0 - 0 - -0.290 - 0 - 0 - -0.06 -
  • -
  • - 7 - Suck - 0 - 0 - -0.290 - 0 - 0 - -0.008 -
  • -
  • - 60 - 0 - 0 - -0.290 - 0 - 0 - -0.06 -
  • -
  • - 14 - 0 - 0 - -0.290 - 0 - 0 - -0.06 -
  • -
  • - 1 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • - - -
  • - LayingPawn - -
  • - 12 - 0 - 0 - 0 - 0.473 - 2 - 2 - 0 - 180 -
  • -
  • - 7 - Cum - 0 - 0 - 0.575 - 2 - 2 - -0.051 -
  • -
  • - 7 - 0 - 0 - 0.50 - 2 - 2 - -0.04 -
  • -
  • - true - 60 - 0 - 0 - 0.575 - 2 - 2 - -0.051 -
  • -
  • - 14 - 0 - 0 - 0.575 - 2 - 2 - -0.051 -
  • -
  • - 1 - 0 - 0 - 0 - 0.473 - 2 - 2 - 0 - 180 -
  • - - - - -
    - -
    - - ReverseStandAndCarry - - true - -
  • Anal
  • -
  • Vaginal
  • -
    - -
  • AnalSex
  • -
  • AnalSexF
  • -
  • AnalRape
  • -
  • VaginalSex
  • -
  • VaginalSexF
  • -
  • VaginalRape
  • -
    - -
  • - - -
  • Human
  • - - true - - (0, 0.2) - - -
  • - -
  • Human
  • - - true - true - true - - (0, 0.2) - - -
    - - -
  • - Slow_Fuck - true - 1080 - 0 - -
  • - -
  • - 30 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 29 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - - -
  • - LayingPawn - -
  • - 6 - 30 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • -
  • - 40 - Fuck - 29 - 17.11 - -2.87 - 0.114 - 0.359 - 3 - 3 - 0 -
  • -
  • - 1 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 - 6 -
  • - - - - - -
  • - Fast_Fuck - true - 780 - 0 - -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 2 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 2 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 2 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 2 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 2 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 2 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 2 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • - - - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - - -
  • - LayingPawn - -
  • - 6 - 13 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • -
  • - 40 - Fuck - 12 - 17.11 - -2.87 - 0.114 - 0.359 - 3 - 3 - 0 -
  • -
  • - 1 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 - 6 -
  • - - - - - -
  • - Cum - true - 415 - 0 - -
  • - -
  • - 3 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 4 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - -
  • - 3 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 4 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - -
  • - 3 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 4 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - -
  • - 3 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 4 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - true - 75 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 27 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - - -
  • - LayingPawn - -
  • - 6 - 7 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • -
  • - 40 - Fuck - 7 - 17.11 - -2.87 - 0.114 - 0.359 - 3 - 3 - 0 -
  • -
  • - 6 - 1 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • - -
  • - 6 - 7 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • -
  • - 40 - Fuck - 7 - 17.11 - -2.87 - 0.114 - 0.359 - 3 - 3 - 0 -
  • -
  • - 6 - 1 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • - -
  • - 6 - 7 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • -
  • - 40 - Fuck - 7 - 17.11 - -2.87 - 0.114 - 0.359 - 3 - 3 - 0 -
  • -
  • - 6 - 1 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • - -
  • - 6 - 7 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • -
  • - 40 - Cum - 75 - 17.11 - -2.87 - 0.114 - 0.359 - 3 - 3 - 0 -
  • -
  • - 40 - 27 - 17.11 - -2.87 - 0.114 - 0.359 - 3 - 3 - 0 -
  • -
  • - 6 - 1 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • - - - - -
    - -
    - - Cowgirl - - true - -
  • Anal
  • -
  • Vaginal
  • -
    - - -
  • AnalSex
  • -
  • AnalSexF
  • -
  • AnalRapeF
  • -
  • VaginalSex
  • -
  • VaginalSexF
  • -
  • VaginalRapeF
  • -
    - - - -
  • - - -
  • Human
  • - - true - true - - (0, 0.2) - - - -
  • - -
  • Human
  • - - true - true - - (0, -0.2) - - - -
    - - -
  • - Slow_Fuck - true - 1340 - 0 - -
  • - - -
  • - 16 - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • -
  • - 17 - 3.5 - 0 - -0.03 - 0.624 - 2 - 2 - -0.02 -
  • -
  • - 16 - 0 - 0 - 0 - 0.694 - 2 - 2 - -0.03 -
  • -
  • - 17 - -3.5 - 0 - 0.03 - 0.624 - 2 - 2 - -0.02 -
  • -
  • - 1 - Fuck - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • - -
  • - 16 - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • -
  • - 17 - 3.5 - 0 - -0.03 - 0.624 - 2 - 2 - -0.02 -
  • -
  • - 16 - 0 - 0 - 0 - 0.694 - 2 - 2 - -0.03 -
  • -
  • - 17 - -3.5 - 0 - 0.03 - 0.624 - 2 - 2 - -0.02 -
  • -
  • - 1 - Fuck - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • - - -
  • - 33 - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • -
  • - 33 - 0 - 0 - 0 - 0.694 - 2 - 2 - -0.03 -
  • -
  • - 1 - Fuck - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • - -
  • - 33 - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • -
  • - 33 - 0 - 0 - 0 - 0.694 - 2 - 2 - -0.03 -
  • -
  • - 1 - Fuck - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • - - -
  • - LayingPawn - -
  • - 16 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • -
  • - 17 - 180 - 180 - 0 - -0.347 - 2 - 2 - 0.015 - -15 -
  • -
  • - 16 - 180 - 180 - 0 - -0.331 - 2 - 2 - 0.03 - 0 -
  • -
  • - 17 - 180 - 180 - 0 - -0.315 - 2 - 2 - 0.045 - 15 -
  • -
  • - 1 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • -
  • - 16 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • -
  • - 17 - 180 - 180 - 0 - -0.347 - 2 - 2 - 0.015 - -15 -
  • -
  • - 16 - 180 - 180 - 0 - -0.331 - 2 - 2 - 0.03 - 0 -
  • -
  • - 17 - 180 - 180 - 0 - -0.315 - 2 - 2 - 0.045 - 15 -
  • -
  • - 1 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • -
  • - 33 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • -
  • - 33 - 180 - 180 - 0 - -0.315 - 2 - 2 - 0.045 - 0 -
  • -
  • - 1 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • -
  • - 33 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • -
  • - 33 - 180 - 180 - 0 - -0.315 - 2 - 2 - 0.045 - 0 -
  • -
  • - 1 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • - - - - -
  • - Fast_Fuck - true - 780 - 0 - -
  • - -
  • - 13 - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • -
  • - 13 - 0 - 0 - 0 - 0.694 - 2 - 2 - -0.03 -
  • -
  • - 1 - Fuck - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • - - -
  • - LayingPawn - -
  • - 13 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • -
  • - 13 - 180 - 180 - 0 - -0.313 - 2 - 2 - 0.045 - 0 -
  • -
  • - 1 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • - - - - -
  • - Cum - true - 594 - 0 - -
  • - -
  • - 10 - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • -
  • - 10 - 0 - 0 - 0 - 0.694 - 2 - 2 - -0.03 -
  • -
  • - 1 - Fuck - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • - -
  • - 10 - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • -
  • - 10 - 0 - 0 - 0 - 0.694 - 2 - 2 - -0.03 -
  • -
  • - 1 - Fuck - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • - -
  • - 10 - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • -
  • - 10 - 0 - 0 - 0 - 0.694 - 2 - 2 - -0.03 -
  • -
  • - true - 45 - Cum - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • -
  • - true - 40 - 0 - 0 - 0 - 0.534 - 2 - 2 - 0 -
  • -
  • - 1 - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • - - -
  • - LayingPawn - -
  • - 10 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • -
  • - 10 - 180 - 180 - 0 - -0.313 - 2 - 2 - 0.045 -
  • -
  • - 1 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 -
  • - -
  • - 10 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 -
  • -
  • - 10 - 180 - 180 - 0 - -0.313 - 2 - 2 - 0.045 -
  • -
  • - 1 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 -
  • - -
  • - 10 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 -
  • -
  • - 10 - 180 - 180 - 0 - -0.313 - 2 - 2 - 0.045 -
  • -
  • - 45 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 -
  • -
  • - 40 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 -
  • -
  • - 1 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • - - - - -
    - -
    -
    - - - diff --git a/1.2/Defs/AnimationDefs/TemplateAnimation.xml b/1.2/Defs/AnimationDefs/TemplateAnimation.xml deleted file mode 100644 index 0305903..0000000 --- a/1.2/Defs/AnimationDefs/TemplateAnimation.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - diff --git a/1.2/Defs/JobDefs/Jobs_SexForAnim.xml b/1.2/Defs/JobDefs/Jobs_SexForAnim.xml deleted file mode 100644 index 20c0bca..0000000 --- a/1.2/Defs/JobDefs/Jobs_SexForAnim.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - JoinInBedAnimation - Rimworld_Animations.JobDriver_SexCasualForAnimation - joining someone in bed. - false - - - - GettinLovedAnimation - Rimworld_Animations.JobDriver_SexBaseRecieverLovedForAnimation - lovin'. - false - - diff --git a/1.2/Defs/SoundDefs/Sounds_Sex.xml b/1.2/Defs/SoundDefs/Sounds_Sex.xml deleted file mode 100644 index 4cce5d0..0000000 --- a/1.2/Defs/SoundDefs/Sounds_Sex.xml +++ /dev/null @@ -1,212 +0,0 @@ - - - - - Cum - MapOnly - - 1 - 1 - -
  • - -
  • - Sex/cum -
  • - - - 30 - 40 - - - 0.8 - 1.2 - - - 0 - 51.86047 - - False - -
    -
    - - Sex - MapOnly - - 1 - 1 - -
  • - -
  • - Sex/kucyu04 -
  • - - - 16 - 16 - - - 0.8 - 1.2 - - - 0 - 51.86047 - - False - -
    -
    - - Suck - MapOnly - - 1 - 1 - -
  • - -
  • - Sex/Suck/Suck_1 -
  • -
  • - Sex/Suck/Suck_2 -
  • -
  • - Sex/Suck/Suck_3 -
  • -
  • - Sex/Suck/Suck_4 -
  • -
  • - Sex/Suck/Suck_5 -
  • -
  • - Sex/Suck/Suck_6 -
  • -
  • - Sex/Suck/Suck_7 -
  • -
  • - Sex/Suck/Suck_8 -
  • -
  • - Sex/Suck/Suck_9 -
  • -
  • - Sex/Suck/Suck_10 -
  • - - - 20 - 35 - - - 1.0 - 1.0 - - - 0 - 51.86047 - - NeverTwice - false - -
    -
    - - Fuck - MapOnly - - 1 - 1 - -
  • - -
  • - Sex/Clap_1 -
  • -
  • - Sex/Clap_2 -
  • -
  • - Sex/Clap_3 -
  • -
  • - Sex/Clap_4 -
  • -
  • - Sex/Clap_5 -
  • -
  • - Sex/Clap_6 -
  • -
  • - Sex/Clap_7 -
  • -
  • - Sex/Clap_8 -
  • - - - 45 - 70 - - - 1.0 - 1.0 - - - 0 - 51.86047 - - NeverTwice - false - -
    -
    - - Slimy - MapOnly - - 1 - 1 - -
  • - -
  • - Sex/Slime/Slimy1 -
  • -
  • - Sex/Slime/Slimy2 -
  • -
  • - Sex/Slime/Slimy3 -
  • -
  • - Sex/Slime/Slimy4 -
  • -
  • - Sex/Slime/Slimy5 -
  • - - - 45 - 75 - - - 1.4 - 1.8 - - - 0 - 100 - - NeverTwice - false - -
    -
    -
    \ No newline at end of file diff --git a/1.2/Patch_HatsDisplaySelection/Properties/AssemblyInfo.cs b/1.2/Patch_HatsDisplaySelection/Properties/AssemblyInfo.cs deleted file mode 100644 index 6905d78..0000000 --- a/1.2/Patch_HatsDisplaySelection/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -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_HatsDisplaySelection")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Patch_HatsDisplaySelection")] -[assembly: AssemblyCopyright("Copyright © 2021")] -[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("ba766964-1716-422d-a09e-29426f8eb9d5")] - -// 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")] diff --git a/1.2/Patch_HatsDisplaySelection/Source/Patches/Patch_HatsDisplaySelection.cs b/1.2/Patch_HatsDisplaySelection/Source/Patches/Patch_HatsDisplaySelection.cs deleted file mode 100644 index 6f00a5a..0000000 --- a/1.2/Patch_HatsDisplaySelection/Source/Patches/Patch_HatsDisplaySelection.cs +++ /dev/null @@ -1,47 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using HarmonyLib; -using HatDisplaySelection; -using Rimworld_Animations; -using UnityEngine; -using Verse; - -namespace Patch_HatsDisplaySelection -{ - [HarmonyBefore(new string[] { "velc.HatsDisplaySelection" })] - [HarmonyPatch(typeof(HatDisplaySelection.Patch), "Patch_PawnRenderer_RenderPawnInternal_Initialize")] - public class Patch_HatsDisplaySelectionInitialize - - { - - public static void Prefix(PawnRenderer __instance, ref Pawn ___pawn, ref Vector3 rootLoc, ref float angle, ref Rot4 bodyFacing, ref Rot4 headFacing) - { - - CompBodyAnimator bodyAnim = ___pawn.TryGetComp(); - bodyAnim.animatePawn(ref rootLoc, ref angle, ref bodyFacing, ref headFacing); - } - - public static void Postfix(PawnRenderer __instance) - { - PawnGraphicSet graphics = __instance.graphics; - Pawn pawn = graphics.pawn; - CompBodyAnimator bodyAnim = pawn.TryGetComp(); - - if (!graphics.AllResolved) - { - graphics.ResolveAllGraphics(); - } - - - if (bodyAnim != null && bodyAnim.isAnimating && pawn.Map == Find.CurrentMap) - { - bodyAnim.tickGraphics(graphics); - - - } - } - } -} diff --git a/1.2/Patches/AnimationPatch_CompBodyAnimator.xml b/1.2/Patches/AnimationPatch_CompBodyAnimator.xml deleted file mode 100644 index fe3a27c..0000000 --- a/1.2/Patches/AnimationPatch_CompBodyAnimator.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - Always - -
  • - /Defs/ThingDef/comps - Always - - /Defs/ThingDef - - - - -
  • - -
  • - /Defs/ThingDef/comps - -
  • - -
  • -
    -
    -
    \ No newline at end of file diff --git a/1.2/Patches/CompatibilityPatch_HCSK.xml b/1.2/Patches/CompatibilityPatch_HCSK.xml deleted file mode 100644 index 2c0b7a0..0000000 --- a/1.2/Patches/CompatibilityPatch_HCSK.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - -
  • Core SK
  • -
    - - Always - -
  • - /Defs/Verse.ThingDef/comps - Always - - /Defs/Verse.ThingDef - - - - -
  • - -
  • - /Defs/Verse.ThingDef/comps - -
  • - -
  • -
    -
    -
    - -
    \ No newline at end of file diff --git a/1.2/Sounds/Sex/Suck/suck_2.wav b/1.2/Sounds/Sex/Suck/suck_2.wav deleted file mode 100644 index a8305c1..0000000 Binary files a/1.2/Sounds/Sex/Suck/suck_2.wav and /dev/null differ diff --git a/1.2/Textures/UI/MainTab.png b/1.2/Textures/UI/MainTab.png deleted file mode 100644 index 92f855f..0000000 Binary files a/1.2/Textures/UI/MainTab.png and /dev/null differ diff --git a/1.3/Assemblies/Rimworld-Animations.dll b/1.3/Assemblies/Rimworld-Animations.dll deleted file mode 100644 index 7f376ba..0000000 Binary files a/1.3/Assemblies/Rimworld-Animations.dll and /dev/null differ diff --git a/1.3/Defs/AnimationDefs/AnimationDefs.rar b/1.3/Defs/AnimationDefs/AnimationDefs.rar deleted file mode 100644 index e7bf2a1..0000000 Binary files a/1.3/Defs/AnimationDefs/AnimationDefs.rar and /dev/null differ diff --git a/1.3/Defs/AnimationDefs/Animations_Beast.xml b/1.3/Defs/AnimationDefs/Animations_Beast.xml deleted file mode 100644 index 30d14fc..0000000 --- a/1.3/Defs/AnimationDefs/Animations_Beast.xml +++ /dev/null @@ -1,2180 +0,0 @@ - - - - Dog_Doggystyle - - true - -
  • Anal
  • -
  • Vaginal
  • -
    - - -
  • VaginalBreeding
  • -
  • AnalBreeding
  • -
    - - -
  • - -
  • Human
  • - - true - -
  • - -
  • Wolf_Timber
  • -
  • Wolf_Arctic
  • -
  • Whitefox
  • -
  • Warg
  • -
  • Husky
  • -
  • LabradorRetriever
  • - -
  • AEXP_WelshTerrier
  • -
  • AEXP_Rottweiler
  • -
  • AEXP_Poodle
  • -
  • AEXP_GreatDane
  • -
  • AEXP_GermanShepherd
  • -
  • AEXP_FrenchBulldog
  • -
  • AEXP_Corgi
  • -
  • AEXP_CatAbyssinian
  • -
  • AEXP_CatBengal
  • -
  • AEXP_CatMaineCoon
  • -
  • AEXP_CatSphynx
  • - - -
  • QuadrupedAnimalWithHooves
  • -
  • QuadrupedAnimalWithPawsAndTail
  • -
    - true - true - -
    - - - - -
  • - Fuck - true - 765 - 0 - -
  • - LayingPawn - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 - 0 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • -
  • - 6 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 2 -
  • -
  • - 1 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • - -
  • - - 10 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • -
  • - 6 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 2 -
  • -
  • - 1 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • - -
  • - - 10 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • -
  • - 6 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 2 -
  • -
  • - 1 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • - -
  • - - 10 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • -
  • - 6 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 2 -
  • -
  • - 1 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • - - -
  • - - 10 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • -
  • - 6 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 2 -
  • -
  • - 1 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • - -
  • - - 10 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • -
  • - 6 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 2 -
  • -
  • - 1 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • - -
  • - - 10 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • -
  • - 6 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 2 -
  • -
  • - 1 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • - -
  • - - 10 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • -
  • - 6 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 2 -
  • -
  • - 1 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 - 0 -
  • - - - -
  • - -
  • - - 8 - -33.7 - 0 - -0.492 - 0.266 - 1 - 0 - 0 -
  • -
  • - 8 - Fuck - -39.6 - 0 - -0.353 - 0.256 - 1 - 0 -
  • -
  • - 1 - -33.7 - 0 - -0.492 - 0.266 - 1 - 0 - 0 -
  • - - - - -
  • - Knot - False - 71 - 0 - -
  • - LayingPawn - -
  • - true - 60 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 1 - 0 -
  • -
  • - 6 - Cum - 53.7 - 28.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 4 - 51.7 - 33.4 - 0.098 - -0.038 - 1 - 1 -
  • -
  • - 1 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 1 - 0 -
  • - - - -
  • - -
  • - - 60 - -33.7 - 0 - -0.492 - 0.266 - 1 - 0 - 0 -
  • -
  • - 6 - -39.6 - 0 - -0.353 - 0.256 - 1 - 0 -
  • -
  • - 4 - Fuck - -41.6 - 0 - -0.383 - 0.256 - 1 - 0 -
  • -
  • - 1 - -39.6 - 0 - -0.353 - 0.256 - 1 - 0 - 0 -
  • - - - - - - -
  • - Cum - true - 600 - 0 - -
  • - LayingPawn - -
  • - 40 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 1 - 0 -
  • -
  • - 40 - Cum - 57.7 - 28.4 - 0.073 - -0.038 - 1 - 1 -
  • -
  • - 1 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 1 - 0 -
  • - - - -
  • - - -
  • - 10 - -39.6 - 0 - -0.353 - 0.256 - 1 - 0 - 0 -
  • -
  • - 10 - -40.6 - 0 - -0.358 - 0.256 - 1 - 0 -
  • -
  • - 10 - -39.6 - 0 - -0.353 - 0.256 - 1 - 0 -
  • -
  • - 10 - -40.6 - 0 - -0.358 - 0.256 - 1 - 0 -
  • -
  • - 10 - -39.6 - 0 - -0.353 - 0.256 - 1 - 0 -
  • -
  • - 10 - -40.6 - 0 - -0.358 - 0.256 - 1 - 0 -
  • -
  • - 10 - -39.6 - 0 - -0.353 - 0.256 - 1 - 0 -
  • -
  • - 10 - -40.6 - 0 - -0.358 - 0.256 - 1 - 0 -
  • -
  • - 1 - -39.6 - 0 - -0.353 - 0.256 - 1 - 0 - 0 -
  • - - - - - - - -
    - -
    - - Horse_Cowgirl - - true - -
  • Anal
  • -
  • Vaginal
  • -
    - - -
  • RequestVaginalBreeding
  • -
  • RequestAnalBreeding
  • -
    - - -
  • - -
  • Human
  • - - true - true - - (0, 0.2) - - -
  • - -
  • Horse
  • - - -
  • QuadrupedAnimalWithHooves
  • -
    - true - -
    - - - - -
  • - Insertion - false - 0 - -
  • - -
  • - 180 - -24.337 - -37.1218948 - 0 - 0.698042035 - -0.20718734 - 0 - 3 - 3 -
  • -
  • - 70 - -2.54239845 - 7.31265259 - 0 - 0.606091142 - -0.045959726 - 0 - 3 - 3 - Slimy -
  • -
  • - 60 - -4.84361649 - -23.6405125 - 0 - 0.650456548 - -0.0570534021 - 0 - 3 - 3 - Slimy -
  • -
  • - 1 - -35.01766 - -26.3706665 - 0 - 0.455286169 - -0.3646413 - 0 - 3 - 3 - Slimy -
  • - - -
  • - LayingPawn - -
  • - 250 - 177.083145 - 0 - 0 - -0.256229281 - -0.362511069 - 0 - 1 - 0 - -
  • -
  • - 60 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • -
  • - 1 - 179.6811 - 0 - 0 - -0.267210543 - -0.3991253 - 0 - 1 - 0 -
  • - - - - - -
  • - SlowFuck - true - 1300 - 0 - -
  • - -
  • - 80 - -35.01766 - -26.3706665 - 0 - 0.455286169 - -0.3646413 - 0 - 3 - 3 -
  • -
  • - 49 - -49.8178673 - -35.7418823 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • -
  • - 1 - -35.01766 - -26.3706665 - 0 - 0.455286169 - -0.3646413 - 0 - 3 - 3 - Fuck -
  • - - -
  • - LayingPawn - -
  • - 80 - 179.6811 - 0 - 0 - -0.267210543 - -0.3991253 - 0 - 1 - 0 -
  • -
  • - 49 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • -
  • - 1 - 179.6811 - 0 - 0 - -0.267210543 - -0.3991253 - 0 - 1 - 0 -
  • - - - - - -
  • - Transition - false - 0 - -
  • - -
  • - 50 - -35.01766 - -26.3706665 - 0 - 0.455286169 - -0.3646413 - 0 - 3 - 3 - Fuck -
  • - -
  • - 15 - -49.8178673 - -35.7418823 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • - -
  • - 80 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 3 -
  • - -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.48456946 - -0.489136577 - 0 - 3 - 3 -
  • - - -
  • - LayingPawn - -
  • - 50 - 179.6811 - 0 - 0 - -0.267210543 - -0.3991253 - 0 - 1 - 0 -
  • - -
  • - 15 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • - -
  • - 80 - 175.467651 - 0 - 0 - -0.2123042 - -0.5309518 - 0 - 1 - 0 - Fuck -
  • - -
  • - 1 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • - - - - - -
  • - FastFuck - true - 1260 - 0 - -
  • - - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 3 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 3 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 2 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 2 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 2 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 2 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 2 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 2 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 3 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 3 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 3 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 3 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • - - -
  • - LayingPawn - - -
  • - 10 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • -
  • - 24 - 175.467651 - 0 - 0 - -0.2123042 - -0.5309518 - 0 - 1 - 0 - Fuck -
  • -
  • - 1 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • - - - - - -
  • - FasterFuck - true - 418 - 0 - -
  • - - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 -
  • -
  • - 8 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 3 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • - - -
  • - LayingPawn - -
  • - 10 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • -
  • - 8 - 175.467651 - 0 - 0 - -0.2123042 - -0.5309518 - 0 - 1 - 0 - Fuck -
  • -
  • - 1 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • - - - - - -
  • - Cum - True - 318 - 0 - -
  • - - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - -
  • -
  • - true - 80 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 3 - Cum -
  • -
  • - 25 - -49.8178673 - 2.654541 - 0 - 0.5175133 - -0.547725141 - 0 - 3 - 3 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 -
  • - - - -
  • - LayingPawn - - -
  • - 10 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • -
  • - 80 - 175.467651 - 0 - 0 - -0.2123042 - -0.5309518 - 0 - 1 - 0 -
  • -
  • - 25 - 173.81427 - 0 - 0 - -0.197662517 - -0.545600235 - 0 - 1 - 0 -
  • -
  • - 1 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • - - - - - - -
    - -
    -
    diff --git a/1.3/Defs/AnimationDefs/Animations_Lesbian.xml b/1.3/Defs/AnimationDefs/Animations_Lesbian.xml deleted file mode 100644 index 56d805a..0000000 --- a/1.3/Defs/AnimationDefs/Animations_Lesbian.xml +++ /dev/null @@ -1,1782 +0,0 @@ - - - - Tribadism - - true - -
  • Scissoring
  • -
    - - -
  • - -
  • Human
  • - - true - -
  • Vagina
  • -
    - -
  • - -
  • Human
  • - - true - true - -
  • Vagina
  • -
    - - -
    - - -
  • - Tribbing - true - 992 - 0 - -
  • - LayingPawn - -
  • - - 20 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 2 - 0 -
  • -
  • - 20 - -79.56 - -79.56 - -0.218 - 0.082 - 2 - 2 - 0 -
  • -
  • - 20 - -81.53 - -81.53 - -0.219 - 0.07 - 2 - 2 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 2 - 0 -
  • - - -
  • - -
  • - - 20 - 9.97 - -7.61 - 0.444 - 0.368 - 3 - 3 - 0 -
  • -
  • - 20 - 23.82 - -6.90 - 0.432 - 0.403 - 3 - 3 - 0 -
  • -
  • - 20 - 5.19 - -6.19 - 0.442 - 0.388 - 3 - 3 - 0 -
  • -
  • - 1 - 9.97 - -7.61 - 0.444 - 0.368 - 3 - 3 - 0 -
  • - - - - - -
  • - TribadismFast - true - 682 - 0 - -
  • - LayingPawn - -
  • - - 10 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • -
  • - 10 - -79.56 - -79.56 - -0.218 - 0.082 - 2 - 1 - 0 -
  • -
  • - 10 - -81.53 - -81.53 - -0.219 - 0.07 - 2 - 1 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • -
  • - - 10 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • -
  • - 10 - -79.56 - -79.56 - -0.218 - 0.082 - 2 - 1 - 0 -
  • -
  • - 10 - -81.53 - -81.53 - -0.219 - 0.07 - 2 - 1 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • - -
  • - - 10 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • -
  • - 10 - -79.56 - -79.56 - -0.218 - 0.082 - 2 - 1 - 0 -
  • -
  • - 10 - -81.53 - -81.53 - -0.219 - 0.07 - 2 - 1 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • -
  • - - 10 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • -
  • - 10 - -79.56 - -79.56 - -0.218 - 0.082 - 2 - 1 - 0 -
  • -
  • - 10 - -81.53 - -81.53 - -0.219 - 0.07 - 2 - 1 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • - - -
  • - - 10 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • -
  • - 10 - -79.56 - -77.66 - -0.218 - 0.082 - 2 - 2 - 0 -
  • -
  • - 10 - -81.53 - -77.74 - -0.219 - 0.07 - 2 - 2 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • - - -
  • - - 10 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • -
  • - 10 - -79.56 - -77.66 - -0.218 - 0.082 - 2 - 2 - 0 -
  • -
  • - 10 - -81.53 - -77.74 - -0.219 - 0.07 - 2 - 2 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • - - -
  • - - 10 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • -
  • - 10 - -79.56 - -77.66 - -0.218 - 0.082 - 2 - 2 - 0 -
  • -
  • - 10 - -81.53 - -77.74 - -0.219 - 0.07 - 2 - 2 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • - - -
  • - - 10 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • -
  • - 10 - -79.56 - -77.66 - -0.218 - 0.082 - 2 - 2 - 0 -
  • -
  • - 10 - -81.53 - -77.74 - -0.219 - 0.07 - 2 - 2 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • - - -
  • - - 10 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • -
  • - 10 - -79.56 - -77.66 - -0.218 - 0.082 - 2 - 2 - 0 -
  • -
  • - 10 - -81.53 - -77.74 - -0.219 - 0.07 - 2 - 2 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • - - -
  • - - 10 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • -
  • - 10 - -79.56 - -77.66 - -0.218 - 0.082 - 2 - 2 - 0 -
  • -
  • - 10 - -81.53 - -77.74 - -0.219 - 0.07 - 2 - 2 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • - -
  • - - 10 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • -
  • - 10 - -79.56 - -79.56 - -0.218 - 0.082 - 2 - 1 - 0 -
  • -
  • - 10 - -81.53 - -81.53 - -0.219 - 0.07 - 2 - 1 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • - - -
  • - -
  • - - 10 - 9.97 - -7.61 - 0.444 - 0.368 - 3 - 3 - 0 -
  • -
  • - 10 - 23.82 - -6.90 - 0.432 - 0.403 - 3 - 3 - 0 -
  • -
  • - 10 - 5.19 - -6.19 - 0.442 - 0.388 - 3 - 3 - 0 -
  • -
  • - 1 - 9.97 - -7.61 - 0.444 - 0.368 - 3 - 3 - 0 -
  • - - - - - -
    - -
    - - Cunnilingus - - true - -
  • Oral
  • -
  • Fingering
  • -
  • Cunnilingus
  • -
    - - -
  • Cunnilingus
  • -
  • CunnilingusF
  • -
  • CunnilingusRape
  • -
  • CunnilingusRapeF
  • - -
  • Fingering
  • -
  • FingeringF
  • -
  • FingeringRape
  • -
  • FingeringRapeF
  • - -
  • Fisting
  • -
  • FistingF
  • -
  • FistingRape
  • -
  • FistingRapeF
  • - -
    - -
  • - -
  • Human
  • - - true - -
  • Vagina
  • -
    - - (-0.2, 0.1) - - -
  • - -
  • Human
  • - - true - - (-0.1, 0.15) - - -
    - - - - -
  • - Initial - False - 0 - -
  • - -
  • - 60 - -81.06536 - -56.4483032 - 0 - -0.0624052179 - -0.437134951 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.0692383763 - -0.440020353 - 0 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - 60 - -27.578373 - 0.2816162 - 0 - 0.102704488 - 0.50675 - 0 - 3 - 3 -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - -0.1 - 3 - 3 - Slimy -
  • - - - - - - -
  • - Slow - True - 1497 - 0 - -
  • - -
  • - 98 - -87.3645554 - -69.70276 - 0 - -0.0692383763 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 40 - -87.26528 - -65.901825 - 0 - -0.0737426062 - -0.432820916 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.0692383763 - -0.440020353 - 0 - 1 - 1 -
  • - -
  • - 98 - -87.3645554 - -69.70276 - 0 - -0.0692383763 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 40 - -87.26528 - -65.901825 - 0 - -0.0737426062 - -0.432820916 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.0692383763 - -0.440020353 - 0 - 1 - 1 -
  • - -
  • - 60 - -87.3645554 - -69.70276 - 0 - -0.0692383763 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 120 - -86.52611 - -68.86432 - 0 - -0.05432228 - -0.439906 - 0 - 1 - 1 -
  • -
  • - 40 - -88.36286 - -84.3309 - 0 - -0.06637782 - -0.440140843 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.0692383763 - -0.440020353 - 0 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - 80 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - -0.1 - 3 - 3 -
  • -
  • - 18 - -41.1054764 - -10.1737061 - 0 - 0.04582855 - 0.462155169 - 0 - 3 - 3 -
  • -
  • - 40 - -38.1903877 - -31.6517334 - 0 - 0.0384018831 - 0.4874894 - 0 - 3 - 3 -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - -0.1 - 3 - 3 - Slimy -
  • - -
  • - 80 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - -0.1 - 3 - 3 -
  • -
  • - 18 - -41.1054764 - -10.1737061 - 0 - 0.04582855 - 0.462155169 - 0 - 3 - 3 -
  • -
  • - 40 - -38.1903877 - -31.6517334 - 0 - 0.0384018831 - 0.4874894 - 0 - 3 - 3 -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - -0.1 - 3 - 3 - Slimy -
  • - -
  • - 60 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - -0.1 - 3 - 3 - Slimy -
  • -
  • - 40 - -45.2595444 - -13.57782 - 0 - 0.009577712 - 0.4726282 - 0 - 3 - 3 - Slimy -
  • -
  • - 20 - -45.2595444 - -24.2278748 - 0 - 0.0315402448 - 0.415024319 - 0 - 3 - 3 - -
  • -
  • - 40 - -45.2595444 - -13.57782 - 0 - 0.009577712 - 0.4726282 - 0 - 3 - 3 - Slimy -
  • -
  • - 20 - -45.2595444 - -24.2278748 - 0 - 0.0315402448 - 0.415024319 - 0 - 3 - 3 - -
  • -
  • - 40 - -45.2595444 - -13.57782 - 0 - 0.009577712 - 0.4726282 - 0 - 3 - 3 - Slimy -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - -0.1 - 3 - 3 - Slimy -
  • - - - - - - -
  • - Transition - False - 0 - -
  • - -
  • - 40 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 30 - -97.90959 - -69.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - 40 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - -0.1 - 3 - 3 - Slimy -
  • -
  • - 30 - -35.8792953 - -9.312592 - 0 - 0.03684573 - 0.4285702 - 0 - 3 - 3 - Slimy -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • - - - - - -
  • - Fast - True - 710 - 0 - -
  • - -
  • - 40 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 30 - -97.90959 - -69.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • - -
  • - 40 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 30 - -97.90959 - -69.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • - -
  • - 40 - -87.3645554 - -79.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 2 -
  • -
  • - 30 - -97.90959 - -79.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 2 -
  • -
  • - 1 - -87.3645554 - -79.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 2 -
  • - -
  • - 40 - -87.3645554 - -79.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 2 -
  • -
  • - 30 - -97.90959 - -79.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 2 -
  • -
  • - 1 - -87.3645554 - -79.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 2 -
  • - -
  • - 40 - -87.3645554 - -79.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 2 -
  • -
  • - 30 - -97.90959 - -79.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 2 -
  • -
  • - 1 - -87.3645554 - -79.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 2 -
  • - -
  • - 40 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 30 - -97.90959 - -69.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - 40 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • -
  • - 30 - -35.8792953 - -3.312592 - 0 - 0.03684573 - 0.4285702 - 0 - 3 - 3 - Slimy -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • - - - - -
  • - Faster - True - 360 - 0 - -
  • - -
  • - 20 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 15 - -97.90959 - -69.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - 20 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • -
  • - 15 - -35.8792953 - -9.312592 - 0 - 0.03684573 - 0.4285702 - 0 - 3 - 3 - Slimy -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • - - - - -
  • - Cum - True - 639 - 0 - -
  • - -
  • - 20 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 15 - -97.90959 - -69.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • - -
  • - 20 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 15 - -97.90959 - -69.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • - -
  • - 20 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - True - 80 - -97.90959 - -69.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 1 - Cum -
  • -
  • - 40 - -99.80413 - -94.4023743 - 0 - -0.01950606 - -0.447728932 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • - - -
  • - LayingPawn - - -
  • - 20 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • -
  • - 15 - -35.8792953 - -9.312592 - 0 - 0.03684573 - 0.4285702 - 0 - 3 - 3 - Slimy -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • - -
  • - 20 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • -
  • - 15 - -35.8792953 - -9.312592 - 0 - 0.03684573 - 0.4285702 - 0 - 3 - 3 - Slimy -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • - -
  • - 20 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • -
  • - 80 - -35.8792953 - -9.312592 - 0 - 0.03684573 - 0.4285702 - 0 - 3 - 3 -
  • -
  • - 40 - -38.5277061 - -1.13140869 - 0 - 0.0376501828 - 0.42935127 - 0 - 3 - 3 -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • - - - - - -
    - -
    -
    diff --git a/1.3/Defs/AnimationDefs/Animations_Masturbate.xml b/1.3/Defs/AnimationDefs/Animations_Masturbate.xml deleted file mode 100644 index 2968fa1..0000000 --- a/1.3/Defs/AnimationDefs/Animations_Masturbate.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - \ No newline at end of file diff --git a/1.3/Defs/AnimationDefs/Animations_Multi.xml b/1.3/Defs/AnimationDefs/Animations_Multi.xml deleted file mode 100644 index af7ea7a..0000000 --- a/1.3/Defs/AnimationDefs/Animations_Multi.xml +++ /dev/null @@ -1,660 +0,0 @@ - - - - Double_Penetration - - true - -
  • DoublePenetration
  • -
  • Anal
  • -
  • Oral
  • -
  • Vaginal
  • -
    - -
  • - -
  • Human
  • - - true - -
  • - -
  • Human
  • - - true - true - true - -
  • - -
  • Human
  • - - true - true - true - -
    - - -
  • - Slow - true - 976 - 0 - -
  • - - -
  • - 25 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • -
  • - 35 - 48.1 - 16.3 - 0 - 0.188 - 1 - 1 - 0 -
  • -
  • - Suck - 1 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • - - -
  • - - LayingPawn - -
  • - -10 - 30 - 12 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • -
  • - 30 - 12 - -15.1 - 0.729 - 0.378 - 3 - 3 - 0 -
  • -
  • - -10 - 1 - 12 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • - - -
  • - - LayingPawn - -
  • - 43 - 27 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • -
  • - Fuck - 33 - -6.7 - 14.1 - -0.53 - 0.378 - 1 - 1 - 0 -
  • -
  • - 43 - 1 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • - - - - -
  • - Face_Fuck - true - 650 - 0 - -
  • - - -
  • - 13 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • -
  • - 6 - 60.7 - 5.6 - 0.025 - 0.118 - 1 - 1 - 0 -
  • -
  • - 6 - 62.7 - 0.2 - 0.08 - 0.118 - 1 - 1 - 0 -
  • -
  • - Suck - 1 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • - - -
  • - - LayingPawn - -
  • - -10 - 13 - 12 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • -
  • - 12 - 2 - -15.1 - 0.729 - 0.378 - 3 - 3 - 0 -
  • -
  • - -10 - 1 - 12 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • - - -
  • - - LayingPawn - -
  • - 43 - 13 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • -
  • - Fuck - 12 - -6.7 - 14.1 - -0.53 - 0.378 - 1 - 1 - 0 -
  • -
  • - 43 - 1 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • - - - - -
  • - Cum - true - 392 - 0 - -
  • - - -
  • - 9 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • -
  • - 4 - 60.7 - 5.6 - 0.025 - 0.118 - 1 - 1 - 0 -
  • -
  • - 4 - 62.7 - 0.2 - 0.056 - 0.118 - 1 - 1 - 0 -
  • -
  • - Suck - 1 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • - -
  • - 9 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • -
  • - 4 - 60.7 - 5.6 - 0.025 - 0.118 - 1 - 1 - 0 -
  • -
  • - 4 - 62.7 - 0.2 - 0.056 - 0.118 - 1 - 1 - 0 -
  • -
  • - Suck - 1 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • - -
  • - 9 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • -
  • - true - 120 - 60.7 - 5.6 - 0.025 - 0.118 - 1 - 1 - 0 -
  • -
  • - 30 - 62.7 - 0.2 - 0.056 - 0.118 - 1 - 1 - 0 -
  • -
  • - Suck - 1 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • - - -
  • - - LayingPawn - -
  • - -10 - 9 - 9 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • -
  • - 8 - 0 - -15.1 - 0.729 - 0.378 - 3 - 3 - 0 -
  • -
  • - 1 - 9 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • - -
  • - 9 - 9 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • -
  • - 8 - 0 - -15.1 - 0.729 - 0.378 - 3 - 3 - 0 -
  • -
  • - 1 - 9 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • - - -
  • - 9 - 9 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • -
  • - 120 - 9 - -15.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • -
  • - 30 - 9 - 7 - 0.674 - 0.378 - 3 - 3 - 0 -
  • -
  • - 1 - 9 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 - -10 -
  • - - - -
  • - - LayingPawn - -
  • - 43 - 9 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • -
  • - Fuck - 8 - -6.7 - 14.1 - -0.53 - 0.378 - 1 - 1 - 0 -
  • -
  • - 1 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • - -
  • - 9 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • -
  • - Fuck - 8 - -6.7 - 14.1 - -0.53 - 0.378 - 1 - 1 - 0 -
  • -
  • - 1 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • - -
  • - 9 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • -
  • - Cum - 120 - -6.7 - 14.1 - -0.53 - 0.378 - 1 - 1 - 0 -
  • -
  • - 30 - -6.7 - -7 - -0.53 - 0.378 - 1 - 1 - 0 -
  • -
  • - 43 - 1 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • - - - - - -
    - -
    - -
    diff --git a/1.3/Defs/AnimationDefs/Animations_SexToys.xml b/1.3/Defs/AnimationDefs/Animations_SexToys.xml deleted file mode 100644 index 320d3aa..0000000 --- a/1.3/Defs/AnimationDefs/Animations_SexToys.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - diff --git a/1.3/Defs/AnimationDefs/Animations_Vanilla2.xml b/1.3/Defs/AnimationDefs/Animations_Vanilla2.xml deleted file mode 100644 index 71b02a9..0000000 --- a/1.3/Defs/AnimationDefs/Animations_Vanilla2.xml +++ /dev/null @@ -1,378 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/1.3/Defs/AnimationDefs/Animations_vanilla.xml b/1.3/Defs/AnimationDefs/Animations_vanilla.xml deleted file mode 100644 index 0fd61d5..0000000 --- a/1.3/Defs/AnimationDefs/Animations_vanilla.xml +++ /dev/null @@ -1,2799 +0,0 @@ - - - - - Doggystyle - - true - -
  • Vaginal
  • -
  • Anal
  • -
  • DoublePenetration
  • -
    - - -
  • AnalSex
  • -
  • AnalSexF
  • -
  • AnalRape
  • -
  • VaginalSex
  • -
  • VaginalSexF
  • -
  • VaginalRape
  • -
    - - -
  • - - -
  • Human
  • - - true - -
  • - -
  • Human
  • - - true - true - true - - (0, 0.2) - - -
    - - -
  • - Slow_Fuck - true - 612 - 0 - -
  • - -
  • - 0 - 10 - 27 - 0.298 - 0.166 - 0 - 1 - 2 -
  • -
  • - 40 - 32 - 0.326 - 0.190 - 1 - 2 -
  • -
  • - 1 - 27 - 0.298 - 0.166 - 1 - 2 -
  • - -
  • - 10 - 27 - 0.298 - 0.166 - 1 - 2 -
  • -
  • - 40 - 32 - 0.326 - 0.190 - 1 - 2 -
  • -
  • - 1 - 27 - 0.298 - 0.166 - 1 - 2 -
  • - -
  • - 10 - 27 - 0.298 - 0.166 - 1 - 2 -
  • -
  • - 40 - 32 - 0.326 - 0.190 - 1 - 2 -
  • -
  • - 1 - 27 - 0.298 - 0.166 - 1 - 2 -
  • - -
  • - 10 - 27 - 0.298 - 0.166 - 1 - 1 -
  • -
  • - 40 - 32 - 0.326 - 0.190 - 1 - 1 -
  • -
  • - 1 - 27 - 0.298 - 0.166 - 1 - 1 -
  • - -
  • - 10 - 27 - 0.298 - 0.166 - 1 - 1 -
  • -
  • - 40 - 32 - 0.326 - 0.190 - 1 - 1 -
  • -
  • - 1 - 27 - 0.298 - 0.166 - 1 - 1 -
  • - -
  • - 10 - 27 - 0.298 - 0.166 - 1 - 1 -
  • -
  • - 40 - 32 - 0.326 - 0.190 - 1 - 1 -
  • -
  • - 1 - 27 - 0.298 - 0.166 - 1 - 1 -
  • - -
  • - 10 - 27 - 0.298 - 0.166 - 1 - 1 -
  • -
  • - 40 - 32 - 0.326 - 0.190 - 1 - 1 -
  • -
  • - 1 - 27 - 0.298 - 0.166 - 1 - 1 -
  • - -
  • - 10 - 27 - 0.298 - 0.166 - 1 - 1 -
  • -
  • - 40 - 32 - 0.326 - 0.190 - 1 - 1 -
  • -
  • - 0 - 1 - 27 - 0.298 - 0.166 - 0 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - 27 - 0 - 10 - 16.6 - -0.217 - 0.175 - 3 - 1 - 1 -
  • - -
  • - 40 - Fuck - -17 - -0.217 - 0.272 - 5.4 - 1 - 1 -
  • -
  • - 1 - 16.6 - -0.217 - 0.175 - 3 - 1 - 1 - 0 - 27 -
  • - - - - -
  • - Fast_Fuck - true - 609 - 0 - -
  • - -
  • - 8 - 27 - 0.298 - 0.166 - 1 - 1 - 1 - 0 -
  • -
  • - 12 - 32 - 0.326 - 0.190 - 4 - 1 - 1 -
  • -
  • - 1 - 27 - 0.298 - 0.166 - 1 - 1 - 1 - 0 -
  • - - -
  • - LayingPawn - -
  • - 27 - 8 - 11 - -0.217 - 0.175 - 8 - 1 - 1 - 0 -
  • - -
  • - 12 - Fuck - -12 - -0.217 - 0.272 - 9 - 1 - 1 -
  • -
  • - 1 - 11 - -0.217 - 0.175 - 8 - 1 - 1 - 0 - 27 -
  • - - - - -
  • - Cum - true - 300 - 0 - -
  • - -
  • - 8 - 27 - 0.298 - 0.166 - 0 - 1 - 1 - 0 -
  • -
  • - Cum - 100 - 32 - 0.326 - 0.190 - -1 - 1 - 1 - true -
  • -
  • - 12 - 35 - 0.326 - 0.190 - -14 - 1 - 1 -
  • -
  • - 1 - 27 - 0.298 - 0.166 - 0 - 1 - 1 - 0 -
  • - - -
  • - LayingPawn - -
  • - 27 - 8 - 11 - -0.217 - 0.175 - -8 - 1 - 1 - 0 -
  • -
  • - 100 - -12 - -0.217 - 0.272 - -9 - 1 - 1 -
  • -
  • - 12 - -15 - -0.227 - 0.272 - -4 - 1 - 1 -
  • -
  • - 1 - 11 - -0.217 - 0.175 - -8 - 1 - 1 - 0 - 27 -
  • - - - - -
    -
    - - Blowjob - - true - -
  • Oral
  • -
  • Fellatio
  • -
    - -
  • Handjob
  • -
  • HandjobF
  • -
  • HandjobRape
  • -
  • HandjobRapeF
  • - -
  • Breastjob
  • -
  • BreastjobF
  • -
  • BreastjobRape
  • -
  • BreastjobRapeF
  • - -
  • Fellatio
  • -
  • FellatioF
  • -
  • FellatioRape
  • -
  • FellatioRapeF
  • - -
  • Beakjob
  • -
  • BeakjobF
  • -
  • BeakjobRape
  • -
  • BeakjobRapeF
  • - - -
    - -
  • - - -
  • Human
  • - - - (0, -0.2) - - -
  • - -
  • Human
  • - - true - true - true - - (0, 0.2) - - -
    - -
  • - Slow_Suck - true - 1140 - 0 - -
  • - -
  • - 35 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • -
  • - Suck - 59 - 0 - 0 - -0.33 - 0 - 0 - -0.16 -
  • -
  • - 1 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • - -
  • - 35 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • -
  • - Suck - 59 - 0 - 0 - -0.33 - 0 - 0 - -0.15 -
  • -
  • - 1 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • - -
  • - 35 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • -
  • - Suck - 59 - - 6 - 0 - -0.33 - 0 - 0 - -0.13 -
  • -
  • - 1 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • - -
  • - 35 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • -
  • - Suck - 59 - 0 - -4 - 0 - -0.33 - 0 - 0 - -0.12 -
  • -
  • - 1 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • - - -
  • - LayingPawn - -
  • - 35 - 0 - 0 - 0 - 0.473 - 2 - 2 - 0 - 180 -
  • -
  • - 59 - 0 - 0 - 0.490 - 2 - 2 - -0.003 -
  • -
  • - 1 - 0 - 0 - 0 - 0.473 - 2 - 2 - 0 - 180 -
  • - - - - -
  • - Face_Fuck - true - 300 - 0 - -
  • - -
  • - 15 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • -
  • - Suck - 14 - 0 - 0 - -0.270 - 0 - 0 - -0.06 -
  • -
  • - 1 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • - - -
  • - LayingPawn - -
  • - 15 - 0 - 0 - 0 - 0.473 - 2 - 2 - 0 - 180 -
  • -
  • - 14 - 0 - 0 - 0.575 - 2 - 2 - -0.051 -
  • -
  • - 1 - 0 - 0 - 0 - 0.473 - 2 - 2 - 0 - 180 -
  • - - - - -
  • - Cum - true - 600 - 0 - -
  • - -
  • - 12 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • -
  • - 7 - 0 - 0 - -0.290 - 0 - 0 - -0.06 -
  • -
  • - 7 - Suck - 0 - 0 - -0.290 - 0 - 0 - -0.008 -
  • -
  • - 60 - 0 - 0 - -0.290 - 0 - 0 - -0.06 -
  • -
  • - 14 - 0 - 0 - -0.290 - 0 - 0 - -0.06 -
  • -
  • - 1 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • - - -
  • - LayingPawn - -
  • - 12 - 0 - 0 - 0 - 0.473 - 2 - 2 - 0 - 180 -
  • -
  • - 7 - Cum - 0 - 0 - 0.575 - 2 - 2 - -0.051 -
  • -
  • - 7 - 0 - 0 - 0.50 - 2 - 2 - -0.04 -
  • -
  • - true - 60 - 0 - 0 - 0.575 - 2 - 2 - -0.051 -
  • -
  • - 14 - 0 - 0 - 0.575 - 2 - 2 - -0.051 -
  • -
  • - 1 - 0 - 0 - 0 - 0.473 - 2 - 2 - 0 - 180 -
  • - - - - -
    - -
    - - ReverseStandAndCarry - - true - -
  • Anal
  • -
  • Vaginal
  • -
  • DoublePenetration
  • -
    - -
  • AnalSex
  • -
  • AnalSexF
  • -
  • AnalRape
  • -
  • VaginalSex
  • -
  • VaginalSexF
  • -
  • VaginalRape
  • -
    - -
  • - - -
  • Human
  • - - true - - (0, 0.2) - - -
  • - -
  • Human
  • - - true - true - true - - (0, 0.2) - - -
    - - -
  • - Slow_Fuck - true - 1080 - 0 - -
  • - -
  • - 30 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 29 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - - -
  • - LayingPawn - -
  • - 6 - 30 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • -
  • - 40 - Fuck - 29 - 17.11 - -2.87 - 0.114 - 0.359 - 3 - 3 - 0 -
  • -
  • - 1 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 - 6 -
  • - - - - - -
  • - Fast_Fuck - true - 780 - 0 - -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 2 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 2 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 2 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 2 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 2 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 2 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 2 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • - - - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - - -
  • - LayingPawn - -
  • - 6 - 13 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • -
  • - 40 - Fuck - 12 - 17.11 - -2.87 - 0.114 - 0.359 - 3 - 3 - 0 -
  • -
  • - 1 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 - 6 -
  • - - - - - -
  • - Cum - true - 415 - 0 - -
  • - -
  • - 3 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 4 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - -
  • - 3 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 4 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - -
  • - 3 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 4 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - -
  • - 3 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 4 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - true - 75 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 27 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - - -
  • - LayingPawn - -
  • - 6 - 7 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • -
  • - 40 - Fuck - 7 - 17.11 - -2.87 - 0.114 - 0.359 - 3 - 3 - 0 -
  • -
  • - 6 - 1 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • - -
  • - 6 - 7 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • -
  • - 40 - Fuck - 7 - 17.11 - -2.87 - 0.114 - 0.359 - 3 - 3 - 0 -
  • -
  • - 6 - 1 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • - -
  • - 6 - 7 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • -
  • - 40 - Fuck - 7 - 17.11 - -2.87 - 0.114 - 0.359 - 3 - 3 - 0 -
  • -
  • - 6 - 1 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • - -
  • - 6 - 7 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • -
  • - 40 - Cum - 75 - 17.11 - -2.87 - 0.114 - 0.359 - 3 - 3 - 0 -
  • -
  • - 40 - 27 - 17.11 - -2.87 - 0.114 - 0.359 - 3 - 3 - 0 -
  • -
  • - 6 - 1 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • - - - - -
    - -
    - - Cowgirl - - true - -
  • Anal
  • -
  • Vaginal
  • -
  • DoublePenetration
  • -
    - - -
  • AnalSex
  • -
  • AnalSexF
  • -
  • AnalRapeF
  • -
  • VaginalSex
  • -
  • VaginalSexF
  • -
  • VaginalRapeF
  • -
    - - - -
  • - - -
  • Human
  • - - true - true - - (0, 0.2) - - - -
  • - -
  • Human
  • - - true - true - - (0, -0.2) - - - -
    - - -
  • - Slow_Fuck - true - 1340 - 0 - -
  • - - -
  • - 16 - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • -
  • - 17 - 3.5 - 0 - -0.03 - 0.624 - 2 - 2 - -0.02 -
  • -
  • - 16 - 0 - 0 - 0 - 0.694 - 2 - 2 - -0.03 -
  • -
  • - 17 - -3.5 - 0 - 0.03 - 0.624 - 2 - 2 - -0.02 -
  • -
  • - 1 - Fuck - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • - -
  • - 16 - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • -
  • - 17 - 3.5 - 0 - -0.03 - 0.624 - 2 - 2 - -0.02 -
  • -
  • - 16 - 0 - 0 - 0 - 0.694 - 2 - 2 - -0.03 -
  • -
  • - 17 - -3.5 - 0 - 0.03 - 0.624 - 2 - 2 - -0.02 -
  • -
  • - 1 - Fuck - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • - - -
  • - 33 - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • -
  • - 33 - 0 - 0 - 0 - 0.694 - 2 - 2 - -0.03 -
  • -
  • - 1 - Fuck - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • - -
  • - 33 - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • -
  • - 33 - 0 - 0 - 0 - 0.694 - 2 - 2 - -0.03 -
  • -
  • - 1 - Fuck - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • - - -
  • - LayingPawn - -
  • - 16 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • -
  • - 17 - 180 - 180 - 0 - -0.347 - 2 - 2 - 0.015 - -15 -
  • -
  • - 16 - 180 - 180 - 0 - -0.331 - 2 - 2 - 0.03 - 0 -
  • -
  • - 17 - 180 - 180 - 0 - -0.315 - 2 - 2 - 0.045 - 15 -
  • -
  • - 1 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • -
  • - 16 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • -
  • - 17 - 180 - 180 - 0 - -0.347 - 2 - 2 - 0.015 - -15 -
  • -
  • - 16 - 180 - 180 - 0 - -0.331 - 2 - 2 - 0.03 - 0 -
  • -
  • - 17 - 180 - 180 - 0 - -0.315 - 2 - 2 - 0.045 - 15 -
  • -
  • - 1 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • -
  • - 33 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • -
  • - 33 - 180 - 180 - 0 - -0.315 - 2 - 2 - 0.045 - 0 -
  • -
  • - 1 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • -
  • - 33 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • -
  • - 33 - 180 - 180 - 0 - -0.315 - 2 - 2 - 0.045 - 0 -
  • -
  • - 1 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • - - - - -
  • - Fast_Fuck - true - 780 - 0 - -
  • - -
  • - 13 - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • -
  • - 13 - 0 - 0 - 0 - 0.694 - 2 - 2 - -0.03 -
  • -
  • - 1 - Fuck - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • - - -
  • - LayingPawn - -
  • - 13 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • -
  • - 13 - 180 - 180 - 0 - -0.313 - 2 - 2 - 0.045 - 0 -
  • -
  • - 1 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • - - - - -
  • - Cum - true - 594 - 0 - -
  • - -
  • - 10 - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • -
  • - 10 - 0 - 0 - 0 - 0.694 - 2 - 2 - -0.03 -
  • -
  • - 1 - Fuck - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • - -
  • - 10 - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • -
  • - 10 - 0 - 0 - 0 - 0.694 - 2 - 2 - -0.03 -
  • -
  • - 1 - Fuck - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • - -
  • - 10 - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • -
  • - 10 - 0 - 0 - 0 - 0.694 - 2 - 2 - -0.03 -
  • -
  • - true - 45 - Cum - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • -
  • - true - 40 - 0 - 0 - 0 - 0.534 - 2 - 2 - 0 -
  • -
  • - 1 - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • - - -
  • - LayingPawn - -
  • - 10 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • -
  • - 10 - 180 - 180 - 0 - -0.313 - 2 - 2 - 0.045 -
  • -
  • - 1 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 -
  • - -
  • - 10 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 -
  • -
  • - 10 - 180 - 180 - 0 - -0.313 - 2 - 2 - 0.045 -
  • -
  • - 1 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 -
  • - -
  • - 10 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 -
  • -
  • - 10 - 180 - 180 - 0 - -0.313 - 2 - 2 - 0.045 -
  • -
  • - 45 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 -
  • -
  • - 40 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 -
  • -
  • - 1 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • - - - - -
    - -
    -
    - - - diff --git a/1.3/Defs/AnimationDefs/TemplateAnimation.xml b/1.3/Defs/AnimationDefs/TemplateAnimation.xml deleted file mode 100644 index 0305903..0000000 --- a/1.3/Defs/AnimationDefs/TemplateAnimation.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - diff --git a/1.3/Defs/MainTabDefs/MainButtonDef.xml b/1.3/Defs/MainTabDefs/MainButtonDef.xml deleted file mode 100644 index 0674d24..0000000 --- a/1.3/Defs/MainTabDefs/MainButtonDef.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - OffsetManager - - Control pawn offsets - Rimworld_Animations.MainTabWindow_OffsetConfigure - 54 - false - UI/MainTab - true - - - \ No newline at end of file diff --git a/1.3/Defs/SoundDefs/Sounds_Sex.xml b/1.3/Defs/SoundDefs/Sounds_Sex.xml deleted file mode 100644 index 4cce5d0..0000000 --- a/1.3/Defs/SoundDefs/Sounds_Sex.xml +++ /dev/null @@ -1,212 +0,0 @@ - - - - - Cum - MapOnly - - 1 - 1 - -
  • - -
  • - Sex/cum -
  • - - - 30 - 40 - - - 0.8 - 1.2 - - - 0 - 51.86047 - - False - -
    -
    - - Sex - MapOnly - - 1 - 1 - -
  • - -
  • - Sex/kucyu04 -
  • - - - 16 - 16 - - - 0.8 - 1.2 - - - 0 - 51.86047 - - False - -
    -
    - - Suck - MapOnly - - 1 - 1 - -
  • - -
  • - Sex/Suck/Suck_1 -
  • -
  • - Sex/Suck/Suck_2 -
  • -
  • - Sex/Suck/Suck_3 -
  • -
  • - Sex/Suck/Suck_4 -
  • -
  • - Sex/Suck/Suck_5 -
  • -
  • - Sex/Suck/Suck_6 -
  • -
  • - Sex/Suck/Suck_7 -
  • -
  • - Sex/Suck/Suck_8 -
  • -
  • - Sex/Suck/Suck_9 -
  • -
  • - Sex/Suck/Suck_10 -
  • - - - 20 - 35 - - - 1.0 - 1.0 - - - 0 - 51.86047 - - NeverTwice - false - -
    -
    - - Fuck - MapOnly - - 1 - 1 - -
  • - -
  • - Sex/Clap_1 -
  • -
  • - Sex/Clap_2 -
  • -
  • - Sex/Clap_3 -
  • -
  • - Sex/Clap_4 -
  • -
  • - Sex/Clap_5 -
  • -
  • - Sex/Clap_6 -
  • -
  • - Sex/Clap_7 -
  • -
  • - Sex/Clap_8 -
  • - - - 45 - 70 - - - 1.0 - 1.0 - - - 0 - 51.86047 - - NeverTwice - false - -
    -
    - - Slimy - MapOnly - - 1 - 1 - -
  • - -
  • - Sex/Slime/Slimy1 -
  • -
  • - Sex/Slime/Slimy2 -
  • -
  • - Sex/Slime/Slimy3 -
  • -
  • - Sex/Slime/Slimy4 -
  • -
  • - Sex/Slime/Slimy5 -
  • - - - 45 - 75 - - - 1.4 - 1.8 - - - 0 - 100 - - NeverTwice - false - -
    -
    -
    \ No newline at end of file diff --git a/1.3/Patch_HatsDisplaySelection/Patch_HatsDisplaySelection.csproj b/1.3/Patch_HatsDisplaySelection/Patch_HatsDisplaySelection.csproj deleted file mode 100644 index 8da21a6..0000000 --- a/1.3/Patch_HatsDisplaySelection/Patch_HatsDisplaySelection.csproj +++ /dev/null @@ -1,75 +0,0 @@ - - - - - Debug - AnyCPU - {BA766964-1716-422D-A09E-29426F8EB9D5} - Library - Properties - Patch_HatsDisplaySelection - Patch_HatsDisplaySelection - v4.7.2 - 512 - true - - - false - none - false - 1.2\Assemblies\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\..\..\..\..\workshop\content\294100\2009463077\Current\Assemblies\0Harmony.dll - False - - - ..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll - False - - - ..\..\..\..\..\workshop\content\294100\1542291825\1.2\Assemblies\HatDisplaySelection.dll - False - - - ..\1.2\Assemblies\Rimworld-Animations.dll - False - - - - - - - - - - - ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.dll - False - - - ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll - False - - - - - - - - - - - \ No newline at end of file diff --git a/1.3/Patches/CompPatches/AutoCleaner.xml b/1.3/Patches/CompPatches/AutoCleaner.xml deleted file mode 100644 index c2ad860..0000000 --- a/1.3/Patches/CompPatches/AutoCleaner.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - Always - -
  • - /Defs/ThingDef[@Name="BaseBaseAutocleaner"]/comps - Always - - /Defs/ThingDef[@Name="BaseBaseAutocleaner"]/comps - -
  • - - -
  • -
    -
    -
    - diff --git a/1.3/Patches/CompPatches/CombatExtended.xml b/1.3/Patches/CompPatches/CombatExtended.xml deleted file mode 100644 index 7d35127..0000000 --- a/1.3/Patches/CompPatches/CombatExtended.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - Always - -
  • - /Defs/ThingDef[@Name="BasePawnSimple"]/comps - Always - - /Defs/ThingDef[@Name="BasePawnSimple"]/comps - -
  • - - -
  • -
    -
    -
    diff --git a/1.3/Patches/CompPatches/ZombieLand.xml b/1.3/Patches/CompPatches/ZombieLand.xml deleted file mode 100644 index e950e0e..0000000 --- a/1.3/Patches/CompPatches/ZombieLand.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - Always - -
  • - /Defs/ThingDef[@Name="BaseZombie"]/comps - Always - - /Defs/ThingDef[@Name="BaseZombie"]/comps - -
  • - - -
  • -
    -
    -
    diff --git a/1.3/Patches/CompatibilityPatch_FacialAnimation.xml b/1.3/Patches/CompatibilityPatch_FacialAnimation.xml deleted file mode 100644 index 125d79f..0000000 --- a/1.3/Patches/CompatibilityPatch_FacialAnimation.xml +++ /dev/null @@ -1,130 +0,0 @@ - - - - -
  • [NL] Facial Animation - WIP
  • -
    - - Always - -
  • - /Defs/FacialAnimation.FaceAnimationDef[defName="Lovin" or defName="Lovin2"]/targetJobs - Always - -
  • RJW_Masturbate
  • -
  • GettinBred
  • -
  • Bestiality
  • -
  • BestialityForFemale
  • -
  • ViolateCorpse
  • -
  • Quickie
  • -
  • GettingQuickie
  • -
  • GettinRaped
  • -
  • JoinInBed
  • -
  • GettinLoved
  • -
  • GettinLicked
  • -
  • GettinSucked
  • -
  • WhoreIsServingVisitors
  • -
  • JoinInBedAnimation
  • -
  • GettinLovedAnimation
  • - - -
  • - /Defs/FacialAnimation.FaceAnimationDef[defName="WaitCombat" or defName="Wait_Combat_Rare"]/targetJobs - Always - -
  • RapeComfortPawn
  • -
  • RandomRape
  • -
  • RapeEnemy
  • - - -
  • - /Defs/FacialAnimation.FaceAnimationDef[defName="StandAndBeSociallyActive"]/targetJobs - Always - -
  • WhoreInvitingVisitors
  • - - -
  • - /Defs/FacialAnimation.FaceAnimationDef[defName="Wear" or defName="Wear2" or defName="Wear3"]/targetJobs - Always - -
  • CleanSelf
  • -
  • StruggleInBondageGear
  • - - -
  • - -
  • Rimworld-Animations
  • - - - Always - -
  • - /Defs/FacialAnimation.FaceAnimationDef[defName="Lovin" or defName="Lovin2"]/animationFrames/li[1]/headOffset - Always -
  • -
  • - /Defs/FacialAnimation.FaceAnimationDef[defName="Lovin"]/animationFrames/li[2]/headOffset - Always -
  • -
  • - /Defs/FacialAnimation.FaceAnimationDef[defName="Lovin"]/animationFrames/li[3]/headOffset - Always -
  • -
    -
    - -
    -
    -
    -
    - - \ No newline at end of file diff --git a/1.3/Patches/CompatibilityPatch_HCSK.xml b/1.3/Patches/CompatibilityPatch_HCSK.xml deleted file mode 100644 index ead8783..0000000 --- a/1.3/Patches/CompatibilityPatch_HCSK.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - -
  • Core SK
  • -
    - - Always - -
  • - /Defs/ThingDef/comps - Always - - /Defs/ThingDef - - - - -
  • - -
  • - /Defs/ThingDef[@Name="SK_BasePawn"]/comps - -
  • - -
  • - -
  • - /Defs/ThingDef[@Name="BaseAnimalPawn"]/comps - -
  • - -
  • -
    -
    -
    - -
    \ No newline at end of file diff --git a/1.3/Patches/RacePatches/Epona race Renaissance.xml b/1.3/Patches/RacePatches/Epona race Renaissance.xml deleted file mode 100644 index f39b509..0000000 --- a/1.3/Patches/RacePatches/Epona race Renaissance.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - -
  • Epona race Renaissance
  • -
    - - -
  • - /Defs/AlienRace.ThingDef_AlienRace[defName = "Alien_Epona"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[hediffGraphics/Epona_OHPG_female="Things/Pawn/Addons/Breasts/Breasts"]/drawnInBed - - false - -
  • -
    -
    -
    - -
    diff --git a/1.3/Patches/RacePatches/Nyaron.xml b/1.3/Patches/RacePatches/Nyaron.xml deleted file mode 100644 index 0a7a08e..0000000 --- a/1.3/Patches/RacePatches/Nyaron.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - -
  • Nyaron race
  • -
    - - -
  • - /Defs/AlienRace.ThingDef_AlienRace[defName = "Alien_Nyaron"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart="tail"] - - false - -
  • -
    -
    -
    - -
    diff --git a/1.3/Sounds/Sex/Clap_1.wav b/1.3/Sounds/Sex/Clap_1.wav deleted file mode 100644 index bccd0f2..0000000 Binary files a/1.3/Sounds/Sex/Clap_1.wav and /dev/null differ diff --git a/1.3/Sounds/Sex/Clap_2.wav b/1.3/Sounds/Sex/Clap_2.wav deleted file mode 100644 index a382f59..0000000 Binary files a/1.3/Sounds/Sex/Clap_2.wav and /dev/null differ diff --git a/1.3/Sounds/Sex/Clap_3.wav b/1.3/Sounds/Sex/Clap_3.wav deleted file mode 100644 index 65cf39b..0000000 Binary files a/1.3/Sounds/Sex/Clap_3.wav and /dev/null differ diff --git a/1.3/Sounds/Sex/Clap_4.wav b/1.3/Sounds/Sex/Clap_4.wav deleted file mode 100644 index 3ae1b3e..0000000 Binary files a/1.3/Sounds/Sex/Clap_4.wav and /dev/null differ diff --git a/1.3/Sounds/Sex/Clap_5.wav b/1.3/Sounds/Sex/Clap_5.wav deleted file mode 100644 index 65144e7..0000000 Binary files a/1.3/Sounds/Sex/Clap_5.wav and /dev/null differ diff --git a/1.3/Sounds/Sex/Clap_6.wav b/1.3/Sounds/Sex/Clap_6.wav deleted file mode 100644 index 0026325..0000000 Binary files a/1.3/Sounds/Sex/Clap_6.wav and /dev/null differ diff --git a/1.3/Sounds/Sex/Clap_7.wav b/1.3/Sounds/Sex/Clap_7.wav deleted file mode 100644 index 6d7de2a..0000000 Binary files a/1.3/Sounds/Sex/Clap_7.wav and /dev/null differ diff --git a/1.3/Sounds/Sex/Clap_8.wav b/1.3/Sounds/Sex/Clap_8.wav deleted file mode 100644 index 1af5710..0000000 Binary files a/1.3/Sounds/Sex/Clap_8.wav and /dev/null differ diff --git a/1.3/Sounds/Sex/Slime/Slimy1.wav b/1.3/Sounds/Sex/Slime/Slimy1.wav deleted file mode 100644 index 3cfbd74..0000000 Binary files a/1.3/Sounds/Sex/Slime/Slimy1.wav and /dev/null differ diff --git a/1.3/Sounds/Sex/Slime/Slimy2.wav b/1.3/Sounds/Sex/Slime/Slimy2.wav deleted file mode 100644 index 36a9197..0000000 Binary files a/1.3/Sounds/Sex/Slime/Slimy2.wav and /dev/null differ diff --git a/1.3/Sounds/Sex/Slime/Slimy3.wav b/1.3/Sounds/Sex/Slime/Slimy3.wav deleted file mode 100644 index 40aff1e..0000000 Binary files a/1.3/Sounds/Sex/Slime/Slimy3.wav and /dev/null differ diff --git a/1.3/Sounds/Sex/Slime/Slimy4.wav b/1.3/Sounds/Sex/Slime/Slimy4.wav deleted file mode 100644 index 0b6404e..0000000 Binary files a/1.3/Sounds/Sex/Slime/Slimy4.wav and /dev/null differ diff --git a/1.3/Sounds/Sex/Slime/Slimy5.wav b/1.3/Sounds/Sex/Slime/Slimy5.wav deleted file mode 100644 index ea310db..0000000 Binary files a/1.3/Sounds/Sex/Slime/Slimy5.wav and /dev/null differ diff --git a/1.3/Sounds/Sex/Suck/Suck_1.wav b/1.3/Sounds/Sex/Suck/Suck_1.wav deleted file mode 100644 index 4f1eafd..0000000 Binary files a/1.3/Sounds/Sex/Suck/Suck_1.wav and /dev/null differ diff --git a/1.3/Sounds/Sex/Suck/Suck_10.wav b/1.3/Sounds/Sex/Suck/Suck_10.wav deleted file mode 100644 index 284cda3..0000000 Binary files a/1.3/Sounds/Sex/Suck/Suck_10.wav and /dev/null differ diff --git a/1.3/Sounds/Sex/Suck/Suck_3.wav b/1.3/Sounds/Sex/Suck/Suck_3.wav deleted file mode 100644 index 95e7348..0000000 Binary files a/1.3/Sounds/Sex/Suck/Suck_3.wav and /dev/null differ diff --git a/1.3/Sounds/Sex/Suck/Suck_4.wav b/1.3/Sounds/Sex/Suck/Suck_4.wav deleted file mode 100644 index 753a023..0000000 Binary files a/1.3/Sounds/Sex/Suck/Suck_4.wav and /dev/null differ diff --git a/1.3/Sounds/Sex/Suck/Suck_5.wav b/1.3/Sounds/Sex/Suck/Suck_5.wav deleted file mode 100644 index 8ecda9c..0000000 Binary files a/1.3/Sounds/Sex/Suck/Suck_5.wav and /dev/null differ diff --git a/1.3/Sounds/Sex/Suck/Suck_6.wav b/1.3/Sounds/Sex/Suck/Suck_6.wav deleted file mode 100644 index 08567d6..0000000 Binary files a/1.3/Sounds/Sex/Suck/Suck_6.wav and /dev/null differ diff --git a/1.3/Sounds/Sex/Suck/Suck_7.wav b/1.3/Sounds/Sex/Suck/Suck_7.wav deleted file mode 100644 index a63b0e4..0000000 Binary files a/1.3/Sounds/Sex/Suck/Suck_7.wav and /dev/null differ diff --git a/1.3/Sounds/Sex/Suck/Suck_8.wav b/1.3/Sounds/Sex/Suck/Suck_8.wav deleted file mode 100644 index 320da09..0000000 Binary files a/1.3/Sounds/Sex/Suck/Suck_8.wav and /dev/null differ diff --git a/1.3/Sounds/Sex/Suck/Suck_9.wav b/1.3/Sounds/Sex/Suck/Suck_9.wav deleted file mode 100644 index 7ab538a..0000000 Binary files a/1.3/Sounds/Sex/Suck/Suck_9.wav and /dev/null differ diff --git a/1.3/Sounds/Sex/Suck/Swallow_1.wav b/1.3/Sounds/Sex/Suck/Swallow_1.wav deleted file mode 100644 index f3276cc..0000000 Binary files a/1.3/Sounds/Sex/Suck/Swallow_1.wav and /dev/null differ diff --git a/1.3/Sounds/Sex/Suck/Swallow_2.wav b/1.3/Sounds/Sex/Suck/Swallow_2.wav deleted file mode 100644 index 09a7a00..0000000 Binary files a/1.3/Sounds/Sex/Suck/Swallow_2.wav and /dev/null differ diff --git a/1.3/Sounds/Sex/Suck/Swallow_3.wav b/1.3/Sounds/Sex/Suck/Swallow_3.wav deleted file mode 100644 index 2817b29..0000000 Binary files a/1.3/Sounds/Sex/Suck/Swallow_3.wav and /dev/null differ diff --git a/1.3/Sounds/Sex/Suck/suck_2.wav b/1.3/Sounds/Sex/Suck/suck_2.wav deleted file mode 100644 index a8305c1..0000000 Binary files a/1.3/Sounds/Sex/Suck/suck_2.wav and /dev/null differ diff --git a/1.3/Sounds/Sex/cum.wav b/1.3/Sounds/Sex/cum.wav deleted file mode 100644 index ef98437..0000000 Binary files a/1.3/Sounds/Sex/cum.wav and /dev/null differ diff --git a/1.3/Sounds/Sex/kucyu04.wav b/1.3/Sounds/Sex/kucyu04.wav deleted file mode 100644 index 3ae1ce8..0000000 Binary files a/1.3/Sounds/Sex/kucyu04.wav and /dev/null differ diff --git a/1.3/Source/Actors/BodyTypeOffset.cs b/1.3/Source/Actors/BodyTypeOffset.cs deleted file mode 100644 index 82a23a3..0000000 --- a/1.3/Source/Actors/BodyTypeOffset.cs +++ /dev/null @@ -1,18 +0,0 @@ -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 Vector2? Male; - public Vector2? Female; - public Vector2? Thin; - public Vector2? Hulk; - public Vector2? Fat; - - } -} diff --git a/1.3/Source/Animations/AnimationStage.cs b/1.3/Source/Animations/AnimationStage.cs deleted file mode 100644 index 7a1304e..0000000 --- a/1.3/Source/Animations/AnimationStage.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Rimworld_Animations { - public class AnimationStage - { - public string stageName; - public int stageIndex; - public int playTimeTicks = 0; - public int playTimeTicksQuick = -1; - public bool isLooping; - public List animationClips; - public List tags = new List(); - - public void initialize() { - foreach (BaseAnimationClip clip in animationClips) { - clip.buildSimpleCurves(); - //select playTimeTicks as longest playtime of all the animations - if(clip.duration > playTimeTicks) { - playTimeTicks = clip.duration; - } - } - } - } -} diff --git a/1.3/Source/Animations/Clips/BaseAnimationClip.cs b/1.3/Source/Animations/Clips/BaseAnimationClip.cs deleted file mode 100644 index aa35b31..0000000 --- a/1.3/Source/Animations/Clips/BaseAnimationClip.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using RimWorld; -using Verse; - -namespace Rimworld_Animations { - public abstract class BaseAnimationClip - { - public Dictionary SoundEffects = new Dictionary(); - public List types; //types of participants - public int duration; - public abstract void buildSimpleCurves(); - public string soundDef = null; //for playing sounds - public int actor; - public List tags = new List(); - } -} diff --git a/1.3/Source/Animations/Clips/PawnAnimationClip.cs b/1.3/Source/Animations/Clips/PawnAnimationClip.cs deleted file mode 100644 index e9d2489..0000000 --- a/1.3/Source/Animations/Clips/PawnAnimationClip.cs +++ /dev/null @@ -1,115 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using RimWorld; -using Verse; - -namespace Rimworld_Animations { - public class PawnAnimationClip : BaseAnimationClip { - - public List keyframes; - public AltitudeLayer layer = AltitudeLayer.Pawn; - - public Dictionary quiver = new Dictionary(); - public SimpleCurve GenitalAngle = new SimpleCurve(); - public SimpleCurve BodyAngle = new SimpleCurve(); - public SimpleCurve HeadAngle = new SimpleCurve(); - public SimpleCurve HeadBob = new SimpleCurve(); - public SimpleCurve BodyOffsetX = new SimpleCurve(); - public SimpleCurve BodyOffsetZ = new SimpleCurve(); - public SimpleCurve HeadFacing = new SimpleCurve(); - public SimpleCurve BodyFacing = new SimpleCurve(); - - - public override void buildSimpleCurves() { - - - int duration = 0; - //getting the length of the whole clip - foreach(PawnKeyframe frame in keyframes) { - duration += frame.tickDuration; - } - - //guarantees loops don't get cut off mid-anim - this.duration = duration; - - int keyframePosition = 0; - foreach (PawnKeyframe frame in keyframes) { - - if (frame.atTick.HasValue) { - if (frame.bodyAngle.HasValue) - BodyAngle.Add((float)frame.atTick / (float)duration, frame.bodyAngle.Value, true); - - if (frame.headAngle.HasValue) - HeadAngle.Add((float)frame.atTick / (float)duration, frame.headAngle.Value, true); - - if (frame.bodyOffsetX.HasValue) - BodyOffsetX.Add((float)frame.atTick / (float)duration, frame.bodyOffsetX.Value, true); - - if (frame.bodyOffsetZ.HasValue) - BodyOffsetZ.Add((float)frame.atTick / (float)duration, frame.bodyOffsetZ.Value, true); - - if (frame.headFacing.HasValue) - HeadFacing.Add((float)frame.atTick / (float)duration, frame.headFacing.Value, true); - - if (frame.bodyFacing.HasValue) - BodyFacing.Add((float)frame.atTick / (float)duration, frame.bodyFacing.Value, true); - - if (frame.headBob.HasValue) - HeadBob.Add((float)frame.atTick / (float)duration, frame.headBob.Value, true); - - if (frame.genitalAngle.HasValue) - GenitalAngle.Add((float)frame.atTick / (float)duration, frame.genitalAngle.Value, true); - - if (frame.soundEffect != null) { - SoundEffects.Add((int)frame.atTick, frame.soundEffect); - } - - - } - else { - if (frame.bodyAngle.HasValue) - BodyAngle.Add((float)keyframePosition / (float)duration, frame.bodyAngle.Value, true); - - if (frame.headAngle.HasValue) - HeadAngle.Add((float)keyframePosition / (float)duration, frame.headAngle.Value, true); - - if (frame.bodyOffsetX.HasValue) - BodyOffsetX.Add((float)keyframePosition / (float)duration, frame.bodyOffsetX.Value, true); - - if (frame.bodyOffsetZ.HasValue) - BodyOffsetZ.Add((float)keyframePosition / (float)duration, frame.bodyOffsetZ.Value, true); - - if (frame.headFacing.HasValue) - HeadFacing.Add((float)keyframePosition / (float)duration, frame.headFacing.Value, true); - - if (frame.bodyFacing.HasValue) - BodyFacing.Add((float)keyframePosition / (float)duration, frame.bodyFacing.Value, true); - - if (frame.headBob.HasValue) - HeadBob.Add((float)keyframePosition / (float)duration, frame.headBob.Value, true); - - if (frame.genitalAngle.HasValue) - GenitalAngle.Add((float)keyframePosition / (float)duration, frame.genitalAngle.Value, true); - - if (frame.soundEffect != null) { - SoundEffects.Add(keyframePosition, frame.soundEffect); - } - - if(frame.tickDuration != 1 && frame.quiver.HasValue) { - - quiver.Add(keyframePosition, true); - quiver.Add(keyframePosition + frame.tickDuration - 1, false); - } - keyframePosition += frame.tickDuration; - - } - - } - - } - - } -} diff --git a/1.3/Source/Animations/Clips/ThingAnimationClip.cs b/1.3/Source/Animations/Clips/ThingAnimationClip.cs deleted file mode 100644 index 26f4d4c..0000000 --- a/1.3/Source/Animations/Clips/ThingAnimationClip.cs +++ /dev/null @@ -1,74 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Verse; -using RimWorld; - -namespace Rimworld_Animations { - public class ThingAnimationClip : BaseAnimationClip - { - public List keyframes; - - public SimpleCurve PositionX = new SimpleCurve(); - public SimpleCurve PositionZ = new SimpleCurve(); - public SimpleCurve Rotation = new SimpleCurve(); - - - public override void buildSimpleCurves() { - int duration = 0; - //getting the length of the whole clip - foreach (ThingKeyframe frame in keyframes) - { - duration += frame.tickDuration; - } - - //guarantees loops don't get cut off mid-anim - this.duration = duration; - - int keyframePosition = 0; - foreach (ThingKeyframe frame in keyframes) - { - - if (frame.atTick.HasValue) - { - if (frame.positionX.HasValue) - PositionX.Add((float)frame.atTick / (float)duration, frame.positionX.Value, true); - - if (frame.positionZ.HasValue) - PositionZ.Add((float)frame.atTick / (float)duration, frame.positionZ.Value, true); - - if (frame.rotation.HasValue) - Rotation.Add((float)frame.atTick / (float)duration, frame.rotation.Value, true); - - if (frame.soundEffect != null) - { - SoundEffects.Add((int)frame.atTick, frame.soundEffect); - } - - - } - else - { - if (frame.positionX.HasValue) - PositionX.Add((float)keyframePosition / (float)duration, frame.positionX.Value, true); - - if (frame.positionZ.HasValue) - PositionZ.Add((float)keyframePosition / (float)duration, frame.positionZ.Value, true); - - if (frame.rotation.HasValue) - Rotation.Add((float)keyframePosition / (float)duration, frame.rotation.Value, true); - - if (frame.soundEffect != null) - { - SoundEffects.Add(keyframePosition, frame.soundEffect); - } - keyframePosition += frame.tickDuration; - - } - - } - } - } -} diff --git a/1.3/Source/Animations/Keyframes/Keyframe.cs b/1.3/Source/Animations/Keyframes/Keyframe.cs deleted file mode 100644 index 8cd859d..0000000 --- a/1.3/Source/Animations/Keyframes/Keyframe.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Rimworld_Animations { - public abstract class Keyframe - { - public int tickDuration = 1; - public float? atTick; - public string soundEffect; - public List tags = new List(); - } -} diff --git a/1.3/Source/Animations/Keyframes/PawnKeyframe.cs b/1.3/Source/Animations/Keyframes/PawnKeyframe.cs deleted file mode 100644 index e710981..0000000 --- a/1.3/Source/Animations/Keyframes/PawnKeyframe.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Verse; - -namespace Rimworld_Animations { - public class PawnKeyframe : Keyframe - { - public float? bodyAngle; - public float? headAngle; - - public float? genitalAngle; - - public float? bodyOffsetZ; - public float? bodyOffsetX; - - public float? headBob; - //todo: add headOffsets l/r? - - public int? bodyFacing; - public int? headFacing; - - public bool? quiver; - - } -} diff --git a/1.3/Source/Animations/Keyframes/ThingKeyframe.cs b/1.3/Source/Animations/Keyframes/ThingKeyframe.cs deleted file mode 100644 index 6604f5e..0000000 --- a/1.3/Source/Animations/Keyframes/ThingKeyframe.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Rimworld_Animations { - public class ThingKeyframe : Keyframe - { - - public float? positionX; - public float? positionZ; - public float? rotation; - - - - } -} diff --git a/1.3/Source/Comps/CompBodyAnimator.cs b/1.3/Source/Comps/CompBodyAnimator.cs deleted file mode 100644 index 7910f7d..0000000 --- a/1.3/Source/Comps/CompBodyAnimator.cs +++ /dev/null @@ -1,527 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using System.Text; -using System.Threading.Tasks; -using RimWorld; -using rjw; -using UnityEngine; -using Verse; -using Verse.Sound; - -namespace Rimworld_Animations { - public class CompBodyAnimator : ThingComp - { - public Pawn pawn => base.parent as Pawn; - public PawnGraphicSet Graphics; - - //public CompProperties_BodyAnimator Props => (CompProperties_BodyAnimator)(object)base.props; - - public bool isAnimating { - get { - return Animating; - } - set { - Animating = value; - - if (value == true) { - SexUtility.DrawNude(pawn); - } else { - pawn.Drawer.renderer.graphics.ResolveAllGraphics(); - actorsInCurrentAnimation = null; - } - - PortraitsCache.SetDirty(pawn); - } - } - private bool Animating = false; - private bool mirror = false, quiver = false, shiver = false; - private int actor; - - private int lastDrawFrame = -1; - - private int animTicks = 0, stageTicks = 0, clipTicks = 0; - private int curStage = 0; - private float clipPercent = 0; - - public Vector3 anchor = Vector3.zero, deltaPos = Vector3.zero, headBob = Vector3.zero; - public float bodyAngle = 0, headAngle = 0, genitalAngle = 0; - public Rot4 headFacing = Rot4.North, bodyFacing = Rot4.North; - - public List actorsInCurrentAnimation; - - public bool controlGenitalAngle = false; - public bool fastAnimForQuickie = false; - - private AnimationDef anim; - private AnimationStage stage { - get - { - return anim.animationStages[curStage]; - } - - } - private PawnAnimationClip clip => (PawnAnimationClip)stage.animationClips[actor]; - - public bool Mirror { - get { - return mirror; - } - } - - public void setAnchor(IntVec3 pos) - { - anchor = pos.ToVector3Shifted(); - } - public void setAnchor(Thing thing) { - - //center on bed - if(thing is Building_Bed) { - anchor = thing.Position.ToVector3(); - if (((Building_Bed)thing).SleepingSlotsCount == 2) { - if (thing.Rotation.AsInt == 0) { - anchor.x += 1; - anchor.z += 1; - } - else if (thing.Rotation.AsInt == 1) { - anchor.x += 1; - } - else if(thing.Rotation.AsInt == 3) { - anchor.z += 1; - } - - } - else { - if(thing.Rotation.AsInt == 0) { - anchor.x += 0.5f; - anchor.z += 1f; - } - else if(thing.Rotation.AsInt == 1) { - anchor.x += 1f; - anchor.z += 0.5f; - } - else if(thing.Rotation.AsInt == 2) { - anchor.x += 0.5f; - } else { - anchor.z += 0.5f; - } - } - } - else { - anchor = thing.Position.ToVector3Shifted(); - } - } - public void StartAnimation(AnimationDef anim, List actors, int actor, bool mirror = false, bool shiver = false, bool fastAnimForQuickie = false) { - - actorsInCurrentAnimation = actors; - - if (anim.actors.Count <= actor) - { - return; - } - AlienRaceOffset raceOffset = anim?.actors[actor]?.raceOffsets?.Find(x => x.defName == pawn.def.defName); - - if (raceOffset != null) { - anchor.x += mirror ? raceOffset.offset.x * -1f : raceOffset.offset.x; - anchor.z += raceOffset.offset.y; - } - - //change the offset based on pawn body type - if(pawn?.story?.bodyType != null) { - if (pawn.story.bodyType == BodyTypeDefOf.Fat && anim?.actors[actor]?.bodyTypeOffset?.Fat != null) { - anchor.x += anim.actors[actor].bodyTypeOffset.Fat.Value.x * (mirror ? -1f : 1f); - anchor.z += anim.actors[actor].bodyTypeOffset.Fat.Value.y; - } - else if (pawn.story.bodyType == BodyTypeDefOf.Female && anim?.actors[actor]?.bodyTypeOffset?.Female != null) { - anchor.x += anim.actors[actor].bodyTypeOffset.Female.Value.x * (mirror ? -1f : 1f); - anchor.z += anim.actors[actor].bodyTypeOffset.Female.Value.y; - } - else if (pawn.story.bodyType == BodyTypeDefOf.Male && anim?.actors[actor]?.bodyTypeOffset?.Male != null) { - anchor.x += anim.actors[actor].bodyTypeOffset.Male.Value.x * (mirror ? -1f : 1f); - anchor.z += anim.actors[actor].bodyTypeOffset.Male.Value.y; - } - else if (pawn.story.bodyType == BodyTypeDefOf.Thin && anim?.actors[actor]?.bodyTypeOffset?.Thin != null) { - anchor.x += anim.actors[actor].bodyTypeOffset.Thin.Value.x * (mirror ? -1f : 1f); - anchor.z += anim.actors[actor].bodyTypeOffset.Thin.Value.y; - } - else if (pawn.story.bodyType == BodyTypeDefOf.Hulk && anim?.actors[actor]?.bodyTypeOffset?.Hulk != null) { - anchor.x += anim.actors[actor].bodyTypeOffset.Hulk.Value.x * (mirror ? -1f : 1f); - anchor.z += anim.actors[actor].bodyTypeOffset.Hulk.Value.y; - } - } - - pawn.jobs.posture = PawnPosture.Standing; - - this.actor = actor; - this.anim = anim; - this.mirror = mirror; - this.fastAnimForQuickie = fastAnimForQuickie; - - if (fastAnimForQuickie && anim.animationStages.Any(x => x.playTimeTicksQuick >= 0) == false) - { - curStage = 1; - animTicks = anim.animationStages[0].playTimeTicks; - } else - { - curStage = 0; - animTicks = 0; - } - - stageTicks = 0; - clipTicks = 0; - - quiver = false; - this.shiver = shiver && AnimationSettings.rapeShiver; - - controlGenitalAngle = anim.actors[actor].controlGenitalAngle; - - isAnimating = true; - //tick once for initialization - tickAnim(); - - } - - public override void CompTick() { - - base.CompTick(); - - if(isAnimating) { - - GlobalTextureAtlasManager.TryMarkPawnFrameSetDirty(pawn); - - if (pawn.Dead || pawn?.jobs?.curDriver == null || (pawn?.jobs?.curDriver != null && !(pawn?.jobs?.curDriver is rjw.JobDriver_Sex))) { - isAnimating = false; - } - else { - tickAnim(); - } - } - } - public void animatePawnBody(ref Vector3 rootLoc, ref float angle, ref Rot4 bodyFacing) { - - if(!isAnimating) { - return; - } - rootLoc = anchor + deltaPos; - angle = bodyAngle; - bodyFacing = this.bodyFacing; - - } - - public Rot4 AnimateHeadFacing() - { - return this.headFacing; - } - - - public void tickGraphics(PawnGraphicSet graphics) { - this.Graphics = graphics; - } - - public void tickAnim() { - - - - if (!isAnimating) return; - - if (anim == null) { - isAnimating = false; - return; - } - - animTicks++; - - if (animTicks < anim.animationTimeTicks) { - tickStage(); - } else { - - if(LoopNeverending()) - { - ResetOnLoop(); - } else - { - isAnimating = false; - } - - - } - - - - } - - public void tickStage() - { - - if(stage == null) - { - isAnimating = false; - return; - } - - stageTicks++; - - if(stageTicks >= stage.playTimeTicks || (fastAnimForQuickie && stage.playTimeTicksQuick >= 0 && stageTicks >= stage.playTimeTicksQuick)) { - - curStage++; - - stageTicks = 0; - clipTicks = 0; - clipPercent = 0; - } - - if(curStage >= anim.animationStages.Count) { - if (LoopNeverending()) - { - ResetOnLoop(); - } - else - { - isAnimating = false; - pawn.jobs.curDriver.ReadyForNextToil(); - } - - } else { - tickClip(); - } - - - - } - - public void tickClip() { - - clipTicks++; - - //play sound effect - if(rjw.RJWSettings.sounds_enabled && clip.SoundEffects.ContainsKey(clipTicks) && AnimationSettings.soundOverride) { - - - SoundInfo sound = new TargetInfo(pawn.Position, pawn.Map); - string soundEffectName = clip.SoundEffects[clipTicks]; - - - if ((pawn.jobs.curDriver as JobDriver_Sex).isAnimalOnAnimal) - { - sound.volumeFactor *= RJWSettings.sounds_animal_on_animal_volume; - } - - if(soundEffectName.StartsWith("Voiceline_")) - { - sound.volumeFactor *= RJWSettings.sounds_voice_volume; - } - - if (clip.SoundEffects[clipTicks] == "Cum") { - - sound.volumeFactor *= RJWSettings.sounds_cum_volume; - //considerApplyingSemen(); - - } else - { - sound.volumeFactor *= RJWSettings.sounds_sex_volume; - } - - SoundDef.Named(soundEffectName).PlayOneShot(sound); - - } - if(AnimationSettings.orgasmQuiver && clip.quiver.ContainsKey(clipTicks)) { - quiver = clip.quiver[clipTicks]; - } - - //loop animation if possible - if (clipPercent >= 1 && stage.isLooping) { - clipTicks = 1;//warning: don't set to zero or else calculations go wrong - } - clipPercent = (float)clipTicks / (float)clip.duration; - - calculateDrawValues(); - } - - public void considerApplyingSemen() - { - if(AnimationSettings.applySemenOnAnimationOrgasm && (pawn?.jobs?.curDriver is JobDriver_Sex)) - { - - if (anim.sexTypes.Contains((pawn.jobs.curDriver as JobDriver_Sex).Sexprops.sexType)) - { - //SemenHelper.calculateAndApplySemen((pawn.jobs.curDriver as JobDriver_Sex).Sexprops); - } - } - } - - public void calculateDrawValues() { - - /*if(Find.TickManager.TickRateMultiplier > 1 && (lastDrawFrame + 1 >= RealTime.frameCount || RealTime.deltaTime < 0.05f)) { - return; - }*/ - - deltaPos = new Vector3(clip.BodyOffsetX.Evaluate(clipPercent) * (mirror ? -1 : 1), clip.layer.AltitudeFor(), clip.BodyOffsetZ.Evaluate(clipPercent)); - - string bodyTypeDef = (pawn.story?.bodyType != null) ? pawn.story.bodyType.ToString() : ""; - - if (AnimationSettings.offsets != null && AnimationSettings.offsets.ContainsKey(CurrentAnimation.defName + pawn.def.defName + bodyTypeDef + ActorIndex)) { - deltaPos.x += AnimationSettings.offsets[CurrentAnimation.defName + pawn.def.defName + bodyTypeDef + ActorIndex].x * (mirror ? -1 : 1); - deltaPos.z += AnimationSettings.offsets[CurrentAnimation.defName + pawn.def.defName + bodyTypeDef + ActorIndex].y; - } - - - bodyAngle = (clip.BodyAngle.Evaluate(clipPercent) + (quiver || shiver ? ((Rand.Value * AnimationSettings.shiverIntensity) - (AnimationSettings.shiverIntensity / 2f)) : 0f)) * (mirror ? -1 : 1); - headAngle = clip.HeadAngle.Evaluate(clipPercent) * (mirror ? -1 : 1); - - if (controlGenitalAngle) { - genitalAngle = clip.GenitalAngle.Evaluate(clipPercent) * (mirror ? -1 : 1); - } - - if (AnimationSettings.rotation != null && AnimationSettings.rotation.ContainsKey(CurrentAnimation.defName + pawn.def.defName + bodyTypeDef + ActorIndex)) { - float offsetRotation = AnimationSettings.rotation[CurrentAnimation.defName + pawn.def.defName + bodyTypeDef + ActorIndex] * (Mirror ? -1 : 1); - genitalAngle += offsetRotation; - bodyAngle += offsetRotation; - headAngle += offsetRotation; - } - - - //don't go past 360 or less than 0 - - if (bodyAngle < 0) bodyAngle = 360 - ((-1f*bodyAngle) % 360); - if (bodyAngle > 360) bodyAngle %= 360; - - - if (headAngle < 0) headAngle = 360 - ((-1f * headAngle) % 360); - if (headAngle > 360) headAngle %= 360; - - if (genitalAngle < 0) genitalAngle = 360 - ((-1f * genitalAngle) % 360); - if (genitalAngle > 360) genitalAngle %= 360; - - - bodyFacing = mirror ? new Rot4((int)clip.BodyFacing.Evaluate(clipPercent)).Opposite : new Rot4((int)clip.BodyFacing.Evaluate(clipPercent)); - - bodyFacing = new Rot4((int)clip.BodyFacing.Evaluate(clipPercent)); - if(bodyFacing.IsHorizontal && mirror) { - bodyFacing = bodyFacing.Opposite; - } - - headFacing = new Rot4((int)clip.HeadFacing.Evaluate(clipPercent)); - if(headFacing.IsHorizontal && mirror) { - headFacing = headFacing.Opposite; - } - headBob = new Vector3(0, 0, clip.HeadBob.Evaluate(clipPercent)); - - lastDrawFrame = RealTime.frameCount; - - } - - public Vector3 getPawnHeadPosition() { - - Vector3 headPos = anchor + deltaPos + Quaternion.AngleAxis(bodyAngle, Vector3.up) * (pawn.Drawer.renderer.BaseHeadOffsetAt(headFacing) + headBob); - - return headPos; - - } - - public Vector3 getPawnHeadOffset() - { - return Quaternion.AngleAxis(bodyAngle, Vector3.up) * (pawn.Drawer.renderer.BaseHeadOffsetAt(headFacing) + headBob); - - } - - public AnimationDef CurrentAnimation { - get { - return anim; - } - } - - public int ActorIndex { - get { - return actor; - } - } - - public override void PostExposeData() { - base.PostExposeData(); - - Scribe_Defs.Look(ref anim, "RJWAnimations-Anim"); - - Scribe_Values.Look(ref animTicks, "RJWAnimations-animTicks", 1); - Scribe_Values.Look(ref stageTicks, "RJWAnimations-stageTicks", 1); - Scribe_Values.Look(ref clipTicks, "RJWAnimations-clipTicks", 1); - Scribe_Values.Look(ref clipPercent, "RJWAnimations-clipPercent", 1); - Scribe_Values.Look(ref mirror, "RJWAnimations-mirror"); - - Scribe_Values.Look(ref curStage, "RJWAnimations-curStage", 0); - Scribe_Values.Look(ref actor, "RJWAnimations-actor"); - - Scribe_Values.Look(ref anchor, "RJWAnimations-anchor"); - Scribe_Values.Look(ref deltaPos, "RJWAnimations-deltaPos"); - Scribe_Values.Look(ref headBob, "RJWAnimations-headBob"); - Scribe_Values.Look(ref bodyAngle, "RJWAnimations-bodyAngle"); - Scribe_Values.Look(ref headAngle, "RJWAnimations-headAngle"); - - Scribe_Values.Look(ref genitalAngle, "RJWAnimations-GenitalAngle"); - Scribe_Values.Look(ref controlGenitalAngle, "RJWAnimations-controlGenitalAngle"); - - Scribe_Values.Look(ref headFacing, "RJWAnimations-headFacing"); - Scribe_Values.Look(ref headFacing, "RJWAnimations-bodyFacing"); - - Scribe_Values.Look(ref quiver, "RJWAnimations-orgasmQuiver"); - } - - public void shiftActorPositionAndRestartAnimation() { - actor = (actor == anim.actors.Count - 1 ? 0 : actor + 1); - - if (pawn?.story?.bodyType != null) { - if (pawn.story.bodyType == BodyTypeDefOf.Fat && anim?.actors[actor]?.bodyTypeOffset?.Fat != null) { - anchor.x += anim.actors[actor].bodyTypeOffset.Fat.Value.x * (mirror ? -1f : 1f); - anchor.z += anim.actors[actor].bodyTypeOffset.Fat.Value.y; - } - else if (pawn.story.bodyType == BodyTypeDefOf.Female && anim?.actors[actor]?.bodyTypeOffset?.Female != null) { - anchor.x += anim.actors[actor].bodyTypeOffset.Female.Value.x * (mirror ? -1f : 1f); - anchor.z += anim.actors[actor].bodyTypeOffset.Female.Value.y; - } - else if (pawn.story.bodyType == BodyTypeDefOf.Male && anim?.actors[actor]?.bodyTypeOffset?.Male != null) { - anchor.x += anim.actors[actor].bodyTypeOffset.Male.Value.x * (mirror ? -1f : 1f); - anchor.z += anim.actors[actor].bodyTypeOffset.Male.Value.y; - } - else if (pawn.story.bodyType == BodyTypeDefOf.Thin && anim?.actors[actor]?.bodyTypeOffset?.Thin != null) { - anchor.x += anim.actors[actor].bodyTypeOffset.Thin.Value.x * (mirror ? -1f : 1f); - anchor.z += anim.actors[actor].bodyTypeOffset.Thin.Value.y; - } - else if (pawn.story.bodyType == BodyTypeDefOf.Hulk && anim?.actors[actor]?.bodyTypeOffset?.Hulk != null) { - anchor.x += anim.actors[actor].bodyTypeOffset.Hulk.Value.x * (mirror ? -1f : 1f); - anchor.z += anim.actors[actor].bodyTypeOffset.Hulk.Value.y; - } - } - - curStage = 0; - animTicks = 0; - stageTicks = 0; - clipTicks = 0; - - controlGenitalAngle = anim.actors[actor].controlGenitalAngle; - - tickAnim(); - } - - public bool LoopNeverending() - { - if(pawn?.jobs?.curDriver != null && - (pawn.jobs.curDriver is JobDriver_Sex) && (pawn.jobs.curDriver as JobDriver_Sex).neverendingsex || - (pawn.jobs.curDriver is JobDriver_SexBaseReciever) && (pawn.jobs.curDriver as JobDriver_Sex).Partner?.jobs?.curDriver != null && ((pawn.jobs.curDriver as JobDriver_Sex).Partner.jobs.curDriver as JobDriver_Sex).neverendingsex) - { - return true; - } - - return false; - } - - public void ResetOnLoop() - { - curStage = 1; - animTicks = 0; - stageTicks = 0; - clipTicks = 0; - - tickAnim(); - } - } -} diff --git a/1.3/Source/Comps/CompThingAnimator.cs b/1.3/Source/Comps/CompThingAnimator.cs deleted file mode 100644 index f5315e4..0000000 --- a/1.3/Source/Comps/CompThingAnimator.cs +++ /dev/null @@ -1,245 +0,0 @@ -using RimWorld; -using rjw; -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 CompThingAnimator : ThingComp - { - Vector3 anchor; - - Pawn pawn; - - public bool isAnimating = false, mirror; - - int animTicks = 0, stageTicks = 0, clipTicks = 0, curStage = 0; - float rotation = 0; - float clipPercent = 0; - - public Vector3 deltaPos; - - AnimationDef anim; - private ThingAnimationClip clip => (ThingAnimationClip)stage.animationClips[1]; - private AnimationStage stage - { - get - { - return anim.animationStages[curStage]; - } - - } - - public void StartAnimation(AnimationDef anim, Pawn pawn, bool mirror = false) - { - isAnimating = true; - - this.anim = anim; - this.pawn = pawn; - this.mirror = mirror; - - animTicks = 0; - stageTicks = 0; - clipTicks = 0; - - curStage = 0; - clipPercent = 0; - - tickAnim(); - - } - - public void setAnchor(IntVec3 position) - { - anchor = position.ToVector3(); - } - - public override void CompTick() - { - base.CompTick(); - - if(isAnimating) - { - if (pawn.Dead || pawn?.jobs?.curDriver == null || (pawn?.jobs?.curDriver != null && !(pawn?.jobs?.curDriver is rjw.JobDriver_Sex))) - { - isAnimating = false; - } - else - { - tickAnim(); - } - } - - - } - - public void tickAnim() - { - if (!isAnimating) return; - animTicks++; - - if (animTicks < anim.animationTimeTicks) - { - tickStage(); - } - else - { - if (LoopNeverending()) - { - ResetOnLoop(); - } - else - { - isAnimating = false; - } - - - } - - } - - public void tickStage() - { - if (stage == null) - { - isAnimating = false; - return; - } - - stageTicks++; - - if (stageTicks >= stage.playTimeTicks) - { - - curStage++; - - stageTicks = 0; - clipTicks = 0; - clipPercent = 0; - } - - if (curStage >= anim.animationStages.Count) - { - if (LoopNeverending()) - { - ResetOnLoop(); - } - else - { - isAnimating = false; - } - - } - else - { - tickClip(); - } - } - - public void tickClip() - { - clipTicks++; - - if (clipPercent >= 1 && stage.isLooping) - { - clipTicks = 1;//warning: don't set to zero or else calculations go wrong - } - clipPercent = (float)clipTicks / (float)clip.duration; - - calculateDrawValues(); - } - - public void setAnchor(Thing thing) - { - - //center on bed - if (thing is Building_Bed) - { - anchor = thing.Position.ToVector3(); - if (((Building_Bed)thing).SleepingSlotsCount == 2) - { - if (thing.Rotation.AsInt == 0) - { - anchor.x += 1; - anchor.z += 1; - } - else if (thing.Rotation.AsInt == 1) - { - anchor.x += 1; - } - else if (thing.Rotation.AsInt == 3) - { - anchor.z += 1; - } - - } - else - { - if (thing.Rotation.AsInt == 0) - { - anchor.x += 0.5f; - anchor.z += 1f; - } - else if (thing.Rotation.AsInt == 1) - { - anchor.x += 1f; - anchor.z += 0.5f; - } - else if (thing.Rotation.AsInt == 2) - { - anchor.x += 0.5f; - } - else - { - anchor.z += 0.5f; - } - } - } - else - { - anchor = thing.Position.ToVector3Shifted(); - } - - anchor -= new Vector3(0.5f, 0, 0.5f); - } - private void calculateDrawValues() - { - - //shift up and right 0.5f to align center - deltaPos = new Vector3((clip.PositionX.Evaluate(clipPercent)) * (mirror ? -1 : 1) + 0.5f, AltitudeLayer.Item.AltitudeFor(), clip.PositionZ.Evaluate(clipPercent) + 0.5f); - //Log.Message("Clip percent: " + clipPercent + " deltaPos: " + deltaPos); - rotation = clip.Rotation.Evaluate(clipPercent) * (mirror ? -1 : 1); - } - - public void AnimateThing(Thing thing) - { - thing.Graphic.Draw(deltaPos + anchor, mirror ? Rot4.West : Rot4.East, thing, rotation); - } - - public bool LoopNeverending() - { - if (pawn?.jobs?.curDriver != null && - (pawn.jobs.curDriver is JobDriver_Sex) && (pawn.jobs.curDriver as JobDriver_Sex).neverendingsex) - { - return true; - } - - return false; - } - - public void ResetOnLoop() - { - curStage = 1; - animTicks = 0; - stageTicks = 0; - clipTicks = 0; - - tickAnim(); - } - - } -} diff --git a/1.3/Source/Defs/AnimationDef.cs b/1.3/Source/Defs/AnimationDef.cs deleted file mode 100644 index 395ff83..0000000 --- a/1.3/Source/Defs/AnimationDef.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using RimWorld; -using Verse; - -namespace Rimworld_Animations { - public class AnimationDef : Def - { - public List animationStages; - public List actors; - public int animationTimeTicks = 0; //do not set manually - public bool sounds = false; - public List sexTypes = null; - public List interactionDefTypes = null; - public List tags = new List(); - - public override void PostLoad() { - base.PostLoad(); - foreach(AnimationStage stage in animationStages) { - stage.initialize(); - animationTimeTicks += stage.playTimeTicks; - } - } - } -} diff --git a/1.3/Source/Extensions/PawnWoundDrawerExtension.cs b/1.3/Source/Extensions/PawnWoundDrawerExtension.cs deleted file mode 100644 index 4901de2..0000000 --- a/1.3/Source/Extensions/PawnWoundDrawerExtension.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System; -using System.Collections.Generic; -using RimWorld; -using UnityEngine; -using Verse; -using Rimworld_Animations; - -namespace Rimworld_Animations -{ - [StaticConstructorOnStartup] - public static class PawnWoundDrawerExtension - { - public static void RenderOverBody(this PawnWoundDrawer pawnWoundDrawer, Vector3 drawLoc, Mesh bodyMesh, Quaternion quat, bool drawNow, BodyTypeDef.WoundLayer layer, Rot4 pawnRot, bool? overApparel = null, Pawn pawn = null, PawnRenderFlags flags = new PawnRenderFlags()) - { - if (pawn == null) - { return; } - - if (!flags.FlagSet(PawnRenderFlags.Portrait) && layer == BodyTypeDef.WoundLayer.Head) - { - CompBodyAnimator pawnAnimator = pawn.TryGetComp(); - if (pawnAnimator != null && pawnAnimator.isAnimating && pawn.Drawer.renderer.graphics.headGraphic != null) - { - pawnRot = pawnAnimator.headFacing; - quat = Quaternion.AngleAxis(angle: pawnAnimator.headAngle, axis: Vector3.up); - float y = drawLoc.y; - drawLoc = pawnAnimator.getPawnHeadPosition() - Quaternion.AngleAxis(pawnAnimator.headAngle, Vector3.up) * pawn.Drawer.renderer.BaseHeadOffsetAt(pawnAnimator.headFacing); - drawLoc.y = y; - } - } - - pawnWoundDrawer.RenderOverBody(drawLoc, bodyMesh, quat, drawNow, layer, pawnRot, overApparel); - } - } -} diff --git a/1.3/Source/MainTabWindows/MainTabWindow_OffsetConfigure.cs b/1.3/Source/MainTabWindows/MainTabWindow_OffsetConfigure.cs deleted file mode 100644 index b7fef1d..0000000 --- a/1.3/Source/MainTabWindows/MainTabWindow_OffsetConfigure.cs +++ /dev/null @@ -1,143 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Verse; -using RimWorld; -using UnityEngine; - -namespace Rimworld_Animations { - class MainTabWindow_OffsetConfigure : MainTabWindow - { - - public override Vector2 RequestedTabSize => new Vector2(505, 380); - public override void DoWindowContents(Rect inRect) { - - Rect position = new Rect(inRect.x, inRect.y, inRect.width, inRect.height); - - - Listing_Standard listingStandard = new Listing_Standard(); - listingStandard.Begin(position); - - listingStandard.Label("Animation Manager"); - - listingStandard.GapLine(); - - - if (Find.Selector.SingleSelectedThing is Pawn) { - - Pawn curPawn = Find.Selector.SingleSelectedThing as Pawn; - - if (curPawn.TryGetComp().isAnimating) { - - AnimationDef def = curPawn.TryGetComp().CurrentAnimation; - int ActorIndex = curPawn.TryGetComp().ActorIndex; - float offsetX = 0, offsetZ = 0, rotation = 0; - - string bodyTypeDef = (curPawn.story?.bodyType != null) ? curPawn.story.bodyType.ToString() : ""; - - if (AnimationSettings.offsets.ContainsKey(def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex)) { - offsetX = AnimationSettings.offsets[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex].x; - offsetZ = AnimationSettings.offsets[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex].y; - } else { - AnimationSettings.offsets.Add(def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex, new Vector2(0, 0)); - } - - if (AnimationSettings.rotation.ContainsKey(def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex)) { - rotation = AnimationSettings.rotation[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex]; - } - else { - AnimationSettings.rotation.Add(def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex, 0); - } - - listingStandard.Label("Name: " + curPawn.Name + " Race: " + curPawn.def.defName + " Actor Index: " + curPawn.TryGetComp().ActorIndex + " Body Type (if any): " + bodyTypeDef + " Animation: " + def.label + (curPawn.TryGetComp().Mirror ? " mirrored" : "")); - - if(curPawn.def.defName == "Human") { - listingStandard.Label("Warning--You generally don't want to change human offsets, only alien offsets"); - } - - bool mirrored = curPawn.TryGetComp().Mirror; - - float.TryParse(listingStandard.TextEntryLabeled("X Offset: ", offsetX.ToString()), out offsetX); - offsetX = listingStandard.Slider(offsetX, -2 * (mirrored ? -1 : 1), 2 * (mirrored ? -1 : 1)); - - float.TryParse(listingStandard.TextEntryLabeled("Z Offset: ", offsetZ.ToString()), out offsetZ); - offsetZ = listingStandard.Slider(offsetZ, -2, 2); - - float.TryParse(listingStandard.TextEntryLabeled("Rotation: ", rotation.ToString()), out rotation); - rotation = listingStandard.Slider(rotation, -180, 180); - - if(listingStandard.ButtonText("Reset All")) { - offsetX = 0; - offsetZ = 0; - rotation = 0; - } - - listingStandard.GapLine(); - - if(listingStandard.ButtonText("Shift Actors")) { - - if(AnimationSettings.debugMode) { - Log.Message("Shifting actors in animation..."); - } - - for(int i = 0; i < curPawn.TryGetComp().actorsInCurrentAnimation.Count; i++) { - - Pawn actor = curPawn.TryGetComp().actorsInCurrentAnimation[i]; - - actor.TryGetComp()?.shiftActorPositionAndRestartAnimation(); - - //reset the clock time of every pawn in animation - if(actor.jobs.curDriver is rjw.JobDriver_Sex) { - (actor.jobs.curDriver as rjw.JobDriver_Sex).ticks_left = def.animationTimeTicks; - (actor.jobs.curDriver as rjw.JobDriver_Sex).ticksLeftThisToil = def.animationTimeTicks; - (actor.jobs.curDriver as rjw.JobDriver_Sex).duration = def.animationTimeTicks; - } - - } - - } - - if (offsetX != AnimationSettings.offsets[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex].x || offsetZ != AnimationSettings.offsets[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex].y) { - AnimationSettings.offsets[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex] = new Vector2(offsetX, offsetZ); - - } - - if(rotation != AnimationSettings.rotation[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex]) { - AnimationSettings.rotation[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex] = rotation; - } - - } - - } - else { - listingStandard.Label("Select a pawn currently in an animation to change their offsets"); - } - - listingStandard.End(); - - } - - public override void PreOpen() { - base.PreOpen(); - if(AnimationSettings.offsets == null) { - if (AnimationSettings.debugMode) - Log.Message("New offsets"); - AnimationSettings.offsets = new Dictionary(); - } - - if(AnimationSettings.rotation == null) { - if (AnimationSettings.debugMode) - Log.Message("New rotation"); - AnimationSettings.rotation = new Dictionary(); - } - } - - public override void PostClose() { - base.PostClose(); - - LoadedModManager.GetMod().WriteSettings(); - } - } -} diff --git a/1.3/Source/MainTabWindows/WorldComponent_UpdateMainTab.cs b/1.3/Source/MainTabWindows/WorldComponent_UpdateMainTab.cs deleted file mode 100644 index 2694419..0000000 --- a/1.3/Source/MainTabWindows/WorldComponent_UpdateMainTab.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using RimWorld; -using RimWorld.Planet; -using Verse; - -namespace Rimworld_Animations { - public class WorldComponent_UpdateMainTab : WorldComponent { - - public WorldComponent_UpdateMainTab(World world) : base(world) { - - } - - public override void FinalizeInit() { - base.FinalizeInit(); - OffsetMainButtonDefOf.OffsetManager.buttonVisible = AnimationSettings.offsetTab; - } - - - } -} diff --git a/1.3/Source/Patches/OtherModPatches/HarmonyPatch_AlienRace.cs b/1.3/Source/Patches/OtherModPatches/HarmonyPatch_AlienRace.cs deleted file mode 100644 index b7198da..0000000 --- a/1.3/Source/Patches/OtherModPatches/HarmonyPatch_AlienRace.cs +++ /dev/null @@ -1,397 +0,0 @@ -using HarmonyLib; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using System.Reflection.Emit; -using System.Text; -using System.Threading.Tasks; -using UnityEngine; -using Verse; -using AlienRace; - -namespace Rimworld_Animations { - - - [StaticConstructorOnStartup] - public static class HarmonyPatch_AlienRace - { - static HarmonyPatch_AlienRace() - { - (new Harmony("rjwanim")).Patch(AccessTools.Method(AccessTools.TypeByName("AlienRace.HarmonyPatches"), "DrawAddons"), - prefix: new HarmonyMethod(AccessTools.Method(typeof(HarmonyPatch_AlienRace), "Prefix_AnimateHeadAddons"))); - } - - - public static bool Prefix_AnimateHeadAddons(PawnRenderFlags renderFlags, Vector3 vector /*rootloc*/, Vector3 headOffset, Pawn pawn, Quaternion quat, Rot4 rotation) - { - - if (renderFlags.FlagSet(PawnRenderFlags.Portrait) || pawn.TryGetComp() == null || !pawn.TryGetComp().isAnimating) return true; - if (!(pawn.def is ThingDef_AlienRace alienProps) || renderFlags.FlagSet(PawnRenderFlags.Invisible)) return false; - - List addons = alienProps.alienRace.generalSettings.alienPartGenerator.bodyAddons; - AlienPartGenerator.AlienComp comp = pawn.GetComp(); - CompBodyAnimator pawnAnimator = pawn.TryGetComp(); - - for (int i = 0; i < addons.Count; i++) - { - AlienPartGenerator.BodyAddon ba = addons[index: i]; - - if (!ba.CanDrawAddon(pawn: pawn)) continue; - - bool forceDrawForBody = false; - if (alienProps.defName.Contains("Orassan") && ba.path.ToLower().Contains("tail")) - { - forceDrawForBody = true; - } - AlienPartGenerator.RotationOffset offset = ba.defaultOffsets.GetOffset((ba.drawnInBed && !forceDrawForBody) || ba.alignWithHead ? pawnAnimator.headFacing : pawnAnimator.bodyFacing); - Vector3 a = (offset != null) ? offset.GetOffset(renderFlags.FlagSet(PawnRenderFlags.Portrait), pawn.story.bodyType, comp.crownType) : Vector3.zero; - AlienPartGenerator.RotationOffset offset2 = ba.offsets.GetOffset((ba.drawnInBed && !forceDrawForBody) || ba.alignWithHead ? pawnAnimator.headFacing : pawnAnimator.bodyFacing); - Vector3 vector2 = a + ((offset2 != null) ? offset2.GetOffset(renderFlags.FlagSet(PawnRenderFlags.Portrait), pawn.story.bodyType, comp.crownType) : Vector3.zero); - vector2.y = (ba.inFrontOfBody ? (0.3f + vector2.y) : (-0.3f - vector2.y)); - float num = ba.angle; - if (rotation == Rot4.North) - { - if (ba.layerInvert) - { - vector2.y = 0f - vector2.y; - } - num = 0f; - } - if (rotation == Rot4.East) - { - num = 0f - num; - vector2.x = 0f - vector2.x; - } - Graphic addonGraphic = comp.addonGraphics[i]; - - addonGraphic.drawSize = ((renderFlags.FlagSet(PawnRenderFlags.Portrait) && ba.drawSizePortrait != Vector2.zero) ? ba.drawSizePortrait : ba.drawSize) * (ba.scaleWithPawnDrawsize ? (ba.alignWithHead ? (renderFlags.FlagSet(PawnRenderFlags.Portrait) ? comp.customPortraitHeadDrawSize : comp.customHeadDrawSize) : (renderFlags.FlagSet(PawnRenderFlags.Portrait) ? comp.customPortraitDrawSize : comp.customDrawSize)) : Vector2.one) * 1.5f; - - Vector3 orassanv = Vector3.zero; - bool orassan = false; - if ((pawn.def as ThingDef_AlienRace).defName == "Alien_Orassan") - { - orassan = true; - - if (ba.path.Contains("closed")) - { - continue; - } - - if (ba.bodyPart.Contains("ear")) - - { - orassan = true; - - orassanv = new Vector3(0, 0, 0.23f); - if (pawnAnimator.headFacing == Rot4.North) - { - orassanv.z -= 0.1f; - orassanv.y += 1f; - - if (ba.bodyPart.Contains("left")) - { - orassanv.x += 0.03f; - } - else - { - orassanv.x -= 0.03f; - } - - } - else if (pawnAnimator.headFacing == Rot4.East) - { - orassanv.x -= 0.1f; - } - else if (pawnAnimator.headFacing == Rot4.West) - { - orassanv.x = 0.1f; - } - else - { - orassanv.z -= 0.1f; - orassanv.y += 1f; - - if (ba.bodyPart.Contains("right")) - { - //orassanv.x += 0.3f; - } - else - { - //orassanv.x -= 0.3f; - } - } - orassanv = orassanv.RotatedBy(pawnAnimator.headAngle); - } - } - - - if ((ba.drawnInBed && !forceDrawForBody) || ba.alignWithHead) - { - - Quaternion addonRotation = Quaternion.AngleAxis(pawnAnimator.headAngle < 0 ? 360 - (360 % pawnAnimator.headAngle) : pawnAnimator.headAngle, Vector3.up); - /* - * - * genital rotation is borked - if (AnimationSettings.controlGenitalRotation && pawnAnimator.controlGenitalAngle && ba?.hediffGraphics != null && ba.hediffGraphics.Count != 0 && ba.hediffGraphics[0]?.path != null && (ba.hediffGraphics[0].path.Contains("Penis") || ba.hediffGraphics[0].path.Contains("penis"))) - { - addonRotation = Quaternion.AngleAxis(angle: pawnAnimator.genitalAngle < 0 ? 360 - (360 % pawnAnimator.genitalAngle) : pawnAnimator.genitalAngle, axis: Vector3.up); - } - - */ - - GenDraw.DrawMeshNowOrLater(mesh: addonGraphic.MeshAt(rot: pawnAnimator.headFacing), loc: vector /*rootloc*/ + orassanv + (ba.alignWithHead && !orassan ? headOffset : headOffset - addonRotation * pawn.Drawer.renderer.BaseHeadOffsetAt(pawnAnimator.headFacing)) + vector2.RotatedBy(angle: Mathf.Acos(f: Quaternion.Dot(a: Quaternion.identity, b: addonRotation)) * 2f * 57.29578f), - quat: Quaternion.AngleAxis(angle: num, axis: Vector3.up) * addonRotation, mat: addonGraphic.MatAt(rot: pawnAnimator.headFacing), renderFlags.FlagSet(PawnRenderFlags.DrawNow)); - - - } - - else - { - Quaternion addonRotation = Quaternion.AngleAxis(pawnAnimator.bodyAngle, Vector3.up); - if (AnimationSettings.controlGenitalRotation && pawnAnimator.controlGenitalAngle && ba?.hediffGraphics != null && ba.hediffGraphics.Count != 0 && ba.hediffGraphics[0]?.path != null && (ba.hediffGraphics[0].path.Contains("Penis") || ba.hediffGraphics[0].path.Contains("penis"))) - { - GenDraw.DrawMeshNowOrLater(mesh: addonGraphic.MeshAt(rot: rotation), loc: vector + (ba.alignWithHead ? headOffset : Vector3.zero) + vector2.RotatedBy(angle: Mathf.Acos(f: Quaternion.Dot(a: Quaternion.identity, b: addonRotation)) * 2f * 57.29578f), - quat: Quaternion.AngleAxis(angle: pawnAnimator.genitalAngle, axis: Vector3.up), mat: addonGraphic.MatAt(rot: rotation), renderFlags.FlagSet(PawnRenderFlags.DrawNow)); - } - - else - { - GenDraw.DrawMeshNowOrLater(mesh: addonGraphic.MeshAt(rot: rotation), loc: vector + (ba.alignWithHead ? headOffset : Vector3.zero) + vector2.RotatedBy(angle: Mathf.Acos(f: Quaternion.Dot(a: Quaternion.identity, b: addonRotation)) * 2f * 57.29578f), - quat: Quaternion.AngleAxis(angle: num, axis: Vector3.up) * addonRotation, mat: addonGraphic.MatAt(rot: rotation), renderFlags.FlagSet(PawnRenderFlags.DrawNow)); - } - - } - - - } - - return false; - } - } - - [HarmonyPatch(typeof(PawnGraphicSet), "ResolveApparelGraphics")] - public static class HarmonyPatch_ResolveApparelGraphics - { - public static bool Prefix(ref Pawn ___pawn) - { - - if (___pawn.TryGetComp() != null && ___pawn.TryGetComp().isAnimating) - { - return false; - } - return true; - } - } - - /* - - [HarmonyPatch(typeof(AlienRace.HarmonyPatches), "DrawAddons")] - public static class HarmonyPatch_AlienRace { - - public static void RenderHeadAddonInAnimation(Mesh mesh, Vector3 loc, Quaternion quat, Material mat, bool drawNow, Graphic graphic, AlienPartGenerator.BodyAddon bodyAddon, Vector3 v, Vector3 headOffset, Pawn pawn, PawnRenderFlags renderFlags, Vector3 vector, Rot4 rotation) - { - - CompBodyAnimator pawnAnimator = pawn.TryGetComp(); - AlienPartGenerator.AlienComp comp = pawn.GetComp(); - - if (pawnAnimator != null && pawnAnimator.isAnimating) - { - - if((bodyAddon.drawnInBed || bodyAddon.alignWithHead)) - { - - AlienPartGenerator.RotationOffset offset = bodyAddon.defaultOffsets.GetOffset(rotation); - Vector3 a = (offset != null) ? offset.GetOffset(renderFlags.FlagSet(PawnRenderFlags.Portrait), pawn.story.bodyType, comp.crownType) : Vector3.zero; - AlienPartGenerator.RotationOffset offset2 = bodyAddon.offsets.GetOffset(rotation); - Vector3 vector2 = a + ((offset2 != null) ? offset2.GetOffset(renderFlags.FlagSet(PawnRenderFlags.Portrait), pawn.story.bodyType, comp.crownType) : Vector3.zero); - vector2.y = (bodyAddon.inFrontOfBody ? (0.3f + vector2.y) : (-0.3f - vector2.y)); - float num = bodyAddon.angle; - if (rotation == Rot4.North) - { - if (bodyAddon.layerInvert) - { - vector2.y = -vector2.y; - } - num = 0f; - } - if (rotation == Rot4.East) - { - num = -num; - vector2.x = -vector2.x; - } - - vector = vector + Quaternion.AngleAxis(pawnAnimator.bodyAngle, Vector3.up) * pawn.Drawer.renderer.BaseHeadOffsetAt(pawnAnimator.bodyFacing) - pawnAnimator.getPawnHeadOffset(); //convert vector into pseudo body pos for head - quat = Quaternion.AngleAxis(pawnAnimator.headAngle, Vector3.up); - loc = vector + (bodyAddon.alignWithHead ? headOffset : Vector3.zero) + vector2.RotatedBy(Mathf.Acos(Quaternion.Dot(Quaternion.identity, quat)) * 2f * 57.29578f); - mat = graphic.MatAt(rot: pawnAnimator.headFacing); - } - else - { - - AlienPartGenerator.RotationOffset offset = bodyAddon.defaultOffsets.GetOffset(rotation); - Vector3 a = (offset != null) ? offset.GetOffset(renderFlags.FlagSet(PawnRenderFlags.Portrait), pawn.story.bodyType, comp.crownType) : Vector3.zero; - AlienPartGenerator.RotationOffset offset2 = bodyAddon.offsets.GetOffset(rotation); - Vector3 vector2 = a + ((offset2 != null) ? offset2.GetOffset(renderFlags.FlagSet(PawnRenderFlags.Portrait), pawn.story.bodyType, comp.crownType) : Vector3.zero); - vector2.y = (bodyAddon.inFrontOfBody ? (0.3f + vector2.y) : (-0.3f - vector2.y)); - float num = bodyAddon.angle; - if (rotation == Rot4.North) - { - if (bodyAddon.layerInvert) - { - vector2.y = -vector2.y; - } - num = 0f; - } - if (rotation == Rot4.East) - { - num = -num; - vector2.x = -vector2.x; - } - quat = Quaternion.AngleAxis(pawnAnimator.bodyAngle, Vector3.up); - loc = vector + (bodyAddon.alignWithHead ? headOffset : Vector3.zero) + vector2.RotatedBy(Mathf.Acos(Quaternion.Dot(Quaternion.identity, quat)) * 2f * 57.29578f); - - } - - } - GenDraw.DrawMeshNowOrLater(mesh, loc, quat, mat, drawNow); - - /* - if (pawnAnimator != null && !renderFlags.FlagSet(PawnRenderFlags.Portrait) && pawnAnimator.isAnimating && (bodyAddon.drawnInBed || bodyAddon.alignWithHead)) - { - - - if ((pawn.def as ThingDef_AlienRace).defName == "Alien_Orassan") - { - orassan = true; - - if(bodyAddon.path.Contains("closed")) - { - return; - } - - if (bodyAddon.bodyPart.Contains("ear")) - - { - orassan = true; - - orassanv = new Vector3(0, 0, 0.23f); - if (pawnAnimator.headFacing == Rot4.North) - { - orassanv.z -= 0.1f; - orassanv.y += 1f; - - if(bodyAddon.bodyPart.Contains("left")) - { - orassanv.x += 0.03f; - } else - { - orassanv.x -= 0.03f; - } - - } - else if (pawnAnimator.headFacing == Rot4.East) - { - orassanv.x -= 0.1f; - } - else if (pawnAnimator.headFacing == Rot4.West) - { - orassanv.x = 0.1f; - } - else - { - orassanv.z -= 0.1f; - orassanv.y += 1f; - - if (bodyAddon.bodyPart.Contains("right")) - { - orassanv.x += 0.05f; - } - else - { - orassanv.x -= 0.05f; - } - } - orassanv = orassanv.RotatedBy(pawnAnimator.headAngle); - } - } - - - - - - GenDraw.DrawMeshNowOrLater(mesh: graphic.MeshAt(rot: headRotInAnimation), loc: loc + orassanv + (bodyAddon.alignWithHead ? headOffset : Vector3.zero),// + v.RotatedBy(Mathf.Acos(Quaternion.Dot(Quaternion.identity, quat)) * 2f * 57.29578f), - quat: Quaternion.AngleAxis(angle: num, axis: Vector3.up) * headQuatInAnimation, mat: graphic.MatAt(rot: pawnAnimator.headFacing), drawNow: drawNow);; - } - - else - { - - } - - - } - - - public static IEnumerable Transpiler(IEnumerable instructions) - { - List ins = instructions.ToList(); - for (int i = 0; i < ins.Count; i++) - { - - Type[] type = new Type[] { typeof(Mesh), typeof(Vector3), typeof(Quaternion), typeof(Material), typeof(bool) }; - - - if (ins[i].OperandIs(AccessTools.Method(typeof(GenDraw), "DrawMeshNowOrLater", type))) - { - - yield return new CodeInstruction(OpCodes.Ldloc, (object)7); //graphic - yield return new CodeInstruction(OpCodes.Ldloc, (object)4); //bodyAddon - yield return new CodeInstruction(OpCodes.Ldloc, (object)5); //offsetVector/AddonOffset (v) - yield return new CodeInstruction(OpCodes.Ldarg, (object)2); //headOffset - yield return new CodeInstruction(OpCodes.Ldarg, (object)3); //pawn - yield return new CodeInstruction(OpCodes.Ldarg, (object)0); //renderflags - yield return new CodeInstruction(OpCodes.Ldarg, (object)1); //vector - yield return new CodeInstruction(OpCodes.Ldarg, (object)5); //rotation - - yield return new CodeInstruction(OpCodes.Call, AccessTools.DeclaredMethod(typeof(HarmonyPatch_AlienRace), "RenderHeadAddonInAnimation")); - - } - - else - { - yield return ins[i]; - } - } - } - - public static bool Prefix(PawnRenderFlags renderFlags, ref Vector3 vector, ref Vector3 headOffset, Pawn pawn, ref Quaternion quat, ref Rot4 rotation) - { - if(pawn == null) - { - return true; - } - - CompBodyAnimator anim = pawn.TryGetComp(); - - if(anim == null) - { - return true; - } - - if (anim != null && !renderFlags.FlagSet(PawnRenderFlags.Portrait) && anim.isAnimating) - { - //quat = Quaternion.AngleAxis(anim.bodyAngle, Vector3.up); - } - - return true; - - } - } - - - */ - -} - - diff --git a/1.3/Source/Patches/OtherModPatches/HarmonyPatch_CSL.cs b/1.3/Source/Patches/OtherModPatches/HarmonyPatch_CSL.cs deleted file mode 100644 index 8345ede..0000000 --- a/1.3/Source/Patches/OtherModPatches/HarmonyPatch_CSL.cs +++ /dev/null @@ -1,87 +0,0 @@ -/* -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using HarmonyLib; -using rjw; -using Verse; -using RimWorld; -using System.Reflection.Emit; -using System.Reflection; -using UnityEngine; - -namespace Rimworld_Animations { - [StaticConstructorOnStartup] - public static class HarmonyPatch_CSL { - static HarmonyPatch_CSL() { - try { - ((Action)(() => { - if (LoadedModManager.RunningModsListForReading.Any(x => x.Name == "Children, school and learning")) { - - (new Harmony("rjw")).Patch(AccessTools.Method(AccessTools.TypeByName("Children.PawnRenderer_RenderPawnInternal_Patch"), "RenderPawnInternalScaled"), - prefix: new HarmonyMethod(AccessTools.Method(typeof(HarmonyPatch_CSL), "Prefix_CSL")), - transpiler: new HarmonyMethod(AccessTools.Method(typeof(HarmonyPatch_CSL), "Transpiler_CSL"))); - } - }))(); - } - catch (TypeLoadException ex) { - - } - } - - public static void Prefix_CSL(PawnRenderer __instance, Pawn pawn, ref Vector3 rootLoc, ref float angle, bool renderBody, ref Rot4 bodyFacing, ref Rot4 headFacing, RotDrawMode bodyDrawType, bool portrait, bool headStump, bool invisible) { - - PawnGraphicSet graphics = __instance.graphics; - CompBodyAnimator bodyAnim = pawn.TryGetComp(); - - if (!graphics.AllResolved) { - graphics.ResolveAllGraphics(); - } - - - if (bodyAnim != null && bodyAnim.isAnimating && !portrait) { - bodyAnim.tickGraphics(graphics); - pawn.TryGetComp().animatePawn(ref rootLoc, ref angle, ref bodyFacing, ref headFacing); - - } - } - - public static IEnumerable Transpiler_CSL(IEnumerable instructions) { - - MethodInfo drawMeshNowOrLater = AccessTools.Method(typeof(GenDraw), "DrawMeshNowOrLater"); - FieldInfo headGraphic = AccessTools.Field(typeof(PawnGraphicSet), "headGraphic"); - - - List codes = instructions.ToList(); - bool forHead = true; - for (int i = 0; i < codes.Count(); i++) { - - //Instead of calling drawmeshnoworlater, add pawn to the stack and call my special static method - if (codes[i].OperandIs(drawMeshNowOrLater) && forHead) { - - yield return new CodeInstruction(OpCodes.Ldarg_0); - yield return new CodeInstruction(OpCodes.Ldfld, AccessTools.DeclaredField(typeof(PawnRenderer), "pawn")); - yield return new CodeInstruction(OpCodes.Ldarg_2); - yield return new CodeInstruction(OpCodes.Call, AccessTools.DeclaredMethod(typeof(AnimationUtility), nameof(AnimationUtility.RenderPawnHeadMeshInAnimation), new Type[] { typeof(Mesh), typeof(Vector3), typeof(Quaternion), typeof(Material), typeof(bool), typeof(Pawn), typeof(float) })); - - } - //checking for if(graphics.headGraphic != null) - else if (codes[i].opcode == OpCodes.Ldfld && codes[i].OperandIs(headGraphic)) { - forHead = true; - yield return codes[i]; - } - //checking for if(renderbody) - else if (codes[i].opcode == OpCodes.Ldarg_3) { - forHead = false; - yield return codes[i]; - } - else { - yield return codes[i]; - } - } - } - - } -}*/ diff --git a/1.3/Source/Patches/OtherModPatches/HarmonyPatch_DontShaveYourHead.cs b/1.3/Source/Patches/OtherModPatches/HarmonyPatch_DontShaveYourHead.cs deleted file mode 100644 index 3cb2a63..0000000 --- a/1.3/Source/Patches/OtherModPatches/HarmonyPatch_DontShaveYourHead.cs +++ /dev/null @@ -1,29 +0,0 @@ -using HarmonyLib; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Verse; - -namespace Rimworld_Animations { - class HarmonyPatch_DontShaveYourHead { - - [StaticConstructorOnStartup] - public static class Patch_DontShaveYourHead { - - static Patch_DontShaveYourHead() { - try { - ((Action)(() => - { - if (LoadedModManager.RunningModsListForReading.Any(x => x.Name == "Don't Shave Your Head 1.0")) { - (new Harmony("rjwanim")).Patch(AccessTools.Method(AccessTools.TypeByName("DontShaveYourHead.Harmony_PawnRenderer"), "DrawHairReroute"), //typeof(ShowHair.Patch_PawnRenderer_RenderPawnInternal), nameof(ShowHair.Patch_PawnRenderer_RenderPawnInternal.Postfix)), - transpiler: new HarmonyMethod(AccessTools.Method(typeof(Patch_ShowHairWithHats), "Transpiler"))); - } - }))(); - } - catch (TypeLoadException ex) { } - } - } - } -} diff --git a/1.3/Source/Patches/OtherModPatches/HarmonyPatch_FacialAnimation.cs b/1.3/Source/Patches/OtherModPatches/HarmonyPatch_FacialAnimation.cs deleted file mode 100644 index 83ffd5b..0000000 --- a/1.3/Source/Patches/OtherModPatches/HarmonyPatch_FacialAnimation.cs +++ /dev/null @@ -1,104 +0,0 @@ -using HarmonyLib; -using RimWorld; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using System.Reflection.Emit; -using System.Text; -using System.Threading.Tasks; -using UnityEngine; -using Verse; - -namespace Rimworld_Animations { - [StaticConstructorOnStartup] - public static class Patch_FacialAnimation { - - static Patch_FacialAnimation() { - try { - ((Action)(() => { - if (LoadedModManager.RunningModsListForReading.Any(x => x.Name == "[NL] Facial Animation - WIP")) { - (new Harmony("rjwanim")).Patch(AccessTools.Method(AccessTools.TypeByName("FacialAnimation.DrawFaceGraphicsComp"), "DrawGraphics"), - prefix: new HarmonyMethod(AccessTools.Method(typeof(Patch_FacialAnimation), "Prefix"))); - } - }))(); - } - catch (TypeLoadException ex) { - - } - } - - public static bool Prefix(ref Pawn ___pawn, ref Rot4 headFacing, ref Vector3 headOrigin, ref Quaternion quaternion, ref bool portrait) { - - CompBodyAnimator bodyAnim = ___pawn.TryGetComp(); - - if (bodyAnim != null && bodyAnim.isAnimating && !portrait) { - - headFacing = bodyAnim.headFacing; - headOrigin = new Vector3(bodyAnim.getPawnHeadPosition().x, headOrigin.y, bodyAnim.getPawnHeadPosition().z); - quaternion = Quaternion.AngleAxis(bodyAnim.headAngle, Vector3.up); - } - - return true; - } - /* - public static List rjwLovinDefNames = new List{ - "Lovin", - "Quickie", - "GettingQuickie", - "JoinInBed", - "JoinInBedAnimation", - "GettinLovedAnimation", - "GettinLoved", - "GettinLicked", - "GettinSucked", - "GettinRaped", - "ViolateCorpse", - "RJW_Masturbate", - "GettinBred", - "Breed", - "RJW_Mate", - "Bestiality", - "BestialityForFemale", - "StruggleInBondageGear", - "WhoreIsServingVisitors", - "UseFM" - }; - - public static List rjwRapeDefNames = new List { - "RapeComfortPawn", - "RandomRape", - "RapeEnemy" - }; - - public static bool Prefix_IsSameA(JobDef job, string ___jobDef, ref bool __result) { - - if(___jobDef != null && ___jobDef == "Lovin" && job?.defName != null && rjwLovinDefNames.Contains(job?.defName)) { - __result = true; - return false; - } - else if (___jobDef != null && ___jobDef == "Wait_Combat" && job?.defName != null && rjwRapeDefNames.Contains(job?.defName)) { - __result = true; - return false; - } - - - return true; - } - - public static bool Prefix_IsSameB(string jobName, string ___jobDef, ref bool __result) { - - if (___jobDef != null && ___jobDef == "Lovin" && jobName != null && rjwLovinDefNames.Contains(jobName)) { - __result = true; - return false; - } - if (___jobDef != null && ___jobDef == "Wait_Combat" && jobName != null && rjwRapeDefNames.Contains(jobName)) { - __result = true; - return false; - } - - return true; - } - */ - } -} \ No newline at end of file diff --git a/1.3/Source/Patches/OtherModPatches/HarmonyPatch_HatsDisplaySelection.cs b/1.3/Source/Patches/OtherModPatches/HarmonyPatch_HatsDisplaySelection.cs deleted file mode 100644 index 1cd5707..0000000 --- a/1.3/Source/Patches/OtherModPatches/HarmonyPatch_HatsDisplaySelection.cs +++ /dev/null @@ -1,77 +0,0 @@ -/*using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using HarmonyLib; -using RimWorld; -using Verse; -using UnityEngine; -using System.Reflection; -using System.Reflection.Emit; - -namespace Rimworld_Animations { - public static class HarmonyPatch_HatsDisplaySelection { - - public static void PatchHatsDisplaySelectionArgs() { - (new Harmony("rjw")).Patch(AccessTools.Method(AccessTools.TypeByName("HatDisplaySelection.Patch"), "DrawHatCEWithHair"), - transpiler: new HarmonyMethod(AccessTools.Method(typeof(HarmonyPatch_HatsDisplaySelection), "ReplaceDrawMeshOrLaterWithAnimate"))); - - (new Harmony("rjw")).Patch(AccessTools.Method(AccessTools.TypeByName("HatDisplaySelection.Patch"), "DrawHatWithHair"), - transpiler: new HarmonyMethod(AccessTools.Method(typeof(HarmonyPatch_HatsDisplaySelection), "ReplaceDrawMeshOrLaterWithAnimate"))); - - (new Harmony("rjw")).Patch(AccessTools.Method(AccessTools.TypeByName("HatDisplaySelection.Patch"), "DrawHeadApparelWithHair"), - prefix: new HarmonyMethod(AccessTools.Method(typeof(HarmonyPatch_HatsDisplaySelection), "PrefixPatchForDrawHeadApparelWithHair"))); - - - } - - public static void PrefixPatchForDrawHeadApparelWithHair(PawnRenderer renderer, ref Vector3 rootLoc, ref float angle, bool renderBody, ref Rot4 bodyFacing, ref Rot4 headFacing, RotDrawMode bodyDrawType, bool portrait, bool headStump, bool invisible) - { - PawnGraphicSet graphics = renderer.graphics; - Pawn pawn = graphics.pawn; - CompBodyAnimator bodyAnim = pawn.TryGetComp(); - - if (!graphics.AllResolved) - { - graphics.ResolveAllGraphics(); - } - - - if (bodyAnim != null && bodyAnim.isAnimating && !portrait && pawn.Map == Find.CurrentMap) - { - bodyAnim.tickGraphics(graphics); - bodyAnim.animatePawn(ref rootLoc, ref angle, ref bodyFacing, ref headFacing); - - } - } - - - public static IEnumerable ReplaceDrawMeshOrLaterWithAnimate(IEnumerable instructions) { - - MethodInfo drawMeshNowOrLater = AccessTools.Method(typeof(GenDraw), "DrawMeshNowOrLater"); - List codes = instructions.ToList(); - for (int i = 0; i < instructions.Count(); i++) { - - - if (codes[i]. - - -(drawMeshNowOrLater)) { - - yield return new CodeInstruction(OpCodes.Ldarg_0); - yield return new CodeInstruction(OpCodes.Ldfld, AccessTools.DeclaredField(AccessTools.TypeByName("HatDisplaySelection.Patch"), "pawn")); - yield return new CodeInstruction(OpCodes.Call, AccessTools.DeclaredMethod(typeof(AnimationUtility), nameof(AnimationUtility.RenderPawnHeadMeshInAnimation), new Type[] { typeof(Mesh), typeof(Vector3), typeof(Quaternion), typeof(Material), typeof(bool), typeof(Pawn) })); - - } - else { - yield return codes[i]; - } - - } - - } - - } -} -*/ \ No newline at end of file diff --git a/1.3/Source/Patches/OtherModPatches/HarmonyPatch_ShowHairWithHats.cs b/1.3/Source/Patches/OtherModPatches/HarmonyPatch_ShowHairWithHats.cs deleted file mode 100644 index a42ab7d..0000000 --- a/1.3/Source/Patches/OtherModPatches/HarmonyPatch_ShowHairWithHats.cs +++ /dev/null @@ -1,51 +0,0 @@ -using HarmonyLib; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using System.Reflection.Emit; -using System.Text; -using System.Threading.Tasks; -using UnityEngine; -using Verse; - -namespace Rimworld_Animations { - [StaticConstructorOnStartup] - public static class Patch_ShowHairWithHats { - - static Patch_ShowHairWithHats() { - try { - ((Action)(() => - { - if (LoadedModManager.RunningModsListForReading.Any(x => x.Name == "[KV] Show Hair With Hats or Hide All Hats - 1.1")) { - (new Harmony("rjwanim")).Patch(AccessTools.Method(AccessTools.TypeByName("ShowHair.Patch_PawnRenderer_RenderPawnInternal"), "Postfix"), //typeof(ShowHair.Patch_PawnRenderer_RenderPawnInternal), nameof(ShowHair.Patch_PawnRenderer_RenderPawnInternal.Postfix)), - transpiler: new HarmonyMethod(AccessTools.Method(typeof(Patch_ShowHairWithHats), "Transpiler"))); - } - }))(); - } - catch (TypeLoadException ex) { } - } - - - public static IEnumerable Transpiler(IEnumerable instructions) { - - MethodInfo drawMeshNowOrLater = AccessTools.Method(typeof(GenDraw), "DrawMeshNowOrLater"); - - List codes = instructions.ToList(); - for (int i = 0; i < codes.Count(); i++) { - - //Instead of calling drawmeshnoworlater, add pawn to the stack and call my special static method - if (codes[i].OperandIs(drawMeshNowOrLater)) { - - yield return new CodeInstruction(OpCodes.Ldarg_0); - yield return new CodeInstruction(OpCodes.Ldfld, AccessTools.DeclaredField(typeof(PawnRenderer), "pawn")); - yield return new CodeInstruction(OpCodes.Call, AccessTools.DeclaredMethod(typeof(AnimationUtility), nameof(AnimationUtility.RenderPawnHeadMeshInAnimation), new Type[] { typeof(Mesh), typeof(Vector3), typeof(Quaternion), typeof(Material), typeof(bool), typeof(Pawn) })); - - } - else { - yield return codes[i]; - } - } - } - } -} diff --git a/1.3/Source/Patches/RJWPatches/HarmonyPatch_PlaySexSounds.cs b/1.3/Source/Patches/RJWPatches/HarmonyPatch_PlaySexSounds.cs deleted file mode 100644 index 6544f13..0000000 --- a/1.3/Source/Patches/RJWPatches/HarmonyPatch_PlaySexSounds.cs +++ /dev/null @@ -1,25 +0,0 @@ -using HarmonyLib; -using rjw; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Verse; - -namespace Rimworld_Animations -{ - [HarmonyPatch(typeof(JobDriver_Sex), "PlaySexSound")] - class HarmonyPatch_PlaySexSounds - { - public static bool Prefix(JobDriver_Sex __instance) - { - if (__instance.pawn.TryGetComp().isAnimating) - { - return false; - } - - return true; - } - } -} diff --git a/1.3/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_JoinInBed.cs b/1.3/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_JoinInBed.cs deleted file mode 100644 index 18c955e..0000000 --- a/1.3/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_JoinInBed.cs +++ /dev/null @@ -1,84 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using HarmonyLib; -using RimWorld; -using Verse; -using rjw; -using System.Reflection.Emit; -using Verse.AI; - -namespace Rimworld_Animations -{ - - [HarmonyPatch(typeof(Bed_Utility), "in_same_bed")] - public static class HarmonyPatch_JobDriver_InSameBedPatch - { - - public static bool Prefix(Pawn partner, ref bool __result) - { - - if(partner != null && partner.CurJobDef == xxx.casual_sex) - { - __result = true; - return false; - } - - return true; - - } - - - - } - - [HarmonyPatch(typeof(JobDriver_JoinInBed), "MakeNewToils")] - public static class HarmonyPatch_JobDriver_JoinInBed - { - - public static void Postfix(JobDriver_JoinInBed __instance, ref IEnumerable __result) - { - - var toils = __result.ToList(); - - Toil goToPawnInBed = Toils_Goto.GotoThing(__instance.iTarget, PathEndMode.OnCell); - goToPawnInBed.FailOn(() => !RestUtility.InBed(__instance.Partner) && __instance.Partner.CurJobDef != xxx.gettin_loved && !Bed_Utility.in_same_bed(__instance.Partner, __instance.pawn)); - - toils[1] = goToPawnInBed; - - - Toil startPartnerSex = new Toil(); - startPartnerSex.initAction = delegate { - - - if (!(__instance.Partner.jobs.curDriver is JobDriver_SexBaseReciever)) // allows threesomes - { - Job gettinLovedJob = JobMaker.MakeJob(xxx.gettin_loved, __instance.pawn, __instance.Bed); // new gettin loved toil that wakes up the pawn goes here - __instance.Partner.jobs.jobQueue.EnqueueFirst(gettinLovedJob); - __instance.Partner.jobs.EndCurrentJob(JobCondition.InterruptForced); - } - - }; - - toils[2] = startPartnerSex; - - toils[3].AddPreTickAction(() => - { - if (!__instance.Partner.TryGetComp().isAnimating) - { - __instance.pawn.TryGetComp().isAnimating = false; - } - }); - - - __result = toils.AsEnumerable(); - - - } - - - - } -} diff --git a/1.3/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs b/1.3/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs deleted file mode 100644 index 260d924..0000000 --- a/1.3/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs +++ /dev/null @@ -1,191 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using HarmonyLib; -using RimWorld; -using Verse; -using rjw; - -namespace Rimworld_Animations { - - [HarmonyPatch(typeof(JobDriver_SexBaseInitiator), "Start")] - static class HarmonyPatch_JobDriver_SexBaseInitiator_Start { - public static void Postfix(ref JobDriver_SexBaseInitiator __instance) { - /* - These particular jobs need special code - don't play anim for now - */ - if(__instance is JobDriver_Masturbate || __instance is JobDriver_ViolateCorpse) { - return; - } - - if(!AnimationSettings.PlayAnimForNonsexualActs && NonSexualAct(__instance)) - { - return; - } - - Pawn pawn = __instance.pawn; - - Building_Bed bed = __instance.Bed; - - if ((__instance.Target as Pawn)?.jobs?.curDriver is JobDriver_SexBaseReciever) { - - Pawn Target = __instance.Target as Pawn; - - bool quickie = (__instance is JobDriver_SexQuick) && AnimationSettings.fastAnimForQuickie; - - int preAnimDuration = __instance.duration; - int AnimationTimeTicks = 0; - - - if (bed != null) { - RerollAnimations(Target, out AnimationTimeTicks, bed as Thing, __instance.Sexprops.sexType, quickie, sexProps: __instance.Sexprops); - } - else { - RerollAnimations(Target, out AnimationTimeTicks, sexType: __instance.Sexprops.sexType, fastAnimForQuickie: quickie, sexProps: __instance.Sexprops); - } - - - //Modify Orgasm ticks to only orgasm as many times as RJW stock orgasm allows - if(AnimationTimeTicks != 0) - { - __instance.orgasmstick = preAnimDuration * __instance.orgasmstick / AnimationTimeTicks; - } - - - } - } - - public static void RerollAnimations(Pawn pawn, out int AnimationTimeTicks, Thing bed = null, xxx.rjwSextype sexType = xxx.rjwSextype.None, bool fastAnimForQuickie = false, rjw.SexProps sexProps = null) { - - AnimationTimeTicks = 0; - - if(pawn == null || !(pawn.jobs?.curDriver is JobDriver_SexBaseReciever)) { - Log.Error("Error: Tried to reroll animations when pawn isn't sexing"); - return; - } - - List pawnsToAnimate = (pawn.jobs.curDriver as JobDriver_SexBaseReciever).parteners.ToList(); - - if (!pawnsToAnimate.Contains(pawn)) { - pawnsToAnimate = pawnsToAnimate.Append(pawn).ToList(); - } - - for(int i = 0; i < pawnsToAnimate.Count; i++) { - - if(pawnsToAnimate[i].TryGetComp() == null) { - Log.Error("Error: " + pawnsToAnimate[i].Name + " of race " + pawnsToAnimate[i].def.defName + " does not have CompBodyAnimator attached!"); - break; - } - } - - AnimationDef anim = AnimationUtility.tryFindAnimation(ref pawnsToAnimate, sexType, sexProps); - - if (anim != null) { - - bool mirror = GenTicks.TicksGame % 2 == 0; - - IntVec3 pos = pawn.Position; - - for (int i = 0; i < anim.actors.Count; i++) - { - pawnsToAnimate[i].TryGetComp().isAnimating = false; - } - - for (int i = 0; i < pawnsToAnimate.Count; i++) { - - if (bed != null) - pawnsToAnimate[i].TryGetComp().setAnchor(bed); - else { - - pawnsToAnimate[i].TryGetComp().setAnchor(pos); - } - - bool shiver = pawnsToAnimate[i].jobs.curDriver is JobDriver_SexBaseRecieverRaped; - pawnsToAnimate[i].TryGetComp().StartAnimation(anim, pawnsToAnimate, i, mirror, shiver, fastAnimForQuickie); - - int animTicks = anim.animationTimeTicks - (fastAnimForQuickie ? anim.animationStages[0].playTimeTicks : 0); - (pawnsToAnimate[i].jobs.curDriver as JobDriver_Sex).ticks_left = animTicks; - (pawnsToAnimate[i].jobs.curDriver as JobDriver_Sex).sex_ticks = animTicks; - (pawnsToAnimate[i].jobs.curDriver as JobDriver_Sex).duration = animTicks; - - - AnimationTimeTicks = animTicks; - - if(!AnimationSettings.hearts) { - (pawnsToAnimate[i].jobs.curDriver as JobDriver_Sex).ticks_between_hearts = Int32.MaxValue; - } - - } - } - else { - Log.Message("No animation found"); - - /* - - //if pawn isn't already animating, - if (!pawn.TryGetComp().isAnimating) { - (pawn.jobs.curDriver as JobDriver_SexBaseReciever).increase_time(duration); - //they'll just do the thrusting anim - } - - */ - } - } - - - static IEnumerable NonSexActRulePackDefNames = new String[] - { - "MutualHandholdingRP", - "MutualMakeoutRP", - }; - - public static bool NonSexualAct(JobDriver_SexBaseInitiator sexBaseInitiator) - { - if(NonSexActRulePackDefNames.Contains(sexBaseInitiator.Sexprops.rulePack)) - { - return true; - } - return false; - } - } - - [HarmonyPatch(typeof(JobDriver_SexBaseInitiator), "End")] - static class HarmonyPatch_JobDriver_SexBaseInitiator_End { - - public static void Postfix(ref JobDriver_SexBaseInitiator __instance) { - - if ((__instance.Target as Pawn)?.jobs?.curDriver is JobDriver_SexBaseReciever) { - if (__instance.pawn.TryGetComp().isAnimating) { - - List parteners = ((__instance.Target as Pawn)?.jobs.curDriver as JobDriver_SexBaseReciever).parteners; - - for (int i = 0; i < parteners.Count; i++) { - - //prevents pawns who started a new anim from stopping their new anim - if (!((parteners[i].jobs.curDriver as JobDriver_SexBaseInitiator) != null && (parteners[i].jobs.curDriver as JobDriver_SexBaseInitiator).Target != __instance.pawn)) - parteners[i].TryGetComp().isAnimating = false; - - } - - __instance.Target.TryGetComp().isAnimating = false; - - if (xxx.is_human((__instance.Target as Pawn))) { - (__instance.Target as Pawn)?.Drawer.renderer.graphics.ResolveApparelGraphics(); - PortraitsCache.SetDirty((__instance.Target as Pawn)); - } - } - - ((__instance.Target as Pawn)?.jobs.curDriver as JobDriver_SexBaseReciever).parteners.Remove(__instance.pawn); - - } - - if (xxx.is_human(__instance.pawn)) { - __instance.pawn.Drawer.renderer.graphics.ResolveApparelGraphics(); - PortraitsCache.SetDirty(__instance.pawn); - } - } - } -} diff --git a/1.3/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseReceiverLoved.cs b/1.3/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseReceiverLoved.cs deleted file mode 100644 index d328d2b..0000000 --- a/1.3/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseReceiverLoved.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using HarmonyLib; -using RimWorld; -using Verse; -using rjw; -using System.Reflection.Emit; - -namespace Rimworld_Animations -{ - - [HarmonyPatch(typeof(JobDriver_SexBaseRecieverLoved), "MakeSexToil")] - public static class HarmonyPatch_JobDriver_SexBaseReceiverLoved - { - - public static IEnumerable Transpiler(IEnumerable codeInstructions) - { - - var ins = codeInstructions.ToList(); - for(int i = 0; i < ins.Count; i++) - { - if(i + 13 < ins.Count && ins[i + 13].opcode == OpCodes.Call && ins[i + 13].OperandIs(AccessTools.DeclaredMethod(typeof(Toils_LayDown), "LayDown"))) { - - ins.RemoveRange(i, 14); - - } - - else - { - yield return ins[i]; - } - } - - } - - } -} diff --git a/1.3/Source/Patches/RimworldPatches/HarmonyPatch_HeadHair.cs b/1.3/Source/Patches/RimworldPatches/HarmonyPatch_HeadHair.cs deleted file mode 100644 index 37ba6ce..0000000 --- a/1.3/Source/Patches/RimworldPatches/HarmonyPatch_HeadHair.cs +++ /dev/null @@ -1,22 +0,0 @@ -using HarmonyLib; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Verse; -using RimWorld; -using UnityEngine; - -namespace Rimworld_Animations -{ - [HarmonyPatch(typeof(PawnRenderer), "DrawHeadHair")] - public static class HarmonyPatch_HeadHair - { - public static void Prefix(ref Vector3 headOffset, ref float angle) - { - - } - - } -} diff --git a/1.3/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderer.cs b/1.3/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderer.cs deleted file mode 100644 index 218e45b..0000000 --- a/1.3/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderer.cs +++ /dev/null @@ -1,84 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using HarmonyLib; -using RimWorld; -using Verse; -using UnityEngine; -using System.Reflection; -using System.Reflection.Emit; - -namespace Rimworld_Animations { - - [HarmonyPatch(typeof(PawnRenderer), "RenderPawnInternal", new Type[] - { - typeof(Vector3), - typeof(float), - typeof(bool), - typeof(Rot4), - typeof(RotDrawMode), - typeof(PawnRenderFlags) - } - )] - public static class HarmonyPatch_PawnRenderer - { - - [HarmonyBefore(new string[] { "showhair.kv.rw", "erdelf.HumanoidAlienRaces", "Nals.FacialAnimation" })] - public static void Prefix(PawnRenderer __instance, ref Vector3 rootLoc, ref float angle, bool renderBody, ref Rot4 bodyFacing, RotDrawMode bodyDrawType, PawnRenderFlags flags) - { - - if (flags.FlagSet(PawnRenderFlags.Portrait)) return; - - PawnGraphicSet graphics = __instance.graphics; - Pawn pawn = graphics.pawn; - CompBodyAnimator bodyAnim = pawn.TryGetComp(); - - - if (bodyAnim != null && bodyAnim.isAnimating && pawn.Map == Find.CurrentMap) - { - bodyAnim.animatePawnBody(ref rootLoc, ref angle, ref bodyFacing); - - } - - } - - public static IEnumerable Transpiler(IEnumerable instructions) - { - List ins = instructions.ToList(); - - for(int i = 0; i < instructions.Count(); i++) - { - - if (i - 3 >= 0 && ins[i - 3].opcode == OpCodes.Call && ins[i - 3].operand != null && ins[i - 3].OperandIs(AccessTools.DeclaredMethod(typeof(PawnRenderer), "BaseHeadOffsetAt"))) - { - - yield return new CodeInstruction(OpCodes.Ldloca, (object)0); - yield return new CodeInstruction(OpCodes.Ldloca, (object)7); - yield return new CodeInstruction(OpCodes.Ldloca, (object)6); - yield return new CodeInstruction(OpCodes.Ldarga, (object)2); - yield return new CodeInstruction(OpCodes.Ldarg_0); - yield return new CodeInstruction(OpCodes.Ldfld, AccessTools.DeclaredField(typeof(PawnRenderer), "pawn")); - yield return new CodeInstruction(OpCodes.Ldarg, (object)6); - yield return new CodeInstruction(OpCodes.Call, AccessTools.DeclaredMethod(typeof(AnimationUtility), "AdjustHead")); - yield return ins[i]; - //headFacing equals true - } - - // Fixes the offsets for eye implants and wounds on the head during animations - else if (ins[i].opcode == OpCodes.Callvirt && ins[i].operand != null && ins[i].OperandIs(AccessTools.DeclaredMethod(typeof(PawnWoundDrawer), "RenderOverBody"))) - { - // Pass some additional info to a new overload of RenderOverBody - yield return new CodeInstruction(OpCodes.Ldarg_0); - yield return new CodeInstruction(OpCodes.Ldfld, AccessTools.DeclaredField(typeof(PawnRenderer), "pawn")); - yield return new CodeInstruction(OpCodes.Ldarg_S, (object)6); // renderer flags - yield return new CodeInstruction(OpCodes.Call, AccessTools.DeclaredMethod(typeof(PawnWoundDrawerExtension), "RenderOverBody")); - } - - else - { - yield return ins[i]; - } - } - } - } -} diff --git a/1.3/Source/Patches/RimworldPatches/HarmonyPatch_PawnRotation.cs b/1.3/Source/Patches/RimworldPatches/HarmonyPatch_PawnRotation.cs deleted file mode 100644 index 7ec75a1..0000000 --- a/1.3/Source/Patches/RimworldPatches/HarmonyPatch_PawnRotation.cs +++ /dev/null @@ -1,29 +0,0 @@ -using HarmonyLib; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Verse; - -namespace Rimworld_Animations { - [HarmonyPatch(typeof(Thing), "Rotation", MethodType.Getter)] - public static class HarmonyPatch_PawnRotation { - - public static bool Prefix(Thing __instance, ref Rot4 __result) { - - if(!(__instance is Pawn) || (__instance as Pawn)?.TryGetComp() == null || !(__instance as Pawn).TryGetComp().isAnimating) { - return true; - } - - Pawn pawn = (__instance as Pawn); - __result = pawn.TryGetComp().bodyFacing; - - return false; - - - } - - } - -} diff --git a/1.3/Source/Patches/RimworldPatches/HarmonyPatch_Pawn_DrawTracker.cs b/1.3/Source/Patches/RimworldPatches/HarmonyPatch_Pawn_DrawTracker.cs deleted file mode 100644 index 5cdcfce..0000000 --- a/1.3/Source/Patches/RimworldPatches/HarmonyPatch_Pawn_DrawTracker.cs +++ /dev/null @@ -1,26 +0,0 @@ -using HarmonyLib; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using UnityEngine; -using Verse; - -namespace Rimworld_Animations { - - [HarmonyPatch(typeof(Pawn_DrawTracker), "DrawPos", MethodType.Getter)] - public static class HarmonyPatch_Pawn_DrawTracker { - public static bool Prefix(ref Pawn ___pawn, ref Vector3 __result) { - - CompBodyAnimator bodyAnim = ___pawn.TryGetComp(); - - if (bodyAnim != null && bodyAnim.isAnimating) { - __result = ___pawn.TryGetComp().anchor + ___pawn.TryGetComp().deltaPos; - - return false; - } - return true; - } - } -} diff --git a/1.3/Source/Patches/RimworldPatches/HarmonyPatch_SetPawnAnimatable.cs b/1.3/Source/Patches/RimworldPatches/HarmonyPatch_SetPawnAnimatable.cs deleted file mode 100644 index b8c66b8..0000000 --- a/1.3/Source/Patches/RimworldPatches/HarmonyPatch_SetPawnAnimatable.cs +++ /dev/null @@ -1,40 +0,0 @@ -using HarmonyLib; -using RimWorld; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection.Emit; -using System.Text; -using System.Threading.Tasks; -using UnityEngine; -using Verse; - -namespace Rimworld_Animations -{ - [HarmonyPatch(typeof(PawnRenderer), "RenderPawnAt")] - public static class PawnRenderer_RenderPawnAt_Patch - { - static bool ClearCache(Pawn pawn) - { - return pawn.IsInvisible() || (pawn.TryGetComp() != null && pawn.TryGetComp().isAnimating); - } - - public static IEnumerable Transpiler(IEnumerable instructions) - { - var list = instructions.ToList(); - - foreach (CodeInstruction i in instructions) - { - if (i.OperandIs(AccessTools.Method(typeof(PawnUtility), "IsInvisible"))) - { - yield return new CodeInstruction(OpCodes.Call, AccessTools.Method(typeof(PawnRenderer_RenderPawnAt_Patch), "ClearCache")); - } - else - { - yield return i; - } - } - } - } - -} diff --git a/1.3/Source/Settings/AnimationSettings.cs b/1.3/Source/Settings/AnimationSettings.cs deleted file mode 100644 index 0a96621..0000000 --- a/1.3/Source/Settings/AnimationSettings.cs +++ /dev/null @@ -1,98 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Verse; -using UnityEngine; -using RimWorld; - -namespace Rimworld_Animations { - - public class AnimationSettings : ModSettings { - - public static bool orgasmQuiver, rapeShiver, soundOverride = true, hearts = true, controlGenitalRotation = false, applySemenOnAnimationOrgasm = false, fastAnimForQuickie = false, - PlayAnimForNonsexualActs = true; - public static bool offsetTab = false, debugMode = false; - public static float shiverIntensity = 2f; - - public static Dictionary offsets = new Dictionary(); - public static Dictionary rotation = new Dictionary(); - - public override void ExposeData() { - - base.ExposeData(); - - Scribe_Values.Look(ref debugMode, "RJWAnimations-AnimsDebugMode", false); - Scribe_Values.Look(ref offsetTab, "RJWAnimations-EnableOffsetTab", false); - Scribe_Values.Look(ref controlGenitalRotation, "RJWAnimations-controlGenitalRotation", false); - Scribe_Values.Look(ref orgasmQuiver, "RJWAnimations-orgasmQuiver"); - Scribe_Values.Look(ref fastAnimForQuickie, "RJWAnimations-fastAnimForQuickie"); - Scribe_Values.Look(ref rapeShiver, "RJWAnimations-rapeShiver"); - Scribe_Values.Look(ref hearts, "RJWAnimation-sheartsOnLovin"); - Scribe_Values.Look(ref PlayAnimForNonsexualActs, "RJWAnims-PlayAnimForNonsexualActs"); - Scribe_Values.Look(ref applySemenOnAnimationOrgasm, "RJWAnimations-applySemenOnOrgasm", false); - Scribe_Values.Look(ref soundOverride, "RJWAnimations-rjwAnimSoundOverride", true); - Scribe_Values.Look(ref shiverIntensity, "RJWAnimations-shiverIntensity", 2f); - //todo: save offsetsByDefName - - Scribe_Collections.Look(ref offsets, "RJWAnimations-animationOffsets"); - Scribe_Collections.Look(ref rotation, "RJWAnimations-rotationOffsets"); - - - - //needs to be rewritten - //probably somewhere in options? - - } - - } - - public class RJW_Animations : Mod { - - public RJW_Animations(ModContentPack content) : base(content) { - GetSettings(); - - } - - public override void DoSettingsWindowContents(Rect inRect) { - - Listing_Standard listingStandard = new Listing_Standard(); - listingStandard.Begin(inRect); - - listingStandard.CheckboxLabeled("Enable Sound Override", ref AnimationSettings.soundOverride); - listingStandard.CheckboxLabeled("Control Genital Rotation", ref AnimationSettings.controlGenitalRotation); - listingStandard.CheckboxLabeled("Play Fast Animation for Quickie", ref AnimationSettings.fastAnimForQuickie); - listingStandard.CheckboxLabeled("Apply Semen on Animation Orgasm", ref AnimationSettings.applySemenOnAnimationOrgasm); - - if(AnimationSettings.applySemenOnAnimationOrgasm) { - listingStandard.Label("Recommended--turn down \"Cum on body percent\" in RJW settings to about 33%"); - } - - listingStandard.CheckboxLabeled("Enable Orgasm Quiver", ref AnimationSettings.orgasmQuiver); - listingStandard.CheckboxLabeled("Enable Rape Shiver", ref AnimationSettings.rapeShiver); - listingStandard.CheckboxLabeled("Enable hearts during lovin'", ref AnimationSettings.hearts); - listingStandard.CheckboxLabeled("Play animation for nonsexual acts (handholding, makeout)", ref AnimationSettings.PlayAnimForNonsexualActs); - listingStandard.CheckboxLabeled("Enable Animation Manager Tab", ref AnimationSettings.offsetTab); - - listingStandard.Label("Shiver/Quiver Intensity (default 2): " + AnimationSettings.shiverIntensity); - AnimationSettings.shiverIntensity = listingStandard.Slider(AnimationSettings.shiverIntensity, 0.0f, 12f); - - listingStandard.CheckboxLabeled("Debug Mode", ref AnimationSettings.debugMode); - - - listingStandard.End(); - base.DoSettingsWindowContents(inRect); - } - - public override void WriteSettings() { - base.WriteSettings(); - OffsetMainButtonDefOf.OffsetManager.buttonVisible = AnimationSettings.offsetTab; - - } - - public override string SettingsCategory() { - return "RJW Animation Settings"; - } - } -} diff --git a/1.3/Source/Utilities/AnimationUtility.cs b/1.3/Source/Utilities/AnimationUtility.cs deleted file mode 100644 index a75fc32..0000000 --- a/1.3/Source/Utilities/AnimationUtility.cs +++ /dev/null @@ -1,319 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using RimWorld; -using rjw.Modules.Interactions.Helpers; -using rjw.Modules.Interactions.Objects; -using UnityEngine; -using Verse; -using Verse.AI; -using rjw.Modules.Interactions.Enums; - -namespace Rimworld_Animations { - public static class AnimationUtility { - /* - Note: always make the list in this order: - Female pawns, animal female pawns, male pawns, animal male pawns - */ - public static AnimationDef tryFindAnimation(ref List participants, rjw.xxx.rjwSextype sexType = 0, rjw.SexProps sexProps = null) { - - - InteractionWithExtension interaction = InteractionHelper.GetWithExtension(sexProps.dictionaryKey); - - - if(interaction.HasInteractionTag(InteractionTag.Reverse)) - { - Pawn buffer = participants[1]; - participants[1] = participants[0]; - participants[0] = buffer; - } - - participants = - participants.OrderBy(p => p.jobs.curDriver is rjw.JobDriver_SexBaseInitiator) - .OrderBy(p => rjw.xxx.can_fuck(p)) - .ToList(); - - - List localParticipants = new List(participants); - - IEnumerable options = DefDatabase.AllDefs.Where((AnimationDef x) => { - - - if (x.actors.Count != localParticipants.Count) { - return false; - } - for (int i = 0; i < x.actors.Count; i++) { - - if (rjw.RJWPreferenceSettings.Malesex == rjw.RJWPreferenceSettings.AllowedSex.Nohomo) { - if (rjw.xxx.is_male(localParticipants[i]) && x.actors[i].isFucked) { - return false; - } - } - if (x.actors[i].requiredGender != null && !x.actors[i].requiredGender.Contains(localParticipants[i].gender.ToStringSafe())) - { - if (AnimationSettings.debugMode) - { - Log.Message(string.Concat(new string[] - { - x.defName.ToStringSafe(), - " not selected -- ", - localParticipants[i].def.defName.ToStringSafe(), - " ", - localParticipants[i].Name.ToStringSafe(), - " does not match required gender" - })); - } - return false; - } - if ((x.actors[i].blacklistedRaces != null) && x.actors[i].blacklistedRaces.Contains(localParticipants[i].def.defName)) { - if(AnimationSettings.debugMode) - Log.Message(x.defName.ToStringSafe() + " not selected -- " + localParticipants[i].def.defName.ToStringSafe() + " " + localParticipants[i].Name.ToStringSafe() + " is blacklisted"); - return false; - } - - if(x.actors[i].defNames.Contains("Human")) { - if (!rjw.xxx.is_human(localParticipants[i])) { - if (AnimationSettings.debugMode) - Log.Message(x.defName.ToStringSafe() + " not selected -- " + localParticipants[i].def.defName.ToStringSafe() + " " + localParticipants[i].Name.ToStringSafe() + " is not human"); - - return false; - } - - } - else if (!x.actors[i].bodyDefTypes.Contains(localParticipants[i].RaceProps.body)) { - - if (!x.actors[i].defNames.Contains(localParticipants[i].def.defName)) { - - if (rjw.RJWSettings.DevMode) { - string animInfo = x.defName.ToStringSafe() + " not selected -- " + localParticipants[i].def.defName.ToStringSafe() + " " + localParticipants[i].Name.ToStringSafe() + " is not "; - foreach(String defname in x.actors[i].defNames) { - animInfo += defname + ", "; - } - if (AnimationSettings.debugMode) - Log.Message(animInfo); - } - - return false; - } - } - //genitals checking - - if(!GenitalCheckForPawn(x.actors[i].requiredGenitals, localParticipants[i], out string failReason)) { - Debug.Log("Didn't select " + x.defName + ", " + localParticipants[i].Name + " " + failReason); - return false; - } - - //TESTING ANIMATIONS ONLY REMEMBER TO COMMENT OUT BEFORE PUSH - /* - if (x.defName != "Cunnilingus") - return false; - */ - - - if (x.actors[i].isFucking && !rjw.xxx.can_fuck(localParticipants[i])) { - if (AnimationSettings.debugMode) - Log.Message(x.defName.ToStringSafe() + " not selected -- " + localParticipants[i].def.defName.ToStringSafe() + " " + localParticipants[i].Name.ToStringSafe() + " can't fuck"); - return false; - } - - if (x.actors[i].isFucked && !rjw.xxx.can_be_fucked(localParticipants[i])) { - if (AnimationSettings.debugMode) - Log.Message(x.defName.ToStringSafe() + " not selected -- " + localParticipants[i].def.defName.ToStringSafe() + " " + localParticipants[i].Name.ToStringSafe() + " can't be fucked"); - return false; - } - } - return true; - }); - List optionsWithInteractionType = options.ToList().FindAll(x => x.interactionDefTypes != null && x.interactionDefTypes.Contains(sexProps.sexType.ToStringSafe())); - if (optionsWithInteractionType.Any()) { - if (AnimationSettings.debugMode) - Log.Message("Selecting animation for interaction type " + sexProps.sexType.ToStringSafe() + "..."); - return optionsWithInteractionType.RandomElement(); - } - List optionsWithSexType = options.ToList().FindAll(x => x.sexTypes != null && x.sexTypes.Contains(sexType)); - if (optionsWithSexType.Any()) { - if (AnimationSettings.debugMode) - Log.Message("Selecting animation for rjwSexType " + sexType.ToStringSafe() + "..."); - return optionsWithSexType.RandomElement(); - } - - /* - if(optionsWithInitiator.Any()) { - if (AnimationSettings.debugMode) - Log.Message("Selecting animation for initiators..."); - } - */ - - if (options != null && options.Any()) { - if (AnimationSettings.debugMode) - Log.Message("Randomly selecting animation..."); - return options.RandomElement(); - } - else - return null; - } - - public static void RenderPawnHeadMeshInAnimation1(Mesh mesh, Vector3 loc, Quaternion quaternion, Material material, bool drawNow, Pawn pawn) { - - if (pawn == null || pawn.Map != Find.CurrentMap) { - GenDraw.DrawMeshNowOrLater(mesh, loc, quaternion, material, drawNow); - return; - } - - CompBodyAnimator pawnAnimator = pawn.TryGetComp(); - - if (pawnAnimator == null || !pawnAnimator.isAnimating) { - GenDraw.DrawMeshNowOrLater(mesh, loc, quaternion, material, drawNow); - } else { - Vector3 pawnHeadPosition = pawnAnimator.getPawnHeadPosition(); - pawnHeadPosition.y = loc.y; - GenDraw.DrawMeshNowOrLater(MeshPool.humanlikeHeadSet.MeshAt(pawnAnimator.headFacing), pawnHeadPosition, Quaternion.AngleAxis(pawnAnimator.headAngle, Vector3.up), material, true); - } - } - - public static void AdjustHead(ref Quaternion quat, ref Rot4 bodyFacing, ref Vector3 pos, ref float angle, Pawn pawn, PawnRenderFlags flags) - { - if (flags.FlagSet(PawnRenderFlags.Portrait)) return; - - CompBodyAnimator anim = pawn.TryGetComp(); - if (anim.isAnimating) - { - bodyFacing = anim.headFacing; - angle = anim.headAngle; - quat = Quaternion.AngleAxis(anim.headAngle, Vector3.up); - pos = anim.getPawnHeadOffset(); - - } - } - - public static void RenderPawnHeadMeshInAnimation(Mesh mesh, Vector3 loc, Quaternion quaternion, Material material, bool portrait, Pawn pawn, float bodySizeFactor = 1) { - - if (pawn == null) { - GenDraw.DrawMeshNowOrLater(mesh, loc, quaternion, material, portrait); - return; - } - - CompBodyAnimator pawnAnimator = pawn.TryGetComp(); - - if (pawnAnimator == null || !pawnAnimator.isAnimating || portrait) { - GenDraw.DrawMeshNowOrLater(mesh, loc, quaternion, material, portrait); - } - else { - Vector3 pawnHeadPosition = pawnAnimator.getPawnHeadPosition(); - pawnHeadPosition.x *= bodySizeFactor; - pawnHeadPosition.x *= bodySizeFactor; - pawnHeadPosition.y = loc.y; - GenDraw.DrawMeshNowOrLater(mesh, pawnHeadPosition, Quaternion.AngleAxis(pawnAnimator.headAngle, Vector3.up), material, portrait); - } - } - - public static bool GenitalCheckForPawn(List requiredGenitals, Pawn pawn, out string failReason) { - - failReason = null; - if (requiredGenitals != null) { - if (requiredGenitals.Contains("Vagina")) { - - if (!rjw.Genital_Helper.has_vagina(pawn)) { - failReason = "missing vagina"; - return false; - } - - } - - if (requiredGenitals.Contains("Penis")) { - - if (!(rjw.Genital_Helper.has_multipenis(pawn) || rjw.Genital_Helper.has_penis_infertile(pawn) || rjw.Genital_Helper.has_penis_fertile(pawn) || rjw.Genital_Helper.has_ovipositorM(pawn) || rjw.Genital_Helper.has_ovipositorF(pawn))) { - failReason = "missing penis"; - return false; - } - - } - - if (requiredGenitals.Contains("Mouth")) { - - if (!rjw.Genital_Helper.has_mouth(pawn)) { - failReason = "missing mouth"; - return false; - } - - } - - if (requiredGenitals.Contains("Anus")) { - - if (!rjw.Genital_Helper.has_anus(pawn)) { - failReason = "missing anus"; - return false; - } - - } - - if (requiredGenitals.Contains("Breasts")) { - if (!rjw.Genital_Helper.can_do_breastjob(pawn)) { - failReason = "missing breasts"; - return false; - } - } - - if (requiredGenitals.Contains("NoVagina")) { - - if (rjw.Genital_Helper.has_vagina(pawn)) { - failReason = "has vagina"; - return false; - } - - } - - if (requiredGenitals.Contains("NoPenis")) { - - if ((rjw.Genital_Helper.has_multipenis(pawn) || rjw.Genital_Helper.has_penis_infertile(pawn) || rjw.Genital_Helper.has_penis_fertile(pawn))) { - failReason = "has penis"; - return false; - } - - } - - if (requiredGenitals.Contains("NoMouth")) { - - if (rjw.Genital_Helper.has_mouth(pawn)) { - failReason = "has mouth"; - return false; - } - - } - - if (requiredGenitals.Contains("NoAnus")) { - - if (rjw.Genital_Helper.has_anus(pawn)) { - failReason = "has anus"; - return false; - } - - } - - if (requiredGenitals.Contains("NoBreasts")) { - if (rjw.Genital_Helper.can_do_breastjob(pawn)) { - failReason = "has breasts"; - return false; - } - } - } - - return true; - - } - - public static Rot4 PawnHeadRotInAnimation(Pawn pawn, Rot4 regularPos) - { - Debug.Log("Test"); - - if(pawn?.TryGetComp() != null && pawn.TryGetComp().isAnimating) - { - return pawn.TryGetComp().headFacing; - } - - return regularPos; - } - } -} diff --git a/1.3/Source/Utilities/PatchOperationAddOrReplace.cs b/1.3/Source/Utilities/PatchOperationAddOrReplace.cs deleted file mode 100644 index 4e1bd85..0000000 --- a/1.3/Source/Utilities/PatchOperationAddOrReplace.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Xml; -using Verse; - -namespace Rimworld_Animations -{ - public class PatchOperationAddOrReplace : PatchOperationPathed - { - - protected string key; - private XmlContainer value; - - protected override bool ApplyWorker(XmlDocument xml) - { - XmlNode valNode = value.node; - bool result = false; - IEnumerator enumerator = xml.SelectNodes(xpath).GetEnumerator(); - try - { - while (enumerator.MoveNext()) - { - object obj = enumerator.Current; - result = true; - XmlNode parentNode = obj as XmlNode; - XmlNode xmlNode = parentNode.SelectSingleNode(key); - if (xmlNode == null) - { - // Add - Add node if not existing - xmlNode = parentNode.OwnerDocument.CreateElement(key); - parentNode.AppendChild(xmlNode); - } - else - { - // Replace - Clear existing children - xmlNode.RemoveAll(); - } - // (Re)add value - xmlNode.AppendChild(parentNode.OwnerDocument.ImportNode(valNode.FirstChild, true)); - } - } - finally - { - IDisposable disposable = enumerator as IDisposable; - if (disposable != null) - { - disposable.Dispose(); - } - } - return result; - } - - } - -} diff --git a/1.3/Textures/UI/MainTab.png b/1.3/Textures/UI/MainTab.png deleted file mode 100644 index 92f855f..0000000 Binary files a/1.3/Textures/UI/MainTab.png and /dev/null differ diff --git a/1.4/Assemblies/Rimworld-Animations.dll b/1.4/Assemblies/Rimworld-Animations.dll deleted file mode 100644 index cfec529..0000000 Binary files a/1.4/Assemblies/Rimworld-Animations.dll and /dev/null differ diff --git a/1.4/Defs/AnimationDefs/AggressiveDoggy.xml b/1.4/Defs/AnimationDefs/AggressiveDoggy.xml deleted file mode 100644 index 1a9098c..0000000 --- a/1.4/Defs/AnimationDefs/AggressiveDoggy.xml +++ /dev/null @@ -1,1534 +0,0 @@ - - - - SurpriseAnal - - true - -
  • None
  • -
  • Anal
  • -
  • Vaginal
  • -
    - -
  • AnalRape
  • -
  • VaginalRape
  • -
    - -
  • - -
  • Human
  • - - -
  • Anus
  • -
  • Vagina
  • -
    - - (0, 0.02) - - -
  • - -
  • Human
  • - - - (0.05, 0) - (0.12, -0.03) - (0.2, 0.15) - (0, 0.1) - - true - true - -
    - -
  • - SurpriseAnal - 0 - 147 - 147 - false - -
  • - Pawn - -
  • - 20 - 59.1421852 - 34.3620377 - 0.009598374 - 0.7186958 - -0.184436634 - 2 - 1 - false -
  • -
  • - 55 - 59.1421852 - 34.3620377 - 0.009598374 - 0.777692854 - -0.188369825 - 2 - 1 -
  • -
  • - 1 - 58.53158 - 34.3620377 - 0.009598374 - 0.8240476 - -0.188369825 - 2 - 1 -
  • -
  • - 6 - 58.52048 - 34.3620377 - 0.009598374 - 0.824890435 - -0.188369825 - 2 - 1 -
  • -
  • - 5 - 49.6041222 - 4.66740751 - 0.009598374 - 0.8681547 - -0.101840809 - 1 - 1 -
  • -
  • - 59 - 39.181385 - 4.66740751 - 0.009598374 - 0.8878205 - -0.0113786012 - 1 - 1 -
  • -
  • - 1 - 49.6041222 - 4.66740751 - 0.009598374 - 0.8681547 - -0.101840809 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - 40 - 10.116 - 14.922 - 0 - -0.154 - 0.112 - 1 - 1 -
  • -
  • - 18 - 17.979 - 14.922 - 0 - 0.079 - 0.165 - 1 - 1 - 32.966 -
  • -
  • - 5 - 20.754 - 14.922 - 0 - 0.13 - 0.189 - 1 - 1 - 32 -
  • -
  • - 5 - 21.525 - 14.922 - 0 - 0.144 - 0.195 - 1 - 1 - 15 -
  • -
  • - 7 - 22.296 - 14.922 - 0 - 0.158 - 0.202 - 1 - 1 - 32 -
  • -
  • - 71 - Fuck - -11.728 - 14.922 - 0 - 0.249 - 0.248 - 1 - 1 - 27 -
  • -
  • - 1 - 10.62 - 19.653 - 0 - 0.225 - 0.271 - 1 - 1 - 32 -
  • - - - - -
  • - HeadTilt - 0 - 40 - 40 - false - -
  • - Pawn - -
  • - 5 - 49.6041222 - 4.66740751 - 0.009598374 - 0.8681547 - -0.101840809 - 1 - 1 -
  • -
  • - 8 - 49.6041222 - 4.66740751 - 0.009598374 - 0.8327563 - -0.101840809 - 1 - 1 -
  • -
  • - 26 - 42.0564079 - -4.599214 - 0.009598374 - 0.9187941 - -0.0035123378 - 1 - 1 -
  • -
  • - 1 - 49.6041222 - -25.5749664 - 0.009598374 - 0.8681547 - -0.101840809 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - 5 - 10.62 - 19.653 - 0 - 0.225 - 0.271 - 1 - 1 - 32 -
  • -
  • - 34 - Fuck - -22.045 - 19.653 - 0 - 0.351061 - 0.2828664 - 1 - 1 - 40 -
  • -
  • - 1 - 10.62 - 19.653 - 0 - 0.225 - 0.271 - 1 - 1 - 32 -
  • - - - - -
  • - HeadUp - 0 - 320 - 40 - true - -
  • - Pawn - -
  • - 5 - 49.6041222 - -25.5749664 - 0.009598374 - 0.8681547 - -0.101840809 - 1 - 1 -
  • -
  • - 8 - 49.6041222 - -22.5488052 - 0.009598374 - 0.8327563 - -0.101840809 - 1 - 1 -
  • -
  • - 26 - 42.0564079 - -4.599214 - 0.009598374 - 0.9187941 - -0.0035123378 - 1 - 1 -
  • -
  • - 1 - 49.6041222 - -25.5749664 - 0.009598374 - 0.8681547 - -0.101840809 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - 5 - 10.62 - 19.653 - 0 - 0.225 - 0.271 - 1 - 1 - 32 -
  • -
  • - 34 - Fuck - -22.045 - 19.653 - 0 - 0.351061 - 0.2828664 - 1 - 1 - 40 -
  • -
  • - 1 - 10.62 - 19.653 - 0 - 0.225 - 0.271 - 1 - 1 - 32 -
  • - - - - -
  • - LeanForward - 0 - 40 - 40 - false - -
  • - Pawn - -
  • - 24 - 49.6041222 - -25.5749664 - 0.009598374 - 0.8681547 - -0.101840809 - 1 - 1 -
  • -
  • - 6 - 60.4049644 - 1.61688948 - 0.009598374 - 0.8740543 - -0.172637418 - 1 - 1 -
  • -
  • - 4 - 65.2660446 - 1.61688948 - 0.009598374 - 0.8917534 - -0.192303136 - 1 - 1 -
  • -
  • - 5 - 62.2992134 - 1.40611315 - 0.009598374 - 0.9379204 - -0.168517023 - 1 - 1 -
  • -
  • - 1 - 60.4049644 - 1.61688948 - 0.009598374 - 0.8917534 - -0.168704227 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - 24 - 10.62 - 19.653 - 0 - 0.225 - 0.271 - 1 - 1 - 32 -
  • -
  • - 6 - 48.448 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • -
  • - 4 - 50.473 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • -
  • - 5 - Fuck - 23.512 - 19.653 - 0 - 0.546 - 0.245 - 1 - 1 - 50 -
  • -
  • - 1 - 46.041 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • - - - - -
  • - Superfast - 0 - 56 - 14 - true - -
  • - Pawn - -
  • - 4 - 60.4049644 - 1.61688948 - 0.009598374 - 0.8917534 - -0.168704227 - 1 - 1 -
  • -
  • - 3 - 60.4049644 - 1.61688948 - 0.009598374 - 0.895686448 - -0.166737691 - 1 - 1 -
  • -
  • - 6 - 62.2992134 - 1.40611315 - 0.009598374 - 0.9379204 - -0.168517023 - 1 - 1 -
  • -
  • - 1 - 60.4049644 - 1.61688948 - 0.009598374 - 0.8917534 - -0.168704227 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - 4 - 46.041 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • -
  • - 3 - 54.333 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • -
  • - 6 - Fuck - 23.512 - 19.653 - 0 - 0.593 - 0.186 - 1 - 1 - 60 -
  • -
  • - 1 - 46.041 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • - - - - -
  • - HeadTiltSuperFast - 0 - 112 - 14 - true - -
  • - Pawn - -
  • - 4 - 60.4049644 - 43.7031746 - 0.009598374 - 0.8917534 - -0.168704227 - 2 - 1 -
  • -
  • - 3 - 60.4049644 - 36.10043 - 0.009598374 - 0.895686448 - -0.166737691 - 2 - 1 -
  • -
  • - 6 - 62.2992134 - 52.47133 - 0.009598374 - 0.9379204 - -0.168517023 - 2 - 1 -
  • -
  • - 1 - 60.4049644 - 37.50244 - 0.009598374 - 0.8917534 - -0.168704227 - 2 - 1 -
  • - - -
  • - LayingPawn - -
  • - 4 - 46.041 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • -
  • - 3 - 54.333 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • -
  • - 6 - Fuck - 23.512 - 19.653 - 0 - 0.562 - 0.182 - 1 - 1 - 60 -
  • -
  • - 1 - 46.041 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • - - - - -
  • - SuperfastFacedown - 0 - 210 - 14 - true - -
  • - Pawn - -
  • - 2 - 60.4049644 - 62.89787 - 0.009598374 - 0.8917534 - -0.168704227 - 1 - 1 -
  • -
  • - 5 - 60.4049644 - 63.9160767 - 0.009598374 - 0.8917534 - -0.168704227 - 1 - 1 -
  • -
  • - 2 - 60.4049644 - 65.049614 - 0.009598374 - 0.895686448 - -0.166737691 - 1 - 1 -
  • -
  • - 4 - 62.2992134 - 59.6089859 - 0.009598374 - 0.9379204 - -0.168517023 - 1 - 1 -
  • -
  • - 1 - 60.4049644 - 62.89787 - 0.009598374 - 0.8917534 - -0.168704227 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - 2 - 46.041 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • -
  • - 5 - 46.041 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • -
  • - 2 - 54.333 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • -
  • - 4 - Fuck - 23.512 - 19.653 - 0 - 0.591 - 0.194 - 1 - 1 - 60 -
  • -
  • - 1 - 46.041 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • - - - - -
  • - SuperfastHeadTiltUp - 0 - 36 - 36 - false - -
  • - Pawn - -
  • - 3 - 60.4049644 - 63.9160767 - 0.009598374 - 0.8917534 - -0.168704227 - 1 - 1 -
  • -
  • - 2 - 60.4049644 - 45.1198158 - 0.009598374 - 0.895686448 - -0.166737691 - 1 - 1 -
  • -
  • - 6 - 62.2992134 - 32.70548 - 0.009598374 - 0.9379204 - -0.168517023 - 1 - 1 -
  • -
  • - 3 - 60.4049644 - 23.617775 - 0.009598374 - 0.8917534 - -0.168704227 - 1 - 1 -
  • -
  • - 2 - 60.4049644 - 13.3330221 - 0.009598374 - 0.895686448 - -0.166737691 - 1 - 1 -
  • -
  • - 6 - 62.2992134 - 18.4331627 - 0.009598374 - 0.9379204 - -0.168517023 - 1 - 1 -
  • -
  • - 3 - 60.4049644 - 6.483466 - 0.009598374 - 0.8917534 - -0.168704227 - 1 - 1 -
  • -
  • - 2 - 60.4049644 - 7.298557 - 0.009598374 - 0.895686448 - -0.166737691 - 1 - 1 -
  • -
  • - 8 - 62.2992134 - 2.71663713 - 0.009598374 - 0.9379204 - -0.168517023 - 1 - 1 -
  • -
  • - 1 - 60.4049644 - -25.0596066 - 0.009598374 - 0.8917534 - -0.168704227 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - 3 - 46.041 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • -
  • - 2 - 54.333 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • -
  • - 6 - Fuck - 23.512 - 19.653 - 0 - 0.591 - 0.194 - 1 - 1 - 60 -
  • -
  • - 3 - 46.041 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • -
  • - 2 - 54.333 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • -
  • - 6 - Fuck - 23.512 - 19.653 - 0 - 0.591 - 0.194 - 1 - 1 - 60 -
  • -
  • - 3 - 46.041 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • -
  • - 2 - 54.333 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • -
  • - 8 - Fuck - 23.512 - 19.653 - 0 - 0.591 - 0.194 - 1 - 1 - 60 -
  • -
  • - 1 - 46.041 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • - - - - -
  • - Superfastheadtilted - 0 - 420 - 12 - true - -
  • - Pawn - -
  • - 3 - 60.4049644 - -25.0596066 - 0.009598374 - 0.8917534 - -0.168704227 - 1 - 1 -
  • -
  • - 3 - 60.4049644 - -18.6158123 - 0.009598374 - 0.895686448 - -0.166737691 - 1 - 1 -
  • -
  • - 5 - 62.2992134 - -21.62202 - 0.009598374 - 0.9379204 - -0.168517023 - 1 - 1 -
  • -
  • - 1 - 60.4049644 - -25.0596066 - 0.009598374 - 0.8917534 - -0.168704227 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - 3 - 46.041 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • -
  • - 3 - 54.333 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • -
  • - 5 - Fuck - 23.512 - 19.653 - 0 - 0.593 - 0.186 - 1 - 1 - 60 -
  • -
  • - 1 - 46.041 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • - - - - -
  • - HeadTiltSuperFast (Clone) - 0 - 112 - 14 - true - -
  • - Pawn - -
  • - 4 - 60.4049644 - 43.7031746 - 0.009598374 - 0.8917534 - -0.168704227 - 2 - 1 -
  • -
  • - 3 - 60.4049644 - 36.10043 - 0.009598374 - 0.895686448 - -0.166737691 - 2 - 1 -
  • -
  • - 6 - 62.2992134 - 52.47133 - 0.009598374 - 0.9379204 - -0.168517023 - 2 - 1 -
  • -
  • - 1 - 60.4049644 - 37.50244 - 0.009598374 - 0.8917534 - -0.168704227 - 2 - 1 -
  • - - -
  • - LayingPawn - -
  • - 4 - 46.041 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • -
  • - 3 - 54.333 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • -
  • - 6 - Fuck - 23.512 - 19.653 - 0 - 0.562 - 0.182 - 1 - 1 - 60 -
  • -
  • - 1 - 46.041 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • - - - - -
  • - Superfastheadtilted (Clone) - 0 - 420 - 12 - true - -
  • - Pawn - -
  • - 3 - 60.4049644 - -25.0596066 - 0.009598374 - 0.8917534 - -0.168704227 - 1 - 1 -
  • -
  • - 3 - 60.4049644 - -18.6158123 - 0.009598374 - 0.895686448 - -0.166737691 - 1 - 1 -
  • -
  • - 5 - 62.2992134 - -21.62202 - 0.009598374 - 0.9379204 - -0.168517023 - 1 - 1 -
  • -
  • - 1 - 60.4049644 - -25.0596066 - 0.009598374 - 0.8917534 - -0.168704227 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - 3 - 46.041 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • -
  • - 3 - 54.333 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • -
  • - 5 - Fuck - 23.512 - 19.653 - 0 - 0.593 - 0.186 - 1 - 1 - 60 -
  • -
  • - 1 - 46.041 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • - - - - -
  • - Superfastheadtilted (Clone) - 0 - 240 - 80 - true - -
  • - Pawn - -
  • - 9 - 60.4049644 - -25.0596066 - 0.009598374 - 0.8917534 - -0.168704227 - 1 - 1 - true -
  • -
  • - 7 - 60.4049644 - -18.6158123 - 0.009598374 - 0.895686448 - -0.166737691 - 1 - 1 - true -
  • -
  • - 15 - Fuck - 62.2992134 - -21.62202 - 0.009598374 - 0.9379204 - -0.168517023 - 1 - 1 - true -
  • -
  • - 48 - Cum - 62.2992134 - -21.62202 - 0.009598374 - 0.9379204 - -0.168517023 - 1 - 1 - true -
  • -
  • - 1 - 60.4049644 - -25.0596066 - 0.009598374 - 0.8917534 - -0.168704227 - 1 - 1 - true -
  • - - -
  • - LayingPawn - -
  • - 9 - 46.041 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • -
  • - 7 - 54.333 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • -
  • - 15 - Slimy - 23.512 - 19.653 - 0 - 0.593 - 0.186 - 1 - 1 - 60 -
  • -
  • - 48 - 33.548 - 19.653 - 0 - 0.593 - 0.186 - 1 - 1 - 60 -
  • -
  • - 1 - None - 46.041 - 19.653 - 0 - 0.489 - 0.236 - 1 - 1 - 60 -
  • - - - - -
    -
    -
    \ No newline at end of file diff --git a/1.4/Defs/AnimationDefs/AnimationDefs.rar b/1.4/Defs/AnimationDefs/AnimationDefs.rar deleted file mode 100644 index e7bf2a1..0000000 Binary files a/1.4/Defs/AnimationDefs/AnimationDefs.rar and /dev/null differ diff --git a/1.4/Defs/AnimationDefs/Animations_Beast.xml b/1.4/Defs/AnimationDefs/Animations_Beast.xml deleted file mode 100644 index 30d14fc..0000000 --- a/1.4/Defs/AnimationDefs/Animations_Beast.xml +++ /dev/null @@ -1,2180 +0,0 @@ - - - - Dog_Doggystyle - - true - -
  • Anal
  • -
  • Vaginal
  • -
    - - -
  • VaginalBreeding
  • -
  • AnalBreeding
  • -
    - - -
  • - -
  • Human
  • - - true - -
  • - -
  • Wolf_Timber
  • -
  • Wolf_Arctic
  • -
  • Whitefox
  • -
  • Warg
  • -
  • Husky
  • -
  • LabradorRetriever
  • - -
  • AEXP_WelshTerrier
  • -
  • AEXP_Rottweiler
  • -
  • AEXP_Poodle
  • -
  • AEXP_GreatDane
  • -
  • AEXP_GermanShepherd
  • -
  • AEXP_FrenchBulldog
  • -
  • AEXP_Corgi
  • -
  • AEXP_CatAbyssinian
  • -
  • AEXP_CatBengal
  • -
  • AEXP_CatMaineCoon
  • -
  • AEXP_CatSphynx
  • - - -
  • QuadrupedAnimalWithHooves
  • -
  • QuadrupedAnimalWithPawsAndTail
  • -
    - true - true - -
    - - - - -
  • - Fuck - true - 765 - 0 - -
  • - LayingPawn - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 - 0 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • -
  • - 6 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 2 -
  • -
  • - 1 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • - -
  • - - 10 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • -
  • - 6 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 2 -
  • -
  • - 1 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • - -
  • - - 10 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • -
  • - 6 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 2 -
  • -
  • - 1 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • - -
  • - - 10 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • -
  • - 6 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 2 -
  • -
  • - 1 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • - - -
  • - - 10 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • -
  • - 6 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 2 -
  • -
  • - 1 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • - -
  • - - 10 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • -
  • - 6 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 2 -
  • -
  • - 1 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • - -
  • - - 10 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • -
  • - 6 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 2 -
  • -
  • - 1 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • - -
  • - - 10 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • -
  • - 6 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 2 -
  • -
  • - 1 - 56.7 - 27.5 - 0.057 - -0.038 - 1 - 2 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • - -
  • - - 10 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 -
  • -
  • - 6 - 53.7 - 5.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 1 - 56.7 - 7.5 - 0.057 - -0.038 - 1 - 1 - 0 -
  • - - - -
  • - -
  • - - 8 - -33.7 - 0 - -0.492 - 0.266 - 1 - 0 - 0 -
  • -
  • - 8 - Fuck - -39.6 - 0 - -0.353 - 0.256 - 1 - 0 -
  • -
  • - 1 - -33.7 - 0 - -0.492 - 0.266 - 1 - 0 - 0 -
  • - - - - -
  • - Knot - False - 71 - 0 - -
  • - LayingPawn - -
  • - true - 60 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 1 - 0 -
  • -
  • - 6 - Cum - 53.7 - 28.4 - 0.068 - -0.038 - 1 - 1 -
  • -
  • - 4 - 51.7 - 33.4 - 0.098 - -0.038 - 1 - 1 -
  • -
  • - 1 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 1 - 0 -
  • - - - -
  • - -
  • - - 60 - -33.7 - 0 - -0.492 - 0.266 - 1 - 0 - 0 -
  • -
  • - 6 - -39.6 - 0 - -0.353 - 0.256 - 1 - 0 -
  • -
  • - 4 - Fuck - -41.6 - 0 - -0.383 - 0.256 - 1 - 0 -
  • -
  • - 1 - -39.6 - 0 - -0.353 - 0.256 - 1 - 0 - 0 -
  • - - - - - - -
  • - Cum - true - 600 - 0 - -
  • - LayingPawn - -
  • - 40 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 1 - 0 -
  • -
  • - 40 - Cum - 57.7 - 28.4 - 0.073 - -0.038 - 1 - 1 -
  • -
  • - 1 - 53.7 - 25.4 - 0.068 - -0.038 - 1 - 1 - 0 -
  • - - - -
  • - - -
  • - 10 - -39.6 - 0 - -0.353 - 0.256 - 1 - 0 - 0 -
  • -
  • - 10 - -40.6 - 0 - -0.358 - 0.256 - 1 - 0 -
  • -
  • - 10 - -39.6 - 0 - -0.353 - 0.256 - 1 - 0 -
  • -
  • - 10 - -40.6 - 0 - -0.358 - 0.256 - 1 - 0 -
  • -
  • - 10 - -39.6 - 0 - -0.353 - 0.256 - 1 - 0 -
  • -
  • - 10 - -40.6 - 0 - -0.358 - 0.256 - 1 - 0 -
  • -
  • - 10 - -39.6 - 0 - -0.353 - 0.256 - 1 - 0 -
  • -
  • - 10 - -40.6 - 0 - -0.358 - 0.256 - 1 - 0 -
  • -
  • - 1 - -39.6 - 0 - -0.353 - 0.256 - 1 - 0 - 0 -
  • - - - - - - - -
    - -
    - - Horse_Cowgirl - - true - -
  • Anal
  • -
  • Vaginal
  • -
    - - -
  • RequestVaginalBreeding
  • -
  • RequestAnalBreeding
  • -
    - - -
  • - -
  • Human
  • - - true - true - - (0, 0.2) - - -
  • - -
  • Horse
  • - - -
  • QuadrupedAnimalWithHooves
  • -
    - true - -
    - - - - -
  • - Insertion - false - 0 - -
  • - -
  • - 180 - -24.337 - -37.1218948 - 0 - 0.698042035 - -0.20718734 - 0 - 3 - 3 -
  • -
  • - 70 - -2.54239845 - 7.31265259 - 0 - 0.606091142 - -0.045959726 - 0 - 3 - 3 - Slimy -
  • -
  • - 60 - -4.84361649 - -23.6405125 - 0 - 0.650456548 - -0.0570534021 - 0 - 3 - 3 - Slimy -
  • -
  • - 1 - -35.01766 - -26.3706665 - 0 - 0.455286169 - -0.3646413 - 0 - 3 - 3 - Slimy -
  • - - -
  • - LayingPawn - -
  • - 250 - 177.083145 - 0 - 0 - -0.256229281 - -0.362511069 - 0 - 1 - 0 - -
  • -
  • - 60 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • -
  • - 1 - 179.6811 - 0 - 0 - -0.267210543 - -0.3991253 - 0 - 1 - 0 -
  • - - - - - -
  • - SlowFuck - true - 1300 - 0 - -
  • - -
  • - 80 - -35.01766 - -26.3706665 - 0 - 0.455286169 - -0.3646413 - 0 - 3 - 3 -
  • -
  • - 49 - -49.8178673 - -35.7418823 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • -
  • - 1 - -35.01766 - -26.3706665 - 0 - 0.455286169 - -0.3646413 - 0 - 3 - 3 - Fuck -
  • - - -
  • - LayingPawn - -
  • - 80 - 179.6811 - 0 - 0 - -0.267210543 - -0.3991253 - 0 - 1 - 0 -
  • -
  • - 49 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • -
  • - 1 - 179.6811 - 0 - 0 - -0.267210543 - -0.3991253 - 0 - 1 - 0 -
  • - - - - - -
  • - Transition - false - 0 - -
  • - -
  • - 50 - -35.01766 - -26.3706665 - 0 - 0.455286169 - -0.3646413 - 0 - 3 - 3 - Fuck -
  • - -
  • - 15 - -49.8178673 - -35.7418823 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • - -
  • - 80 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 3 -
  • - -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.48456946 - -0.489136577 - 0 - 3 - 3 -
  • - - -
  • - LayingPawn - -
  • - 50 - 179.6811 - 0 - 0 - -0.267210543 - -0.3991253 - 0 - 1 - 0 -
  • - -
  • - 15 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • - -
  • - 80 - 175.467651 - 0 - 0 - -0.2123042 - -0.5309518 - 0 - 1 - 0 - Fuck -
  • - -
  • - 1 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • - - - - - -
  • - FastFuck - true - 1260 - 0 - -
  • - - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 3 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 3 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 2 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 2 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 2 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 2 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 2 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 2 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 2 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 3 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 3 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 3 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • -
  • - 24 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 3 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • - - -
  • - LayingPawn - - -
  • - 10 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • -
  • - 24 - 175.467651 - 0 - 0 - -0.2123042 - -0.5309518 - 0 - 1 - 0 - Fuck -
  • -
  • - 1 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • - - - - - -
  • - FasterFuck - true - 418 - 0 - -
  • - - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 -
  • -
  • - 8 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 3 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - Slimy -
  • - - -
  • - LayingPawn - -
  • - 10 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • -
  • - 8 - 175.467651 - 0 - 0 - -0.2123042 - -0.5309518 - 0 - 1 - 0 - Fuck -
  • -
  • - 1 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • - - - - - -
  • - Cum - True - 318 - 0 - -
  • - - -
  • - 10 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 - -
  • -
  • - true - 80 - -49.8178673 - -8.273987 - 0 - 0.506531835 - -0.55575326 - 0 - 3 - 3 - Cum -
  • -
  • - 25 - -49.8178673 - 2.654541 - 0 - 0.5175133 - -0.547725141 - 0 - 3 - 3 -
  • -
  • - 1 - -49.8178673 - -14.1647339 - 0 - 0.484569454 - -0.489136577 - 0 - 3 - 3 -
  • - - - -
  • - LayingPawn - - -
  • - 10 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • -
  • - 80 - 175.467651 - 0 - 0 - -0.2123042 - -0.5309518 - 0 - 1 - 0 -
  • -
  • - 25 - 173.81427 - 0 - 0 - -0.197662517 - -0.545600235 - 0 - 1 - 0 -
  • -
  • - 1 - 177.981537 - 0 - 0 - -0.24524799 - -0.358849227 - 0 - 1 - 0 -
  • - - - - - - -
    - -
    -
    diff --git a/1.4/Defs/AnimationDefs/Animations_Lesbian.xml b/1.4/Defs/AnimationDefs/Animations_Lesbian.xml deleted file mode 100644 index 56d805a..0000000 --- a/1.4/Defs/AnimationDefs/Animations_Lesbian.xml +++ /dev/null @@ -1,1782 +0,0 @@ - - - - Tribadism - - true - -
  • Scissoring
  • -
    - - -
  • - -
  • Human
  • - - true - -
  • Vagina
  • -
    - -
  • - -
  • Human
  • - - true - true - -
  • Vagina
  • -
    - - -
    - - -
  • - Tribbing - true - 992 - 0 - -
  • - LayingPawn - -
  • - - 20 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 2 - 0 -
  • -
  • - 20 - -79.56 - -79.56 - -0.218 - 0.082 - 2 - 2 - 0 -
  • -
  • - 20 - -81.53 - -81.53 - -0.219 - 0.07 - 2 - 2 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 2 - 0 -
  • - - -
  • - -
  • - - 20 - 9.97 - -7.61 - 0.444 - 0.368 - 3 - 3 - 0 -
  • -
  • - 20 - 23.82 - -6.90 - 0.432 - 0.403 - 3 - 3 - 0 -
  • -
  • - 20 - 5.19 - -6.19 - 0.442 - 0.388 - 3 - 3 - 0 -
  • -
  • - 1 - 9.97 - -7.61 - 0.444 - 0.368 - 3 - 3 - 0 -
  • - - - - - -
  • - TribadismFast - true - 682 - 0 - -
  • - LayingPawn - -
  • - - 10 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • -
  • - 10 - -79.56 - -79.56 - -0.218 - 0.082 - 2 - 1 - 0 -
  • -
  • - 10 - -81.53 - -81.53 - -0.219 - 0.07 - 2 - 1 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • -
  • - - 10 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • -
  • - 10 - -79.56 - -79.56 - -0.218 - 0.082 - 2 - 1 - 0 -
  • -
  • - 10 - -81.53 - -81.53 - -0.219 - 0.07 - 2 - 1 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • - -
  • - - 10 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • -
  • - 10 - -79.56 - -79.56 - -0.218 - 0.082 - 2 - 1 - 0 -
  • -
  • - 10 - -81.53 - -81.53 - -0.219 - 0.07 - 2 - 1 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • -
  • - - 10 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • -
  • - 10 - -79.56 - -79.56 - -0.218 - 0.082 - 2 - 1 - 0 -
  • -
  • - 10 - -81.53 - -81.53 - -0.219 - 0.07 - 2 - 1 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • - - -
  • - - 10 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • -
  • - 10 - -79.56 - -77.66 - -0.218 - 0.082 - 2 - 2 - 0 -
  • -
  • - 10 - -81.53 - -77.74 - -0.219 - 0.07 - 2 - 2 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • - - -
  • - - 10 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • -
  • - 10 - -79.56 - -77.66 - -0.218 - 0.082 - 2 - 2 - 0 -
  • -
  • - 10 - -81.53 - -77.74 - -0.219 - 0.07 - 2 - 2 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • - - -
  • - - 10 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • -
  • - 10 - -79.56 - -77.66 - -0.218 - 0.082 - 2 - 2 - 0 -
  • -
  • - 10 - -81.53 - -77.74 - -0.219 - 0.07 - 2 - 2 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • - - -
  • - - 10 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • -
  • - 10 - -79.56 - -77.66 - -0.218 - 0.082 - 2 - 2 - 0 -
  • -
  • - 10 - -81.53 - -77.74 - -0.219 - 0.07 - 2 - 2 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • - - -
  • - - 10 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • -
  • - 10 - -79.56 - -77.66 - -0.218 - 0.082 - 2 - 2 - 0 -
  • -
  • - 10 - -81.53 - -77.74 - -0.219 - 0.07 - 2 - 2 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • - - -
  • - - 10 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • -
  • - 10 - -79.56 - -77.66 - -0.218 - 0.082 - 2 - 2 - 0 -
  • -
  • - 10 - -81.53 - -77.74 - -0.219 - 0.07 - 2 - 2 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -73.04 - -0.218 - 0.073 - 2 - 2 - 0 -
  • - -
  • - - 10 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • -
  • - 10 - -79.56 - -79.56 - -0.218 - 0.082 - 2 - 1 - 0 -
  • -
  • - 10 - -81.53 - -81.53 - -0.219 - 0.07 - 2 - 1 - 0 -
  • -
  • - Slimy - 1 - -81.3 - -81.3 - -0.218 - 0.073 - 2 - 1 - 0 -
  • - - -
  • - -
  • - - 10 - 9.97 - -7.61 - 0.444 - 0.368 - 3 - 3 - 0 -
  • -
  • - 10 - 23.82 - -6.90 - 0.432 - 0.403 - 3 - 3 - 0 -
  • -
  • - 10 - 5.19 - -6.19 - 0.442 - 0.388 - 3 - 3 - 0 -
  • -
  • - 1 - 9.97 - -7.61 - 0.444 - 0.368 - 3 - 3 - 0 -
  • - - - - - -
    - -
    - - Cunnilingus - - true - -
  • Oral
  • -
  • Fingering
  • -
  • Cunnilingus
  • -
    - - -
  • Cunnilingus
  • -
  • CunnilingusF
  • -
  • CunnilingusRape
  • -
  • CunnilingusRapeF
  • - -
  • Fingering
  • -
  • FingeringF
  • -
  • FingeringRape
  • -
  • FingeringRapeF
  • - -
  • Fisting
  • -
  • FistingF
  • -
  • FistingRape
  • -
  • FistingRapeF
  • - -
    - -
  • - -
  • Human
  • - - true - -
  • Vagina
  • -
    - - (-0.2, 0.1) - - -
  • - -
  • Human
  • - - true - - (-0.1, 0.15) - - -
    - - - - -
  • - Initial - False - 0 - -
  • - -
  • - 60 - -81.06536 - -56.4483032 - 0 - -0.0624052179 - -0.437134951 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.0692383763 - -0.440020353 - 0 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - 60 - -27.578373 - 0.2816162 - 0 - 0.102704488 - 0.50675 - 0 - 3 - 3 -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - -0.1 - 3 - 3 - Slimy -
  • - - - - - - -
  • - Slow - True - 1497 - 0 - -
  • - -
  • - 98 - -87.3645554 - -69.70276 - 0 - -0.0692383763 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 40 - -87.26528 - -65.901825 - 0 - -0.0737426062 - -0.432820916 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.0692383763 - -0.440020353 - 0 - 1 - 1 -
  • - -
  • - 98 - -87.3645554 - -69.70276 - 0 - -0.0692383763 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 40 - -87.26528 - -65.901825 - 0 - -0.0737426062 - -0.432820916 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.0692383763 - -0.440020353 - 0 - 1 - 1 -
  • - -
  • - 60 - -87.3645554 - -69.70276 - 0 - -0.0692383763 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 120 - -86.52611 - -68.86432 - 0 - -0.05432228 - -0.439906 - 0 - 1 - 1 -
  • -
  • - 40 - -88.36286 - -84.3309 - 0 - -0.06637782 - -0.440140843 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.0692383763 - -0.440020353 - 0 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - 80 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - -0.1 - 3 - 3 -
  • -
  • - 18 - -41.1054764 - -10.1737061 - 0 - 0.04582855 - 0.462155169 - 0 - 3 - 3 -
  • -
  • - 40 - -38.1903877 - -31.6517334 - 0 - 0.0384018831 - 0.4874894 - 0 - 3 - 3 -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - -0.1 - 3 - 3 - Slimy -
  • - -
  • - 80 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - -0.1 - 3 - 3 -
  • -
  • - 18 - -41.1054764 - -10.1737061 - 0 - 0.04582855 - 0.462155169 - 0 - 3 - 3 -
  • -
  • - 40 - -38.1903877 - -31.6517334 - 0 - 0.0384018831 - 0.4874894 - 0 - 3 - 3 -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - -0.1 - 3 - 3 - Slimy -
  • - -
  • - 60 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - -0.1 - 3 - 3 - Slimy -
  • -
  • - 40 - -45.2595444 - -13.57782 - 0 - 0.009577712 - 0.4726282 - 0 - 3 - 3 - Slimy -
  • -
  • - 20 - -45.2595444 - -24.2278748 - 0 - 0.0315402448 - 0.415024319 - 0 - 3 - 3 - -
  • -
  • - 40 - -45.2595444 - -13.57782 - 0 - 0.009577712 - 0.4726282 - 0 - 3 - 3 - Slimy -
  • -
  • - 20 - -45.2595444 - -24.2278748 - 0 - 0.0315402448 - 0.415024319 - 0 - 3 - 3 - -
  • -
  • - 40 - -45.2595444 - -13.57782 - 0 - 0.009577712 - 0.4726282 - 0 - 3 - 3 - Slimy -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - -0.1 - 3 - 3 - Slimy -
  • - - - - - - -
  • - Transition - False - 0 - -
  • - -
  • - 40 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 30 - -97.90959 - -69.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - 40 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - -0.1 - 3 - 3 - Slimy -
  • -
  • - 30 - -35.8792953 - -9.312592 - 0 - 0.03684573 - 0.4285702 - 0 - 3 - 3 - Slimy -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • - - - - - -
  • - Fast - True - 710 - 0 - -
  • - -
  • - 40 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 30 - -97.90959 - -69.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • - -
  • - 40 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 30 - -97.90959 - -69.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • - -
  • - 40 - -87.3645554 - -79.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 2 -
  • -
  • - 30 - -97.90959 - -79.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 2 -
  • -
  • - 1 - -87.3645554 - -79.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 2 -
  • - -
  • - 40 - -87.3645554 - -79.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 2 -
  • -
  • - 30 - -97.90959 - -79.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 2 -
  • -
  • - 1 - -87.3645554 - -79.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 2 -
  • - -
  • - 40 - -87.3645554 - -79.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 2 -
  • -
  • - 30 - -97.90959 - -79.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 2 -
  • -
  • - 1 - -87.3645554 - -79.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 2 -
  • - -
  • - 40 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 30 - -97.90959 - -69.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - 40 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • -
  • - 30 - -35.8792953 - -3.312592 - 0 - 0.03684573 - 0.4285702 - 0 - 3 - 3 - Slimy -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • - - - - -
  • - Faster - True - 360 - 0 - -
  • - -
  • - 20 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 15 - -97.90959 - -69.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - 20 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • -
  • - 15 - -35.8792953 - -9.312592 - 0 - 0.03684573 - 0.4285702 - 0 - 3 - 3 - Slimy -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • - - - - -
  • - Cum - True - 639 - 0 - -
  • - -
  • - 20 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 15 - -97.90959 - -69.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • - -
  • - 20 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - 15 - -97.90959 - -69.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • - -
  • - 20 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • -
  • - True - 80 - -97.90959 - -69.72717 - 0 - -0.0259781852 - -0.445601642 - 0 - 1 - 1 - Cum -
  • -
  • - 40 - -99.80413 - -94.4023743 - 0 - -0.01950606 - -0.447728932 - 0 - 1 - 1 -
  • -
  • - 1 - -87.3645554 - -69.70276 - 0 - -0.06923838 - -0.440020353 - 0 - 1 - 1 -
  • - - -
  • - LayingPawn - - -
  • - 20 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • -
  • - 15 - -35.8792953 - -9.312592 - 0 - 0.03684573 - 0.4285702 - 0 - 3 - 3 - Slimy -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • - -
  • - 20 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • -
  • - 15 - -35.8792953 - -9.312592 - 0 - 0.03684573 - 0.4285702 - 0 - 3 - 3 - Slimy -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • - -
  • - 20 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • -
  • - 80 - -35.8792953 - -9.312592 - 0 - 0.03684573 - 0.4285702 - 0 - 3 - 3 -
  • -
  • - 40 - -38.5277061 - -1.13140869 - 0 - 0.0376501828 - 0.42935127 - 0 - 3 - 3 -
  • -
  • - 1 - -47.9400826 - -21.93164 - 0 - -0.04209958 - 0.467844343 - 0 - 3 - 3 - Slimy -
  • - - - - - -
    - -
    -
    diff --git a/1.4/Defs/AnimationDefs/Animations_Masturbate.xml b/1.4/Defs/AnimationDefs/Animations_Masturbate.xml deleted file mode 100644 index 2968fa1..0000000 --- a/1.4/Defs/AnimationDefs/Animations_Masturbate.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - \ No newline at end of file diff --git a/1.4/Defs/AnimationDefs/Animations_Multi.xml b/1.4/Defs/AnimationDefs/Animations_Multi.xml deleted file mode 100644 index af7ea7a..0000000 --- a/1.4/Defs/AnimationDefs/Animations_Multi.xml +++ /dev/null @@ -1,660 +0,0 @@ - - - - Double_Penetration - - true - -
  • DoublePenetration
  • -
  • Anal
  • -
  • Oral
  • -
  • Vaginal
  • -
    - -
  • - -
  • Human
  • - - true - -
  • - -
  • Human
  • - - true - true - true - -
  • - -
  • Human
  • - - true - true - true - -
    - - -
  • - Slow - true - 976 - 0 - -
  • - - -
  • - 25 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • -
  • - 35 - 48.1 - 16.3 - 0 - 0.188 - 1 - 1 - 0 -
  • -
  • - Suck - 1 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • - - -
  • - - LayingPawn - -
  • - -10 - 30 - 12 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • -
  • - 30 - 12 - -15.1 - 0.729 - 0.378 - 3 - 3 - 0 -
  • -
  • - -10 - 1 - 12 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • - - -
  • - - LayingPawn - -
  • - 43 - 27 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • -
  • - Fuck - 33 - -6.7 - 14.1 - -0.53 - 0.378 - 1 - 1 - 0 -
  • -
  • - 43 - 1 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • - - - - -
  • - Face_Fuck - true - 650 - 0 - -
  • - - -
  • - 13 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • -
  • - 6 - 60.7 - 5.6 - 0.025 - 0.118 - 1 - 1 - 0 -
  • -
  • - 6 - 62.7 - 0.2 - 0.08 - 0.118 - 1 - 1 - 0 -
  • -
  • - Suck - 1 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • - - -
  • - - LayingPawn - -
  • - -10 - 13 - 12 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • -
  • - 12 - 2 - -15.1 - 0.729 - 0.378 - 3 - 3 - 0 -
  • -
  • - -10 - 1 - 12 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • - - -
  • - - LayingPawn - -
  • - 43 - 13 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • -
  • - Fuck - 12 - -6.7 - 14.1 - -0.53 - 0.378 - 1 - 1 - 0 -
  • -
  • - 43 - 1 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • - - - - -
  • - Cum - true - 392 - 0 - -
  • - - -
  • - 9 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • -
  • - 4 - 60.7 - 5.6 - 0.025 - 0.118 - 1 - 1 - 0 -
  • -
  • - 4 - 62.7 - 0.2 - 0.056 - 0.118 - 1 - 1 - 0 -
  • -
  • - Suck - 1 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • - -
  • - 9 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • -
  • - 4 - 60.7 - 5.6 - 0.025 - 0.118 - 1 - 1 - 0 -
  • -
  • - 4 - 62.7 - 0.2 - 0.056 - 0.118 - 1 - 1 - 0 -
  • -
  • - Suck - 1 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • - -
  • - 9 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • -
  • - true - 120 - 60.7 - 5.6 - 0.025 - 0.118 - 1 - 1 - 0 -
  • -
  • - 30 - 62.7 - 0.2 - 0.056 - 0.118 - 1 - 1 - 0 -
  • -
  • - Suck - 1 - 62.7 - 0.2 - 0.01 - 0.118 - 1 - 1 - 0 -
  • - - -
  • - - LayingPawn - -
  • - -10 - 9 - 9 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • -
  • - 8 - 0 - -15.1 - 0.729 - 0.378 - 3 - 3 - 0 -
  • -
  • - 1 - 9 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • - -
  • - 9 - 9 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • -
  • - 8 - 0 - -15.1 - 0.729 - 0.378 - 3 - 3 - 0 -
  • -
  • - 1 - 9 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • - - -
  • - 9 - 9 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • -
  • - 120 - 9 - -15.1 - 0.674 - 0.378 - 3 - 3 - 0 -
  • -
  • - 30 - 9 - 7 - 0.674 - 0.378 - 3 - 3 - 0 -
  • -
  • - 1 - 9 - -14.1 - 0.674 - 0.378 - 3 - 3 - 0 - -10 -
  • - - - -
  • - - LayingPawn - -
  • - 43 - 9 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • -
  • - Fuck - 8 - -6.7 - 14.1 - -0.53 - 0.378 - 1 - 1 - 0 -
  • -
  • - 1 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • - -
  • - 9 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • -
  • - Fuck - 8 - -6.7 - 14.1 - -0.53 - 0.378 - 1 - 1 - 0 -
  • -
  • - 1 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • - -
  • - 9 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • -
  • - Cum - 120 - -6.7 - 14.1 - -0.53 - 0.378 - 1 - 1 - 0 -
  • -
  • - 30 - -6.7 - -7 - -0.53 - 0.378 - 1 - 1 - 0 -
  • -
  • - 43 - 1 - 8.7 - 15.1 - -0.70 - 0.378 - 1 - 1 - 0 -
  • - - - - - -
    - -
    - -
    diff --git a/1.4/Defs/AnimationDefs/Animations_SexToys.xml b/1.4/Defs/AnimationDefs/Animations_SexToys.xml deleted file mode 100644 index 320d3aa..0000000 --- a/1.4/Defs/AnimationDefs/Animations_SexToys.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - diff --git a/1.4/Defs/AnimationDefs/Animations_Vanilla2.xml b/1.4/Defs/AnimationDefs/Animations_Vanilla2.xml deleted file mode 100644 index 71b02a9..0000000 --- a/1.4/Defs/AnimationDefs/Animations_Vanilla2.xml +++ /dev/null @@ -1,378 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/1.4/Defs/AnimationDefs/Animations_vanilla.xml b/1.4/Defs/AnimationDefs/Animations_vanilla.xml deleted file mode 100644 index 0fd61d5..0000000 --- a/1.4/Defs/AnimationDefs/Animations_vanilla.xml +++ /dev/null @@ -1,2799 +0,0 @@ - - - - - Doggystyle - - true - -
  • Vaginal
  • -
  • Anal
  • -
  • DoublePenetration
  • -
    - - -
  • AnalSex
  • -
  • AnalSexF
  • -
  • AnalRape
  • -
  • VaginalSex
  • -
  • VaginalSexF
  • -
  • VaginalRape
  • -
    - - -
  • - - -
  • Human
  • - - true - -
  • - -
  • Human
  • - - true - true - true - - (0, 0.2) - - -
    - - -
  • - Slow_Fuck - true - 612 - 0 - -
  • - -
  • - 0 - 10 - 27 - 0.298 - 0.166 - 0 - 1 - 2 -
  • -
  • - 40 - 32 - 0.326 - 0.190 - 1 - 2 -
  • -
  • - 1 - 27 - 0.298 - 0.166 - 1 - 2 -
  • - -
  • - 10 - 27 - 0.298 - 0.166 - 1 - 2 -
  • -
  • - 40 - 32 - 0.326 - 0.190 - 1 - 2 -
  • -
  • - 1 - 27 - 0.298 - 0.166 - 1 - 2 -
  • - -
  • - 10 - 27 - 0.298 - 0.166 - 1 - 2 -
  • -
  • - 40 - 32 - 0.326 - 0.190 - 1 - 2 -
  • -
  • - 1 - 27 - 0.298 - 0.166 - 1 - 2 -
  • - -
  • - 10 - 27 - 0.298 - 0.166 - 1 - 1 -
  • -
  • - 40 - 32 - 0.326 - 0.190 - 1 - 1 -
  • -
  • - 1 - 27 - 0.298 - 0.166 - 1 - 1 -
  • - -
  • - 10 - 27 - 0.298 - 0.166 - 1 - 1 -
  • -
  • - 40 - 32 - 0.326 - 0.190 - 1 - 1 -
  • -
  • - 1 - 27 - 0.298 - 0.166 - 1 - 1 -
  • - -
  • - 10 - 27 - 0.298 - 0.166 - 1 - 1 -
  • -
  • - 40 - 32 - 0.326 - 0.190 - 1 - 1 -
  • -
  • - 1 - 27 - 0.298 - 0.166 - 1 - 1 -
  • - -
  • - 10 - 27 - 0.298 - 0.166 - 1 - 1 -
  • -
  • - 40 - 32 - 0.326 - 0.190 - 1 - 1 -
  • -
  • - 1 - 27 - 0.298 - 0.166 - 1 - 1 -
  • - -
  • - 10 - 27 - 0.298 - 0.166 - 1 - 1 -
  • -
  • - 40 - 32 - 0.326 - 0.190 - 1 - 1 -
  • -
  • - 0 - 1 - 27 - 0.298 - 0.166 - 0 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - 27 - 0 - 10 - 16.6 - -0.217 - 0.175 - 3 - 1 - 1 -
  • - -
  • - 40 - Fuck - -17 - -0.217 - 0.272 - 5.4 - 1 - 1 -
  • -
  • - 1 - 16.6 - -0.217 - 0.175 - 3 - 1 - 1 - 0 - 27 -
  • - - - - -
  • - Fast_Fuck - true - 609 - 0 - -
  • - -
  • - 8 - 27 - 0.298 - 0.166 - 1 - 1 - 1 - 0 -
  • -
  • - 12 - 32 - 0.326 - 0.190 - 4 - 1 - 1 -
  • -
  • - 1 - 27 - 0.298 - 0.166 - 1 - 1 - 1 - 0 -
  • - - -
  • - LayingPawn - -
  • - 27 - 8 - 11 - -0.217 - 0.175 - 8 - 1 - 1 - 0 -
  • - -
  • - 12 - Fuck - -12 - -0.217 - 0.272 - 9 - 1 - 1 -
  • -
  • - 1 - 11 - -0.217 - 0.175 - 8 - 1 - 1 - 0 - 27 -
  • - - - - -
  • - Cum - true - 300 - 0 - -
  • - -
  • - 8 - 27 - 0.298 - 0.166 - 0 - 1 - 1 - 0 -
  • -
  • - Cum - 100 - 32 - 0.326 - 0.190 - -1 - 1 - 1 - true -
  • -
  • - 12 - 35 - 0.326 - 0.190 - -14 - 1 - 1 -
  • -
  • - 1 - 27 - 0.298 - 0.166 - 0 - 1 - 1 - 0 -
  • - - -
  • - LayingPawn - -
  • - 27 - 8 - 11 - -0.217 - 0.175 - -8 - 1 - 1 - 0 -
  • -
  • - 100 - -12 - -0.217 - 0.272 - -9 - 1 - 1 -
  • -
  • - 12 - -15 - -0.227 - 0.272 - -4 - 1 - 1 -
  • -
  • - 1 - 11 - -0.217 - 0.175 - -8 - 1 - 1 - 0 - 27 -
  • - - - - -
    -
    - - Blowjob - - true - -
  • Oral
  • -
  • Fellatio
  • -
    - -
  • Handjob
  • -
  • HandjobF
  • -
  • HandjobRape
  • -
  • HandjobRapeF
  • - -
  • Breastjob
  • -
  • BreastjobF
  • -
  • BreastjobRape
  • -
  • BreastjobRapeF
  • - -
  • Fellatio
  • -
  • FellatioF
  • -
  • FellatioRape
  • -
  • FellatioRapeF
  • - -
  • Beakjob
  • -
  • BeakjobF
  • -
  • BeakjobRape
  • -
  • BeakjobRapeF
  • - - -
    - -
  • - - -
  • Human
  • - - - (0, -0.2) - - -
  • - -
  • Human
  • - - true - true - true - - (0, 0.2) - - -
    - -
  • - Slow_Suck - true - 1140 - 0 - -
  • - -
  • - 35 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • -
  • - Suck - 59 - 0 - 0 - -0.33 - 0 - 0 - -0.16 -
  • -
  • - 1 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • - -
  • - 35 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • -
  • - Suck - 59 - 0 - 0 - -0.33 - 0 - 0 - -0.15 -
  • -
  • - 1 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • - -
  • - 35 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • -
  • - Suck - 59 - - 6 - 0 - -0.33 - 0 - 0 - -0.13 -
  • -
  • - 1 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • - -
  • - 35 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • -
  • - Suck - 59 - 0 - -4 - 0 - -0.33 - 0 - 0 - -0.12 -
  • -
  • - 1 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • - - -
  • - LayingPawn - -
  • - 35 - 0 - 0 - 0 - 0.473 - 2 - 2 - 0 - 180 -
  • -
  • - 59 - 0 - 0 - 0.490 - 2 - 2 - -0.003 -
  • -
  • - 1 - 0 - 0 - 0 - 0.473 - 2 - 2 - 0 - 180 -
  • - - - - -
  • - Face_Fuck - true - 300 - 0 - -
  • - -
  • - 15 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • -
  • - Suck - 14 - 0 - 0 - -0.270 - 0 - 0 - -0.06 -
  • -
  • - 1 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • - - -
  • - LayingPawn - -
  • - 15 - 0 - 0 - 0 - 0.473 - 2 - 2 - 0 - 180 -
  • -
  • - 14 - 0 - 0 - 0.575 - 2 - 2 - -0.051 -
  • -
  • - 1 - 0 - 0 - 0 - 0.473 - 2 - 2 - 0 - 180 -
  • - - - - -
  • - Cum - true - 600 - 0 - -
  • - -
  • - 12 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • -
  • - 7 - 0 - 0 - -0.290 - 0 - 0 - -0.06 -
  • -
  • - 7 - Suck - 0 - 0 - -0.290 - 0 - 0 - -0.008 -
  • -
  • - 60 - 0 - 0 - -0.290 - 0 - 0 - -0.06 -
  • -
  • - 14 - 0 - 0 - -0.290 - 0 - 0 - -0.06 -
  • -
  • - 1 - 0 - 0 - 0 - -0.255 - 0 - 0 - 0 -
  • - - -
  • - LayingPawn - -
  • - 12 - 0 - 0 - 0 - 0.473 - 2 - 2 - 0 - 180 -
  • -
  • - 7 - Cum - 0 - 0 - 0.575 - 2 - 2 - -0.051 -
  • -
  • - 7 - 0 - 0 - 0.50 - 2 - 2 - -0.04 -
  • -
  • - true - 60 - 0 - 0 - 0.575 - 2 - 2 - -0.051 -
  • -
  • - 14 - 0 - 0 - 0.575 - 2 - 2 - -0.051 -
  • -
  • - 1 - 0 - 0 - 0 - 0.473 - 2 - 2 - 0 - 180 -
  • - - - - -
    - -
    - - ReverseStandAndCarry - - true - -
  • Anal
  • -
  • Vaginal
  • -
  • DoublePenetration
  • -
    - -
  • AnalSex
  • -
  • AnalSexF
  • -
  • AnalRape
  • -
  • VaginalSex
  • -
  • VaginalSexF
  • -
  • VaginalRape
  • -
    - -
  • - - -
  • Human
  • - - true - - (0, 0.2) - - -
  • - -
  • Human
  • - - true - true - true - - (0, 0.2) - - -
    - - -
  • - Slow_Fuck - true - 1080 - 0 - -
  • - -
  • - 30 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 29 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - - -
  • - LayingPawn - -
  • - 6 - 30 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • -
  • - 40 - Fuck - 29 - 17.11 - -2.87 - 0.114 - 0.359 - 3 - 3 - 0 -
  • -
  • - 1 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 - 6 -
  • - - - - - -
  • - Fast_Fuck - true - 780 - 0 - -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 2 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 2 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 2 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 2 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 2 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 2 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 2 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 2 - 0 -
  • - - - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - -
  • - 6 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 12 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - - -
  • - LayingPawn - -
  • - 6 - 13 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • -
  • - 40 - Fuck - 12 - 17.11 - -2.87 - 0.114 - 0.359 - 3 - 3 - 0 -
  • -
  • - 1 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 - 6 -
  • - - - - - -
  • - Cum - true - 415 - 0 - -
  • - -
  • - 3 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 4 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - -
  • - 3 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 4 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - -
  • - 3 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 4 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 7 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - -
  • - 3 - 10.6 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - 4 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • -
  • - true - 75 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 27 - 6.04 - 15 - -0.175 - 0.437 - 3 - 3 - 0 -
  • -
  • - 1 - 11.23 - 11.23 - -0.183 - 0.468 - 3 - 3 - 0 -
  • - - -
  • - LayingPawn - -
  • - 6 - 7 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • -
  • - 40 - Fuck - 7 - 17.11 - -2.87 - 0.114 - 0.359 - 3 - 3 - 0 -
  • -
  • - 6 - 1 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • - -
  • - 6 - 7 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • -
  • - 40 - Fuck - 7 - 17.11 - -2.87 - 0.114 - 0.359 - 3 - 3 - 0 -
  • -
  • - 6 - 1 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • - -
  • - 6 - 7 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • -
  • - 40 - Fuck - 7 - 17.11 - -2.87 - 0.114 - 0.359 - 3 - 3 - 0 -
  • -
  • - 6 - 1 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • - -
  • - 6 - 7 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • -
  • - 40 - Cum - 75 - 17.11 - -2.87 - 0.114 - 0.359 - 3 - 3 - 0 -
  • -
  • - 40 - 27 - 17.11 - -2.87 - 0.114 - 0.359 - 3 - 3 - 0 -
  • -
  • - 6 - 1 - -3.18 - -0.41 - 0.122 - 0.356 - 3 - 3 - 0 -
  • - - - - -
    - -
    - - Cowgirl - - true - -
  • Anal
  • -
  • Vaginal
  • -
  • DoublePenetration
  • -
    - - -
  • AnalSex
  • -
  • AnalSexF
  • -
  • AnalRapeF
  • -
  • VaginalSex
  • -
  • VaginalSexF
  • -
  • VaginalRapeF
  • -
    - - - -
  • - - -
  • Human
  • - - true - true - - (0, 0.2) - - - -
  • - -
  • Human
  • - - true - true - - (0, -0.2) - - - -
    - - -
  • - Slow_Fuck - true - 1340 - 0 - -
  • - - -
  • - 16 - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • -
  • - 17 - 3.5 - 0 - -0.03 - 0.624 - 2 - 2 - -0.02 -
  • -
  • - 16 - 0 - 0 - 0 - 0.694 - 2 - 2 - -0.03 -
  • -
  • - 17 - -3.5 - 0 - 0.03 - 0.624 - 2 - 2 - -0.02 -
  • -
  • - 1 - Fuck - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • - -
  • - 16 - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • -
  • - 17 - 3.5 - 0 - -0.03 - 0.624 - 2 - 2 - -0.02 -
  • -
  • - 16 - 0 - 0 - 0 - 0.694 - 2 - 2 - -0.03 -
  • -
  • - 17 - -3.5 - 0 - 0.03 - 0.624 - 2 - 2 - -0.02 -
  • -
  • - 1 - Fuck - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • - - -
  • - 33 - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • -
  • - 33 - 0 - 0 - 0 - 0.694 - 2 - 2 - -0.03 -
  • -
  • - 1 - Fuck - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • - -
  • - 33 - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • -
  • - 33 - 0 - 0 - 0 - 0.694 - 2 - 2 - -0.03 -
  • -
  • - 1 - Fuck - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • - - -
  • - LayingPawn - -
  • - 16 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • -
  • - 17 - 180 - 180 - 0 - -0.347 - 2 - 2 - 0.015 - -15 -
  • -
  • - 16 - 180 - 180 - 0 - -0.331 - 2 - 2 - 0.03 - 0 -
  • -
  • - 17 - 180 - 180 - 0 - -0.315 - 2 - 2 - 0.045 - 15 -
  • -
  • - 1 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • -
  • - 16 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • -
  • - 17 - 180 - 180 - 0 - -0.347 - 2 - 2 - 0.015 - -15 -
  • -
  • - 16 - 180 - 180 - 0 - -0.331 - 2 - 2 - 0.03 - 0 -
  • -
  • - 17 - 180 - 180 - 0 - -0.315 - 2 - 2 - 0.045 - 15 -
  • -
  • - 1 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • -
  • - 33 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • -
  • - 33 - 180 - 180 - 0 - -0.315 - 2 - 2 - 0.045 - 0 -
  • -
  • - 1 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • -
  • - 33 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • -
  • - 33 - 180 - 180 - 0 - -0.315 - 2 - 2 - 0.045 - 0 -
  • -
  • - 1 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • - - - - -
  • - Fast_Fuck - true - 780 - 0 - -
  • - -
  • - 13 - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • -
  • - 13 - 0 - 0 - 0 - 0.694 - 2 - 2 - -0.03 -
  • -
  • - 1 - Fuck - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • - - -
  • - LayingPawn - -
  • - 13 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • -
  • - 13 - 180 - 180 - 0 - -0.313 - 2 - 2 - 0.045 - 0 -
  • -
  • - 1 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • - - - - -
  • - Cum - true - 594 - 0 - -
  • - -
  • - 10 - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • -
  • - 10 - 0 - 0 - 0 - 0.694 - 2 - 2 - -0.03 -
  • -
  • - 1 - Fuck - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • - -
  • - 10 - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • -
  • - 10 - 0 - 0 - 0 - 0.694 - 2 - 2 - -0.03 -
  • -
  • - 1 - Fuck - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • - -
  • - 10 - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • -
  • - 10 - 0 - 0 - 0 - 0.694 - 2 - 2 - -0.03 -
  • -
  • - true - 45 - Cum - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • -
  • - true - 40 - 0 - 0 - 0 - 0.534 - 2 - 2 - 0 -
  • -
  • - 1 - 0 - 0 - 0 - 0.554 - 2 - 2 - 0 -
  • - - -
  • - LayingPawn - -
  • - 10 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • -
  • - 10 - 180 - 180 - 0 - -0.313 - 2 - 2 - 0.045 -
  • -
  • - 1 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 -
  • - -
  • - 10 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 -
  • -
  • - 10 - 180 - 180 - 0 - -0.313 - 2 - 2 - 0.045 -
  • -
  • - 1 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 -
  • - -
  • - 10 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 -
  • -
  • - 10 - 180 - 180 - 0 - -0.313 - 2 - 2 - 0.045 -
  • -
  • - 45 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 -
  • -
  • - 40 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 -
  • -
  • - 1 - 180 - 180 - 0 - -0.363 - 2 - 2 - 0 - 0 -
  • - - - - -
    - -
    -
    - - - diff --git a/1.4/Defs/AnimationDefs/DoubleBlowjob.xml b/1.4/Defs/AnimationDefs/DoubleBlowjob.xml deleted file mode 100644 index 4dd5c9f..0000000 --- a/1.4/Defs/AnimationDefs/DoubleBlowjob.xml +++ /dev/null @@ -1,1921 +0,0 @@ - - - - DoubleBlowjob - - true - -
  • None
  • -
  • Oral
  • -
  • Handjob
  • -
  • Fellatio
  • -
    - -
  • Rape_Oral
  • -
  • Rape_Fellatio
  • -
  • Rape_Reverse_Fellatio
  • -
  • Sex_Reverse_Fellatio
  • -
  • Sex_Fellatio
  • -
  • Sex_Handjob
  • -
  • Sex_Reverse_Handjob
  • -
  • Rape_Reverse_Handjob
  • -
  • Rape_Handjob
  • -
  • Rape_Beakjob
  • -
  • Sex_Beakjob
  • -
  • Sex_Reverse_Beakjob
  • -
  • Rape_Reverse_Beakjob
  • -
    - -
  • - -
  • Human
  • - - true - -
  • - -
  • Human
  • - - true - -
  • - -
  • Human
  • - - -
  • Penis
  • -
    - true - true - -
    - -
  • - LeftGettingOn - 70 - 70 - false - -
  • - Pawn - -
  • - 19.5730782 - 3.671945 - -0.00393304229 - -0.5978373 - 0.157325149 - 1 - 1 - 69 -
  • -
  • - 25.5458 - 7.708157 - -0.00393304229 - -0.466077149 - 0.1691246 - 1 - 1 - 1 -
  • - - -
  • - Pawn - -
  • - -28.3147774 - -0.461400777 - 0.593902469 - 0.149458885 - 3 - 3 - 38 -
  • -
  • - -28.3147774 - -0.461400777 - -0.02850604 - 0.58997035 - 0.1612581 - 3 - 3 - 31 -
  • -
  • - -28.3147774 - -0.461400777 - 0.593902469 - 0.149458885 - 2 - 3 - 1 -
  • - - -
  • - LayingPawn - -
  • - -179.6804 - -179.330887 - -0.0118003711 - -0.381514549 - 2 - 2 - 69 -
  • -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - -15 - 1 -
  • - - - - -
  • - LeftBlowJob - 240 - 80 - true - -
  • - Pawn - -
  • - 25.5458 - 7.708157 - -0.00393304229 - -0.466077149 - 0.1691246 - 1 - 1 - 39 -
  • -
  • - 37.29544 - 3.18303084 - -0.0481027365 - -0.44641155 - 0.163224936 - 1 - 1 - 40 - Suck -
  • -
  • - 25.5458 - 7.708157 - -0.00393304229 - -0.466077149 - 0.1691246 - 1 - 1 - 1 -
  • - - -
  • - Pawn - -
  • - -28.3147774 - -0.461400777 - 0.593902469 - 0.149458885 - 2 - 3 - 31 -
  • -
  • - -28.3147774 - -0.461400777 - -0.0127905905 - 0.582103252 - 0.161258221 - 2 - 3 - 48 -
  • -
  • - -28.3147774 - -0.461400777 - 0.593902469 - 0.149458885 - 2 - 3 - 1 -
  • - - -
  • - LayingPawn - -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - -15 - 39 - None -
  • -
  • - -179.68 - -179.331 - 0.0117773116 - -0.012 - -0.374133736 - 2 - 2 - -15 - 40 -
  • -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - -15 - 1 -
  • - - - - -
  • - RightFacing - 400 - 80 - true - -
  • - Pawn - -
  • - 25.5458 - 7.708157 - -0.00393304229 - -0.466077149 - 0.1691246 - 1 - 1 - 24 -
  • -
  • - 37.29544 - 3.18303084 - -0.0481027365 - -0.44641155 - 0.163224936 - 1 - 1 - 55 - Suck -
  • -
  • - 25.5458 - 7.708157 - -0.00393304229 - -0.466077149 - 0.1691246 - 1 - 1 - 1 -
  • - - -
  • - Pawn - -
  • - -28.3147774 - -0.461400777 - 0.593902469 - 0.149458885 - 3 - 3 - 30 -
  • -
  • - -28.3147774 - -0.461400777 - -0.0123875439 - 0.5860361 - 0.155358553 - 3 - 3 - 49 -
  • -
  • - -28.3147774 - -0.461400777 - 0.593902469 - 0.149458885 - 3 - 3 - 1 -
  • - - -
  • - LayingPawn - -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - -15 - 24 - Slimy -
  • -
  • - -179.68 - -179.331 - 0.0117773116 - -0.012 - -0.374133736 - 2 - 2 - -15 - 55 -
  • -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - -15 - 1 -
  • - - - - -
  • - Switch - 100 - 100 - false - -
  • - Pawn - -
  • - 25.5458 - 7.708157 - -0.00393304229 - -0.466077149 - 0.1691246 - 1 - 1 - 16 -
  • -
  • - 15.6320648 - 7.708157 - -0.00393304229 - -0.485742867 - 0.1828906 - 1 - 1 - 83 -
  • -
  • - 23.7728024 - 7.708157 - -0.00393304229 - -0.5817472 - 0.162777856 - 1 - 1 - 1 -
  • - - -
  • - Pawn - -
  • - -28.3147774 - -0.461400777 - 0.593902469 - 0.149458885 - 3 - 3 - 48 -
  • -
  • - -28.3147774 - 0.4414621 - 0.58497715 - 0.161964208 - 3 - 3 - 22 -
  • -
  • - -28.3147774 - -5.852266 - -0.0125217736 - 0.499507248 - 0.202556252 - 3 - 3 - 29 -
  • -
  • - -28.3147774 - -3.62854958 - 0.4552595 - 0.175024331 - 3 - 3 - 1 -
  • - - -
  • - LayingPawn - -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - -15 - 9 - Suck -
  • -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - 13 - 41 -
  • -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - 49 -
  • -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - 15 - 1 -
  • - - - - -
  • - RightBlowjobFaster - 400 - 50 - true - -
  • - Pawn - -
  • - 23.7728024 - 7.708157 - -0.00393304229 - -0.5817472 - 0.162777856 - 1 - 1 - 29 -
  • -
  • - 23.7728024 - 7.708157 - -0.0135100782 - -0.575847447 - 0.168677568 - 1 - 1 - 20 -
  • -
  • - 23.7728024 - 7.708157 - -0.00393304229 - -0.5817472 - 0.162777856 - 1 - 1 - 1 -
  • - - -
  • - Pawn - -
  • - -28.3147774 - -3.62854958 - 0.4552595 - 0.175024331 - 3 - 3 - 14 -
  • -
  • - -32.7987442 - -8.49699 - -0.0141675482 - 0.432316452 - 0.15552257 - 3 - 3 - 10 -
  • -
  • - -36.00158 - -3.62854958 - -0.0242872238 - 0.415928543 - 0.141592741 - 3 - 3 - 9 -
  • -
  • - -33.23433 - 0.2594432 - -0.0155438231 - 0.4300877 - 0.153628111 - 3 - 3 - 16 -
  • -
  • - -28.3147774 - -3.62854958 - 0.4552595 - 0.175024331 - 3 - 3 - 1 -
  • - - -
  • - LayingPawn - -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - 15 - 14 -
  • -
  • - -179.68 - -179.331 - 0.007 - -0.012 - -0.373 - 2 - 2 - 20 - 10 - Suck -
  • -
  • - -179.68 - -179.331 - 0.0117993951 - -0.012000002 - -0.366267473 - 2 - 2 - 15 - 9 -
  • -
  • - -179.68 - -179.331 - 0.008 - -0.012 - -0.372 - 2 - 2 - 10 - 16 -
  • -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - 15 - 1 -
  • - - - - -
  • - LeftFacing - 50 - 50 - false - -
  • - Pawn - -
  • - 23.7728024 - 7.708157 - -0.00393304229 - -0.5817472 - 0.162777856 - 1 - 1 - 29 -
  • -
  • - 23.7728024 - 7.708157 - -0.0135100782 - -0.575847447 - 0.168677568 - 2 - 1 - 20 -
  • -
  • - 23.7728024 - 7.708157 - -0.00393304229 - -0.5817472 - 0.162777856 - 2 - 1 - 1 -
  • - - -
  • - Pawn - -
  • - -28.3147774 - -3.62854958 - 0.4552595 - 0.175024331 - 3 - 3 - 14 -
  • -
  • - -32.7987442 - -8.49699 - -0.0141675482 - 0.432316452 - 0.15552257 - 3 - 3 - 10 -
  • -
  • - -36.00158 - -3.62854958 - -0.0242872238 - 0.415928543 - 0.141592741 - 3 - 3 - 9 -
  • -
  • - -33.23433 - 0.2594432 - -0.0155438231 - 0.4300877 - 0.153628111 - 3 - 3 - 16 -
  • -
  • - -28.3147774 - -3.62854958 - 0.4552595 - 0.175024331 - 3 - 3 - 1 -
  • - - -
  • - LayingPawn - -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - 15 - 14 -
  • -
  • - -179.68 - -179.331 - 0.007 - -0.012 - -0.373 - 2 - 2 - 20 - 10 - Suck -
  • -
  • - -179.68 - -179.331 - 0.0117993951 - -0.012000002 - -0.366267473 - 2 - 2 - 15 - 9 -
  • -
  • - -179.68 - -179.331 - 0.008 - -0.012 - -0.372 - 2 - 2 - 10 - 16 -
  • -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - 15 - 1 -
  • - - - - -
  • - RightBlowjobFasterLeftFacing - 270 - 270 - false - -
  • - Pawn - -
  • - 23.7728024 - 7.708157 - -0.00393304229 - -0.5817472 - 0.162777856 - 2 - 1 - 43 -
  • -
  • - 23.7728024 - 7.708157 - -0.0135100782 - -0.575847447 - 0.168677568 - 2 - 1 - 36 -
  • -
  • - 23.7728024 - 7.708157 - -0.00393304229 - -0.5817472 - 0.162777856 - 2 - 1 - 39 -
  • -
  • - 23.7728024 - 7.708157 - -0.0135100782 - -0.575847447 - 0.168677568 - 2 - 1 - 41 -
  • -
  • - 23.7728024 - 7.708157 - -0.00393304229 - -0.5817472 - 0.162777856 - 2 - 1 - 45 -
  • -
  • - 23.7728024 - 7.708157 - -0.0135100782 - -0.575847447 - 0.168677568 - 2 - 1 - 65 -
  • -
  • - 23.7728024 - 7.708157 - -0.00393304229 - -0.5817472 - 0.162777856 - 2 - 1 - 1 -
  • - - -
  • - Pawn - -
  • - -28.3147774 - -3.62854958 - 0.4552595 - 0.175024331 - 3 - 3 - 14 -
  • -
  • - -32.7987442 - -8.49699 - -0.0141675482 - 0.432316452 - 0.15552257 - 3 - 3 - 10 -
  • -
  • - -36.00158 - -3.62854958 - -0.0242872238 - 0.415928543 - 0.141592741 - 3 - 3 - 9 -
  • -
  • - -33.23433 - 0.2594432 - -0.0155438231 - 0.4300877 - 0.153628111 - 3 - 3 - 16 -
  • -
  • - -28.3147774 - -3.62854958 - 0.4552595 - 0.175024331 - 3 - 3 - 14 -
  • -
  • - -32.7987442 - -8.49699 - -0.0141675482 - 0.432316452 - 0.15552257 - 3 - 3 - 10 -
  • -
  • - -36.00158 - -3.62854958 - -0.0242872238 - 0.415928543 - 0.141592741 - 3 - 3 - 9 -
  • -
  • - -33.23433 - 0.2594432 - -0.0155438231 - 0.4300877 - 0.153628111 - 3 - 3 - 16 - Slimy -
  • -
  • - -28.3147774 - -3.62854958 - 0.4552595 - 0.175024331 - 3 - 3 - 14 -
  • -
  • - -32.7987442 - -8.49699 - -0.0141675482 - 0.432316452 - 0.15552257 - 3 - 3 - 10 -
  • -
  • - -36.00158 - -3.62854958 - -0.0242872238 - 0.415928543 - 0.141592741 - 3 - 3 - 9 -
  • -
  • - -33.23433 - 0.2594432 - -0.0155438231 - 0.4300877 - 0.153628111 - 3 - 3 - 16 -
  • -
  • - -28.3147774 - -3.62854958 - 0.4552595 - 0.175024331 - 3 - 3 - 14 -
  • -
  • - -32.7987442 - -8.49699 - -0.0141675482 - 0.432316452 - 0.15552257 - 3 - 3 - 10 -
  • -
  • - -36.00158 - -3.62854958 - -0.0242872238 - 0.415928543 - 0.141592741 - 3 - 3 - 9 -
  • -
  • - -33.23433 - 0.2594432 - -0.0155438231 - 0.4300877 - 0.153628111 - 3 - 3 - 16 -
  • -
  • - -28.3147774 - -3.62854958 - 0.4552595 - 0.175024331 - 3 - 3 - 14 -
  • -
  • - -32.7987442 - -8.49699 - -0.0141675482 - 0.432316452 - 0.15552257 - 3 - 3 - 10 -
  • -
  • - -36.00158 - -3.62854958 - -0.0242872238 - 0.415928543 - 0.141592741 - 3 - 3 - 23 -
  • -
  • - -33.23433 - 0.2594432 - -0.0155438231 - 0.4300877 - 0.153628111 - 3 - 3 - 26 -
  • -
  • - -28.3147774 - -3.62854958 - 0.4552595 - 0.175024331 - 3 - 3 - 1 -
  • - - -
  • - LayingPawn - -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - 15 - 14 -
  • -
  • - -179.68 - -179.331 - 0.007 - -0.012 - -0.373 - 2 - 2 - 20 - 10 - Suck -
  • -
  • - -179.68 - -179.331 - 0.0117993951 - -0.012000002 - -0.366267473 - 2 - 2 - 15 - 9 -
  • -
  • - -179.68 - -179.331 - 0.008 - -0.012 - -0.372 - 2 - 2 - 10 - 16 -
  • -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - 15 - 14 - None -
  • -
  • - -179.68 - -179.331 - 0.007 - -0.012 - -0.373 - 2 - 2 - 20 - 10 - Suck -
  • -
  • - -179.68 - -179.331 - 0.0117993951 - -0.012000002 - -0.366267473 - 2 - 2 - 15 - 9 -
  • -
  • - -179.68 - -179.331 - 0.008 - -0.012 - -0.372 - 2 - 2 - 10 - 16 -
  • -
  • - -179.68 - -179.331 - 0.007 - -0.012 - -0.373 - 2 - 2 - 20 - 10 - Suck -
  • -
  • - -179.68 - -179.331 - 0.0117993951 - -0.012000002 - -0.366267473 - 2 - 2 - 15 - 9 -
  • -
  • - -179.68 - -179.331 - 0.008 - -0.012 - -0.372 - 2 - 2 - 10 - 16 -
  • -
  • - -179.68 - -179.331 - 0.007 - -0.012 - -0.373 - 2 - 2 - 20 - 10 - Suck -
  • -
  • - -179.68 - -179.331 - 0.0117993951 - -0.012000002 - -0.366267473 - 2 - 2 - 15 - 9 -
  • -
  • - -179.68 - -179.331 - 0.008 - -0.012 - -0.372 - 2 - 2 - 10 - 16 -
  • -
  • - -179.68 - -179.331 - 0.007 - -0.012 - -0.373 - 2 - 2 - 20 - 10 - Suck -
  • -
  • - -179.68 - -179.331 - 0.0117993951 - -0.012000002 - -0.366267473 - 2 - 2 - 15 - 9 -
  • -
  • - -179.68 - -179.331 - 0.008 - -0.012 - -0.372 - 2 - 2 - 10 - 16 -
  • -
  • - -179.68 - -179.331 - 0.007 - -0.012 - -0.373 - 2 - 2 - 20 - 10 - Suck -
  • -
  • - -179.68 - -179.331 - 0.0117993951 - -0.012000002 - -0.366267473 - 2 - 2 - 15 - 9 -
  • -
  • - -179.68 - -179.331 - 0.008 - -0.012 - -0.372 - 2 - 2 - 10 - 16 -
  • -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - 15 - 31 - None -
  • -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - 15 - 1 -
  • - - - - -
  • - MiddleKissing - 249 - 0 - - -
  • - Pawn - -
  • - 23.7728024 - 7.708157 - -0.00393304229 - -0.5817472 - 0.162777856 - 2 - 1 - 8 -
  • -
  • - 23.7728024 - 7.708157 - -0.00393304229 - -0.5817472 - 0.162777856 - 1 - 1 - 26 -
  • -
  • - 24.52071 - 7.708157 - -0.00393304229 - -0.5817472 - 0.162777856 - 1 - 1 - 39 -
  • -
  • - 33.8062363 - -1.745628 - -0.00393304229 - -0.562081456 - 0.149011865 - 1 - 1 - 40 -
  • -
  • - 20.67817 - -2.64162827 - -0.0374405421 - -0.563148558 - 0.146207914 - 1 - 1 - 42 -
  • -
  • - 33.67371 - -10.6781654 - -0.02562505 - -0.573191941 - 0.119817734 - 1 - 1 - 32 -
  • -
  • - 24.55168 - 1.83792114 - -0.0187649541 - -0.568719745 - 0.120776057 - 1 - 1 - 61 -
  • -
  • - 24.167057 - 5.30330229 - -0.03378879 - -0.465604663 - 0.178063959 - 1 - 1 - 1 -
  • - - -
  • - PawnUnused - -
  • - -28.3147774 - -3.62854958 - 0.4552595 - 0.175024331 - 3 - 3 - 27 -
  • -
  • - -19.5583725 - -3.62854958 - 0.0111185312 - 0.4552595 - 0.175024331 - 3 - 3 - 26 -
  • -
  • - -21.90327 - -3.62854958 - -0.0208243951 - 0.518189847 - 0.141592622 - 3 - 3 - 34 -
  • -
  • - -16.8763733 - -3.62854958 - -0.0295713171 - 0.518189847 - 0.141592622 - 3 - 3 - 22 -
  • -
  • - -32.85453 - 3.495752 - -0.0199447311 - 0.524581254 - 0.14342092 - 3 - 3 - 81 -
  • -
  • - -26.2668018 - -3.30659652 - -0.0487327129 - 0.518481255 - 0.146201879 - 3 - 3 - 58 -
  • -
  • - -41.35107 - -0.843487263 - -0.06996385 - 0.5139825 - 0.148252845 - 3 - 3 - 1 -
  • - - -
  • - LayingPawn - -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - 15 - 15 -
  • -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - 12 - 10 - Suck -
  • -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - -15 - 12 -
  • -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - 31 -
  • -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - -1.541 - 9 - None -
  • -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - 34 - Suck -
  • -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - -3 - 11 - Suck -
  • -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - -5 - 24 -
  • -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - -4.063 - 26 - Suck -
  • -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - 5 - 76 -
  • -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - -12 - 1 -
  • - - - - -
  • - Double - 450 - 225 - true - -
  • - Pawn - -
  • - 24.167057 - 5.30330229 - -0.03378879 - -0.465604663 - 0.178063959 - 1 - 1 - 49 - Suck -
  • -
  • - 40.14287 - 10.45346 - -0.023175139 - -0.465604663 - 0.178063959 - 1 - 1 - 25 -
  • -
  • - 24.167057 - 5.30330229 - -0.03378879 - -0.465604663 - 0.178063959 - 1 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - -41.35107 - -0.843487263 - -0.06996385 - 0.5139825 - 0.148252845 - 3 - 3 - 21 -
  • -
  • - -47.4342079 - 8.690771 - -0.12225467 - 0.5198823 - 0.162018836 - 3 - 3 - 53 - Slimy -
  • -
  • - -41.35107 - -0.843487263 - -0.06996385 - 0.5139825 - 0.148252845 - 3 - 3 - 1 -
  • - - -
  • - LayingPawn - -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - -12 - 49 -
  • -
  • - -179.68 - -179.331 - 0.023598671 - -0.0119999992 - -0.37216714 - 2 - 2 - -12 - 25 - Slimy -
  • -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - -12 - 1 -
  • - - - - -
  • - Cum - 600 - 600 - true - -
  • - Pawn - -
  • - 24.167057 - 5.30330229 - -0.03378879 - -0.465604663 - 0.178063959 - 1 - 1 - 49 -
  • -
  • - 40.14287 - 10.45346 - -0.023175139 - -0.465604663 - 0.178063959 - 1 - 1 - 78 - None -
  • -
  • - 41.7705231 - 14.5681791 - -0.0152118988 - -0.465604663 - 0.178063959 - 1 - 1 - 72 - Suck -
  • -
  • - 24.167057 - 5.30330229 - -0.03378879 - -0.465604663 - 0.178063959 - 1 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - -41.35107 - -0.843487263 - -0.06996385 - 0.5139825 - 0.148252845 - 3 - 3 - 37 -
  • -
  • - -47.4342079 - 8.690771 - -0.12225467 - 0.5198823 - 0.162018836 - 3 - 3 - 55 - Slimy -
  • -
  • - -41.35107 - -0.843487263 - -0.06996385 - 0.5139825 - 0.148252845 - 3 - 3 - 58 - Slimy -
  • -
  • - -47.4342079 - 8.690771 - -0.12225467 - 0.5198823 - 0.162018836 - 3 - 3 - 49 - Slimy -
  • -
  • - -41.35107 - -0.843487263 - -0.06996385 - 0.5139825 - 0.148252845 - 3 - 3 - 1 -
  • - - -
  • - LayingPawn - -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - -12 - 49 -
  • -
  • - -179.68 - -179.331 - 0.023598671 - -0.0119999992 - -0.37216714 - 2 - 2 - -12 - true - 78 - Cum -
  • -
  • - -179.68 - -179.331 - 0.023598671 - -0.0119999992 - -0.37216714 - 2 - 2 - -12 - 72 -
  • -
  • - -179.68 - -179.331 - -0.012 - -0.382 - 2 - 2 - -12 - 1 -
  • - - - - -
    -
    -
    \ No newline at end of file diff --git a/1.4/Defs/AnimationDefs/FacingForwardFuck.xml b/1.4/Defs/AnimationDefs/FacingForwardFuck.xml deleted file mode 100644 index 440dd8f..0000000 --- a/1.4/Defs/AnimationDefs/FacingForwardFuck.xml +++ /dev/null @@ -1,686 +0,0 @@ - - - - FacingForwardFuck - - true - -
  • Vaginal
  • -
  • Anal
  • -
  • None
  • -
    - -
  • Rape_Anal
  • -
  • Rape_Cunnilingus
  • -
  • Rape_Vaginal
  • -
  • Rape_Reverse_Anal
  • -
  • Rape_Reverse_Vaginal
  • -
  • Sex_Reverse_Anal
  • -
  • Sex_Reverse_Vaginal
  • -
  • Sex_Anal
  • -
  • Sex_Vaginal
  • -
    - -
  • - -
  • Human
  • - - - (0, -0.05) - (0, -0.05) - (0.07, 0.15) - - -
  • - -
  • Human
  • - - -
  • Penis
  • -
    - true - - (-0.03, 0.03) - (-0.05, 0.2) - (-0.02, 0.05) - - -
    - -
  • - SlowFuck - 500 - 300 - true - -
  • - Pawn - -
  • - 16.6431561 - 0.9831765 - -0.0039331913 - 0.263521016 - 0.141592383 - 3 - 2 - 63 - Fuck -
  • -
  • - 14.6821575 - 0.9831765 - -0.09562898 - 0.3166983 - 0.241406 - 3 - 2 - 36 - Slimy -
  • -
  • - 16.6431561 - 0.9831765 - -0.0039331913 - 0.263521016 - 0.141592383 - 3 - 2 - 1 - None -
  • - - -
  • - LayingPawn - -
  • - -19.129 - -14.649 - 0.022 - -0.024 - 0.071 - 1 - 2 - 10 - 63 -
  • -
  • - -19.129 - -14.649 - 0.058226347 - -0.0200669244 - 0.036534965 - 1 - 2 - 15 - 36 -
  • -
  • - -19.129 - -14.649 - 0.022 - -0.024 - 0.071 - 1 - 2 - 10 - 1 -
  • - - - - -
  • - FemaleFaceForward - 200 - 100 - true - -
  • - Pawn - -
  • - 16.6431561 - 8.393279 - -0.0039331913 - 0.263521016 - 0.141592383 - 2 - 2 - 64 - Fuck -
  • -
  • - 14.6821575 - 7.09635925 - -0.06650379 - 0.3166983 - 0.241406 - 2 - 2 - 35 - Slimy -
  • -
  • - 16.6431561 - 8.393279 - -0.0039331913 - 0.263521016 - 0.141592383 - 2 - 2 - 1 - None -
  • - - -
  • - LayingPawn - -
  • - -19.129 - -14.649 - 0.022 - -0.024 - 0.071 - 1 - 2 - 10 - 64 -
  • -
  • - -19.129 - -14.649 - 0.058226347 - -0.0200669244 - 0.036534965 - 1 - 2 - 15 - 35 -
  • -
  • - -19.129 - -14.649 - 0.022 - -0.024 - 0.071 - 1 - 2 - 10 - 1 -
  • - - - - -
  • - HipMovement - 300 - 200 - true - -
  • - Pawn - -
  • - 16.6431561 - 8.393279 - -0.0039331913 - 0.263521016 - 0.141592383 - 2 - 2 - 55 - Fuck -
  • -
  • - 14.6821575 - 7.09635925 - -0.06650379 - 0.3166983 - 0.241406 - 2 - 2 - 20 - Slimy -
  • -
  • - 20.0933418 - 7.5340724 - -0.0468387455 - 0.299985439 - 0.210036 - 2 - 2 - 24 -
  • -
  • - 16.6431561 - 8.393279 - -0.0039331913 - 0.263521016 - 0.141592383 - 2 - 2 - 1 - None -
  • - - -
  • - LayingPawn - -
  • - -19.129 - -14.649 - 0.022 - -0.024 - 0.071 - 1 - 2 - 10 - 55 -
  • -
  • - -19.129 - -14.649 - 0.058226347 - -0.0200669244 - 0.036534965 - 1 - 2 - 15 - 20 -
  • -
  • - -19.129 - -14.649 - 0.047 - -0.021 - 0.047 - 1 - 2 - 5 - 24 - Slimy -
  • -
  • - -19.129 - -14.649 - 0.022 - -0.024 - 0.071 - 1 - 2 - 10 - 1 -
  • - - - - -
  • - MediumFuck - 560 - 280 - true - -
  • - Pawn - -
  • - 16.6431561 - 0.9831765 - -0.0039331913 - 0.263521016 - 0.141592383 - 3 - 2 - 39 - Fuck -
  • -
  • - 14.6821575 - 0.9831765 - -0.09562898 - 0.3166983 - 0.241406 - 3 - 2 - 30 - Slimy -
  • -
  • - 16.6431561 - 0.9831765 - -0.0039331913 - 0.263521016 - 0.141592383 - 3 - 2 - 1 - None -
  • - - -
  • - LayingPawn - -
  • - -19.129 - -14.649 - 0.022 - -0.024 - 0.071 - 1 - 2 - 10 - 39 -
  • -
  • - -19.129 - -14.649 - 0.058226347 - -0.0200669244 - 0.036534965 - 1 - 2 - 15 - 30 -
  • -
  • - -19.129 - -14.649 - 0.022 - -0.024 - 0.071 - 1 - 2 - 10 - 1 -
  • - - - - -
  • - FastFuckFaceForward - 360 - 270 - true - -
  • - Pawn - -
  • - 16.6431561 - 8.393279 - -0.0039331913 - 0.263521016 - 0.141592383 - 2 - 2 - 14 - Fuck -
  • -
  • - 14.6821575 - 7.09635925 - -0.06650379 - 0.3166983 - 0.241406 - 2 - 2 - 15 - Slimy -
  • -
  • - 16.6431561 - 8.489082 - -0.0039331913 - 0.263521016 - 0.141592383 - 2 - 2 - 1 - None -
  • - - -
  • - LayingPawn - -
  • - -19.129 - -14.649 - 0.022 - -0.024 - 0.071 - 1 - 2 - 10 - 14 -
  • -
  • - -19.129 - -14.649 - 0.058226347 - -0.0200669244 - 0.036534965 - 1 - 2 - 15 - 15 -
  • -
  • - -19.129 - -14.649 - 0.022 - -0.024 - 0.071 - 1 - 2 - 10 - 1 -
  • - - - - -
  • - FastFuck - 144 - 72 - true - -
  • - Pawn - -
  • - 16.6431561 - 0.9831765 - -0.0039331913 - 0.263521016 - 0.141592383 - 3 - 2 - 8 - Fuck -
  • -
  • - 14.6821575 - 0.9831765 - -0.09562898 - 0.3166983 - 0.241406 - 3 - 2 - 9 - Slimy -
  • -
  • - 16.6431561 - 0.9831765 - -0.0039331913 - 0.263521016 - 0.141592383 - 3 - 2 - 1 - None -
  • - - -
  • - LayingPawn - -
  • - -19.129 - -14.649 - 0.022 - -0.024 - 0.071 - 1 - 2 - 10 - 8 -
  • -
  • - -19.129 - -14.649 - 0.058226347 - -0.0200669244 - 0.036534965 - 1 - 2 - 15 - 9 -
  • -
  • - -19.129 - -14.649 - 0.022 - -0.024 - 0.071 - 1 - 2 - 10 - 1 -
  • - - - - -
  • - Orgasm - 300 - 400 - true - -
  • - Pawn - -
  • - 16.6431561 - 0.9831765 - -0.0039331913 - 0.263521016 - 0.141592383 - 3 - 2 - true - 66 - Cum -
  • -
  • - 16.6431561 - 0.9831765 - 0.0103825331 - 0.251721561 - 0.1278264 - 3 - 2 - 16 - None -
  • -
  • - 14.6821575 - 0.9831765 - -0.09562898 - 0.3166983 - 0.241406 - 3 - 2 - 17 - Slimy -
  • -
  • - 16.6431561 - 0.9831765 - -0.0039331913 - 0.263521016 - 0.141592383 - 3 - 2 - 1 - None -
  • - - -
  • - LayingPawn - -
  • - -19.129 - -14.649 - 0.022 - -0.024 - 0.071 - 1 - 2 - 10 - 66 - Fuck -
  • -
  • - -19.129 - -14.649 - 0.0120656937 - -0.0200668052 - 0.0886991248 - 1 - 2 - 10 - 16 -
  • -
  • - -19.129 - -14.649 - 0.058226347 - -0.0200669244 - 0.036534965 - 1 - 2 - 15 - 17 -
  • -
  • - -19.129 - -14.649 - 0.022 - -0.024 - 0.071 - 1 - 2 - 10 - 1 -
  • - - - - -
    -
    -
    \ No newline at end of file diff --git a/1.4/Defs/AnimationDefs/LezThreesome.xml b/1.4/Defs/AnimationDefs/LezThreesome.xml deleted file mode 100644 index 49aecc2..0000000 --- a/1.4/Defs/AnimationDefs/LezThreesome.xml +++ /dev/null @@ -1,1086 +0,0 @@ - - - - LesbianThreesome - - true - -
  • None
  • -
  • Vaginal
  • -
  • Oral
  • -
  • Cunnilingus
  • -
    - -
  • Sex_Cunnilingus
  • -
  • Sex_Reverse_Cunnilingus
  • -
  • Rape_Reverse_Cunnilingus
  • -
  • Rape_Oral
  • -
  • Rape_Cunnilingus
  • -
    - -
  • - -
  • Human
  • - - - (0, 0) - - -
  • - -
  • Human
  • - - -
  • Vagina
  • -
    - -
  • - -
  • Human
  • - - -
    - -
  • - Lezzing1 - 644 - 161 - true - -
  • - ItemImportant - -
  • - -65.71689 - -49.7821159 - -0.190476716 - -0.03571415 - 2 - 3 - 30 -
  • -
  • - -65.71689 - -49.7821159 - 0.00174501631 - -0.20227614 - -0.0278478861 - 2 - 3 - 48 - Slimy -
  • -
  • - -65.71689 - -49.7821159 - -0.009596467 - -0.190476716 - -0.03571415 - 2 - 3 - 26 -
  • -
  • - -65.71689 - -49.7821159 - 0.00174501631 - -0.1944099 - -0.0317810178 - 2 - 3 - 56 -
  • -
  • - -65.71689 - -49.7821159 - -0.190476716 - -0.03571415 - 2 - 3 - 1 -
  • - - -
  • - Pawn - -
  • - -69.66737 - -56.7605171 - -0.291667134 - -0.2738092 - 0 - 1 - 30 -
  • -
  • - -69.66737 - -56.7605171 - -0.0315095559 - -0.287733942 - -0.277742326 - 0 - 1 - 48 - Suck -
  • -
  • - -69.66737 - -56.7605171 - -0.0137975514 - -0.291667134 - -0.2738092 - 0 - 1 - 26 -
  • -
  • - -69.66737 - -56.7605171 - -0.0315095559 - -0.2857674 - -0.275775731 - 0 - 1 - 56 -
  • -
  • - -69.66737 - -56.7605171 - -0.291667134 - -0.2738092 - 0 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - -35.6027222 - -15.617774 - -0.0117702484 - 0.301498055 - -0.103156626 - 3 - 3 - 60 - Slimy -
  • -
  • - -46.7103 - -24.973381 - -0.0229591429 - 0.2464343 - -0.109056413 - 3 - 3 - 100 - Slimy -
  • -
  • - -35.6027222 - -15.617774 - -0.0117702484 - 0.301498055 - -0.103156626 - 3 - 3 - 1 -
  • - - - - -
  • - MoveToPosition - 161 - 161 - false - -
  • - LayingPawn - -
  • - -65.71689 - -49.7821159 - -0.190476716 - -0.03571415 - 2 - 3 - 28 -
  • -
  • - -57.7525177 - -49.7821159 - -0.245343938 - -0.0595096871 - 2.45901632 - 3 - 33 -
  • -
  • - -48.3659363 - -49.7821159 - -0.3014404 - 0.135229915 - 3 - 3 - 87 -
  • -
  • - -38.62952 - -49.7821159 - -0.546720743 - 0.5034208 - 3 - 3 - 12 -
  • -
  • - -37.3476677 - -49.7821159 - -0.60738945 - 0.5031259 - 3 - 3 - 1 -
  • - - -
  • - Pawn - -
  • - -69.66737 - -56.7605171 - -0.291667134 - -0.2738092 - 0 - 1 - 28 -
  • -
  • - -68.99955 - -62.3791351 - -0.292355418 - -0.2751858 - 0 - 1 - 81 -
  • -
  • - -83.754425 - -78.6329956 - -0.294346541 - -0.2791681 - 1 - 1 - 51 -
  • -
  • - -90.34562 - -88.86691 - -0.2956002 - -0.281675458 - 1 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - -35.6027222 - -15.617774 - -0.0117702484 - 0.301498055 - -0.103156626 - 3 - 3 - 28 -
  • -
  • - -35.6027222 - -15.617774 - -0.0117702484 - 0.2612817 - -0.107483014 - 3 - 3 - 53 -
  • -
  • - -20.61213 - -15.617774 - -0.0117702484 - 0.298052341 - -0.0857971 - 3 - 3 - 79 -
  • -
  • - -35.6027222 - -15.617774 - -0.0117702484 - 0.588616669 - -0.1503542 - 3 - 3 - 1 -
  • - - - - -
  • - TripleCunnilingus - 900 - 150 - true - -
  • - PawnUnused - -
  • - -37.3476677 - -49.7821159 - -0.60738945 - 0.5031259 - 3 - 3 - 42 -
  • -
  • - -30.27183 - -49.7821159 - -0.04006213 - -0.636888 - 0.491326451 - 3 - 3 - 57 - Slimy -
  • -
  • - -40.5961227 - -51.2084274 - 0.00613888353 - -0.5962455 - 0.412008226 - 3 - 3 - 50 - Suck -
  • -
  • - -37.3476677 - -49.7821159 - -0.60738945 - 0.5031259 - 3 - 3 - 1 -
  • - - -
  • - Pawn - -
  • - -90.34562 - -88.86691 - -0.2956002 - -0.281675458 - 1 - 1 - 50 -
  • -
  • - -95.84532 - -83.23129 - -0.02989915 - -0.31723246 - -0.2718426 - 1 - 1 - 99 -
  • -
  • - -90.34562 - -88.86691 - -0.2956002 - -0.281675458 - 1 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - -35.6027222 - -15.617774 - -0.0117702484 - 0.588616669 - -0.1503542 - 3 - 3 - 57 - Suck -
  • -
  • - -38.4983063 - -24.4238682 - -0.05612552 - 0.5807503 - -0.122822225 - 3 - 3 - 54 - Slimy -
  • -
  • - -41.5732155 - -19.6205444 - -0.0244095139 - 0.581108 - -0.145705938 - 3 - 3 - 38 - Slimy -
  • -
  • - -35.6027222 - -15.617774 - -0.0117702484 - 0.588616669 - -0.1503542 - 3 - 3 - 1 -
  • - - - - -
  • - TripleCunnilingusFaster - 800 - 100 - true - -
  • - PawnUnused - -
  • - -37.3476677 - -49.7821159 - -0.60738945 - 0.5031259 - 3 - 3 - 28 -
  • -
  • - -22.28259 - -49.7821159 - -0.0527483225 - -0.6899853 - 0.489360034 - 3 - 3 - 34 - Slimy -
  • -
  • - -22.5491524 - -49.7821159 - 0.006459078 - -0.587723851 - 0.440195739 - 3 - 3 - 37 - Slimy -
  • -
  • - -37.3476677 - -49.7821159 - -0.60738945 - 0.5031259 - 3 - 3 - 1 -
  • - - -
  • - Pawn - -
  • - -90.34562 - -88.86691 - -0.2956002 - -0.281675458 - 1 - 1 - 44 -
  • -
  • - -98.2992 - -99.2658539 - -0.0368744135 - -0.372296333 - -0.267909527 - 1 - 1 - 55 - Slimy -
  • -
  • - -90.34562 - -88.86691 - -0.2956002 - -0.281675458 - 1 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - -35.6027222 - -15.617774 - -0.0117702484 - 0.588616669 - -0.1503542 - 3 - 3 - 54 - Slimy -
  • -
  • - -40.325676 - 0.126668811 - -0.0006826222 - 0.588616669 - -0.1503542 - 3 - 3 - 45 - Fuck -
  • -
  • - -35.6027222 - -15.617774 - -0.0117702484 - 0.588616669 - -0.1503542 - 3 - 3 - 1 -
  • - - - - -
  • - TripleCunnilingusFaster2 - 576 - 72 - true - -
  • - PawnUnused - -
  • - -37.3476677 - -49.7821159 - -0.60738945 - 0.5031259 - 3 - 3 - 23 -
  • -
  • - -22.28259 - -49.7821159 - -0.0527483225 - -0.6899853 - 0.489360034 - 3 - 3 - 24 - Suck -
  • -
  • - -22.5491524 - -49.7821159 - 0.006459078 - -0.587723851 - 0.440195739 - 3 - 3 - 23 - Slimy -
  • -
  • - -37.3476677 - -49.7821159 - -0.60738945 - 0.5031259 - 3 - 3 - 1 -
  • - - -
  • - Pawn - -
  • - -90.34562 - -88.86691 - -0.2956002 - -0.281675458 - 1 - 1 - 26 -
  • -
  • - -98.2992 - -99.2658539 - -0.0368744135 - -0.372296333 - -0.267909527 - 1 - 1 - 44 - Slimy -
  • -
  • - -90.34562 - -88.86691 - -0.2956002 - -0.281675458 - 1 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - -35.6027222 - -15.617774 - -0.0117702484 - 0.588616669 - -0.1503542 - 3 - 3 - 36 -
  • -
  • - -40.325676 - 0.126668811 - -0.0006826222 - 0.588616669 - -0.1503542 - 3 - 3 - 34 - Suck -
  • -
  • - -35.6027222 - -15.617774 - -0.0117702484 - 0.588616669 - -0.1503542 - 3 - 3 - 1 -
  • - - - - -
  • - NewStage - 350 - 350 - false - -
  • - PawnUnused - -
  • - -37.3476677 - -49.7821159 - -0.60738945 - 0.5031259 - 3 - 3 - 44 -
  • -
  • - -20.8286152 - 9.675526 - -0.60738945 - 0.5031259 - 3 - 3 - true - 45 - Cum -
  • -
  • - -29.4644051 - 4.85463572 - -0.615255833 - 0.5031259 - 3 - 3 - 14 -
  • -
  • - -10.1306162 - 2.49775648 - -0.6149165 - 0.5031259 - 3 - 3 - true - 77 - Slimy -
  • -
  • - -19.30925 - -4.894 - -0.014783442 - -0.6159667 - 0.53643167 - 3 - 3 - 12 - Cum -
  • -
  • - -3.880098 - 30.4898758 - -0.0336211622 - -0.6136687 - 0.503006339 - 3 - 3 - true - 51 -
  • -
  • - -14.4412622 - 22.0189629 - -0.0300732013 - -0.613006055 - 0.503019 - 3 - 3 - 11 -
  • -
  • - -0.208420008 - 35.0374336 - -0.0269476157 - -0.6124223 - 0.503030062 - 3 - 3 - 95 -
  • -
  • - -37.3476677 - -49.7821159 - -0.60738945 - 0.5031259 - 3 - 3 - 1 -
  • - - -
  • - Pawn - -
  • - -90.34562 - -88.86691 - -0.2956002 - -0.281675458 - 1 - 1 - 44 -
  • -
  • - -95.54599 - -113.623627 - -0.2956002 - -0.281675458 - 1 - 1 - true - 45 - Cum -
  • -
  • - -90.34562 - -96.01813 - -0.2956002 - -0.281675458 - 1 - 1 - 14 -
  • -
  • - -102.031006 - -126.010582 - -0.2956002 - -0.281675458 - 1 - 1 - true - 47 - Cum -
  • -
  • - -104.3527 - -108.139137 - -0.287977844 - -0.264174432 - 1 - 1 - 30 -
  • -
  • - -90.346 - -114.442329 - -0.296 - -0.282 - 1 - 1 - 12 - Suck -
  • -
  • - -90.34598 - -136.502762 - -0.295979977 - -0.281983733 - 1 - 1 - true - 28 - Cum -
  • -
  • - -109.976593 - -134.079727 - -0.284174979 - -0.238714755 - 1 - 1 - 23 -
  • -
  • - -100.991768 - -118.849266 - -0.288073748 - -0.2563858 - 1 - 1 - 11 -
  • -
  • - -102.096962 - -139.0435 - -0.290004969 - -0.270123124 - 1 - 1 - 95 -
  • -
  • - -90.34562 - -88.86691 - -0.2956002 - -0.281675458 - 1 - 1 - 1 -
  • - - -
  • - LayingPawn - -
  • - -35.6027222 - -15.617774 - -0.0117702484 - 0.588616669 - -0.1503542 - 3 - 3 - 41 - Slimy -
  • -
  • - -40.5730972 - -17.2931328 - -0.0380636156 - 0.5807503 - -0.152320743 - 3 - 3 - 18 -
  • -
  • - -48.23515 - -11.4770489 - 0.00613904 - 0.581004 - -0.152257308 - 3 - 3 - 21 -
  • -
  • - -37.596405 - -18.6857586 - 0.018463172 - 0.5813001 - -0.1521833 - 3 - 3 - 20 -
  • -
  • - -40.5730972 - -17.2931328 - -0.0380636156 - 0.5807503 - -0.152320743 - 3 - 3 - 18 -
  • -
  • - -48.23515 - -11.4770489 - 0.00613904 - 0.581004 - -0.152257308 - 3 - 3 - 21 -
  • -
  • - -37.596405 - -18.6857586 - 0.018463172 - 0.5813001 - -0.1521833 - 3 - 3 - 21 -
  • -
  • - -48.23515 - -11.4770489 - 0.00613904 - 0.581004 - -0.152257308 - 3 - 3 - 18 -
  • -
  • - -46.5445023 - -11.4770489 - -0.03721544 - 0.581004 - -0.152257308 - 3 - 3 - 21 - Slimy -
  • -
  • - -37.596405 - -18.6857586 - 0.018463172 - 0.5813001 - -0.1521833 - 3 - 3 - 20 -
  • -
  • - -40.5730972 - -17.2931328 - -0.0380636156 - 0.5807503 - -0.152320743 - 3 - 3 - 18 -
  • -
  • - -48.23515 - -11.4770489 - 0.00613904 - 0.581004 - -0.152257308 - 3 - 3 - 21 -
  • -
  • - -37.596405 - -18.6857586 - 0.018463172 - 0.5813001 - -0.1521833 - 3 - 3 - 91 -
  • -
  • - -48.23515 - -11.4770489 - 0.00613904 - 0.581004 - -0.152257308 - 3 - 3 - 1 -
  • - - - - -
    -
    -
    \ No newline at end of file diff --git a/1.4/Defs/AnimationDefs/SidewaysBJ.xml b/1.4/Defs/AnimationDefs/SidewaysBJ.xml deleted file mode 100644 index a528948..0000000 --- a/1.4/Defs/AnimationDefs/SidewaysBJ.xml +++ /dev/null @@ -1,1283 +0,0 @@ - - - - SidewaysBlowjob - - true - -
  • Oral
  • -
  • Fellatio
  • -
    - -
  • Handjob
  • -
  • HandjobF
  • -
  • HandjobRape
  • -
  • HandjobRapeF
  • -
  • Breastjob
  • -
  • BreastjobF
  • -
  • BreastjobRape
  • -
  • BreastjobRapeF
  • -
  • Fellatio
  • -
  • FellatioF
  • -
  • FellatioRape
  • -
  • FellatioRapeF
  • -
  • Beakjob
  • -
  • BeakjobF
  • -
  • BeakjobRape
  • -
  • BeakjobRapeF
  • -
    - -
  • - -
  • Human
  • - - - -
  • - -
  • Human
  • - - - (0, 0) - (0.088, 0.038) - (0.028, 0.257) - (-0.18, 0.028) - - true - true - -
    - -
  • - Initial - 0 - 200 - 200 - false - -
  • - Pawn - -
  • - 48 - 5.26700544 - 4.21946526 - 0 - 0.393312037 - 0.210422277 - 3 - 3 -
  • -
  • - 52 - -11.586771 - 15.1064863 - 0 - 0.440509528 - 0.0412974358 - 3 - 3 -
  • -
  • - 55 - -31.05862 - -15.3939009 - -0.07017967 - 0.543972135 - -0.0685991645 - 3 - 3 -
  • -
  • - 44 - -34.522 - 5.027 - 0 - 0.507 - -0.13 - 3 - 3 -
  • -
  • - 1 - -34.522 - -3.92795014 - -0.0326114 - 0.3909727 - -0.169331312 - 3 - 3 -
  • - - -
  • - LayingPawn - -
  • - 48 - -15.66833 - -10.668 - 0 - -0.287 - 0.165 - 1 - 1 - false -
  • -
  • - 4 - -5.292613 - 8.845157 - 0 - -0.287118852 - 0.165191889 - 1 - 1 -
  • -
  • - 4 - -4.995 - 8.906 - 0 - -0.287 - 0.165 - 1 - 1 - -6 -
  • -
  • - 44 - -4.697 - 8.967 - 0 - -0.287 - 0.165 - 1 - 1 -
  • -
  • - 4 - 1.26067436 - 10.1886148 - 0 - -0.287118852 - 0.165191889 - 1 - 1 -
  • -
  • - 4 - 0.629 - 10.252 - 0 - -0.287 - 0.165 - 1 - 1 - -6 -
  • -
  • - 20 - -0.003 - 10.316 - 0 - -0.287 - 0.165 - 1 - 1 -
  • -
  • - 27 - -7.897 - 11.11 - 0 - -0.287 - 0.165 - 1 - 1 - 7.353 -
  • -
  • - 44 - -10.739 - 11.396 - 0 - -0.287 - 0.165 - 1 - 1 - 10 -
  • -
  • - 1 - -13.7264843 - 11.396 - 0 - -0.287 - 0.165 - 1 - 1 - 10 -
  • - - - - -
  • - Blow - 0 - 480 - 360 - true - -
  • - Pawn - -
  • - 59 - Suck - -34.522 - -3.92795014 - -0.0326114 - 0.3909727 - -0.169331312 - 3 - 3 -
  • -
  • - 19 - -31.3116169 - -1.68748426 - -0.08921084 - 0.4362033 - -0.061169982 - 3 - 3 -
  • -
  • - 41 - -31.3116169 - -12.410552 - -0.08921084 - 0.418504477 - -0.0493704081 - 3 - 3 -
  • -
  • - 1 - -34.522 - -3.92795014 - -0.0326114 - 0.3909727 - -0.169331312 - 3 - 3 -
  • - - -
  • - LayingPawn - -
  • - 59 - Slimy - -13.7264843 - 11.396 - 0 - -0.287 - 0.165 - 1 - 1 - 10 -
  • -
  • - 19 - -10.739 - 11.396 - -0.029309094 - -0.287 - 0.165 - 1 - 1 - 10 -
  • -
  • - 41 - -11.337 - 11.396 - -0.023 - -0.287 - 0.165 - 1 - 1 - 18 -
  • -
  • - 1 - -13.7264843 - 11.396 - 0 - -0.287 - 0.165 - 1 - 1 - 10 -
  • - - - - -
  • - GetOffQuick - 0 - 60 - 60 - false - -
  • - Pawn - -
  • - 59 - Suck - -34.522 - -3.92795014 - -0.0326114 - 0.3909727 - -0.169331312 - 3 - 3 -
  • -
  • - 1 - -31.3116169 - -1.68748426 - -0.08921084 - 0.4362033 - -0.061169982 - 3 - 3 -
  • - - -
  • - LayingPawn - -
  • - 59 - Slimy - -13.7264843 - 11.396 - 0 - -0.287 - 0.165 - 1 - 1 - 10 -
  • -
  • - 1 - -10.739 - 11.396 - -0.029309094 - -0.287 - 0.165 - 1 - 1 - 10 -
  • - - - - -
  • - LickFromSide - 0 - 180 - 180 - false - -
  • - LayingPawn - -
  • - 34 - -31.312 - -1.687 - -0.03 - 0.3216688 - -0.09253198 - 2 - 3 -
  • -
  • - 37 - -36.64 - -10.132 - -0.058 - 0.23 - -0.124 - 2 - 3 - 10 -
  • -
  • - 57 - Suck - -39.8496056 - -2.66623664 - -0.03 - 0.215805382 - -0.1598633 - 2 - 3 -
  • -
  • - 21 - -35.12374 - -13.6572018 - -0.07122117 - 0.219833642 - -0.111214638 - 2 - 3 -
  • -
  • - 30 - -31.5715046 - -8.527115 - -0.0535549521 - 0.3209045 - -0.114978574 - 3 - 3 -
  • -
  • - 1 - -26.8351917 - -1.687 - -0.03 - 0.4556656 - -0.119997159 - 3 - 3 -
  • - - -
  • - Pawn - -
  • - 68 - -10.739 - 11.396 - -0.029309094 - -0.287 - 0.165 - 1 - 1 - 10 -
  • -
  • - 3 - Slimy - -10.739 - 11.396 - -0.029 - -0.287 - 0.165 - 1 - 1 - 23 -
  • -
  • - 3 - -10.739 - 11.396 - -0.029 - -0.287 - 0.165 - 1 - 1 - 17 -
  • -
  • - 25 - -10.739 - 11.396 - -0.029 - -0.287 - 0.165 - 1 - 1 - 22 -
  • -
  • - 3 - Slimy - -10.739 - 8.529886 - -0.029 - -0.287 - 0.165 - 1 - 1 - 18 -
  • -
  • - 4 - -10.739 - -1.653 - -0.029 - -0.287 - 0.165 - 1 - 1 - 10 -
  • -
  • - 19 - -10.739 - -4.025 - -0.029 - -0.287 - 0.165 - 1 - 1 - 17 -
  • -
  • - 54 - None - -13.7264843 - -26.2778587 - 0 - -0.287 - 0.165 - 1 - 1 - 10 -
  • -
  • - 1 - -10.739 - 11.396 - -0.029309094 - -0.287 - 0.165 - 1 - 1 - 10 -
  • - - - - -
  • - FastBlow - 0 - 360 - 180 - true - -
  • - Pawn - -
  • - 19 - -26.8351917 - -1.687 - -0.03 - 0.4556656 - -0.119997159 - 3 - 3 -
  • -
  • - 21 - Slimy - -34.522 - -13.482 - -0.033 - 0.383 - -0.154 - 3 - 3 - 10 -
  • -
  • - 19 - -32.5603333 - 4.89252758 - -0.0310155433 - 0.430507243 - -0.139182657 - 3 - 3 -
  • -
  • - 1 - -26.8351917 - -1.687 - -0.03 - 0.4556656 - -0.119997159 - 3 - 3 -
  • - - -
  • - LayingPawn - -
  • - 19 - -10.739 - 11.396 - -0.029309094 - -0.287 - 0.165 - 1 - 1 - 10 -
  • -
  • - 21 - Suck - -13.726 - 14.585372 - 0 - -0.287 - 0.165 - 1 - 1 - 19 -
  • -
  • - 19 - -11.901 - 11.396 - -0.018 - -0.287 - 0.165 - 1 - 1 -
  • -
  • - 1 - -10.739 - 11.396 - -0.029 - -0.287 - 0.165 - 1 - 1 - 10 -
  • - - - - -
  • - HeadUp - 0 - 250 - 250 - false - -
  • - Pawn - -
  • - 25 - -26.8351917 - -1.687 - -0.03 - 0.4556656 - -0.119997159 - 3 - 3 -
  • -
  • - 39 - Suck - -34.522 - -13.482 - -0.033 - 0.383 - -0.154 - 3 - 3 - 10 - false -
  • -
  • - 143 - -34.522 - -14.0979557 - -0.038907595 - 0.3747224 - -0.151634976 - 3 - 3 - 10 - false -
  • -
  • - 42 - -34.522 - -2.62852883 - -0.0526491776 - 0.363334119 - -0.177598789 - 3 - 3 - 10 - false -
  • -
  • - 1 - -26.8351917 - -1.687 - -0.03 - 0.4556656 - -0.119997159 - 3 - 3 -
  • - - -
  • - LayingPawn - -
  • - 25 - -10.739 - 11.396 - -0.029309094 - -0.287 - 0.165 - 1 - 1 - 10 - false -
  • -
  • - 39 - Slimy - -17.69459 - -10.2001219 - 0 - -0.287 - 0.165 - 1 - 1 - 19 - false -
  • -
  • - 77 - Slimy - -18.524 - -10.2 - 0 - -0.287 - 0.165 - 1 - 1 - 19 - true -
  • -
  • - 66 - Slimy - -18.957 - -10.2 - 0 - -0.287 - 0.165 - 1 - 1 - 19 - false -
  • -
  • - 42 - -20.4536667 - -10.2001219 - 0 - -0.287 - 0.165 - 1 - 1 - 19 - false -
  • -
  • - 1 - -10.739 - -10 - 0 - -0.287 - 0.165 - 1 - 1 - 10 -
  • - - - - -
  • - FasterBlow - 0 - 280 - 112 - true - -
  • - Pawn - -
  • - 13 - -26.8351917 - -1.687 - -0.03 - 0.4556656 - -0.119997159 - 3 - 3 -
  • -
  • - 14 - Suck - -34.522 - -13.482 - -0.033 - 0.383 - -0.154 - 3 - 3 - 10 -
  • -
  • - 1 - None - -26.8351917 - -1.687 - -0.03 - 0.4556656 - -0.119997159 - 3 - 3 -
  • - - -
  • - LayingPawn - -
  • - 13 - -10.739 - -10 - 0 - -0.287 - 0.165 - 1 - 1 - 10 - false -
  • -
  • - 14 - Slimy - -17.69459 - -10.2001219 - 0 - -0.287 - 0.165 - 1 - 1 - 19 -
  • -
  • - 1 - -10.739 - -10 - 0 - -0.287 - 0.165 - 1 - 1 - 10 -
  • - - - - -
  • - EvenFasterBlow - 0 - 160 - 60 - true - -
  • - Pawn - -
  • - 9 - -26.8351917 - -1.687 - -0.03 - 0.4556656 - -0.119997159 - 3 - 3 -
  • -
  • - 10 - Suck - -34.522 - -13.482 - -0.033 - 0.383 - -0.154 - 3 - 3 - 10 -
  • -
  • - 1 - None - -26.8351917 - -1.687 - -0.03 - 0.4556656 - -0.119997159 - 3 - 3 -
  • - - -
  • - LayingPawn - -
  • - 9 - -10.739 - -10 - 0 - -0.287 - 0.165 - 1 - 1 - 10 - false -
  • -
  • - 10 - Fuck - -19.82844 - -10.2001219 - 0 - -0.27323398 - 0.165 - 1 - 1 - 19 - true -
  • -
  • - 1 - -10.739 - -10 - 0 - -0.287 - 0.165 - 1 - 1 - 10 - false -
  • - - - - -
  • - Cum - 0 - 260 - 260 - false - -
  • - Pawn - -
  • - 14 - -26.8351917 - -1.687 - -0.03 - 0.4556656 - -0.119997159 - 3 - 3 -
  • -
  • - 31 - Suck - -34.522 - -13.482 - -0.033 - 0.383 - -0.154 - 3 - 3 - 10 - false -
  • -
  • - 36 - -37.6717453 - -13.482 - -0.033 - 0.377100378 - -0.1598996 - 3 - 3 - 10 - false -
  • -
  • - 6 - -37.672 - -13.901 - -0.033 - 0.377 - -0.16 - 3 - 3 - 10 -
  • -
  • - 6 - Suck - -34.09249 - -19.2079468 - -0.033 - 0.377009124 - -0.159990877 - 3 - 3 - 10 -
  • -
  • - 54 - -37.672 - -13.901 - -0.033 - 0.377 - -0.16 - 3 - 3 - 10 -
  • -
  • - 18 - -37.6717453 - -14.6683264 - -0.033 - 0.377100378 - -0.1598996 - 3 - 3 - 10 -
  • -
  • - 6 - None - -37.672 - -13.901 - -0.033 - 0.377 - -0.16 - 3 - 3 - 10 - false -
  • -
  • - 6 - Cum - -34.09249 - -19.2079468 - -0.033 - 0.377009124 - -0.159990877 - 3 - 3 - 10 -
  • -
  • - 38 - Slimy - -37.672 - -13.901 - -0.033 - 0.377 - -0.16 - 3 - 3 - 10 - false -
  • -
  • - 44 - Slimy - -37.6717453 - -13.482 - -0.033 - 0.377100378 - -0.1598996 - 3 - 3 - 10 -
  • -
  • - 1 - None - -26.8351917 - -1.687 - -0.03 - 0.4556656 - -0.119997159 - 3 - 3 -
  • - - -
  • - LayingPawn - -
  • - 14 - -10.739 - -10 - 0 - -0.287 - 0.165 - 1 - 1 - 10 - false -
  • -
  • - 31 - Fuck - -19.82844 - -10.2001219 - 0 - -0.27323398 - 0.165 - 1 - 1 - 19 - true -
  • -
  • - 36 - None - -19.82844 - -10.2001219 - 0 - -0.27323398 - 0.165 - 1 - 1 - 19 - true -
  • -
  • - 6 - Cum - -19.828 - -10.2 - 0 - -0.273 - 0.165 - 1 - 1 - 19 - false -
  • -
  • - 55 - Cum - -19.828 - -10.2 - 0 - -0.273 - 0.165 - 1 - 1 - 19 - true -
  • -
  • - 23 - -19.828 - -10.2 - 0 - -0.273 - 0.165 - 1 - 1 - 19 - false -
  • -
  • - 33 - Cum - -19.828 - -10.2 - 0 - -0.273 - 0.165 - 1 - 1 - 19 - true -
  • -
  • - 17 - -19.828 - -10.2 - 0 - -0.273 - 0.165 - 1 - 1 - 19 - false -
  • -
  • - 1 - -19.82844 - -10.2001219 - 0 - -0.27323398 - 0.165 - 1 - 1 - 19 - false -
  • - - - - -
    -
    -
    \ No newline at end of file diff --git a/1.4/Defs/AnimationDefs/TemplateAnimation.xml b/1.4/Defs/AnimationDefs/TemplateAnimation.xml deleted file mode 100644 index 0305903..0000000 --- a/1.4/Defs/AnimationDefs/TemplateAnimation.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - diff --git a/1.4/Defs/MainTabDefs/MainButtonDef.xml b/1.4/Defs/MainTabDefs/MainButtonDef.xml deleted file mode 100644 index 0674d24..0000000 --- a/1.4/Defs/MainTabDefs/MainButtonDef.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - OffsetManager - - Control pawn offsets - Rimworld_Animations.MainTabWindow_OffsetConfigure - 54 - false - UI/MainTab - true - - - \ No newline at end of file diff --git a/1.4/Patches/AnimationPatchHSK.xml b/1.4/Patches/AnimationPatchHSK.xml deleted file mode 100644 index 74038ea..0000000 --- a/1.4/Patches/AnimationPatchHSK.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - -
  • Core SK
  • -
    - - - -
  • - Defs/ThingDef/comps - Always - - Defs/ThingDef - - - - -
  • - -
  • - Defs/ThingDef[@Name="BaseAnimalPawn" or @Name="SK_BasePawn" or @Name="BasePawnSkynet"]/comps - -
  • - -
  • - -
    -
    -
    -
    diff --git a/1.4/Patches/AnimationPatch_CompBodyAnimator.xml b/1.4/Patches/AnimationPatch_CompBodyAnimator.xml deleted file mode 100644 index e645747..0000000 --- a/1.4/Patches/AnimationPatch_CompBodyAnimator.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - Always - -
  • - Always - Defs/ThingDef[race][not(comps)] - - - -
  • -
  • - Always - Defs/AlienRace.ThingDef_AlienRace[not(comps)] - - - -
  • - -
  • - Defs/ThingDef[@Name="BasePawn"]/comps - -
  • - -
  • -
  • - Defs/AlienRace.ThingDef_AlienRace/comps - -
  • - -
  • -
    -
    -
    diff --git a/1.4/Patches/CompatibilityPatch_FacialAnimation.xml b/1.4/Patches/CompatibilityPatch_FacialAnimation.xml deleted file mode 100644 index 125d79f..0000000 --- a/1.4/Patches/CompatibilityPatch_FacialAnimation.xml +++ /dev/null @@ -1,130 +0,0 @@ - - - - -
  • [NL] Facial Animation - WIP
  • -
    - - Always - -
  • - /Defs/FacialAnimation.FaceAnimationDef[defName="Lovin" or defName="Lovin2"]/targetJobs - Always - -
  • RJW_Masturbate
  • -
  • GettinBred
  • -
  • Bestiality
  • -
  • BestialityForFemale
  • -
  • ViolateCorpse
  • -
  • Quickie
  • -
  • GettingQuickie
  • -
  • GettinRaped
  • -
  • JoinInBed
  • -
  • GettinLoved
  • -
  • GettinLicked
  • -
  • GettinSucked
  • -
  • WhoreIsServingVisitors
  • -
  • JoinInBedAnimation
  • -
  • GettinLovedAnimation
  • - - -
  • - /Defs/FacialAnimation.FaceAnimationDef[defName="WaitCombat" or defName="Wait_Combat_Rare"]/targetJobs - Always - -
  • RapeComfortPawn
  • -
  • RandomRape
  • -
  • RapeEnemy
  • - - -
  • - /Defs/FacialAnimation.FaceAnimationDef[defName="StandAndBeSociallyActive"]/targetJobs - Always - -
  • WhoreInvitingVisitors
  • - - -
  • - /Defs/FacialAnimation.FaceAnimationDef[defName="Wear" or defName="Wear2" or defName="Wear3"]/targetJobs - Always - -
  • CleanSelf
  • -
  • StruggleInBondageGear
  • - - -
  • - -
  • Rimworld-Animations
  • - - - Always - -
  • - /Defs/FacialAnimation.FaceAnimationDef[defName="Lovin" or defName="Lovin2"]/animationFrames/li[1]/headOffset - Always -
  • -
  • - /Defs/FacialAnimation.FaceAnimationDef[defName="Lovin"]/animationFrames/li[2]/headOffset - Always -
  • -
  • - /Defs/FacialAnimation.FaceAnimationDef[defName="Lovin"]/animationFrames/li[3]/headOffset - Always -
  • -
    -
    - -
    -
    -
    -
    - - \ No newline at end of file diff --git a/1.4/Patches/RacePatches/Epona race Renaissance.xml b/1.4/Patches/RacePatches/Epona race Renaissance.xml deleted file mode 100644 index 9453030..0000000 --- a/1.4/Patches/RacePatches/Epona race Renaissance.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - -
  • Epona race Renaissance
  • -
    - - -
  • - Defs/AlienRace.ThingDef_AlienRace[defName = "Alien_Epona"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[hediffGraphics/Epona_OHPG_female="Things/Pawn/Addons/Breasts/Breasts"]/drawnInBed - - Defs/AlienRace.ThingDef_AlienRace[defName = "Alien_Epona"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[hediffGraphics/Epona_OHPG_female="Things/Pawn/Addons/Breasts/Breasts"]/drawnInBed - - false - - -
  • -
    -
    -
    -
    diff --git a/1.4/Patches/RacePatches/Nyaron.xml b/1.4/Patches/RacePatches/Nyaron.xml deleted file mode 100644 index c176521..0000000 --- a/1.4/Patches/RacePatches/Nyaron.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - -
  • Nyaron race
  • -
    - - -
  • - Defs/AlienRace.ThingDef_AlienRace[defName = "Alien_Nyaron"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart="tail"] - - /Defs/AlienRace.ThingDef_AlienRace[defName = "Alien_Nyaron"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart="tail"] - - false - - -
  • -
  • - Defs/AlienRace.ThingDef_AlienRace[defName = "Alien_Nyaron"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPartLabel="tail"] - - /Defs/AlienRace.ThingDef_AlienRace[defName = "Alien_Nyaron"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPartLabel="tail"] - - false - - -
  • -
    -
    -
    -
    diff --git a/1.4/Sounds/Sex/Clap_1.wav b/1.4/Sounds/Sex/Clap_1.wav deleted file mode 100644 index bccd0f2..0000000 Binary files a/1.4/Sounds/Sex/Clap_1.wav and /dev/null differ diff --git a/1.4/Sounds/Sex/Clap_2.wav b/1.4/Sounds/Sex/Clap_2.wav deleted file mode 100644 index a382f59..0000000 Binary files a/1.4/Sounds/Sex/Clap_2.wav and /dev/null differ diff --git a/1.4/Sounds/Sex/Clap_3.wav b/1.4/Sounds/Sex/Clap_3.wav deleted file mode 100644 index 65cf39b..0000000 Binary files a/1.4/Sounds/Sex/Clap_3.wav and /dev/null differ diff --git a/1.4/Sounds/Sex/Clap_4.wav b/1.4/Sounds/Sex/Clap_4.wav deleted file mode 100644 index 3ae1b3e..0000000 Binary files a/1.4/Sounds/Sex/Clap_4.wav and /dev/null differ diff --git a/1.4/Sounds/Sex/Clap_5.wav b/1.4/Sounds/Sex/Clap_5.wav deleted file mode 100644 index 65144e7..0000000 Binary files a/1.4/Sounds/Sex/Clap_5.wav and /dev/null differ diff --git a/1.4/Sounds/Sex/Clap_6.wav b/1.4/Sounds/Sex/Clap_6.wav deleted file mode 100644 index 0026325..0000000 Binary files a/1.4/Sounds/Sex/Clap_6.wav and /dev/null differ diff --git a/1.4/Sounds/Sex/Clap_7.wav b/1.4/Sounds/Sex/Clap_7.wav deleted file mode 100644 index 6d7de2a..0000000 Binary files a/1.4/Sounds/Sex/Clap_7.wav and /dev/null differ diff --git a/1.4/Sounds/Sex/Clap_8.wav b/1.4/Sounds/Sex/Clap_8.wav deleted file mode 100644 index 1af5710..0000000 Binary files a/1.4/Sounds/Sex/Clap_8.wav and /dev/null differ diff --git a/1.4/Sounds/Sex/Slime/Slimy1.wav b/1.4/Sounds/Sex/Slime/Slimy1.wav deleted file mode 100644 index 3cfbd74..0000000 Binary files a/1.4/Sounds/Sex/Slime/Slimy1.wav and /dev/null differ diff --git a/1.4/Sounds/Sex/Slime/Slimy2.wav b/1.4/Sounds/Sex/Slime/Slimy2.wav deleted file mode 100644 index 36a9197..0000000 Binary files a/1.4/Sounds/Sex/Slime/Slimy2.wav and /dev/null differ diff --git a/1.4/Sounds/Sex/Slime/Slimy3.wav b/1.4/Sounds/Sex/Slime/Slimy3.wav deleted file mode 100644 index 40aff1e..0000000 Binary files a/1.4/Sounds/Sex/Slime/Slimy3.wav and /dev/null differ diff --git a/1.4/Sounds/Sex/Slime/Slimy4.wav b/1.4/Sounds/Sex/Slime/Slimy4.wav deleted file mode 100644 index 0b6404e..0000000 Binary files a/1.4/Sounds/Sex/Slime/Slimy4.wav and /dev/null differ diff --git a/1.4/Sounds/Sex/Slime/Slimy5.wav b/1.4/Sounds/Sex/Slime/Slimy5.wav deleted file mode 100644 index ea310db..0000000 Binary files a/1.4/Sounds/Sex/Slime/Slimy5.wav and /dev/null differ diff --git a/1.4/Sounds/Sex/Suck/Suck_1.wav b/1.4/Sounds/Sex/Suck/Suck_1.wav deleted file mode 100644 index 4f1eafd..0000000 Binary files a/1.4/Sounds/Sex/Suck/Suck_1.wav and /dev/null differ diff --git a/1.4/Sounds/Sex/Suck/Suck_10.wav b/1.4/Sounds/Sex/Suck/Suck_10.wav deleted file mode 100644 index 284cda3..0000000 Binary files a/1.4/Sounds/Sex/Suck/Suck_10.wav and /dev/null differ diff --git a/1.4/Sounds/Sex/Suck/Suck_3.wav b/1.4/Sounds/Sex/Suck/Suck_3.wav deleted file mode 100644 index 95e7348..0000000 Binary files a/1.4/Sounds/Sex/Suck/Suck_3.wav and /dev/null differ diff --git a/1.4/Sounds/Sex/Suck/Suck_4.wav b/1.4/Sounds/Sex/Suck/Suck_4.wav deleted file mode 100644 index 753a023..0000000 Binary files a/1.4/Sounds/Sex/Suck/Suck_4.wav and /dev/null differ diff --git a/1.4/Sounds/Sex/Suck/Suck_5.wav b/1.4/Sounds/Sex/Suck/Suck_5.wav deleted file mode 100644 index 8ecda9c..0000000 Binary files a/1.4/Sounds/Sex/Suck/Suck_5.wav and /dev/null differ diff --git a/1.4/Sounds/Sex/Suck/Suck_6.wav b/1.4/Sounds/Sex/Suck/Suck_6.wav deleted file mode 100644 index 08567d6..0000000 Binary files a/1.4/Sounds/Sex/Suck/Suck_6.wav and /dev/null differ diff --git a/1.4/Sounds/Sex/Suck/Suck_7.wav b/1.4/Sounds/Sex/Suck/Suck_7.wav deleted file mode 100644 index a63b0e4..0000000 Binary files a/1.4/Sounds/Sex/Suck/Suck_7.wav and /dev/null differ diff --git a/1.4/Sounds/Sex/Suck/Suck_8.wav b/1.4/Sounds/Sex/Suck/Suck_8.wav deleted file mode 100644 index 320da09..0000000 Binary files a/1.4/Sounds/Sex/Suck/Suck_8.wav and /dev/null differ diff --git a/1.4/Sounds/Sex/Suck/Suck_9.wav b/1.4/Sounds/Sex/Suck/Suck_9.wav deleted file mode 100644 index 7ab538a..0000000 Binary files a/1.4/Sounds/Sex/Suck/Suck_9.wav and /dev/null differ diff --git a/1.4/Sounds/Sex/Suck/Swallow_1.wav b/1.4/Sounds/Sex/Suck/Swallow_1.wav deleted file mode 100644 index f3276cc..0000000 Binary files a/1.4/Sounds/Sex/Suck/Swallow_1.wav and /dev/null differ diff --git a/1.4/Sounds/Sex/Suck/Swallow_2.wav b/1.4/Sounds/Sex/Suck/Swallow_2.wav deleted file mode 100644 index 09a7a00..0000000 Binary files a/1.4/Sounds/Sex/Suck/Swallow_2.wav and /dev/null differ diff --git a/1.4/Sounds/Sex/Suck/Swallow_3.wav b/1.4/Sounds/Sex/Suck/Swallow_3.wav deleted file mode 100644 index 2817b29..0000000 Binary files a/1.4/Sounds/Sex/Suck/Swallow_3.wav and /dev/null differ diff --git a/1.4/Sounds/Sex/cum.wav b/1.4/Sounds/Sex/cum.wav deleted file mode 100644 index ef98437..0000000 Binary files a/1.4/Sounds/Sex/cum.wav and /dev/null differ diff --git a/1.4/Sounds/Sex/kucyu04.wav b/1.4/Sounds/Sex/kucyu04.wav deleted file mode 100644 index 3ae1ce8..0000000 Binary files a/1.4/Sounds/Sex/kucyu04.wav and /dev/null differ diff --git a/1.4/Source/Actors/Actor.cs b/1.4/Source/Actors/Actor.cs deleted file mode 100644 index 3b382dd..0000000 --- a/1.4/Source/Actors/Actor.cs +++ /dev/null @@ -1,26 +0,0 @@ -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 defNames; - public List requiredGenitals; - public List raceOffsets; - public List blacklistedRaces; - public bool initiator = false; - public string gender; - public bool isFucking = false; - public bool isFucked = false; - public bool controlGenitalAngle = false; - public List bodyDefTypes = new List(); - public BodyTypeOffset bodyTypeOffset = new BodyTypeOffset(); - public Vector3 offset = new Vector2(0, 0); - public List requiredGender; - public List tags = new List(); - } -} diff --git a/1.4/Source/Actors/AlienRaceOffset.cs b/1.4/Source/Actors/AlienRaceOffset.cs deleted file mode 100644 index a5bbe20..0000000 --- a/1.4/Source/Actors/AlienRaceOffset.cs +++ /dev/null @@ -1,15 +0,0 @@ -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; - - } -} diff --git a/1.4/Source/Actors/BodyTypeOffset.cs b/1.4/Source/Actors/BodyTypeOffset.cs deleted file mode 100644 index 82a23a3..0000000 --- a/1.4/Source/Actors/BodyTypeOffset.cs +++ /dev/null @@ -1,18 +0,0 @@ -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 Vector2? Male; - public Vector2? Female; - public Vector2? Thin; - public Vector2? Hulk; - public Vector2? Fat; - - } -} diff --git a/1.4/Source/Animations/AnimationStage.cs b/1.4/Source/Animations/AnimationStage.cs deleted file mode 100644 index 7a1304e..0000000 --- a/1.4/Source/Animations/AnimationStage.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Rimworld_Animations { - public class AnimationStage - { - public string stageName; - public int stageIndex; - public int playTimeTicks = 0; - public int playTimeTicksQuick = -1; - public bool isLooping; - public List animationClips; - public List tags = new List(); - - public void initialize() { - foreach (BaseAnimationClip clip in animationClips) { - clip.buildSimpleCurves(); - //select playTimeTicks as longest playtime of all the animations - if(clip.duration > playTimeTicks) { - playTimeTicks = clip.duration; - } - } - } - } -} diff --git a/1.4/Source/Animations/Clips/BaseAnimationClip.cs b/1.4/Source/Animations/Clips/BaseAnimationClip.cs deleted file mode 100644 index aa35b31..0000000 --- a/1.4/Source/Animations/Clips/BaseAnimationClip.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using RimWorld; -using Verse; - -namespace Rimworld_Animations { - public abstract class BaseAnimationClip - { - public Dictionary SoundEffects = new Dictionary(); - public List types; //types of participants - public int duration; - public abstract void buildSimpleCurves(); - public string soundDef = null; //for playing sounds - public int actor; - public List tags = new List(); - } -} diff --git a/1.4/Source/Animations/Clips/PawnAnimationClip.cs b/1.4/Source/Animations/Clips/PawnAnimationClip.cs deleted file mode 100644 index e9d2489..0000000 --- a/1.4/Source/Animations/Clips/PawnAnimationClip.cs +++ /dev/null @@ -1,115 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using RimWorld; -using Verse; - -namespace Rimworld_Animations { - public class PawnAnimationClip : BaseAnimationClip { - - public List keyframes; - public AltitudeLayer layer = AltitudeLayer.Pawn; - - public Dictionary quiver = new Dictionary(); - public SimpleCurve GenitalAngle = new SimpleCurve(); - public SimpleCurve BodyAngle = new SimpleCurve(); - public SimpleCurve HeadAngle = new SimpleCurve(); - public SimpleCurve HeadBob = new SimpleCurve(); - public SimpleCurve BodyOffsetX = new SimpleCurve(); - public SimpleCurve BodyOffsetZ = new SimpleCurve(); - public SimpleCurve HeadFacing = new SimpleCurve(); - public SimpleCurve BodyFacing = new SimpleCurve(); - - - public override void buildSimpleCurves() { - - - int duration = 0; - //getting the length of the whole clip - foreach(PawnKeyframe frame in keyframes) { - duration += frame.tickDuration; - } - - //guarantees loops don't get cut off mid-anim - this.duration = duration; - - int keyframePosition = 0; - foreach (PawnKeyframe frame in keyframes) { - - if (frame.atTick.HasValue) { - if (frame.bodyAngle.HasValue) - BodyAngle.Add((float)frame.atTick / (float)duration, frame.bodyAngle.Value, true); - - if (frame.headAngle.HasValue) - HeadAngle.Add((float)frame.atTick / (float)duration, frame.headAngle.Value, true); - - if (frame.bodyOffsetX.HasValue) - BodyOffsetX.Add((float)frame.atTick / (float)duration, frame.bodyOffsetX.Value, true); - - if (frame.bodyOffsetZ.HasValue) - BodyOffsetZ.Add((float)frame.atTick / (float)duration, frame.bodyOffsetZ.Value, true); - - if (frame.headFacing.HasValue) - HeadFacing.Add((float)frame.atTick / (float)duration, frame.headFacing.Value, true); - - if (frame.bodyFacing.HasValue) - BodyFacing.Add((float)frame.atTick / (float)duration, frame.bodyFacing.Value, true); - - if (frame.headBob.HasValue) - HeadBob.Add((float)frame.atTick / (float)duration, frame.headBob.Value, true); - - if (frame.genitalAngle.HasValue) - GenitalAngle.Add((float)frame.atTick / (float)duration, frame.genitalAngle.Value, true); - - if (frame.soundEffect != null) { - SoundEffects.Add((int)frame.atTick, frame.soundEffect); - } - - - } - else { - if (frame.bodyAngle.HasValue) - BodyAngle.Add((float)keyframePosition / (float)duration, frame.bodyAngle.Value, true); - - if (frame.headAngle.HasValue) - HeadAngle.Add((float)keyframePosition / (float)duration, frame.headAngle.Value, true); - - if (frame.bodyOffsetX.HasValue) - BodyOffsetX.Add((float)keyframePosition / (float)duration, frame.bodyOffsetX.Value, true); - - if (frame.bodyOffsetZ.HasValue) - BodyOffsetZ.Add((float)keyframePosition / (float)duration, frame.bodyOffsetZ.Value, true); - - if (frame.headFacing.HasValue) - HeadFacing.Add((float)keyframePosition / (float)duration, frame.headFacing.Value, true); - - if (frame.bodyFacing.HasValue) - BodyFacing.Add((float)keyframePosition / (float)duration, frame.bodyFacing.Value, true); - - if (frame.headBob.HasValue) - HeadBob.Add((float)keyframePosition / (float)duration, frame.headBob.Value, true); - - if (frame.genitalAngle.HasValue) - GenitalAngle.Add((float)keyframePosition / (float)duration, frame.genitalAngle.Value, true); - - if (frame.soundEffect != null) { - SoundEffects.Add(keyframePosition, frame.soundEffect); - } - - if(frame.tickDuration != 1 && frame.quiver.HasValue) { - - quiver.Add(keyframePosition, true); - quiver.Add(keyframePosition + frame.tickDuration - 1, false); - } - keyframePosition += frame.tickDuration; - - } - - } - - } - - } -} diff --git a/1.4/Source/Animations/Clips/ThingAnimationClip.cs b/1.4/Source/Animations/Clips/ThingAnimationClip.cs deleted file mode 100644 index 26f4d4c..0000000 --- a/1.4/Source/Animations/Clips/ThingAnimationClip.cs +++ /dev/null @@ -1,74 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Verse; -using RimWorld; - -namespace Rimworld_Animations { - public class ThingAnimationClip : BaseAnimationClip - { - public List keyframes; - - public SimpleCurve PositionX = new SimpleCurve(); - public SimpleCurve PositionZ = new SimpleCurve(); - public SimpleCurve Rotation = new SimpleCurve(); - - - public override void buildSimpleCurves() { - int duration = 0; - //getting the length of the whole clip - foreach (ThingKeyframe frame in keyframes) - { - duration += frame.tickDuration; - } - - //guarantees loops don't get cut off mid-anim - this.duration = duration; - - int keyframePosition = 0; - foreach (ThingKeyframe frame in keyframes) - { - - if (frame.atTick.HasValue) - { - if (frame.positionX.HasValue) - PositionX.Add((float)frame.atTick / (float)duration, frame.positionX.Value, true); - - if (frame.positionZ.HasValue) - PositionZ.Add((float)frame.atTick / (float)duration, frame.positionZ.Value, true); - - if (frame.rotation.HasValue) - Rotation.Add((float)frame.atTick / (float)duration, frame.rotation.Value, true); - - if (frame.soundEffect != null) - { - SoundEffects.Add((int)frame.atTick, frame.soundEffect); - } - - - } - else - { - if (frame.positionX.HasValue) - PositionX.Add((float)keyframePosition / (float)duration, frame.positionX.Value, true); - - if (frame.positionZ.HasValue) - PositionZ.Add((float)keyframePosition / (float)duration, frame.positionZ.Value, true); - - if (frame.rotation.HasValue) - Rotation.Add((float)keyframePosition / (float)duration, frame.rotation.Value, true); - - if (frame.soundEffect != null) - { - SoundEffects.Add(keyframePosition, frame.soundEffect); - } - keyframePosition += frame.tickDuration; - - } - - } - } - } -} diff --git a/1.4/Source/Animations/Keyframes/Keyframe.cs b/1.4/Source/Animations/Keyframes/Keyframe.cs deleted file mode 100644 index 8cd859d..0000000 --- a/1.4/Source/Animations/Keyframes/Keyframe.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Rimworld_Animations { - public abstract class Keyframe - { - public int tickDuration = 1; - public float? atTick; - public string soundEffect; - public List tags = new List(); - } -} diff --git a/1.4/Source/Animations/Keyframes/PawnKeyframe.cs b/1.4/Source/Animations/Keyframes/PawnKeyframe.cs deleted file mode 100644 index e710981..0000000 --- a/1.4/Source/Animations/Keyframes/PawnKeyframe.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Verse; - -namespace Rimworld_Animations { - public class PawnKeyframe : Keyframe - { - public float? bodyAngle; - public float? headAngle; - - public float? genitalAngle; - - public float? bodyOffsetZ; - public float? bodyOffsetX; - - public float? headBob; - //todo: add headOffsets l/r? - - public int? bodyFacing; - public int? headFacing; - - public bool? quiver; - - } -} diff --git a/1.4/Source/Animations/Keyframes/ThingKeyframe.cs b/1.4/Source/Animations/Keyframes/ThingKeyframe.cs deleted file mode 100644 index 6604f5e..0000000 --- a/1.4/Source/Animations/Keyframes/ThingKeyframe.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Rimworld_Animations { - public class ThingKeyframe : Keyframe - { - - public float? positionX; - public float? positionZ; - public float? rotation; - - - - } -} diff --git a/1.4/Source/Comps/CompBodyAnimator.cs b/1.4/Source/Comps/CompBodyAnimator.cs deleted file mode 100644 index 123a8aa..0000000 --- a/1.4/Source/Comps/CompBodyAnimator.cs +++ /dev/null @@ -1,543 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using RimWorld; -using rjw; -using UnityEngine; -using Verse; -using Verse.AI; -using Verse.Sound; - -namespace Rimworld_Animations { - public class CompBodyAnimator : ThingComp - { - /// - /// Cache of the currently animated pawns for the very fast isAnimating checks - /// - private static readonly HashSet animatingPawns = new HashSet(); - /// - /// Check if the is currently animated by this comp - /// - public static bool IsAnimating(Pawn pawn) => animatingPawns.Contains(pawn); - - public Pawn pawn => base.parent as Pawn; - public PawnGraphicSet Graphics; - - //public CompProperties_BodyAnimator Props => (CompProperties_BodyAnimator)(object)base.props; - - public bool isAnimating { - get { - return Animating; - } - set { - Animating = value; - - if (value == true) { - SexUtility.DrawNude(pawn); - animatingPawns.Add(pawn); - } else { - pawn.Drawer.renderer.graphics.ResolveAllGraphics(); - actorsInCurrentAnimation = null; - animatingPawns.Remove(pawn); - } - - PortraitsCache.SetDirty(pawn); - } - } - private bool Animating = false; - private bool mirror = false, quiver = false, shiver = false; - private int actor; - - private int lastDrawFrame = -1; - - private int animTicks = 0, stageTicks = 0, clipTicks = 0; - private int curStage = 0; - private float clipPercent = 0; - - public Vector3 anchor = Vector3.zero, deltaPos = Vector3.zero, headBob = Vector3.zero; - public float bodyAngle = 0, headAngle = 0, genitalAngle = 0; - public Rot4 headFacing = Rot4.North, bodyFacing = Rot4.North; - - public List actorsInCurrentAnimation; - - public bool controlGenitalAngle = false; - public bool fastAnimForQuickie = false; - - private AnimationDef anim; - private AnimationStage stage { - get - { - return anim.animationStages[curStage]; - } - - } - private PawnAnimationClip clip => (PawnAnimationClip)stage.animationClips[actor]; - - public bool Mirror { - get { - return mirror; - } - } - - public void setAnchor(IntVec3 pos) - { - anchor = pos.ToVector3Shifted(); - } - public void setAnchor(Thing thing) { - - //center on bed - if(thing is Building_Bed) { - anchor = thing.Position.ToVector3(); - if (((Building_Bed)thing).SleepingSlotsCount == 2) { - if (thing.Rotation.AsInt == 0) { - anchor.x += 1; - anchor.z += 1; - } - else if (thing.Rotation.AsInt == 1) { - anchor.x += 1; - } - else if(thing.Rotation.AsInt == 3) { - anchor.z += 1; - } - - } - else { - if(thing.Rotation.AsInt == 0) { - anchor.x += 0.5f; - anchor.z += 1f; - } - else if(thing.Rotation.AsInt == 1) { - anchor.x += 1f; - anchor.z += 0.5f; - } - else if(thing.Rotation.AsInt == 2) { - anchor.x += 0.5f; - } else { - anchor.z += 0.5f; - } - } - } - else { - anchor = thing.Position.ToVector3Shifted(); - } - } - public void StartAnimation(AnimationDef anim, List actors, int actor, bool mirror = false, bool shiver = false, bool fastAnimForQuickie = false) { - - actorsInCurrentAnimation = actors; - - if (anim.actors.Count <= actor) - { - return; - } - AlienRaceOffset raceOffset = anim?.actors[actor]?.raceOffsets?.Find(x => x.defName == pawn.def.defName); - - if (raceOffset != null) { - anchor.x += mirror ? raceOffset.offset.x * -1f : raceOffset.offset.x; - anchor.z += raceOffset.offset.y; - } - - //change the offset based on pawn body type - if(pawn?.story?.bodyType != null) { - if (pawn.story.bodyType == BodyTypeDefOf.Fat && anim?.actors[actor]?.bodyTypeOffset?.Fat != null) { - anchor.x += anim.actors[actor].bodyTypeOffset.Fat.Value.x * (mirror ? -1f : 1f); - anchor.z += anim.actors[actor].bodyTypeOffset.Fat.Value.y; - } - else if (pawn.story.bodyType == BodyTypeDefOf.Female && anim?.actors[actor]?.bodyTypeOffset?.Female != null) { - anchor.x += anim.actors[actor].bodyTypeOffset.Female.Value.x * (mirror ? -1f : 1f); - anchor.z += anim.actors[actor].bodyTypeOffset.Female.Value.y; - } - else if (pawn.story.bodyType == BodyTypeDefOf.Male && anim?.actors[actor]?.bodyTypeOffset?.Male != null) { - anchor.x += anim.actors[actor].bodyTypeOffset.Male.Value.x * (mirror ? -1f : 1f); - anchor.z += anim.actors[actor].bodyTypeOffset.Male.Value.y; - } - else if (pawn.story.bodyType == BodyTypeDefOf.Thin && anim?.actors[actor]?.bodyTypeOffset?.Thin != null) { - anchor.x += anim.actors[actor].bodyTypeOffset.Thin.Value.x * (mirror ? -1f : 1f); - anchor.z += anim.actors[actor].bodyTypeOffset.Thin.Value.y; - } - else if (pawn.story.bodyType == BodyTypeDefOf.Hulk && anim?.actors[actor]?.bodyTypeOffset?.Hulk != null) { - anchor.x += anim.actors[actor].bodyTypeOffset.Hulk.Value.x * (mirror ? -1f : 1f); - anchor.z += anim.actors[actor].bodyTypeOffset.Hulk.Value.y; - } - } - - pawn.jobs.posture = PawnPosture.Standing; - - this.actor = actor; - this.anim = anim; - this.mirror = mirror; - this.fastAnimForQuickie = fastAnimForQuickie; - - if (fastAnimForQuickie && anim.animationStages.Any(x => x.playTimeTicksQuick >= 0) == false) - { - curStage = 1; - animTicks = anim.animationStages[0].playTimeTicks; - } else - { - curStage = 0; - animTicks = 0; - } - - stageTicks = 0; - clipTicks = 0; - - quiver = false; - this.shiver = shiver && AnimationSettings.rapeShiver; - - controlGenitalAngle = anim.actors[actor].controlGenitalAngle; - - isAnimating = true; - //tick once for initialization - tickAnim(); - - } - - public override void CompTick() { - - base.CompTick(); - - if(isAnimating) { - - GlobalTextureAtlasManager.TryMarkPawnFrameSetDirty(pawn); - - if (pawn.Dead || pawn?.jobs?.curDriver == null || (pawn?.jobs?.curDriver != null && !(pawn?.jobs?.curDriver is rjw.JobDriver_Sex))) { - isAnimating = false; - } - else { - tickAnim(); - } - } - } - public void animatePawnBody(ref Vector3 rootLoc, ref float angle, ref Rot4 bodyFacing) { - - if(!isAnimating) { - return; - } - rootLoc = anchor + deltaPos; - angle = bodyAngle; - bodyFacing = this.bodyFacing; - - } - - public Rot4 AnimateHeadFacing() - { - return this.headFacing; - } - - - public void tickGraphics(PawnGraphicSet graphics) { - this.Graphics = graphics; - } - - public void tickAnim() { - - - - if (!isAnimating) return; - - if (anim == null) { - isAnimating = false; - return; - } - - animTicks++; - - if (animTicks < anim.animationTimeTicks) { - tickStage(); - } else { - - if(LoopNeverending()) - { - ResetOnLoop(); - } else - { - isAnimating = false; - } - - - } - - - - } - - public void tickStage() - { - - if(stage == null) - { - isAnimating = false; - return; - } - - stageTicks++; - - if(stageTicks >= stage.playTimeTicks || (fastAnimForQuickie && stage.playTimeTicksQuick >= 0 && stageTicks >= stage.playTimeTicksQuick)) { - - curStage++; - - stageTicks = 0; - clipTicks = 0; - clipPercent = 0; - } - - if(curStage >= anim.animationStages.Count) { - if (LoopNeverending()) - { - ResetOnLoop(); - } - else - { - isAnimating = false; - pawn.jobs.curDriver.ReadyForNextToil(); - } - - } else { - tickClip(); - } - - - - } - - public void tickClip() { - - clipTicks++; - - //play sound effect - if(rjw.RJWSettings.sounds_enabled && clip.SoundEffects.ContainsKey(clipTicks) && AnimationSettings.soundOverride) { - - - SoundInfo sound = new TargetInfo(pawn.Position, pawn.Map); - string soundEffectName = clip.SoundEffects[clipTicks]; - - - if ((pawn.jobs.curDriver as JobDriver_Sex).isAnimalOnAnimal) - { - sound.volumeFactor *= RJWSettings.sounds_animal_on_animal_volume; - } - - if(soundEffectName.StartsWith("Voiceline_")) - { - sound.volumeFactor *= RJWSettings.sounds_voice_volume; - } - - if (clip.SoundEffects[clipTicks] == "Cum") { - - sound.volumeFactor *= RJWSettings.sounds_cum_volume; - //considerApplyingSemen(); - - } else - { - sound.volumeFactor *= RJWSettings.sounds_sex_volume; - } - - SoundDef.Named(soundEffectName).PlayOneShot(sound); - - } - if(AnimationSettings.orgasmQuiver && clip.quiver.ContainsKey(clipTicks)) { - quiver = clip.quiver[clipTicks]; - } - - //loop animation if possible - if (clipPercent >= 1 && stage.isLooping) { - clipTicks = 1;//warning: don't set to zero or else calculations go wrong - } - clipPercent = (float)clipTicks / (float)clip.duration; - - calculateDrawValues(); - } - - public void considerApplyingSemen() - { - if(AnimationSettings.applySemenOnAnimationOrgasm && (pawn?.jobs?.curDriver is JobDriver_Sex)) - { - - if (anim.sexTypes.Contains((pawn.jobs.curDriver as JobDriver_Sex).Sexprops.sexType)) - { - //SemenHelper.calculateAndApplySemen((pawn.jobs.curDriver as JobDriver_Sex).Sexprops); - } - } - } - - public void calculateDrawValues() { - - /*if(Find.TickManager.TickRateMultiplier > 1 && (lastDrawFrame + 1 >= RealTime.frameCount || RealTime.deltaTime < 0.05f)) { - return; - }*/ - - deltaPos = new Vector3(clip.BodyOffsetX.Evaluate(clipPercent) * (mirror ? -1 : 1), clip.layer.AltitudeFor(), clip.BodyOffsetZ.Evaluate(clipPercent)); - - string bodyTypeDef = (pawn.story?.bodyType != null) ? pawn.story.bodyType.ToString() : ""; - - if (AnimationSettings.offsets != null && AnimationSettings.offsets.ContainsKey(CurrentAnimation.defName + pawn.def.defName + bodyTypeDef + ActorIndex)) { - deltaPos.x += AnimationSettings.offsets[CurrentAnimation.defName + pawn.def.defName + bodyTypeDef + ActorIndex].x * (mirror ? -1 : 1); - deltaPos.z += AnimationSettings.offsets[CurrentAnimation.defName + pawn.def.defName + bodyTypeDef + ActorIndex].y; - } - - - bodyAngle = (clip.BodyAngle.Evaluate(clipPercent) + (quiver || shiver ? ((Rand.Value * AnimationSettings.shiverIntensity) - (AnimationSettings.shiverIntensity / 2f)) : 0f)) * (mirror ? -1 : 1); - headAngle = clip.HeadAngle.Evaluate(clipPercent) * (mirror ? -1 : 1); - - if (controlGenitalAngle) { - genitalAngle = clip.GenitalAngle.Evaluate(clipPercent) * (mirror ? -1 : 1); - } - - if (AnimationSettings.rotation != null && AnimationSettings.rotation.ContainsKey(CurrentAnimation.defName + pawn.def.defName + bodyTypeDef + ActorIndex)) { - float offsetRotation = AnimationSettings.rotation[CurrentAnimation.defName + pawn.def.defName + bodyTypeDef + ActorIndex] * (Mirror ? -1 : 1); - genitalAngle += offsetRotation; - bodyAngle += offsetRotation; - headAngle += offsetRotation; - } - - - //don't go past 360 or less than 0 - - if (bodyAngle < 0) bodyAngle = 360 - ((-1f*bodyAngle) % 360); - if (bodyAngle > 360) bodyAngle %= 360; - - - if (headAngle < 0) headAngle = 360 - ((-1f * headAngle) % 360); - if (headAngle > 360) headAngle %= 360; - - if (genitalAngle < 0) genitalAngle = 360 - ((-1f * genitalAngle) % 360); - if (genitalAngle > 360) genitalAngle %= 360; - - - bodyFacing = mirror ? new Rot4((int)clip.BodyFacing.Evaluate(clipPercent)).Opposite : new Rot4((int)clip.BodyFacing.Evaluate(clipPercent)); - - bodyFacing = new Rot4((int)clip.BodyFacing.Evaluate(clipPercent)); - if(bodyFacing.IsHorizontal && mirror) { - bodyFacing = bodyFacing.Opposite; - } - - headFacing = new Rot4((int)clip.HeadFacing.Evaluate(clipPercent)); - if(headFacing.IsHorizontal && mirror) { - headFacing = headFacing.Opposite; - } - headBob = new Vector3(0, 0, clip.HeadBob.Evaluate(clipPercent)); - Vector2 bodyScale = (pawn.story?.bodyType?.bodyGraphicScale != null ? pawn.story.bodyType.bodyGraphicScale : Vector2.one); - headBob.z *= bodyScale.x; - - lastDrawFrame = RealTime.frameCount; - - } - - public Vector3 getPawnHeadPosition() { - - Vector3 headPos = anchor + deltaPos + Quaternion.AngleAxis(bodyAngle, Vector3.up) * (pawn.Drawer.renderer.BaseHeadOffsetAt(headFacing) + headBob); - - return headPos; - - } - - public Vector3 getPawnHeadOffset() - { - return Quaternion.AngleAxis(bodyAngle, Vector3.up) * (pawn.Drawer.renderer.BaseHeadOffsetAt(headFacing) + headBob); - - } - - public AnimationDef CurrentAnimation { - get { - return anim; - } - } - - public int ActorIndex { - get { - return actor; - } - } - - public override void PostExposeData() { - base.PostExposeData(); - - Scribe_Defs.Look(ref anim, "RJWAnimations-Anim"); - - Scribe_Values.Look(ref animTicks, "RJWAnimations-animTicks", 1); - Scribe_Values.Look(ref stageTicks, "RJWAnimations-stageTicks", 1); - Scribe_Values.Look(ref clipTicks, "RJWAnimations-clipTicks", 1); - Scribe_Values.Look(ref clipPercent, "RJWAnimations-clipPercent", 1); - Scribe_Values.Look(ref mirror, "RJWAnimations-mirror"); - - Scribe_Values.Look(ref curStage, "RJWAnimations-curStage", 0); - Scribe_Values.Look(ref actor, "RJWAnimations-actor"); - - Scribe_Values.Look(ref anchor, "RJWAnimations-anchor"); - Scribe_Values.Look(ref deltaPos, "RJWAnimations-deltaPos"); - Scribe_Values.Look(ref headBob, "RJWAnimations-headBob"); - Scribe_Values.Look(ref bodyAngle, "RJWAnimations-bodyAngle"); - Scribe_Values.Look(ref headAngle, "RJWAnimations-headAngle"); - - Scribe_Values.Look(ref genitalAngle, "RJWAnimations-GenitalAngle"); - Scribe_Values.Look(ref controlGenitalAngle, "RJWAnimations-controlGenitalAngle"); - - Scribe_Values.Look(ref headFacing, "RJWAnimations-headFacing"); - Scribe_Values.Look(ref headFacing, "RJWAnimations-bodyFacing"); - - Scribe_Values.Look(ref quiver, "RJWAnimations-orgasmQuiver"); - } - - public void shiftActorPositionAndRestartAnimation() { - actor = (actor == anim.actors.Count - 1 ? 0 : actor + 1); - - if (pawn?.story?.bodyType != null) { - if (pawn.story.bodyType == BodyTypeDefOf.Fat && anim?.actors[actor]?.bodyTypeOffset?.Fat != null) { - anchor.x += anim.actors[actor].bodyTypeOffset.Fat.Value.x * (mirror ? -1f : 1f); - anchor.z += anim.actors[actor].bodyTypeOffset.Fat.Value.y; - } - else if (pawn.story.bodyType == BodyTypeDefOf.Female && anim?.actors[actor]?.bodyTypeOffset?.Female != null) { - anchor.x += anim.actors[actor].bodyTypeOffset.Female.Value.x * (mirror ? -1f : 1f); - anchor.z += anim.actors[actor].bodyTypeOffset.Female.Value.y; - } - else if (pawn.story.bodyType == BodyTypeDefOf.Male && anim?.actors[actor]?.bodyTypeOffset?.Male != null) { - anchor.x += anim.actors[actor].bodyTypeOffset.Male.Value.x * (mirror ? -1f : 1f); - anchor.z += anim.actors[actor].bodyTypeOffset.Male.Value.y; - } - else if (pawn.story.bodyType == BodyTypeDefOf.Thin && anim?.actors[actor]?.bodyTypeOffset?.Thin != null) { - anchor.x += anim.actors[actor].bodyTypeOffset.Thin.Value.x * (mirror ? -1f : 1f); - anchor.z += anim.actors[actor].bodyTypeOffset.Thin.Value.y; - } - else if (pawn.story.bodyType == BodyTypeDefOf.Hulk && anim?.actors[actor]?.bodyTypeOffset?.Hulk != null) { - anchor.x += anim.actors[actor].bodyTypeOffset.Hulk.Value.x * (mirror ? -1f : 1f); - anchor.z += anim.actors[actor].bodyTypeOffset.Hulk.Value.y; - } - } - - curStage = 0; - animTicks = 0; - stageTicks = 0; - clipTicks = 0; - - controlGenitalAngle = anim.actors[actor].controlGenitalAngle; - - tickAnim(); - } - - public bool LoopNeverending() - { - JobDriver jobDriver = pawn?.jobs?.curDriver; - if (jobDriver == null) return false; - - if (jobDriver is JobDriver_Sex sexDriver && sexDriver.neverendingsex) - { - return true; - } - - if (jobDriver is JobDriver_SexBaseReciever sexReceiverDriver && sexReceiverDriver.Partner?.jobs?.curDriver is JobDriver_Sex partnerSexDriver && partnerSexDriver.neverendingsex) - { - return true; - } - - return false; - } - - public void ResetOnLoop() - { - curStage = 1; - animTicks = 0; - stageTicks = 0; - clipTicks = 0; - - tickAnim(); - } - } -} diff --git a/1.4/Source/Comps/CompProperties_BodyAnimator.cs b/1.4/Source/Comps/CompProperties_BodyAnimator.cs deleted file mode 100644 index 09df7ce..0000000 --- a/1.4/Source/Comps/CompProperties_BodyAnimator.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Verse; -using RimWorld; - -namespace Rimworld_Animations { - public class CompProperties_BodyAnimator : CompProperties - { - public CompProperties_BodyAnimator() - { - base.compClass = typeof(CompBodyAnimator); - } - } -} diff --git a/1.4/Source/Comps/CompProperties_ThingAnimator.cs b/1.4/Source/Comps/CompProperties_ThingAnimator.cs deleted file mode 100644 index 34c67b1..0000000 --- a/1.4/Source/Comps/CompProperties_ThingAnimator.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Verse; - -namespace Rimworld_Animations { - public class CompProperties_ThingAnimator : CompProperties - { - - public CompProperties_ThingAnimator() - { - base.compClass = typeof(CompThingAnimator); - } - } -} diff --git a/1.4/Source/Comps/CompThingAnimator.cs b/1.4/Source/Comps/CompThingAnimator.cs deleted file mode 100644 index f5315e4..0000000 --- a/1.4/Source/Comps/CompThingAnimator.cs +++ /dev/null @@ -1,245 +0,0 @@ -using RimWorld; -using rjw; -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 CompThingAnimator : ThingComp - { - Vector3 anchor; - - Pawn pawn; - - public bool isAnimating = false, mirror; - - int animTicks = 0, stageTicks = 0, clipTicks = 0, curStage = 0; - float rotation = 0; - float clipPercent = 0; - - public Vector3 deltaPos; - - AnimationDef anim; - private ThingAnimationClip clip => (ThingAnimationClip)stage.animationClips[1]; - private AnimationStage stage - { - get - { - return anim.animationStages[curStage]; - } - - } - - public void StartAnimation(AnimationDef anim, Pawn pawn, bool mirror = false) - { - isAnimating = true; - - this.anim = anim; - this.pawn = pawn; - this.mirror = mirror; - - animTicks = 0; - stageTicks = 0; - clipTicks = 0; - - curStage = 0; - clipPercent = 0; - - tickAnim(); - - } - - public void setAnchor(IntVec3 position) - { - anchor = position.ToVector3(); - } - - public override void CompTick() - { - base.CompTick(); - - if(isAnimating) - { - if (pawn.Dead || pawn?.jobs?.curDriver == null || (pawn?.jobs?.curDriver != null && !(pawn?.jobs?.curDriver is rjw.JobDriver_Sex))) - { - isAnimating = false; - } - else - { - tickAnim(); - } - } - - - } - - public void tickAnim() - { - if (!isAnimating) return; - animTicks++; - - if (animTicks < anim.animationTimeTicks) - { - tickStage(); - } - else - { - if (LoopNeverending()) - { - ResetOnLoop(); - } - else - { - isAnimating = false; - } - - - } - - } - - public void tickStage() - { - if (stage == null) - { - isAnimating = false; - return; - } - - stageTicks++; - - if (stageTicks >= stage.playTimeTicks) - { - - curStage++; - - stageTicks = 0; - clipTicks = 0; - clipPercent = 0; - } - - if (curStage >= anim.animationStages.Count) - { - if (LoopNeverending()) - { - ResetOnLoop(); - } - else - { - isAnimating = false; - } - - } - else - { - tickClip(); - } - } - - public void tickClip() - { - clipTicks++; - - if (clipPercent >= 1 && stage.isLooping) - { - clipTicks = 1;//warning: don't set to zero or else calculations go wrong - } - clipPercent = (float)clipTicks / (float)clip.duration; - - calculateDrawValues(); - } - - public void setAnchor(Thing thing) - { - - //center on bed - if (thing is Building_Bed) - { - anchor = thing.Position.ToVector3(); - if (((Building_Bed)thing).SleepingSlotsCount == 2) - { - if (thing.Rotation.AsInt == 0) - { - anchor.x += 1; - anchor.z += 1; - } - else if (thing.Rotation.AsInt == 1) - { - anchor.x += 1; - } - else if (thing.Rotation.AsInt == 3) - { - anchor.z += 1; - } - - } - else - { - if (thing.Rotation.AsInt == 0) - { - anchor.x += 0.5f; - anchor.z += 1f; - } - else if (thing.Rotation.AsInt == 1) - { - anchor.x += 1f; - anchor.z += 0.5f; - } - else if (thing.Rotation.AsInt == 2) - { - anchor.x += 0.5f; - } - else - { - anchor.z += 0.5f; - } - } - } - else - { - anchor = thing.Position.ToVector3Shifted(); - } - - anchor -= new Vector3(0.5f, 0, 0.5f); - } - private void calculateDrawValues() - { - - //shift up and right 0.5f to align center - deltaPos = new Vector3((clip.PositionX.Evaluate(clipPercent)) * (mirror ? -1 : 1) + 0.5f, AltitudeLayer.Item.AltitudeFor(), clip.PositionZ.Evaluate(clipPercent) + 0.5f); - //Log.Message("Clip percent: " + clipPercent + " deltaPos: " + deltaPos); - rotation = clip.Rotation.Evaluate(clipPercent) * (mirror ? -1 : 1); - } - - public void AnimateThing(Thing thing) - { - thing.Graphic.Draw(deltaPos + anchor, mirror ? Rot4.West : Rot4.East, thing, rotation); - } - - public bool LoopNeverending() - { - if (pawn?.jobs?.curDriver != null && - (pawn.jobs.curDriver is JobDriver_Sex) && (pawn.jobs.curDriver as JobDriver_Sex).neverendingsex) - { - return true; - } - - return false; - } - - public void ResetOnLoop() - { - curStage = 1; - animTicks = 0; - stageTicks = 0; - clipTicks = 0; - - tickAnim(); - } - - } -} diff --git a/1.4/Source/Defs/AnimationDef.cs b/1.4/Source/Defs/AnimationDef.cs deleted file mode 100644 index 395ff83..0000000 --- a/1.4/Source/Defs/AnimationDef.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using RimWorld; -using Verse; - -namespace Rimworld_Animations { - public class AnimationDef : Def - { - public List animationStages; - public List actors; - public int animationTimeTicks = 0; //do not set manually - public bool sounds = false; - public List sexTypes = null; - public List interactionDefTypes = null; - public List tags = new List(); - - public override void PostLoad() { - base.PostLoad(); - foreach(AnimationStage stage in animationStages) { - stage.initialize(); - animationTimeTicks += stage.playTimeTicks; - } - } - } -} diff --git a/1.4/Source/Extensions/PawnWoundDrawerExtension.cs b/1.4/Source/Extensions/PawnWoundDrawerExtension.cs deleted file mode 100644 index 77594e6..0000000 --- a/1.4/Source/Extensions/PawnWoundDrawerExtension.cs +++ /dev/null @@ -1,32 +0,0 @@ -using RimWorld; -using UnityEngine; -using Verse; - -namespace Rimworld_Animations { - - [StaticConstructorOnStartup] - public static class PawnWoundDrawerExtension - { - public static void RenderPawnOverlay(this PawnWoundDrawer pawnWoundDrawer, Vector3 drawLoc, Mesh bodyMesh, Quaternion quat, bool drawNow, PawnOverlayDrawer.OverlayLayer layer, Rot4 pawnRot, bool? overApparel = null, Pawn pawn = null, PawnRenderFlags flags = new PawnRenderFlags()) - { - if (pawn == null) - { return; } - - if (!flags.FlagSet(PawnRenderFlags.Portrait) && layer == PawnOverlayDrawer.OverlayLayer.Head) - { - if (CompBodyAnimator.IsAnimating(pawn) && pawn.Drawer.renderer.graphics.headGraphic != null) - { - CompBodyAnimator pawnAnimator = pawn.TryGetComp(); - pawnRot = pawnAnimator.headFacing; - quat = Quaternion.AngleAxis(angle: pawnAnimator.headAngle, axis: Vector3.up); - float y = drawLoc.y; - drawLoc = pawnAnimator.getPawnHeadPosition() - Quaternion.AngleAxis(pawnAnimator.headAngle, Vector3.up) * pawn.Drawer.renderer.BaseHeadOffsetAt(pawnAnimator.headFacing); - drawLoc.y = y; - } - } - - pawnWoundDrawer.RenderPawnOverlay(drawLoc, bodyMesh, quat, drawNow, layer, pawnRot, overApparel); - } - } - -} diff --git a/1.4/Source/MainTabWindows/MainTabWindow_OffsetConfigure.cs b/1.4/Source/MainTabWindows/MainTabWindow_OffsetConfigure.cs deleted file mode 100644 index 1cbc26d..0000000 --- a/1.4/Source/MainTabWindows/MainTabWindow_OffsetConfigure.cs +++ /dev/null @@ -1,136 +0,0 @@ -using System.Collections.Generic; -using Verse; -using RimWorld; -using UnityEngine; - -namespace Rimworld_Animations { - class MainTabWindow_OffsetConfigure : MainTabWindow - { - - public override Vector2 RequestedTabSize => new Vector2(505, 380); - public override void DoWindowContents(Rect inRect) { - - Rect position = new Rect(inRect.x, inRect.y, inRect.width, inRect.height); - - - Listing_Standard listingStandard = new Listing_Standard(); - listingStandard.Begin(position); - - listingStandard.Label("Animation Manager"); - - listingStandard.GapLine(); - - - if (Find.Selector.SingleSelectedThing is Pawn curPawn) { - - if (CompBodyAnimator.IsAnimating(curPawn)) { - - CompBodyAnimator compBodyAnimator = curPawn.TryGetComp(); - AnimationDef def = compBodyAnimator.CurrentAnimation; - int ActorIndex = compBodyAnimator.ActorIndex; - float offsetX = 0, offsetZ = 0, rotation = 0; - - string bodyTypeDef = (curPawn.story?.bodyType != null) ? curPawn.story.bodyType.ToString() : ""; - - if (AnimationSettings.offsets.ContainsKey(def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex)) { - offsetX = AnimationSettings.offsets[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex].x; - offsetZ = AnimationSettings.offsets[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex].y; - } else { - AnimationSettings.offsets.Add(def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex, new Vector2(0, 0)); - } - - if (AnimationSettings.rotation.ContainsKey(def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex)) { - rotation = AnimationSettings.rotation[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex]; - } - else { - AnimationSettings.rotation.Add(def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex, 0); - } - - listingStandard.Label("Name: " + curPawn.Name + " Race: " + curPawn.def.defName + " Actor Index: " + curPawn.TryGetComp().ActorIndex + " Body Type (if any): " + bodyTypeDef + " Animation: " + def.label + (curPawn.TryGetComp().Mirror ? " mirrored" : "")); - - if(curPawn.def.defName == "Human") { - listingStandard.Label("Warning--You generally don't want to change human offsets, only alien offsets"); - } - - float.TryParse(listingStandard.TextEntryLabeled("X Offset: ", offsetX.ToString()), out offsetX); - offsetX = listingStandard.Slider(offsetX, -2, 2); - - float.TryParse(listingStandard.TextEntryLabeled("Z Offset: ", offsetZ.ToString()), out offsetZ); - offsetZ = listingStandard.Slider(offsetZ, -2, 2); - - float.TryParse(listingStandard.TextEntryLabeled("Rotation: ", rotation.ToString()), out rotation); - rotation = listingStandard.Slider(rotation, -180, 180); - - if(listingStandard.ButtonText("Reset All")) { - offsetX = 0; - offsetZ = 0; - rotation = 0; - } - - listingStandard.GapLine(); - - if(listingStandard.ButtonText("Shift Actors")) { - - if(AnimationSettings.debugMode) { - Log.Message("Shifting actors in animation..."); - } - - for(int i = 0; i < curPawn.TryGetComp().actorsInCurrentAnimation.Count; i++) { - - Pawn actor = curPawn.TryGetComp().actorsInCurrentAnimation[i]; - - actor.TryGetComp()?.shiftActorPositionAndRestartAnimation(); - - //reset the clock time of every pawn in animation - if(actor.jobs.curDriver is rjw.JobDriver_Sex) { - (actor.jobs.curDriver as rjw.JobDriver_Sex).ticks_left = def.animationTimeTicks; - (actor.jobs.curDriver as rjw.JobDriver_Sex).ticksLeftThisToil = def.animationTimeTicks; - (actor.jobs.curDriver as rjw.JobDriver_Sex).duration = def.animationTimeTicks; - } - - } - - } - - if (offsetX != AnimationSettings.offsets[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex].x || offsetZ != AnimationSettings.offsets[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex].y) { - AnimationSettings.offsets[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex] = new Vector2(offsetX, offsetZ); - - } - - if(rotation != AnimationSettings.rotation[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex]) { - AnimationSettings.rotation[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex] = rotation; - } - - } - - } - else { - listingStandard.Label("Select a pawn currently in an animation to change their offsets"); - } - - listingStandard.End(); - - } - - public override void PreOpen() { - base.PreOpen(); - if(AnimationSettings.offsets == null) { - if (AnimationSettings.debugMode) - Log.Message("New offsets"); - AnimationSettings.offsets = new Dictionary(); - } - - if(AnimationSettings.rotation == null) { - if (AnimationSettings.debugMode) - Log.Message("New rotation"); - AnimationSettings.rotation = new Dictionary(); - } - } - - public override void PostClose() { - base.PostClose(); - - LoadedModManager.GetMod().WriteSettings(); - } - } -} diff --git a/1.4/Source/MainTabWindows/OffsetMainButtonDefOf.cs b/1.4/Source/MainTabWindows/OffsetMainButtonDefOf.cs deleted file mode 100644 index e7ad9eb..0000000 --- a/1.4/Source/MainTabWindows/OffsetMainButtonDefOf.cs +++ /dev/null @@ -1,22 +0,0 @@ -using RimWorld; -using Verse; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Rimworld_Animations { - - [DefOf] - public static class OffsetMainButtonDefOf { - - public static MainButtonDef OffsetManager; - - - static OffsetMainButtonDefOf() { - DefOfHelper.EnsureInitializedInCtor(typeof(OffsetMainButtonDefOf)); - } - - } -} diff --git a/1.4/Source/Patches/OtherModPatches/HarmonyPatch_CSL.cs b/1.4/Source/Patches/OtherModPatches/HarmonyPatch_CSL.cs deleted file mode 100644 index 8345ede..0000000 --- a/1.4/Source/Patches/OtherModPatches/HarmonyPatch_CSL.cs +++ /dev/null @@ -1,87 +0,0 @@ -/* -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using HarmonyLib; -using rjw; -using Verse; -using RimWorld; -using System.Reflection.Emit; -using System.Reflection; -using UnityEngine; - -namespace Rimworld_Animations { - [StaticConstructorOnStartup] - public static class HarmonyPatch_CSL { - static HarmonyPatch_CSL() { - try { - ((Action)(() => { - if (LoadedModManager.RunningModsListForReading.Any(x => x.Name == "Children, school and learning")) { - - (new Harmony("rjw")).Patch(AccessTools.Method(AccessTools.TypeByName("Children.PawnRenderer_RenderPawnInternal_Patch"), "RenderPawnInternalScaled"), - prefix: new HarmonyMethod(AccessTools.Method(typeof(HarmonyPatch_CSL), "Prefix_CSL")), - transpiler: new HarmonyMethod(AccessTools.Method(typeof(HarmonyPatch_CSL), "Transpiler_CSL"))); - } - }))(); - } - catch (TypeLoadException ex) { - - } - } - - public static void Prefix_CSL(PawnRenderer __instance, Pawn pawn, ref Vector3 rootLoc, ref float angle, bool renderBody, ref Rot4 bodyFacing, ref Rot4 headFacing, RotDrawMode bodyDrawType, bool portrait, bool headStump, bool invisible) { - - PawnGraphicSet graphics = __instance.graphics; - CompBodyAnimator bodyAnim = pawn.TryGetComp(); - - if (!graphics.AllResolved) { - graphics.ResolveAllGraphics(); - } - - - if (bodyAnim != null && bodyAnim.isAnimating && !portrait) { - bodyAnim.tickGraphics(graphics); - pawn.TryGetComp().animatePawn(ref rootLoc, ref angle, ref bodyFacing, ref headFacing); - - } - } - - public static IEnumerable Transpiler_CSL(IEnumerable instructions) { - - MethodInfo drawMeshNowOrLater = AccessTools.Method(typeof(GenDraw), "DrawMeshNowOrLater"); - FieldInfo headGraphic = AccessTools.Field(typeof(PawnGraphicSet), "headGraphic"); - - - List codes = instructions.ToList(); - bool forHead = true; - for (int i = 0; i < codes.Count(); i++) { - - //Instead of calling drawmeshnoworlater, add pawn to the stack and call my special static method - if (codes[i].OperandIs(drawMeshNowOrLater) && forHead) { - - yield return new CodeInstruction(OpCodes.Ldarg_0); - yield return new CodeInstruction(OpCodes.Ldfld, AccessTools.DeclaredField(typeof(PawnRenderer), "pawn")); - yield return new CodeInstruction(OpCodes.Ldarg_2); - yield return new CodeInstruction(OpCodes.Call, AccessTools.DeclaredMethod(typeof(AnimationUtility), nameof(AnimationUtility.RenderPawnHeadMeshInAnimation), new Type[] { typeof(Mesh), typeof(Vector3), typeof(Quaternion), typeof(Material), typeof(bool), typeof(Pawn), typeof(float) })); - - } - //checking for if(graphics.headGraphic != null) - else if (codes[i].opcode == OpCodes.Ldfld && codes[i].OperandIs(headGraphic)) { - forHead = true; - yield return codes[i]; - } - //checking for if(renderbody) - else if (codes[i].opcode == OpCodes.Ldarg_3) { - forHead = false; - yield return codes[i]; - } - else { - yield return codes[i]; - } - } - } - - } -}*/ diff --git a/1.4/Source/Patches/OtherModPatches/HarmonyPatch_DontShaveYourHead.cs b/1.4/Source/Patches/OtherModPatches/HarmonyPatch_DontShaveYourHead.cs deleted file mode 100644 index 3cb2a63..0000000 --- a/1.4/Source/Patches/OtherModPatches/HarmonyPatch_DontShaveYourHead.cs +++ /dev/null @@ -1,29 +0,0 @@ -using HarmonyLib; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Verse; - -namespace Rimworld_Animations { - class HarmonyPatch_DontShaveYourHead { - - [StaticConstructorOnStartup] - public static class Patch_DontShaveYourHead { - - static Patch_DontShaveYourHead() { - try { - ((Action)(() => - { - if (LoadedModManager.RunningModsListForReading.Any(x => x.Name == "Don't Shave Your Head 1.0")) { - (new Harmony("rjwanim")).Patch(AccessTools.Method(AccessTools.TypeByName("DontShaveYourHead.Harmony_PawnRenderer"), "DrawHairReroute"), //typeof(ShowHair.Patch_PawnRenderer_RenderPawnInternal), nameof(ShowHair.Patch_PawnRenderer_RenderPawnInternal.Postfix)), - transpiler: new HarmonyMethod(AccessTools.Method(typeof(Patch_ShowHairWithHats), "Transpiler"))); - } - }))(); - } - catch (TypeLoadException ex) { } - } - } - } -} diff --git a/1.4/Source/Patches/OtherModPatches/HarmonyPatch_FacialAnimation.cs b/1.4/Source/Patches/OtherModPatches/HarmonyPatch_FacialAnimation.cs deleted file mode 100644 index 59631b8..0000000 --- a/1.4/Source/Patches/OtherModPatches/HarmonyPatch_FacialAnimation.cs +++ /dev/null @@ -1,103 +0,0 @@ -using HarmonyLib; -using RimWorld; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using System.Reflection.Emit; -using System.Text; -using System.Threading.Tasks; -using UnityEngine; -using Verse; - -namespace Rimworld_Animations { - [StaticConstructorOnStartup] - public static class Patch_FacialAnimation { - - static Patch_FacialAnimation() { - try { - ((Action)(() => { - if (LoadedModManager.RunningModsListForReading.Any(x => x.Name == "[NL] Facial Animation - WIP")) { - (new Harmony("rjwanim")).Patch(AccessTools.Method(AccessTools.TypeByName("FacialAnimation.DrawFaceGraphicsComp"), "DrawGraphics"), - prefix: new HarmonyMethod(AccessTools.Method(typeof(Patch_FacialAnimation), "Prefix"))); - } - }))(); - } - catch (TypeLoadException) { - - } - } - - public static bool Prefix(Pawn ___pawn, ref Rot4 headFacing, ref Vector3 headOrigin, ref Quaternion quaternion, bool portrait) { - - if (!portrait && CompBodyAnimator.IsAnimating(___pawn)) { - - CompBodyAnimator bodyAnim = ___pawn.TryGetComp(); - headFacing = bodyAnim.headFacing; - headOrigin = new Vector3(bodyAnim.getPawnHeadPosition().x, headOrigin.y, bodyAnim.getPawnHeadPosition().z); - quaternion = Quaternion.AngleAxis(bodyAnim.headAngle, Vector3.up); - } - - return true; - } - /* - public static List rjwLovinDefNames = new List{ - "Lovin", - "Quickie", - "GettingQuickie", - "JoinInBed", - "JoinInBedAnimation", - "GettinLovedAnimation", - "GettinLoved", - "GettinLicked", - "GettinSucked", - "GettinRaped", - "ViolateCorpse", - "RJW_Masturbate", - "GettinBred", - "Breed", - "RJW_Mate", - "Bestiality", - "BestialityForFemale", - "StruggleInBondageGear", - "WhoreIsServingVisitors", - "UseFM" - }; - - public static List rjwRapeDefNames = new List { - "RapeComfortPawn", - "RandomRape", - "RapeEnemy" - }; - - public static bool Prefix_IsSameA(JobDef job, string ___jobDef, ref bool __result) { - - if(___jobDef != null && ___jobDef == "Lovin" && job?.defName != null && rjwLovinDefNames.Contains(job?.defName)) { - __result = true; - return false; - } - else if (___jobDef != null && ___jobDef == "Wait_Combat" && job?.defName != null && rjwRapeDefNames.Contains(job?.defName)) { - __result = true; - return false; - } - - - return true; - } - - public static bool Prefix_IsSameB(string jobName, string ___jobDef, ref bool __result) { - - if (___jobDef != null && ___jobDef == "Lovin" && jobName != null && rjwLovinDefNames.Contains(jobName)) { - __result = true; - return false; - } - if (___jobDef != null && ___jobDef == "Wait_Combat" && jobName != null && rjwRapeDefNames.Contains(jobName)) { - __result = true; - return false; - } - - return true; - } - */ - } -} \ No newline at end of file diff --git a/1.4/Source/Patches/OtherModPatches/HarmonyPatch_HatsDisplaySelection.cs b/1.4/Source/Patches/OtherModPatches/HarmonyPatch_HatsDisplaySelection.cs deleted file mode 100644 index 1cd5707..0000000 --- a/1.4/Source/Patches/OtherModPatches/HarmonyPatch_HatsDisplaySelection.cs +++ /dev/null @@ -1,77 +0,0 @@ -/*using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using HarmonyLib; -using RimWorld; -using Verse; -using UnityEngine; -using System.Reflection; -using System.Reflection.Emit; - -namespace Rimworld_Animations { - public static class HarmonyPatch_HatsDisplaySelection { - - public static void PatchHatsDisplaySelectionArgs() { - (new Harmony("rjw")).Patch(AccessTools.Method(AccessTools.TypeByName("HatDisplaySelection.Patch"), "DrawHatCEWithHair"), - transpiler: new HarmonyMethod(AccessTools.Method(typeof(HarmonyPatch_HatsDisplaySelection), "ReplaceDrawMeshOrLaterWithAnimate"))); - - (new Harmony("rjw")).Patch(AccessTools.Method(AccessTools.TypeByName("HatDisplaySelection.Patch"), "DrawHatWithHair"), - transpiler: new HarmonyMethod(AccessTools.Method(typeof(HarmonyPatch_HatsDisplaySelection), "ReplaceDrawMeshOrLaterWithAnimate"))); - - (new Harmony("rjw")).Patch(AccessTools.Method(AccessTools.TypeByName("HatDisplaySelection.Patch"), "DrawHeadApparelWithHair"), - prefix: new HarmonyMethod(AccessTools.Method(typeof(HarmonyPatch_HatsDisplaySelection), "PrefixPatchForDrawHeadApparelWithHair"))); - - - } - - public static void PrefixPatchForDrawHeadApparelWithHair(PawnRenderer renderer, ref Vector3 rootLoc, ref float angle, bool renderBody, ref Rot4 bodyFacing, ref Rot4 headFacing, RotDrawMode bodyDrawType, bool portrait, bool headStump, bool invisible) - { - PawnGraphicSet graphics = renderer.graphics; - Pawn pawn = graphics.pawn; - CompBodyAnimator bodyAnim = pawn.TryGetComp(); - - if (!graphics.AllResolved) - { - graphics.ResolveAllGraphics(); - } - - - if (bodyAnim != null && bodyAnim.isAnimating && !portrait && pawn.Map == Find.CurrentMap) - { - bodyAnim.tickGraphics(graphics); - bodyAnim.animatePawn(ref rootLoc, ref angle, ref bodyFacing, ref headFacing); - - } - } - - - public static IEnumerable ReplaceDrawMeshOrLaterWithAnimate(IEnumerable instructions) { - - MethodInfo drawMeshNowOrLater = AccessTools.Method(typeof(GenDraw), "DrawMeshNowOrLater"); - List codes = instructions.ToList(); - for (int i = 0; i < instructions.Count(); i++) { - - - if (codes[i]. - - -(drawMeshNowOrLater)) { - - yield return new CodeInstruction(OpCodes.Ldarg_0); - yield return new CodeInstruction(OpCodes.Ldfld, AccessTools.DeclaredField(AccessTools.TypeByName("HatDisplaySelection.Patch"), "pawn")); - yield return new CodeInstruction(OpCodes.Call, AccessTools.DeclaredMethod(typeof(AnimationUtility), nameof(AnimationUtility.RenderPawnHeadMeshInAnimation), new Type[] { typeof(Mesh), typeof(Vector3), typeof(Quaternion), typeof(Material), typeof(bool), typeof(Pawn) })); - - } - else { - yield return codes[i]; - } - - } - - } - - } -} -*/ \ No newline at end of file diff --git a/1.4/Source/Patches/OtherModPatches/HarmonyPatch_ShowHairWithHats.cs b/1.4/Source/Patches/OtherModPatches/HarmonyPatch_ShowHairWithHats.cs deleted file mode 100644 index a42ab7d..0000000 --- a/1.4/Source/Patches/OtherModPatches/HarmonyPatch_ShowHairWithHats.cs +++ /dev/null @@ -1,51 +0,0 @@ -using HarmonyLib; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using System.Reflection.Emit; -using System.Text; -using System.Threading.Tasks; -using UnityEngine; -using Verse; - -namespace Rimworld_Animations { - [StaticConstructorOnStartup] - public static class Patch_ShowHairWithHats { - - static Patch_ShowHairWithHats() { - try { - ((Action)(() => - { - if (LoadedModManager.RunningModsListForReading.Any(x => x.Name == "[KV] Show Hair With Hats or Hide All Hats - 1.1")) { - (new Harmony("rjwanim")).Patch(AccessTools.Method(AccessTools.TypeByName("ShowHair.Patch_PawnRenderer_RenderPawnInternal"), "Postfix"), //typeof(ShowHair.Patch_PawnRenderer_RenderPawnInternal), nameof(ShowHair.Patch_PawnRenderer_RenderPawnInternal.Postfix)), - transpiler: new HarmonyMethod(AccessTools.Method(typeof(Patch_ShowHairWithHats), "Transpiler"))); - } - }))(); - } - catch (TypeLoadException ex) { } - } - - - public static IEnumerable Transpiler(IEnumerable instructions) { - - MethodInfo drawMeshNowOrLater = AccessTools.Method(typeof(GenDraw), "DrawMeshNowOrLater"); - - List codes = instructions.ToList(); - for (int i = 0; i < codes.Count(); i++) { - - //Instead of calling drawmeshnoworlater, add pawn to the stack and call my special static method - if (codes[i].OperandIs(drawMeshNowOrLater)) { - - yield return new CodeInstruction(OpCodes.Ldarg_0); - yield return new CodeInstruction(OpCodes.Ldfld, AccessTools.DeclaredField(typeof(PawnRenderer), "pawn")); - yield return new CodeInstruction(OpCodes.Call, AccessTools.DeclaredMethod(typeof(AnimationUtility), nameof(AnimationUtility.RenderPawnHeadMeshInAnimation), new Type[] { typeof(Mesh), typeof(Vector3), typeof(Quaternion), typeof(Material), typeof(bool), typeof(Pawn) })); - - } - else { - yield return codes[i]; - } - } - } - } -} diff --git a/1.4/Source/Patches/RJWPatches/HarmonyPatch_SexTick.cs b/1.4/Source/Patches/RJWPatches/HarmonyPatch_SexTick.cs deleted file mode 100644 index 9ba03b2..0000000 --- a/1.4/Source/Patches/RJWPatches/HarmonyPatch_SexTick.cs +++ /dev/null @@ -1,61 +0,0 @@ -using HarmonyLib; -using RimWorld; -using rjw; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Verse; -using Verse.AI; - -namespace Rimworld_Animations -{ - [HarmonyPatch(typeof(JobDriver_Sex), "SexTick")] - public class HarmonyPatch_SexTick - { - public static bool Prefix(JobDriver_Sex __instance, Pawn pawn, Thing target) - { - - if ((target is Pawn) && - !( - (target as Pawn)?.jobs?.curDriver is JobDriver_SexBaseReciever - && - ((target as Pawn).jobs.curDriver as JobDriver_SexBaseReciever).parteners.Any() - && - ((target as Pawn).jobs.curDriver as JobDriver_SexBaseReciever).parteners[0] == pawn)) - { - - __instance.ticks_left--; - __instance.sex_ticks--; - __instance.Orgasm(); - - - if (pawn.IsHashIntervalTick(__instance.ticks_between_thrusts)) - { - __instance.ChangePsyfocus(pawn, target); - __instance.Animate(pawn, target); - __instance.PlaySexSound(); - if (!__instance.Sexprops.isRape) - { - pawn.GainComfortFromCellIfPossible(false); - if (target is Pawn) - { - (target as Pawn).GainComfortFromCellIfPossible(false); - } - } - if(!__instance.isEndytophile) - { - SexUtility.DrawNude(pawn, false); - } - } - - return false; - } - - return true; - } - - } - -} diff --git a/1.4/Source/Patches/RJWPatches/HarmonyPatch_WorkGiverSex.cs b/1.4/Source/Patches/RJWPatches/HarmonyPatch_WorkGiverSex.cs deleted file mode 100644 index af4a755..0000000 --- a/1.4/Source/Patches/RJWPatches/HarmonyPatch_WorkGiverSex.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using rjw; -using HarmonyLib; -using Verse; -using RimWorld; -using Verse.AI; - -namespace Rimworld_Animations { - /* - [HarmonyPatch(typeof(WorkGiver_Sex), "JobOnThing")] - public static class HarmonyPatch_WorkGiverSex { - - public static bool Prefix(ref Job __result, ref Thing t) { - - Building_Bed bed = RestUtility.CurrentBed(t as Pawn); - if (bed == null) { - return false; - } - __result = JobMaker.MakeJob(DefDatabase.GetNamed("JoinInBedAnimation", true), t as Pawn, bed); - return false; - - } - - } - - */ -} diff --git a/1.4/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs b/1.4/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs deleted file mode 100644 index 530600b..0000000 --- a/1.4/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs +++ /dev/null @@ -1,192 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using HarmonyLib; -using RimWorld; -using Verse; -using rjw; - -namespace Rimworld_Animations { - - [HarmonyPatch(typeof(JobDriver_SexBaseInitiator), "Start")] - static class HarmonyPatch_JobDriver_SexBaseInitiator_Start { - public static void Postfix(ref JobDriver_SexBaseInitiator __instance) { - /* - These particular jobs need special code - don't play anim for now - */ - if(__instance is JobDriver_Masturbate || __instance is JobDriver_ViolateCorpse) { - return; - } - - if(!AnimationSettings.PlayAnimForNonsexualActs && NonSexualAct(__instance)) - { - return; - } - - Pawn pawn = __instance.pawn; - - Building_Bed bed = __instance.Bed; - - if ((__instance.Target as Pawn)?.jobs?.curDriver is JobDriver_SexBaseReciever) { - - Pawn Target = __instance.Target as Pawn; - - bool quickie = (__instance is JobDriver_SexQuick) && AnimationSettings.fastAnimForQuickie; - - int preAnimDuration = __instance.duration; - int AnimationTimeTicks = 0; - - - if (bed != null) { - RerollAnimations(Target, out AnimationTimeTicks, bed as Thing, __instance.Sexprops.sexType, quickie, sexProps: __instance.Sexprops); - } - else { - RerollAnimations(Target, out AnimationTimeTicks, sexType: __instance.Sexprops.sexType, fastAnimForQuickie: quickie, sexProps: __instance.Sexprops); - } - - - //Modify Orgasm ticks to only orgasm as many times as RJW stock orgasm allows - if(AnimationTimeTicks != 0) - { - __instance.orgasmstick = preAnimDuration * __instance.orgasmstick / AnimationTimeTicks; - } - - - } - } - - public static void RerollAnimations(Pawn pawn, out int AnimationTimeTicks, Thing bed = null, xxx.rjwSextype sexType = xxx.rjwSextype.None, bool fastAnimForQuickie = false, rjw.SexProps sexProps = null) { - - AnimationTimeTicks = 0; - - if(pawn == null || !(pawn.jobs?.curDriver is JobDriver_SexBaseReciever)) { - Log.Error("Error: Tried to reroll animations when pawn isn't sexing"); - return; - } - - List pawnsToAnimate = (pawn.jobs.curDriver as JobDriver_SexBaseReciever).parteners.ToList(); - - if (!pawnsToAnimate.Contains(pawn)) { - pawnsToAnimate = pawnsToAnimate.Append(pawn).ToList(); - } - - for(int i = 0; i < pawnsToAnimate.Count; i++) { - - if(pawnsToAnimate[i].TryGetComp() == null) { - Log.Error("Error: " + pawnsToAnimate[i].Name + " of race " + pawnsToAnimate[i].def.defName + " does not have CompBodyAnimator attached!"); - break; - } - } - - AnimationDef anim = AnimationUtility.tryFindAnimation(ref pawnsToAnimate, sexType, sexProps); - - if (anim != null) { - - bool mirror = GenTicks.TicksGame % 2 == 0; - - IntVec3 pos = pawn.Position; - - for (int i = 0; i < anim.actors.Count; i++) - { - pawnsToAnimate[i].TryGetComp().isAnimating = false; - } - - for (int i = 0; i < pawnsToAnimate.Count; i++) { - - if (bed != null) - pawnsToAnimate[i].TryGetComp().setAnchor(bed); - else { - - pawnsToAnimate[i].TryGetComp().setAnchor(pos); - } - - bool shiver = pawnsToAnimate[i].jobs.curDriver is JobDriver_SexBaseRecieverRaped; - pawnsToAnimate[i].TryGetComp().StartAnimation(anim, pawnsToAnimate, i, mirror, shiver, fastAnimForQuickie); - - int animTicks = anim.animationTimeTicks - (fastAnimForQuickie ? anim.animationStages[0].playTimeTicks : 0); - (pawnsToAnimate[i].jobs.curDriver as JobDriver_Sex).ticks_left = animTicks; - (pawnsToAnimate[i].jobs.curDriver as JobDriver_Sex).sex_ticks = animTicks; - (pawnsToAnimate[i].jobs.curDriver as JobDriver_Sex).orgasmStartTick = animTicks; - (pawnsToAnimate[i].jobs.curDriver as JobDriver_Sex).duration = animTicks; - - - AnimationTimeTicks = animTicks; - - if(!AnimationSettings.hearts) { - (pawnsToAnimate[i].jobs.curDriver as JobDriver_Sex).ticks_between_hearts = Int32.MaxValue; - } - - } - } - else { - Log.Message("No animation found"); - - /* - - //if pawn isn't already animating, - if (!pawn.TryGetComp().isAnimating) { - (pawn.jobs.curDriver as JobDriver_SexBaseReciever).increase_time(duration); - //they'll just do the thrusting anim - } - - */ - } - } - - - static IEnumerable NonSexActRulePackDefNames = new String[] - { - "MutualHandholdingRP", - "MutualMakeoutRP", - }; - - public static bool NonSexualAct(JobDriver_SexBaseInitiator sexBaseInitiator) - { - if(NonSexActRulePackDefNames.Contains(sexBaseInitiator.Sexprops.rulePack)) - { - return true; - } - return false; - } - } - - [HarmonyPatch(typeof(JobDriver_SexBaseInitiator), "End")] - static class HarmonyPatch_JobDriver_SexBaseInitiator_End { - - public static void Postfix(ref JobDriver_SexBaseInitiator __instance) { - - Pawn reciever = __instance.Target as Pawn; - - if (reciever?.jobs?.curDriver is JobDriver_SexBaseReciever recieverJobDriver) { - if (CompBodyAnimator.IsAnimating(__instance.pawn)) { - - List parteners = recieverJobDriver.parteners; - - for (int i = 0; i < parteners.Count; i++) { - - //prevents pawns who started a new anim from stopping their new anim - if (!((parteners[i].jobs.curDriver as JobDriver_SexBaseInitiator) != null && (parteners[i].jobs.curDriver as JobDriver_SexBaseInitiator).Target != __instance.pawn)) - parteners[i].TryGetComp().isAnimating = false; - - } - - __instance.Target.TryGetComp().isAnimating = false; - - if (xxx.is_human(reciever)) { - reciever?.Drawer.renderer.graphics.ResolveApparelGraphics(); - PortraitsCache.SetDirty(reciever); - } - } - - recieverJobDriver?.parteners.Remove(__instance.pawn); - - } - - if (xxx.is_human(__instance.pawn)) { - __instance.pawn.Drawer.renderer.graphics.ResolveApparelGraphics(); - PortraitsCache.SetDirty(__instance.pawn); - } - } - } -} diff --git a/1.4/Source/Patches/RimworldPatches/HarmonyPatch_HeadHair.cs b/1.4/Source/Patches/RimworldPatches/HarmonyPatch_HeadHair.cs deleted file mode 100644 index 401f1b5..0000000 --- a/1.4/Source/Patches/RimworldPatches/HarmonyPatch_HeadHair.cs +++ /dev/null @@ -1,22 +0,0 @@ -/*using HarmonyLib; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Verse; -using RimWorld; -using UnityEngine; - -namespace Rimworld_Animations -{ - [HarmonyPatch(typeof(PawnRenderer), "DrawHeadHair")] - public static class HarmonyPatch_HeadHair - { - public static void Prefix(ref Vector3 headOffset, ref float angle) - { - - } - - } -}*/ diff --git a/1.4/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderer.cs b/1.4/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderer.cs deleted file mode 100644 index 518f24c..0000000 --- a/1.4/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderer.cs +++ /dev/null @@ -1,79 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using HarmonyLib; -using RimWorld; -using Verse; -using UnityEngine; -using System.Reflection.Emit; - -namespace Rimworld_Animations { - - [HarmonyPatch(typeof(PawnRenderer), "RenderPawnInternal", new Type[] - { - typeof(Vector3), - typeof(float), - typeof(bool), - typeof(Rot4), - typeof(RotDrawMode), - typeof(PawnRenderFlags) - } - )] - public static class HarmonyPatch_PawnRenderer - { - - [HarmonyBefore(new string[] { "showhair.kv.rw", "erdelf.HumanoidAlienRaces", "Nals.FacialAnimation" })] - public static void Prefix(PawnRenderer __instance, ref Vector3 rootLoc, ref float angle, bool renderBody, ref Rot4 bodyFacing, RotDrawMode bodyDrawType, PawnRenderFlags flags) - { - - if (flags.FlagSet(PawnRenderFlags.Portrait)) return; - - PawnGraphicSet graphics = __instance.graphics; - Pawn pawn = graphics.pawn; - - if (CompBodyAnimator.IsAnimating(pawn) && pawn.Map == Find.CurrentMap) - { - pawn.TryGetComp().animatePawnBody(ref rootLoc, ref angle, ref bodyFacing); - - } - - } - - public static IEnumerable Transpiler(IEnumerable instructions) - { - List ins = instructions.ToList(); - - for(int i = 0; i < instructions.Count(); i++) - { - - if (i - 3 >= 0 && ins[i - 3].opcode == OpCodes.Call && ins[i - 3].operand != null && ins[i - 3].OperandIs(AccessTools.DeclaredMethod(typeof(PawnRenderer), "BaseHeadOffsetAt"))) - { - - yield return new CodeInstruction(OpCodes.Ldloca, (object)0); - yield return new CodeInstruction(OpCodes.Ldloca, (object)9); - yield return new CodeInstruction(OpCodes.Ldloca, (object)8); - yield return new CodeInstruction(OpCodes.Ldarga, (object)2); - yield return new CodeInstruction(OpCodes.Ldarg_0); - yield return new CodeInstruction(OpCodes.Ldfld, AccessTools.DeclaredField(typeof(PawnRenderer), "pawn")); - yield return new CodeInstruction(OpCodes.Ldarg, (object)6); - yield return new CodeInstruction(OpCodes.Call, AccessTools.DeclaredMethod(typeof(AnimationUtility), "AdjustHead")); - yield return ins[i]; - //headFacing equals true - } - // Fixes the offsets for eye implants and wounds on the head during animations - else if (ins[i].opcode == OpCodes.Callvirt && ins[i].operand != null && ins[i].OperandIs(AccessTools.DeclaredMethod(typeof(PawnOverlayDrawer), "RenderPawnOverlay"))) - { - // Pass some additional info to a new overload of RenderOverBody - yield return new CodeInstruction(OpCodes.Ldarg_0); - yield return new CodeInstruction(OpCodes.Ldfld, AccessTools.DeclaredField(typeof(PawnRenderer), "pawn")); - yield return new CodeInstruction(OpCodes.Ldarg_S, (object)6); // renderer flags - yield return new CodeInstruction(OpCodes.Call, AccessTools.DeclaredMethod(typeof(PawnWoundDrawerExtension), "RenderPawnOverlay")); - } - else - { - yield return ins[i]; - } - } - } - } -} diff --git a/1.4/Source/Patches/RimworldPatches/HarmonyPatch_PawnRotation.cs b/1.4/Source/Patches/RimworldPatches/HarmonyPatch_PawnRotation.cs deleted file mode 100644 index cf2a7d9..0000000 --- a/1.4/Source/Patches/RimworldPatches/HarmonyPatch_PawnRotation.cs +++ /dev/null @@ -1,23 +0,0 @@ -using HarmonyLib; -using Verse; - -namespace Rimworld_Animations { - [HarmonyPatch(typeof(Thing), nameof(Thing.Rotation), MethodType.Getter)] - public static class HarmonyPatch_PawnRotation { - - public static bool Prefix(Thing __instance, ref Rot4 __result) { - - if (!(__instance is Pawn pawn)) { - return true; - } - - if (!CompBodyAnimator.IsAnimating(pawn)) { - return true; - } - - __result = pawn.TryGetComp().bodyFacing; - - return false; - } - } -} diff --git a/1.4/Source/Patches/RimworldPatches/HarmonyPatch_Pawn_DrawTracker.cs b/1.4/Source/Patches/RimworldPatches/HarmonyPatch_Pawn_DrawTracker.cs deleted file mode 100644 index fdd3e07..0000000 --- a/1.4/Source/Patches/RimworldPatches/HarmonyPatch_Pawn_DrawTracker.cs +++ /dev/null @@ -1,20 +0,0 @@ -using HarmonyLib; -using UnityEngine; -using Verse; - -namespace Rimworld_Animations { - - [HarmonyPatch(typeof(Pawn_DrawTracker), "DrawPos", MethodType.Getter)] - public static class HarmonyPatch_Pawn_DrawTracker { - public static bool Prefix(ref Pawn ___pawn, ref Vector3 __result) { - - if (CompBodyAnimator.IsAnimating(___pawn)) { - CompBodyAnimator bodyAnim = ___pawn.TryGetComp(); - __result = bodyAnim.anchor + bodyAnim.deltaPos; - - return false; - } - return true; - } - } -} diff --git a/1.4/Source/Patches/RimworldPatches/HarmonyPatch_ResolveApparelGraphics.cs b/1.4/Source/Patches/RimworldPatches/HarmonyPatch_ResolveApparelGraphics.cs deleted file mode 100644 index 379f85e..0000000 --- a/1.4/Source/Patches/RimworldPatches/HarmonyPatch_ResolveApparelGraphics.cs +++ /dev/null @@ -1,18 +0,0 @@ -using HarmonyLib; -using Verse; - -namespace Rimworld_Animations -{ - [HarmonyPatch(typeof(PawnGraphicSet), "ResolveApparelGraphics")] - public static class HarmonyPatch_ResolveApparelGraphics - { - public static bool Prefix(ref Pawn ___pawn) - { - if (CompBodyAnimator.IsAnimating(___pawn)) - { - return false; - } - return true; - } - } -} diff --git a/1.4/Source/Patches/RimworldPatches/HarmonyPatch_SetPawnAnimatable.cs b/1.4/Source/Patches/RimworldPatches/HarmonyPatch_SetPawnAnimatable.cs deleted file mode 100644 index f495bff..0000000 --- a/1.4/Source/Patches/RimworldPatches/HarmonyPatch_SetPawnAnimatable.cs +++ /dev/null @@ -1,32 +0,0 @@ -using HarmonyLib; -using RimWorld; -using System.Collections.Generic; -using Verse; - -namespace Rimworld_Animations -{ - [HarmonyPatch(typeof(PawnRenderer), "RenderPawnAt")] - public static class PawnRenderer_RenderPawnAt_Patch - { - static bool ClearCache(Pawn pawn) - { - return pawn.IsInvisible() || CompBodyAnimator.IsAnimating(pawn); - } - - public static IEnumerable Transpiler(IEnumerable instructions) - { - foreach (CodeInstruction i in instructions) - { - if (i.Calls(AccessTools.Method(typeof(PawnUtility), nameof(PawnUtility.IsInvisible)))) - { - yield return CodeInstruction.Call(typeof(PawnRenderer_RenderPawnAt_Patch), nameof(ClearCache)); - } - else - { - yield return i; - } - } - } - } - -} diff --git a/1.4/Source/Patches/RimworldPatches/HarmonyPatch_Thing.cs b/1.4/Source/Patches/RimworldPatches/HarmonyPatch_Thing.cs deleted file mode 100644 index 9477abf..0000000 --- a/1.4/Source/Patches/RimworldPatches/HarmonyPatch_Thing.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using HarmonyLib; -using RimWorld; -using Verse; - -namespace Rimworld_Animations -{ - [HarmonyPatch(typeof(Thing), "DrawAt")] - public static class HarmonyPatch_Thing - { - - public static bool Prefix(Thing __instance) - { - CompThingAnimator thingAnimator = __instance.TryGetComp(); - if (thingAnimator != null && thingAnimator.isAnimating) - { - thingAnimator.AnimateThing(__instance); - return false; - - } - - return true; - - } - - } -} diff --git a/1.4/Source/Settings/AnimationSettings.cs b/1.4/Source/Settings/AnimationSettings.cs deleted file mode 100644 index 0a96621..0000000 --- a/1.4/Source/Settings/AnimationSettings.cs +++ /dev/null @@ -1,98 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Verse; -using UnityEngine; -using RimWorld; - -namespace Rimworld_Animations { - - public class AnimationSettings : ModSettings { - - public static bool orgasmQuiver, rapeShiver, soundOverride = true, hearts = true, controlGenitalRotation = false, applySemenOnAnimationOrgasm = false, fastAnimForQuickie = false, - PlayAnimForNonsexualActs = true; - public static bool offsetTab = false, debugMode = false; - public static float shiverIntensity = 2f; - - public static Dictionary offsets = new Dictionary(); - public static Dictionary rotation = new Dictionary(); - - public override void ExposeData() { - - base.ExposeData(); - - Scribe_Values.Look(ref debugMode, "RJWAnimations-AnimsDebugMode", false); - Scribe_Values.Look(ref offsetTab, "RJWAnimations-EnableOffsetTab", false); - Scribe_Values.Look(ref controlGenitalRotation, "RJWAnimations-controlGenitalRotation", false); - Scribe_Values.Look(ref orgasmQuiver, "RJWAnimations-orgasmQuiver"); - Scribe_Values.Look(ref fastAnimForQuickie, "RJWAnimations-fastAnimForQuickie"); - Scribe_Values.Look(ref rapeShiver, "RJWAnimations-rapeShiver"); - Scribe_Values.Look(ref hearts, "RJWAnimation-sheartsOnLovin"); - Scribe_Values.Look(ref PlayAnimForNonsexualActs, "RJWAnims-PlayAnimForNonsexualActs"); - Scribe_Values.Look(ref applySemenOnAnimationOrgasm, "RJWAnimations-applySemenOnOrgasm", false); - Scribe_Values.Look(ref soundOverride, "RJWAnimations-rjwAnimSoundOverride", true); - Scribe_Values.Look(ref shiverIntensity, "RJWAnimations-shiverIntensity", 2f); - //todo: save offsetsByDefName - - Scribe_Collections.Look(ref offsets, "RJWAnimations-animationOffsets"); - Scribe_Collections.Look(ref rotation, "RJWAnimations-rotationOffsets"); - - - - //needs to be rewritten - //probably somewhere in options? - - } - - } - - public class RJW_Animations : Mod { - - public RJW_Animations(ModContentPack content) : base(content) { - GetSettings(); - - } - - public override void DoSettingsWindowContents(Rect inRect) { - - Listing_Standard listingStandard = new Listing_Standard(); - listingStandard.Begin(inRect); - - listingStandard.CheckboxLabeled("Enable Sound Override", ref AnimationSettings.soundOverride); - listingStandard.CheckboxLabeled("Control Genital Rotation", ref AnimationSettings.controlGenitalRotation); - listingStandard.CheckboxLabeled("Play Fast Animation for Quickie", ref AnimationSettings.fastAnimForQuickie); - listingStandard.CheckboxLabeled("Apply Semen on Animation Orgasm", ref AnimationSettings.applySemenOnAnimationOrgasm); - - if(AnimationSettings.applySemenOnAnimationOrgasm) { - listingStandard.Label("Recommended--turn down \"Cum on body percent\" in RJW settings to about 33%"); - } - - listingStandard.CheckboxLabeled("Enable Orgasm Quiver", ref AnimationSettings.orgasmQuiver); - listingStandard.CheckboxLabeled("Enable Rape Shiver", ref AnimationSettings.rapeShiver); - listingStandard.CheckboxLabeled("Enable hearts during lovin'", ref AnimationSettings.hearts); - listingStandard.CheckboxLabeled("Play animation for nonsexual acts (handholding, makeout)", ref AnimationSettings.PlayAnimForNonsexualActs); - listingStandard.CheckboxLabeled("Enable Animation Manager Tab", ref AnimationSettings.offsetTab); - - listingStandard.Label("Shiver/Quiver Intensity (default 2): " + AnimationSettings.shiverIntensity); - AnimationSettings.shiverIntensity = listingStandard.Slider(AnimationSettings.shiverIntensity, 0.0f, 12f); - - listingStandard.CheckboxLabeled("Debug Mode", ref AnimationSettings.debugMode); - - - listingStandard.End(); - base.DoSettingsWindowContents(inRect); - } - - public override void WriteSettings() { - base.WriteSettings(); - OffsetMainButtonDefOf.OffsetManager.buttonVisible = AnimationSettings.offsetTab; - - } - - public override string SettingsCategory() { - return "RJW Animation Settings"; - } - } -} diff --git a/1.4/Source/Utilities/AnimationUtility.cs b/1.4/Source/Utilities/AnimationUtility.cs deleted file mode 100644 index fa60198..0000000 --- a/1.4/Source/Utilities/AnimationUtility.cs +++ /dev/null @@ -1,325 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using RimWorld; -using rjw.Modules.Interactions.Helpers; -using rjw.Modules.Interactions.Objects; -using UnityEngine; -using Verse; -using Verse.AI; -using rjw.Modules.Interactions.Enums; - -namespace Rimworld_Animations { - public static class AnimationUtility { - /* - Note: always make the list in this order: - Female pawns, animal female pawns, male pawns, animal male pawns - */ - public static AnimationDef tryFindAnimation(ref List participants, rjw.xxx.rjwSextype sexType = 0, rjw.SexProps sexProps = null) { - - - InteractionWithExtension interaction = InteractionHelper.GetWithExtension(sexProps.dictionaryKey); - - participants = - participants.OrderBy(p => - p.jobs.curDriver is rjw.JobDriver_Sex - && !(p.jobs.curDriver as rjw.JobDriver_Sex).Sexprops.isRevese /*Gargulefix!!!*/ - && !(p.jobs.curDriver as rjw.JobDriver_Sex).Sexprops.isReceiver) - .OrderBy(p => rjw.xxx.can_fuck(p)) - .ToList(); - - - List localParticipants = new List(participants); - - IEnumerable options = DefDatabase.AllDefs.Where((AnimationDef x) => { - - - if (x.actors.Count != localParticipants.Count) { - if (AnimationSettings.debugMode) - Log.Message(x.defName.ToStringSafe() + " not selected -- doesn't match count"); - return false; - } - for (int i = 0; i < x.actors.Count; i++) { - - if (rjw.RJWPreferenceSettings.Malesex == rjw.RJWPreferenceSettings.AllowedSex.Nohomo) { - if (rjw.xxx.is_male(localParticipants[i]) && x.actors[i].isFucked) { - - if (AnimationSettings.debugMode) - Log.Message(x.defName.ToStringSafe() + " not selected -- " + localParticipants[i].def.defName.ToStringSafe() + " is fucked, shouldn't be due to homo rules"); - - return false; - } - } - if (x.actors[i].requiredGender != null && !x.actors[i].requiredGender.Contains(localParticipants[i].gender.ToStringSafe())) - { - if (AnimationSettings.debugMode) - { - Log.Message(string.Concat(new string[] - { - x.defName.ToStringSafe(), - " not selected -- ", - localParticipants[i].def.defName.ToStringSafe(), - " ", - localParticipants[i].Name.ToStringSafe(), - " does not match required gender" - })); - } - return false; - } - if ((x.actors[i].blacklistedRaces != null) && x.actors[i].blacklistedRaces.Contains(localParticipants[i].def.defName)) { - if(AnimationSettings.debugMode) - Log.Message(x.defName.ToStringSafe() + " not selected -- " + localParticipants[i].def.defName.ToStringSafe() + " " + localParticipants[i].Name.ToStringSafe() + " is blacklisted"); - return false; - } - - if(x.actors[i].defNames.Contains("Human")) { - if (!rjw.xxx.is_human(localParticipants[i])) { - if (AnimationSettings.debugMode) - Log.Message(x.defName.ToStringSafe() + " not selected -- " + localParticipants[i].def.defName.ToStringSafe() + " " + localParticipants[i].Name.ToStringSafe() + " is not human"); - - return false; - } - - } - else if (!x.actors[i].bodyDefTypes.Contains(localParticipants[i].RaceProps.body)) { - - if (!x.actors[i].defNames.Contains(localParticipants[i].def.defName)) { - - if (AnimationSettings.debugMode) - { - string animInfo = x.defName.ToStringSafe() + " not selected -- " + localParticipants[i].def.defName.ToStringSafe() + " " + localParticipants[i].Name.ToStringSafe() + " is not "; - foreach(String defname in x.actors[i].defNames) { - animInfo += defname + ", "; - } - if (AnimationSettings.debugMode) - Log.Message(animInfo); - } - - return false; - } - } - //genitals checking - - if(!GenitalCheckForPawn(x.actors[i].requiredGenitals, localParticipants[i], out string failReason)) { - if (AnimationSettings.debugMode) - Log.Message("Didn't select " + x.defName + ", " + localParticipants[i].Name + " " + failReason); - return false; - } - - //TESTING ANIMATIONS ONLY REMEMBER TO COMMENT OUT BEFORE PUSH - /* - if (x.defName != "Cunnilingus") - return false; - */ - - - if (x.actors[i].isFucking && !rjw.xxx.can_fuck(localParticipants[i])) { - if (AnimationSettings.debugMode) - Log.Message(x.defName.ToStringSafe() + " not selected -- " + localParticipants[i].def.defName.ToStringSafe() + " " + localParticipants[i].Name.ToStringSafe() + " can't fuck"); - return false; - } - - if (x.actors[i].isFucked && !rjw.xxx.can_be_fucked(localParticipants[i])) { - if (AnimationSettings.debugMode) - Log.Message(x.defName.ToStringSafe() + " not selected -- " + localParticipants[i].def.defName.ToStringSafe() + " " + localParticipants[i].Name.ToStringSafe() + " can't be fucked"); - return false; - } - } - - if (AnimationSettings.debugMode) - Log.Message(x.defName.ToStringSafe() + " selected"); - - return true; - }); - - List optionsWithInteractionType = options.ToList().FindAll(x => x.interactionDefTypes != null && x.interactionDefTypes.Contains(sexProps.sexType.ToStringSafe())); - if (optionsWithInteractionType.Any()) { - if (AnimationSettings.debugMode) - Log.Message("Selecting animation for interaction type " + sexProps.sexType.ToStringSafe() + "..."); - return optionsWithInteractionType.RandomElement(); - } - List optionsWithSexType = options.ToList().FindAll(x => x.sexTypes != null && x.sexTypes.Contains(sexType)); - if (optionsWithSexType.Any()) { - if (AnimationSettings.debugMode) - Log.Message("Selecting animation for rjwSexType " + sexType.ToStringSafe() + "..."); - return optionsWithSexType.RandomElement(); - } - - /* - if(optionsWithInitiator.Any()) { - if (AnimationSettings.debugMode) - Log.Message("Selecting animation for initiators..."); - } - */ - - if (options != null && options.Any()) { - if (AnimationSettings.debugMode) - Log.Message("Randomly selecting animation..."); - return options.RandomElement(); - } - else - return null; - } - - public static void RenderPawnHeadMeshInAnimation1(Mesh mesh, Vector3 loc, Quaternion quaternion, Material material, bool drawNow, Pawn pawn) { - - if (pawn == null || pawn.Map != Find.CurrentMap) { - GenDraw.DrawMeshNowOrLater(mesh, loc, quaternion, material, drawNow); - return; - } - - if (!CompBodyAnimator.IsAnimating(pawn)) { - GenDraw.DrawMeshNowOrLater(mesh, loc, quaternion, material, drawNow); - } else { - CompBodyAnimator pawnAnimator = pawn.TryGetComp(); - Vector3 pawnHeadPosition = pawnAnimator.getPawnHeadPosition(); - pawnHeadPosition.y = loc.y; - GenDraw.DrawMeshNowOrLater(MeshPool.humanlikeHeadSet.MeshAt(pawnAnimator.headFacing), pawnHeadPosition, Quaternion.AngleAxis(pawnAnimator.headAngle, Vector3.up), material, true); - } - } - - public static void AdjustHead(ref Quaternion quat, ref Rot4 bodyFacing, ref Vector3 pos, ref float angle, Pawn pawn, PawnRenderFlags flags) - { - if (flags.FlagSet(PawnRenderFlags.Portrait)) return; - - if (CompBodyAnimator.IsAnimating(pawn)) - { - CompBodyAnimator anim = pawn.TryGetComp(); - bodyFacing = anim.headFacing; - angle = anim.headAngle; - quat = Quaternion.AngleAxis(anim.headAngle, Vector3.up); - pos = anim.getPawnHeadOffset(); - } - } - - public static void RenderPawnHeadMeshInAnimation(Mesh mesh, Vector3 loc, Quaternion quaternion, Material material, bool portrait, Pawn pawn, float bodySizeFactor = 1) { - - if (pawn == null) { - GenDraw.DrawMeshNowOrLater(mesh, loc, quaternion, material, portrait); - return; - } - - - if (!CompBodyAnimator.IsAnimating(pawn) || portrait) { - GenDraw.DrawMeshNowOrLater(mesh, loc, quaternion, material, portrait); - } - else { - CompBodyAnimator pawnAnimator = pawn.TryGetComp(); - Vector3 pawnHeadPosition = pawnAnimator.getPawnHeadPosition(); - pawnHeadPosition.x *= bodySizeFactor; - pawnHeadPosition.x *= bodySizeFactor; - pawnHeadPosition.y = loc.y; - GenDraw.DrawMeshNowOrLater(mesh, pawnHeadPosition, Quaternion.AngleAxis(pawnAnimator.headAngle, Vector3.up), material, portrait); - } - } - - public static bool GenitalCheckForPawn(List requiredGenitals, Pawn pawn, out string failReason) { - - failReason = null; - if (requiredGenitals != null) { - if (requiredGenitals.Contains("Vagina")) { - - if (!rjw.Genital_Helper.has_vagina(pawn)) { - failReason = "missing vagina"; - return false; - } - - } - - if (requiredGenitals.Contains("Penis")) { - - if (!(rjw.Genital_Helper.has_multipenis(pawn) || rjw.Genital_Helper.has_penis_infertile(pawn) || rjw.Genital_Helper.has_penis_fertile(pawn) || rjw.Genital_Helper.has_ovipositorM(pawn) || rjw.Genital_Helper.has_ovipositorF(pawn))) { - failReason = "missing penis"; - return false; - } - - } - - if (requiredGenitals.Contains("Mouth")) { - - if (!rjw.Genital_Helper.has_mouth(pawn)) { - failReason = "missing mouth"; - return false; - } - - } - - if (requiredGenitals.Contains("Anus")) { - - if (!rjw.Genital_Helper.has_anus(pawn)) { - failReason = "missing anus"; - return false; - } - - } - - if (requiredGenitals.Contains("Breasts")) { - if (!rjw.Genital_Helper.can_do_breastjob(pawn)) { - failReason = "missing breasts"; - return false; - } - } - - if (requiredGenitals.Contains("NoVagina")) { - - if (rjw.Genital_Helper.has_vagina(pawn)) { - failReason = "has vagina"; - return false; - } - - } - - if (requiredGenitals.Contains("NoPenis")) { - - if ((rjw.Genital_Helper.has_multipenis(pawn) || rjw.Genital_Helper.has_penis_infertile(pawn) || rjw.Genital_Helper.has_penis_fertile(pawn))) { - failReason = "has penis"; - return false; - } - - } - - if (requiredGenitals.Contains("NoMouth")) { - - if (rjw.Genital_Helper.has_mouth(pawn)) { - failReason = "has mouth"; - return false; - } - - } - - if (requiredGenitals.Contains("NoAnus")) { - - if (rjw.Genital_Helper.has_anus(pawn)) { - failReason = "has anus"; - return false; - } - - } - - if (requiredGenitals.Contains("NoBreasts")) { - if (rjw.Genital_Helper.can_do_breastjob(pawn)) { - failReason = "has breasts"; - return false; - } - } - } - - return true; - - } - - public static Rot4 PawnHeadRotInAnimation(Pawn pawn, Rot4 regularPos) - { - Debug.Log("Test"); - - if(pawn?.TryGetComp() != null && pawn.TryGetComp().isAnimating) - { - return pawn.TryGetComp().headFacing; - } - - return regularPos; - } - } -} diff --git a/1.4/Source/Utilities/PatchOperationAddOrReplace.cs b/1.4/Source/Utilities/PatchOperationAddOrReplace.cs deleted file mode 100644 index 4e1bd85..0000000 --- a/1.4/Source/Utilities/PatchOperationAddOrReplace.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Xml; -using Verse; - -namespace Rimworld_Animations -{ - public class PatchOperationAddOrReplace : PatchOperationPathed - { - - protected string key; - private XmlContainer value; - - protected override bool ApplyWorker(XmlDocument xml) - { - XmlNode valNode = value.node; - bool result = false; - IEnumerator enumerator = xml.SelectNodes(xpath).GetEnumerator(); - try - { - while (enumerator.MoveNext()) - { - object obj = enumerator.Current; - result = true; - XmlNode parentNode = obj as XmlNode; - XmlNode xmlNode = parentNode.SelectSingleNode(key); - if (xmlNode == null) - { - // Add - Add node if not existing - xmlNode = parentNode.OwnerDocument.CreateElement(key); - parentNode.AppendChild(xmlNode); - } - else - { - // Replace - Clear existing children - xmlNode.RemoveAll(); - } - // (Re)add value - xmlNode.AppendChild(parentNode.OwnerDocument.ImportNode(valNode.FirstChild, true)); - } - } - finally - { - IDisposable disposable = enumerator as IDisposable; - if (disposable != null) - { - disposable.Dispose(); - } - } - return result; - } - - } - -} diff --git a/1.4/Textures/UI/MainTab.png b/1.4/Textures/UI/MainTab.png deleted file mode 100644 index 92f855f..0000000 Binary files a/1.4/Textures/UI/MainTab.png and /dev/null differ diff --git a/1.6/Assemblies/Rimworld-Animations.dll b/1.6/Assemblies/Rimworld-Animations.dll new file mode 100644 index 0000000..a52d4f5 Binary files /dev/null and b/1.6/Assemblies/Rimworld-Animations.dll differ diff --git a/1.6/Defs/AnimationPropDefs/AnimationPropDef_Banana.xml b/1.6/Defs/AnimationPropDefs/AnimationPropDef_Banana.xml new file mode 100644 index 0000000..235c9fa --- /dev/null +++ b/1.6/Defs/AnimationPropDefs/AnimationPropDef_Banana.xml @@ -0,0 +1,16 @@ + + + + RenderNodeTag_Banana + + + + AnimationProp_Banana + + Banana + RenderNodeTag_Banana + Body + AnimationProps/Banana/Banana + + + diff --git a/1.6/Defs/AnimationPropDefs/AnimationPropDef_Hand.xml b/1.6/Defs/AnimationPropDefs/AnimationPropDef_Hand.xml new file mode 100644 index 0000000..d5ba7da --- /dev/null +++ b/1.6/Defs/AnimationPropDefs/AnimationPropDef_Hand.xml @@ -0,0 +1,21 @@ + + + + RenderNodeTag_Hand + + + + AnimationProp_Hand + + Hand + RenderNodeTag_Hand + True + Root + AnimationProps/Hand/Hand + + True + LeftHand + Skin + + + \ No newline at end of file diff --git a/1.6/Defs/AnimationPropDefs/AnimationPropDef_Knees.xml b/1.6/Defs/AnimationPropDefs/AnimationPropDef_Knees.xml new file mode 100644 index 0000000..a5dac3a --- /dev/null +++ b/1.6/Defs/AnimationPropDefs/AnimationPropDef_Knees.xml @@ -0,0 +1,52 @@ + + + + RenderNodeTag_Knees + + + + AnimationProp_Knees + + Knees + RenderNodeTag_Knees + False + Root + + Head + True + Skin + 95 + +
  • + Female + TexPathVariants_Knees +
  • +
    +
    +
    + + + RenderNodeTag_Arms + + + + AnimationProp_Arms + + Arms + RenderNodeTag_Knees + False + Root + True + Skin + + Body + -1 + +
  • + Female + TexPathVariants_Arms +
  • +
    +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/AnimationPropDefs/AnimationPropDef_Xray_Inside.xml b/1.6/Defs/AnimationPropDefs/AnimationPropDef_Xray_Inside.xml new file mode 100644 index 0000000..9211de5 --- /dev/null +++ b/1.6/Defs/AnimationPropDefs/AnimationPropDef_Xray_Inside.xml @@ -0,0 +1,20 @@ + + + + + RenderNodeTag_Xray_Inside + + + + AnimationProp_Xray_Inside + + Xray Inside + RenderNodeTag_Xray_Inside + True + Body + + TexPathVariants_Xray_Inside + + + + diff --git a/1.6/Defs/AnimationPropDefs/AnimationPropDef_Xray_Penis.xml b/1.6/Defs/AnimationPropDefs/AnimationPropDef_Xray_Penis.xml new file mode 100644 index 0000000..260617b --- /dev/null +++ b/1.6/Defs/AnimationPropDefs/AnimationPropDef_Xray_Penis.xml @@ -0,0 +1,31 @@ + + + + RenderNodeTag_Xray_Penis + + + AnimationProp_Penis + + Xray Penis + RenderNodeTag_Xray_Penis + Body + AnimationProps/Banana/Banana + + True + + + TexPathVariants_XrayPenis_Human + + + +
  • + +
  • HorsePenis
  • +
  • RaccoonPenis
  • + + TexPathVariants_XrayPenis_Horse + +
    +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/AnimationPropDefs/AnimationPropDef_Xray_Race.xml b/1.6/Defs/AnimationPropDefs/AnimationPropDef_Xray_Race.xml new file mode 100644 index 0000000..aa90bcc --- /dev/null +++ b/1.6/Defs/AnimationPropDefs/AnimationPropDef_Xray_Race.xml @@ -0,0 +1,50 @@ + + + + + RenderNodeTag_Xray_Vagina + + + + + + AnimationProp_Vagina + + + + Xray Vagina + RenderNodeTag_Xray_Vagina + Body + AnimationProps/Banana/Banana + + True + TexPathVariants_Xray_Inside + + + + +
  • + + +
  • Wolf_Timber
  • +
  • Wolf_Arctic
  • +
  • Warg
  • +
  • Husky
  • +
  • LabradorRetriever
  • + + + + + Xray Vagina + RenderNodeTag_Xray_Vagina + Body + AnimationProps/Banana/Banana + + True + TexPathVariants_Xray_Inside + + +
    + +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/GroupAnimation_DogBeast.xml b/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/GroupAnimation_DogBeast.xml new file mode 100644 index 0000000..6f95f49 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/GroupAnimation_DogBeast.xml @@ -0,0 +1,219 @@ + + + + GroupAnimation_DogBeast + 2 + +
  • + 1 + +
  • + 1 + +
  • DogBeast_Human1
  • +
  • DogBeast_Dog1
  • + + + + + + +
  • + 1 + +
  • + 1 + +
  • DogBeast_Human2
  • +
  • DogBeast_Dog2
  • + + + + + + +
  • + 60 + +
  • + 1 + +
  • DogBeast_Human3_1
  • +
  • DogBeast_Dog3_1
  • + + + +
  • + 1 + +
  • DogBeast_Human3_2
  • +
  • DogBeast_Dog3_2
  • + + + +
  • + 1 + +
  • DogBeast_Human3_3
  • +
  • DogBeast_Dog3_3
  • + + + + + + +
  • + 1 + +
  • + 1 + +
  • DogBeast_Human4
  • +
  • DogBeast_Dog4
  • + + + + + + +
  • + 30 + +
  • + 1 + +
  • DogBeast_Human5_1
  • +
  • DogBeast_Dog5_1
  • + + + +
  • + 1 + +
  • DogBeast_Human5_2
  • +
  • DogBeast_Dog5_2
  • + + + +
  • + 1 + +
  • DogBeast_Human5_3
  • +
  • DogBeast_Dog5_3
  • + + + + + + + +
  • + 1 + +
  • + 1 + +
  • DogBeast_Human6
  • +
  • DogBeast_Dog6
  • + + + + + + +
    + + +
  • + 1 + +
  • + +
  • +
  • + +
  • Bestiality_Reverse_Vaginal
  • +
  • Bestiality_Reverse_Anal
  • +
  • Bestiality_Reverse_Double_Penetration_M
  • + + + + +
  • + +
  • +
  • + +
  • Wolf_Timber
  • +
  • Wolf_Arctic
  • +
  • Warg
  • +
  • Husky
  • +
  • LabradorRetriever
  • + + + + + + + +
  • + 1 + +
  • + +
  • + +
  • +
  • + +
  • Wolf_Timber
  • +
  • Wolf_Arctic
  • +
  • Warg
  • +
  • Husky
  • +
  • LabradorRetriever
  • + + +
  • + +
  • Bestiality_Vaginal
  • +
  • Bestiality_Anal
  • +
  • Bestiality_Double_Penetration_M
  • + + + + + + + + +
  • + 0 + +
  • +
  • + +
  • +
  • + +
  • Wolf_Timber
  • +
  • Wolf_Arctic
  • +
  • Warg
  • +
  • Husky
  • +
  • LabradorRetriever
  • + + + + + + +
    + + + +
  • Offset_Placeholder
  • +
  • Offset_Placeholder
  • +
    + +
    + +
    diff --git a/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage1.xml b/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage1.xml new file mode 100644 index 0000000..68eb5e1 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage1.xml @@ -0,0 +1,244 @@ + + + + DogBeast_Human1 + 85 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 4 + true + (-0.3716815, 0, 0.2713863) + East +
  • +
  • + 15 + 8 + true + (-0.3539823, 0, 0.2654868) + East +
  • +
  • + 25 + -14 + true + (-0.4011799, 0, 0.2241887) + East +
  • +
  • + 35 + -7 + true + (-0.3834807, 0, 0.2359883) + East +
  • +
  • + 55 + -9 + true + (-0.4011799, 0, 0.2359883) + East +
  • +
  • + 85 + -7 + true + (-0.3893807, 0, 0.2359883) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + East +
  • +
  • + 25 + 0 + true + South +
  • + + + +
  • + RenderNodeTag_Hand + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (0.1946907, 1, 0.4483777) + North +
  • +
  • + 5 + 0 + true + (0.235988, 1, 0.4365782) + North +
  • +
  • + 10 + 0 + true + (0.1238946, 1, 0.377581) + North +
  • +
  • + 13 + 0 + true + (0.1710922, 1, 0.3952804) + North +
  • +
  • + 17 + 0 + true + (0.05899817, 1, 0.4660767) + North +
  • +
  • + 25 + 0 + true + (-0.1828904, 1, 0.4896755) + North +
  • +
  • + 35 + 0 + true + (-0.1356928, 1, 0.4778759) + North +
  • + + + +
    +
    + + DogBeast_Dog1 + 85 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (0.6666666, 1, 0.1120945) + West +
  • +
  • + 15 + -5 + true + (0.5722714, 1, 0.06489658) + (1, 1, 0.9351034) + West +
  • +
  • + 25 + 35 + true + (0.1356932, 1, 0.2477875) + (0.9999999, 1, 1.053097) + West +
  • +
  • + 35 + 31 + true + (0.1356932, 1, 0.2477875) + West +
  • +
  • + 45 + 35 + true + (0.1356932, 1, 0.2477875) + West +
  • +
  • + 55 + 31 + true + (0.1356932, 1, 0.2477875) + West +
  • +
  • + 65 + 35 + true + (0.1356932, 1, 0.2477875) + West +
  • +
  • + 75 + 31 + true + (0.1356932, 1, 0.2477875) + West +
  • +
  • + 85 + 35 + true + (0.1356932, 1, 0.2477875) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + North +
  • + + + +
  • + AnimalPenis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (0, -2, 0) + North +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage2.xml b/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage2.xml new file mode 100644 index 0000000..5bfddcd --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage2.xml @@ -0,0 +1,309 @@ + + + + DogBeast_Human2 + 105 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -7 + true + (-0.3893807, 0, 0.2359883) + East +
  • +
  • + 19 + 0 + true + (-0.5073746, 0, 0.2300885) + South +
  • +
  • + 25 + -13 + true + (-0.5899706, 0, 0.2005899) + West +
  • +
  • + 45 + -65 + true + (-0.737463, 0, 0.02359879) + (0.9764012, 1, 1) + West +
  • +
  • + 55 + -52 + true + (-0.6843658, 0, 0.08849573) + West +
  • +
  • + 75 + -56 + true + (-0.702065, 0, 0.07079637) + West +
  • +
  • + 85 + -56 + true + (-0.702065, 0, 0.07079637) + West +
  • +
  • + 90 + -46 + true + (-0.743363, 0, 0.1474925) + West + Grunt +
  • +
  • + 95 + -48 + true + (-0.7315634, 0, 0.1415931) + West +
  • +
  • + 100 + -45 + true + (-0.737463, 0, 0.1533923) + West +
  • +
  • + 105 + -52 + true + (-0.7197642, 0, 0.1120945) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + South +
  • +
  • + 20 + 0 + true + South +
  • +
  • + 90 + 0 + true + West +
  • + + + +
  • + RenderNodeTag_Hand + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (-0.1356928, 1, 0.4778759) + North +
  • +
  • + 20 + 0 + false + (-0.5309731, -2, -0.06489676) + North +
  • + + + +
    +
    + + DogBeast_Dog2 + 105 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 35 + true + (0.1356932, 1, 0.2477875) + West +
  • +
  • + 10 + 39 + true + (0.1651919, 1, 0.2477875) + West +
  • +
  • + 20 + 35 + true + (0.1356932, 1, 0.2477875) + West +
  • +
  • + 30 + 29 + true + (-0.01769918, 1, 0.259587) + West +
  • +
  • + 40 + 24 + true + (-0.07079639, 1, 0.2300885) + (1, 1, 0.9528024) + West +
  • +
  • + 50 + 33 + true + (-0.117994, 1, 0.3008848) + West +
  • +
  • + 55 + 28 + true + (-0.06489678, 1, 0.2713863) + West +
  • +
  • + 60 + 33 + true + (-0.1238939, 1, 0.2772861) + West +
  • +
  • + 65 + 28 + true + (-0.06489678, 1, 0.259587) + West +
  • +
  • + 70 + 36 + true + (-0.1769911, 1, 0.3008848) + West +
  • +
  • + 75 + 33 + true + (-0.1651916, 1, 0.3008848) + West +
  • +
  • + 80 + 33 + true + (-0.1415928, 1, 0.2890856) + West +
  • +
  • + 83 + 31 + true + (-0.1356932, 1, 0.2772861) + West +
  • +
  • + 90 + 37 + true + (-0.2595871, 1, 0.342183) + West + Fuck +
  • +
  • + 95 + 31 + true + (-0.2123895, 1, 0.3303834) + West +
  • +
  • + 100 + 37 + true + (-0.2654867, 1, 0.342183) + West + Fuck +
  • +
  • + 105 + 34 + true + (-0.2123895, 1, 0.3126844) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + North +
  • + + + +
  • + AnimalPenis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (0, -2, 0) + North +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage3_Variant1.xml b/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage3_Variant1.xml new file mode 100644 index 0000000..df355fd --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage3_Variant1.xml @@ -0,0 +1,203 @@ + + + + DogBeast_Human3_1 + 24 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -52 + true + (-0.7197642, 0, 0.1120945) + West + Moan +
  • +
  • + 4 + -51 + true + (-0.7315634, 0, 0.1238937) + West +
  • +
  • + 8 + -52 + true + (-0.7197642, 0, 0.1120945) + West +
  • +
  • + 12 + -51 + true + (-0.7315634, 0, 0.1238937) + West +
  • +
  • + 16 + -52 + true + (-0.7197642, 0, 0.1120945) + West +
  • +
  • + 20 + -51 + true + (-0.7315634, 0, 0.1238937) + West +
  • +
  • + 24 + -52 + true + (-0.7197642, 0, 0.1120945) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + West +
  • +
  • + 8 + 5 + true + West +
  • +
  • + 16 + 0 + true + West +
  • + + + +
  • + RenderNodeTag_Hand + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 20 + 0 + false + (-0.5309731, -2, -0.06489676) + North +
  • + + + +
    +
    + + DogBeast_Dog3_1 + 24 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 34 + true + (-0.2123895, 1, 0.3126844) + West +
  • +
  • + 4 + 38 + true + (-0.2713863, 1, 0.3185842) + West + Fuck +
  • +
  • + 8 + 34 + true + (-0.2123895, 1, 0.3126844) + West +
  • +
  • + 12 + 38 + true + (-0.2713863, 1, 0.3185842) + West + Fuck +
  • +
  • + 16 + 34 + true + (-0.2123895, 1, 0.3126844) + West +
  • +
  • + 20 + 38 + true + (-0.2713863, 1, 0.3185842) + West + Fuck +
  • +
  • + 24 + 34 + true + (-0.2123895, 1, 0.3126844) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + North +
  • + + + +
  • + AnimalPenis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (0, -2, 0) + North +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage3_Variant2_FollowupWithVariant1.xml b/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage3_Variant2_FollowupWithVariant1.xml new file mode 100644 index 0000000..cef2bc5 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage3_Variant2_FollowupWithVariant1.xml @@ -0,0 +1,233 @@ + + + + DogBeast_Human3_2 + 32 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -52 + true + (-0.7197642, 0, 0.1120945) + West +
  • +
  • + 4 + -51 + true + (-0.7315634, 0, 0.1238937) + West +
  • +
  • + 8 + -52 + true + (-0.7197642, 0, 0.1120945) + West +
  • +
  • + 12 + -51 + true + (-0.7315634, 0, 0.1238937) + West + MoanShort +
  • +
  • + 16 + -52 + true + (-0.7197642, 0, 0.1120945) + West +
  • +
  • + 20 + -51 + true + (-0.7315634, 0, 0.1238937) + West +
  • +
  • + 24 + -52 + true + (-0.7197642, 0, 0.1120945) + West +
  • +
  • + 28 + -51 + true + (-0.7315634, 0, 0.1238937) + West +
  • +
  • + 32 + -52 + true + (-0.7197642, 0, 0.1120945) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + West +
  • +
  • + 16 + -10 + true + (-0.01769918, 0, -0.01769918) + West +
  • +
  • + 32 + 0 + true + West +
  • + + + +
  • + RenderNodeTag_Hand + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 20 + 0 + false + (-0.5309731, -2, -0.06489676) + North +
  • + + + +
    +
    + + DogBeast_Dog3_2 + 32 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 34 + true + (-0.2123895, 1, 0.3126844) + West +
  • +
  • + 4 + 38 + true + (-0.2713863, 1, 0.3185842) + West + Fuck +
  • +
  • + 8 + 34 + true + (-0.2123895, 1, 0.3126844) + West +
  • +
  • + 12 + 38 + true + (-0.2713863, 1, 0.3185842) + West + Fuck +
  • +
  • + 16 + 34 + true + (-0.2123895, 1, 0.3126844) + West +
  • +
  • + 20 + 38 + true + (-0.2713863, 1, 0.3185842) + West + Fuck +
  • +
  • + 24 + 34 + true + (-0.2123895, 1, 0.3126844) + West +
  • +
  • + 28 + 38 + true + (-0.2713863, 1, 0.3185842) + West + Fuck +
  • +
  • + 32 + 34 + true + (-0.2123895, 1, 0.3126844) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + North +
  • + + + +
  • + AnimalPenis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (0, -2, 0) + North +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage3_Variant3.xml b/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage3_Variant3.xml new file mode 100644 index 0000000..8253831 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage3_Variant3.xml @@ -0,0 +1,162 @@ + + + + DogBeast_Human3_3 + 16 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -52 + true + (-0.7197642, 0, 0.1120945) + West + Moan +
  • +
  • + 4 + -51 + true + (-0.7315634, 0, 0.1238937) + West +
  • +
  • + 8 + -52 + true + (-0.7197642, 0, 0.1120945) + West +
  • +
  • + 12 + -51 + true + (-0.7315634, 0, 0.1238937) + West +
  • +
  • + 16 + -52 + true + (-0.7197642, 0, 0.1120945) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 10 + true + South +
  • + + + +
  • + RenderNodeTag_Hand + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 20 + 0 + false + (-0.5309731, -2, -0.06489676) + North +
  • + + + +
    +
    + + DogBeast_Dog3_3 + 16 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 34 + true + (-0.2123895, 1, 0.3126844) + West +
  • +
  • + 4 + 38 + true + (-0.2713863, 1, 0.3185842) + West + Fuck +
  • +
  • + 8 + 34 + true + (-0.2123895, 1, 0.3126844) + West +
  • +
  • + 12 + 38 + true + (-0.2713863, 1, 0.3185842) + West + Fuck +
  • +
  • + 16 + 34 + true + (-0.2123895, 1, 0.3126844) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + North +
  • + + + +
  • + AnimalPenis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (0, -2, 0) + North +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage4.xml b/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage4.xml new file mode 100644 index 0000000..9464f36 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage4.xml @@ -0,0 +1,236 @@ + + + + DogBeast_Human4 + 100 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -52 + true + (-0.7197642, 0, 0.1120945) + West + Scream +
  • +
  • + 4 + -45 + true + (-0.6902654, 0, 0.1474925) + West +
  • +
  • + 30 + -50 + true + (-0.6784662, 0, 0.1120945) + West +
  • +
  • + 60 + -55 + true + (-0.6784662, 0, 0.1120945) + West +
  • +
  • + 70 + -55 + true + (-0.6784662, 0, 0.1120945) + West +
  • +
  • + 80 + -51 + true + (-0.6666666, 0, 0.1474925) + West +
  • +
  • + 100 + -54 + true + (-0.6725662, 0, 0.1120945) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + West +
  • +
  • + 8 + 30 + true + West +
  • +
  • + 30 + 25 + true + South +
  • + + + +
  • + RenderNodeTag_Hand + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 20 + 0 + false + (-0.5309731, -2, -0.06489676) + North +
  • + + + +
    +
    + + DogBeast_Dog4 + 100 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 34 + true + (-0.2123895, 1, 0.3126844) + West + Fuck +
  • +
  • + 4 + 36 + true + (-0.3067847, 1, 0.342183) + West +
  • +
  • + 30 + 35 + true + (-0.2772863, 1, 0.3067846) + West +
  • +
  • + 45 + 3 + true + (-0.2064896, 1, 0.2005899) + South +
  • +
  • + 60 + 19 + true + (0.2123888, 1, 0.1297935) + East +
  • +
  • + 70 + 12 + true + (0.1769905, 1, 0.1946901) + East +
  • +
  • + 80 + 17 + true + (0.2005889, 1, 0.1474925) + East +
  • +
  • + 100 + 13 + true + (0.1946893, 1, 0.1828909) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + North +
  • + + + +
  • + AnimalPenis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (0, -1, 0) + West +
  • +
  • + 30 + 0 + true + (0, -1, 0) + West +
  • +
  • + 35 + 0 + true + (-0.1002951, -2, 0) + West +
  • +
  • + 45 + 34 + true + (-0.01769918, -2, 0.1592921) + West +
  • +
  • + 60 + 5 + true + (-0.5722714, -2, -0.0294984) + West +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage5_Variant1.xml b/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage5_Variant1.xml new file mode 100644 index 0000000..e7c787b --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage5_Variant1.xml @@ -0,0 +1,201 @@ + + + + DogBeast_Human5_1 + 80 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -54 + true + (-0.6725662, 0, 0.1120945) + West +
  • +
  • + 20 + -60 + true + (-0.6843658, 0, 0.08849573) + West +
  • +
  • + 40 + -58 + true + (-0.6725662, 0, 0.09439516) + West + Grunt +
  • +
  • + 80 + -54 + true + (-0.6725662, 0, 0.1120945) + West + Grunt +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 30 + true + West +
  • +
  • + 10 + 20 + true + West +
  • +
  • + 50 + 25 + true + West +
  • +
  • + 80 + 30 + true + West +
  • + + + +
  • + RenderNodeTag_Hand + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 20 + 0 + false + (-0.5309731, -2, -0.06489676) + North +
  • + + + +
    +
    + + DogBeast_Dog5_1 + 80 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 13 + true + (0.1946893, 1, 0.1828909) + East + Cum +
  • +
  • + 10 + 15 + true + (0.2005889, 1, 0.1710913) + East +
  • +
  • + 20 + 13 + true + (0.1946893, 1, 0.1828909) + East +
  • +
  • + 30 + 15 + true + (0.2005889, 1, 0.1710913) + East +
  • +
  • + 40 + 13 + true + (0.1946893, 1, 0.1828909) + East +
  • +
  • + 50 + 15 + true + (0.2005889, 1, 0.1710913) + East +
  • +
  • + 60 + 13 + true + (0.1946893, 1, 0.1828909) + East +
  • +
  • + 70 + 15 + true + (0.2005889, 1, 0.1710913) + East +
  • +
  • + 80 + 13 + true + (0.1946893, 1, 0.1828909) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + North +
  • + + + +
  • + AnimalPenis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 60 + 5 + true + (-0.5722714, -2, -0.0294984) + West +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage5_Variant2.xml b/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage5_Variant2.xml new file mode 100644 index 0000000..daff31d --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage5_Variant2.xml @@ -0,0 +1,188 @@ + + + + DogBeast_Human5_2 + 80 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -54 + true + (-0.6725662, 0, 0.1120945) + West +
  • +
  • + 40 + -58 + true + (-0.6725662, 0, 0.09439516) + West + Grunt +
  • +
  • + 80 + -54 + true + (-0.6725662, 0, 0.1120945) + West + Grunt +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 30 + true + West +
  • +
  • + 50 + 25 + true + West +
  • +
  • + 80 + 30 + true + West +
  • + + + +
  • + RenderNodeTag_Hand + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 20 + 0 + false + (-0.5309731, -2, -0.06489676) + North +
  • + + + +
    +
    + + DogBeast_Dog5_2 + 80 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 13 + true + (0.1946893, 1, 0.1828909) + East + Cum +
  • +
  • + 10 + 15 + true + (0.2005889, 1, 0.1710913) + East +
  • +
  • + 20 + 13 + true + (0.1946893, 1, 0.1828909) + East +
  • +
  • + 30 + 15 + true + (0.2005889, 1, 0.1710913) + East +
  • +
  • + 40 + 13 + true + (0.1946893, 1, 0.1828909) + East +
  • +
  • + 50 + 15 + true + (0.2005889, 1, 0.1710913) + East +
  • +
  • + 60 + 13 + true + (0.1946893, 1, 0.1828909) + East +
  • +
  • + 70 + 15 + true + (0.2005889, 1, 0.1710913) + East +
  • +
  • + 80 + 13 + true + (0.1946893, 1, 0.1828909) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + North +
  • + + + +
  • + AnimalPenis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 60 + 5 + true + (-0.5722714, -2, -0.0294984) + West +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage5_Variant3.xml b/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage5_Variant3.xml new file mode 100644 index 0000000..dac2f49 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage5_Variant3.xml @@ -0,0 +1,188 @@ + + + + DogBeast_Human5_3 + 80 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -54 + true + (-0.6725662, 0, 0.1120945) + West +
  • +
  • + 40 + -58 + true + (-0.6725662, 0, 0.09439516) + West + Grunt +
  • +
  • + 80 + -54 + true + (-0.6725662, 0, 0.1120945) + West + Grunt +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 30 + true + South +
  • +
  • + 50 + 25 + true + South +
  • +
  • + 80 + 30 + true + South +
  • + + + +
  • + RenderNodeTag_Hand + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 20 + 0 + false + (-0.5309731, -2, -0.06489676) + North +
  • + + + +
    +
    + + DogBeast_Dog5_3 + 80 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 13 + true + (0.1946893, 1, 0.1828909) + East +
  • +
  • + 10 + 15 + true + (0.2005889, 1, 0.1710913) + East +
  • +
  • + 20 + 13 + true + (0.1946893, 1, 0.1828909) + East +
  • +
  • + 30 + 15 + true + (0.2005889, 1, 0.1710913) + East +
  • +
  • + 40 + 13 + true + (0.1946893, 1, 0.1828909) + East + Cum +
  • +
  • + 50 + 15 + true + (0.2005889, 1, 0.1710913) + East +
  • +
  • + 60 + 13 + true + (0.1946893, 1, 0.1828909) + East +
  • +
  • + 70 + 15 + true + (0.2005889, 1, 0.1710913) + East +
  • +
  • + 80 + 13 + true + (0.1946893, 1, 0.1828909) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + North +
  • + + + +
  • + AnimalPenis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 60 + 5 + true + (-0.5722714, -2, -0.0294984) + West +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage6.xml b/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage6.xml new file mode 100644 index 0000000..542a315 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage6.xml @@ -0,0 +1,232 @@ + + + + DogBeast_Human6 + 200 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -48 + true + (-0.6725662, 0, 0.1356933) + West + Grunt +
  • +
  • + 120 + -62 + true + (-0.6666666, 0, 0.1238937) + West +
  • +
  • + 160 + -65 + true + (-0.660767, 0, 0.117994) + West + Scream +
  • +
  • + 170 + -43 + true + (-0.6312686, 0, 0.2536873) + West +
  • +
  • + 180 + -46 + true + (-0.6430678, 0, 0.2359883) + West +
  • +
  • + 200 + -42 + true + (-0.619469, 0, 0.2536873) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 30 + true + West +
  • +
  • + 120 + 55 + true + West +
  • +
  • + 165 + 54 + true + West +
  • +
  • + 180 + 25 + true + West +
  • +
  • + 200 + 22 + true + West +
  • + + + +
  • + RenderNodeTag_Hand + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 20 + 0 + false + (-0.5309731, -2, -0.06489676) + North +
  • + + + +
    +
    + + DogBeast_Dog6 + 200 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 13 + true + (0.1946893, 1, 0.1828909) + East +
  • +
  • + 60 + 20 + true + (0.2595864, 1, 0.2123895) + East +
  • +
  • + 140 + 23 + true + (0.3008844, 1, 0.2241887) + East +
  • +
  • + 160 + 26 + true + (0.3775801, 1, 0.2241887) + East + Fuck +
  • +
  • + 180 + 11 + true + (0.5958685, 1, 0.1474925) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + North +
  • + + + +
  • + AnimalPenis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 60 + 5 + true + (-0.5722714, -2, -0.0294984) + West +
  • +
  • + 160 + 5 + true + (-0.5722714, -2, -0.0294984) + West + Slimy +
  • +
  • + 165 + -39 + true + (-0.5722714, -2, -0.0294984) + West +
  • + + + +
  • + Saliva + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -55 + true + (-0.4837759, -2, -0.2949852) + (0.2153394, 1, 0.6342184) + North +
  • +
  • + 160 + -55 + false + (-0.4601771, -2, -0.3067846) + (0.2153394, 1, 0.6342184) + North +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Blowjob/AnimationPropDef_Cum.xml b/1.6/Defs/GroupAnimationDefs/Blowjob/AnimationPropDef_Cum.xml new file mode 100644 index 0000000..1b54b64 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Blowjob/AnimationPropDef_Cum.xml @@ -0,0 +1,42 @@ + + + + + Cum + + + + AnimProp_Cum + + Cum + Rimworld_Animations.PawnRenderNode_GraphicVariants + Rimworld_Animations.PawnRenderNodeWorker_GraphicVariants + Cum + Head + + AnimationProps/Cum/Cum + Head + 95 + + + + + Cumshot + + + + AnimProp_Cumshot + + Cumshot + Rimworld_Animations.PawnRenderNode_GraphicVariants + Rimworld_Animations.PawnRenderNodeWorker_GraphicVariants + Cumshot + Root + + AnimationProps/Saliva/Saliva + Head + 95 + + + + diff --git a/1.6/Defs/GroupAnimationDefs/Blowjob/GroupAnimation_Blowjob.xml b/1.6/Defs/GroupAnimationDefs/Blowjob/GroupAnimation_Blowjob.xml new file mode 100644 index 0000000..9e22a78 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Blowjob/GroupAnimation_Blowjob.xml @@ -0,0 +1,398 @@ + + + + GroupAnimation_Blowjob + 2 + +
  • + 1 + +
  • + 1 + +
  • Blowjob_Initiator1
  • +
  • Blowjob_Receiver1
  • + + + + + + +
  • + 10 + +
  • Blowjob_Stage2_Branch1
  • +
  • Blowjob_Stage2_Branch2
  • +
  • Blowjob_Stage2_Branch3
  • + + + +
  • + 1 + +
  • + 1 + +
  • Blowjob_Initiator3
  • +
  • Blowjob_Receiver3
  • + + + + + + +
  • + 20 + +
  • Blowjob_Stage4_Branch1
  • +
  • Blowjob_Stage4_Branch2
  • + + + + +
  • + 20 + +
  • + 1 + +
  • Blowjob_Initiator5
  • +
  • Blowjob_Receiver5
  • + + + + + + + +
  • + 1 + +
  • Blowjob_Stage6_Branch1
  • +
  • Blowjob_Stage6_Branch2
  • + + + +
    + + +
  • + 1 + + + +
  • + + +
  • + +
  • +
  • + +
  • Sex_Reverse_Fellatio
  • +
  • Sex_Reverse_Beakjob
  • +
  • Sex_Reverse_Handjob
  • +
  • Rape_Reverse_Fellatio
  • +
  • Rape_Reverse_Handjob
  • + + + + + + + + +
  • + 1 + + +
  • + +
  • +
  • + +
  • Sex_Fellatio
  • +
  • Sex_Beakjob
  • +
  • Sex_Handjob
  • +
  • Rape_Fellatio
  • +
  • Rape_Handjob
  • + + + + + + + +
  • + + + + +
  • + + +
  • + 0 + + +
  • + +
  • +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • + + + + +
    + + +
  • Offset_Blowjob_Initiator
  • +
  • Offset_Blowjob_Receiver
  • +
    + +
    + + + Blowjob_Stage2_Branch1 + 2 + +
  • + 2 + +
  • + 1 + +
  • Blowjob_Initiator2a
  • +
  • Blowjob_Receiver2a
  • + + + + + +
    + + +
  • Offset_Blowjob_Initiator
  • +
  • Offset_Blowjob_Receiver
  • +
    + +
    + + + Blowjob_Stage2_Branch2 + 2 + +
  • + 2 + +
  • + 1 + +
  • Blowjob_Initiator2b
  • +
  • Blowjob_Receiver2b
  • + + + + + +
    + + +
  • Offset_Blowjob_Initiator
  • +
  • Offset_Blowjob_Receiver
  • +
    + +
    + + + Blowjob_Stage2_Branch3 + 2 + +
  • + 2 + +
  • + 1 + +
  • Blowjob_Initiator2c
  • +
  • Blowjob_Receiver2c
  • + + + + + +
    + + +
  • Offset_Blowjob_Initiator
  • +
  • Offset_Blowjob_Receiver
  • +
    + +
    + + + Blowjob_Stage4_Branch1 + 2 + +
  • + 1 + +
  • + 1 + +
  • Blowjob_Initiator4a
  • +
  • Blowjob_Receiver4a
  • + + + + + +
    + + +
  • Offset_Blowjob_Initiator
  • +
  • Offset_Blowjob_Receiver
  • +
    + +
    + + + Blowjob_Stage4_Branch2 + 2 + +
  • + 1 + +
  • + 1 + +
  • Blowjob_Initiator4b
  • +
  • Blowjob_Receiver4b
  • + + + + + +
    + + +
  • Offset_Blowjob_Initiator
  • +
  • Offset_Blowjob_Receiver
  • +
    + +
    + + + Blowjob_Stage4_Branch3 + 2 + +
  • + 1 + +
  • + 1 + +
  • Blowjob_Initiator4a
  • +
  • Blowjob_Receiver4a
  • + + + + + +
  • + 1 + +
  • + 1 + +
  • Blowjob_Initiator4c
  • +
  • Blowjob_Receiver4c
  • + + + + + +
  • + 2 + +
  • + 1 + +
  • Blowjob_Initiator4a
  • +
  • Blowjob_Receiver4a
  • + + + + + +
    + + +
  • Offset_Blowjob_Initiator
  • +
  • Offset_Blowjob_Receiver
  • +
    + +
    + + + Blowjob_Stage6_Branch1 + 2 + +
  • + 1 + +
  • + 1 + +
  • Blowjob_Initiator6a
  • +
  • Blowjob_Receiver6a
  • + + + + + +
    + + +
  • Offset_Blowjob_Initiator
  • +
  • Offset_Blowjob_Receiver
  • +
    + +
    + + + Blowjob_Stage6_Branch2 + 2 + +
  • + 1 + +
  • + 1 + +
  • Blowjob_Initiator6b
  • +
  • Blowjob_Receiver6b
  • + + + + + +
    + + +
  • Offset_Blowjob_Initiator
  • +
  • Offset_Blowjob_Receiver
  • +
    + +
    + +
    diff --git a/1.6/Defs/GroupAnimationDefs/Blowjob/OffsetDef_Blowjob.xml b/1.6/Defs/GroupAnimationDefs/Blowjob/OffsetDef_Blowjob.xml new file mode 100644 index 0000000..fb69523 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Blowjob/OffsetDef_Blowjob.xml @@ -0,0 +1,40 @@ + + + + Offset_Blowjob_Receiver + +
  • + +
  • Human
  • + + + + +
    +
    + + + Offset_Blowjob_Initiator + +
  • + +
  • Human
  • + + +
  • Hulk(0, 0, 0.223)
  • +
    + + +
    +
    +
    diff --git a/1.6/Defs/GroupAnimationDefs/Blowjob/Stage1.xml b/1.6/Defs/GroupAnimationDefs/Blowjob/Stage1.xml new file mode 100644 index 0000000..e581ee9 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Blowjob/Stage1.xml @@ -0,0 +1,198 @@ + + + + Blowjob_Initiator1 + 60 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -7 + true + (-0.5309734, 0, 0.4778759) + East +
  • +
  • + 20 + -17 + true + (-0.5309734, 0, 0.4778759) + East +
  • +
  • + 60 + -19 + true + (-0.5309734, 0, 0.4778759) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 20 + true + East +
  • +
  • + 60 + 31 + true + East +
  • + + + +
  • + RimNude_Penis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 2 + true + East +
  • +
  • + 5 + 6 + true + East +
  • +
  • + 10 + 2 + true + East +
  • +
  • + 15 + 6 + true + East +
  • +
  • + 20 + 0 + true + East +
  • +
  • + 40 + 14 + true + East +
  • + + + +
    +
    + + Blowjob_Receiver1 + 60 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (0.3421831, 0, 0.3303834) + West +
  • +
  • + 30 + -13 + true + (0.2536875, 0, 0.2713863) + West +
  • +
  • + 60 + -23 + true + (0.1828908, 0, 0.2123895) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 9 + true + West +
  • +
  • + 30 + 29 + true + West +
  • +
  • + 45 + 7 + true + West +
  • +
  • + 60 + 9 + true + West +
  • + + + +
  • + RenderNodeTag_Hand + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (0.0471976, 1, 0.1533923) + North +
  • +
  • + 20 + 0 + true + (-0.2890855, 1, 0.1002949) + North +
  • +
  • + 40 + 0 + true + (-0.2595871, 1, 0.08849573) + North +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Blowjob/Stage2a.xml b/1.6/Defs/GroupAnimationDefs/Blowjob/Stage2a.xml new file mode 100644 index 0000000..ed3684c --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Blowjob/Stage2a.xml @@ -0,0 +1,157 @@ + + + + Blowjob_Initiator2a + 60 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -19 + true + (-0.5309734, 0, 0.4778759) + East +
  • +
  • + 30 + -21 + true + (-0.5309734, 0, 0.4778759) + East + Moan +
  • +
  • + 60 + -19 + true + (-0.5309734, 0, 0.4778759) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 31 + true + East +
  • +
  • + 30 + 35 + true + East +
  • +
  • + 60 + 31 + true + East +
  • + + + +
  • + RimNude_Penis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 14 + true + East +
  • + + + +
    +
    + + Blowjob_Receiver2a + 60 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -23 + true + (0.1828908, 1, 0.2123895) + West +
  • +
  • + 35 + -28 + true + (0.153392, 1, 0.1946901) + West + Suck +
  • +
  • + 60 + -23 + true + (0.1828908, 1, 0.2123895) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 9 + true + West +
  • +
  • + 35 + 9 + true + (-0.06489678, 0, -0.01769918) + West +
  • +
  • + 60 + 9 + true + West +
  • + + + +
  • + RenderNodeTag_Hand + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (-0.2595871, 1, 0.08849573) + North +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Blowjob/Stage2b.xml b/1.6/Defs/GroupAnimationDefs/Blowjob/Stage2b.xml new file mode 100644 index 0000000..6f11543 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Blowjob/Stage2b.xml @@ -0,0 +1,178 @@ + + + + Blowjob_Initiator2b + 60 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -19 + true + (-0.5309734, 0, 0.4778759) + East +
  • +
  • + 30 + -21 + true + (-0.5309734, 0, 0.4778759) + East + Moan +
  • +
  • + 60 + -19 + true + (-0.5309734, 0, 0.4778759) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 31 + true + East +
  • +
  • + 30 + 35 + true + East +
  • +
  • + 60 + 31 + true + East +
  • + + + +
  • + RimNude_Penis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 14 + true + East +
  • + + + +
    +
    + + Blowjob_Receiver2b + 60 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -23 + true + (0.1828908, 1, 0.2123895) + West +
  • +
  • + 35 + -28 + true + (0.153392, 1, 0.1946901) + West + Suck +
  • +
  • + 60 + -23 + true + (0.1828908, 1, 0.2123895) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 9 + true + West +
  • +
  • + 35 + 9 + true + (-0.06489678, 0, -0.01769918) + West +
  • +
  • + 60 + 9 + true + West +
  • + + + +
  • + RenderNodeTag_Hand + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (-0.2595871, 1, 0.08849573) + North +
  • +
  • + 10 + 0 + true + (-0.1769911, 1, 0.1828909) + North +
  • +
  • + 30 + 0 + true + (-0.2654867, 1, 0.1120945) + North +
  • +
  • + 60 + 0 + true + (-0.2595871, 1, 0.08849573) + North +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Blowjob/Stage2c.xml b/1.6/Defs/GroupAnimationDefs/Blowjob/Stage2c.xml new file mode 100644 index 0000000..adac6e9 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Blowjob/Stage2c.xml @@ -0,0 +1,193 @@ + + + + Blowjob_Initiator2c + 80 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -19 + true + (-0.5309734, 0, 0.4778759) + East +
  • +
  • + 30 + -21 + true + (-0.5309734, 0, 0.4778759) + East + Moan +
  • +
  • + 80 + -19 + true + (-0.5309734, 0, 0.4778759) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 31 + true + East +
  • +
  • + 30 + 35 + true + East +
  • +
  • + 80 + 31 + true + East +
  • + + + +
  • + RimNude_Penis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 14 + true + East +
  • + + + +
    +
    + + Blowjob_Receiver2c + 80 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -23 + true + (0.1828908, 1, 0.2123895) + West +
  • +
  • + 35 + -28 + true + (0.153392, 1, 0.1946901) + West + Suck +
  • +
  • + 50 + -28 + true + (0.153392, 1, 0.1946901) + West +
  • +
  • + 80 + -23 + true + (0.1828908, 1, 0.2123895) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 9 + true + West +
  • +
  • + 35 + 9 + true + (-0.06489678, 0, -0.01769918) + West +
  • +
  • + 50 + 17 + true + (-0.06489678, 0, -0.01769918) + West + Slimy +
  • +
  • + 80 + 9 + true + West +
  • + + + +
  • + RenderNodeTag_Hand + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (-0.2595871, 1, 0.08849573) + North +
  • +
  • + 10 + 0 + true + (-0.1769911, 1, 0.1828909) + North +
  • +
  • + 30 + 0 + true + (-0.2654867, 1, 0.1120945) + North +
  • +
  • + 80 + 0 + true + (-0.2595871, 1, 0.08849573) + North +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Blowjob/Stage3.xml b/1.6/Defs/GroupAnimationDefs/Blowjob/Stage3.xml new file mode 100644 index 0000000..078aa81 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Blowjob/Stage3.xml @@ -0,0 +1,138 @@ + + + + Blowjob_Initiator3 + 25 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -19 + true + (-0.5309734, 0, 0.4778759) + East +
  • +
  • + 25 + -20 + true + (-0.5309734, 0, 0.4778759) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 31 + true + East +
  • + + + +
  • + RimNude_Penis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 14 + true + East +
  • + + + +
    +
    + + Blowjob_Receiver3 + 25 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -23 + true + (0.1828908, 1, 0.2123895) + West + Suck +
  • +
  • + 25 + -30 + true + (0.1238939, 1, 0.1828909) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 9 + true + West +
  • +
  • + 20 + 9 + true + (-0.05309721, 0, -0.02949858) + West +
  • +
  • + 25 + 19 + true + (-0.05899716, 0, -0.01769918) + West +
  • + + + +
  • + RenderNodeTag_Hand + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (-0.2595871, 1, 0.08849573) + North +
  • +
  • + 20 + 0 + false + (0.3480827, -2, -0.04129779) + North +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Blowjob/Stage4a.xml b/1.6/Defs/GroupAnimationDefs/Blowjob/Stage4a.xml new file mode 100644 index 0000000..cc2e144 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Blowjob/Stage4a.xml @@ -0,0 +1,159 @@ + + + + Blowjob_Initiator4a + 30 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -20 + true + (-0.5309734, 0, 0.4778759) + East +
  • +
  • + 15 + -8 + true + (-0.5486726, 0, 0.4778759) + East +
  • +
  • + 30 + -20 + true + (-0.5309734, 0, 0.4778759) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 31 + true + East +
  • +
  • + 15 + 22 + true + East +
  • +
  • + 30 + 31 + true + East +
  • + + + +
  • + RimNude_Penis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 14 + true + East +
  • + + + +
    +
    + + Blowjob_Receiver4a + 30 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -30 + true + (0.1238939, 1, 0.1828909) + West +
  • +
  • + 12 + -23 + true + (0.1651919, 1, 0.1946901) + West + Slimy +
  • +
  • + 30 + -30 + true + (0.1238939, 1, 0.1828909) + West + Suck +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 19 + true + (-0.05899716, 0, -0.01769918) + West +
  • +
  • + 15 + 19 + true + (-0.01179957, 0, -0.03539819) + West +
  • +
  • + 30 + 19 + true + (-0.05899716, 0, -0.01769918) + West +
  • + + + +
  • + RenderNodeTag_Hand + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + false + (0.3480827, 1, -0.04129779) + North +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Blowjob/Stage4b.xml b/1.6/Defs/GroupAnimationDefs/Blowjob/Stage4b.xml new file mode 100644 index 0000000..88340a4 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Blowjob/Stage4b.xml @@ -0,0 +1,160 @@ + + + + Blowjob_Initiator4b + 30 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -20 + true + (-0.5309734, 0, 0.4778759) + East +
  • +
  • + 15 + -8 + true + (-0.5486726, 0, 0.4778759) + East + MoanShort +
  • +
  • + 30 + -20 + true + (-0.5309734, 0, 0.4778759) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 31 + true + East +
  • +
  • + 15 + 14 + true + East +
  • +
  • + 30 + 31 + true + East +
  • + + + +
  • + RimNude_Penis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 14 + true + East +
  • + + + +
    +
    + + Blowjob_Receiver4b + 30 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -30 + true + (0.1238939, 1, 0.1828909) + West +
  • +
  • + 12 + -23 + true + (0.1651919, 1, 0.1946901) + West + Slimy +
  • +
  • + 30 + -30 + true + (0.1238939, 1, 0.1828909) + West + Suck +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 19 + true + (-0.05899716, 0, -0.01769918) + West +
  • +
  • + 15 + 19 + true + (-0.01179957, 0, -0.03539819) + West +
  • +
  • + 30 + 19 + true + (-0.05899716, 0, -0.01769918) + West +
  • + + + +
  • + RenderNodeTag_Hand + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + false + (0.3480827, 1, -0.04129779) + North +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Blowjob/Stage4c.xml b/1.6/Defs/GroupAnimationDefs/Blowjob/Stage4c.xml new file mode 100644 index 0000000..b759f5b --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Blowjob/Stage4c.xml @@ -0,0 +1,237 @@ + + + + Blowjob_Initiator4c + 120 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -20 + true + (-0.5309734, 0, 0.4778759) + East +
  • +
  • + 100 + -24 + true + (-0.5309734, 0, 0.4778759) + East + Grunt +
  • +
  • + 120 + -20 + true + (-0.5309734, 0, 0.4778759) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 31 + true + East +
  • +
  • + 20 + 31 + true + East +
  • +
  • + 80 + 8 + true + East +
  • +
  • + 120 + 31 + true + East +
  • + + + +
  • + RimNude_Penis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 14 + true + East +
  • + + + +
    +
    + + Blowjob_Receiver4c + 120 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -30 + true + (0.1238939, 1, 0.1828909) + West + Suck +
  • +
  • + 20 + -22 + true + (0.1238939, 1, 0.1828909) + West +
  • +
  • + 22 + -22 + true + (0.1238939, -1, 0.1828909) + West + Slimy +
  • +
  • + 40 + -30 + true + (0.08259596, -1, 0.1828909) + West +
  • +
  • + 60 + -34 + true + (0.08259596, -1, 0.1828909) + West +
  • +
  • + 90 + -22 + true + (0.1238939, 0, 0.1828909) + West +
  • +
  • + 92 + -22 + true + (0.1238939, 0, 0.1828909) + West +
  • +
  • + 120 + -30 + true + (0.1238939, 1, 0.1828909) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 19 + true + (-0.05899716, 0, -0.01769918) + West +
  • +
  • + 20 + 19 + true + (0.1002955, 0, -0.01769918) + South +
  • +
  • + 22 + 19 + true + (0.1002955, 0, -0.01769918) + South +
  • +
  • + 40 + 19 + true + (-0.01179889, 0, 0.005899787) + South +
  • +
  • + 60 + 19 + true + (-0.03539803, 0, -0.005899787) + South + Slimy +
  • +
  • + 90 + 19 + true + (0.1002955, 0, -0.01769918) + South +
  • +
  • + 92 + 19 + true + (0.1002955, 0, -0.01769918) + West +
  • +
  • + 120 + 19 + true + (-0.05899716, 0, -0.01769918) + West +
  • + + + +
  • + RenderNodeTag_Hand + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + false + (0.3480827, 1, -0.04129779) + North +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Blowjob/Stage5.xml b/1.6/Defs/GroupAnimationDefs/Blowjob/Stage5.xml new file mode 100644 index 0000000..3b2d6ef --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Blowjob/Stage5.xml @@ -0,0 +1,159 @@ + + + + Blowjob_Initiator5 + 15 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -20 + true + (-0.5309734, 0, 0.4778759) + East + Grunt +
  • +
  • + 9 + -2 + true + (-0.5132743, 0, 0.5191741) + East +
  • +
  • + 15 + -20 + true + (-0.5309734, 0, 0.4778759) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 31 + true + East +
  • +
  • + 7 + 15 + true + East +
  • +
  • + 15 + 31 + true + East +
  • + + + +
  • + RimNude_Penis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 14 + true + East +
  • + + + +
    +
    + + Blowjob_Receiver5 + 15 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -30 + true + (0.1238939, 1, 0.1828909) + West + Suck +
  • +
  • + 5 + -23 + true + (0.1592923, 1, 0.1887907) + West +
  • +
  • + 15 + -30 + true + (0.1238939, 1, 0.1828909) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 19 + true + (-0.05899716, 0, -0.01769918) + West +
  • +
  • + 7 + 13 + true + (-0.01179889, 0, -0.04129797) + West +
  • +
  • + 15 + 19 + true + (-0.05899716, 0, -0.01769918) + West +
  • + + + +
  • + RenderNodeTag_Hand + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + false + (0.3480827, 1, -0.04129779) + North +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Blowjob/Stage6a.xml b/1.6/Defs/GroupAnimationDefs/Blowjob/Stage6a.xml new file mode 100644 index 0000000..7f94029 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Blowjob/Stage6a.xml @@ -0,0 +1,363 @@ + + + + Blowjob_Initiator6a + 180 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -20 + true + (-0.5309734, 0, 0.4778759) + East +
  • +
  • + 20 + -7 + true + (-0.6312686, 0, 0.5132743) + East + Scream +
  • +
  • + 27 + -20 + true + (-0.5309734, 0, 0.4778759) + East + Cum +
  • +
  • + 50 + -17 + true + (-0.5309734, 0, 0.4778759) + East + Scream +
  • +
  • + 55 + -20 + true + (-0.5309734, 0, 0.4778759) + East + Cum +
  • +
  • + 80 + -16 + true + (-0.5309734, 0, 0.4778759) + East +
  • +
  • + 85 + -20 + true + (-0.5309734, 0, 0.4778759) + East +
  • +
  • + 120 + -13 + true + (-0.6548674, 0, 0.4778759) + East +
  • +
  • + 180 + -8 + true + (-0.6548674, 0, 0.4778759) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 15 + 31 + true + East +
  • +
  • + 85 + 34 + true + East +
  • +
  • + 120 + 21 + true + (0.005899615, 0, -0.04129797) + East +
  • +
  • + 140 + 21 + true + (-0.005899615, 0, -0.005899608) + East +
  • +
  • + 160 + 21 + true + (0, 0, -0.02359879) + East +
  • +
  • + 180 + 14 + true + East +
  • + + + +
  • + RimNude_Penis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 14 + true + East +
  • + + + +
  • + RenderNodeTag_Hand + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (-0.5073746, -1, 0.3067846) + North +
  • +
  • + 17 + 0 + true + (0.08259596, -1, 0.6135693) + North +
  • +
  • + 25 + 0 + true + (-0.01179856, 0, 0.6076695) + North +
  • +
  • + 80 + 0 + true + (-0.01769851, 0, 0.5958703) + North +
  • +
  • + 95 + 0 + false + (0.04129865, 0, 0.5309733) + North +
  • +
  • + 120 + 0 + false + (-0.4542764, 0, 0.2300885) + North +
  • + + + +
    +
    + + Blowjob_Receiver6a + 180 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -30 + true + (0.1238939, 1, 0.1828909) + West +
  • +
  • + 20 + -27 + true + (0.1474924, 1, 0.1828909) + West +
  • +
  • + 25 + -31 + true + (0.1061937, 1, 0.1887907) + West +
  • +
  • + 85 + -33 + true + (0.1061937, 1, 0.1887907) + West + Suck +
  • +
  • + 160 + -11 + true + (0.4424765, 1, 0.3008848) + West + Moan +
  • +
  • + 180 + -4 + true + (0.4424765, 1, 0.3008848) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 19 + true + (-0.05899716, 0, -0.01769918) + West +
  • +
  • + 17 + 19 + true + (0.005899615, 0, -0.0117994) + West +
  • +
  • + 25 + 19 + true + (-0.05899716, 0, -0.01769918) + West +
  • +
  • + 50 + 19 + true + (-0.07079639, 0, -0.02359879) + West +
  • +
  • + 55 + 19 + true + (-0.0471976, 0, -0.02949858) + West +
  • +
  • + 80 + 19 + true + (-0.07079639, 0, -0.02359879) + West +
  • +
  • + 85 + 19 + true + (-0.0471976, 0, -0.02949858) + West +
  • +
  • + 180 + 11 + true + (-0.0471976, 0, -0.02949858) + West +
  • + + + +
  • + RenderNodeTag_Hand + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + false + (0.3480827, 1, -0.04129779) + North +
  • + + + +
  • + Saliva + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + false + (0, -2, 0) + North +
  • +
  • + 85 + -6 + true + (-0.1946903, -2, -0.08849555) + (0.2153401, 1, 0.415929) + North +
  • +
  • + 180 + -52 + true + (-0.4601771, -2, -0.40118) + (0.4808269, 1, 0.59882) + North +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Blowjob/Stage6b.xml b/1.6/Defs/GroupAnimationDefs/Blowjob/Stage6b.xml new file mode 100644 index 0000000..8cc8edb --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Blowjob/Stage6b.xml @@ -0,0 +1,450 @@ + + + + Blowjob_Initiator6b + 180 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -20 + true + (-0.5309734, 0, 0.4778759) + East +
  • +
  • + 30 + -17 + true + (-0.5309734, 0, 0.4778759) + East + Scream +
  • +
  • + 40 + -20 + true + (-0.5309734, 0, 0.4778759) + East +
  • +
  • + 50 + -17 + true + (-0.5309734, 0, 0.4778759) + East + Scream +
  • +
  • + 60 + -20 + true + (-0.5309734, 0, 0.4778759) + East +
  • +
  • + 80 + -17 + true + (-0.5309734, 0, 0.4778759) + East + Cum +
  • +
  • + 85 + -21 + true + (-0.5309734, 0, 0.4837757) + East + Scream +
  • +
  • + 110 + -16 + true + (-0.5309734, 0, 0.4837757) + East + Cum +
  • +
  • + 115 + -19 + true + (-0.5309734, 0, 0.4837757) + East + Grunt +
  • +
  • + 180 + -15 + true + (-0.5309734, 0, 0.4837757) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 15 + 31 + true + East +
  • +
  • + 30 + 27 + true + East +
  • +
  • + 40 + 33 + true + East +
  • +
  • + 50 + 28 + true + East +
  • +
  • + 60 + 32 + true + East +
  • +
  • + 180 + 23 + true + East +
  • + + + +
  • + RimNude_Penis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 14 + true + East +
  • + + + +
  • + Cumshot + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 75 + -64 + false + (0.1769911, 0, -0.2300885) + (0.333334, 1, 0.7758115) + North +
  • +
  • + 80 + -64 + true + (0.1769911, 0, -0.2300885) + (0.333334, 1, 0.7758115) + North +
  • +
  • + 85 + -64 + false + (0.1769911, 0, -0.2300885) + (0.333334, 1, 0.7758115) + North +
  • +
  • + 105 + -64 + false + (0.1769911, 0, -0.2300885) + (0.333334, 1, 0.7758115) + North +
  • +
  • + 110 + -64 + true + (0.1769911, 0, -0.2300885) + (0.333334, 1, 0.7758115) + North +
  • +
  • + 115 + -64 + false + (0.1769911, 0, -0.2300885) + (0.333334, 1, 0.7758115) + North +
  • + + + +
    +
    + + Blowjob_Receiver6b + 180 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -30 + true + (0.1238939, 1, 0.1828909) + West + Suck +
  • +
  • + 30 + -15 + true + (0.3362834, 1, 0.259587) + West +
  • +
  • + 70 + -11 + true + (0.353983, 1, 0.259587) + West +
  • +
  • + 110 + -11 + true + (0.3598826, 1, 0.2654868) + West + Moan +
  • +
  • + 180 + -8 + true + (0.3893807, 1, 0.2654868) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 19 + true + (-0.05899716, 0, -0.01769918) + West +
  • +
  • + 30 + 4 + true + (-0.05899716, 0, -0.01769918) + West +
  • +
  • + 80 + 4 + true + (-0.05899716, 0, -0.01769918) + West +
  • +
  • + 83 + 4 + true + (-0.03539836, 0, -0.005899787) + West +
  • +
  • + 110 + 4 + true + (-0.05899716, 0, -0.01769918) + West +
  • +
  • + 113 + 4 + true + (-0.03539836, 0, -0.005899787) + West +
  • +
  • + 150 + 1 + true + (-0.05899716, 0, -0.01769918) + West +
  • +
  • + 180 + 19 + true + (-0.05899716, 0, -0.01769918) + West +
  • + + + +
  • + RenderNodeTag_Hand + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (0.466077, 1, -0.04129779) + North +
  • +
  • + 30 + 0 + true + (-0.1651916, 1, 0.1828909) + North +
  • +
  • + 40 + 0 + true + (-0.2477875, 1, 0.1474925) + North + Slimy +
  • +
  • + 50 + 0 + true + (-0.159292, 1, 0.1946901) + North +
  • +
  • + 60 + 0 + true + (-0.2477875, 1, 0.1415931) + North + Slimy +
  • +
  • + 70 + 0 + true + (-0.1828908, 1, 0.1769911) + North +
  • +
  • + 80 + 0 + true + (-0.2772863, 1, 0.117994) + North +
  • +
  • + 90 + 0 + true + (-0.1474927, 1, 0.2123895) + North + Slimy +
  • +
  • + 100 + 0 + true + (-0.2536871, 1, 0.1356933) + North +
  • +
  • + 110 + 0 + true + (-0.1710915, 1, 0.2005899) + North +
  • +
  • + 180 + 0 + true + (-0.2418879, 1, 0.1356933) + North +
  • + + + +
  • + Cum + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 12 + false + (-0.1120944, 1, -0.2241889) + (0.3392327, 1, 0.3569321) + North +
  • +
  • + 110 + 12 + true + (-0.1120944, 1, -0.2241889) + (0.3392327, 1, 0.3569321) + North +
  • +
  • + 150 + 12 + true + (-0.1120944, 1, -0.2241889) + (0.3392327, 1, 0.3569321) + North +
  • +
  • + 180 + -5 + true + (-0.1120944, 1, -0.2241889) + (0.3392327, 1, 0.3569321) + North +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Cowgirl/AnimationPropDef_Cowgirl_Xray.xml b/1.6/Defs/GroupAnimationDefs/Cowgirl/AnimationPropDef_Cowgirl_Xray.xml new file mode 100644 index 0000000..23b5562 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Cowgirl/AnimationPropDef_Cowgirl_Xray.xml @@ -0,0 +1,29 @@ + + + + + RenderNodeTag_Cowgirl_Xray + + + + AnimProp_Cowgirl_Xray + + Cowgirl Xray + Rimworld_Animations.PawnRenderNode_GraphicVariants + Rimworld_Animations.PawnRenderNodeWorker_GraphicVariants + RenderNodeTag_Cowgirl_Xray + True + Body + + AnimationProps/CowgirlXray/XRay2-1 + Head + 95 + TexPathVariants_Cowgirl_Xray + + + + + + + + diff --git a/1.6/Defs/GroupAnimationDefs/Cowgirl/Cowgirl_Stage1.xml b/1.6/Defs/GroupAnimationDefs/Cowgirl/Cowgirl_Stage1.xml new file mode 100644 index 0000000..9c2e144 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Cowgirl/Cowgirl_Stage1.xml @@ -0,0 +1,160 @@ + + + + Initiator_Cowgirl_Stage1 + 150 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 180 + true + (0, 0, -0.7) + South +
  • +
  • + 55 + 180 + true + (0, 0, -0.7) + South + Slimy +
  • +
  • + 110 + 180 + true + (0, 0, -0.75) + South + Moan +
  • +
  • + 150 + 180 + true + (0, 0, -0.7) + South + Slimy +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + South +
  • + + + +
  • + RimNude_Penis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 190 + true + (0, 1, 0) + South +
  • +
  • + 70 + 170 + true + (0, 1, 0) + South +
  • +
  • + 150 + 180 + true + (0, 1, 0) + South +
  • + + + +
    +
    + + Receiver_Cowgirl_Stage1 + 150 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 15 + true + (0.2, 2, 0.5) + South +
  • +
  • + 30 + 15 + true + (0.1, 2, 0.5) + South +
  • +
  • + 110 + 0 + true + (0, 2, 0.2) + South +
  • +
  • + 150 + 0 + true + (0, 2, 0.23) + South +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -15 + true + South +
  • +
  • + 55 + -15 + true + (0, 0, -0.05) + South +
  • +
  • + 110 + 0 + true + South +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Cowgirl/Cowgirl_Stage2_1.xml b/1.6/Defs/GroupAnimationDefs/Cowgirl/Cowgirl_Stage2_1.xml new file mode 100644 index 0000000..0e26035 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Cowgirl/Cowgirl_Stage2_1.xml @@ -0,0 +1,132 @@ + + + + Initiator_Cowgirl_Stage2_1 + 30 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 180 + true + (0, 0, -0.7) + South +
  • +
  • + 20 + 180 + true + (0, 0, -0.65) + South + Fuck + Moan +
  • +
  • + 30 + 180 + true + (0, 0, -0.7) + South +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + South +
  • + + + +
  • + RimNude_Penis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 180 + true + (0, 1, 0) + South +
  • + + + +
    +
    + + Receiver_Cowgirl_Stage2_1 + 30 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (0, 2, 0.23) + South +
  • +
  • + 10 + 0 + true + (0, 2, 0.43) + South + Moan +
  • +
  • + 30 + 0 + true + (0, 2, 0.23) + South +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + South +
  • +
  • + 15 + 0 + true + (0, 0, -0.04) + South +
  • +
  • + 30 + 0 + true + South +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Cowgirl/Cowgirl_Stage2_2.xml b/1.6/Defs/GroupAnimationDefs/Cowgirl/Cowgirl_Stage2_2.xml new file mode 100644 index 0000000..7ab31ad --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Cowgirl/Cowgirl_Stage2_2.xml @@ -0,0 +1,132 @@ + + + + Initiator_Cowgirl_Stage2_2 + 30 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 180 + true + (0, 0, -0.7) + South +
  • +
  • + 20 + 180 + true + (0, 0, -0.65) + South + Fuck + Moan +
  • +
  • + 30 + 180 + true + (0, 0, -0.7) + South +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + South +
  • + + + +
  • + RimNude_Penis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 180 + true + (0, 1, 0) + South +
  • + + + +
    +
    + + Receiver_Cowgirl_Stage2_2 + 30 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (0, 2, 0.23) + South +
  • +
  • + 10 + 7 + true + (0, 2, 0.43) + South + Moan +
  • +
  • + 30 + 0 + true + (0, 2, 0.23) + South +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + South +
  • +
  • + 15 + -7 + true + (0, 0, -0.04) + South +
  • +
  • + 30 + 0 + true + South +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Cowgirl/Cowgirl_Stage2_3.xml b/1.6/Defs/GroupAnimationDefs/Cowgirl/Cowgirl_Stage2_3.xml new file mode 100644 index 0000000..e1dc5ba --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Cowgirl/Cowgirl_Stage2_3.xml @@ -0,0 +1,146 @@ + + + + Initiator_Cowgirl_Stage2_3 + 30 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 180 + true + (0, 0, -0.7) + South +
  • +
  • + 20 + 180 + true + (0, 0, -0.65) + South + Fuck + Moan +
  • +
  • + 30 + 180 + true + (0, 0, -0.7) + South +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + South +
  • + + + +
  • + RimNude_Penis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 180 + true + (0, 1, 0) + South +
  • + + + +
    +
    + + Receiver_Cowgirl_Stage2_3 + 30 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (0, 2, 0.23) + South +
  • +
  • + 10 + 7 + true + (0, 2, 0.43) + South +
  • +
  • + 15 + -7 + true + (0.03, 2, 0.43) + South + Moan +
  • +
  • + 30 + 0 + true + (0, 2, 0.23) + South +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + South +
  • +
  • + 10 + -7 + true + (0, 0, -0.07) + South +
  • +
  • + 15 + 7 + true + (0, 0, -0.07) + South +
  • +
  • + 30 + 0 + true + South +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Cowgirl/Cowgirl_Stage3_XRay.xml b/1.6/Defs/GroupAnimationDefs/Cowgirl/Cowgirl_Stage3_XRay.xml new file mode 100644 index 0000000..b7be002 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Cowgirl/Cowgirl_Stage3_XRay.xml @@ -0,0 +1,206 @@ + + + + Initiator_Cowgirl_Stage3 + 25 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 180 + true + (0, 0, -0.7) + South + MoanShort +
  • +
  • + 20 + 180 + true + (0, 0, -0.6) + South + Fuck +
  • +
  • + 25 + 180 + true + (0, 0, -0.7) + South +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + South +
  • +
  • + 10 + 0 + true + (0, 0, 0.03) + South +
  • +
  • + 25 + 0 + true + South +
  • + + + +
  • + RimNude_Penis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 180 + true + (0, 1, 0) + South +
  • + + + +
    +
    + + Receiver_Cowgirl_Stage3 + 25 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (0, 2, 0.23) + South +
  • +
  • + 7 + 3 + true + (0, 2, 0.43) + South +
  • +
  • + 25 + 0 + true + (0, 2, 0.23) + South + Grunt +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + South +
  • +
  • + 20 + 0 + true + (0, 0, 0.03) + South +
  • +
  • + 25 + 0 + true + South +
  • + + + +
  • + RenderNodeTag_Cowgirl_Xray + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (1, 0, 0.3) + (0.5, 1, 0.5) + North +
  • +
  • + 5 + 0 + true + (1, 0, 0.3) + (0.5, 1, 0.5) + North + 1 +
  • +
  • + 10 + 0 + true + (1, 0, 0.3) + (0.52, 1, 0.52) + North + 2 +
  • +
  • + 15 + 1 + true + (1, 0, 0.3) + (0.52, 1, 0.52) + North + 3 +
  • +
  • + 20 + 2 + true + (1, 0, 0.3) + (0.5, 1, 0.5) + North + 2 +
  • +
  • + 25 + 1 + true + (1, 0, 0.3) + (0.5, 1, 0.5) + North + 1 +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Cowgirl/Cowgirl_Stage4.xml b/1.6/Defs/GroupAnimationDefs/Cowgirl/Cowgirl_Stage4.xml new file mode 100644 index 0000000..43c659d --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Cowgirl/Cowgirl_Stage4.xml @@ -0,0 +1,254 @@ + + + + Initiator_Cowgirl_Stage4 + 200 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 180 + true + (0, 0, -0.7) + South +
  • +
  • + 60 + 180 + true + (0, 0, -0.7) + South +
  • +
  • + 70 + 180 + true + (0, 0, -0.67) + South +
  • +
  • + 75 + 180 + true + (0, 0, -0.7) + South + Cum + Scream +
  • +
  • + 125 + 180 + true + (0, 0, -0.7) + South + Cum +
  • +
  • + 135 + 180 + true + (0, 0, -0.67) + South +
  • +
  • + 150 + 180 + true + (0, 0, -0.7) + South + Cum +
  • +
  • + 200 + 180 + true + (0, 0, -0.72) + South +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + South +
  • +
  • + 75 + 0 + true + (0, 0, -0.02) + South +
  • +
  • + 200 + 0 + true + South +
  • + + + +
  • + RimNude_Penis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 180 + true + (0, 1, 0) + South +
  • + + + +
    +
    + + Receiver_Cowgirl_Stage4 + 200 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (0, 2, 0.23) + South +
  • +
  • + 75 + 0 + true + (0, 2, 0.26) + South + Scream +
  • +
  • + 85 + 0 + true + (0, 2, 0.23) + South +
  • +
  • + 135 + 0 + true + (0, 2, 0.26) + South + Scream +
  • +
  • + 200 + 0 + true + (0, 2, 0.23) + South +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + South +
  • +
  • + 50 + 0 + true + (0, 0, 0.02) + South +
  • +
  • + 100 + 0 + true + South +
  • +
  • + 150 + 0 + true + (0, 0, 0.025) + South +
  • +
  • + 200 + 0 + true + South +
  • + + + +
  • + RenderNodeTag_Cowgirl_Xray + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 1 + true + (1, 0, 0.3) + (0.5, 1, 0.5) + North + 3 +
  • +
  • + 40 + 1 + true + (1, 0, 0.3) + (0.5, 1, 0.5) + North + 4 +
  • +
  • + 105 + 1 + true + (1, 0, 0.3) + (0.5, 1, 0.5) + North + 5 +
  • +
  • + 150 + 1 + true + (1, 0, 0.3) + (0.5, 1, 0.5) + North + 5 +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Cowgirl/Cowgirl_Stage_1_5.xml b/1.6/Defs/GroupAnimationDefs/Cowgirl/Cowgirl_Stage_1_5.xml new file mode 100644 index 0000000..0e9e83b --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Cowgirl/Cowgirl_Stage_1_5.xml @@ -0,0 +1,133 @@ + + + + Initiator_Cowgirl_Stage1_5 + 55 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 180 + true + (0, 0, -0.7) + South +
  • +
  • + 30 + 180 + true + (0, 0, -0.65) + South + Slimy + Moan +
  • +
  • + 55 + 180 + true + (0, 0, -0.7) + South + Fuck +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + South +
  • + + + +
  • + RimNude_Penis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 180 + true + (0, 1, 0) + South +
  • + + + +
    +
    + + Receiver_Cowgirl_Stage1_5 + 55 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (0, 2, 0.23) + South +
  • +
  • + 25 + 0 + true + (0, 2, 0.43) + South + Moan +
  • +
  • + 55 + 0 + true + (0, 2, 0.23) + South +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + South +
  • +
  • + 30 + 0 + true + (0, 0, -0.04) + South +
  • +
  • + 55 + 0 + true + South +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Cowgirl/GroupAnimation_Cowgirl.xml b/1.6/Defs/GroupAnimationDefs/Cowgirl/GroupAnimation_Cowgirl.xml new file mode 100644 index 0000000..c67895b --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Cowgirl/GroupAnimation_Cowgirl.xml @@ -0,0 +1,231 @@ + + + + GroupAnimation_Cowgirl + 2 + +
  • + 1 + +
  • + 1 + +
  • Initiator_Cowgirl_Stage1
  • +
  • Receiver_Cowgirl_Stage1
  • + + + + + + +
  • + 10 + +
  • + 1 + +
  • Initiator_Cowgirl_Stage1_5
  • +
  • Receiver_Cowgirl_Stage1_5
  • + + + + + + +
  • + 10 + +
  • GroupAnimation_Cowgirl_Stage2_Branch1
  • +
  • GroupAnimation_Cowgirl_Stage2_Branch2
  • +
  • GroupAnimation_Cowgirl_Stage2_Branch3
  • + + + +
  • + 20 + +
  • + 1 + +
  • Initiator_Cowgirl_Stage3
  • +
  • Receiver_Cowgirl_Stage3
  • + + + + + + +
  • + 1 + +
  • + 1 + +
  • Initiator_Cowgirl_Stage4
  • +
  • Receiver_Cowgirl_Stage4
  • + + + + + + +
    + + +
  • + 1 + + +
  • + +
  • +
  • + +
  • Sex_Anal
  • +
  • Sex_Vaginal
  • +
  • Sex_Footjob
  • + + + + + + +
  • + +
  • +
  • + 1 + + + +
  • + + +
  • + +
  • +
  • + +
  • Sex_Reverse_Anal
  • +
  • Sex_Reverse_Vaginal
  • +
  • Sex_Reverse_Footjob
  • +
  • Rape_Reverse_Anal
  • +
  • Rape_Reverse_Vaginal
  • +
  • Rape_Reverse_Footjob
  • + + + + + + + + + + +
  • + 0 + + +
  • + +
  • +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • + + + +
    + + +
  • Offset_Cowgirl_Bottom
  • +
  • Offset_Cowgirl_Top
  • +
    + +
    + + + GroupAnimation_Cowgirl_Stage2_Branch1 + 2 + +
  • + 3 + +
  • + 1 + +
  • Initiator_Cowgirl_Stage2_1
  • +
  • Receiver_Cowgirl_Stage2_1
  • + + + + + +
    + + +
  • Offset_Cowgirl_Bottom
  • +
  • Offset_Cowgirl_Top
  • +
    + +
    + + + GroupAnimation_Cowgirl_Stage2_Branch2 + 2 + +
  • + 3 + +
  • + 1 + +
  • Initiator_Cowgirl_Stage2_2
  • +
  • Receiver_Cowgirl_Stage2_2
  • + + + + + +
    + + +
  • Offset_Cowgirl_Bottom
  • +
  • Offset_Cowgirl_Top
  • +
    + +
    + + + GroupAnimation_Cowgirl_Stage2_Branch3 + 2 + +
  • + 3 + +
  • + 1 + +
  • Initiator_Cowgirl_Stage2_3
  • +
  • Receiver_Cowgirl_Stage2_3
  • + + + + + +
    + + +
  • Offset_Cowgirl_Bottom
  • +
  • Offset_Cowgirl_Top
  • +
    + +
    +
    diff --git a/1.6/Defs/GroupAnimationDefs/Cowgirl/OffsetDef_Cowgirl.xml b/1.6/Defs/GroupAnimationDefs/Cowgirl/OffsetDef_Cowgirl.xml new file mode 100644 index 0000000..5a3099b --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Cowgirl/OffsetDef_Cowgirl.xml @@ -0,0 +1,31 @@ + + + + Offset_Cowgirl_Top + +
  • + +
  • Human
  • + + +
  • Thin(0, 0, -0.05)
  • +
  • Female(0, 0, 0)
  • +
  • Hulk(0, 0, 0.15)
  • +
    + +
    +
    + + Offset_Cowgirl_Bottom + +
  • + +
  • Human
  • + + +
  • Hulk(0, 0, -0.17)
  • +
    + +
    +
    +
    diff --git a/1.6/Defs/GroupAnimationDefs/Cowgirl/TexPathVariants_Cowgirl.xml b/1.6/Defs/GroupAnimationDefs/Cowgirl/TexPathVariants_Cowgirl.xml new file mode 100644 index 0000000..354317e --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Cowgirl/TexPathVariants_Cowgirl.xml @@ -0,0 +1,14 @@ + + + + TexPathVariants_Cowgirl_Xray + +
  • AnimationProps/CowgirlXray/XRay2-2
  • +
  • AnimationProps/CowgirlXray/XRay2-3
  • +
  • AnimationProps/CowgirlXray/XRay2-4
  • +
  • AnimationProps/CowgirlXray/XRay2-5
  • +
  • AnimationProps/CowgirlXray/XRay2-6
  • +
    +
    + +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Cunnilingus/AnimationPropDef_Saliva.xml b/1.6/Defs/GroupAnimationDefs/Cunnilingus/AnimationPropDef_Saliva.xml new file mode 100644 index 0000000..ab62d28 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Cunnilingus/AnimationPropDef_Saliva.xml @@ -0,0 +1,23 @@ + + + + + Saliva + + + + AnimProp_Saliva + + Saliva + Rimworld_Animations.PawnRenderNode_GraphicVariants + Rimworld_Animations.PawnRenderNodeWorker_GraphicVariants + Saliva + Head + + AnimationProps/Saliva/Saliva + Head + 95 + + + + diff --git a/1.6/Defs/GroupAnimationDefs/Cunnilingus/GroupAnimation_Cunnilingus.xml b/1.6/Defs/GroupAnimationDefs/Cunnilingus/GroupAnimation_Cunnilingus.xml new file mode 100644 index 0000000..a7e6f5a --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Cunnilingus/GroupAnimation_Cunnilingus.xml @@ -0,0 +1,309 @@ + + + + GroupAnimation_Cunnilingus + 2 + +
  • + 1 + +
  • + 1 + +
  • LesbianInitiator_Stage1
  • +
  • LesbianReceiver_Stage1
  • + + + + + + +
  • + 10 + +
  • GroupAnimation_Cunnilingus_Stage2_Branch1
  • +
  • GroupAnimation_Cunnilingus_Stage2_Branch2
  • +
  • GroupAnimation_Cunnilingus_Stage2_Branch3
  • + + + +
  • + 1 + +
  • + 1 + +
  • LesbianInitiator_Stage3
  • +
  • LesbianReceiver_Stage3
  • + + + + + + +
  • + 10 + +
  • GroupAnimation_Cunnilingus_Stage4_Branch1
  • +
  • GroupAnimation_Cunnilingus_Stage4_Branch2
  • +
  • GroupAnimation_Cunnilingus_Stage4_Branch3
  • + + + +
  • + 20 + +
  • + 1 + +
  • LesbianInitiator_Stage5
  • +
  • LesbianReceiver_Stage5
  • + + + + + + +
  • + 1 + +
  • + 1 + +
  • LesbianInitiator_Stage6
  • +
  • LesbianReceiver_Stage6
  • + + + + + +
    + +
  • + 1 + + +
  • + +
  • +
  • + +
  • Sex_Cunnilingus
  • +
  • Rape_Cunnilingus
  • + + + + + + +
  • + +
  • +
  • + 1 + + + +
  • + + +
  • + +
  • +
  • + +
  • Sex_Reverse_Cunnilingus
  • + + + + + + + + + +
  • + 0 + +
  • + +
  • +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • + + + + +
    + + +
  • Offset_Cunnilingus_Initiator
  • +
  • Offset_Cunnilingus_Receiver
  • +
    + +
    + + + GroupAnimation_Cunnilingus_Stage2_Branch1 + 2 + +
  • + 3 + +
  • + 1 + +
  • LesbianInitiator_Stage2a
  • +
  • LesbianReceiver_Stage2a
  • + + + + + +
    + + +
  • Offset_Cunnilingus_Initiator
  • +
  • Offset_Cunnilingus_Receiver
  • +
    + +
    + + GroupAnimation_Cunnilingus_Stage2_Branch2 + 2 + +
  • + 3 + +
  • + 1 + +
  • LesbianInitiator_Stage2b
  • +
  • LesbianReceiver_Stage2b
  • + + + + + +
    + + +
  • Offset_Cunnilingus_Initiator
  • +
  • Offset_Cunnilingus_Receiver
  • +
    + +
    + + + GroupAnimation_Cunnilingus_Stage2_Branch3 + 2 + +
  • + 3 + +
  • + 1 + +
  • LesbianInitiator_Stage2c
  • +
  • LesbianReceiver_Stage2c
  • + + + + + +
    + + +
  • Offset_Cunnilingus_Initiator
  • +
  • Offset_Cunnilingus_Receiver
  • +
    + +
    + + + GroupAnimation_Cunnilingus_Stage4_Branch1 + 2 + +
  • + 3 + +
  • + 1 + +
  • LesbianInitiator_Stage4a
  • +
  • LesbianReceiver_Stage4a
  • + + + + + +
    + + +
  • Offset_Cunnilingus_Initiator
  • +
  • Offset_Cunnilingus_Receiver
  • +
    + +
    + + + GroupAnimation_Cunnilingus_Stage4_Branch2 + 2 + +
  • + 3 + +
  • + 1 + +
  • LesbianInitiator_Stage4b
  • +
  • LesbianReceiver_Stage4b
  • + + + + + +
    + + +
  • Offset_Cunnilingus_Initiator
  • +
  • Offset_Cunnilingus_Receiver
  • +
    + +
    + + + GroupAnimation_Cunnilingus_Stage4_Branch3 + 2 + +
  • + 3 + +
  • + 1 + +
  • LesbianInitiator_Stage4c
  • +
  • LesbianReceiver_Stage4c
  • + + + + + +
    + + +
  • Offset_Cunnilingus_Initiator
  • +
  • Offset_Cunnilingus_Receiver
  • +
    + +
    + +
    diff --git a/1.6/Defs/GroupAnimationDefs/Cunnilingus/OffsetDef_Cunnilingus.xml b/1.6/Defs/GroupAnimationDefs/Cunnilingus/OffsetDef_Cunnilingus.xml new file mode 100644 index 0000000..2bb7b8b --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Cunnilingus/OffsetDef_Cunnilingus.xml @@ -0,0 +1,30 @@ + + + + Offset_Cunnilingus_Initiator + +
  • + +
  • Human
  • + + +
  • Thin(0, 0, 0)
  • +
    + +
    +
    + + + Offset_Cunnilingus_Receiver + +
  • + +
  • Human
  • + + +
  • Thin(-0.049, 0, 0.057)
  • +
    + +
    +
    +
    diff --git a/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage1.xml b/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage1.xml new file mode 100644 index 0000000..865f727 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage1.xml @@ -0,0 +1,99 @@ + + + + LesbianInitiator_Stage1 + 50 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -5 + true + (-0.660767, -1, 0.4483777) + East +
  • +
  • + 50 + 41 + true + (-0.2123895, -1, 0.2654868) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 20 + true + East +
  • +
  • + 50 + 3 + true + East +
  • + + + +
    +
    + + LesbianReceiver_Stage1 + 50 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 100 + true + (0.6135694, 0, 0.05309737) + West +
  • +
  • + 50 + 107 + true + (0.578171, 0, 0.06489658) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -25 + true + West +
  • +
  • + 50 + -40 + true + West +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage2a.xml b/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage2a.xml new file mode 100644 index 0000000..1a12fca --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage2a.xml @@ -0,0 +1,155 @@ + + + + LesbianInitiator_Stage2a + 60 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 41 + true + (-0.2123895, -1, 0.2654868) + East +
  • +
  • + 40 + 36 + true + (-0.1887907, -1, 0.3008848) + East +
  • +
  • + 50 + 29 + true + (-0.1887907, -1, 0.3008848) + East +
  • +
  • + 60 + 41 + true + (-0.2123895, -1, 0.2654868) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 3 + true + East +
  • +
  • + 40 + -18 + true + East +
  • +
  • + 50 + 11 + true + (-0.005899615, 0, -0.05899698) + East +
  • +
  • + 60 + 3 + true + East +
  • + + + +
    +
    + + LesbianReceiver_Stage2a + 60 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 107 + true + (0.578171, 0, 0.06489658) + West + Slimy +
  • +
  • + 15 + 112 + true + (0.578171, 0, 0.06489658) + West +
  • +
  • + 28 + 104 + true + (0.578171, 0, 0.06489658) + West +
  • +
  • + 45 + 111 + true + (0.578171, 0, 0.06489658) + West + Moan +
  • +
  • + 60 + 107 + true + (0.578171, 0, 0.06489658) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -40 + true + West +
  • +
  • + 50 + -26 + true + West +
  • +
  • + 60 + -40 + true + West +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage2b.xml b/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage2b.xml new file mode 100644 index 0000000..035792f --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage2b.xml @@ -0,0 +1,155 @@ + + + + LesbianInitiator_Stage2b + 60 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 41 + true + (-0.2123895, -1, 0.2654868) + East +
  • +
  • + 40 + 36 + true + (-0.1887907, -1, 0.3008848) + East +
  • +
  • + 50 + 29 + true + (-0.1887907, -1, 0.3008848) + East +
  • +
  • + 60 + 41 + true + (-0.2123895, -1, 0.2654868) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 3 + true + East +
  • +
  • + 40 + -18 + true + East +
  • +
  • + 50 + 11 + true + (-0.005899615, 0, -0.05899698) + East +
  • +
  • + 60 + 3 + true + East +
  • + + + +
    +
    + + LesbianReceiver_Stage2b + 60 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 107 + true + (0.578171, 0, 0.06489658) + West + Slimy +
  • +
  • + 15 + 112 + true + (0.578171, 0, 0.06489658) + West + Moan +
  • +
  • + 28 + 104 + true + (0.578171, 0, 0.06489658) + West +
  • +
  • + 45 + 111 + true + (0.578171, 0, 0.06489658) + West +
  • +
  • + 60 + 107 + true + (0.578171, 0, 0.06489658) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -40 + true + South +
  • +
  • + 20 + -38 + true + South +
  • +
  • + 60 + -40 + true + South +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage2c.xml b/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage2c.xml new file mode 100644 index 0000000..d35dfea --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage2c.xml @@ -0,0 +1,137 @@ + + + + LesbianInitiator_Stage2c + 60 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 41 + true + (-0.2123895, -1, 0.2654868) + East +
  • +
  • + 40 + 36 + true + (-0.2359883, -1, 0.3185842) + East + Moan +
  • +
  • + 60 + 41 + true + (-0.2123895, -1, 0.2654868) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 3 + true + East +
  • +
  • + 40 + -18 + true + (-0.03539836, 0, -0.02949858) + East +
  • +
  • + 50 + 11 + true + (-0.005899615, 0, -0.05899698) + East +
  • +
  • + 60 + 3 + true + East +
  • + + + +
    +
    + + LesbianReceiver_Stage2c + 60 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 107 + true + (0.578171, 0, 0.06489658) + West + Slimy +
  • +
  • + 15 + 117 + true + (0.5309734, 0, 0.1120945) + (1, 1, 0.97) + West + MoanShort +
  • +
  • + 60 + 107 + true + (0.578171, 0, 0.06489658) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -40 + true + West +
  • +
  • + 50 + -26 + true + West +
  • +
  • + 60 + -40 + true + West +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage3_LoopOnce.xml b/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage3_LoopOnce.xml new file mode 100644 index 0000000..507db26 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage3_LoopOnce.xml @@ -0,0 +1,125 @@ + + + + LesbianInitiator_Stage3 + 30 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 41 + true + (-0.2123895, -1, 0.2654868) + East +
  • +
  • + 15 + 33 + true + (-0.2123895, -1, 0.2654868) + East + Slimy +
  • +
  • + 30 + 35 + true + (-0.2123895, -1, 0.2654868) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 3 + true + East +
  • + + + +
    +
    + + LesbianReceiver_Stage3 + 30 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 107 + true + (0.578171, 0, 0.06489658) + West +
  • +
  • + 30 + 115 + true + (0.5073743, 0, 0.06489658) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -40 + true + West +
  • +
  • + 30 + -12 + true + West +
  • + + + +
  • + RenderNodeTag_Hand + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (0.6489678, -0.5, 0.259587) + North + +
  • +
  • + 12 + 0 + true + (0.2713863, -0.5, 0.6135693) + North + +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage4a.xml b/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage4a.xml new file mode 100644 index 0000000..899ebff --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage4a.xml @@ -0,0 +1,180 @@ + + + + LesbianInitiator_Stage4a + 25 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 35 + true + (-0.2123895, -1, 0.2654868) + East +
  • +
  • + 15 + 35 + true + (-0.2359883, -1, 0.2477875) + East +
  • +
  • + 25 + 35 + true + (-0.2123895, -1, 0.2654868) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 3 + true + East +
  • +
  • + 10 + -6 + true + (-0.05309721, 0, -0.04129797) + East +
  • +
  • + 20 + 5 + true + (-0.0235988, 0, -0.03539819) + East +
  • +
  • + 25 + 3 + true + East +
  • + + + +
    +
    + + LesbianReceiver_Stage4a + 25 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 115 + true + (0.5073743, 0, 0.06489658) + West + Slimy +
  • +
  • + 5 + 117 + true + (0.5073743, 0, 0.07669616) + West +
  • +
  • + 10 + 119 + true + (0.5073743, 0, 0.07669616) + West + Slimy + MoanShort +
  • +
  • + 25 + 115 + true + (0.5073743, 0, 0.06489658) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -12 + true + West +
  • +
  • + 15 + -8 + true + (0.005899615, 0, 0.02359879) + West +
  • +
  • + 25 + -12 + true + West +
  • + + + +
  • + RenderNodeTag_Hand + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (0.2713863, -0.5, 0.6135693) + North +
  • +
  • + 10 + 0 + true + (0.2064899, -0.5, 0.60177) + North +
  • +
  • + 20 + 0 + true + (0.2477879, -0.5, 0.5545721) + North +
  • +
  • + 25 + 0 + true + (0.2713863, -0.5, 0.6135693) + North +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage4b.xml b/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage4b.xml new file mode 100644 index 0000000..a1a186b --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage4b.xml @@ -0,0 +1,173 @@ + + + + LesbianInitiator_Stage4b + 25 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 35 + true + (-0.2123895, -1, 0.2654868) + East +
  • +
  • + 15 + 35 + true + (-0.2359883, -1, 0.2477875) + East +
  • +
  • + 25 + 35 + true + (-0.2123895, -1, 0.2654868) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 3 + true + East +
  • +
  • + 10 + -6 + true + (-0.05309721, 0, -0.04129797) + East +
  • +
  • + 20 + 5 + true + (-0.0235988, 0, -0.03539819) + East +
  • +
  • + 25 + 3 + true + East +
  • + + + +
    +
    + + LesbianReceiver_Stage4b + 25 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 115 + true + (0.5073743, 0, 0.06489658) + West + Slimy +
  • +
  • + 15 + 125 + true + (0.5073743, 0, 0.07669616) + West + Slimy + Grunt +
  • +
  • + 25 + 115 + true + (0.5073743, 0, 0.06489658) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -12 + true + West +
  • +
  • + 15 + -26 + true + (0.005899615, 0, 0.02359879) + West +
  • +
  • + 25 + -12 + true + West +
  • + + + +
  • + RenderNodeTag_Hand + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (0.2713863, -0.5, 0.6135693) + North +
  • +
  • + 10 + 0 + true + (0.2064899, -0.5, 0.60177) + North +
  • +
  • + 20 + 0 + true + (0.2477879, -0.5, 0.5545721) + North +
  • +
  • + 25 + 0 + true + (0.2713863, -0.5, 0.6135693) + North +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage4c.xml b/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage4c.xml new file mode 100644 index 0000000..a5362ee --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage4c.xml @@ -0,0 +1,180 @@ + + + + LesbianInitiator_Stage4c + 25 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 35 + true + (-0.2123895, -1, 0.2654868) + East +
  • +
  • + 15 + 35 + true + (-0.2359883, -1, 0.2477875) + East +
  • +
  • + 25 + 35 + true + (-0.2123895, -1, 0.2654868) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 3 + true + East +
  • +
  • + 10 + -6 + true + (-0.05309721, 0, -0.04129797) + East +
  • +
  • + 20 + 5 + true + (-0.0235988, 0, -0.03539819) + East +
  • +
  • + 25 + 3 + true + East +
  • + + + +
    +
    + + LesbianReceiver_Stage4c + 25 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 115 + true + (0.5073743, 0, 0.06489658) + West + Slimy +
  • +
  • + 5 + 117 + true + (0.5073743, 0, 0.07669616) + West +
  • +
  • + 10 + 119 + true + (0.5073743, 0, 0.07669616) + West + Slimy + MoanShort +
  • +
  • + 25 + 115 + true + (0.5073743, 0, 0.06489658) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -12 + true + South +
  • +
  • + 15 + -8 + true + (0.005899615, 0, 0.02359879) + South +
  • +
  • + 25 + -12 + true + South +
  • + + + +
  • + RenderNodeTag_Hand + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (0.2713863, -0.5, 0.6135693) + North +
  • +
  • + 10 + 0 + true + (0.2064899, -0.5, 0.60177) + North +
  • +
  • + 20 + 0 + true + (0.2477879, -0.5, 0.5545721) + North +
  • +
  • + 25 + 0 + true + (0.2713863, -0.5, 0.6135693) + North +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage5.xml b/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage5.xml new file mode 100644 index 0000000..4f739d6 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage5.xml @@ -0,0 +1,179 @@ + + + + LesbianInitiator_Stage5 + 20 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 32 + true + (-0.2418879, -1, 0.259587) + East +
  • +
  • + 7 + 35 + true + (-0.2123895, -1, 0.2654868) + East +
  • +
  • + 14 + 28 + true + (-0.2418879, -1, 0.2359883) + East +
  • +
  • + 20 + 32 + true + (-0.2418879, -1, 0.259587) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 3 + true + East +
  • +
  • + 7 + 3 + true + (-0.06489678, 0, 0.02359915) + East +
  • +
  • + 14 + 3 + true + (-0.02949841, 0, -0.02359843) + East +
  • +
  • + 20 + 3 + true + East +
  • + + + +
    +
    + + LesbianReceiver_Stage5 + 20 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 121 + true + (0.5073743, 0, 0.06489658) + West + Slimy +
  • +
  • + 10 + 114 + true + (0.4896755, 0, 0.04129779) + West + Slimy + Grunt +
  • +
  • + 20 + 121 + true + (0.5073743, 0, 0.06489658) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -12 + true + West +
  • +
  • + 10 + -5 + true + West +
  • +
  • + 20 + -12 + true + West +
  • + + + +
  • + RenderNodeTag_Hand + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (0.2713863, -0.5, 0.6135693) + North +
  • +
  • + 8 + 0 + true + (0.2477879, -0.5, 0.6548674) + North +
  • +
  • + 15 + 0 + true + (0.2241894, -0.5, 0.6312683) + North +
  • +
  • + 20 + 0 + true + (0.2772866, -0.5, 0.6135693) + North +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage6.xml b/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage6.xml new file mode 100644 index 0000000..03722a8 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage6.xml @@ -0,0 +1,275 @@ + + + + LesbianInitiator_Stage6 + 130 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 32 + true + (-0.2418879, -1, 0.259587) + East +
  • +
  • + 10 + 37 + true + (-0.2418879, -1, 0.259587) + East +
  • +
  • + 15 + 26 + true + (-0.2418879, -1, 0.259587) + East +
  • +
  • + 30 + 35 + true + (-0.2418879, -1, 0.259587) + East +
  • +
  • + 35 + 29 + true + (-0.2359883, -1, 0.2536873) + East + Moan +
  • +
  • + 100 + 14 + true + (-0.4011799, -1, 0.3126844) + East +
  • +
  • + 130 + 4 + true + (-0.501475, -1, 0.3362832) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 3 + true + East +
  • +
  • + 40 + -8 + true + East +
  • +
  • + 130 + 0 + true + East +
  • + + + +
  • + Saliva + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -15 + true + (0.1356925, -2, -0.1061947) + (0.3215362, 1, 0.6224177) + North +
  • +
  • + 130 + 24 + true + (0.3244829, -2, -0.2359883) + (0.3215362, 1, 0.6224177) + North +
  • + + + +
    +
    + + LesbianReceiver_Stage6 + 130 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 121 + true + (0.5073743, 0, 0.06489658) + West + Cum + Scream +
  • +
  • + 10 + 115 + true + (0.5073743, 0, 0.06489658) + West + Slimy +
  • +
  • + 15 + 128 + true + (0.5073743, 0, 0.06489658) + West + Cum +
  • +
  • + 30 + 112 + true + (0.5073743, 0, 0.06489658) + West + Slimy + Scream +
  • +
  • + 35 + 120 + true + (0.5073743, 0, 0.06489658) + West +
  • +
  • + 50 + 113 + true + (0.5073743, 0, 0.06489658) + West +
  • +
  • + 100 + 105 + true + (0.5073743, 0, 0.06489658) + West +
  • +
  • + 130 + 101 + true + (0.5073743, 0, 0.06489658) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -12 + true + West +
  • +
  • + 20 + -20 + true + West +
  • +
  • + 40 + -12 + true + West +
  • +
  • + 130 + -26 + true + West +
  • + + + +
  • + RenderNodeTag_Hand + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (0.2772866, -0.5, 0.6135693) + North +
  • +
  • + 10 + 0 + true + (0.2890859, -0.5, 0.5663717) + North +
  • +
  • + 15 + 0 + true + (0.2182891, -0.5, 0.6666666) + North +
  • +
  • + 30 + 0 + true + (0.2831856, -0.5, 0.5781713) + North +
  • +
  • + 45 + 0 + true + (0.2064892, -0.5, 0.6430678) + North +
  • +
  • + 70 + 0 + false + (0.3303832, -0.5, 0.2654868) + North +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/DoublePenetration/GroupAnimation_DP.xml b/1.6/Defs/GroupAnimationDefs/DoublePenetration/GroupAnimation_DP.xml new file mode 100644 index 0000000..a5bdd8e --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/DoublePenetration/GroupAnimation_DP.xml @@ -0,0 +1,389 @@ + + + + GroupAnimation_DoublePenetration + 3 + +
  • + 1 + +
  • + 1 + +
  • InitiatorPawn_DP_Stage1
  • +
  • ReceiverPawn_DP_Stage1
  • +
  • InitiatorPawn2_DP_Stage1
  • + + + + + + +
  • + 6 + +
  • GroupAnimation_DP_Stage2_Branch1
  • +
  • GroupAnimation_DP_Stage2_Branch2
  • +
  • GroupAnimation_DP_Stage2_Branch3
  • +
  • GroupAnimation_DP_Stage2_Branch4
  • + + + +
  • + 25 + +
  • + 1 + +
  • InitiatorPawn_DP_Stage3
  • +
  • ReceiverPawn_DP_Stage3
  • +
  • InitiatorPawn2_DP_Stage3
  • + + + + + + +
  • + 30 + +
  • + 1 + +
  • InitiatorPawn_DP_Stage4
  • +
  • ReceiverPawn_DP_Stage4
  • +
  • InitiatorPawn2_DP_Stage4
  • + + + + + +
  • + 1 + +
  • GroupAnimation_DP_Stage5_Branch1
  • +
  • GroupAnimation_DP_Stage5_Branch2
  • +
  • GroupAnimation_DP_Stage5_Branch3
  • + + +
    + + +
  • + 1 + +
  • +
  • + +
  • +
  • + +
  • Sex_Reverse_DoublePenetration
  • +
  • Sex_Reverse_DoublePenetrationM
  • +
  • Sex_Reverse_Anal
  • +
  • Sex_Reverse_Vaginal
  • +
  • Rape_Reverse_DoublePenetration
  • +
  • Rape_Reverse_DoublePenetrationM
  • +
  • Rape_Reverse_Anal
  • +
  • Rape_Reverse_Vaginal
  • + + + + +
  • + +
  • +
  • + 1 + +
  • +
  • +
  • + +
  • +
  • + +
  • Sex_DoublePenetration
  • +
  • Sex_DoublePenetrationM
  • +
  • Sex_Anal
  • +
  • Sex_Vaginal
  • +
  • Rape_DoublePenetration
  • +
  • Rape_DoublePenetrationM
  • +
  • Rape_Anal
  • +
  • Rape_Vaginal
  • + + + + + + + + + + +
  • + 0 + +
  • + +
  • +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • + + + + +
    + + +
  • Offset_Placeholder
  • +
  • Offset_DP_ReceiverPawn
  • +
  • Offset_Placeholder
  • +
    + +
    + + + + + GroupAnimation_DP_Stage2_Branch1 + 3 + +
  • + 3 + +
  • + 1 + +
  • InitiatorPawn_DP_Stage2a
  • +
  • ReceiverPawn_DP_Stage2a
  • +
  • InitiatorPawn2_DP_Stage2a
  • + + + + + +
    + + +
  • Offset_Placeholder
  • +
  • Offset_DP_ReceiverPawn
  • +
  • Offset_Placeholder
  • +
    + +
    + + + GroupAnimation_DP_Stage2_Branch2 + 3 + +
  • + 3 + +
  • + 1 + +
  • InitiatorPawn_DP_Stage2b
  • +
  • ReceiverPawn_DP_Stage2b
  • +
  • InitiatorPawn2_DP_Stage2b
  • + + + + + +
    + + +
  • Offset_Placeholder
  • +
  • Offset_DP_ReceiverPawn
  • +
  • Offset_Placeholder
  • +
    + +
    + + + GroupAnimation_DP_Stage2_Branch3 + 3 + +
  • + 3 + +
  • + 1 + +
  • InitiatorPawn_DP_Stage2c
  • +
  • ReceiverPawn_DP_Stage2c
  • +
  • InitiatorPawn2_DP_Stage2c
  • + + + + + +
    + + +
  • Offset_Placeholder
  • +
  • Offset_DP_ReceiverPawn
  • +
  • Offset_Placeholder
  • +
    + +
    + + + GroupAnimation_DP_Stage2_Branch4 + 3 + +
  • + 1 + +
  • + 1 + +
  • InitiatorPawn_DP_Stage2a
  • +
  • ReceiverPawn_DP_Stage2a
  • +
  • InitiatorPawn2_DP_Stage2a
  • + + + + + +
  • + 1 + +
  • + 1 + +
  • InitiatorPawn_DP_Stage2d
  • +
  • ReceiverPawn_DP_Stage2d
  • +
  • InitiatorPawn2_DP_Stage2d
  • + + + + + + +
  • + 2 + +
  • + 1 + +
  • InitiatorPawn_DP_Stage2b
  • +
  • ReceiverPawn_DP_Stage2b
  • +
  • InitiatorPawn2_DP_Stage2b
  • + + + + + +
    + + +
  • Offset_Placeholder
  • +
  • Offset_DP_ReceiverPawn
  • +
  • Offset_Placeholder
  • +
    + +
    + + + GroupAnimation_DP_Stage5_Branch1 + 3 + +
  • + 1 + +
  • + 1 + +
  • InitiatorPawn_DP_Stage5a
  • +
  • ReceiverPawn_DP_Stage5a
  • +
  • InitiatorPawn2_DP_Stage5a
  • + + + + + +
    + + +
  • Offset_Placeholder
  • +
  • Offset_DP_ReceiverPawn
  • +
  • Offset_Placeholder
  • +
    + +
    + + + GroupAnimation_DP_Stage5_Branch2 + 3 + +
  • + 1 + +
  • + 1 + +
  • InitiatorPawn_DP_Stage5b
  • +
  • ReceiverPawn_DP_Stage5b
  • +
  • InitiatorPawn2_DP_Stage5b
  • + + + + + +
    + + +
  • Offset_Placeholder
  • +
  • Offset_DP_ReceiverPawn
  • +
  • Offset_Placeholder
  • +
    + +
    + + + GroupAnimation_DP_Stage5_Branch3 + 3 + +
  • + 1 + +
  • + 1 + +
  • InitiatorPawn_DP_Stage5c
  • +
  • ReceiverPawn_DP_Stage5c
  • +
  • InitiatorPawn2_DP_Stage5c
  • + + + + + +
    + + +
  • Offset_Placeholder
  • +
  • Offset_DP_ReceiverPawn
  • +
  • Offset_Placeholder
  • +
    + +
    + + + +
    diff --git a/1.6/Defs/GroupAnimationDefs/DoublePenetration/OffsetDef_DP.xml b/1.6/Defs/GroupAnimationDefs/DoublePenetration/OffsetDef_DP.xml new file mode 100644 index 0000000..3a15e52 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/DoublePenetration/OffsetDef_DP.xml @@ -0,0 +1,17 @@ + + + + Offset_DP_ReceiverPawn + +
  • + +
  • Human
  • + + +
  • Female(0.1, 0, -0.1)
  • +
  • Thin(0, 0, -0.15)-19
  • +
    + +
    +
    +
    diff --git a/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage1.xml b/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage1.xml new file mode 100644 index 0000000..055e2f6 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage1.xml @@ -0,0 +1,203 @@ + + + + InitiatorPawn_DP_Stage1 + 80 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -80 + true + (-0.6, -1, -0.42) + East +
  • +
  • + 20 + -82 + true + (-0.6, -1, -0.42) + East +
  • +
  • + 40 + -90 + true + (-0.6, -1, -0.37) + East + Fuck +
  • +
  • + 80 + -87 + true + (-0.6, -1, -0.37) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + East +
  • +
  • + 40 + 10 + true + East +
  • +
  • + 80 + 10 + true + East +
  • + + + +
    +
    + + ReceiverPawn_DP_Stage1 + 80 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -40 + true + (-0.6, 0, 0.15) + West + Grunt +
  • +
  • + 40 + -30 + true + (-0.4, 0, 0.1) + West +
  • +
  • + 80 + -30 + true + (-0.45, 0, 0.12) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + West +
  • +
  • + 40 + 0 + true + South +
  • +
  • + 80 + 0 + true + South +
  • + + + +
    +
    + + InitiatorPawn2_DP_Stage1 + 80 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -10 + true + (0.25, -1, 0.2) + West +
  • +
  • + 30 + 5 + true + (0.25, -1, 0.2) + West + Fuck +
  • +
  • + 40 + 25 + true + (0.2, -1, 0.2) + West +
  • +
  • + 80 + 20 + true + (0.2, -1, 0.2) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + West +
  • +
  • + 40 + -22 + true + West +
  • +
  • + 80 + -22 + true + West +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage2a.xml b/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage2a.xml new file mode 100644 index 0000000..ab954dc --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage2a.xml @@ -0,0 +1,178 @@ + + + + InitiatorPawn_DP_Stage2a + 40 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -87 + true + (-0.6, -1, -0.37) + East +
  • +
  • + 30 + -70 + true + (-0.6, -1, -0.37) + East + Fuck + Moan +
  • +
  • + 40 + -87 + true + (-0.6, -1, -0.37) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 10 + true + East +
  • +
  • + 30 + 0 + true + East +
  • +
  • + 40 + 10 + true + East +
  • + + + +
    +
    + + ReceiverPawn_DP_Stage2a + 40 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -30 + true + (-0.45, 0, 0.12) + West +
  • +
  • + 30 + -33 + true + (-0.4, 0, 0.1) + West + MoanShort +
  • +
  • + 40 + -30 + true + (-0.45, 0, 0.12) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + West +
  • + + + +
    +
    + + InitiatorPawn2_DP_Stage2a + 40 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 20 + true + (0.2, -1, 0.2) + West +
  • +
  • + 30 + -15 + true + (0.3, -1, 0.2) + West + Fuck +
  • +
  • + 40 + 20 + true + (0.2, -1, 0.2) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -22 + true + West +
  • +
  • + 30 + 0 + true + West +
  • +
  • + 40 + -22 + true + West +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage2b.xml b/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage2b.xml new file mode 100644 index 0000000..60ee1e8 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage2b.xml @@ -0,0 +1,178 @@ + + + + InitiatorPawn_DP_Stage2b + 40 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -87 + true + (-0.6, -1, -0.37) + East +
  • +
  • + 30 + -70 + true + (-0.6, -1, -0.37) + East + Fuck +
  • +
  • + 40 + -87 + true + (-0.6, -1, -0.37) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 10 + true + East +
  • +
  • + 30 + 0 + true + East +
  • +
  • + 40 + 10 + true + East +
  • + + + +
    +
    + + ReceiverPawn_DP_Stage2b + 40 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -30 + true + (-0.45, 0, 0.12) + West + MoanShort +
  • +
  • + 30 + -33 + true + (-0.4, 0, 0.1) + West +
  • +
  • + 40 + -30 + true + (-0.45, 0, 0.12) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + South +
  • + + + +
    +
    + + InitiatorPawn2_DP_Stage2b + 40 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 20 + true + (0.2, -1, 0.2) + West +
  • +
  • + 30 + -15 + true + (0.3, -1, 0.2) + West + Fuck + Moan +
  • +
  • + 40 + 20 + true + (0.2, -1, 0.2) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -22 + true + West +
  • +
  • + 30 + 0 + true + West +
  • +
  • + 40 + -22 + true + West +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage2c.xml b/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage2c.xml new file mode 100644 index 0000000..fa7d8cc --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage2c.xml @@ -0,0 +1,191 @@ + + + + InitiatorPawn_DP_Stage2c + 40 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -87 + true + (-0.6, -1, -0.37) + East +
  • +
  • + 15 + -70 + true + (-0.6, -1, -0.37) + East + Fuck +
  • +
  • + 20 + -83 + true + (-0.6, -1, -0.37) + East +
  • +
  • + 40 + -87 + true + (-0.6, -1, -0.37) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 10 + true + East +
  • +
  • + 15 + 0 + true + East +
  • +
  • + 40 + 10 + true + East +
  • + + + +
    +
    + + ReceiverPawn_DP_Stage2c + 40 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -30 + true + (-0.45, 0, 0.12) + West +
  • +
  • + 20 + -30 + true + (-0.38, 0, 0.08) + West + Grunt +
  • +
  • + 30 + -33 + true + (-0.4, 0, 0.1) + West +
  • +
  • + 40 + -30 + true + (-0.45, 0, 0.12) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + South +
  • + + + +
    +
    + + InitiatorPawn2_DP_Stage2c + 40 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 20 + true + (0.2, -1, 0.2) + West +
  • +
  • + 30 + -15 + true + (0.3, -1, 0.2) + West + Fuck +
  • +
  • + 40 + 20 + true + (0.2, -1, 0.2) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -22 + true + West +
  • +
  • + 30 + 0 + true + West +
  • +
  • + 40 + -22 + true + West +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage2d.xml b/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage2d.xml new file mode 100644 index 0000000..2cd98f9 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage2d.xml @@ -0,0 +1,234 @@ + + + + InitiatorPawn_DP_Stage2d + 40 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -87 + true + (-0.6, -1, -0.37) + East +
  • +
  • + 30 + -70 + true + (-0.6, -1, -0.37) + East + Fuck +
  • +
  • + 40 + -87 + true + (-0.6, -1, -0.37) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 10 + true + East +
  • +
  • + 30 + 0 + true + East +
  • +
  • + 40 + 10 + true + East +
  • + + + +
    +
    + + ReceiverPawn_DP_Stage2d + 40 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -30 + true + (-0.45, 0, 0.12) + West +
  • +
  • + 10 + -33 + true + (-0.48, 0, 0.12) + West +
  • +
  • + 15 + -39 + true + (-0.5743952, 0, 0.1317991) + West +
  • +
  • + 30 + -33 + true + (-0.4, 0, 0.1) + West +
  • +
  • + 40 + -30 + true + (-0.45, 0, 0.12) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + West +
  • +
  • + 15 + 0 + true + South + Scream +
  • + + + +
    +
    + + InitiatorPawn2_DP_Stage2d + 40 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 20 + true + (0.2, -1, 0.2) + West + Fuck +
  • +
  • + 30 + -15 + true + (0.3, -1, 0.2) + West +
  • +
  • + 40 + 20 + true + (0.2, -1, 0.2) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -22 + true + West +
  • +
  • + 30 + 0 + true + West +
  • +
  • + 40 + -22 + true + West +
  • + + + +
  • + RenderNodeTag_Hand + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (0.5, 1, 0) + North +
  • +
  • + 4 + 0 + true + (0, 1, -0.1) + North +
  • +
  • + 12 + 0 + true + (-0.1, 1, -0.03) + North + Slap +
  • +
  • + 15 + 0 + false + (-0.1, 1, -0.03) + North +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage3.xml b/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage3.xml new file mode 100644 index 0000000..33eeda1 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage3.xml @@ -0,0 +1,191 @@ + + + + InitiatorPawn_DP_Stage3 + 25 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -87 + true + (-0.6, -1, -0.37) + East +
  • +
  • + 15 + -50 + true + (-0.64, -1, -0.3) + East + Fuck + Moan +
  • +
  • + 25 + -87 + true + (-0.6, -1, -0.37) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 10 + true + East +
  • +
  • + 17 + -10 + true + East +
  • +
  • + 25 + 10 + true + East +
  • + + + +
    +
    + + ReceiverPawn_DP_Stage3 + 25 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -30 + true + (-0.45, 0, 0.12) + West +
  • +
  • + 6 + -25 + true + (-0.5, 0, 0.18) + West + Grunt +
  • +
  • + 25 + -30 + true + (-0.45, 0, 0.12) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + West +
  • +
  • + 20 + 5 + true + West +
  • +
  • + 25 + 0 + true + West +
  • + + + +
    +
    + + InitiatorPawn2_DP_Stage3 + 25 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 20 + true + (0.2, -1, 0.2) + West +
  • +
  • + 15 + -15 + true + (0.2, -1, 0.28) + West + Fuck + Moan +
  • +
  • + 25 + 20 + true + (0.2, -1, 0.2) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -22 + true + West +
  • +
  • + 17 + 0 + true + West +
  • +
  • + 25 + -22 + true + West +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage4.xml b/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage4.xml new file mode 100644 index 0000000..363b6dc --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage4.xml @@ -0,0 +1,191 @@ + + + + InitiatorPawn_DP_Stage4 + 17 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -87 + true + (-0.6, -1, -0.37) + East +
  • +
  • + 8 + -60 + true + (-0.64, -1, -0.4) + East + Fuck +
  • +
  • + 17 + -87 + true + (-0.6, -1, -0.37) + East + Grunt +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 10 + true + East +
  • +
  • + 8 + -10 + true + East +
  • +
  • + 17 + 10 + true + East +
  • + + + +
    +
    + + ReceiverPawn_DP_Stage4 + 17 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -30 + true + (-0.45, 0, 0.12) + West +
  • +
  • + 12 + -25 + true + (-0.56, 0, 0.22) + West + Grunt +
  • +
  • + 17 + -30 + true + (-0.45, 0, 0.12) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + West +
  • +
  • + 8 + -8 + true + West +
  • +
  • + 17 + 0 + true + West +
  • + + + +
    +
    + + InitiatorPawn2_DP_Stage4 + 17 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 20 + true + (0.2, -1, 0.2) + West +
  • +
  • + 8 + 0 + true + (0.23, -1, 0.28) + West + Fuck + MoanShort +
  • +
  • + 17 + 20 + true + (0.2, -1, 0.2) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -22 + true + West +
  • +
  • + 8 + 0 + true + West +
  • +
  • + 17 + -22 + true + West +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage5_Base.xml b/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage5_Base.xml new file mode 100644 index 0000000..9a800d4 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage5_Base.xml @@ -0,0 +1,248 @@ + + + + + \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage5a.xml b/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage5a.xml new file mode 100644 index 0000000..6e4937c --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage5a.xml @@ -0,0 +1,293 @@ + + + + InitiatorPawn_DP_Stage5a + 180 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -87 + true + (-0.6, -1, -0.37) + East +
  • +
  • + 17 + -68 + true + (-0.6, -1, -0.37) + East +
  • +
  • + 25 + -95 + true + (-0.6, -1, -0.37) + East + Fuck +
  • +
  • + 50 + -90 + true + (-0.6, -1, -0.37) + East + Cum +
  • +
  • + 55 + -95 + true + (-0.6, -1, -0.37) + East +
  • +
  • + 100 + -90 + true + (-0.6, -1, -0.37) + East + Cum + Scream +
  • +
  • + 105 + -95 + true + (-0.6, -1, -0.37) + East +
  • +
  • + 180 + -90 + true + (-0.6, -1, -0.37) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 10 + true + East +
  • +
  • + 18 + 20 + true + East +
  • +
  • + 180 + 10 + true + East +
  • + + + +
    +
    + + ReceiverPawn_DP_Stage5a + 180 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -30 + true + (-0.45, 0, 0.12) + West +
  • +
  • + 18 + -40 + true + (-0.45, 0, 0.12) + West + Scream +
  • +
  • + 60 + -35 + true + (-0.55, 0, 0.12) + West +
  • +
  • + 80 + -38 + true + (-0.55, 0, 0.12) + West +
  • +
  • + 100 + -40 + true + (-0.55, 0, 0.12) + West + Scream +
  • +
  • + 180 + -30 + true + (-0.45, 0, 0.12) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + West +
  • +
  • + 60 + 10 + true + West +
  • +
  • + 70 + 30 + true + West +
  • +
  • + 180 + 10 + true + West +
  • + + + +
    +
    + + InitiatorPawn2_DP_Stage5a + 180 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 20 + true + (0.2, -1, 0.2) + West +
  • +
  • + 18 + -10 + true + (0.33, -1, 0.2) + West +
  • +
  • + 23 + 28 + true + (0.16, -1, 0.2) + West + Fuck +
  • +
  • + 70 + 20 + true + (0.16, -1, 0.2) + West + Cum +
  • +
  • + 75 + 28 + true + (0.16, -1, 0.2) + West +
  • +
  • + 130 + 20 + true + (0.16, -1, 0.2) + West + Cum + Grunt +
  • +
  • + 135 + 28 + true + (0.16, -1, 0.2) + West +
  • +
  • + 180 + 20 + true + (0.16, -1, 0.2) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -22 + true + West +
  • +
  • + 17 + -10 + true + West +
  • +
  • + 180 + -22 + true + West +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage5b.xml b/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage5b.xml new file mode 100644 index 0000000..8842f17 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage5b.xml @@ -0,0 +1,281 @@ + + + + InitiatorPawn_DP_Stage5b + 180 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -87 + true + (-0.6, -1, -0.37) + East +
  • +
  • + 17 + -68 + true + (-0.6, -1, -0.37) + East + Fuck +
  • +
  • + 25 + -95 + true + (-0.6, -1, -0.37) + East +
  • +
  • + 50 + -90 + true + (-0.6, -1, -0.37) + East + Cum +
  • +
  • + 55 + -95 + true + (-0.6, -1, -0.37) + East + Moan +
  • +
  • + 100 + -90 + true + (-0.6, -1, -0.37) + East + Cum +
  • +
  • + 105 + -95 + true + (-0.6, -1, -0.37) + East +
  • +
  • + 180 + -90 + true + (-0.6, -1, -0.37) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 10 + true + East +
  • +
  • + 18 + 20 + true + East +
  • +
  • + 180 + 10 + true + East +
  • + + + +
    +
    + + ReceiverPawn_DP_Stage5b + 180 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -30 + true + (-0.45, 0, 0.12) + West +
  • +
  • + 18 + -40 + true + (-0.45, 0, 0.12) + West + Scream +
  • +
  • + 60 + -35 + true + (-0.55, 0, 0.12) + West +
  • +
  • + 100 + -60 + true + (-0.6, 0, 0) + West + Scream +
  • +
  • + 180 + -60 + true + (-0.6, 0, -0.02) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + West +
  • +
  • + 70 + 30 + true + South +
  • +
  • + 180 + 10 + true + South +
  • + + + +
    +
    + + InitiatorPawn2_DP_Stage5b + 180 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 20 + true + (0.2, -1, 0.2) + West +
  • +
  • + 18 + -10 + true + (0.33, -1, 0.2) + West + Fuck +
  • +
  • + 23 + 28 + true + (0.16, -1, 0.2) + West + Grunt +
  • +
  • + 70 + 20 + true + (0.16, -1, 0.2) + West + Cum +
  • +
  • + 75 + 28 + true + (0.16, -1, 0.2) + West + Grunt +
  • +
  • + 130 + 20 + true + (0.16, -1, 0.2) + West + Cum +
  • +
  • + 135 + 28 + true + (0.16, -1, 0.2) + West +
  • +
  • + 180 + 20 + true + (0.16, -1, 0.2) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -22 + true + West +
  • +
  • + 17 + -10 + true + West +
  • +
  • + 180 + -22 + true + West +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage5c.xml b/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage5c.xml new file mode 100644 index 0000000..a2a57de --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage5c.xml @@ -0,0 +1,330 @@ + + + + InitiatorPawn_DP_Stage5c + 180 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -87 + true + (-0.6, -1, -0.37) + East +
  • +
  • + 17 + -68 + true + (-0.6, -1, -0.37) + East + Fuck +
  • +
  • + 25 + -95 + true + (-0.6, -1, -0.37) + East +
  • +
  • + 50 + -90 + true + (-0.6, -1, -0.37) + East + Cum +
  • +
  • + 55 + -95 + true + (-0.6, -1, -0.37) + East + Grunt +
  • +
  • + 100 + -90 + true + (-0.6, -1, -0.37) + East + Cum +
  • +
  • + 105 + -95 + true + (-0.6, -1, -0.37) + East +
  • +
  • + 180 + -90 + true + (-0.6, -1, -0.37) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 10 + true + East +
  • +
  • + 18 + 20 + true + East +
  • +
  • + 180 + 10 + true + East +
  • + + + +
    +
    + + ReceiverPawn_DP_Stage5c + 180 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -30 + true + (-0.45, 0, 0.12) + West +
  • +
  • + 18 + -40 + true + (-0.45, 0, 0.12) + West +
  • +
  • + 23 + -30 + true + (-0.45, 0, 0.12) + West + Scream +
  • +
  • + 60 + -35 + true + (-0.5, 0, 0.12) + West + Scream +
  • +
  • + 65 + -30 + true + (-0.5, 0, 0.12) + West +
  • +
  • + 100 + -35 + true + (-0.5, 0, 0.12) + West +
  • +
  • + 105 + -30 + true + (-0.5, 0, 0.12) + West +
  • +
  • + 140 + -35 + true + (-0.5, 0, 0.12) + West + Scream +
  • +
  • + 180 + -25 + true + (-0.5, 0, 0.18) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + West +
  • +
  • + 30 + 25 + true + (0, 0, -0.06) + West +
  • +
  • + 90 + 30 + true + (0, 0, -0.06) + West +
  • +
  • + 105 + 50 + true + (0, 0, -0.06) + West +
  • +
  • + 160 + 46 + true + West +
  • +
  • + 180 + 0 + true + West +
  • + + + +
    +
    + + InitiatorPawn2_DP_Stage5c + 180 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 20 + true + (0.2, -1, 0.2) + West +
  • +
  • + 18 + -10 + true + (0.33, -1, 0.2) + West + Fuck +
  • +
  • + 23 + 28 + true + (0.16, -1, 0.2) + West +
  • +
  • + 70 + 20 + true + (0.16, -1, 0.2) + West + Cum +
  • +
  • + 75 + 28 + true + (0.16, -1, 0.2) + West + Grunt +
  • +
  • + 130 + 20 + true + (0.16, -1, 0.2) + West + Cum +
  • +
  • + 135 + 28 + true + (0.16, -1, 0.2) + West +
  • +
  • + 180 + 20 + true + (0.16, -1, 0.2) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -22 + true + West +
  • +
  • + 17 + -10 + true + West +
  • +
  • + 180 + -22 + true + West +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Missionary/GroupAnimation_Missionary.xml b/1.6/Defs/GroupAnimationDefs/Missionary/GroupAnimation_Missionary.xml new file mode 100644 index 0000000..a9702dd --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Missionary/GroupAnimation_Missionary.xml @@ -0,0 +1,248 @@ + + + + GroupAnimation_Missionary + 2 + +
  • + 1 + +
  • + 1 + +
  • InitiatorPawn_Missionary_Stage1
  • +
  • ReceiverPawn_Missionary_Stage1
  • + + + + + + +
  • + 5 + +
  • Missionary_Stage2_Branch1
  • +
  • Missionary_Stage2_Branch2
  • +
  • Missionary_Stage2_Branch3
  • + + + + +
  • + 1 + +
  • + 1 + +
  • InitiatorPawn_Missionary_Stage3
  • +
  • ReceiverPawn_Missionary_Stage3
  • + + + + + + +
  • + 20 + +
  • + 1 + +
  • InitiatorPawn_Missionary_Stage4
  • +
  • ReceiverPawn_Missionary_Stage4
  • + + + + + + +
  • + 35 + +
  • + 1 + +
  • InitiatorPawn_Missionary_Stage5
  • +
  • ReceiverPawn_Missionary_Stage5
  • + + + + + + +
  • + 1 + +
  • + 1 + +
  • InitiatorPawn_Missionary_Stage6
  • +
  • ReceiverPawn_Missionary_Stage6
  • + + + + + + +
    + + +
  • + 1 + + +
  • + +
  • +
  • + +
  • Sex_Anal
  • +
  • Sex_Vaginal
  • +
  • Sex_Footjob
  • +
  • Rape_Vaginal
  • +
  • Rape_Anal
  • + + + + + + +
  • + +
  • + +
  • + 1 + + + +
  • + + +
  • + +
  • +
  • + +
  • Sex_Reverse_Anal
  • +
  • Sex_Reverse_Vaginal
  • +
  • Sex_Reverse_Footjob
  • +
  • Rape_Reverse_Anal
  • +
  • Rape_Reverse_Vaginal
  • +
  • Rape_Reverse_Footjob
  • + + + + + + + + + +
  • + 0 + + +
  • + +
  • +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • + + + + +
    + +
  • Offset_Missionary_Initiator
  • +
  • Offset_Missionary_Receiver
  • +
    + +
    + + + Missionary_Stage2_Branch1 + 2 + +
  • + 3 + +
  • + 1 + +
  • InitiatorPawn_Missionary_Stage2a
  • +
  • ReceiverPawn_Missionary_Stage2a
  • + + + + + +
    + + +
  • Offset_Missionary_Initiator
  • +
  • Offset_Missionary_Receiver
  • +
    + +
    + + + Missionary_Stage2_Branch2 + 2 + +
  • + 3 + +
  • + 1 + +
  • InitiatorPawn_Missionary_Stage2b
  • +
  • ReceiverPawn_Missionary_Stage2b
  • + + + + + +
    + + +
  • Offset_Missionary_Initiator
  • +
  • Offset_Missionary_Receiver
  • +
    + +
    + + + Missionary_Stage2_Branch3 + 2 + +
  • + 3 + +
  • + 1 + +
  • InitiatorPawn_Missionary_Stage2c
  • +
  • ReceiverPawn_Missionary_Stage2c
  • + + + + + +
    + + +
  • Offset_Missionary_Initiator
  • +
  • Offset_Missionary_Receiver
  • +
    + +
    +
    diff --git a/1.6/Defs/GroupAnimationDefs/Missionary/OffsetDef_Missionary.xml b/1.6/Defs/GroupAnimationDefs/Missionary/OffsetDef_Missionary.xml new file mode 100644 index 0000000..0328903 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Missionary/OffsetDef_Missionary.xml @@ -0,0 +1,32 @@ + + + + Offset_Missionary_Receiver + +
  • + +
  • Human
  • + + +
  • Thin(-0.1, 0, 0.05)
  • +
  • Female(0, 0, 0)
  • +
  • Hulk(0.1, 0, 0.1)
  • +
    + +
    +
    + + + Offset_Missionary_Initiator + +
  • + +
  • Human
  • + + +
  • Hulk(0, 0, 0.179)
  • +
    + +
    +
    +
    diff --git a/1.6/Defs/GroupAnimationDefs/Missionary/Stage1.xml b/1.6/Defs/GroupAnimationDefs/Missionary/Stage1.xml new file mode 100644 index 0000000..3d76c06 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Missionary/Stage1.xml @@ -0,0 +1,184 @@ + + + + InitiatorPawn_Missionary_Stage1 + 100 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (-0.85, 0, 0.5) + East +
  • +
  • + 30 + 0 + true + (-0.79, 0, 0.44) + East +
  • +
  • + 60 + 20 + true + (-0.75, 0, 0.38) + East + Fuck + Grunt +
  • +
  • + 66 + -10 + true + (-0.6, 0, 0.38) + East +
  • +
  • + 100 + 10 + true + (-0.75, 0, 0.38) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + East +
  • +
  • + 40 + 13 + true + East +
  • +
  • + 100 + 3 + true + East +
  • + + + +
  • + RimNude_Penis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + true + (0, -3, 0) + East +
  • +
  • + 20 + 0 + true + (0, -3, 0) + East +
  • +
  • + 60 + 30 + true + (0, -3, 0) + East +
  • + + + +
    +
    + + ReceiverPawn_Missionary_Stage1 + 100 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 90 + true + (0, -1, 0) + West +
  • +
  • + 60 + 90 + true + (0.03, -1, 0) + West +
  • +
  • + 66 + 90 + true + (0.1, -1, 0) + West + Grunt +
  • +
  • + 100 + 90 + true + (0.03, -1, 0) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -15 + true + West +
  • +
  • + 60 + -20 + true + West +
  • +
  • + 66 + 0 + true + West +
  • +
  • + 100 + -20 + true + West +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Missionary/Stage2.xml b/1.6/Defs/GroupAnimationDefs/Missionary/Stage2.xml new file mode 100644 index 0000000..2d2479e --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Missionary/Stage2.xml @@ -0,0 +1,164 @@ + + + + InitiatorPawn_Missionary_Stage2a + 35 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 10 + true + (-0.75, 0, 0.38) + East + Fuck +
  • +
  • + 5 + -25 + true + (-0.6, 0, 0.38) + East + Moan +
  • +
  • + 35 + 10 + true + (-0.75, 0, 0.38) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 3 + true + East +
  • +
  • + 5 + 20 + true + East +
  • +
  • + 35 + 3 + true + East +
  • + + + +
  • + RimNude_Penis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 30 + true + (0, -3, 0) + East +
  • +
  • + 5 + 60 + true + (0, -3, 0) + East +
  • +
  • + 35 + 30 + true + (0, -3, 0) + East +
  • + + + +
    +
    + + ReceiverPawn_Missionary_Stage2a + 35 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 90 + true + (0.03, -1, 0) + West +
  • +
  • + 3 + 90 + true + (0.03, -1, 0) + West + Moan +
  • +
  • + 10 + 88 + true + (0.12, -1, 0.03) + West +
  • +
  • + 35 + 90 + true + (0.03, -1, 0) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -20 + true + West +
  • +
  • + 10 + -10 + true + West +
  • +
  • + 35 + -20 + true + West +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Missionary/Stage2b.xml b/1.6/Defs/GroupAnimationDefs/Missionary/Stage2b.xml new file mode 100644 index 0000000..b7817a4 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Missionary/Stage2b.xml @@ -0,0 +1,164 @@ + + + + InitiatorPawn_Missionary_Stage2b + 35 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 10 + true + (-0.75, 0, 0.38) + East + Fuck +
  • +
  • + 5 + -25 + true + (-0.6, 0, 0.38) + East + Moan +
  • +
  • + 35 + 10 + true + (-0.75, 0, 0.38) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 3 + true + East +
  • +
  • + 5 + 20 + true + East +
  • +
  • + 35 + 3 + true + East +
  • + + + +
  • + RimNude_Penis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 30 + true + (0, -3, 0) + East +
  • +
  • + 5 + 60 + true + (0, -3, 0) + East +
  • +
  • + 35 + 30 + true + (0, -3, 0) + East +
  • + + + +
    +
    + + ReceiverPawn_Missionary_Stage2b + 35 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 90 + true + (0.03, -1, 0) + West +
  • +
  • + 3 + 90 + true + (0.03, -1, 0) + West + Moan +
  • +
  • + 10 + 88 + true + (0.12, -1, 0.03) + West +
  • +
  • + 35 + 90 + true + (0.03, -1, 0) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -20 + true + South +
  • +
  • + 10 + -17 + true + South +
  • +
  • + 35 + -20 + true + South +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Missionary/Stage2c.xml b/1.6/Defs/GroupAnimationDefs/Missionary/Stage2c.xml new file mode 100644 index 0000000..b4179bf --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Missionary/Stage2c.xml @@ -0,0 +1,164 @@ + + + + InitiatorPawn_Missionary_Stage2c + 35 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 10 + true + (-0.75, 0, 0.38) + East + Fuck +
  • +
  • + 5 + -25 + true + (-0.6, 0, 0.38) + East + Moan +
  • +
  • + 35 + 10 + true + (-0.75, 0, 0.38) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 3 + true + East +
  • +
  • + 5 + 20 + true + East +
  • +
  • + 35 + 3 + true + East +
  • + + + +
  • + RimNude_Penis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 30 + true + (0, -3, 0) + East +
  • +
  • + 5 + 60 + true + (0, -3, 0) + East +
  • +
  • + 35 + 30 + true + (0, -3, 0) + East +
  • + + + +
    +
    + + ReceiverPawn_Missionary_Stage2c + 35 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 90 + true + (0.03, -1, 0) + West +
  • +
  • + 3 + 90 + true + (0.03, -1, 0) + West +
  • +
  • + 10 + 88 + true + (0.12, -1, 0.03) + West + Moan +
  • +
  • + 35 + 90 + true + (0.03, -1, 0) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -20 + true + North +
  • +
  • + 10 + -17 + true + North +
  • +
  • + 35 + -20 + true + North +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Missionary/Stage3_DontLoop.xml b/1.6/Defs/GroupAnimationDefs/Missionary/Stage3_DontLoop.xml new file mode 100644 index 0000000..1bcde62 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Missionary/Stage3_DontLoop.xml @@ -0,0 +1,131 @@ + + + + InitiatorPawn_Missionary_Stage3 + 35 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 10 + true + (-0.75, 0, 0.38) + (1, 1, 1) + East +
  • +
  • + 35 + 15 + true + (-0.65, 0, 0.42) + (1, 1, 1) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 3 + true + (1, 1, 1) + East +
  • +
  • + 35 + 20 + true + (1, 1, 1) + East +
  • + + + +
  • + RimNude_Penis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 30 + true + (1, 1, 1) + (0, -3, 0) + East +
  • +
  • + 35 + 30 + true + (1, 1, 1) + (0, -3, 0) + East +
  • + + + +
    +
    + + ReceiverPawn_Missionary_Stage3 + 35 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 90 + true + (0.03, -1, 0) + (1, 1, 1) + West +
  • +
  • + 35 + 95 + true + (0.07, -1, 0) + (1, 1, 1) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -20 + true + (1, 1, 1) + West +
  • +
  • + 35 + -20 + true + (1, 1, 1) + West +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Missionary/Stage4.xml b/1.6/Defs/GroupAnimationDefs/Missionary/Stage4.xml new file mode 100644 index 0000000..b36dddf --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Missionary/Stage4.xml @@ -0,0 +1,143 @@ + + + + InitiatorPawn_Missionary_Stage4 + 20 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 15 + true + (-0.65, 0, 0.42) + East + Fuck +
  • +
  • + 5 + 0 + true + (-0.42, 0, 0.42) + East + MoanShort +
  • +
  • + 20 + 15 + true + (-0.65, 0, 0.42) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 20 + true + East +
  • +
  • + 5 + 30 + true + East +
  • +
  • + 20 + 20 + true + East +
  • + + + +
  • + RimNude_Penis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 35 + 30 + true + (0, -3, 0) + East +
  • + + + +
    +
    + + ReceiverPawn_Missionary_Stage4 + 20 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 95 + true + (0.07, -1, 0) + West +
  • +
  • + 5 + 100 + true + (0.2, -1, 0) + West + MoanShort +
  • +
  • + 20 + 95 + true + (0.07, -1, 0) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -20 + true + West +
  • +
  • + 13 + -26 + true + West +
  • +
  • + 20 + -20 + true + West +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Missionary/Stage5.xml b/1.6/Defs/GroupAnimationDefs/Missionary/Stage5.xml new file mode 100644 index 0000000..ac7357c --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Missionary/Stage5.xml @@ -0,0 +1,143 @@ + + + + InitiatorPawn_Missionary_Stage5 + 13 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 15 + true + (-0.65, 0, 0.42) + East + Fuck +
  • +
  • + 5 + 0 + true + (-0.45, 0, 0.42) + East + Grunt +
  • +
  • + 13 + 15 + true + (-0.65, 0, 0.42) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 20 + true + East +
  • +
  • + 5 + 40 + true + East +
  • +
  • + 20 + 20 + true + East +
  • + + + +
  • + RimNude_Penis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 35 + 30 + true + (0, -3, 0) + East +
  • + + + +
    +
    + + ReceiverPawn_Missionary_Stage5 + 13 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 95 + true + (0.07, -1, 0) + West +
  • +
  • + 3 + 100 + true + (0.16, -1, 0) + West + Grunt +
  • +
  • + 13 + 95 + true + (0.07, -1, 0) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -20 + true + West +
  • +
  • + 3 + -34 + true + West +
  • +
  • + 13 + -20 + true + West +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/Missionary/Stage6.xml b/1.6/Defs/GroupAnimationDefs/Missionary/Stage6.xml new file mode 100644 index 0000000..e56067a --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/Missionary/Stage6.xml @@ -0,0 +1,211 @@ + + + + InitiatorPawn_Missionary_Stage6 + 200 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 15 + true + (-0.65, 0, 0.42) + East +
  • +
  • + 13 + -20 + true + (-0.43, 0, 0.42) + East + Fuck + Scream +
  • +
  • + 80 + -15 + true + (-0.49, 0, 0.42) + East + Cum +
  • +
  • + 85 + -20 + true + (-0.43, 0, 0.42) + East +
  • +
  • + 150 + -15 + true + (-0.49, 0, 0.42) + East + Cum +
  • +
  • + 155 + -20 + true + (-0.43, 0, 0.42) + East + Scream +
  • +
  • + 200 + -15 + true + (-0.49, 0, 0.42) + East +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 20 + true + East +
  • +
  • + 40 + 25 + true + East +
  • +
  • + 200 + 30 + true + East +
  • + + + +
  • + RimNude_Penis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 30 + true + (0, -3, 0) + East +
  • +
  • + 13 + 60 + true + (0, -3, 0) + East +
  • + + + +
    +
    + + ReceiverPawn_Missionary_Stage6 + 200 + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 95 + true + (0.07, -1, 0) + West +
  • +
  • + 13 + 100 + true + (0.23, -1, 0) + West + Scream +
  • +
  • + 80 + 100 + true + (0.2, -1, 0) + West + Scream +
  • +
  • + 85 + 100 + true + (0.23, -1, 0) + West +
  • +
  • + 150 + 100 + true + (0.2, -1, 0) + West + Scream +
  • +
  • + 155 + 100 + true + (0.23, -1, 0) + West +
  • +
  • + 200 + 100 + true + (0.2, -1, 0) + West +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -20 + true + West +
  • +
  • + 100 + -10 + true + West +
  • +
  • + 200 + -23 + true + West +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/TestAnimation/ConditionalPathExample b/1.6/Defs/GroupAnimationDefs/TestAnimation/ConditionalPathExample new file mode 100644 index 0000000..30402af --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/TestAnimation/ConditionalPathExample @@ -0,0 +1,25 @@ + + + + diff --git a/1.6/Defs/GroupAnimationDefs/TestAnimation/TestAnimation1.xml b/1.6/Defs/GroupAnimationDefs/TestAnimation/TestAnimation1.xml new file mode 100644 index 0000000..a0be981 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/TestAnimation/TestAnimation1.xml @@ -0,0 +1,135 @@ + + + + TestAnimation1 + 400 + False + + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + Fuck + 30 + 0 + true +
  • +
  • + 100 + 0 + true +
  • +
  • + 200 + 0 + true +
  • +
  • + 300 + 0 + true +
  • + + + +
  • + Body + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + North + true +
  • +
  • + 50 + 0 + South + true +
  • +
  • + 100 + 30 + East + true +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + North + true +
  • +
  • + 2 + 0 + East + true +
  • +
  • + 4 + 0 + South + true +
  • +
  • + 6 + 0 + West + false +
  • +
  • + 8 + 0 + North + false +
  • + + + +
  • + RenderNodeTag_Xray_Inside + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 30 + 0 + true +
  • +
  • + 1 + 100 + 0 + false +
  • +
  • + 1 + 200 + 0 + true +
  • +
  • + 1 + 300 + 0 + true +
  • + + + +
    +
    +
    diff --git a/1.6/Defs/GroupAnimationDefs/TestAnimation/TestAnimation2.xml b/1.6/Defs/GroupAnimationDefs/TestAnimation/TestAnimation2.xml new file mode 100644 index 0000000..07f70d3 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/TestAnimation/TestAnimation2.xml @@ -0,0 +1,76 @@ + + + + TestAnimation2 + 400 + False + False + + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + 0 + South +
  • +
  • + 100 + 45 + South +
  • +
  • + 0 + (-0.73, 0, -0.02) + 0 + East +
  • +
  • + 200 + 90 + South +
  • +
  • + 300 + 135 + South +
  • + + + + +
    +
    +
    diff --git a/1.6/Defs/GroupAnimationDefs/TestAnimation/TestAnimation3.xml b/1.6/Defs/GroupAnimationDefs/TestAnimation/TestAnimation3.xml new file mode 100644 index 0000000..11a6623 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/TestAnimation/TestAnimation3.xml @@ -0,0 +1,133 @@ + + + + TestAnimation3 + 400 + False + + +
  • + Root + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + Fuck + 30 + 90 + East + true +
  • +
  • + 100 + 80 + East + true +
  • +
  • + 200 + 90 + East + true +
  • +
  • + 300 + 80 + East + true +
  • + + + +
  • + Head + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -30 + East + true +
  • + + + +
  • + RenderNodeTag_Knees + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 1 + 0 + 0 + true +
  • +
  • + 1 + 200 + 3 + true +
  • +
  • + 1 + 400 + 0 + true +
  • + + + +
  • + RenderNodeTag_Arms + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 1 + 0 + 0 + true +
  • + +
  • + 1 + 200 + 3 + true +
  • + +
  • + 1 + 400 + 0 + true +
  • + + + + +
  • + RimNude_Penis + + Rimworld_Animations.AnimationWorker_KeyframesExtended + +
  • + 0 + -30 + true + East +
  • +
  • + 400 + -600 + true + East +
  • + + + +
    +
    +
    \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/TestAnimation/TestGroupAnimation1.xml b/1.6/Defs/GroupAnimationDefs/TestAnimation/TestGroupAnimation1.xml new file mode 100644 index 0000000..a9cd0b5 --- /dev/null +++ b/1.6/Defs/GroupAnimationDefs/TestAnimation/TestGroupAnimation1.xml @@ -0,0 +1,71 @@ + + + + TestGroupAnimation1 + 2 + +
  • + 10 + +
  • + 3 + +
  • TestAnimation2
  • +
  • TestAnimation2
  • + + + +
  • + 1 + +
  • TestAnimation2
  • +
  • TestAnimation2
  • + + + + + + + +
    + + + +
  • GroinToAppropriateHeight
  • +
  • GroinToAppropriateHeight
  • +
    + +
    +
    diff --git a/1.2/Defs/MainTabDefs/MainButtonDef.xml b/1.6/Defs/MainTabDefs/MainButtonDef.xml similarity index 75% rename from 1.2/Defs/MainTabDefs/MainButtonDef.xml rename to 1.6/Defs/MainTabDefs/MainButtonDef.xml index 0674d24..24be191 100644 --- a/1.2/Defs/MainTabDefs/MainButtonDef.xml +++ b/1.6/Defs/MainTabDefs/MainButtonDef.xml @@ -3,8 +3,8 @@ OffsetManager - - Control pawn offsets + + Edit pawn offsets for animations. Rimworld_Animations.MainTabWindow_OffsetConfigure 54 false diff --git a/1.6/Defs/OffsetDefs/OffsetDef_GroinToAppropriateHeight.xml b/1.6/Defs/OffsetDefs/OffsetDef_GroinToAppropriateHeight.xml new file mode 100644 index 0000000..60f7a54 --- /dev/null +++ b/1.6/Defs/OffsetDefs/OffsetDef_GroinToAppropriateHeight.xml @@ -0,0 +1,47 @@ + + + + GroinToAppropriateHeight + + + + + + \ No newline at end of file diff --git a/1.6/Defs/OffsetDefs/OffsetDef_Placeholder.xml b/1.6/Defs/OffsetDefs/OffsetDef_Placeholder.xml new file mode 100644 index 0000000..4e88661 --- /dev/null +++ b/1.6/Defs/OffsetDefs/OffsetDef_Placeholder.xml @@ -0,0 +1,10 @@ + + + + + + Offset_Placeholder + + + + diff --git a/1.4/Defs/SoundDefs/Sounds_Sex.xml b/1.6/Defs/SoundDefs/Sounds_Sex.xml similarity index 70% rename from 1.4/Defs/SoundDefs/Sounds_Sex.xml rename to 1.6/Defs/SoundDefs/Sounds_Sex.xml index f05a1a8..b42fc01 100644 --- a/1.4/Defs/SoundDefs/Sounds_Sex.xml +++ b/1.6/Defs/SoundDefs/Sounds_Sex.xml @@ -5,8 +5,8 @@ Cum MapOnly - 1 - 1 + 5 + 5
  • @@ -34,8 +34,8 @@ Sex MapOnly - 1 - 1 + 5 + 5
  • @@ -63,8 +63,8 @@ Suck MapOnly - 1 - 1 + 5 + 5
  • @@ -83,21 +83,21 @@
  • Sex/Suck/Suck_5
  • -
  • - Sex/Suck/Suck_6 -
  • -
  • - Sex/Suck/Suck_7 -
  • -
  • - Sex/Suck/Suck_8 -
  • -
  • - Sex/Suck/Suck_9 -
  • -
  • - Sex/Suck/Suck_10 -
  • +
  • + Sex/Suck/Suck_6 +
  • +
  • + Sex/Suck/Suck_7 +
  • +
  • + Sex/Suck/Suck_8 +
  • +
  • + Sex/Suck/Suck_9 +
  • +
  • + Sex/Suck/Suck_10 +
  • 20 @@ -120,8 +120,8 @@ Fuck MapOnly - 1 - 1 + 5 + 5
  • @@ -150,10 +150,7 @@ Sex/Clap_8
  • - - 45 - 70 - + 35~45 1.0 1.0 @@ -171,8 +168,8 @@ Slimy MapOnly - 1 - 1 + 5 + 5
  • @@ -209,4 +206,46 @@
  • + + Slap + MapOnly + + 5 + 5 + +
  • + +
  • + Sex/Slap/Slap_1 +
  • +
  • + Sex/Slap/Slap_2 +
  • +
  • + Sex/Slap/Slap_3 +
  • +
  • + Sex/Slap/Slap_4 +
  • +
  • + Sex/Slap/Slap_5 +
  • + + + 75 + 85 + + + 0.8 + 1.2 + + + 0 + 100 + + NeverTwice + false + +
    +
    \ No newline at end of file diff --git a/1.6/Defs/TexPathVariantsDefs/TexPathVariants_Arms.xml b/1.6/Defs/TexPathVariantsDefs/TexPathVariants_Arms.xml new file mode 100644 index 0000000..d582b7b --- /dev/null +++ b/1.6/Defs/TexPathVariantsDefs/TexPathVariants_Arms.xml @@ -0,0 +1,10 @@ + + + + TexPathVariants_Arms + +
  • AnimationProps/Doggystyle/Doggy_Arms
  • +
    +
    + +
    \ No newline at end of file diff --git a/1.6/Defs/TexPathVariantsDefs/TexPathVariants_Cat.xml b/1.6/Defs/TexPathVariantsDefs/TexPathVariants_Cat.xml new file mode 100644 index 0000000..474aca4 --- /dev/null +++ b/1.6/Defs/TexPathVariantsDefs/TexPathVariants_Cat.xml @@ -0,0 +1,11 @@ + + + + TexPathVariants_Cat + +
  • AnimationProps/Cat/Cat1
  • +
  • AnimationProps/Cat/Cat2
  • +
    +
    + +
    \ No newline at end of file diff --git a/1.6/Defs/TexPathVariantsDefs/TexPathVariants_Knees.xml b/1.6/Defs/TexPathVariantsDefs/TexPathVariants_Knees.xml new file mode 100644 index 0000000..5f368ee --- /dev/null +++ b/1.6/Defs/TexPathVariantsDefs/TexPathVariants_Knees.xml @@ -0,0 +1,10 @@ + + + + TexPathVariants_Knees + +
  • AnimationProps/Doggystyle/Doggy_Legs
  • +
    +
    + +
    \ No newline at end of file diff --git a/1.6/Defs/TexPathVariantsDefs/TexPathVariants_XrayPenis_Horse.xml b/1.6/Defs/TexPathVariantsDefs/TexPathVariants_XrayPenis_Horse.xml new file mode 100644 index 0000000..3b14154 --- /dev/null +++ b/1.6/Defs/TexPathVariantsDefs/TexPathVariants_XrayPenis_Horse.xml @@ -0,0 +1,13 @@ + + + + TexPathVariants_XrayPenis_Horse + +
  • AnimationProps/Cat/Cat1
  • + +
  • AnimationProps/Cat/Cat2
  • + +
    +
    + +
    \ No newline at end of file diff --git a/1.6/Defs/TexPathVariantsDefs/TexPathVariants_XrayPenis_Human.xml b/1.6/Defs/TexPathVariantsDefs/TexPathVariants_XrayPenis_Human.xml new file mode 100644 index 0000000..235ee3e --- /dev/null +++ b/1.6/Defs/TexPathVariantsDefs/TexPathVariants_XrayPenis_Human.xml @@ -0,0 +1,13 @@ + + + + TexPathVariants_XrayPenis_Human + +
  • AnimationProps/Cat/Cat1
  • + +
  • AnimationProps/Cat/Cat2
  • + +
    +
    + +
    \ No newline at end of file diff --git a/1.6/Defs/TexPathVariantsDefs/TexPathVariants_Xray_Inside.xml b/1.6/Defs/TexPathVariantsDefs/TexPathVariants_Xray_Inside.xml new file mode 100644 index 0000000..4c9f90b --- /dev/null +++ b/1.6/Defs/TexPathVariantsDefs/TexPathVariants_Xray_Inside.xml @@ -0,0 +1,13 @@ + + + + TexPathVariants_Xray_Inside + +
  • AnimationProps/Cat/Cat1
  • + +
  • AnimationProps/Cat/Cat2
  • + +
    +
    + +
    \ No newline at end of file diff --git a/1.6/Defs/VoiceDefs/VoiceDef_Human/SoundDef_HumanFemale.xml b/1.6/Defs/VoiceDefs/VoiceDef_Human/SoundDef_HumanFemale.xml new file mode 100644 index 0000000..7c9cb6c --- /dev/null +++ b/1.6/Defs/VoiceDefs/VoiceDef_Human/SoundDef_HumanFemale.xml @@ -0,0 +1,130 @@ + + + + Moan_HumanFemale + MapOnly + + 5 + 5 + +
  • + +
  • + Voices/FVoice/Moan1 +
  • +
  • + Voices/FVoice/Moan2 +
  • +
  • + Voices/FVoice/Moan3 +
  • +
  • + Voices/FVoice/Moan4 +
  • + + 40~50 + 0.99~1.02 + 10~50 + NeverTwice + false + +
    +
    + + + MoanShort_HumanFemale + MapOnly + + 5 + 5 + +
  • + +
  • + Voices/FVoice/MoanShort1 +
  • +
  • + Voices/FVoice/MoanShort2 +
  • +
  • + Voices/FVoice/MoanShort3 +
  • + + 40~50 + 0.99~1.02 + 10~50 + NeverTwice + false + +
    +
    + + + Grunt_HumanFemale + MapOnly + + 5 + 5 + +
  • + +
  • + Voices/FVoice/Grunt1 +
  • +
  • + Voices/FVoice/Grunt2 +
  • +
  • + Voices/FVoice/Grunt3 +
  • +
  • + Voices/FVoice/Grunt4 +
  • +
  • + Voices/FVoice/Grunt5 +
  • +
  • + Voices/FVoice/Grunt6 +
  • + + 40~50 + 0.99~1.02 + 10~50 + NeverTwice + false + +
    +
    + + + Scream_HumanFemale + MapOnly + + 5 + 5 + +
  • + +
  • + Voices/FVoice/Scream1 +
  • +
  • + Voices/FVoice/Scream2 +
  • +
  • + Voices/FVoice/Scream3 +
  • +
  • + Voices/FVoice/Scream4 +
  • + + + 0.99~1.02 + 40~50 + 10~50 + NeverTwice + false + +
    +
    +
    diff --git a/1.6/Defs/VoiceDefs/VoiceDef_Human/SoundDef_HumanMale.xml b/1.6/Defs/VoiceDefs/VoiceDef_Human/SoundDef_HumanMale.xml new file mode 100644 index 0000000..a9927cd --- /dev/null +++ b/1.6/Defs/VoiceDefs/VoiceDef_Human/SoundDef_HumanMale.xml @@ -0,0 +1,120 @@ + + + + Moan_HumanMale + MapOnly + + 5 + 5 + +
  • + +
  • + Voices/MVoice/Moan1 +
  • +
  • + Voices/MVoice/Moan2 +
  • +
  • + Voices/MVoice/Moan3 +
  • +
  • + Voices/MVoice/Moan4 +
  • + + 0.99~1.02 + 20~25 + 10~50 + NeverTwice + false + +
    +
    + + + MoanShort_HumanMale + MapOnly + + 5 + 5 + +
  • + +
  • + Voices/MVoice/MoanShort1 +
  • +
  • + Voices/MVoice/MoanShort2 +
  • +
  • + Voices/MVoice/MoanShort3 +
  • + + 0.99~1.02 + 20~25 + 10~50 + NeverTwice + false + +
    +
    + + + Grunt_HumanMale + MapOnly + + 5 + 5 + +
  • + +
  • + Voices/MVoice/Grunt1 +
  • +
  • + Voices/MVoice/Grunt2 +
  • +
  • + Voices/MVoice/Grunt3 +
  • +
  • + Voices/MVoice/Grunt4 +
  • + + 0.99~1.02 + 20~25 + 10~50 + NeverTwice + false + +
    +
    + + + Scream_HumanMale + MapOnly + + 5 + 5 + +
  • + +
  • + Voices/MVoice/Scream1 +
  • +
  • + Voices/MVoice/Scream2 +
  • +
  • + Voices/MVoice/Scream3 +
  • + + 0.99~1.02 + 20~25 + 10~50 + NeverTwice + false + +
    +
    +
    diff --git a/1.6/Defs/VoiceDefs/VoiceDef_Human/VoiceDef_Human.xml b/1.6/Defs/VoiceDefs/VoiceDef_Human/VoiceDef_Human.xml new file mode 100644 index 0000000..eef8942 --- /dev/null +++ b/1.6/Defs/VoiceDefs/VoiceDef_Human/VoiceDef_Human.xml @@ -0,0 +1,30 @@ + + + + + + + Voice_HumanFemale + Female + 60~80 + +
  • MoanMoan_HumanFemale
  • +
  • MoanShortMoanShort_HumanFemale
  • +
  • GruntGrunt_HumanFemale
  • +
  • ScreamScream_HumanFemale
  • +
    +
    + + + Voice_HumanMale + Male + 150~180 + +
  • MoanMoan_HumanMale
  • +
  • MoanShortMoanShort_HumanMale
  • +
  • GruntGrunt_HumanMale
  • +
  • ScreamScream_HumanMale
  • +
    +
    + +
    diff --git a/1.6/Defs/VoiceDefs/VoiceDef_Orassan.xml b/1.6/Defs/VoiceDefs/VoiceDef_Orassan.xml new file mode 100644 index 0000000..be5bec0 --- /dev/null +++ b/1.6/Defs/VoiceDefs/VoiceDef_Orassan.xml @@ -0,0 +1,18 @@ + + + + \ No newline at end of file diff --git a/1.6/Defs/VoiceDefs/VoiceTagDef.xml b/1.6/Defs/VoiceDefs/VoiceTagDef.xml new file mode 100644 index 0000000..1bbc6f2 --- /dev/null +++ b/1.6/Defs/VoiceDefs/VoiceTagDef.xml @@ -0,0 +1,26 @@ + + + + Moan + 0.2 + + + + MoanShort + 0.1 + + + + Grunt + 0.1 + + + + + + + Scream + 1 + + + \ No newline at end of file diff --git a/1.2/Patch_HatsDisplaySelection/Patch_HatsDisplaySelection.csproj b/1.6/Patch_HatsDisplaySelection/Patch_HatsDisplaySelection.csproj similarity index 100% rename from 1.2/Patch_HatsDisplaySelection/Patch_HatsDisplaySelection.csproj rename to 1.6/Patch_HatsDisplaySelection/Patch_HatsDisplaySelection.csproj diff --git a/1.4/Patch_HumanoidAlienRaces/Assemblies/Patch_HumanoidAlienRaces.dll b/1.6/Patch_HumanoidAlienRaces/Assemblies/Patch_HumanoidAlienRaces.dll similarity index 100% rename from 1.4/Patch_HumanoidAlienRaces/Assemblies/Patch_HumanoidAlienRaces.dll rename to 1.6/Patch_HumanoidAlienRaces/Assemblies/Patch_HumanoidAlienRaces.dll diff --git a/1.4/Patch_HumanoidAlienRaces/Patch_HumanoidAlienRaces.csproj b/1.6/Patch_HumanoidAlienRaces/Patch_HumanoidAlienRaces.csproj similarity index 100% rename from 1.4/Patch_HumanoidAlienRaces/Patch_HumanoidAlienRaces.csproj rename to 1.6/Patch_HumanoidAlienRaces/Patch_HumanoidAlienRaces.csproj diff --git a/1.4/Patch_HumanoidAlienRaces/Properties/AssemblyInfo.cs b/1.6/Patch_HumanoidAlienRaces/Properties/AssemblyInfo.cs similarity index 100% rename from 1.4/Patch_HumanoidAlienRaces/Properties/AssemblyInfo.cs rename to 1.6/Patch_HumanoidAlienRaces/Properties/AssemblyInfo.cs diff --git a/1.3/Patches/AnimationPatchHSK.xml b/1.6/Patches/AnimationPatchHSK.xml similarity index 90% rename from 1.3/Patches/AnimationPatchHSK.xml rename to 1.6/Patches/AnimationPatchHSK.xml index 74038ea..e061299 100644 --- a/1.3/Patches/AnimationPatchHSK.xml +++ b/1.6/Patches/AnimationPatchHSK.xml @@ -21,7 +21,7 @@
  • Defs/ThingDef[@Name="BaseAnimalPawn" or @Name="SK_BasePawn" or @Name="BasePawnSkynet"]/comps -
  • +
  • diff --git a/1.3/Patches/AnimationPatch_CompBodyAnimator.xml b/1.6/Patches/AnimationPatch_CompExtendedAnimator.xml similarity index 83% rename from 1.3/Patches/AnimationPatch_CompBodyAnimator.xml rename to 1.6/Patches/AnimationPatch_CompExtendedAnimator.xml index e645747..87f9f7d 100644 --- a/1.3/Patches/AnimationPatch_CompBodyAnimator.xml +++ b/1.6/Patches/AnimationPatch_CompExtendedAnimator.xml @@ -21,13 +21,13 @@
  • Defs/ThingDef[@Name="BasePawn"]/comps -
  • +
  • Defs/AlienRace.ThingDef_AlienRace/comps -
  • +
  • diff --git a/1.6/Patches/AnimationPatch_PawnRenderTree_OffsetSubWorker.xml b/1.6/Patches/AnimationPatch_PawnRenderTree_OffsetSubWorker.xml new file mode 100644 index 0000000..6aa36a8 --- /dev/null +++ b/1.6/Patches/AnimationPatch_PawnRenderTree_OffsetSubWorker.xml @@ -0,0 +1,27 @@ + + + + + Always + +
  • + /Defs/PawnRenderTreeDef/root/subworkerClasses + Always + + /Defs/PawnRenderTreeDef/root + + + + +
  • + +
  • + /Defs/PawnRenderTreeDef/root/subworkerClasses + +
  • Rimworld_Animations.PawnRenderSubWorker_ChangeOffset
  • + + +
    +
    + +
    \ No newline at end of file diff --git a/1.4/Patches/CompPatches/AutoCleaner.xml b/1.6/Patches/CompPatches/AutoCleaner.xml similarity index 87% rename from 1.4/Patches/CompPatches/AutoCleaner.xml rename to 1.6/Patches/CompPatches/AutoCleaner.xml index c2ad860..c6ba2bb 100644 --- a/1.4/Patches/CompPatches/AutoCleaner.xml +++ b/1.6/Patches/CompPatches/AutoCleaner.xml @@ -9,7 +9,7 @@ /Defs/ThingDef[@Name="BaseBaseAutocleaner"]/comps -
  • +
  • diff --git a/1.4/Patches/CompPatches/CombatExtended.xml b/1.6/Patches/CompPatches/CombatExtended.xml similarity index 86% rename from 1.4/Patches/CompPatches/CombatExtended.xml rename to 1.6/Patches/CompPatches/CombatExtended.xml index 7d35127..aed123b 100644 --- a/1.4/Patches/CompPatches/CombatExtended.xml +++ b/1.6/Patches/CompPatches/CombatExtended.xml @@ -9,7 +9,7 @@ /Defs/ThingDef[@Name="BasePawnSimple"]/comps -
  • +
  • diff --git a/1.4/Patches/CompPatches/ZombieLand.xml b/1.6/Patches/CompPatches/ZombieLand.xml similarity index 86% rename from 1.4/Patches/CompPatches/ZombieLand.xml rename to 1.6/Patches/CompPatches/ZombieLand.xml index e950e0e..87f618c 100644 --- a/1.4/Patches/CompPatches/ZombieLand.xml +++ b/1.6/Patches/CompPatches/ZombieLand.xml @@ -9,7 +9,7 @@ /Defs/ThingDef[@Name="BaseZombie"]/comps -
  • +
  • diff --git a/1.2/Patches/CompatibilityPatch_FacialAnimation.xml b/1.6/Patches/CompatibilityPatch_FacialAnimation.xml similarity index 58% rename from 1.2/Patches/CompatibilityPatch_FacialAnimation.xml rename to 1.6/Patches/CompatibilityPatch_FacialAnimation.xml index 125d79f..53e3f05 100644 --- a/1.2/Patches/CompatibilityPatch_FacialAnimation.xml +++ b/1.6/Patches/CompatibilityPatch_FacialAnimation.xml @@ -11,68 +11,21 @@ /Defs/FacialAnimation.FaceAnimationDef[defName="Lovin" or defName="Lovin2"]/targetJobs Always -
  • RJW_Masturbate
  • -
  • GettinBred
  • -
  • Bestiality
  • -
  • BestialityForFemale
  • -
  • ViolateCorpse
  • -
  • Quickie
  • -
  • GettingQuickie
  • -
  • GettinRaped
  • -
  • JoinInBed
  • -
  • GettinLoved
  • -
  • GettinLicked
  • -
  • GettinSucked
  • -
  • WhoreIsServingVisitors
  • JoinInBedAnimation
  • GettinLovedAnimation
  • -
  • - /Defs/FacialAnimation.FaceAnimationDef[defName="WaitCombat" or defName="Wait_Combat_Rare"]/targetJobs +
  • + /Defs/FacialAnimation.FaceAnimationDef[defName="Lovin" or defName="Lovin2"]/animationFrames/li[1]/headOffset Always - -
  • RapeComfortPawn
  • -
  • RandomRape
  • -
  • RapeEnemy
  • -
    -
  • - /Defs/FacialAnimation.FaceAnimationDef[defName="StandAndBeSociallyActive"]/targetJobs +
  • + /Defs/FacialAnimation.FaceAnimationDef[defName="Lovin"]/animationFrames/li[2]/headOffset Always - -
  • WhoreInvitingVisitors
  • -
    -
  • - /Defs/FacialAnimation.FaceAnimationDef[defName="Wear" or defName="Wear2" or defName="Wear3"]/targetJobs +
  • + /Defs/FacialAnimation.FaceAnimationDef[defName="Lovin"]/animationFrames/li[3]/headOffset Always - -
  • CleanSelf
  • -
  • StruggleInBondageGear
  • -
    - -
  • - -
  • Rimworld-Animations
  • - - - Always - -
  • - /Defs/FacialAnimation.FaceAnimationDef[defName="Lovin" or defName="Lovin2"]/animationFrames/li[1]/headOffset - Always -
  • -
  • - /Defs/FacialAnimation.FaceAnimationDef[defName="Lovin"]/animationFrames/li[2]/headOffset - Always -
  • -
  • - /Defs/FacialAnimation.FaceAnimationDef[defName="Lovin"]/animationFrames/li[3]/headOffset - Always -
  • -
    -
    diff --git a/1.4/Patches/CompatibilityPatch_HCSK.xml b/1.6/Patches/CompatibilityPatch_HCSK.xml similarity index 95% rename from 1.4/Patches/CompatibilityPatch_HCSK.xml rename to 1.6/Patches/CompatibilityPatch_HCSK.xml index ead8783..576a07f 100644 --- a/1.4/Patches/CompatibilityPatch_HCSK.xml +++ b/1.6/Patches/CompatibilityPatch_HCSK.xml @@ -22,14 +22,14 @@
  • /Defs/ThingDef[@Name="SK_BasePawn"]/comps -
  • +
  • /Defs/ThingDef[@Name="BaseAnimalPawn"]/comps -
  • +
  • diff --git a/1.6/Patches/OffsetDefPatchTemplate/AnimationPatch_OffsetDef.xml b/1.6/Patches/OffsetDefPatchTemplate/AnimationPatch_OffsetDef.xml new file mode 100644 index 0000000..5d45225 --- /dev/null +++ b/1.6/Patches/OffsetDefPatchTemplate/AnimationPatch_OffsetDef.xml @@ -0,0 +1,32 @@ + + + + \ No newline at end of file diff --git a/1.6/Patches/Patch_GenitaliaRenderNode.xml b/1.6/Patches/Patch_GenitaliaRenderNode.xml new file mode 100644 index 0000000..553374a --- /dev/null +++ b/1.6/Patches/Patch_GenitaliaRenderNode.xml @@ -0,0 +1,16 @@ + + + + diff --git a/1.2/Sounds/Sex/Clap_1.wav b/1.6/Sounds/Sex/Clap_1.wav similarity index 100% rename from 1.2/Sounds/Sex/Clap_1.wav rename to 1.6/Sounds/Sex/Clap_1.wav diff --git a/1.2/Sounds/Sex/Clap_2.wav b/1.6/Sounds/Sex/Clap_2.wav similarity index 100% rename from 1.2/Sounds/Sex/Clap_2.wav rename to 1.6/Sounds/Sex/Clap_2.wav diff --git a/1.2/Sounds/Sex/Clap_3.wav b/1.6/Sounds/Sex/Clap_3.wav similarity index 100% rename from 1.2/Sounds/Sex/Clap_3.wav rename to 1.6/Sounds/Sex/Clap_3.wav diff --git a/1.2/Sounds/Sex/Clap_4.wav b/1.6/Sounds/Sex/Clap_4.wav similarity index 100% rename from 1.2/Sounds/Sex/Clap_4.wav rename to 1.6/Sounds/Sex/Clap_4.wav diff --git a/1.2/Sounds/Sex/Clap_5.wav b/1.6/Sounds/Sex/Clap_5.wav similarity index 100% rename from 1.2/Sounds/Sex/Clap_5.wav rename to 1.6/Sounds/Sex/Clap_5.wav diff --git a/1.2/Sounds/Sex/Clap_6.wav b/1.6/Sounds/Sex/Clap_6.wav similarity index 100% rename from 1.2/Sounds/Sex/Clap_6.wav rename to 1.6/Sounds/Sex/Clap_6.wav diff --git a/1.2/Sounds/Sex/Clap_7.wav b/1.6/Sounds/Sex/Clap_7.wav similarity index 100% rename from 1.2/Sounds/Sex/Clap_7.wav rename to 1.6/Sounds/Sex/Clap_7.wav diff --git a/1.2/Sounds/Sex/Clap_8.wav b/1.6/Sounds/Sex/Clap_8.wav similarity index 100% rename from 1.2/Sounds/Sex/Clap_8.wav rename to 1.6/Sounds/Sex/Clap_8.wav diff --git a/1.6/Sounds/Sex/Slap/Slap_1.wav b/1.6/Sounds/Sex/Slap/Slap_1.wav new file mode 100644 index 0000000..3387390 Binary files /dev/null and b/1.6/Sounds/Sex/Slap/Slap_1.wav differ diff --git a/1.6/Sounds/Sex/Slap/Slap_2.wav b/1.6/Sounds/Sex/Slap/Slap_2.wav new file mode 100644 index 0000000..1486217 Binary files /dev/null and b/1.6/Sounds/Sex/Slap/Slap_2.wav differ diff --git a/1.6/Sounds/Sex/Slap/Slap_3.wav b/1.6/Sounds/Sex/Slap/Slap_3.wav new file mode 100644 index 0000000..8d476db Binary files /dev/null and b/1.6/Sounds/Sex/Slap/Slap_3.wav differ diff --git a/1.6/Sounds/Sex/Slap/Slap_4.wav b/1.6/Sounds/Sex/Slap/Slap_4.wav new file mode 100644 index 0000000..c958a4c Binary files /dev/null and b/1.6/Sounds/Sex/Slap/Slap_4.wav differ diff --git a/1.6/Sounds/Sex/Slap/Slap_5.wav b/1.6/Sounds/Sex/Slap/Slap_5.wav new file mode 100644 index 0000000..033b2c4 Binary files /dev/null and b/1.6/Sounds/Sex/Slap/Slap_5.wav differ diff --git a/1.2/Sounds/Sex/Slime/Slimy1.wav b/1.6/Sounds/Sex/Slime/Slimy1.wav similarity index 100% rename from 1.2/Sounds/Sex/Slime/Slimy1.wav rename to 1.6/Sounds/Sex/Slime/Slimy1.wav diff --git a/1.2/Sounds/Sex/Slime/Slimy2.wav b/1.6/Sounds/Sex/Slime/Slimy2.wav similarity index 100% rename from 1.2/Sounds/Sex/Slime/Slimy2.wav rename to 1.6/Sounds/Sex/Slime/Slimy2.wav diff --git a/1.2/Sounds/Sex/Slime/Slimy3.wav b/1.6/Sounds/Sex/Slime/Slimy3.wav similarity index 100% rename from 1.2/Sounds/Sex/Slime/Slimy3.wav rename to 1.6/Sounds/Sex/Slime/Slimy3.wav diff --git a/1.2/Sounds/Sex/Slime/Slimy4.wav b/1.6/Sounds/Sex/Slime/Slimy4.wav similarity index 100% rename from 1.2/Sounds/Sex/Slime/Slimy4.wav rename to 1.6/Sounds/Sex/Slime/Slimy4.wav diff --git a/1.2/Sounds/Sex/Slime/Slimy5.wav b/1.6/Sounds/Sex/Slime/Slimy5.wav similarity index 100% rename from 1.2/Sounds/Sex/Slime/Slimy5.wav rename to 1.6/Sounds/Sex/Slime/Slimy5.wav diff --git a/1.2/Sounds/Sex/Suck/Suck_1.wav b/1.6/Sounds/Sex/Suck/Suck_1.wav similarity index 100% rename from 1.2/Sounds/Sex/Suck/Suck_1.wav rename to 1.6/Sounds/Sex/Suck/Suck_1.wav diff --git a/1.2/Sounds/Sex/Suck/Suck_10.wav b/1.6/Sounds/Sex/Suck/Suck_10.wav similarity index 100% rename from 1.2/Sounds/Sex/Suck/Suck_10.wav rename to 1.6/Sounds/Sex/Suck/Suck_10.wav diff --git a/1.4/Sounds/Sex/Suck/Suck_2.wav b/1.6/Sounds/Sex/Suck/Suck_2.wav similarity index 100% rename from 1.4/Sounds/Sex/Suck/Suck_2.wav rename to 1.6/Sounds/Sex/Suck/Suck_2.wav diff --git a/1.2/Sounds/Sex/Suck/Suck_3.wav b/1.6/Sounds/Sex/Suck/Suck_3.wav similarity index 100% rename from 1.2/Sounds/Sex/Suck/Suck_3.wav rename to 1.6/Sounds/Sex/Suck/Suck_3.wav diff --git a/1.2/Sounds/Sex/Suck/Suck_4.wav b/1.6/Sounds/Sex/Suck/Suck_4.wav similarity index 100% rename from 1.2/Sounds/Sex/Suck/Suck_4.wav rename to 1.6/Sounds/Sex/Suck/Suck_4.wav diff --git a/1.2/Sounds/Sex/Suck/Suck_5.wav b/1.6/Sounds/Sex/Suck/Suck_5.wav similarity index 100% rename from 1.2/Sounds/Sex/Suck/Suck_5.wav rename to 1.6/Sounds/Sex/Suck/Suck_5.wav diff --git a/1.2/Sounds/Sex/Suck/Suck_6.wav b/1.6/Sounds/Sex/Suck/Suck_6.wav similarity index 100% rename from 1.2/Sounds/Sex/Suck/Suck_6.wav rename to 1.6/Sounds/Sex/Suck/Suck_6.wav diff --git a/1.2/Sounds/Sex/Suck/Suck_7.wav b/1.6/Sounds/Sex/Suck/Suck_7.wav similarity index 100% rename from 1.2/Sounds/Sex/Suck/Suck_7.wav rename to 1.6/Sounds/Sex/Suck/Suck_7.wav diff --git a/1.2/Sounds/Sex/Suck/Suck_8.wav b/1.6/Sounds/Sex/Suck/Suck_8.wav similarity index 100% rename from 1.2/Sounds/Sex/Suck/Suck_8.wav rename to 1.6/Sounds/Sex/Suck/Suck_8.wav diff --git a/1.2/Sounds/Sex/Suck/Suck_9.wav b/1.6/Sounds/Sex/Suck/Suck_9.wav similarity index 100% rename from 1.2/Sounds/Sex/Suck/Suck_9.wav rename to 1.6/Sounds/Sex/Suck/Suck_9.wav diff --git a/1.2/Sounds/Sex/Suck/Swallow_1.wav b/1.6/Sounds/Sex/Suck/Swallow_1.wav similarity index 100% rename from 1.2/Sounds/Sex/Suck/Swallow_1.wav rename to 1.6/Sounds/Sex/Suck/Swallow_1.wav diff --git a/1.2/Sounds/Sex/Suck/Swallow_2.wav b/1.6/Sounds/Sex/Suck/Swallow_2.wav similarity index 100% rename from 1.2/Sounds/Sex/Suck/Swallow_2.wav rename to 1.6/Sounds/Sex/Suck/Swallow_2.wav diff --git a/1.2/Sounds/Sex/Suck/Swallow_3.wav b/1.6/Sounds/Sex/Suck/Swallow_3.wav similarity index 100% rename from 1.2/Sounds/Sex/Suck/Swallow_3.wav rename to 1.6/Sounds/Sex/Suck/Swallow_3.wav diff --git a/1.2/Sounds/Sex/cum.wav b/1.6/Sounds/Sex/cum.wav similarity index 100% rename from 1.2/Sounds/Sex/cum.wav rename to 1.6/Sounds/Sex/cum.wav diff --git a/1.2/Sounds/Sex/kucyu04.wav b/1.6/Sounds/Sex/kucyu04.wav similarity index 100% rename from 1.2/Sounds/Sex/kucyu04.wav rename to 1.6/Sounds/Sex/kucyu04.wav diff --git a/1.6/Sounds/Voices/FVoice/Grunt1.wav b/1.6/Sounds/Voices/FVoice/Grunt1.wav new file mode 100644 index 0000000..3ae3ca3 Binary files /dev/null and b/1.6/Sounds/Voices/FVoice/Grunt1.wav differ diff --git a/1.6/Sounds/Voices/FVoice/Grunt2.wav b/1.6/Sounds/Voices/FVoice/Grunt2.wav new file mode 100644 index 0000000..496a02d Binary files /dev/null and b/1.6/Sounds/Voices/FVoice/Grunt2.wav differ diff --git a/1.6/Sounds/Voices/FVoice/Grunt3.wav b/1.6/Sounds/Voices/FVoice/Grunt3.wav new file mode 100644 index 0000000..3e905dd Binary files /dev/null and b/1.6/Sounds/Voices/FVoice/Grunt3.wav differ diff --git a/1.6/Sounds/Voices/FVoice/Grunt4.wav b/1.6/Sounds/Voices/FVoice/Grunt4.wav new file mode 100644 index 0000000..4586e8a Binary files /dev/null and b/1.6/Sounds/Voices/FVoice/Grunt4.wav differ diff --git a/1.6/Sounds/Voices/FVoice/Grunt5.wav b/1.6/Sounds/Voices/FVoice/Grunt5.wav new file mode 100644 index 0000000..6fad8c2 Binary files /dev/null and b/1.6/Sounds/Voices/FVoice/Grunt5.wav differ diff --git a/1.6/Sounds/Voices/FVoice/Grunt6.wav b/1.6/Sounds/Voices/FVoice/Grunt6.wav new file mode 100644 index 0000000..e660f30 Binary files /dev/null and b/1.6/Sounds/Voices/FVoice/Grunt6.wav differ diff --git a/1.6/Sounds/Voices/FVoice/Moan1.wav b/1.6/Sounds/Voices/FVoice/Moan1.wav new file mode 100644 index 0000000..14d19bc Binary files /dev/null and b/1.6/Sounds/Voices/FVoice/Moan1.wav differ diff --git a/1.6/Sounds/Voices/FVoice/Moan2.wav b/1.6/Sounds/Voices/FVoice/Moan2.wav new file mode 100644 index 0000000..7aba4b5 Binary files /dev/null and b/1.6/Sounds/Voices/FVoice/Moan2.wav differ diff --git a/1.6/Sounds/Voices/FVoice/Moan3.wav b/1.6/Sounds/Voices/FVoice/Moan3.wav new file mode 100644 index 0000000..d3fbf99 Binary files /dev/null and b/1.6/Sounds/Voices/FVoice/Moan3.wav differ diff --git a/1.6/Sounds/Voices/FVoice/Moan4.wav b/1.6/Sounds/Voices/FVoice/Moan4.wav new file mode 100644 index 0000000..cfe3606 Binary files /dev/null and b/1.6/Sounds/Voices/FVoice/Moan4.wav differ diff --git a/1.6/Sounds/Voices/FVoice/MoanShort1.wav b/1.6/Sounds/Voices/FVoice/MoanShort1.wav new file mode 100644 index 0000000..48eea21 Binary files /dev/null and b/1.6/Sounds/Voices/FVoice/MoanShort1.wav differ diff --git a/1.6/Sounds/Voices/FVoice/MoanShort2.wav b/1.6/Sounds/Voices/FVoice/MoanShort2.wav new file mode 100644 index 0000000..4e3b5b8 Binary files /dev/null and b/1.6/Sounds/Voices/FVoice/MoanShort2.wav differ diff --git a/1.6/Sounds/Voices/FVoice/MoanShort3.wav b/1.6/Sounds/Voices/FVoice/MoanShort3.wav new file mode 100644 index 0000000..bcd4b49 Binary files /dev/null and b/1.6/Sounds/Voices/FVoice/MoanShort3.wav differ diff --git a/1.6/Sounds/Voices/FVoice/Scream1.wav b/1.6/Sounds/Voices/FVoice/Scream1.wav new file mode 100644 index 0000000..58ddb69 Binary files /dev/null and b/1.6/Sounds/Voices/FVoice/Scream1.wav differ diff --git a/1.6/Sounds/Voices/FVoice/Scream2.wav b/1.6/Sounds/Voices/FVoice/Scream2.wav new file mode 100644 index 0000000..75bbd9b Binary files /dev/null and b/1.6/Sounds/Voices/FVoice/Scream2.wav differ diff --git a/1.6/Sounds/Voices/FVoice/Scream3.wav b/1.6/Sounds/Voices/FVoice/Scream3.wav new file mode 100644 index 0000000..251126d Binary files /dev/null and b/1.6/Sounds/Voices/FVoice/Scream3.wav differ diff --git a/1.6/Sounds/Voices/FVoice/Scream4.wav b/1.6/Sounds/Voices/FVoice/Scream4.wav new file mode 100644 index 0000000..bd7ca69 Binary files /dev/null and b/1.6/Sounds/Voices/FVoice/Scream4.wav differ diff --git a/1.6/Sounds/Voices/MVoice/Grunt1.wav b/1.6/Sounds/Voices/MVoice/Grunt1.wav new file mode 100644 index 0000000..d73ca08 Binary files /dev/null and b/1.6/Sounds/Voices/MVoice/Grunt1.wav differ diff --git a/1.6/Sounds/Voices/MVoice/Grunt2.wav b/1.6/Sounds/Voices/MVoice/Grunt2.wav new file mode 100644 index 0000000..8307871 Binary files /dev/null and b/1.6/Sounds/Voices/MVoice/Grunt2.wav differ diff --git a/1.6/Sounds/Voices/MVoice/Grunt3.wav b/1.6/Sounds/Voices/MVoice/Grunt3.wav new file mode 100644 index 0000000..9cf9162 Binary files /dev/null and b/1.6/Sounds/Voices/MVoice/Grunt3.wav differ diff --git a/1.6/Sounds/Voices/MVoice/Grunt4.wav b/1.6/Sounds/Voices/MVoice/Grunt4.wav new file mode 100644 index 0000000..c8b7efa Binary files /dev/null and b/1.6/Sounds/Voices/MVoice/Grunt4.wav differ diff --git a/1.6/Sounds/Voices/MVoice/Moan1.wav b/1.6/Sounds/Voices/MVoice/Moan1.wav new file mode 100644 index 0000000..eafc035 Binary files /dev/null and b/1.6/Sounds/Voices/MVoice/Moan1.wav differ diff --git a/1.6/Sounds/Voices/MVoice/Moan2.wav b/1.6/Sounds/Voices/MVoice/Moan2.wav new file mode 100644 index 0000000..636b445 Binary files /dev/null and b/1.6/Sounds/Voices/MVoice/Moan2.wav differ diff --git a/1.6/Sounds/Voices/MVoice/Moan3.wav b/1.6/Sounds/Voices/MVoice/Moan3.wav new file mode 100644 index 0000000..b47f6c3 Binary files /dev/null and b/1.6/Sounds/Voices/MVoice/Moan3.wav differ diff --git a/1.6/Sounds/Voices/MVoice/Moan4.wav b/1.6/Sounds/Voices/MVoice/Moan4.wav new file mode 100644 index 0000000..dc92d64 Binary files /dev/null and b/1.6/Sounds/Voices/MVoice/Moan4.wav differ diff --git a/1.6/Sounds/Voices/MVoice/MoanShort1.wav b/1.6/Sounds/Voices/MVoice/MoanShort1.wav new file mode 100644 index 0000000..9bf94e4 Binary files /dev/null and b/1.6/Sounds/Voices/MVoice/MoanShort1.wav differ diff --git a/1.6/Sounds/Voices/MVoice/MoanShort2.wav b/1.6/Sounds/Voices/MVoice/MoanShort2.wav new file mode 100644 index 0000000..481ca2d Binary files /dev/null and b/1.6/Sounds/Voices/MVoice/MoanShort2.wav differ diff --git a/1.6/Sounds/Voices/MVoice/MoanShort3.wav b/1.6/Sounds/Voices/MVoice/MoanShort3.wav new file mode 100644 index 0000000..34d5ee1 Binary files /dev/null and b/1.6/Sounds/Voices/MVoice/MoanShort3.wav differ diff --git a/1.6/Sounds/Voices/MVoice/Scream1.wav b/1.6/Sounds/Voices/MVoice/Scream1.wav new file mode 100644 index 0000000..2d987a0 Binary files /dev/null and b/1.6/Sounds/Voices/MVoice/Scream1.wav differ diff --git a/1.6/Sounds/Voices/MVoice/Scream2.wav b/1.6/Sounds/Voices/MVoice/Scream2.wav new file mode 100644 index 0000000..b71293b Binary files /dev/null and b/1.6/Sounds/Voices/MVoice/Scream2.wav differ diff --git a/1.6/Sounds/Voices/MVoice/Scream3.wav b/1.6/Sounds/Voices/MVoice/Scream3.wav new file mode 100644 index 0000000..f7b73c3 Binary files /dev/null and b/1.6/Sounds/Voices/MVoice/Scream3.wav differ diff --git a/1.3/Source/Actors/Actor.cs b/1.6/Source/Actors/Actor.cs similarity index 100% rename from 1.3/Source/Actors/Actor.cs rename to 1.6/Source/Actors/Actor.cs diff --git a/1.3/Source/Actors/AlienRaceOffset.cs b/1.6/Source/Actors/AlienRaceOffset.cs similarity index 100% rename from 1.3/Source/Actors/AlienRaceOffset.cs rename to 1.6/Source/Actors/AlienRaceOffset.cs diff --git a/1.6/Source/Animations/AnimationOffsets/AnimationOffsetDef.cs b/1.6/Source/Animations/AnimationOffsets/AnimationOffsetDef.cs new file mode 100644 index 0000000..03cdc8d --- /dev/null +++ b/1.6/Source/Animations/AnimationOffsets/AnimationOffsetDef.cs @@ -0,0 +1,32 @@ +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 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; + } + } +} diff --git a/1.6/Source/Animations/AnimationOffsets/Offsets/AnimationOffset_AgeRange.cs b/1.6/Source/Animations/AnimationOffsets/Offsets/AnimationOffset_AgeRange.cs new file mode 100644 index 0000000..8427c16 --- /dev/null +++ b/1.6/Source/Animations/AnimationOffsets/Offsets/AnimationOffset_AgeRange.cs @@ -0,0 +1,42 @@ +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 offsets; + + public override Vector3? getOffset(Pawn pawn) + { + return offsets.Find(x => x.bodyType == pawn.story.bodyType && x.ageRange.Includes(pawn.ageTracker.AgeBiologicalYears))?.offset + + //if outside of range, and less than the smallest element, use smallest element offset; else use largest element offset + ?? (pawn.ageTracker.AgeBiologicalYears < offsets.First().ageRange.min ? offsets.First().offset : offsets.Last().offset); + } + + public override int? getRotation(Pawn pawn) + { + return offsets.Find(x => x.bodyType == pawn.story.bodyType && x.ageRange.Includes(pawn.ageTracker.AgeBiologicalYears))?.rotation + ?? (pawn.ageTracker.AgeBiologicalYears < offsets.First().ageRange.min ? offsets.First().rotation : offsets.Last().rotation); + } + + public override Vector3? getScale(Pawn pawn) + { + return offsets.Find(x => x.bodyType == pawn.story.bodyType && x.ageRange.Includes(pawn.ageTracker.AgeBiologicalYears))?.scale + ?? (pawn.ageTracker.AgeBiologicalYears < offsets.First().ageRange.min ? offsets.First().scale : offsets.Last().scale); + } + + public override bool appliesToPawn(Pawn pawn) + { + if (!base.appliesToPawn(pawn)) return false; + return offsets.Any(x => x.bodyType == pawn.story.bodyType); + + } + } +} diff --git a/1.6/Source/Animations/AnimationOffsets/Offsets/AnimationOffset_AgeRangeGendered.cs b/1.6/Source/Animations/AnimationOffsets/Offsets/AnimationOffset_AgeRangeGendered.cs new file mode 100644 index 0000000..b5a5532 --- /dev/null +++ b/1.6/Source/Animations/AnimationOffsets/Offsets/AnimationOffset_AgeRangeGendered.cs @@ -0,0 +1,52 @@ +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_AgeRangeGendered : BaseAnimationOffset + { + public List offsetsMale; + public List offsetsFemale; + + public override Vector3? getOffset(Pawn pawn) + { + List pawnOffsets = (pawn.gender == Gender.Male ? offsetsMale : offsetsFemale); + return pawnOffsets.Find(x => x.bodyType == pawn.story.bodyType && x.ageRange.Includes(pawn.ageTracker.AgeBiologicalYears))?.offset + ?? (pawn.ageTracker.AgeBiologicalYears < pawnOffsets.First().ageRange.min ? pawnOffsets.First().offset : pawnOffsets.Last().offset); + } + + public override int? getRotation(Pawn pawn) + { + List pawnOffsets = (pawn.gender == Gender.Male ? offsetsMale : offsetsFemale); + return pawnOffsets.Find(x => x.bodyType == pawn.story.bodyType && x.ageRange.Includes(pawn.ageTracker.AgeBiologicalYears))?.rotation + ?? (pawn.ageTracker.AgeBiologicalYears < pawnOffsets.First().ageRange.min ? pawnOffsets.First().rotation : pawnOffsets.Last().rotation); + } + + public override Vector3? getScale(Pawn pawn) + { + List pawnOffsets = (pawn.gender == Gender.Male ? offsetsMale : offsetsFemale); + return pawnOffsets.Find(x => x.bodyType == pawn.story.bodyType && x.ageRange.Includes(pawn.ageTracker.AgeBiologicalYears))?.scale + ?? (pawn.ageTracker.AgeBiologicalYears < pawnOffsets.First().ageRange.min ? pawnOffsets.First().scale : pawnOffsets.Last().scale); + } + + public override bool appliesToPawn(Pawn pawn) + { + if (!base.appliesToPawn(pawn)) return false; + + List pawnOffsets = (pawn.gender == Gender.Male ? offsetsMale : offsetsFemale); + return pawnOffsets.Any(x => x.bodyType == pawn.story.bodyType); + + } + } + + public class BodyTypeOffset_AgeRange : BodyTypeOffset + { + public FloatRange ageRange; + + } +} diff --git a/1.6/Source/Animations/AnimationOffsets/Offsets/AnimationOffset_BodyType.cs b/1.6/Source/Animations/AnimationOffsets/Offsets/AnimationOffset_BodyType.cs new file mode 100644 index 0000000..06f19ee --- /dev/null +++ b/1.6/Source/Animations/AnimationOffsets/Offsets/AnimationOffset_BodyType.cs @@ -0,0 +1,45 @@ +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 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; + } + + public override bool appliesToPawn(Pawn pawn) + { + + if (!base.appliesToPawn(pawn)) return false; + + return offsets.Any(x => x.bodyType == pawn.story.bodyType); + + + } + + + } + +} diff --git a/1.6/Source/Animations/AnimationOffsets/Offsets/AnimationOffset_BodyTypeGendered.cs b/1.6/Source/Animations/AnimationOffsets/Offsets/AnimationOffset_BodyTypeGendered.cs new file mode 100644 index 0000000..c2716dc --- /dev/null +++ b/1.6/Source/Animations/AnimationOffsets/Offsets/AnimationOffset_BodyTypeGendered.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Unity.Collections; +using UnityEngine; +using Verse; + +namespace Rimworld_Animations +{ + public class AnimationOffset_BodyTypeGendered : BaseAnimationOffset + { + + public List offsetsMale; + public List 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; + } + + } + + public override bool appliesToPawn(Pawn pawn) + { + + if (!base.appliesToPawn(pawn)) return false; + + return offsetsFemale.Any(x => x.bodyType == pawn.story.bodyType) || offsetsMale.Any(x => x.bodyType == pawn.story.bodyType); + + + } + } +} diff --git a/1.6/Source/Animations/AnimationOffsets/Offsets/AnimationOffset_Genes.cs b/1.6/Source/Animations/AnimationOffsets/Offsets/AnimationOffset_Genes.cs new file mode 100644 index 0000000..061cf39 --- /dev/null +++ b/1.6/Source/Animations/AnimationOffsets/Offsets/AnimationOffset_Genes.cs @@ -0,0 +1,42 @@ +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_Genes : BaseAnimationOffset + { + public List offsets; + public override Vector3? getOffset(Pawn pawn) + { + + return offsets.Find(x => x.bodyType == pawn.story.bodyType && pawn.genes.GenesListForReading.ContainsAny(gene => gene.def == x.geneDef))?.offset ?? offsets.Last().offset; + } + + public override int? getRotation(Pawn pawn) + { + return offsets.Find(x => x.bodyType == pawn.story.bodyType && pawn.genes.GenesListForReading.ContainsAny(gene => gene.def == x.geneDef))?.rotation ?? offsets.Last().rotation; + } + + public override Vector3? getScale(Pawn pawn) + { + return offsets.Find(x => x.bodyType == pawn.story.bodyType && pawn.genes.GenesListForReading.ContainsAny(gene => gene.def == x.geneDef))?.scale ?? offsets.Last().scale; + } + + public override bool appliesToPawn(Pawn pawn) + { + if (!base.appliesToPawn(pawn)) return false; + return offsets.Any(x => x.bodyType == pawn.story.bodyType && pawn.genes.GenesListForReading.ContainsAny(gene => gene.def == x.geneDef)); + + } + } + + public class BodyTypeOffset_Genes : BodyTypeOffset + { + public GeneDef geneDef; + } +} diff --git a/1.6/Source/Animations/AnimationOffsets/Offsets/AnimationOffset_Single.cs b/1.6/Source/Animations/AnimationOffsets/Offsets/AnimationOffset_Single.cs new file mode 100644 index 0000000..a728834 --- /dev/null +++ b/1.6/Source/Animations/AnimationOffsets/Offsets/AnimationOffset_Single.cs @@ -0,0 +1,33 @@ +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; + } + } +} diff --git a/1.6/Source/Animations/AnimationOffsets/Offsets/BaseAnimationOffset.cs b/1.6/Source/Animations/AnimationOffsets/Offsets/BaseAnimationOffset.cs new file mode 100644 index 0000000..e5d2243 --- /dev/null +++ b/1.6/Source/Animations/AnimationOffsets/Offsets/BaseAnimationOffset.cs @@ -0,0 +1,29 @@ +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 races; + + public abstract Vector3? getOffset(Pawn pawn); + + public abstract int? getRotation(Pawn pawn); + + public abstract Vector3? getScale(Pawn pawn); + + public virtual bool appliesToPawn(Pawn pawn) + { + return races.Contains(pawn.def); + + } + + } +} diff --git a/1.6/Source/Animations/AnimationOffsets/Offsets/BodyTypeOffset.cs b/1.6/Source/Animations/AnimationOffsets/Offsets/BodyTypeOffset.cs new file mode 100644 index 0000000..b441262 --- /dev/null +++ b/1.6/Source/Animations/AnimationOffsets/Offsets/BodyTypeOffset.cs @@ -0,0 +1,19 @@ +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; + } +} diff --git a/1.6/Source/Animations/AnimationProps/AnimationPropDef.cs b/1.6/Source/Animations/AnimationProps/AnimationPropDef.cs new file mode 100644 index 0000000..2a1f501 --- /dev/null +++ b/1.6/Source/Animations/AnimationProps/AnimationPropDef.cs @@ -0,0 +1,47 @@ +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 + { + + //if this feature is good, maybe expand + //to having a list of Alternative props maybe? + public List alternateProps; + public PawnRenderNodeProperties animPropProperties; + + public virtual PawnRenderNodeProperties GetPawnRenderNodeProperties(Pawn pawn) + { + if (!alternateProps.NullOrEmpty()) + { + foreach (AlternateAnimationProp animProp in alternateProps) + { + //if there are special props you want to use for a specific race, + if (animProp.test.PawnTest(pawn)) + { + //use it + return animProp.props; + } + + } + } + + //otherwise just stick with defaults + return animPropProperties; + } + + + } + + public class AlternateAnimationProp + { + public BasePawnTest test; + public PawnRenderNodeProperties props; + + } +} diff --git a/1.6/Source/Animations/AnimationWorkers/AnimationWorker_KeyframesExtended.cs b/1.6/Source/Animations/AnimationWorkers/AnimationWorker_KeyframesExtended.cs new file mode 100644 index 0000000..dd8f4a1 --- /dev/null +++ b/1.6/Source/Animations/AnimationWorkers/AnimationWorker_KeyframesExtended.cs @@ -0,0 +1,229 @@ +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 AnimationWorker_KeyframesExtended : AnimationWorker_Keyframes + { + + public override bool Enabled(AnimationDef def, PawnRenderNode node, AnimationPart part, PawnDrawParms parms) + { + return true; + } + + /* + public override Vector3 OffsetAtTick(int tick, PawnDrawParms parms) + { + //Todo: Use this for bodyoffsets + //or maybe make a rendersubworker for it instead + return base.OffsetAtTick(tick, parms); + } + + //don't need for anims + + */ + + public VoiceTagDef voiceAtTick(int tick, AnimationDef def, PawnRenderNode node) + { + + KeyframeAnimationPart keyframeAnimationPart = def.keyframeParts[node.Props.tagDef]; + + foreach (Verse.Keyframe keyframe in keyframeAnimationPart.keyframes) + { + if (tick == keyframe.tick) + { + VoiceTagDef voiceTag = (keyframe as ExtendedKeyframe).voice; + + //probability checking null fix + if (voiceTag != null && Rand.Chance(voiceTag.probability)) + { + + return voiceTag; + + } + + return null; + } + + } + + return null; + + } + + public SoundDef soundAtTick(int tick, AnimationDef def, PawnRenderNode node) + { + KeyframeAnimationPart keyframeAnimationPart = def.keyframeParts[node.Props.tagDef]; + + + //Verse.Keyframe keyframe = this.part.keyframes[0]; + Verse.Keyframe keyframe2 = keyframeAnimationPart.keyframes[keyframeAnimationPart.keyframes.Count - 1]; + foreach (Verse.Keyframe keyframe in keyframeAnimationPart.keyframes) + { + if (tick == keyframe.tick) + { + return (keyframe as ExtendedKeyframe).sound; + } + + } + + return null; + } + + + + //use extendedkeyframes to determine addon facing + public Rot4 facingAtTick(int tick, AnimationDef def, PawnRenderNode node) + { + + KeyframeAnimationPart keyframeAnimationPart = def.keyframeParts[node.Props.tagDef]; + + //if ticks are < first keyframe tick, just be stuck to first keyframe rot + if (tick <= keyframeAnimationPart.keyframes[0].tick) + { + + return (keyframeAnimationPart.keyframes[0] as ExtendedKeyframe).rotation; + + } + + //if ticks are > last keyframe tick, just be stuck to last keyframe rot + if (tick >= keyframeAnimationPart.keyframes[keyframeAnimationPart.keyframes.Count - 1].tick) + { + + return (keyframeAnimationPart.keyframes[keyframeAnimationPart.keyframes.Count - 1] as ExtendedKeyframe).rotation; + + } + Verse.Keyframe keyframe = keyframeAnimationPart.keyframes[0]; + Verse.Keyframe keyframe2 = keyframeAnimationPart.keyframes[keyframeAnimationPart.keyframes.Count - 1]; + int i = 0; + while (i < keyframeAnimationPart.keyframes.Count) + { + if (tick <= keyframeAnimationPart.keyframes[i].tick) + { + keyframe2 = keyframeAnimationPart.keyframes[i]; + if (i > 0) + { + keyframe = keyframeAnimationPart.keyframes[i - 1]; + break; + } + break; + } + else + { + i++; + } + } + + return (keyframe as ExtendedKeyframe).rotation; + + } + public bool visibleAtTick(int tick, AnimationDef def, PawnRenderNode node) + { + KeyframeAnimationPart keyframeAnimationPart = def.keyframeParts[node.Props.tagDef]; + + //if ticks are < first keyframe tick, just be stuck to first keyframe rot + if (tick <= keyframeAnimationPart.keyframes[0].tick) + { + + return (keyframeAnimationPart.keyframes[0] as ExtendedKeyframe).visible; + + } + + //if ticks are > last keyframe tick, just be stuck to last keyframe rot + if (tick >= keyframeAnimationPart.keyframes[keyframeAnimationPart.keyframes.Count - 1].tick) + { + + return (keyframeAnimationPart.keyframes[keyframeAnimationPart.keyframes.Count - 1] as ExtendedKeyframe).visible; + + } + + Verse.Keyframe keyframe = keyframeAnimationPart.keyframes[0]; + Verse.Keyframe keyframe2 = keyframeAnimationPart.keyframes[keyframeAnimationPart.keyframes.Count - 1]; + + int i = 0; + while (i < keyframeAnimationPart.keyframes.Count) + { + if (tick <= keyframeAnimationPart.keyframes[i].tick) + { + keyframe2 = keyframeAnimationPart.keyframes[i]; + if (i > 0) + { + keyframe = keyframeAnimationPart.keyframes[i - 1]; + break; + } + break; + } + else + { + i++; + } + } + + return (keyframe as ExtendedKeyframe).visible; + + + } + + public virtual bool shouldRecache(int tick, AnimationDef def, PawnRenderNode node) + { + if (facingAtTick(tick, def, node) != facingAtTick(tick - 1, def, node) + || visibleAtTick(tick, def, node) != visibleAtTick(tick - 1, def, node) + || TexPathVariantAtTick(tick, def, node) != TexPathVariantAtTick(tick - 1, def, node)) + { + return true; + } + + return true; + } + + public int? TexPathVariantAtTick(int tick, AnimationDef def, PawnRenderNode node) + { + + KeyframeAnimationPart keyframeAnimationPart = def.keyframeParts[node.Props.tagDef]; + + //if ticks are < first keyframe tick, just be stuck to first keyframe rot + if (tick <= keyframeAnimationPart.keyframes[0].tick) + { + + return (keyframeAnimationPart.keyframes[0] as ExtendedKeyframe).variant; + + } + + //if ticks are > last keyframe tick, just be stuck to last keyframe rot + if (tick >= keyframeAnimationPart.keyframes[keyframeAnimationPart.keyframes.Count - 1].tick) + { + + return (keyframeAnimationPart.keyframes[keyframeAnimationPart.keyframes.Count - 1] as ExtendedKeyframe).variant; + + } + Verse.Keyframe keyframe = keyframeAnimationPart.keyframes[0]; + Verse.Keyframe keyframe2 = keyframeAnimationPart.keyframes[keyframeAnimationPart.keyframes.Count - 1]; + int i = 0; + while (i < keyframeAnimationPart.keyframes.Count) + { + if (tick <= keyframeAnimationPart.keyframes[i].tick) + { + keyframe2 = keyframeAnimationPart.keyframes[i]; + if (i > 0) + { + keyframe = keyframeAnimationPart.keyframes[i - 1]; + break; + } + break; + } + else + { + i++; + } + } + + return (keyframe as ExtendedKeyframe).variant; + + } + } +} diff --git a/1.6/Source/Animations/GroupAnimations/GroupAnimationContexts/BaseGroupAnimationContext.cs b/1.6/Source/Animations/GroupAnimations/GroupAnimationContexts/BaseGroupAnimationContext.cs new file mode 100644 index 0000000..de5ddc3 --- /dev/null +++ b/1.6/Source/Animations/GroupAnimations/GroupAnimationContexts/BaseGroupAnimationContext.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public abstract class BaseGroupAnimationContext + { + public int actorShift = 0; + public int priority = 0; + + public List whitelist; + public List blacklist; + + public virtual bool CanAnimationBeUsed(List actors, int numActors) + { + + if (numActors != actors.Count) + { + return false; + } + + if (!whitelist.NullOrEmpty()) + { + for (int i = 0; i < whitelist.Count; i++) + { + // check whitelist to make sure pawn can be in this act + //for each whitelist item, pawntest must hold true for that pawn + if (!whitelist[i].PawnTest(actors[i])) + { + return false; + } + + } + } + + if (!blacklist.NullOrEmpty()) + { + for (int i = 0; i < blacklist.Count; i++) + { + // check blacklist to make sure pawn can be in this act + // for each blacklist item, pawntest must hold false for that pawn + if (blacklist[i].PawnTest(actors[i])) + { + return false; + } + + } + } + + return true; + } + public virtual int AnimationReorder() + { + return actorShift; + } + public virtual int AnimationPriority() + { + return priority; + } + public abstract string DebugMessage(); + + //cool class for designating contexts for animations + // configure CanAnimationBeUsed to test whether it can be used + } +} diff --git a/1.6/Source/Animations/GroupAnimations/GroupAnimationContexts/GroupAnimationContext.cs b/1.6/Source/Animations/GroupAnimations/GroupAnimationContexts/GroupAnimationContext.cs new file mode 100644 index 0000000..74d91da --- /dev/null +++ b/1.6/Source/Animations/GroupAnimations/GroupAnimationContexts/GroupAnimationContext.cs @@ -0,0 +1,188 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class GroupAnimationContext + { + public int priority = 0; + + public List whitelist; + public List blacklist; + + /* + public virtual bool CanAnimationBeUsed(List actors) + { + + if (!whitelist.NullOrEmpty()) + { + for (int i = 0; i < whitelist.Count; i++) + { + // check whitelist to make sure pawn can be in this act + //for each whitelist item, pawntest must hold true for that pawn + if (!whitelist[i].PawnTest(actors[i])) + { + return false; + } + + } + } + + if (!blacklist.NullOrEmpty()) + { + for (int i = 0; i < blacklist.Count; i++) + { + // check blacklist to make sure pawn can be in this act + // for each blacklist item, pawntest must hold false for that pawn + if (blacklist[i].PawnTest(actors[i])) + { + return false; + } + + } + } + + return true; + } + */ + + /* + + public List FindWorkingPermutation(List pawns, int index = 0) + { + //can't play anim for empty list of pawns + if (pawns.Count == 0) return null; + + //pawns list doesn't match number in whitelist + if (index == 0 && pawns.Count != whitelist.Count) return null; + + //if list only has one pawn and it works for that index, return it + if (pawns.Count == 1) + { + return CanAnimationBeUsedFor(pawns[0], index) ? pawns : null; + } + + for (int i = 0; i < pawns.Count; i++) + { + if (CanAnimationBeUsedFor(pawns[i], index)) + { + //remove the pawn that we know works for that context + List smallerSubset = pawns.Where((item, idx) => idx != i).ToList(); + + //try to find a working subset for the next indices + List newWorkingSubset = FindWorkingPermutation(smallerSubset, index + 1); + + if (newWorkingSubset != null) + { + newWorkingSubset.Insert(0, pawns[i]); + return newWorkingSubset; + } + } + } + + return null; + } + + */ + + public List FindAnyWorkingSet(List actors) + { + if (actors.Count != whitelist.Count) return null; + + int numActors = actors.Count; + + Dictionary> validPawnContexts = new Dictionary>(); + + for (int i = 0; i < numActors; i++) + { + validPawnContexts[i] = new List(); + + for (int j = 0; j < numActors; j++) + { + if (CanAnimationBeUsedFor(actors[i], j)) + { + //give a list of all pawn's valid potential spots + validPawnContexts[i].Add(j); + } + + } + + } + + //set all spots as empty (-1) + int[] indexAssignedToPawn = Enumerable.Repeat(-1, numActors).ToArray(); + + for (int i = 0; i < numActors; i++) + { + bool[] visited = new bool[numActors]; + + //try to fill in each space + //try to shove spaces out of the way, get them to look elsewhere + if (!DfsMatch(i, visited, indexAssignedToPawn, validPawnContexts)) + { + return null; + } + } + + List actorOrder = new List(); + foreach (int actorIndex in indexAssignedToPawn) + { + actorOrder.Add(actors[actorIndex]); + } + return actorOrder; + } + + public bool DfsMatch(int pawnIndex, bool[] visited, int[] indexAssignedToPawn, Dictionary> validPawnContexts) + { + foreach (int index in validPawnContexts[pawnIndex]) + { + //don't infinte loop + if (visited[index]) continue; + visited[index] = true; + + //fill in space or shove something else out of the way + if (indexAssignedToPawn[index] == -1 || DfsMatch(indexAssignedToPawn[index], visited, indexAssignedToPawn, validPawnContexts)) + { + indexAssignedToPawn[index] = pawnIndex; + return true; + } + } + + return false; + } + + + + public virtual bool CanAnimationBeUsedFor(Pawn actor, int index) + { + if (whitelist.NullOrEmpty()) return false; + if (index < 0 || index >= whitelist.Count) + { + return false; + } + + if (!whitelist[index].PawnTest(actor)) + { + return false; + } + + if (!blacklist.NullOrEmpty() && blacklist[index].PawnTest(actor)) + { + return false; + } + + return true; + } + + public virtual int AnimationPriority() + { + return priority; + } + //cool class for designating contexts for animations + // configure CanAnimationBeUsed to test whether it can be used + } +} diff --git a/1.6/Source/Animations/GroupAnimations/GroupAnimationContexts/GroupAnimationContext_RJWSex.cs b/1.6/Source/Animations/GroupAnimations/GroupAnimationContexts/GroupAnimationContext_RJWSex.cs new file mode 100644 index 0000000..cefdf6a --- /dev/null +++ b/1.6/Source/Animations/GroupAnimations/GroupAnimationContexts/GroupAnimationContext_RJWSex.cs @@ -0,0 +1,40 @@ +using RimWorld; +using rjw; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; +using static rjw.xxx; + +namespace Rimworld_Animations +{ + /* + public class GroupAnimationContext_RJWSex : BaseGroupAnimationContext + { + + public List interactionDefs; + + public override bool CanAnimationBeUsed(List actors, int numActors) + { + + JobDriver_SexBaseInitiator latestSexBaseInitiator = (actors.FindLast(x => x.jobs?.curDriver is JobDriver_SexBaseInitiator).jobs.curDriver as JobDriver_SexBaseInitiator); + + if (!interactionDefs.Contains(latestSexBaseInitiator.Sexprops.dictionaryKey)) + { + return false; + } + + return base.CanAnimationBeUsed(actors, numActors); + } + + public override string DebugMessage() + { + return "Checking for RJWSex AnimationContext\n" + + "InteractionDefs: " + interactionDefs; + } + } + + */ +} diff --git a/1.6/Source/Animations/GroupAnimations/GroupAnimationDef.cs b/1.6/Source/Animations/GroupAnimations/GroupAnimationDef.cs new file mode 100644 index 0000000..30c9f61 --- /dev/null +++ b/1.6/Source/Animations/GroupAnimations/GroupAnimationDef.cs @@ -0,0 +1,192 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Remoting.Contexts; +using System.Text; +using System.Threading.Tasks; +using UnityEngine; +using Verse; + +namespace Rimworld_Animations +{ + public class GroupAnimationDef : Def + { + public int numActors; + public List animationStages; + public List contexts; + public List offsetDefs; + + /* + public bool CanAnimationBeUsed(List actors, out int highestPriority, out int contextNum) + { + + contextNum = 0; + bool animationFound = false; + highestPriority = -999999999; + + if (actors.Count != numActors) return DebugLogThenReturn(false, actors, highestPriority, contextNum); + + if (!contexts.NullOrEmpty()) + { + int contextIndex = 0; + foreach (GroupAnimationContext context in contexts) + { + if (context.CanAnimationBeUsed(actors)) + { + animationFound = true; + + + if (context.AnimationPriority() > highestPriority) + { + contextNum = contextIndex; + //get highest priority context for fitting animation + highestPriority = context.AnimationPriority(); + + } + + } + + contextIndex++; + + } + } + return DebugLogThenReturn(animationFound, actors, highestPriority, contextNum); + }*/ + + public bool CanAnimationBeUsed(List actors, out List bestPermutation, out int highestPriority) + { + bool workingContextFound = false; + highestPriority = -99999999; + int contextNum = -1; + bestPermutation = null; + + + if (actors.Count != numActors) return false; + + if (contexts.NullOrEmpty()) return false; + + for (int i = 0; i < contexts.Count; i++) + { + List workingPermutation = contexts[i].FindAnyWorkingSet(actors); + + if (workingPermutation != null && contexts[i].priority > highestPriority) + { + contextNum = i; + workingContextFound = true; + bestPermutation = workingPermutation; + highestPriority = contexts[i].priority; + } + } + + DebugLog(workingContextFound, actors, bestPermutation, highestPriority, contextNum); + + return workingContextFound; + } + + + + + + private void DebugLog(bool workingContextFound, List actors, List actorsOrdered, int priority, int contextNum) + { + if (RJWAnimationSettings.debugMode) + { + if (workingContextFound) + { + string debugMessage = this.defName; + debugMessage += " (priority: " + priority + ", context: " + contextNum + ") succeeded with pawn permutation: "; + + bool first = true; + foreach (Pawn pawn in actorsOrdered) + { + debugMessage = debugMessage + (first ? "" : ", ") + pawn.Name + " (" + pawn.def.defName + ")"; + first = false; + } + + Log.Message(debugMessage); + } + else + { + string debugMessage = this.defName + " failed for pawns: "; + bool first = true; + foreach (Pawn pawn in actors) + { + debugMessage = debugMessage + (first ? "" : ", ") + pawn.Name + " (" + pawn.def.defName + ")"; + first = false; + } + + Log.Message(debugMessage); + } + + } + + } + + /* + public int Reorder(List actors) + { + int priority = -999999999; + int reorder = 0; + + foreach (GroupAnimationContext context in contexts) + { + if (context.CanAnimationBeUsed(actors, numActors)) + { + if (context.AnimationPriority() > priority) + { + //get the reorder for highest priority context for fitting animation + priority = context.AnimationPriority(); + + } + + } + } + + return reorder; + + }*/ + + public List GetAllAnimationsForActor(int actor, int seed, List actors) + { + List animations = new List(); + + foreach (AnimationStage stage in animationStages) + { + //add all new animations to list of animations + animations.AddRange(stage.GetAnimations(actor, seed, actors)); + } + + return animations; + } + + public void GetOffset(int actor, Pawn pawn, out Vector3? position, out int? rotation) + { + + position = null; + rotation = null; + + string bodyTypeDef = (pawn.story?.bodyType != null) ? pawn.story.bodyType.ToString() : ""; + + if (offsetDefs[actor].FindOffset(pawn, out BaseAnimationOffset animationOffset)) + { + position = animationOffset.getOffset(pawn); + rotation = animationOffset.getRotation(pawn); + } + + if (RJWAnimationSettings.offsets == null) RJWAnimationSettings.offsets = new Dictionary(); + + if (RJWAnimationSettings.offsets.ContainsKey(AnimationUtility.OffsetLookupKey(pawn))) + { + if (RJWAnimationSettings.debugMode) + { + Log.Message("Using saved offset " + AnimationUtility.OffsetLookupKey(pawn)); + } + RJWAnimationSettings.offsets[AnimationUtility.OffsetLookupKey(pawn)].GetOffsets(pawn, out Vector3 offset, out int rot); + position = offset; + rotation = rot; + } + } + + + } +} diff --git a/1.6/Source/Animations/GroupAnimations/GroupAnimationStages/AnimationStage.cs b/1.6/Source/Animations/GroupAnimations/GroupAnimationStages/AnimationStage.cs new file mode 100644 index 0000000..44797ba --- /dev/null +++ b/1.6/Source/Animations/GroupAnimations/GroupAnimationStages/AnimationStage.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public abstract class AnimationStage + { + + //Return a list containing a tuple; int for how long the animation should play for + public int loops; + public abstract List GetAnimations(int actorNumber, int seed, List actors); + + } +} diff --git a/1.6/Source/Animations/GroupAnimations/GroupAnimationStages/AnimationStage_Branch.cs b/1.6/Source/Animations/GroupAnimations/GroupAnimationStages/AnimationStage_Branch.cs new file mode 100644 index 0000000..6817360 --- /dev/null +++ b/1.6/Source/Animations/GroupAnimations/GroupAnimationStages/AnimationStage_Branch.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class AnimationStage_Branch : AnimationStage + { + public List paths; + public override List GetAnimations(int actorNumber, int seed, List actors) + { + List animationDefs = new List(); + + for (int i = 0; i < loops; i++) + { + GroupAnimationDef selectedDef = paths[Rand.RangeSeeded(0, paths.Count, seed + i)]; + + animationDefs.AddRange(selectedDef.GetAllAnimationsForActor(actorNumber, seed, actors)); + + } + + return animationDefs; + } + } +} diff --git a/1.6/Source/Animations/GroupAnimations/GroupAnimationStages/AnimationStage_BranchConditional.cs b/1.6/Source/Animations/GroupAnimations/GroupAnimationStages/AnimationStage_BranchConditional.cs new file mode 100644 index 0000000..1f6f6e8 --- /dev/null +++ b/1.6/Source/Animations/GroupAnimations/GroupAnimationStages/AnimationStage_BranchConditional.cs @@ -0,0 +1,74 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class AnimationStage_BranchConditional : AnimationStage + { + public List conditionalPaths; + + public override List GetAnimations(int actorNumber, int seed, List actors) + { + List animationDefs = new List(); + + GroupAnimationDef selectedPath = null; + + //try to find a conditional path, otherwise just use the selected path + foreach (ConditionalPath conditionalPath in conditionalPaths) + { + if (conditionalPath.TestPath(actors)) + { + selectedPath = conditionalPath.path; + continue; + } + } + + if (selectedPath != null) + { + for (int i = 0; i < loops; i++) + { + + animationDefs.AddRange(selectedPath.GetAllAnimationsForActor(actorNumber, seed, actors)); + + } + } + + + + return animationDefs; + } + } + + + public class ConditionalPath + { + public GroupAnimationDef path; + + public List tests; + + public bool TestPath(List actors) + { + + if (tests.NullOrEmpty()) return true; + + for (int i = 0; i < actors.Count; i++) + { + if (!tests[i].PawnTest(actors[i])) + { + return false; + } + } + + return true; + + } + + } + + + +} diff --git a/1.6/Source/Animations/GroupAnimations/GroupAnimationStages/AnimationStage_LoopRandomSelectChance.cs b/1.6/Source/Animations/GroupAnimations/GroupAnimationStages/AnimationStage_LoopRandomSelectChance.cs new file mode 100644 index 0000000..18f58aa --- /dev/null +++ b/1.6/Source/Animations/GroupAnimations/GroupAnimationStages/AnimationStage_LoopRandomSelectChance.cs @@ -0,0 +1,60 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class AnimationStage_LoopRandomSelectChance : AnimationStage + { + public List loopOptions; + + public override List GetAnimations(int actorNumber, int seed, List actors) + { + int numberOfActors = loopOptions[0].animationDefs.Count; + List animations = new List(); + + for (int i = 0; i < loops; i++) + { + AnimationLoopOption option = getAnimationLoopOptionByWeight(seed + i); + animations.Add(option.animationDefs[actorNumber]); + } + + return animations; + } + + + + //select random element from loop options by weight; also calculate the longest anim length + private AnimationLoopOption getAnimationLoopOptionByWeight(int seed) + { + int totalWeight = loopOptions.Sum(x => x.probability); + int randomNumber = Rand.RangeInclusiveSeeded(0, loopOptions.Count - 1, seed); + + int cumulativeWeight = 0; + for (int i = 0; i < loopOptions.Count; i++) { + + + cumulativeWeight += loopOptions[i].probability; + + //random number is same for all pawns because they all have the same seed + + if (randomNumber <= cumulativeWeight) + { + return loopOptions[i]; + } + } + + //default + return loopOptions.Last(); + } + } + + public class AnimationLoopOption + { + public int probability; + public List animationDefs; + } +} diff --git a/1.6/Source/Animations/GroupAnimations/GroupAnimationStages/AnimationStage_TicksDuration.cs b/1.6/Source/Animations/GroupAnimations/GroupAnimationStages/AnimationStage_TicksDuration.cs new file mode 100644 index 0000000..cd63ecf --- /dev/null +++ b/1.6/Source/Animations/GroupAnimations/GroupAnimationStages/AnimationStage_TicksDuration.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + /* don't use? just use looprandomselect once + public class AnimationStage_TicksDuration : AnimationStage + { + public int ticks; + public List animationDefs; + + public override List> GetAnimations(int actor, int seed) + { + return new List>() { Tuple.Create(ticks, animationDefs[actor]) }; + } + } + + */ +} diff --git a/1.6/Source/Animations/Keyframes/ExtendedKeyframe.cs b/1.6/Source/Animations/Keyframes/ExtendedKeyframe.cs new file mode 100644 index 0000000..45fced9 --- /dev/null +++ b/1.6/Source/Animations/Keyframes/ExtendedKeyframe.cs @@ -0,0 +1,19 @@ +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 ExtendedKeyframe : Verse.Keyframe + { + public int? variant; + public Rot4 rotation = Rot4.North; + public SoundDef sound = null; + public VoiceTagDef voice = null; + public bool visible = false; + } +} diff --git a/1.6/Source/Animations/PawnTests/BasePawnTest.cs b/1.6/Source/Animations/PawnTests/BasePawnTest.cs new file mode 100644 index 0000000..9ada366 --- /dev/null +++ b/1.6/Source/Animations/PawnTests/BasePawnTest.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public abstract class BasePawnTest + { + public abstract bool PawnTest(Pawn pawn); + + } +} diff --git a/1.6/Source/Animations/PawnTests/Logic/PawnTest_Always.cs b/1.6/Source/Animations/PawnTests/Logic/PawnTest_Always.cs new file mode 100644 index 0000000..198f71b --- /dev/null +++ b/1.6/Source/Animations/PawnTests/Logic/PawnTest_Always.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnTest_Always : BasePawnTest + { + public override bool PawnTest(Pawn pawn) + { + return true; + } + } +} diff --git a/1.6/Source/Animations/PawnTests/Logic/PawnTest_And.cs b/1.6/Source/Animations/PawnTests/Logic/PawnTest_And.cs new file mode 100644 index 0000000..c5fc2b7 --- /dev/null +++ b/1.6/Source/Animations/PawnTests/Logic/PawnTest_And.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + //does the same thing, just here for naming + public class PawnTest_And : PawnTest_Multi + { + + } +} diff --git a/1.6/Source/Animations/PawnTests/Logic/PawnTest_Multi.cs b/1.6/Source/Animations/PawnTests/Logic/PawnTest_Multi.cs new file mode 100644 index 0000000..8c854a2 --- /dev/null +++ b/1.6/Source/Animations/PawnTests/Logic/PawnTest_Multi.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnTest_Multi : BasePawnTest + { + public List tests = new List(); + public override bool PawnTest(Pawn pawn) + { + //check all different pawn tests in list for pawn + foreach (BasePawnTest test in tests) + { + if (!test.PawnTest(pawn)) + { + return false; + } + } + + return true; + } + } +} diff --git a/1.6/Source/Animations/PawnTests/Logic/PawnTest_Never.cs b/1.6/Source/Animations/PawnTests/Logic/PawnTest_Never.cs new file mode 100644 index 0000000..fad9985 --- /dev/null +++ b/1.6/Source/Animations/PawnTests/Logic/PawnTest_Never.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnTest_Never : BasePawnTest + { + public override bool PawnTest(Pawn pawn) + { + return false; + } + } +} diff --git a/1.6/Source/Animations/PawnTests/Logic/PawnTest_Not.cs b/1.6/Source/Animations/PawnTests/Logic/PawnTest_Not.cs new file mode 100644 index 0000000..a3e2690 --- /dev/null +++ b/1.6/Source/Animations/PawnTests/Logic/PawnTest_Not.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnTest_Not : PawnTest_Multi + { + public override bool PawnTest(Pawn pawn) + { + return !base.PawnTest(pawn); + } + } +} diff --git a/1.6/Source/Animations/PawnTests/Logic/PawnTest_Or.cs b/1.6/Source/Animations/PawnTests/Logic/PawnTest_Or.cs new file mode 100644 index 0000000..6731f5a --- /dev/null +++ b/1.6/Source/Animations/PawnTests/Logic/PawnTest_Or.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnTest_Or : BasePawnTest + { + public List tests; + public override bool PawnTest(Pawn pawn) + { + + foreach (BasePawnTest test in tests) + { + + if (test.PawnTest(pawn)) + { + return true; + } + + } + + return false; + + } + + } +} diff --git a/1.6/Source/Animations/PawnTests/RJW/PawnTest_RJWCanBeFucked.cs b/1.6/Source/Animations/PawnTests/RJW/PawnTest_RJWCanBeFucked.cs new file mode 100644 index 0000000..42b59b5 --- /dev/null +++ b/1.6/Source/Animations/PawnTests/RJW/PawnTest_RJWCanBeFucked.cs @@ -0,0 +1,28 @@ +using rjw; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnTest_RJWCanBeFucked : BasePawnTest + { + public override bool PawnTest(Pawn pawn) + { + + if (!RJWAnimationSettings.maleAnalCanBeFucked) + { + if (pawn.gender == Gender.Male && (!Genital_Helper.has_vagina(pawn) || Genital_Helper.vagina_blocked(pawn))) + { + return false; + } + } + + + return xxx.can_be_fucked(pawn); + } + } +} diff --git a/1.6/Source/Animations/PawnTests/RJW/PawnTest_RJWCanFuck.cs b/1.6/Source/Animations/PawnTests/RJW/PawnTest_RJWCanFuck.cs new file mode 100644 index 0000000..7ef9c55 --- /dev/null +++ b/1.6/Source/Animations/PawnTests/RJW/PawnTest_RJWCanFuck.cs @@ -0,0 +1,18 @@ +using rjw; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnTest_RJWCanFuck : BasePawnTest + { + public override bool PawnTest(Pawn pawn) + { + return xxx.can_fuck(pawn); + } + } +} diff --git a/1.6/Source/Animations/PawnTests/RJW/PawnTest_RJWInitiator.cs b/1.6/Source/Animations/PawnTests/RJW/PawnTest_RJWInitiator.cs new file mode 100644 index 0000000..db22978 --- /dev/null +++ b/1.6/Source/Animations/PawnTests/RJW/PawnTest_RJWInitiator.cs @@ -0,0 +1,21 @@ +using RimWorld; +using rjw; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnTest_RJWInitiator : BasePawnTest + { + List interactionDefs = new List(); + public override bool PawnTest(Pawn pawn) + { + return pawn.jobs?.curDriver is JobDriver_SexBaseInitiator jobDriver_SexBaseInitiator + && (interactionDefs.Empty() || interactionDefs.ContainsAny(x => x == jobDriver_SexBaseInitiator.Sexprops.dictionaryKey)); + } + } +} diff --git a/1.6/Source/Animations/PawnTests/RJW/PawnTest_RJWRape.cs b/1.6/Source/Animations/PawnTests/RJW/PawnTest_RJWRape.cs new file mode 100644 index 0000000..ae01bd4 --- /dev/null +++ b/1.6/Source/Animations/PawnTests/RJW/PawnTest_RJWRape.cs @@ -0,0 +1,19 @@ +using rjw; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnTest_RJWRape : BasePawnTest + { + public override bool PawnTest(Pawn pawn) + { + return pawn?.jobs?.curDriver is JobDriver_Sex pawnSexJobDriver + && pawnSexJobDriver.Sexprops.isRape; + } + } +} diff --git a/1.6/Source/Animations/PawnTests/RJW/PawnTest_RJWReceiver.cs b/1.6/Source/Animations/PawnTests/RJW/PawnTest_RJWReceiver.cs new file mode 100644 index 0000000..4196f20 --- /dev/null +++ b/1.6/Source/Animations/PawnTests/RJW/PawnTest_RJWReceiver.cs @@ -0,0 +1,18 @@ +using rjw; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnTest_RJWReceiver : BasePawnTest + { + public override bool PawnTest(Pawn pawn) + { + return pawn.jobs?.curDriver is JobDriver_SexBaseReciever; + } + } +} diff --git a/1.6/Source/Animations/PawnTests/RJW/PawnTest_RJWSex.cs b/1.6/Source/Animations/PawnTests/RJW/PawnTest_RJWSex.cs new file mode 100644 index 0000000..249002c --- /dev/null +++ b/1.6/Source/Animations/PawnTests/RJW/PawnTest_RJWSex.cs @@ -0,0 +1,18 @@ +using rjw; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnTest_RJWSex : BasePawnTest + { + public override bool PawnTest(Pawn pawn) + { + return pawn.jobs?.curDriver is JobDriver_Sex; + } + } +} diff --git a/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_BodyType.cs b/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_BodyType.cs new file mode 100644 index 0000000..a7ab7d2 --- /dev/null +++ b/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_BodyType.cs @@ -0,0 +1,33 @@ +using RimWorld; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnTest_BodyType : BasePawnTest + { + public BodyTypeDef bodyType = null; + public List bodyTypes = null; + + public override bool PawnTest(Pawn pawn) + { + + if (pawn.story.bodyType == bodyType) + { + return true; + } + + else if(bodyTypes != null && bodyTypes.Contains(pawn.story.bodyType)) + { + return true; + } + + return false; + + } + } +} diff --git a/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_Dead.cs b/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_Dead.cs new file mode 100644 index 0000000..a021ce1 --- /dev/null +++ b/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_Dead.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnTest_Dead : BasePawnTest + { + + public override bool PawnTest(Pawn pawn) + { + return pawn.health.State == PawnHealthState.Dead; + } + } +} diff --git a/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_DeadOrDown.cs b/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_DeadOrDown.cs new file mode 100644 index 0000000..1787e5f --- /dev/null +++ b/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_DeadOrDown.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnTest_DeadOrDown : BasePawnTest + { + public override bool PawnTest(Pawn pawn) + { + return pawn.health.State != PawnHealthState.Mobile; + } + } +} diff --git a/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_Down.cs b/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_Down.cs new file mode 100644 index 0000000..758e594 --- /dev/null +++ b/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_Down.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnTest_Down : BasePawnTest + { + + public override bool PawnTest(Pawn pawn) + { + return pawn.health.State == PawnHealthState.Down; + } + } +} diff --git a/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_Hediff.cs b/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_Hediff.cs new file mode 100644 index 0000000..8849373 --- /dev/null +++ b/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_Hediff.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnTest_Hediff : BasePawnTest + { + public HediffDef hediffDef; //hediff you want to check for + float minSeverity = -1; //optional param; min severity the hediff needs to be + + + public override bool PawnTest(Pawn pawn) + { + Hediff hediff = pawn.health.hediffSet.GetFirstHediffOfDef(hediffDef); + + if (hediff != null) + { + if (minSeverity != -1) + { + return hediff.Severity > minSeverity; + } + + return true; + } + + return false; + } + } +} diff --git a/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_HostileToPlayer.cs b/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_HostileToPlayer.cs new file mode 100644 index 0000000..dada773 --- /dev/null +++ b/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_HostileToPlayer.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; +using RimWorld; + +namespace Rimworld_Animations +{ + public class PawnTest_HostileToPlayer : BasePawnTest + { + + public override bool PawnTest(Pawn pawn) + { + return pawn.HostileTo(Faction.OfPlayer); + } + } +} diff --git a/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_Humanlike.cs b/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_Humanlike.cs new file mode 100644 index 0000000..dbbf8fe --- /dev/null +++ b/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_Humanlike.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnTest_Humanlike : BasePawnTest + { + public override bool PawnTest(Pawn pawn) + { + return pawn.RaceProps.Humanlike; + } + } +} diff --git a/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_JobDef.cs b/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_JobDef.cs new file mode 100644 index 0000000..92346dc --- /dev/null +++ b/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_JobDef.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnTest_JobDef : BasePawnTest + { + public JobDef jobDef; + + public override bool PawnTest(Pawn pawn) + { + if (pawn.CurJobDef == jobDef) + { + return true; + } + return false; + } + } +} diff --git a/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_OfPlayerFaction.cs b/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_OfPlayerFaction.cs new file mode 100644 index 0000000..2d92411 --- /dev/null +++ b/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_OfPlayerFaction.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; +using RimWorld; + +namespace Rimworld_Animations +{ + public class PawnTest_OfPlayerFaction : BasePawnTest + { + + public override bool PawnTest(Pawn pawn) + { + return pawn.Faction == Faction.OfPlayer; + } + } +} diff --git a/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_PrisonerOfColony.cs b/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_PrisonerOfColony.cs new file mode 100644 index 0000000..190c57b --- /dev/null +++ b/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_PrisonerOfColony.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + class PawnTest_PrisonerOfColony : BasePawnTest + { + public override bool PawnTest(Pawn pawn) + { + return pawn.IsPrisonerOfColony; + } + } +} diff --git a/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_Race.cs b/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_Race.cs new file mode 100644 index 0000000..2f2f1fe --- /dev/null +++ b/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_Race.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnTest_Race : BasePawnTest + { + + public List races = new List(); + + public override bool PawnTest(Pawn pawn) + { + + foreach (ThingDef race in races) + { + if (pawn.def == race) + { + return true; + } + } + + return false; + + } + } +} diff --git a/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_SlaveOfColony.cs b/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_SlaveOfColony.cs new file mode 100644 index 0000000..b158779 --- /dev/null +++ b/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_SlaveOfColony.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + class PawnTest_SlaveOfColony : BasePawnTest + { + public override bool PawnTest(Pawn pawn) + { + return pawn.IsSlaveOfColony; + } + } +} diff --git a/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_Trait.cs b/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_Trait.cs new file mode 100644 index 0000000..df642ad --- /dev/null +++ b/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_Trait.cs @@ -0,0 +1,27 @@ +using RimWorld; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnTest_Trait : BasePawnTest + { + public TraitDef traitDef; + public int? degree; + + public override bool PawnTest(Pawn pawn) + { + + if (degree != null) + { + return pawn.story.traits.HasTrait(traitDef, (int)degree); + } + + return pawn.story.traits.HasTrait(traitDef); + } + } +} diff --git a/1.6/Source/Comps/CompExtendedAnimator.cs b/1.6/Source/Comps/CompExtendedAnimator.cs new file mode 100644 index 0000000..17ce3a3 --- /dev/null +++ b/1.6/Source/Comps/CompExtendedAnimator.cs @@ -0,0 +1,468 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using RimWorld; +using rjw; +using UnityEngine; +using Verse; +using Verse.AI; +using Verse.Sound; + +namespace Rimworld_Animations { + public class CompExtendedAnimator : ThingComp + { + + // CompExtendedAnimator + // Helps manage AnimationQueue, AbsolutePosition + //ticks of current animation + private int animationTicks, actorIndex; + + private int ticksSinceLastVoicePlayed, ticksUntilNextVoice; + + private GroupAnimationDef currentGroupAnimation; + + private List animationQueue; + private BaseExtendedAnimatorAnchor anchor; + private VoiceDef voice; + private VoiceTagDef lastVoiceTag; + + + private bool isAnimating = false; + + public bool IsAnimating + { + get + { + return isAnimating; + } + } + + public bool IsAnchored + { + get + { + return anchor != null; + } + } + + private Vector3 offset; + + public Vector3? Offset + { + get + { + return offset; + } + set + { + this.offset = value ?? Vector3.zero; + } + } + + private int rotation; + + public int? Rotation + { + get + { + return rotation; + } + set + { + this.rotation = value ?? 0; + } + } + + public int AnimationLength + { + get + { + if (!IsAnimating) return 0; + + int groupAnimLength = 0; + foreach(AnimationDef anim in animationQueue) + { + groupAnimLength += anim.durationTicks; + } + + return groupAnimLength; + + } + } + + public AnimationDef CurrentAnimation { + + get + { + return IsAnimating ? animationQueue[0] : null; + } + + } + + public GroupAnimationDef CurrentGroupAnimation + { + get + { + return currentGroupAnimation; + } + set + { + currentGroupAnimation = value; + } + } + + public int ActorIndex + { + get + { + return actorIndex; + } + } + + public override void PostSpawnSetup(bool respawningAfterLoad) + { + if (voice == null) + { + AssignNewVoice(); + } + + } + + public Vector3 getAnchor() + { + return anchor.getDrawPos(); + } + + public override void CompTick() + { + if (isAnimating) + { + animationTicks++; + + //if animationticks is equal to cur. anim duration, + if (animationTicks >= animationQueue[0].durationTicks) + { + //dequeue; returns false if more animations + if (!PopAnimationQueue()) + { + //play next if more anims still + PlayNextAnimation(); + } + else + { + StopAnimating(); + } + } + + CheckAndPlaySounds(); + + } + + + + base.CompTick(); + } + + //returns false if still more animations + public bool PopAnimationQueue() + { + + if (!animationQueue.Empty()) + { + //pop queue + animationQueue.RemoveAt(0); + } + + return animationQueue.Empty(); + } + + public void PlayNextAnimation() + { + if (!animationQueue.Empty()) + { + isAnimating = true; + animationTicks = 0; + pawn.Drawer.renderer.SetAnimation(animationQueue[0]); + } + } + + public void StopAnimating() + { + isAnimating = false; + animationQueue = null; + anchor = null; + offset = Vector3.zero; + pawn.Drawer.renderer.SetAnimation(null); + CurrentGroupAnimation = null; + actorIndex = 0; + pawn.Drawer.renderer.SetAllGraphicsDirty(); + } + + public void PlayGroupAnimation(GroupAnimationDef groupAnimationDef, int actorIndex, int randomSeed, List actors) + { + + this.actorIndex = actorIndex; + this.currentGroupAnimation = groupAnimationDef; + ticksSinceLastVoicePlayed = GenTicks.TicksGame; + ticksUntilNextVoice = 0; + + groupAnimationDef.GetOffset(actorIndex, this.pawn, out Vector3? offset, out int? rotation); + this.Offset = offset; + this.Rotation = rotation; + + + animationQueue = groupAnimationDef.GetAllAnimationsForActor(actorIndex, randomSeed, actors); + + + + //set all graphics dirty; necessary because sometimes rjw doesn't call during threesomes + pawn.Drawer.renderer.SetAllGraphicsDirty(); + + PlayNextAnimation(); + } + + public void PlayGroupAnimation(GroupAnimationDef groupAnimationDef, BaseExtendedAnimatorAnchor anchor, int animationIndex, int randomSeed, List actors) + { + this.anchor = anchor; + PlayGroupAnimation(groupAnimationDef, animationIndex, randomSeed, actors); + } + + public override void PostExposeData() + { + base.PostExposeData(); + Scribe_Values.Look(ref this.isAnimating, "animations_isAnimating", false); + Scribe_Values.Look(ref this.animationTicks, "animations_ticks", 0); + Scribe_Values.Look(ref this.actorIndex, "actor_index", 0); + Scribe_Collections.Look(ref animationQueue, "animations_queue"); + Scribe_Defs.Look(ref currentGroupAnimation, "animations_groupAnimationDef"); + Scribe_Deep.Look(ref this.anchor, "animations_anchor"); + Scribe_Values.Look(ref this.offset, "animations_offset", Vector3.zero); + Scribe_Values.Look(ref this.rotation, "animations_rotationOffset", 0); + Scribe_Defs.Look(ref this.voice, "animations_voice"); + + } + + public override List CompRenderNodes() + { + //only if pawn is animating for performance + if (IsAnimating) + { + + List animRenderNodes = new List(); + + // for all animationpropdefs, + foreach (AnimationPropDef animationProp in DefDatabase.AllDefsListForReading) + { + //if animation makes use of prop, + if (AnimationMakesUseOfProp(animationProp, out PawnRenderNodeProperties props)) + { + + if (props.texPath.NullOrEmpty()) + { + props.texPath = "AnimationProps/MissingTexture/MissingTexture"; + } + + + //create new render node + PawnRenderNode animRenderNode = (PawnRenderNode)Activator.CreateInstance(props.nodeClass, new object[] { + this.pawn, + props, + pawn.Drawer.renderer.renderTree + }); + + animRenderNodes.Add(animRenderNode); + } + + } + + //return list of rendernodes that should animate + return animRenderNodes; + + } + else + { + return null; + } + + } + + public void AssignNewVoice() + { + //all voice options + List voiceOptions = + DefDatabase.AllDefsListForReading + .FindAll(voiceDef => voiceDef.VoiceFitsPawn(pawn)); + + //all voice options, with priority (for traitdef specific voices) + List voiceOptionsWithPriority = + voiceOptions.FindAll(voiceDef => voiceDef.takesPriority); + + if (!voiceOptionsWithPriority.NullOrEmpty()) + { + voice = voiceOptionsWithPriority.RandomElementByWeight(x => x.randomChanceFactor); + + } + else if (!voiceOptions.NullOrEmpty()) + { + voice = voiceOptions.RandomElementByWeight(x => x.randomChanceFactor); + } + + } + + public void CheckAndPlaySounds() + { + + PawnRenderNode rootNode = pawn.Drawer?.renderer?.renderTree?.rootNode; + + //check if the rootnode has sounds; if so play it + if (rootNode?.AnimationWorker is AnimationWorker_KeyframesExtended animWorker) + { + SoundDef sound = animWorker.soundAtTick(rootNode.tree.AnimationTick, rootNode.tree.currentAnimation, rootNode); + + if (sound != null) + { + SoundInfo soundInfo = new TargetInfo(pawn.Position, pawn.Map); + + //temp; does not consider non-rjw animations + //todo: replace with value stored in comp or somewhere else? + soundInfo.volumeFactor = RJWAnimationSettings.soundVolume; + + sound.PlayOneShot(soundInfo); + } + + if (RJWAnimationSettings.playVoices) + { + SoundInfo voiceInfo = new TargetInfo(pawn.Position, pawn.Map); + voiceInfo.volumeFactor = RJWAnimationSettings.voicesVolume; + + //play voice sounds + VoiceTagDef voiceTag = animWorker.voiceAtTick(rootNode.tree.AnimationTick, rootNode.tree.currentAnimation, rootNode); + if (voiceTag != null + && (lastVoiceTag != voiceTag || ticksSinceLastVoicePlayed + ticksUntilNextVoice < GenTicks.TicksGame)) //play a new voice tag, or wait until time elapsed + { + lastVoiceTag = voiceTag; + ticksSinceLastVoicePlayed = GenTicks.TicksGame; + + if (voice != null && voice.sounds.ContainsKey(voiceTag)) + { + ticksUntilNextVoice = voice.ticksBetweenPlays.RandomInRange; + voice.sounds[voiceTag].PlayOneShot(voiceInfo); + } + + else if (pawn.RaceProps.Humanlike && RJWAnimationSettings.playHumanlikeVoicesAsDefault) + { + //play default voice + VoiceDef pawnDefaultVoice = (pawn.gender == Gender.Male ? VoiceDefOf.Voice_HumanMale : VoiceDefOf.Voice_HumanFemale); + + ticksUntilNextVoice = pawnDefaultVoice.ticksBetweenPlays.RandomInRange; + + if (pawnDefaultVoice.sounds.ContainsKey(voiceTag)) + { + ticksUntilNextVoice = pawnDefaultVoice.ticksBetweenPlays.RandomInRange; + pawnDefaultVoice.sounds[voiceTag].PlayOneShot(voiceInfo); + } + + + } + + } + } + + + } + + //check rootnodes and children + if (rootNode?.children != null) + { + foreach (PawnRenderNode node in rootNode?.children) + { + if (node?.AnimationWorker is AnimationWorker_KeyframesExtended childrenAnimWorker) + { + + + if (RJWAnimationSettings.playSounds) + { + SoundDef sound = childrenAnimWorker.soundAtTick(node.tree.AnimationTick, node.tree.currentAnimation, node); + + if (sound != null) + { + SoundInfo soundInfo = new TargetInfo(pawn.Position, pawn.Map); + soundInfo.volumeFactor = RJWAnimationSettings.soundVolume; + sound.PlayOneShot(soundInfo); + } + } + + if (RJWAnimationSettings.playVoices) + { + + SoundInfo voiceInfo = new TargetInfo(pawn.Position, pawn.Map); + voiceInfo.volumeFactor = RJWAnimationSettings.voicesVolume; + + //play voice sounds + VoiceTagDef voiceTag = childrenAnimWorker.voiceAtTick(rootNode.tree.AnimationTick, rootNode.tree.currentAnimation, rootNode); + if (voiceTag != null + && (lastVoiceTag != voiceTag || ticksSinceLastVoicePlayed + ticksUntilNextVoice < GenTicks.TicksGame)) //play a new voice tag, or wait until time elapsed + { + lastVoiceTag = voiceTag; + ticksSinceLastVoicePlayed = GenTicks.TicksGame; + + if (voice != null && voice.sounds.ContainsKey(voiceTag)) + { + ticksUntilNextVoice = voice.ticksBetweenPlays.RandomInRange; + voice.sounds[voiceTag].PlayOneShot(voiceInfo); + } + else if (pawn.RaceProps.Humanlike && RJWAnimationSettings.playHumanlikeVoicesAsDefault) + { + + VoiceDef pawnDefaultVoice = (pawn.gender == Gender.Male ? VoiceDefOf.Voice_HumanMale : VoiceDefOf.Voice_HumanFemale); + if (pawnDefaultVoice.sounds.ContainsKey(voiceTag)) + { + ticksUntilNextVoice = pawnDefaultVoice.ticksBetweenPlays.RandomInRange; + pawnDefaultVoice.sounds[voiceTag].PlayOneShot(voiceInfo); + } + } + } + } + } + } + } + //do the same for all the child nodes + + } + + + + + public bool AnimationMakesUseOfProp(AnimationPropDef animationProp, out PawnRenderNodeProperties props) + { + props = null; + // never true if not animating; anim props shouldn't be attached + if (!IsAnimating) return false; + + //for all anims in queue (because it's only recached at start) + foreach (AnimationDef animation in animationQueue) + { + foreach (PawnRenderNodeTagDef propTag in animation.keyframeParts.Keys) + { + //get specific props for that pawn + props = animationProp.GetPawnRenderNodeProperties(this.pawn); + + // if that proptag is the same as the one for animationProp, + if (propTag == props.tagDef) + { + //that prop is being used in the animation + return true; + } + } + + } + + + return false; + } + + private Pawn pawn => base.parent as Pawn; + + } + +} diff --git a/1.3/Source/Comps/CompProperties_BodyAnimator.cs b/1.6/Source/Comps/CompProperties_ExtendedAnimator.cs similarity index 55% rename from 1.3/Source/Comps/CompProperties_BodyAnimator.cs rename to 1.6/Source/Comps/CompProperties_ExtendedAnimator.cs index 09df7ce..47fc1a5 100644 --- a/1.3/Source/Comps/CompProperties_BodyAnimator.cs +++ b/1.6/Source/Comps/CompProperties_ExtendedAnimator.cs @@ -7,11 +7,12 @@ using Verse; using RimWorld; namespace Rimworld_Animations { - public class CompProperties_BodyAnimator : CompProperties + public class CompProperties_ExtendedAnimator : CompProperties { - public CompProperties_BodyAnimator() + public CompProperties_ExtendedAnimator() { - base.compClass = typeof(CompBodyAnimator); + base.compClass = typeof(CompExtendedAnimator); + } } } diff --git a/1.3/Source/Comps/CompProperties_ThingAnimator.cs b/1.6/Source/Comps/CompProperties_ThingAnimator.cs similarity index 100% rename from 1.3/Source/Comps/CompProperties_ThingAnimator.cs rename to 1.6/Source/Comps/CompProperties_ThingAnimator.cs diff --git a/1.6/Source/Comps/CompThingAnimator.cs b/1.6/Source/Comps/CompThingAnimator.cs new file mode 100644 index 0000000..64dcc59 --- /dev/null +++ b/1.6/Source/Comps/CompThingAnimator.cs @@ -0,0 +1,23 @@ +using RimWorld; +using rjw; +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 CompThingAnimator : ThingComp + { + + public override void CompTick() + { + //todo: If item is held by pawn, and pawn is doing thingcomp animation, + //animate thingcomp; see CompPowerPlantWind for how thingcomps are animated + return; + } + } + +} diff --git a/1.6/Source/Comps/ExtendedAnimatorAnchor/BaseExtendedAnimatorAnchor.cs b/1.6/Source/Comps/ExtendedAnimatorAnchor/BaseExtendedAnimatorAnchor.cs new file mode 100644 index 0000000..6116a8c --- /dev/null +++ b/1.6/Source/Comps/ExtendedAnimatorAnchor/BaseExtendedAnimatorAnchor.cs @@ -0,0 +1,23 @@ +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 BaseExtendedAnimatorAnchor : IExposable + { + public BaseExtendedAnimatorAnchor() { } + + public virtual void ExposeData() { } + public abstract Vector3 getDrawPos(); + + public string GetUniqueLoadID() + { + throw new NotImplementedException(); + } + } +} diff --git a/1.6/Source/Comps/ExtendedAnimatorAnchor/ExtendedAnimatorAnchor_Thing.cs b/1.6/Source/Comps/ExtendedAnimatorAnchor/ExtendedAnimatorAnchor_Thing.cs new file mode 100644 index 0000000..6f86334 --- /dev/null +++ b/1.6/Source/Comps/ExtendedAnimatorAnchor/ExtendedAnimatorAnchor_Thing.cs @@ -0,0 +1,41 @@ +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 ExtendedAnimatorAnchor_Thing : BaseExtendedAnimatorAnchor + { + public Thing AnchorThing + { + get + { + return thing; + } + } + private Thing thing; + + public ExtendedAnimatorAnchor_Thing() : base() { } + + public ExtendedAnimatorAnchor_Thing(Thing thing) : base() + { + this.thing = thing; + } + + public override Vector3 getDrawPos() + { + //x and z position, regular altitude for pawns + return new Vector3(thing.DrawPos.x, AltitudeLayer.Pawn.AltitudeFor(), thing.DrawPos.z); + } + + public override void ExposeData() + { + base.ExposeData(); + Scribe_References.Look(ref this.thing, "animations_anchor_thing", false); + } + } +} diff --git a/1.6/Source/Comps/ExtendedAnimatorAnchor/ExtendedAnimatorAnchor_Vector3.cs b/1.6/Source/Comps/ExtendedAnimatorAnchor/ExtendedAnimatorAnchor_Vector3.cs new file mode 100644 index 0000000..7eb5ed8 --- /dev/null +++ b/1.6/Source/Comps/ExtendedAnimatorAnchor/ExtendedAnimatorAnchor_Vector3.cs @@ -0,0 +1,34 @@ +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 ExtendedAnimatorAnchor_Vector3 : BaseExtendedAnimatorAnchor + { + + public ExtendedAnimatorAnchor_Vector3() : base() { } + + private Vector3 position; + public ExtendedAnimatorAnchor_Vector3(Vector3 position) : base() + { + //default to altitude for layer for y + this.position = new Vector3(position.x, AltitudeLayer.Pawn.AltitudeFor(), position.z); + } + + public override Vector3 getDrawPos() + { + return position; + } + + public override void ExposeData() + { + base.ExposeData(); + Scribe_Values.Look(ref position, "animations_anchor_position", Vector3.zero); + } + } +} diff --git a/1.6/Source/Defs/AnimationDefOf.cs b/1.6/Source/Defs/AnimationDefOf.cs new file mode 100644 index 0000000..99a766e --- /dev/null +++ b/1.6/Source/Defs/AnimationDefOf.cs @@ -0,0 +1,22 @@ +using RimWorld; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + [DefOf] + public static class AnimationDefOf + { + static AnimationDefOf() + { + DefOfHelper.EnsureInitializedInCtor(typeof(AnimationDefOf)); + } + + public static AnimationDef TestAnimation1; + public static AnimationDef TestAnimation2; + } +} diff --git a/1.6/Source/MainTabWindows/MainTabWindow_OffsetConfigure.cs b/1.6/Source/MainTabWindows/MainTabWindow_OffsetConfigure.cs new file mode 100644 index 0000000..318e9c2 --- /dev/null +++ b/1.6/Source/MainTabWindows/MainTabWindow_OffsetConfigure.cs @@ -0,0 +1,209 @@ +using System.Collections.Generic; +using Verse; +using RimWorld; +using UnityEngine; +using System.Windows; + +namespace Rimworld_Animations { + class MainTabWindow_OffsetConfigure : MainTabWindow + { + + public override Vector2 RequestedTabSize => new Vector2(505, 530); + public override void DoWindowContents(Rect inRect) { + + Rect position = new Rect(inRect.x, inRect.y, inRect.width, inRect.height); + + + Listing_Standard listingStandard = new Listing_Standard(); + listingStandard.Begin(position); + + listingStandard.Label("RimAnims_AnimManager".Translate()); + + listingStandard.GapLine(); + + if (Find.Selector.SingleSelectedThing is Pawn curPawn + && curPawn.TryGetComp(out CompExtendedAnimator extendedAnimator) + && extendedAnimator.IsAnimating) + { + //Pawn info about their body, race + Vector3 offsetPosition = extendedAnimator.Offset != null ? (Vector3)extendedAnimator.Offset : Vector3.zero; + int offsetRotation = extendedAnimator.Rotation != null ? (int)extendedAnimator.Rotation : 0; + + string pawnDef = curPawn.def.defName; + string bodyTypeDef = (curPawn.story?.bodyType != null) ? curPawn.story.bodyType.ToString() : "None"; + string genderDef = curPawn.gender.ToString(); + string currentAnimation = extendedAnimator.CurrentAnimation != null ? extendedAnimator.CurrentAnimation.defName : "None"; + + listingStandard.Label(curPawn.Name + ": " + curPawn.def.defName + ", " + bodyTypeDef + ", " + genderDef + ", Animation: " + currentAnimation); + + if (curPawn.def.defName == "Human") + { + listingStandard.Label("RimAnims_Warning".Translate()); + } + + float posX = offsetPosition.x, posY = offsetPosition.y, posZ = offsetPosition.z; + int rot = offsetRotation; + + float.TryParse(listingStandard.TextEntryLabeled("X: ", posX.ToString()), out posX); + posX = listingStandard.Slider(posX, -2, 2); + + float.TryParse(listingStandard.TextEntryLabeled("Y: ", offsetPosition.y.ToString()), out posY); + posY = listingStandard.Slider(posY, -2, 2); + + float.TryParse(listingStandard.TextEntryLabeled("Z: ", posZ.ToString()), out posZ); + posZ = listingStandard.Slider(posZ, -2, 2); + + int.TryParse(listingStandard.TextEntryLabeled("Rotation: ", rot.ToString()), out rot); + rot = (int)listingStandard.Slider(rot, -180, 180); + + if (listingStandard.ButtonText("RimAnims_Reset".Translate())) + { + if (!RJWAnimationSettings.offsets.NullOrEmpty() + && RJWAnimationSettings.offsets.ContainsKey(AnimationUtility.OffsetLookupKey(curPawn))) + { + RJWAnimationSettings.offsets[AnimationUtility.OffsetLookupKey(curPawn)].Reset(); + } + posX = posY = posZ = rot = 0; + + } + + listingStandard.GapLine(); + Vector3 newOffsetVector = new Vector3(posX, posY, posZ); + + string offset = "
  • "; + offset += bodyTypeDef != "None" ? "" + bodyTypeDef + "" : ""; + offset += newOffsetVector != Vector3.zero ? "(" + posX + ", " + posY + ", " + posZ + ")" : ""; + offset += rot != 0 ? "" + rot + "" : ""; + offset += "
  • "; + + listingStandard.Label("Appropriate Offset value for " + currentAnimation + ", " + pawnDef + ", " + bodyTypeDef + ", " + genderDef + ": "); + listingStandard.Label(offset); + + if (listingStandard.ButtonText("RimAnims_CopyToClipboard".Translate())) + { + + GUIUtility.systemCopyBuffer = offset; + + } + + listingStandard.Label("RimAnims_ShareSettings".Translate()); + + if (extendedAnimator.Offset != newOffsetVector || extendedAnimator.Rotation != rot) + { + // update current animation offsets + extendedAnimator.Offset = newOffsetVector; + extendedAnimator.Rotation = rot; + + //init offsets dictionary if necessary + if (RJWAnimationSettings.offsets == null) RJWAnimationSettings.offsets = new Dictionary(); + + //create new file entry if one doesn't exist + if (!RJWAnimationSettings.offsets.ContainsKey(AnimationUtility.OffsetLookupKey(curPawn))) + { + RJWAnimationSettings.offsets[AnimationUtility.OffsetLookupKey(curPawn)] = new PawnScaledOffsets(); + } + + // save the offsets to file + RJWAnimationSettings.offsets[AnimationUtility.OffsetLookupKey(curPawn)].AssignOffsets(curPawn, newOffsetVector, rot); + + } + } + + else + { + listingStandard.Label("Select a pawn currently in an animation to change their offsets"); + } + + listingStandard.End(); + + } + } +} + +/** + if (curPawn.TryGetComp animator) { + + + + /* + CompBodyAnimator compBodyAnimator = curPawn.TryGetComp(); + AnimationDef def = compBodyAnimator.CurrentAnimation; + int ActorIndex = compBodyAnimator.ActorIndex; + float offsetX = 0, offsetZ = 0, rotation = 0; + + string bodyTypeDef = (curPawn.story?.bodyType != null) ? curPawn.story.bodyType.ToString() : ""; + + if (AnimationSettings.offsets.ContainsKey(def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex)) { + offsetX = AnimationSettings.offsets[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex].x; + offsetZ = AnimationSettings.offsets[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex].y; + } else { + AnimationSettings.offsets.Add(def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex, new Vector2(0, 0)); + } + + if (AnimationSettings.rotation.ContainsKey(def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex)) { + rotation = AnimationSettings.rotation[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex]; + } + else { + AnimationSettings.rotation.Add(def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex, 0); + } + + listingStandard.Label("Name: " + curPawn.Name + " Race: " + curPawn.def.defName + " Actor Index: " + curPawn.TryGetComp().ActorIndex + " Body Type (if any): " + bodyTypeDef + " Animation: " + def.label + (curPawn.TryGetComp().Mirror ? " mirrored" : "")); + + if(curPawn.def.defName == "Human") { + listingStandard.Label("Warning--You generally don't want to change human offsets, only alien offsets"); + } + + float.TryParse(listingStandard.TextEntryLabeled("X Offset: ", offsetX.ToString()), out offsetX); + offsetX = listingStandard.Slider(offsetX, -2, 2); + + float.TryParse(listingStandard.TextEntryLabeled("Z Offset: ", offsetZ.ToString()), out offsetZ); + offsetZ = listingStandard.Slider(offsetZ, -2, 2); + + float.TryParse(listingStandard.TextEntryLabeled("Rotation: ", rotation.ToString()), out rotation); + rotation = listingStandard.Slider(rotation, -180, 180); + + if(listingStandard.ButtonText("Reset All")) { + offsetX = 0; + offsetZ = 0; + rotation = 0; + } + + listingStandard.GapLine(); + + if(listingStandard.ButtonText("Shift Actors")) { + + if(AnimationSettings.debugMode) { + Log.Message("Shifting actors in animation..."); + } + + for(int i = 0; i < curPawn.TryGetComp().actorsInCurrentAnimation.Count; i++) { + + Pawn actor = curPawn.TryGetComp().actorsInCurrentAnimation[i]; + + actor.TryGetComp()?.shiftActorPositionAndRestartAnimation(); + + //reset the clock time of every pawn in animation + if(actor.jobs.curDriver is rjw.JobDriver_Sex) { + (actor.jobs.curDriver as rjw.JobDriver_Sex).ticks_left = def.animationTimeTicks; + (actor.jobs.curDriver as rjw.JobDriver_Sex).ticksLeftThisToil = def.animationTimeTicks; + (actor.jobs.curDriver as rjw.JobDriver_Sex).duration = def.animationTimeTicks; + } + + } + + } + + if (offsetX != AnimationSettings.offsets[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex].x || offsetZ != AnimationSettings.offsets[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex].y) { + AnimationSettings.offsets[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex] = new Vector2(offsetX, offsetZ); + + } + + if(rotation != AnimationSettings.rotation[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex]) { + AnimationSettings.rotation[def.defName + curPawn.def.defName + bodyTypeDef + ActorIndex] = rotation; + } + + } + +} + */ + diff --git a/1.3/Source/MainTabWindows/OffsetMainButtonDefOf.cs b/1.6/Source/MainTabWindows/OffsetMainButtonDefOf.cs similarity index 100% rename from 1.3/Source/MainTabWindows/OffsetMainButtonDefOf.cs rename to 1.6/Source/MainTabWindows/OffsetMainButtonDefOf.cs diff --git a/1.4/Source/MainTabWindows/WorldComponent_UpdateMainTab.cs b/1.6/Source/MainTabWindows/WorldComponent_UpdateMainTab.cs similarity index 76% rename from 1.4/Source/MainTabWindows/WorldComponent_UpdateMainTab.cs rename to 1.6/Source/MainTabWindows/WorldComponent_UpdateMainTab.cs index 2694419..554f9ab 100644 --- a/1.4/Source/MainTabWindows/WorldComponent_UpdateMainTab.cs +++ b/1.6/Source/MainTabWindows/WorldComponent_UpdateMainTab.cs @@ -14,9 +14,9 @@ namespace Rimworld_Animations { } - public override void FinalizeInit() { - base.FinalizeInit(); - OffsetMainButtonDefOf.OffsetManager.buttonVisible = AnimationSettings.offsetTab; + public override void FinalizeInit(bool fromLoad) { + base.FinalizeInit(fromLoad); + OffsetMainButtonDefOf.OffsetManager.buttonVisible = RJWAnimationSettings.offsetTab; } diff --git a/1.3/Source/Patches/Harmony_PatchAll.cs b/1.6/Source/Patches/Harmony_PatchAll.cs similarity index 100% rename from 1.3/Source/Patches/Harmony_PatchAll.cs rename to 1.6/Source/Patches/Harmony_PatchAll.cs diff --git a/1.3/Source/Patches/RJWPatches/HarmonyPatch_WorkGiverSex.cs b/1.6/Source/Patches/RJWPatches/HarmonyPatch_WorkGiverSex.cs similarity index 100% rename from 1.3/Source/Patches/RJWPatches/HarmonyPatch_WorkGiverSex.cs rename to 1.6/Source/Patches/RJWPatches/HarmonyPatch_WorkGiverSex.cs diff --git a/1.4/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_JoinInBed.cs b/1.6/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_JoinInBed.cs similarity index 87% rename from 1.4/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_JoinInBed.cs rename to 1.6/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_JoinInBed.cs index bbbb0b8..0f63b7d 100644 --- a/1.4/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_JoinInBed.cs +++ b/1.6/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_JoinInBed.cs @@ -56,14 +56,6 @@ namespace Rimworld_Animations toils[2] = startPartnerSex; - toils[3].AddPreTickAction(() => - { - if (!CompBodyAnimator.IsAnimating(__instance.Partner)) - { - __instance.pawn.TryGetComp().isAnimating = false; - } - }); - __result = toils.AsEnumerable(); } } diff --git a/1.6/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_Masturbate.cs b/1.6/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_Masturbate.cs new file mode 100644 index 0000000..d7c9e98 --- /dev/null +++ b/1.6/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_Masturbate.cs @@ -0,0 +1,55 @@ +using HarmonyLib; +using rjw; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; +using Verse.AI; + +namespace Rimworld_Animations +{ + [HarmonyPatch(typeof(JobDriver_Masturbate), "SetupDurationTicks")] + public class HarmonyPatch_JobDriver_Masturbate + { + public static void Postfix(JobDriver_Masturbate __instance) + { + //prevent early stoppage of masturbate jobdriver during animation + + /* not needed anymore? Ticks are assigned during animation + + __instance.duration = 10000000; + __instance.ticks_left = __instance.duration; + + */ + + } + } + + [HarmonyPatch(typeof(JobDriver_Masturbate), "MakeNewToils")] + public class HarmonyPatch_JobDriver_Masturbate2 + { + public static void Postfix(JobDriver_Masturbate __instance, ref IEnumerable __result) + { + + var toils = __result.ToList(); + + //sex toil + toils[1].initAction += delegate () + { + CompExtendedAnimator pawnAnimator = __instance.pawn.TryGetComp(); + + // if pawn was given an animation to play, + if (pawnAnimator.IsAnimating) + { + //set duration of masturbate toil to anim length + toils[1].defaultDuration = pawnAnimator.AnimationLength; + } + + }; + + __result = toils.AsEnumerable(); + } + } +} diff --git a/1.6/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_Sex.cs b/1.6/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_Sex.cs new file mode 100644 index 0000000..622b7c1 --- /dev/null +++ b/1.6/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_Sex.cs @@ -0,0 +1,66 @@ +using HarmonyLib; +using rjw; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using UnityEngine; +using Verse; + +namespace Rimworld_Animations +{ + + [HarmonyPatch(typeof(JobDriver_Sex), "setup_ticks")] + public class HarmonyPatch_JobDriver_Sex + { + public static void Postfix(JobDriver_Sex __instance) + { + if (!RJWAnimationSettings.hearts) + { + __instance.ticks_between_hearts = int.MaxValue; + } + + } + } + + [HarmonyPatch(typeof(JobDriver_Sex), "SexTick")] + public class HarmonyPatch_JobDriver_Sex2 + { + public static void Postfix(JobDriver_Sex __instance, Pawn pawn, Thing target) + { + //if neverending sex and pawn doesn't have an animation, + if (__instance.neverendingsex + && !pawn.TryGetComp().IsAnimating) + { + + //start a new animation for all the pawns paired with receiver job driver + List participants; + if (target is Pawn receiverPawn) + { + participants = (receiverPawn?.jobs?.curDriver as JobDriver_SexBaseReciever)?.parteners; + if (!participants.NullOrEmpty() && !participants.Contains(receiverPawn)) + { + participants = participants.Append(receiverPawn).ToList(); + } + } + else + { + participants = new List { pawn }; + } + + + GroupAnimationDef animation = AnimationUtility.FindGroupAnimation(participants, out List participantsOrdered); + if (animation != null) + { + Thing anchor = (Thing)__instance.Bed ?? pawn; + AnimationUtility.StartGroupAnimation(participantsOrdered, animation, anchor); + } + + + } + + } + } + +} diff --git a/1.6/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs b/1.6/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs new file mode 100644 index 0000000..36a1316 --- /dev/null +++ b/1.6/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs @@ -0,0 +1,133 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using HarmonyLib; +using RimWorld; +using Verse; +using rjw; + +namespace Rimworld_Animations +{ + + [HarmonyPatch(typeof(JobDriver_SexBaseInitiator), "Start")] + static class HarmonyPatch_JobDriver_SexBaseInitiator_Start + { + public static void Postfix(ref JobDriver_SexBaseInitiator __instance) + { + + Pawn pawn = __instance.pawn; + Pawn partner = (__instance.Target as Corpse)?.InnerPawn ?? __instance.Target as Pawn; + + List participants; + + if (__instance is JobDriver_Masturbate) + { + participants = new List() { pawn }; + } + else if (__instance is JobDriver_ViolateCorpse) + { + participants = new List() { pawn, partner }; + } + else + { + + //Partner should be in a sexbasereciever job + if (!(partner.jobs?.curDriver is JobDriver_SexBaseReciever)) + { + if (RJWAnimationSettings.debugMode) + { + Log.Warning("Warning: partner was not in a sex state when trying to start animation!"); + } + return; + } + + participants = (partner?.jobs?.curDriver as JobDriver_SexBaseReciever)?.parteners.ToList(); + if (!participants.Contains(partner)) + { + participants = participants.Append(partner).ToList(); + } + } + + GroupAnimationDef groupAnimation = AnimationUtility.FindGroupAnimation(participants, out List participantsOrdered); + + if (groupAnimation != null) + { + Thing anchor = (Thing)__instance.Bed ?? partner; + + AnimationUtility.StartGroupAnimation(participantsOrdered, groupAnimation, anchor); + int animTicks = AnimationUtility.GetAnimationLength(pawn); + + Log.Message("InteractionDef: " + __instance.Sexprops.dictionaryKey); + foreach (Pawn participant in participants) + { + if (RJWAnimationSettings.debugMode) + { + Log.Message("Participant: " + participant.Name); + Log.Message("JobDriver: " + participant.CurJobDef.defName); + } + + //null ref check for pawns that might have lost their jobs or become null for some reason + if (participant?.jobs?.curDriver is JobDriver_Sex participantJobDriver) + { + participantJobDriver.ticks_left = animTicks; + participantJobDriver.sex_ticks = animTicks; + participantJobDriver.orgasmStartTick = animTicks; + participantJobDriver.duration = animTicks; + } + } + } + /* + * not necessary anymore because removed masturbate infinite ticks + * + else + { + + //backup check for if masturbation doesn't have anim + //reset duration and ticks_left to the regular RJW values + //because of HarmonyPatch_JobDriver_Masturbate setting the values large to prevent early stoppage + foreach (Pawn participant in participants) + { + if (participant?.jobs?.curDriver is JobDriver_Sex participantJobDriver) + { + participantJobDriver.duration = (int)(xxx.is_frustrated(participant) ? (2500f * Rand.Range(0.2f, 0.7f)) : (2500f * Rand.Range(0.2f, 0.4f))); + participantJobDriver.ticks_left = participantJobDriver.duration; + + } + + } + } + + */ + + } + + } + + + [HarmonyPatch(typeof(JobDriver_SexBaseInitiator), "End")] + static class HarmonyPatch_JobDriver_SexBaseInitiator_End + { + + public static void Prefix(ref JobDriver_SexBaseInitiator __instance) + { + //stop pawn animating + AnimationUtility.StopGroupAnimation(__instance.pawn); + + //stop partner animating + if (__instance.Partner is Pawn partner) + { + AnimationUtility.StopGroupAnimation(partner); + } + + //stop partner's other partners (threesome pawns) animating + //added null ref checks for instances when pawns get nulled or lose their jobs + if (__instance.Partner?.jobs?.curDriver is JobDriver_SexBaseReciever partnerReceiverJob) + { + foreach (Pawn pawn in partnerReceiverJob.parteners) + { + if (pawn != null) AnimationUtility.StopGroupAnimation(pawn); + } + } + } + } +} diff --git a/1.6/Source/Patches/RJWPatches/JobDrivers/JobDriver_Sex/HarmonyPatch_Animate.cs b/1.6/Source/Patches/RJWPatches/JobDrivers/JobDriver_Sex/HarmonyPatch_Animate.cs new file mode 100644 index 0000000..4de97aa --- /dev/null +++ b/1.6/Source/Patches/RJWPatches/JobDrivers/JobDriver_Sex/HarmonyPatch_Animate.cs @@ -0,0 +1,53 @@ +using HarmonyLib; +using rjw; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + [HarmonyPatch(typeof(JobDriver_Sex), "Animate")] + public class HarmonyPatch_Animate + { + public static bool Prefix(ref JobDriver_Sex __instance, ref Pawn pawn, ref Thing target) + { + //remove all bumping stuff in animations; keep draw nude code + __instance.RotatePawns(pawn, __instance.Partner); + if (target != null) + { + Pawn pawn2 = target as Pawn; + + if (pawn2 != null && !__instance.Sexprops.isRapist) + { + // if not (pawn has root node and rootnode is animating) + if (!(pawn2?.Drawer?.renderer?.renderTree?.rootNode is PawnRenderNode rootNode + && (rootNode.AnimationWorker is AnimationWorker_KeyframesExtended || rootNode.children.Any(x => x.AnimationWorker is AnimationWorker_KeyframesExtended)))) + { + //play bumpin anim + pawn.Drawer.Notify_MeleeAttackOn(target); + } + + } + + if (!__instance.isEndytophile) + { + SexUtility.DrawNude(pawn, false); + if (pawn2 != null) + { + SexUtility.DrawNude(pawn2, false); + return false; + } + } + } + else if (!__instance.isEndytophile) + { + SexUtility.DrawNude(pawn, false); + } + + return false; + } + } +} diff --git a/1.4/Source/Patches/RJWPatches/HarmonyPatch_PlaySexSounds.cs b/1.6/Source/Patches/RJWPatches/JobDrivers/JobDriver_Sex/HarmonyPatch_PlaySexSounds.cs similarity index 65% rename from 1.4/Source/Patches/RJWPatches/HarmonyPatch_PlaySexSounds.cs rename to 1.6/Source/Patches/RJWPatches/JobDrivers/JobDriver_Sex/HarmonyPatch_PlaySexSounds.cs index 25d93b9..dfbefe6 100644 --- a/1.4/Source/Patches/RJWPatches/HarmonyPatch_PlaySexSounds.cs +++ b/1.6/Source/Patches/RJWPatches/JobDrivers/JobDriver_Sex/HarmonyPatch_PlaySexSounds.cs @@ -1,5 +1,6 @@ using HarmonyLib; using rjw; +using Verse; namespace Rimworld_Animations { @@ -8,12 +9,14 @@ namespace Rimworld_Animations { public static bool Prefix(JobDriver_Sex __instance) { - if (CompBodyAnimator.IsAnimating(__instance.pawn)) + if (__instance.pawn?.TryGetComp() != null + && __instance.pawn.TryGetComp().IsAnimating) { return false; } return true; + } } } diff --git a/1.3/Source/Patches/RJWPatches/HarmonyPatch_SexTick.cs b/1.6/Source/Patches/RJWPatches/JobDrivers/JobDriver_Sex/HarmonyPatch_SexTick.cs similarity index 83% rename from 1.3/Source/Patches/RJWPatches/HarmonyPatch_SexTick.cs rename to 1.6/Source/Patches/RJWPatches/JobDrivers/JobDriver_Sex/HarmonyPatch_SexTick.cs index 9ba03b2..3508837 100644 --- a/1.3/Source/Patches/RJWPatches/HarmonyPatch_SexTick.cs +++ b/1.6/Source/Patches/RJWPatches/JobDrivers/JobDriver_Sex/HarmonyPatch_SexTick.cs @@ -38,16 +38,12 @@ namespace Rimworld_Animations __instance.PlaySexSound(); if (!__instance.Sexprops.isRape) { - pawn.GainComfortFromCellIfPossible(false); + pawn.GainComfortFromCellIfPossible(__instance.ticks_between_thrusts); if (target is Pawn) { - (target as Pawn).GainComfortFromCellIfPossible(false); + (target as Pawn).GainComfortFromCellIfPossible(__instance.ticks_between_thrusts); } } - if(!__instance.isEndytophile) - { - SexUtility.DrawNude(pawn, false); - } } return false; diff --git a/1.4/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseReceiverLoved.cs b/1.6/Source/Patches/RJWPatches/JobDrivers/SexBaseReceivers/HarmonyPatch_JobDriver_SexBaseReceiverLoved.cs similarity index 64% rename from 1.4/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseReceiverLoved.cs rename to 1.6/Source/Patches/RJWPatches/JobDrivers/SexBaseReceivers/HarmonyPatch_JobDriver_SexBaseReceiverLoved.cs index dfa116e..ca4df23 100644 --- a/1.4/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseReceiverLoved.cs +++ b/1.6/Source/Patches/RJWPatches/JobDrivers/SexBaseReceivers/HarmonyPatch_JobDriver_SexBaseReceiverLoved.cs @@ -1,28 +1,35 @@ -using System; +using HarmonyLib; +using RimWorld; +using rjw; +using System; using System.Collections.Generic; using System.Linq; +using System.Reflection.Emit; using System.Text; using System.Threading.Tasks; -using HarmonyLib; -using RimWorld; -using Verse; -using rjw; -using System.Reflection.Emit; using Verse.AI; namespace Rimworld_Animations { - [HarmonyPatch(typeof(JobDriver_SexBaseRecieverLoved), "MakeSexToil")] - public static class HarmonyPatch_JobDriver_SexBaseReceiverLoved + public class HarmonyPatch_JobDriver_SexBaseReceiverLoved { + public static void Postfix(JobDriver_SexBaseRecieverLoved __instance, ref Toil __result) + { + //added for sudden end of jobdriver + __result.AddFinishAction(delegate { + AnimationUtility.StopGroupAnimation(__instance.pawn); + }); + } + public static IEnumerable Transpiler(IEnumerable codeInstructions) { var ins = codeInstructions.ToList(); - for(int i = 0; i < ins.Count; i++) + for (int i = 0; i < ins.Count; i++) { - if(i < ins.Count && ins[i].opcode == OpCodes.Call && ins[i].OperandIs(AccessTools.DeclaredMethod(typeof(Toils_LayDown), "LayDown"))) { + if (i < ins.Count && ins[i].opcode == OpCodes.Call && ins[i].OperandIs(AccessTools.DeclaredMethod(typeof(Toils_LayDown), "LayDown"))) + { ins[i].operand = AccessTools.DeclaredMethod(typeof(HarmonyPatch_JobDriver_SexBaseReceiverLoved), "DoNotLayDown"); yield return ins[i]; @@ -41,6 +48,5 @@ namespace Rimworld_Animations { return new Toil(); } - } } diff --git a/1.6/Source/Patches/RJWPatches/JobDrivers/SexBaseReceivers/HarmonyPatch_JobDriver_SexBaseReceiverRaped.cs b/1.6/Source/Patches/RJWPatches/JobDrivers/SexBaseReceivers/HarmonyPatch_JobDriver_SexBaseReceiverRaped.cs new file mode 100644 index 0000000..703bdcc --- /dev/null +++ b/1.6/Source/Patches/RJWPatches/JobDrivers/SexBaseReceivers/HarmonyPatch_JobDriver_SexBaseReceiverRaped.cs @@ -0,0 +1,29 @@ +using HarmonyLib; +using rjw; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse.AI; + +namespace Rimworld_Animations +{ + [HarmonyPatch(typeof(JobDriver_SexBaseRecieverRaped), "MakeNewToils")] + public class HarmonyPatch_JobDriver_SexBaseReceiverRaped + { + /* + * Doesn't work; ienumerables are read-only, can't modify toil + * would need to harmonypatch; stopped partner animating in sexbaseinitiator instead + * + public static void Postfix(JobDriver_SexBaseRecieverRaped __instance, ref IEnumerable __result) + { + //added for sudden end of jobdriver + __result.Last().AddFinishAction(delegate { + AnimationUtility.StopGroupAnimation(__instance.pawn); + }); + } + + */ + } +} diff --git a/1.6/Source/Patches/RimworldPatches/HarmonyPatch_Dialog_DebugRenderTree.cs b/1.6/Source/Patches/RimworldPatches/HarmonyPatch_Dialog_DebugRenderTree.cs new file mode 100644 index 0000000..eadccea --- /dev/null +++ b/1.6/Source/Patches/RimworldPatches/HarmonyPatch_Dialog_DebugRenderTree.cs @@ -0,0 +1,47 @@ +using HarmonyLib; +using RimWorld; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Reflection.Emit; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + [HarmonyPatch(typeof(Dialog_DebugRenderTree), "RightRect")] + public static class HarmonyPatch_Dialog_DebugRenderTree + { + + static MethodInfo replaceFloatRangeMethod = SymbolExtensions.GetMethodInfo(() => HarmonyPatch_Dialog_DebugRenderTree.ReplaceFloatValueRange()); + + public static IEnumerable Transpiler(IEnumerable instructions) + { + var codes = new List(instructions); + + for (int i = 0; i < codes.Count; i++) + { + //increase granularity of x and z sliders to be 0.01 instead + if (codes[i].opcode == OpCodes.Ldc_R4 && (float)codes[i].operand == 0.05f) + { + codes[i].operand = 0.001f; + codes[i - 8].opcode = OpCodes.Call; + codes[i - 8].operand = replaceFloatRangeMethod; + + } + + } + + return codes.AsEnumerable(); + + } + + public static FloatRange ReplaceFloatValueRange() + { + return new FloatRange(-RJWAnimationSettings.floatRangeInRenderTreeMenu, RJWAnimationSettings.floatRangeInRenderTreeMenu); + } + + } +} diff --git a/1.6/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderNode.cs b/1.6/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderNode.cs new file mode 100644 index 0000000..cbdc70a --- /dev/null +++ b/1.6/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderNode.cs @@ -0,0 +1,63 @@ +using HarmonyLib; +using RimWorld; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + // Head Rotation Code - Textures + // it's fine to just edit each AppendRequests individually + // because they all the parms are passed down to each child node recursively + [HarmonyPatch(typeof(PawnRenderNode), "AppendRequests")] + public static class HarmonyPatch_PawnRenderNode + { + //if rendernodetag is head, update PawnDrawParms so that head, and all children, are rotated for anim + public static bool Prefix(ref PawnRenderNode __instance, ref PawnDrawParms parms) + { + if (__instance.AnimationWorker is AnimationWorker_KeyframesExtended extendedAnimWorker) + { + + if (parms.Portrait) return true; + + // ADJUST FACING get rotated textures + // compare the previous tick to the current tick; if the current tick rotation is different, recache + parms.facing = extendedAnimWorker.facingAtTick(__instance.tree.AnimationTick, __instance.tree.currentAnimation, __instance); + + + //INVIS IF ANIM CALLS FOR IT + //replace maybe? + + //cheaper call now comparing prev tick to cur tick + + //not necessary because of new rendernodeworker hiding props now + //nvm, keep it because you can hide head and body too, if need be + return extendedAnimWorker.visibleAtTick(__instance.tree.AnimationTick, __instance.tree.currentAnimation, __instance); + + } + + return true; + + } + } + /* + * no longer needed; taken care of by graphic variants + * + // For changing texture path of thing to variant + [HarmonyPatch(typeof(PawnRenderNode), "TexPathFor")] + public static class HarmonyPatch_PawnRenderNode2 + { + public static void Postfix(ref PawnRenderNode __instance, ref string __result) + { + if (__instance.AnimationWorker is AnimationWorker_KeyframesExtended animWorker) + { + __result += animWorker.TexPathVariantAtTick(__instance.tree.AnimationTick); + } + } + } + + */ +} diff --git a/1.6/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderNodeWorker.cs b/1.6/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderNodeWorker.cs new file mode 100644 index 0000000..67981ed --- /dev/null +++ b/1.6/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderNodeWorker.cs @@ -0,0 +1,40 @@ +using HarmonyLib; +using RimWorld; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + + [HarmonyPatch(typeof(PawnRenderNodeWorker), "CanDrawNow")] + public class HarmonyPatch_PawnRenderTreeWorker + { + public static bool Prefix(PawnRenderNode node, ref bool __result) + { + //switching to this system so that head or body can be hidden separate from other nodes + //(hide head but not addons, etc) + //in case someone wanted to do that + + if (node.AnimationWorker is AnimationWorker_KeyframesExtended animWorker) + { + if (!animWorker.visibleAtTick(node.tree.AnimationTick, node.tree.currentAnimation, node)) + { + __result = false; + return false; + } + + //visible when animating + return true; + } + + return true; + } + + } + +} + diff --git a/1.6/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderTree.cs b/1.6/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderTree.cs new file mode 100644 index 0000000..c62bcc4 --- /dev/null +++ b/1.6/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderTree.cs @@ -0,0 +1,155 @@ +using HarmonyLib; +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 +{ + + [HarmonyPatch(typeof(PawnRenderTree), "TryGetMatrix")] + public class HarmonyPatch_PawnRenderTree + { + public static bool Prefix(PawnRenderTree __instance, Dictionary ___nodesByTag, Dictionary> ___nodeAncestors, PawnRenderNode node, ref PawnDrawParms parms, ref Matrix4x4 matrix, ref bool __result) + { + /* + * Facing offsets fix + */ + //find lowest parent that is animating, or nothing if not animating + + //don't do anything if portrait + if (parms.Portrait) return true; + + PawnRenderNode animatingNode = node; + while (animatingNode != null + && !(animatingNode.AnimationWorker is AnimationWorker_KeyframesExtended)) + { + animatingNode = animatingNode.parent; + } + + //if animating parent node found, + if (animatingNode?.AnimationWorker is AnimationWorker_KeyframesExtended animatingNodeAnimationWorker) + { + //change parm to facing to animate correctly + parms.facing = animatingNodeAnimationWorker.facingAtTick(__instance.AnimationTick, animatingNode.tree.currentAnimation, animatingNode); + } + + /* + * Set Render Node to absolute transform + */ + if (node.Props is PawnRenderNodeProperties_GraphicVariants graphicVariantProp) + { + + //absolute transform -- floating + if (graphicVariantProp.absoluteTransform) + { + + matrix = parms.matrix; + + //absolute transform -- just use the node's transform, not its ancestors + node.GetTransform(parms, out Vector3 offset, out Vector3 pivot, out Quaternion quaternion, out Vector3 scale); + + if (offset != Vector3.zero) matrix *= Matrix4x4.Translate(offset); + if (pivot != Vector3.zero) matrix *= Matrix4x4.Translate(pivot); + if (quaternion != Quaternion.identity) matrix *= Matrix4x4.Rotate(quaternion); + if (scale != Vector3.one) matrix *= Matrix4x4.Scale(scale); + if (pivot != Vector3.zero) matrix *= Matrix4x4.Translate(scale).inverse; + + float num = node.Worker.AltitudeFor(node, parms); + if (num != 0f) + { + matrix *= Matrix4x4.Translate(Vector3.up * num); + } + + __result = true; + return false; + + } + + //for graphic variant props to scale independently + else if (graphicVariantProp.scaleIndependently) + { + matrix = parms.matrix; + + if (!___nodeAncestors.TryGetValue(node, out var value)) + { + __instance.SetDirty(); + AccessTools.Method(typeof(PawnRenderTree), "TrySetupGraphIfNeeded").Invoke(__instance, new object[] { }); + + if (!___nodeAncestors.TryGetValue(node, out value)) + { + __result = false; + return false; + } + } + for (int i = 0; i < value.Count; i++) + { + value[i].GetTransform(parms, out var offset, out var pivot, out var rotation, out var scale); + bool canRotate = !node.Props.rotateIndependently || value[i] == node; + bool canScale = !graphicVariantProp.scaleIndependently || value[i] == node; + + if (offset != Vector3.zero) matrix *= Matrix4x4.Translate(offset); + if (pivot != Vector3.zero) matrix *= Matrix4x4.Translate(pivot); + if (canRotate && rotation != Quaternion.identity) matrix *= Matrix4x4.Rotate(rotation); + if (canScale && scale != Vector3.one) matrix *= Matrix4x4.Scale(scale); + if (pivot != Vector3.zero) matrix *= Matrix4x4.Translate(scale).inverse; + + } + float num = node.Worker.AltitudeFor(node, parms); + if (num != 0f) + { + matrix *= Matrix4x4.Translate(Vector3.up * num); + } + __result = true; + return false; + } + + } + + return true; + + } + + } + + + + //recaching + //done here because changing parms causes recaching anyway, so might as well do it here + [HarmonyPatch(typeof(PawnRenderTree), "AdjustParms")] + public class HarmonyPatch_PawnRenderTree2 + { + public static void Prefix(PawnRenderTree __instance, ref PawnDrawParms parms) + { + + int animationTick = __instance.AnimationTick; + + if (__instance.rootNode.AnimationWorker is AnimationWorker_KeyframesExtended rootAnimWorkerExtended) + { + //recache during facing turn + if (rootAnimWorkerExtended.shouldRecache(animationTick, __instance.currentAnimation, __instance.rootNode)) + { + __instance.rootNode.requestRecache = true; + return; + } + } + + foreach (PawnRenderNode node in __instance.rootNode.children) + { + if (node.AnimationWorker is AnimationWorker_KeyframesExtended animWorkerExtended) + { + //recache during flicker on/off + if (animWorkerExtended.shouldRecache(animationTick, node.tree.currentAnimation, node)) + { + node.requestRecache = true; + return; + } + } + } + } + } +} diff --git a/1.6/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderer.cs b/1.6/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderer.cs new file mode 100644 index 0000000..99964d5 --- /dev/null +++ b/1.6/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderer.cs @@ -0,0 +1,47 @@ +using HarmonyLib; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using UnityEngine; +using Verse; + +namespace Rimworld_Animations +{ + + [HarmonyPatch(typeof(PawnRenderer), "BodyAngle")] + public class HarmonyPatch_PawnRenderer + { + public static bool Prefix(ref Pawn ___pawn, ref float __result) + { + //set body angle to zero, for when downed + if (___pawn?.Drawer?.renderer?.renderTree?.rootNode?.AnimationWorker is AnimationWorker_KeyframesExtended) + { + __result = 0; + return false; + + } + + return true; + + } + } + + [HarmonyPatch(typeof(PawnRenderer), "GetBodyPos")] + public class HarmonyPatch_PawnRenderer2 + { + //patch so that pawns appear at the same altitude layer, at layer Pawn + public static void Postfix(PawnRenderer __instance, ref Vector3 __result) + { + + if (__instance.renderTree?.rootNode?.AnimationWorker is AnimationWorker_KeyframesExtended + || (__instance.renderTree?.rootNode?.children is PawnRenderNode[] childNodes && childNodes.Any(x => x.AnimationWorker is AnimationWorker_KeyframesExtended))) + { + __result.y = AltitudeLayer.Pawn.AltitudeFor(); + } + + } + } + +} diff --git a/1.6/Source/Patches/RimworldPatches/HarmonyPatch_Pawn_DrawTracker.cs b/1.6/Source/Patches/RimworldPatches/HarmonyPatch_Pawn_DrawTracker.cs new file mode 100644 index 0000000..da0f303 --- /dev/null +++ b/1.6/Source/Patches/RimworldPatches/HarmonyPatch_Pawn_DrawTracker.cs @@ -0,0 +1,28 @@ +using HarmonyLib; +using rjw; +using UnityEngine; +using Verse; + +namespace Rimworld_Animations { + + [HarmonyPatch(typeof(Pawn_DrawTracker), "DrawPos", MethodType.Getter)] + public static class HarmonyPatch_Pawn_DrawTracker { + + //switch to postfix to get pawn original height first + public static void Postfix(ref Pawn ___pawn, ref Vector3 __result) { + + //align pos on top of partner, position, etc., based on animatoranchor + if (___pawn.TryGetComp() is CompExtendedAnimator animator) + { + if (animator.IsAnchored) + { + Vector3 anchor = animator.getAnchor(); + __result.x = anchor.x; + __result.z = anchor.z; + } + + } + + } + } +} diff --git a/1.3/Source/Patches/RimworldPatches/HarmonyPatch_Thing.cs b/1.6/Source/Patches/RimworldPatches/HarmonyPatch_Thing.cs similarity index 96% rename from 1.3/Source/Patches/RimworldPatches/HarmonyPatch_Thing.cs rename to 1.6/Source/Patches/RimworldPatches/HarmonyPatch_Thing.cs index 9477abf..ec738f7 100644 --- a/1.3/Source/Patches/RimworldPatches/HarmonyPatch_Thing.cs +++ b/1.6/Source/Patches/RimworldPatches/HarmonyPatch_Thing.cs @@ -12,7 +12,7 @@ namespace Rimworld_Animations [HarmonyPatch(typeof(Thing), "DrawAt")] public static class HarmonyPatch_Thing { - + /* public static bool Prefix(Thing __instance) { CompThingAnimator thingAnimator = __instance.TryGetComp(); @@ -27,5 +27,7 @@ namespace Rimworld_Animations } + + */ } } diff --git a/1.6/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNodeProperties_GraphicBodyTypeVariants.cs b/1.6/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNodeProperties_GraphicBodyTypeVariants.cs new file mode 100644 index 0000000..c797e04 --- /dev/null +++ b/1.6/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNodeProperties_GraphicBodyTypeVariants.cs @@ -0,0 +1,33 @@ +using RimWorld; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnRenderNodeProperties_BodyTypeVariants : PawnRenderNodeProperties_GraphicVariants + { + + public PawnRenderNodeProperties_BodyTypeVariants() + { + nodeClass = typeof(PawnRenderNode_BodyTypeVariants); + workerClass = typeof(PawnRenderNodeWorker_BodyTypeVariants); + } + + public List bodyTypeVariantsDef; + + } + + public class TexPathVariants_BodyType + { + + public BodyTypeDef bodyType; + public TexPathVariantsDef texPathVariantsDef; + + } + + +} diff --git a/1.6/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNodeWorker_GraphicBodyTypeVariants.cs b/1.6/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNodeWorker_GraphicBodyTypeVariants.cs new file mode 100644 index 0000000..ad745b8 --- /dev/null +++ b/1.6/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNodeWorker_GraphicBodyTypeVariants.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Rimworld_Animations +{ + public class PawnRenderNodeWorker_BodyTypeVariants : PawnRenderNodeWorker_GraphicVariants + { + //same functionality as graphicvariants worker + //just here for readability + + } +} diff --git a/1.6/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNode_GraphicBodyTypeVariants.cs b/1.6/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNode_GraphicBodyTypeVariants.cs new file mode 100644 index 0000000..f64c46b --- /dev/null +++ b/1.6/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNode_GraphicBodyTypeVariants.cs @@ -0,0 +1,63 @@ +using RimWorld; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnRenderNode_BodyTypeVariants : PawnRenderNode_GraphicVariants + { + + private BodyTypeDef bodyType; + protected new PawnRenderNodeProperties_BodyTypeVariants props; + + public PawnRenderNode_BodyTypeVariants(Pawn pawn, PawnRenderNodeProperties props, PawnRenderTree tree) : base(pawn, props, tree) + { + + this.props = (PawnRenderNodeProperties_BodyTypeVariants)props; + + } + + protected Dictionary GraphicBodyTypeVariantsFor(Pawn pawn) + { + + if (props.bodyTypeVariantsDef == null) + { + Log.Error("[Anims] Error: Tried to use BodyTypeVariants node, but bodyTypeVariants weren't given"); + return null; + } + + //for each different hediff-based texpathvariants, + foreach (TexPathVariants_BodyType texPathVariant_BodyType in props.bodyTypeVariantsDef) + { + if (pawn.story?.bodyType == texPathVariant_BodyType.bodyType) + { + //return that specific variant + bodyType = texPathVariant_BodyType.bodyType; + return GenerateVariants(pawn, texPathVariant_BodyType.texPathVariantsDef); + + } + + } + + return null; + + } + + protected override void EnsureMaterialVariantsInitialized(Graphic g) + { + if (variants == null + || this.tree.pawn.story?.bodyType != bodyType) + variants = GraphicBodyTypeVariantsFor(this.tree.pawn); + + //call this in case variants wasn't set, and there is no graphic bodytype variants appropriate; it'll set variants based on default + base.EnsureMaterialVariantsInitialized(g); + } + + + } + +} diff --git a/1.6/Source/PawnRenderNode/GraphicHediffSeverityVariants/PawnRenderNodeProperties_GraphicHediffSeverityVariants.cs b/1.6/Source/PawnRenderNode/GraphicHediffSeverityVariants/PawnRenderNodeProperties_GraphicHediffSeverityVariants.cs new file mode 100644 index 0000000..e465ee3 --- /dev/null +++ b/1.6/Source/PawnRenderNode/GraphicHediffSeverityVariants/PawnRenderNodeProperties_GraphicHediffSeverityVariants.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnRenderNodeProperties_GraphicHediffSeverityVariants : PawnRenderNodeProperties_GraphicVariants + { + + public PawnRenderNodeProperties_GraphicHediffSeverityVariants() + { + nodeClass = typeof(PawnRenderNode_GraphicHediffSeverityVariants); + workerClass = typeof(PawnRenderNodeWorker_GraphicHediffSeverityVariants); + } + + + public BodyPartDef bodyPart = null; + public List hediffSeverityVariants; + + } + + public class HediffWithSeverity + { + public HediffDef hediff; + public List severityVariants; + } + + public class TexPathVariants_Severity + { + public int severity; + public TexPathVariantsDef texPathVariantsDef; + + + } + + +} diff --git a/1.6/Source/PawnRenderNode/GraphicHediffSeverityVariants/PawnRenderNodeWorker_GraphicHediffSeverityVariants.cs b/1.6/Source/PawnRenderNode/GraphicHediffSeverityVariants/PawnRenderNodeWorker_GraphicHediffSeverityVariants.cs new file mode 100644 index 0000000..bac5d31 --- /dev/null +++ b/1.6/Source/PawnRenderNode/GraphicHediffSeverityVariants/PawnRenderNodeWorker_GraphicHediffSeverityVariants.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Rimworld_Animations +{ + public class PawnRenderNodeWorker_GraphicHediffSeverityVariants : PawnRenderNodeWorker_GraphicVariants + { + + + } +} diff --git a/1.6/Source/PawnRenderNode/GraphicHediffSeverityVariants/PawnRenderNode_GraphicHediffSeverityVariants.cs b/1.6/Source/PawnRenderNode/GraphicHediffSeverityVariants/PawnRenderNode_GraphicHediffSeverityVariants.cs new file mode 100644 index 0000000..a7e7b0a --- /dev/null +++ b/1.6/Source/PawnRenderNode/GraphicHediffSeverityVariants/PawnRenderNode_GraphicHediffSeverityVariants.cs @@ -0,0 +1,121 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnRenderNode_GraphicHediffSeverityVariants : PawnRenderNode_GraphicVariants + { + + protected HediffDef hediffWithSeverity; + protected float curSeverity; + + protected new PawnRenderNodeProperties_GraphicHediffSeverityVariants props; + private HediffDef curHediff; + + public PawnRenderNode_GraphicHediffSeverityVariants(Pawn pawn, PawnRenderNodeProperties props, PawnRenderTree tree) : base(pawn, props, tree) + { + + this.props = (PawnRenderNodeProperties_GraphicHediffSeverityVariants)props; + + } + + protected Dictionary GraphicHediffSeverityVariantsFor(Pawn pawn) + { + + + if (props.hediffSeverityVariants == null) + { + Log.Error("[Anims] Error: Tried to use GraphicBodyPartHediffSeverityVariants node, but hediffSeverityVariants weren't given"); + } + + + Hediff idealHediff = null; + HediffWithSeverity idealHediffSeverity = null; + + if (props.bodyPart == null) + { + //search the entire body for the hediff because no bodypart was set + for (int i = 0; i < props.hediffSeverityVariants.Count; i++) + { + idealHediff = pawn.health.hediffSet.hediffs.Find((Hediff hediffWithSeverity) => + hediffWithSeverity.def == props.hediffSeverityVariants[i].hediff); + + if (idealHediff != null) + { + //get the ideal hediff severity variants, to iterate through and find the right one for the severity + idealHediffSeverity = props.hediffSeverityVariants[i]; + break; + + } + + } + } + + else + { + //search for a hediff with a specific body part + + for (int i = 0; i < props.hediffSeverityVariants.Count; i++) + { + //right hediff with the right hediff and right body part + + idealHediff = pawn.health.hediffSet.hediffs.Find((Hediff hediffWithSeverity) => + hediffWithSeverity.def == props.hediffSeverityVariants[i].hediff + && hediffWithSeverity.Part.def == props.bodyPart); + + if (idealHediff != null) { + + //get the ideal hediff severity variants, to iterate through and find the right one for the severity + idealHediffSeverity = props.hediffSeverityVariants[i]; + break; + } + } + } + + if (idealHediff != null) + { + //set severity so that recache when this is different + curSeverity = idealHediff.Severity; + + //look for the right severity-based texpathvariants + TexPathVariants_Severity texPathVariants_Severity = idealHediffSeverity.severityVariants.Find((TexPathVariants_Severity texPathVariants) => + texPathVariants.severity < idealHediff.Severity); + + //if null, assume value is really too small + if (texPathVariants_Severity == null) + { + //return largest value + return GenerateVariants(pawn, idealHediffSeverity.severityVariants.First().texPathVariantsDef); + } + + //return right severity variants + return GenerateVariants(pawn, texPathVariants_Severity.texPathVariantsDef); + + } + + //there is no graphic hediff variants appropriate + curHediff = null; + return null; + + } + + protected override void EnsureMaterialVariantsInitialized(Graphic g) + { + //if pawn no longer has the hediff, + if (variants == null || + !(this.tree.pawn.health?.hediffSet?.hediffs is List hediffs + && hediffs.Any((Hediff hediff) => hediff.def == curHediff && hediff.Severity == curSeverity))) + { + //do graphicvariantsfor + variants = GraphicHediffSeverityVariantsFor(this.tree.pawn); + } + + //call this in case variants wasn't set, and there is no graphic hediff variants appropriate; it'll set variants based on default + base.EnsureMaterialVariantsInitialized(g); + } + } +} diff --git a/1.6/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNodeProperties_GraphicHediffVariants.cs b/1.6/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNodeProperties_GraphicHediffVariants.cs new file mode 100644 index 0000000..1717e37 --- /dev/null +++ b/1.6/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNodeProperties_GraphicHediffVariants.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnRenderNodeProperties_GraphicHediffVariants : PawnRenderNodeProperties_GraphicVariants + { + + public PawnRenderNodeProperties_GraphicHediffVariants() + { + nodeClass = typeof(PawnRenderNode_GraphicHediffVariants); + workerClass = typeof(PawnRenderNodeWorker_GraphicHediffVariants); + } + + public List hediffVariants; + + } + + public class TexPathVariants_Hediff + { + + public List hediffs; + public TexPathVariantsDef texPathVariantsDef; + + } + + +} diff --git a/1.6/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNodeWorker_GraphicHediffVariants.cs b/1.6/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNodeWorker_GraphicHediffVariants.cs new file mode 100644 index 0000000..24a10dc --- /dev/null +++ b/1.6/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNodeWorker_GraphicHediffVariants.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Rimworld_Animations +{ + public class PawnRenderNodeWorker_GraphicHediffVariants : PawnRenderNodeWorker_GraphicVariants + { + //same functionality as graphicvariants worker + //just here for readability + + } +} diff --git a/1.6/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNode_GraphicHediffVariants.cs b/1.6/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNode_GraphicHediffVariants.cs new file mode 100644 index 0000000..3949044 --- /dev/null +++ b/1.6/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNode_GraphicHediffVariants.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnRenderNode_GraphicHediffVariants : PawnRenderNode_GraphicVariants + { + + protected new PawnRenderNodeProperties_GraphicHediffVariants props; + private HediffDef curHediff; + + public PawnRenderNode_GraphicHediffVariants(Pawn pawn, PawnRenderNodeProperties props, PawnRenderTree tree) : base(pawn, props, tree) + { + + this.props = (PawnRenderNodeProperties_GraphicHediffVariants)props; + + } + + protected Dictionary GraphicHediffVariantsFor(Pawn pawn) + { + + if (props.hediffVariants == null) + { + Log.Error("[Anims] Error: Tried to use GraphicHediffVariants node, but hediffVariants weren't given"); + return null; + } + + //for each different hediff-based texpathvariants, + foreach (TexPathVariants_Hediff texPathVariant_Hediff in props.hediffVariants) + { + //for all the hediffs corresponding to that texpathvariant, + foreach (HediffDef hediffDef in texPathVariant_Hediff.hediffs) + { + //if the pawn has that hediff, + if (pawn?.health?.hediffSet?.hediffs is List pawnHediffs && pawnHediffs.Any((Hediff hediff) => hediff.def == hediffDef)) + { + //return that specific variant + curHediff = hediffDef; + return GenerateVariants(pawn, texPathVariant_Hediff.texPathVariantsDef); + + } + } + } + + //there is no graphic hediff variants appropriate + curHediff = null; + return null; + + } + + protected override void EnsureMaterialVariantsInitialized(Graphic g) + { + //if pawn no longer has the hediff, + if (variants == null || + !(this.tree.pawn.health?.hediffSet?.hediffs is List hediffs + && hediffs.Any((Hediff hediff) => hediff.def == curHediff))) + { + //do graphicvariantsfor + variants = GraphicHediffVariantsFor(this.tree.pawn); + } + //call this in case variants wasn't set, and there is no graphic hediff variants appropriate; it'll set variants based on default + base.EnsureMaterialVariantsInitialized(g); + } + } +} diff --git a/1.6/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeProperties_GraphicVariants.cs b/1.6/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeProperties_GraphicVariants.cs new file mode 100644 index 0000000..98fafeb --- /dev/null +++ b/1.6/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeProperties_GraphicVariants.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using RimWorld; +using Verse; + +namespace Rimworld_Animations +{ + public class PawnRenderNodeProperties_GraphicVariants : PawnRenderNodeProperties + { + + public PawnRenderNodeProperties_GraphicVariants() + { + this.pawnType = RenderNodePawnType.Any; + nodeClass = typeof(PawnRenderNode_GraphicVariants); + workerClass = typeof(PawnRenderNodeWorker_GraphicVariants); + overlayLayer = PawnOverlayDrawer.OverlayLayer.Head; + baseLayer = 95; + } + + public AnimationOffsetDef propOffsetDef = null; + public TexPathVariantsDef texPathVariantsDef = null; + public bool absoluteTransform = false; + + public bool scaleIndependently = false; + + } +} diff --git a/1.6/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeWorker_GraphicVariants.cs b/1.6/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeWorker_GraphicVariants.cs new file mode 100644 index 0000000..fae9f47 --- /dev/null +++ b/1.6/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeWorker_GraphicVariants.cs @@ -0,0 +1,136 @@ +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 PawnRenderNodeWorker_GraphicVariants : PawnRenderNodeWorker + { + + public override bool CanDrawNow(PawnRenderNode node, PawnDrawParms parms) + { + if (!base.CanDrawNow(node, parms)) return false; + + if (parms.Portrait) return false; + + //don't draw if not visible at tick + if (node.AnimationWorker is AnimationWorker_KeyframesExtended extendedAnimator) + { + return extendedAnimator.visibleAtTick(node.tree.AnimationTick, node.tree.currentAnimation, node); + } + + //don't draw at all if not animating + return false; + } + protected override Material GetMaterial(PawnRenderNode node, PawnDrawParms parms) + { + + //if node is animating, and is a graphic variant type of node + //and node is one with graphic variants + //and texpathvariant is set + if ((node.AnimationWorker is AnimationWorker_KeyframesExtended extendedAnimWorker) + && (node is PawnRenderNode_GraphicVariants nodeWithGraphicVariants) + && extendedAnimWorker.TexPathVariantAtTick(node.tree.AnimationTick, node.tree.currentAnimation, node) != null) + { + Material materialVariant = GetMaterialVariant(nodeWithGraphicVariants, parms, (int)extendedAnimWorker.TexPathVariantAtTick(node.tree.AnimationTick, node.tree.currentAnimation, node)); + + if (materialVariant != null) { + return materialVariant; + } + + } + + //otherwise return original texture + return base.GetMaterial(node, parms); + } + + public virtual Material GetMaterialVariant(PawnRenderNode_GraphicVariants node, PawnDrawParms parms, int variant) + { + Material material = node.getGraphicVariant(variant)?.NodeGetMat(parms); + + if (material == null) return null; + + if (!parms.Portrait && parms.flags.FlagSet(PawnRenderFlags.Invisible)) + { + material = InvisibilityMatPool.GetInvisibleMat(material); + } + + return material; + + } + + public override Vector3 OffsetFor(PawnRenderNode node, PawnDrawParms parms, out Vector3 pivot) + { + Vector3 regularOffsets = base.OffsetFor(node, parms, out pivot); + + if ((node.Props as PawnRenderNodeProperties_GraphicVariants)?.propOffsetDef?.offsets is List offsets) + { + foreach (BaseAnimationOffset offset in offsets) + { + + if (offset.appliesToPawn(node.tree.pawn)) + { + + //modify offset of prop for animationOffset position + regularOffsets += offset.getOffset(node.tree.pawn) ?? Vector3.zero; + return regularOffsets; + + } + } + } + + //unmodified; no offsets found + return regularOffsets; + } + + public override Vector3 ScaleFor(PawnRenderNode node, PawnDrawParms parms) + { + Vector3 regularScale = base.ScaleFor(node, parms); + + if ((node.Props as PawnRenderNodeProperties_GraphicVariants)?.propOffsetDef?.offsets is List offsets) + { + foreach (BaseAnimationOffset offset in offsets) + { + + if (offset.appliesToPawn(node.tree.pawn)) + { + + //modify scale of prop for animationOffset position + regularScale = regularScale.MultipliedBy(offset.getScale(node.tree.pawn) ?? Vector3.one); + return regularScale; + + } + } + } + + return regularScale; + } + + public override Quaternion RotationFor(PawnRenderNode node, PawnDrawParms parms) + { + Quaternion rotation = base.RotationFor(node, parms); + + if ((node.Props as PawnRenderNodeProperties_GraphicVariants)?.propOffsetDef?.offsets is List offsets) + { + foreach (BaseAnimationOffset offset in offsets) + { + if (offset.appliesToPawn(node.tree.pawn)) + { + //modify offset of prop for animationOffset rotation + rotation *= Quaternion.AngleAxis(offset.getRotation(node.tree.pawn) ?? 0, Vector3.up); + return rotation; + + } + } + } + + //unmodified; no rotation offsets found + return rotation; + + } + } +} diff --git a/1.6/Source/PawnRenderNode/GraphicVariants/PawnRenderNode_GraphicVariants.cs b/1.6/Source/PawnRenderNode/GraphicVariants/PawnRenderNode_GraphicVariants.cs new file mode 100644 index 0000000..2fd5241 --- /dev/null +++ b/1.6/Source/PawnRenderNode/GraphicVariants/PawnRenderNode_GraphicVariants.cs @@ -0,0 +1,90 @@ +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 PawnRenderNode_GraphicVariants : PawnRenderNode + { + + protected new PawnRenderNodeProperties_GraphicVariants props; + protected Graphic missingTextureGraphic; + protected Dictionary variants; + + public Graphic getGraphicVariant(int variant) + { + if (variants == null || !variants.ContainsKey(variant)) + { + return missingTextureGraphic; + } + + return variants[variant]; + } + + public PawnRenderNode_GraphicVariants(Pawn pawn, PawnRenderNodeProperties props, PawnRenderTree tree) : base(pawn, props, tree) { + + this.props = (PawnRenderNodeProperties_GraphicVariants)props; + + } + + protected virtual Dictionary GraphicVariantsFor(Pawn pawn) + { + + if (props.texPathVariantsDef == null) + { + return null; + } + + return GenerateVariants(pawn, props.texPathVariantsDef); + + } + + protected override void EnsureMaterialVariantsInitialized(Graphic g) + { + + if (variants == null) + { + variants = GraphicVariantsFor(this.tree.pawn); + } + if (missingTextureGraphic == null) + { + missingTextureGraphic = GenerateMissingTextureGraphic(); + } + + + base.EnsureMaterialVariantsInitialized(g); + } + + + //used by all, including base classes, to create texPathVariants for pawn + protected Dictionary GenerateVariants(Pawn pawn, TexPathVariantsDef texPathVariants) + { + + Dictionary variantGraphics = new Dictionary(); + + //for each graphic variant + for (int i = 0; i < texPathVariants.variants.Count; i++) + { + + //get new graphic + Graphic variant = GraphicDatabase.Get(texPathVariants.variants[i], this.ShaderFor(pawn), Vector2.one, this.ColorFor(pawn)); + + //add it to the variants dictionary; i + 1 for easier readability in logs + variantGraphics.Add(i + 1, variant); + + } + + return variantGraphics; + + } + + protected Graphic GenerateMissingTextureGraphic() + { + return GraphicDatabase.Get("AnimationProps/MissingTexture/MissingTexture"); + } + } +} diff --git a/1.6/Source/PawnRenderNode/TexPathVariants.cs b/1.6/Source/PawnRenderNode/TexPathVariants.cs new file mode 100644 index 0000000..d741756 --- /dev/null +++ b/1.6/Source/PawnRenderNode/TexPathVariants.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class TexPathVariantsDef : Def + { + + public List variants; + + } +} diff --git a/1.6/Source/RenderSubWorkers/PawnRenderSubWorker_ChangeOffset.cs b/1.6/Source/RenderSubWorkers/PawnRenderSubWorker_ChangeOffset.cs new file mode 100644 index 0000000..4e64eb5 --- /dev/null +++ b/1.6/Source/RenderSubWorkers/PawnRenderSubWorker_ChangeOffset.cs @@ -0,0 +1,50 @@ +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 PawnRenderSubWorker_ChangeOffset : PawnRenderSubWorker + { + + public override void TransformOffset(PawnRenderNode node, PawnDrawParms parms, ref Vector3 offset, ref Vector3 pivot) + { + if (parms.Portrait) + return; + + if (node.AnimationWorker is AnimationWorker_KeyframesExtended + && node.tree.pawn.TryGetComp(out CompExtendedAnimator extendedAnimator)) + { + Vector3? pawnOffset = extendedAnimator.Offset; + if (pawnOffset != null) + { + offset += (Vector3)pawnOffset; + } + + } + } + + + public override void TransformRotation(PawnRenderNode node, PawnDrawParms parms, ref Quaternion rotation) + { + if (node.AnimationWorker is AnimationWorker_KeyframesExtended + && node.tree.pawn.TryGetComp(out CompExtendedAnimator extendedAnimator)) + { + int? pawnRotation = extendedAnimator.Rotation; + if (pawnRotation != null) + { + Quaternion additionalRotation = Quaternion.AngleAxis((int)pawnRotation, Vector3.up); + rotation *= additionalRotation; + } + + } + + base.TransformRotation(node, parms, ref rotation); + } + + } +} diff --git a/1.6/Source/RenderSubWorkers/PawnRenderSubWorker_HideWhenAnimating.cs b/1.6/Source/RenderSubWorkers/PawnRenderSubWorker_HideWhenAnimating.cs new file mode 100644 index 0000000..74bc599 --- /dev/null +++ b/1.6/Source/RenderSubWorkers/PawnRenderSubWorker_HideWhenAnimating.cs @@ -0,0 +1,38 @@ +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 PawnRenderSubWorker_HideWhenAnimating : PawnRenderSubWorker + { + + public override void EditMaterial(PawnRenderNode node, PawnDrawParms parms, ref Material material) + { + if (node.tree.pawn.def != ThingDefOf.Human) return; + + if (node.tree.rootNode.AnimationWorker is AnimationWorker_KeyframesExtended + || node.tree.rootNode.children.Any(x => x.AnimationWorker is AnimationWorker_KeyframesExtended)) + { + material.color = Color.clear; + material.shader = ShaderTypeDefOf.Transparent.Shader; + } + } + + public override void TransformLayer(PawnRenderNode node, PawnDrawParms parms, ref float layer) + { + + base.TransformLayer(node, parms, ref layer); + + if (node.tree.pawn.def != ThingDefOf.Human) return; + layer -= 1000; + } + + } + +} diff --git a/1.6/Source/Settings/PawnScaledOffsets.cs b/1.6/Source/Settings/PawnScaledOffsets.cs new file mode 100644 index 0000000..8f280a1 --- /dev/null +++ b/1.6/Source/Settings/PawnScaledOffsets.cs @@ -0,0 +1,88 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; +using UnityEngine; +using RimWorld; + +public class PawnScaledOffsets : IExposable +{ + + public Vector3 smallestSizeOffset = Vector3.zero, largestSizeOffset = Vector3.zero; + public int smallestSizeRotation = 0, largestSizeRotation = 0; + + public float smallestSize = -1, largestSize = -1; //-1 is uninitialized + + public void AssignOffsets(Pawn pawn, Vector3 offset, int rotation) + { + if (pawn.BodySize == smallestSize && pawn.BodySize == largestSize) + { + smallestSizeOffset = largestSizeOffset = offset; + smallestSizeRotation = largestSizeRotation = rotation; + } + else if (pawn.BodySize < (smallestSize + largestSize) / 2) + { + + if (largestSize == -1) largestSize = pawn.BodySize; + + smallestSize = pawn.BodySize; + smallestSizeOffset = offset; + smallestSizeRotation = rotation; + } + else + { + + if (smallestSize == -1) smallestSize = pawn.BodySize; + + largestSize = pawn.BodySize; + largestSizeOffset = offset; + largestSizeRotation = rotation; + } + } + + public void Reset() + { + smallestSizeOffset = largestSizeOffset = Vector3.zero; + smallestSizeRotation = largestSizeRotation = 0; + smallestSize = largestSize = 1; + } + + public void GetOffsets(Pawn pawn, out Vector3 offset, out int rotation) + { + + if (smallestSize == largestSize) + { + offset = smallestSizeOffset; + rotation = smallestSizeRotation; + } + else + { + float t = InverseLerpUnclamped(smallestSize, largestSize, pawn.BodySize); + offset = Vector3.LerpUnclamped(smallestSizeOffset, largestSizeOffset, t); + rotation = (int)Mathf.LerpUnclamped(smallestSizeRotation, largestSizeRotation, t); + } + + + } + + private static float InverseLerpUnclamped(float a, float b, float value) + { + return (value - a) / (b - a); + } + + public virtual void ExposeData() + { + Scribe_Values.Look(ref smallestSizeOffset, "ScaledOffsets_SmallestSizeOffset"); + Scribe_Values.Look(ref largestSizeOffset, "ScaledOffsets_largestSizeOffset"); + + Scribe_Values.Look(ref smallestSizeRotation, "ScaledOffsets_smallestSizeRotation"); + Scribe_Values.Look(ref largestSizeRotation, "ScaledOffsets_largestSizeRotation"); + + Scribe_Values.Look(ref smallestSize, "ScaledOffsets_smallestSize"); + Scribe_Values.Look(ref largestSize, "ScaledOffsets_largestSize"); + } + + +} \ No newline at end of file diff --git a/1.6/Source/Settings/RJWAnimationSettings.cs b/1.6/Source/Settings/RJWAnimationSettings.cs new file mode 100644 index 0000000..2c594bc --- /dev/null +++ b/1.6/Source/Settings/RJWAnimationSettings.cs @@ -0,0 +1,110 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; +using UnityEngine; +using RimWorld; + +namespace Rimworld_Animations { + + public class RJWAnimationSettings : ModSettings { + + public static bool soundOverride = true, hearts = true; + + //probably move this setting to a different mod menu if moving rjw parts of code + public static bool playVoices = true, playSounds = true, playHumanlikeVoicesAsDefault = true, maleSounds, femaleSounds, maleAnalCanBeFucked = true; + public static float floatRangeInRenderTreeMenu = 1f, soundVolume = 1f, voicesVolume = 1f, voicesFrequencyTicks = 60f; + + public static bool offsetTab = true, debugMode = false; + + + public static Dictionary offsets = new Dictionary(); + + + public override void ExposeData() + { + + base.ExposeData(); + Scribe_Values.Look(ref playVoices, "RJWAnimations_PlayVoices", true); + Scribe_Values.Look(ref playSounds, "RJWAnimations_PlaySounds", true); + Scribe_Values.Look(ref playHumanlikeVoicesAsDefault, "RJWAnimations-playHumanlikeVoicesAsDefault", true); + Scribe_Values.Look(ref maleSounds, "RJWAnimations-maleSounds", true); + Scribe_Values.Look(ref femaleSounds, "RJWAnimations-femaleSounds", true); + Scribe_Values.Look(ref debugMode, "RJWAnimations-AnimsDebugMode", false); + Scribe_Values.Look(ref offsetTab, "RJWAnimations-EnableOffsetTab", false); + Scribe_Values.Look(ref hearts, "RJWAnimation-heartsOnLovin"); + Scribe_Values.Look(ref soundOverride, "RJWAnimations-rjwAnimSoundOverride", true); + Scribe_Values.Look(ref maleAnalCanBeFucked, "RJWAnimations-maleAnalCanBeFucked", true); + + Scribe_Values.Look(ref floatRangeInRenderTreeMenu, "RJWAnimations-FloatRangeRenderMenu", 1f); + Scribe_Values.Look(ref soundVolume, "RJWAnimations-soundVolume", 1f); + Scribe_Values.Look(ref voicesVolume, "RJWAnimations-voicesVolume", 1f); + Scribe_Values.Look(ref voicesFrequencyTicks, "RJWAnimations-voicesFrequencyTicks", 1f); + + Scribe_Collections.Look(ref offsets, "RJWAnimations-animationScaledOffsets", LookMode.Value, LookMode.Deep); + + + //todo: save offsetsByDefName + + } + + } + + public class RJW_Animations : Mod { + + public RJW_Animations(ModContentPack content) : base(content) { + GetSettings(); + + } + + public override void DoSettingsWindowContents(Rect inRect) { + + Listing_Standard listingStandard = new Listing_Standard(); + int bufferBetween = 10; + listingStandard.Begin(new Rect(inRect.x, inRect.y, inRect.width / 2 - bufferBetween, inRect.height)); + + + listingStandard.CheckboxLabeled("RimAnim_HeartsDuringLovin".Translate(), ref RJWAnimationSettings.hearts); + listingStandard.CheckboxLabeled("RimAnim_MaleAnalCanBeFucked".Translate(), ref RJWAnimationSettings.maleAnalCanBeFucked); + + //sounds settings + listingStandard.CheckboxLabeled("RimAnim_PlaySounds".Translate(), ref RJWAnimationSettings.playSounds); + listingStandard.Label("RimAnim_SoundsVolume".Translate()); + RJWAnimationSettings.soundVolume = listingStandard.SliderLabeled((int)(RJWAnimationSettings.soundVolume * 100) + "%", RJWAnimationSettings.soundVolume, 0, 2, 0.1f); + + //voices settings + listingStandard.CheckboxLabeled("RimAnim_Voices".Translate(), ref RJWAnimationSettings.playVoices); + listingStandard.Label("RimAnim_VoicesVolume".Translate()); + RJWAnimationSettings.voicesVolume = listingStandard.SliderLabeled((int)(RJWAnimationSettings.voicesVolume * 100) + "%", RJWAnimationSettings.voicesVolume, 0, 2, 0.1f); + listingStandard.CheckboxLabeled("RimAnim_HumanlikeVoicesDefault".Translate(), ref RJWAnimationSettings.playHumanlikeVoicesAsDefault); + + + listingStandard.End(); + + //second section + listingStandard.Begin(new Rect(inRect.x + inRect.width / 2 + bufferBetween, inRect.y, inRect.width / 2 - bufferBetween, inRect.height)); + + listingStandard.CheckboxLabeled("RimAnim_AnimManagerTab".Translate(), ref RJWAnimationSettings.offsetTab); + listingStandard.CheckboxLabeled("RimAnim_DebugMode".Translate(), ref RJWAnimationSettings.debugMode); + listingStandard.Label("RimAnim_FloatRangeRenderTree".Translate() + RJWAnimationSettings.floatRangeInRenderTreeMenu); + RJWAnimationSettings.floatRangeInRenderTreeMenu = listingStandard.Slider(RJWAnimationSettings.floatRangeInRenderTreeMenu, 0.1f, 12f); + + + + listingStandard.End(); + base.DoSettingsWindowContents(inRect); + } + + public override void WriteSettings() { + base.WriteSettings(); + OffsetMainButtonDefOf.OffsetManager.buttonVisible = RJWAnimationSettings.offsetTab; + + } + + public override string SettingsCategory() { + return "RimAnim_ModSettings".Translate(); + } + } +} diff --git a/1.6/Source/Utilities/AnimationUtility.cs b/1.6/Source/Utilities/AnimationUtility.cs new file mode 100644 index 0000000..dfaddc9 --- /dev/null +++ b/1.6/Source/Utilities/AnimationUtility.cs @@ -0,0 +1,167 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using HarmonyLib; +using RimWorld; +using UnityEngine; +using Verse; +using Verse.AI; + +namespace Rimworld_Animations { + public static class AnimationUtility + { + public static void StartAnimation(List participants) + { + participants[0].Drawer.renderer.SetAnimation(AnimationDefOf.TestAnimation1); + participants[1].Drawer.renderer.SetAnimation(AnimationDefOf.TestAnimation2); + } + + //startgroupanimator with anchor + //don't anchor to self if anchor is self + public static void StartGroupAnimation(List participants, GroupAnimationDef groupAnimationDef, Thing anchor) + { + + int seed = GenTicks.TicksGame; + + for (int i = 0; i < participants.Count; i++) + { + if (anchor is Pawn pawn && pawn == participants[i]) + { + + participants[i].TryGetComp().PlayGroupAnimation(groupAnimationDef, null, i, seed, participants); + } + else + { + BaseExtendedAnimatorAnchor animatorAnchor = new ExtendedAnimatorAnchor_Thing(anchor); + participants[i].TryGetComp().PlayGroupAnimation(groupAnimationDef, animatorAnchor, i, seed, participants); + } + } + } + + //startgroupanimation without anchor; just play where standing + public static void StartGroupAnimation(List participants, GroupAnimationDef groupAnimationDef) + { + int seed = GenTicks.TicksGame; + + for (int i = 0; i < participants.Count; i++) + { + participants[i].TryGetComp().PlayGroupAnimation(groupAnimationDef, i, seed, participants); + } + } + + + public static void StopGroupAnimation(List participants) + { + foreach (Pawn pawn in participants) + { + pawn.TryGetComp()?.StopAnimating(); + } + } + + public static void StopGroupAnimation(Pawn participant) + { + participant.TryGetComp()?.StopAnimating(); + } + + public static GroupAnimationDef FindGroupAnimation(List participants, out List pawnOrder) + { + + + /* This method is fooken expensive + List<(GroupAnimationDef, List, int Priority)> potentialAnimations = new List<(GroupAnimationDef, List, int)>(); + + List> participantPermutations = GetPermutations(participants); + + //for each groupanimationdef where the number of participants matches the number of actors, + foreach (GroupAnimationDef groupAnimationDef in DefDatabase.AllDefsListForReading.Where(x => x.numActors == participants.Count)) + { + + //ignore groupanimations without contexts; those are usu. branches + if (groupAnimationDef.contexts.NullOrEmpty()) continue; + + //check all permutations of the list of pawns, with each groupanimationdef + foreach (List participantPermutation in participantPermutations) + { + + //if groupanimation works with that particular pawn permutation, + if (groupAnimationDef.CanAnimationBeUsed(participantPermutation, out int priority, out int contextNum)) + { + //add it to the list of potential animations, in a tuple with that permutation + potentialAnimations.Add((groupAnimationDef, participantPermutation, priority)); + + } + + } + } + */ + + List<(GroupAnimationDef, List, int Priority)> potentialAnimations = new List<(GroupAnimationDef, List, int)>(); + + foreach (GroupAnimationDef groupAnimationDef in DefDatabase.AllDefsListForReading) + { + if (groupAnimationDef.CanAnimationBeUsed(participants, out List bestPermutation, out int highestPriority)) + { + potentialAnimations.Add((groupAnimationDef, bestPermutation, highestPriority)); + } + } + + + //Randomize the list, + potentialAnimations.OrderBy(_ => Rand.Int); + (GroupAnimationDef, List, int) selectedAnimation; + + potentialAnimations.TryRandomElementByWeight(((GroupAnimationDef, List, int) x) => x.Item3, out selectedAnimation); + //Find a highest priority animation, out as selectedAnimation + // .TryMaxBy(((GroupAnimationDef, List, int) x) => x.Item3, out (GroupAnimationDef, List, int) selectedAnimation); + + //set pawnOrder as selected animation permutation + pawnOrder = selectedAnimation.Item2; + + //return selected animation + return selectedAnimation.Item1; + + } + + + + + public static int GetAnimationLength(Pawn pawn) + { + return pawn.TryGetComp().AnimationLength; + } + + public static string OffsetLookupKey(Pawn pawn) + { + string bodyTypeDef = (pawn.story?.bodyType != null) ? pawn.story.bodyType.ToString() : ""; + + CompExtendedAnimator extendedAnimator = pawn.TryGetComp(); + + return extendedAnimator.CurrentGroupAnimation.defName + pawn.def.defName + bodyTypeDef + extendedAnimator.ActorIndex; + + } + + static List> GetPermutations(List list) + { + if (list.Count == 0) return new List> { new List() }; + + var result = new List>(); + + for (int i = 0; i < list.Count; i++) + { + var element = list[i]; + var remaining = list.Where((_, index) => index != i).ToList(); + + foreach (var permutation in GetPermutations(remaining)) + { + permutation.Insert(0, element); + result.Add(permutation); + } + } + + return result; + } + + } +} diff --git a/1.6/Source/Utilities/DebugActions.cs b/1.6/Source/Utilities/DebugActions.cs new file mode 100644 index 0000000..3e30548 --- /dev/null +++ b/1.6/Source/Utilities/DebugActions.cs @@ -0,0 +1,30 @@ +using LudeonTK; +using RimWorld; +using RimWorld.QuestGen; +using rjw; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + internal static class DebugActions + { + [DebugAction("Rimworld Animations", "Stop all Animations", allowedGameStates = AllowedGameStates.PlayingOnMap)] + public static void StopAll() + { + //adds stop all animations option to debug menu + //stops all pawns on map animating + foreach (Map m in Current.Game.Maps) + { + foreach (Pawn p in m.spawnedThings.Where(p => p is Pawn)) + { + p.TryGetComp()?.StopAnimating(); + } + } + } + } +} diff --git a/1.6/Source/Voices/VoiceDef.cs b/1.6/Source/Voices/VoiceDef.cs new file mode 100644 index 0000000..3be6ebd --- /dev/null +++ b/1.6/Source/Voices/VoiceDef.cs @@ -0,0 +1,41 @@ +using RimWorld; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class VoiceDef : Def + { + + public List races = new List(); + public Gender gender = Gender.None; + public List traits = new List(); + public bool takesPriority = false; + public float randomChanceFactor = 1; + public IntRange ticksBetweenPlays = new IntRange(60, 80); + + + public Dictionary sounds = new Dictionary(); + + public bool VoiceFitsPawn(Pawn pawn) + { + + //doesn't match any of the races + if (!races.Exists(x => x == pawn.def)) return false; + + //doesn't match gender + if (gender != Gender.None && pawn.gender != gender) return false; + + //if traits list is not empty, and pawn doesn't have any of the designated traits, doesn't match + if (!traits.Empty() && !traits.Any(trait => pawn.story.traits.HasTrait(trait))) return false; + + return true; + + } + + } +} diff --git a/1.6/Source/Voices/VoiceDefOf.cs b/1.6/Source/Voices/VoiceDefOf.cs new file mode 100644 index 0000000..e489233 --- /dev/null +++ b/1.6/Source/Voices/VoiceDefOf.cs @@ -0,0 +1,22 @@ +using RimWorld; +using rjw; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Rimworld_Animations +{ + [DefOf] + public static class VoiceDefOf + { + static VoiceDefOf() + { + DefOfHelper.EnsureInitializedInCtor(typeof(VoiceDefOf)); + } + + public static VoiceDef Voice_HumanMale; + public static VoiceDef Voice_HumanFemale; + } +} diff --git a/1.6/Source/Voices/VoiceTagDef.cs b/1.6/Source/Voices/VoiceTagDef.cs new file mode 100644 index 0000000..2127b22 --- /dev/null +++ b/1.6/Source/Voices/VoiceTagDef.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace Rimworld_Animations +{ + public class VoiceTagDef : Def + { + + public float probability = 1; + + } +} diff --git a/1.6/Textures/AnimationProps/Banana/Banana_east.png b/1.6/Textures/AnimationProps/Banana/Banana_east.png new file mode 100644 index 0000000..d7df227 Binary files /dev/null and b/1.6/Textures/AnimationProps/Banana/Banana_east.png differ diff --git a/1.6/Textures/AnimationProps/Banana/Banana_north.png b/1.6/Textures/AnimationProps/Banana/Banana_north.png new file mode 100644 index 0000000..d4a4d28 Binary files /dev/null and b/1.6/Textures/AnimationProps/Banana/Banana_north.png differ diff --git a/1.6/Textures/AnimationProps/Banana/Banana_south.png b/1.6/Textures/AnimationProps/Banana/Banana_south.png new file mode 100644 index 0000000..d7df227 Binary files /dev/null and b/1.6/Textures/AnimationProps/Banana/Banana_south.png differ diff --git a/1.6/Textures/AnimationProps/Banana/Banana_west.png b/1.6/Textures/AnimationProps/Banana/Banana_west.png new file mode 100644 index 0000000..d7df227 Binary files /dev/null and b/1.6/Textures/AnimationProps/Banana/Banana_west.png differ diff --git a/1.6/Textures/AnimationProps/Cat/Cat1_north.png b/1.6/Textures/AnimationProps/Cat/Cat1_north.png new file mode 100644 index 0000000..e9303f5 Binary files /dev/null and b/1.6/Textures/AnimationProps/Cat/Cat1_north.png differ diff --git a/1.6/Textures/AnimationProps/Cat/Cat2_north.png b/1.6/Textures/AnimationProps/Cat/Cat2_north.png new file mode 100644 index 0000000..caa4969 Binary files /dev/null and b/1.6/Textures/AnimationProps/Cat/Cat2_north.png differ diff --git a/1.6/Textures/AnimationProps/CowgirlXray/XRay2-1.png b/1.6/Textures/AnimationProps/CowgirlXray/XRay2-1.png new file mode 100644 index 0000000..2a848c6 Binary files /dev/null and b/1.6/Textures/AnimationProps/CowgirlXray/XRay2-1.png differ diff --git a/1.6/Textures/AnimationProps/CowgirlXray/XRay2-2.png b/1.6/Textures/AnimationProps/CowgirlXray/XRay2-2.png new file mode 100644 index 0000000..d5cccf2 Binary files /dev/null and b/1.6/Textures/AnimationProps/CowgirlXray/XRay2-2.png differ diff --git a/1.6/Textures/AnimationProps/CowgirlXray/XRay2-3.png b/1.6/Textures/AnimationProps/CowgirlXray/XRay2-3.png new file mode 100644 index 0000000..9dffa7c Binary files /dev/null and b/1.6/Textures/AnimationProps/CowgirlXray/XRay2-3.png differ diff --git a/1.6/Textures/AnimationProps/CowgirlXray/XRay2-4.png b/1.6/Textures/AnimationProps/CowgirlXray/XRay2-4.png new file mode 100644 index 0000000..af3af31 Binary files /dev/null and b/1.6/Textures/AnimationProps/CowgirlXray/XRay2-4.png differ diff --git a/1.6/Textures/AnimationProps/CowgirlXray/XRay2-5.png b/1.6/Textures/AnimationProps/CowgirlXray/XRay2-5.png new file mode 100644 index 0000000..bfd3ef5 Binary files /dev/null and b/1.6/Textures/AnimationProps/CowgirlXray/XRay2-5.png differ diff --git a/1.6/Textures/AnimationProps/CowgirlXray/XRay2-6.png b/1.6/Textures/AnimationProps/CowgirlXray/XRay2-6.png new file mode 100644 index 0000000..95a1397 Binary files /dev/null and b/1.6/Textures/AnimationProps/CowgirlXray/XRay2-6.png differ diff --git a/1.6/Textures/AnimationProps/Cum/Cum.png b/1.6/Textures/AnimationProps/Cum/Cum.png new file mode 100644 index 0000000..c32f1ea Binary files /dev/null and b/1.6/Textures/AnimationProps/Cum/Cum.png differ diff --git a/1.6/Textures/AnimationProps/Doggystyle/Doggy_Arms_north.png b/1.6/Textures/AnimationProps/Doggystyle/Doggy_Arms_north.png new file mode 100644 index 0000000..ecf9622 Binary files /dev/null and b/1.6/Textures/AnimationProps/Doggystyle/Doggy_Arms_north.png differ diff --git a/1.6/Textures/AnimationProps/Doggystyle/Doggy_Legs_north.png b/1.6/Textures/AnimationProps/Doggystyle/Doggy_Legs_north.png new file mode 100644 index 0000000..1da02fc Binary files /dev/null and b/1.6/Textures/AnimationProps/Doggystyle/Doggy_Legs_north.png differ diff --git a/1.6/Textures/AnimationProps/Hand/Hand_north.png b/1.6/Textures/AnimationProps/Hand/Hand_north.png new file mode 100644 index 0000000..6c82f67 Binary files /dev/null and b/1.6/Textures/AnimationProps/Hand/Hand_north.png differ diff --git a/1.6/Textures/AnimationProps/MissingTexture/MissingTexture_east.png b/1.6/Textures/AnimationProps/MissingTexture/MissingTexture_east.png new file mode 100644 index 0000000..59958a9 Binary files /dev/null and b/1.6/Textures/AnimationProps/MissingTexture/MissingTexture_east.png differ diff --git a/1.6/Textures/AnimationProps/MissingTexture/MissingTexture_north.png b/1.6/Textures/AnimationProps/MissingTexture/MissingTexture_north.png new file mode 100644 index 0000000..59958a9 Binary files /dev/null and b/1.6/Textures/AnimationProps/MissingTexture/MissingTexture_north.png differ diff --git a/1.6/Textures/AnimationProps/MissingTexture/MissingTexture_south.png b/1.6/Textures/AnimationProps/MissingTexture/MissingTexture_south.png new file mode 100644 index 0000000..59958a9 Binary files /dev/null and b/1.6/Textures/AnimationProps/MissingTexture/MissingTexture_south.png differ diff --git a/1.6/Textures/AnimationProps/MissingTexture/MissingTexture_west.png b/1.6/Textures/AnimationProps/MissingTexture/MissingTexture_west.png new file mode 100644 index 0000000..59958a9 Binary files /dev/null and b/1.6/Textures/AnimationProps/MissingTexture/MissingTexture_west.png differ diff --git a/1.6/Textures/AnimationProps/Saliva/Saliva_north.png b/1.6/Textures/AnimationProps/Saliva/Saliva_north.png new file mode 100644 index 0000000..1d267e8 Binary files /dev/null and b/1.6/Textures/AnimationProps/Saliva/Saliva_north.png differ diff --git a/1.6/Textures/UI/MainTab.png b/1.6/Textures/UI/MainTab.png new file mode 100644 index 0000000..11f1749 Binary files /dev/null and b/1.6/Textures/UI/MainTab.png differ diff --git a/About/About.xml b/About/About.xml index b264914..a37de85 100644 --- a/About/About.xml +++ b/About/About.xml @@ -1,16 +1,15 @@ - Rimworld-Animations + Rimworld Animations 2.0 C0ffee https://gitgud.io/c0ffeeeeeeee/rimworld-animations -
  • 1.1
  • -
  • 1.2
  • -
  • 1.3
  • -
  • 1.4
  • +
  • 1.6
  • c0ffee.rimworld.animations + 2.2.0 + UI/MainTab
  • brrainz.harmony @@ -18,12 +17,6 @@ steam://url/CommunityFilePage/2009463077 https://github.com/pardeike/HarmonyRimWorld/releases/latest
  • -
  • - UnlimitedHugs.HugsLib - HugsLib - https://github.com/UnlimitedHugs/RimworldHugsLib/releases/latest - steam://url/CommunityFilePage/818773962 -
  • rim.job.world RimJobWorld @@ -31,8 +24,8 @@
  • -
  • UnlimitedHugs.HugsLib
  • brrainz.harmony
  • +
  • rim.job.world
  • erdelf.humanoidalienraces
  • nals.facialanimation
  • com.yayo.yayoAni
  • @@ -42,7 +35,7 @@ - Rimworld Animations! Hurray! + Rimworld Animations 2.0! Hurray! Questions or bugs? Chat with me on the forums: https://www.loverslab.com/topic/140386-rjw-animations/ diff --git a/About/Manifest.xml b/About/Manifest.xml index 0a6d4c7..9916331 100644 --- a/About/Manifest.xml +++ b/About/Manifest.xml @@ -1,5 +1,5 @@ Rimworld-Animations - 1.3.7 + 2.2.0 diff --git a/Directory.Packages.props b/Directory.Packages.props new file mode 100644 index 0000000..c221e65 --- /dev/null +++ b/Directory.Packages.props @@ -0,0 +1,13 @@ + + + true + true + $(NoWarn);NU1507 + + + + + + + + \ No newline at end of file diff --git a/Languages/ChineseSimplified/Keyed/RJWAnimations-LanguageData.xml b/Languages/ChineseSimplified/Keyed/RJWAnimations-LanguageData.xml new file mode 100644 index 0000000..1d72019 --- /dev/null +++ b/Languages/ChineseSimplified/Keyed/RJWAnimations-LanguageData.xml @@ -0,0 +1,28 @@ + + + + + RJW Animation Settings + 启用声音覆盖 + 控制生殖器旋转 + 启用高潮颤抖 + 启用强奸颤动 + 性爱时启用心形 + 播放非性行为的动画 (牵手、亲热) + 启用动画管理器选项卡 + 颤抖/颤动强度 (默认为 2): + 在动画期间播放语音 + 如果没有找到外星种族的声音,则默认播放人类的声音 + 调试模式 + 调整渲染树偏移表单的浮动范围: + + + + Animation Manager + 警告--一般情况下,你不想更改人类偏移值,只想更改外星种族偏移值或动物偏移值 + 将偏移值复制到剪贴板 + 将偏移值粘贴到 OffsetDef 中,或在 Discord 中共享 + + + + \ No newline at end of file diff --git a/Languages/ChineseTraditional/Keyed/RJWAnimations-LanguageData.xml b/Languages/ChineseTraditional/Keyed/RJWAnimations-LanguageData.xml new file mode 100644 index 0000000..c014f16 --- /dev/null +++ b/Languages/ChineseTraditional/Keyed/RJWAnimations-LanguageData.xml @@ -0,0 +1,28 @@ + + + + + RJW Animation Settings + 啟用聲音覆蓋 + 控制生殖器旋轉 + 啟用高潮顫抖 + 啟用強姦顫動 + 性愛時啟用心形 + 播放非性行為的動畫 (牽手、親熱) + 啟用動畫管理器選項卡 + 顫抖/顫動強度 (預設為 2): + 在動畫期間播放語音 + 如果沒有找到外星種族的聲音,則默認播放人類的聲音 + 除錯模式 + 調整渲染樹偏移表單的浮動範圍: + + + + Animation Manager + 警告--一般情況下,你不想更改人類偏移值,只想更改外星種族偏移值或動物偏移值 + 將偏移值複製到剪貼板 + 將偏移值黏貼到 OffsetDef 中,或在 Discord 中共享 + + + + \ No newline at end of file diff --git a/Languages/English/Keyed/RJWAnimations-LanguageData.xml b/Languages/English/Keyed/RJWAnimations-LanguageData.xml new file mode 100644 index 0000000..3a4ccf7 --- /dev/null +++ b/Languages/English/Keyed/RJWAnimations-LanguageData.xml @@ -0,0 +1,33 @@ + + + + + RJW Animation Settings + Override RJW sounds + Control Genital Rotation + Enable Orgasm Quiver + Enable Rape Shiver + Show hearts during lovin' + Play animation for nonsexual acts (handholding, makeout) + Enable Animation Manager tab + Shiver/Quiver Intensity (default 2): + Play voices during animations + Play humanlike voices by default + Debug mode + Float range for Debug Render Tree offset menu: + Play anal sex animations for male pawns + + Play sounds during animations + Voices volume: + Sounds volume: + + + + Animation Manager + Warning--You generally don't want to change human offsets, only alien offsets or animals + Copy Offset to Clipboard + Paste offset values in OffsetDef, or share in Discord + Reset + + + \ No newline at end of file diff --git a/LoadFolders.xml b/LoadFolders.xml index 4fdb79c..b369dab 100644 --- a/LoadFolders.xml +++ b/LoadFolders.xml @@ -24,6 +24,22 @@
  • Patch_SexToysMasturbation
  • Patch_SexToysMasturbation/1.4
  • + +
  • /
  • +
  • 1.5
  • +
  • Patch_HumanoidAlienRaces/1.5
  • +
  • Patch_SexToysMasturbation/1.5
  • +
  • Patch_NoRimNudeWorld/1.5
  • +
  • Patch_NoRimNudeWorldZoo/1.5
  • +
    + +
  • /
  • +
  • 1.6
  • +
  • Patch_HumanoidAlienRaces/1.5
  • +
  • Patch_SexToysMasturbation/1.5
  • +
  • Patch_NoRimNudeWorld/1.5
  • +
  • Patch_NoRimNudeWorldZoo/1.5
  • +
    diff --git a/1.4/Patch_HatsDisplaySelection/Patch_HatsDisplaySelection.csproj b/Milkable-Colonists-Animations/Milkable-Colonists-Animations.csproj similarity index 66% rename from 1.4/Patch_HatsDisplaySelection/Patch_HatsDisplaySelection.csproj rename to Milkable-Colonists-Animations/Milkable-Colonists-Animations.csproj index 8da21a6..e4e8b55 100644 --- a/1.4/Patch_HatsDisplaySelection/Patch_HatsDisplaySelection.csproj +++ b/Milkable-Colonists-Animations/Milkable-Colonists-Animations.csproj @@ -4,20 +4,20 @@ Debug AnyCPU - {BA766964-1716-422D-A09E-29426F8EB9D5} + {11DC70AF-FF23-4D4D-A4E5-6453664B1A12} Library Properties - Patch_HatsDisplaySelection - Patch_HatsDisplaySelection - v4.7.2 + Milkable_Colonists_Animations + Milkable-Colonists-Animations + v4.8 512 true - false - none + true + full false - 1.2\Assemblies\ + bin\Debug\ DEBUG;TRACE prompt 4 @@ -32,19 +32,15 @@ - ..\..\..\..\..\workshop\content\294100\2009463077\Current\Assemblies\0Harmony.dll + ..\..\..\..\..\workshop\content\294100\839005762\1.5\Assemblies\0Harmony.dll False ..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll False - - ..\..\..\..\..\workshop\content\294100\1542291825\1.2\Assemblies\HatDisplaySelection.dll - False - - - ..\1.2\Assemblies\Rimworld-Animations.dll + + ..\..\rjw\1.4\Assemblies\RJW.dll False @@ -59,17 +55,10 @@ ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.dll False - - ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll - False - - - - - + \ No newline at end of file diff --git a/Patch_SexToysMasturbation/Properties/AssemblyInfo.cs b/Milkable-Colonists-Animations/Properties/AssemblyInfo.cs similarity index 83% rename from Patch_SexToysMasturbation/Properties/AssemblyInfo.cs rename to Milkable-Colonists-Animations/Properties/AssemblyInfo.cs index 55c921a..1032646 100644 --- a/Patch_SexToysMasturbation/Properties/AssemblyInfo.cs +++ b/Milkable-Colonists-Animations/Properties/AssemblyInfo.cs @@ -5,12 +5,12 @@ 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_SexToysMasturbation")] +[assembly: AssemblyTitle("Milkable-Colonists-Animations")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Patch_SexToysMasturbation")] -[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyProduct("Milkable-Colonists-Animations")] +[assembly: AssemblyCopyright("Copyright © 2024")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -20,7 +20,7 @@ using System.Runtime.InteropServices; [assembly: ComVisible(false)] // The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("87763712-0536-4d5f-9eaa-520f15d4f84e")] +[assembly: Guid("11dc70af-ff23-4d4d-a4e5-6453664b1a12")] // Version information for an assembly consists of the following four values: // diff --git a/1.4/Source/Patches/Harmony_PatchAll.cs b/Milkable-Colonists-Animations/Source/Patches/Harmony_PatchAll.cs similarity index 81% rename from 1.4/Source/Patches/Harmony_PatchAll.cs rename to Milkable-Colonists-Animations/Source/Patches/Harmony_PatchAll.cs index 1c1d63f..a7e1fce 100644 --- a/1.4/Source/Patches/Harmony_PatchAll.cs +++ b/Milkable-Colonists-Animations/Source/Patches/Harmony_PatchAll.cs @@ -7,14 +7,14 @@ using Verse; using HarmonyLib; using System.Reflection; -namespace Rimworld_Animations { +namespace MC_Animations { [StaticConstructorOnStartup] public static class Harmony_PatchAll { static Harmony_PatchAll() { - Harmony val = new Harmony("rjwanim"); + Harmony val = new Harmony("mcanim"); val.PatchAll(Assembly.GetExecutingAssembly()); } diff --git a/Patch_FacialAnimation/1.5/Patches/AnimationPatch_HideHeadWhenAnimating.xml b/Patch_FacialAnimation/1.5/Patches/AnimationPatch_HideHeadWhenAnimating.xml new file mode 100644 index 0000000..b8c72df --- /dev/null +++ b/Patch_FacialAnimation/1.5/Patches/AnimationPatch_HideHeadWhenAnimating.xml @@ -0,0 +1,27 @@ + + + + + Always + +
  • + /Defs/PawnRenderTreeDef[defName="Humanlike"]/root/children/li[debugLabel="Head"]/subworkerClasses + Always + + /Defs/PawnRenderTreeDef[defName="Humanlike"]/root/children/li[debugLabel="Head"] + + + + +
  • + +
  • + /Defs/PawnRenderTreeDef[defName="Humanlike"]/root/children/li[debugLabel="Head"]/subworkerClasses + +
  • Rimworld_Animations.PawnRenderSubWorker_HideWhenAnimating
  • + + +
    +
    + +
    \ No newline at end of file diff --git a/Patch_HumanoidAlienRaces/Source/HarmonyPatch_AlienRace.cs b/Patch_HumanoidAlienRaces/1.4/Source/HarmonyPatch_AlienRace.cs similarity index 100% rename from Patch_HumanoidAlienRaces/Source/HarmonyPatch_AlienRace.cs rename to Patch_HumanoidAlienRaces/1.4/Source/HarmonyPatch_AlienRace.cs diff --git a/Patch_HumanoidAlienRaces/Patch_HumanoidAlienRaces.csproj b/Patch_HumanoidAlienRaces/Patch_HumanoidAlienRaces.csproj index e34e96e..5841608 100644 --- a/Patch_HumanoidAlienRaces/Patch_HumanoidAlienRaces.csproj +++ b/Patch_HumanoidAlienRaces/Patch_HumanoidAlienRaces.csproj @@ -17,7 +17,7 @@ false none false - 1.4\Assemblies\ + 1.5\Assemblies\ DEBUG;TRACE prompt 4 @@ -37,7 +37,7 @@ False - ..\..\..\..\..\workshop\content\294100\839005762\1.4\Assemblies\AlienRace.dll + ..\..\..\..\..\workshop\content\294100\839005762\1.5\Assemblies\AlienRace.dll False @@ -70,8 +70,12 @@ + - + + + + \ No newline at end of file diff --git a/Patch_NoRimNudeWorld/1.5/Defs/PawnRenderNodeTagDef_RimnudePenisPlaceholder.xml b/Patch_NoRimNudeWorld/1.5/Defs/PawnRenderNodeTagDef_RimnudePenisPlaceholder.xml new file mode 100644 index 0000000..004ac6a --- /dev/null +++ b/Patch_NoRimNudeWorld/1.5/Defs/PawnRenderNodeTagDef_RimnudePenisPlaceholder.xml @@ -0,0 +1,7 @@ + + + + + RimNude_Penis + + diff --git a/Patch_NoRimNudeWorldZoo/1.5/Defs/PawnRenderNodeTagDef_AnimalPenisPlaceholder.xml b/Patch_NoRimNudeWorldZoo/1.5/Defs/PawnRenderNodeTagDef_AnimalPenisPlaceholder.xml new file mode 100644 index 0000000..3632dfe --- /dev/null +++ b/Patch_NoRimNudeWorldZoo/1.5/Defs/PawnRenderNodeTagDef_AnimalPenisPlaceholder.xml @@ -0,0 +1,7 @@ + + + + + AnimalPenis + + diff --git a/Patch_SexToysMasturbation/1.3/Assemblies/Patch_SexToysMasturbation.dll b/Patch_SexToysMasturbation/1.3/Assemblies/Patch_SexToysMasturbation.dll deleted file mode 100644 index 723e4ee..0000000 Binary files a/Patch_SexToysMasturbation/1.3/Assemblies/Patch_SexToysMasturbation.dll and /dev/null differ diff --git a/Patch_SexToysMasturbation/1.3/Defs/AnimationDefs/Animations_Dildo.xml b/Patch_SexToysMasturbation/1.3/Defs/AnimationDefs/Animations_Dildo.xml deleted file mode 100644 index dd483ea..0000000 --- a/Patch_SexToysMasturbation/1.3/Defs/AnimationDefs/Animations_Dildo.xml +++ /dev/null @@ -1,465 +0,0 @@ - - - - Masturbation_DildoVaginal - - vagina - true - -
  • Masturbation
  • -
    - -
  • - -
  • Human
  • - - true - -
    - - -
  • - Masturbating - true - 917 - 0 - -
  • - LayingPawn - -
  • - - 40 - 73.01611 - 40.0739746 - 0 - 0.054543376 - 0.112624526 - 0 - 3 - 3 -
  • -
  • - - Slimy - 30 - 76.4867554 - 45.3887634 - 0 - 0.0506898165 - 0.08564949 - 0 - 3 - 3 -
  • -
  • - - 30 - 78.22131 - 48.0072327 - 0 - 0.039129138 - 0.07794231 - 0 - 3 - 3 -
  • -
  • - - 30 - 76.4867554 - 45.3887634 - 0 - 0.0506898165 - 0.08564949 - 0 - 3 - 3 -
  • -
  • - - 1 - 73.01611 - 40.0739746 - 0 - 0.054543376 - 0.112624526 - 0 - 3 - 3 -
  • - - -
  • - -
  • - - 40 - -0.359264076 - -0.00901746 - 114.011215 -
  • -
  • - - 30 - -0.2783391 - -0.0514066666 - 81.16443 -
  • -
  • - - 30 - -0.1704393 - -0.0668209046 - 72.8611145 -
  • -
  • - - 30 - -0.2783391 - -0.0514066666 - 81.16443 -
  • -
  • - - 1 - -0.359264076 - -0.00901746 - 114.011215 -
  • - - - - -
  • - GettingIntoPosition - false - 0 - -
  • - LayingPawn - -
  • - - 50 - 73.01611 - 40.0739746 - 0 - 0.054543376 - 0.112624526 - 0 - 3 - 3 -
  • -
  • - Slimy - 1 - 81.65927 - 58.8843079 - 0 - 0.03912908 - 0.08950315 - 0 - 3 - 3 -
  • - - -
  • - -
  • - - 50 - -0.359264076 - -0.00901746 - 114.011215 -
  • -
  • - - 1 - -0.2899 - -0.0282852575 - 98.13748 -
  • - - - - -
  • - FastMasturbation - true - 0 - 1610 - -
  • - LayingPawn - -
  • - 20 - 81.65927 - 58.8843079 - 0 - 0.03912908 - 0.08950315 - 0 - 3 - 3 -
  • -
  • - Slimy - 25 - 85.17255 - 58.0615845 - 0 - 0.03527552 - 0.0471138731 - 0 - 3 - 3 -
  • -
  • - 1 - 81.65927 - 58.8843079 - 0 - 0.03912908 - 0.08950315 - 0 - 3 - 3 -
  • - - -
  • - -
  • - - 25 - -0.2899 - -0.0282852575 - 98.13748 -
  • -
  • - - 20 - -0.178146541 - -0.01672452 - 96.95889 -
  • -
  • - - 1 - -0.2899 - -0.0282852575 - 98.13748 -
  • - - - - -
  • - VeryFastMasturbation - true - 0 - 225 - -
  • - LayingPawn - -
  • - 6 - 81.65927 - 58.8843079 - 0 - 0.03912908 - 0.08950315 - 0 - 3 - 3 -
  • -
  • - Slimy - 8 - 85.17255 - 58.0615845 - 0 - 0.03527552 - 0.0471138731 - 0 - 3 - 3 -
  • -
  • - 1 - 81.65927 - 58.8843079 - 0 - 0.03912908 - 0.08950315 - 0 - 3 - 3 -
  • - - -
  • - -
  • - - 6 - -0.2899 - -0.0282852575 - 98.13748 -
  • -
  • - - 8 - -0.178146541 - -0.01672452 - 96.95889 -
  • -
  • - - 1 - -0.2899 - -0.0282852575 - 98.13748 -
  • - - - - -
  • - Orgasm - false - 0 - -
  • - LayingPawn - -
  • - Slimy - 6 - 81.65927 - 58.8843079 - 0 - 0.03912908 - 0.08950315 - 0 - 3 - 3 -
  • -
  • - True - Cum - 80 - 85.17255 - 58.0615845 - 0 - 0.03527552 - 0.0471138731 - 0 - 3 - 3 -
  • -
  • - True - Cum - 90 - 92.15109 - 96.34238 - 0 - 0.0237147212 - 0.0432603136 - 0 - 3 - 3 -
  • -
  • - True - Cum - 70 - 92.15109 - 96.34238 - 0 - 0.0237147212 - 0.0432603136 - 0 - 3 - 3 -
  • -
  • - 70 - 92.15109 - 96.34238 - 0 - 0.0237147212 - 0.0432603136 - 0 - 3 - 3 -
  • -
  • - 1 - 81.65927 - 58.8843079 - 0 - 0.03912908 - 0.08950315 - 0 - 3 - 3 -
  • - - -
  • - -
  • - - 6 - -0.2899 - -0.0282852575 - 98.13748 -
  • -
  • - - 80 - -0.178146541 - -0.01672452 - 96.95889 -
  • -
  • - - 90 - -0.178146541 - -0.01672452 - 96.95889 -
  • -
  • - - 70 - -0.178146541 - -0.01672452 - 96.95889 -
  • -
  • - - 70 - -0.178146541 - -0.01672452 - 96.95889 -
  • -
  • - - 1 - -0.2899 - -0.0282852575 - 98.13748 -
  • - - - - -
    -
    -
    \ No newline at end of file diff --git a/Patch_SexToysMasturbation/1.4/Assemblies/Patch_SexToysMasturbation.dll b/Patch_SexToysMasturbation/1.4/Assemblies/Patch_SexToysMasturbation.dll deleted file mode 100644 index a9d0d5f..0000000 Binary files a/Patch_SexToysMasturbation/1.4/Assemblies/Patch_SexToysMasturbation.dll and /dev/null differ diff --git a/Patch_SexToysMasturbation/1.4/Defs/AnimationDefs/Animations_Dildo.xml b/Patch_SexToysMasturbation/1.4/Defs/AnimationDefs/Animations_Dildo.xml deleted file mode 100644 index dd483ea..0000000 --- a/Patch_SexToysMasturbation/1.4/Defs/AnimationDefs/Animations_Dildo.xml +++ /dev/null @@ -1,465 +0,0 @@ - - - - Masturbation_DildoVaginal - - vagina - true - -
  • Masturbation
  • -
    - -
  • - -
  • Human
  • - - true - -
    - - -
  • - Masturbating - true - 917 - 0 - -
  • - LayingPawn - -
  • - - 40 - 73.01611 - 40.0739746 - 0 - 0.054543376 - 0.112624526 - 0 - 3 - 3 -
  • -
  • - - Slimy - 30 - 76.4867554 - 45.3887634 - 0 - 0.0506898165 - 0.08564949 - 0 - 3 - 3 -
  • -
  • - - 30 - 78.22131 - 48.0072327 - 0 - 0.039129138 - 0.07794231 - 0 - 3 - 3 -
  • -
  • - - 30 - 76.4867554 - 45.3887634 - 0 - 0.0506898165 - 0.08564949 - 0 - 3 - 3 -
  • -
  • - - 1 - 73.01611 - 40.0739746 - 0 - 0.054543376 - 0.112624526 - 0 - 3 - 3 -
  • - - -
  • - -
  • - - 40 - -0.359264076 - -0.00901746 - 114.011215 -
  • -
  • - - 30 - -0.2783391 - -0.0514066666 - 81.16443 -
  • -
  • - - 30 - -0.1704393 - -0.0668209046 - 72.8611145 -
  • -
  • - - 30 - -0.2783391 - -0.0514066666 - 81.16443 -
  • -
  • - - 1 - -0.359264076 - -0.00901746 - 114.011215 -
  • - - - - -
  • - GettingIntoPosition - false - 0 - -
  • - LayingPawn - -
  • - - 50 - 73.01611 - 40.0739746 - 0 - 0.054543376 - 0.112624526 - 0 - 3 - 3 -
  • -
  • - Slimy - 1 - 81.65927 - 58.8843079 - 0 - 0.03912908 - 0.08950315 - 0 - 3 - 3 -
  • - - -
  • - -
  • - - 50 - -0.359264076 - -0.00901746 - 114.011215 -
  • -
  • - - 1 - -0.2899 - -0.0282852575 - 98.13748 -
  • - - - - -
  • - FastMasturbation - true - 0 - 1610 - -
  • - LayingPawn - -
  • - 20 - 81.65927 - 58.8843079 - 0 - 0.03912908 - 0.08950315 - 0 - 3 - 3 -
  • -
  • - Slimy - 25 - 85.17255 - 58.0615845 - 0 - 0.03527552 - 0.0471138731 - 0 - 3 - 3 -
  • -
  • - 1 - 81.65927 - 58.8843079 - 0 - 0.03912908 - 0.08950315 - 0 - 3 - 3 -
  • - - -
  • - -
  • - - 25 - -0.2899 - -0.0282852575 - 98.13748 -
  • -
  • - - 20 - -0.178146541 - -0.01672452 - 96.95889 -
  • -
  • - - 1 - -0.2899 - -0.0282852575 - 98.13748 -
  • - - - - -
  • - VeryFastMasturbation - true - 0 - 225 - -
  • - LayingPawn - -
  • - 6 - 81.65927 - 58.8843079 - 0 - 0.03912908 - 0.08950315 - 0 - 3 - 3 -
  • -
  • - Slimy - 8 - 85.17255 - 58.0615845 - 0 - 0.03527552 - 0.0471138731 - 0 - 3 - 3 -
  • -
  • - 1 - 81.65927 - 58.8843079 - 0 - 0.03912908 - 0.08950315 - 0 - 3 - 3 -
  • - - -
  • - -
  • - - 6 - -0.2899 - -0.0282852575 - 98.13748 -
  • -
  • - - 8 - -0.178146541 - -0.01672452 - 96.95889 -
  • -
  • - - 1 - -0.2899 - -0.0282852575 - 98.13748 -
  • - - - - -
  • - Orgasm - false - 0 - -
  • - LayingPawn - -
  • - Slimy - 6 - 81.65927 - 58.8843079 - 0 - 0.03912908 - 0.08950315 - 0 - 3 - 3 -
  • -
  • - True - Cum - 80 - 85.17255 - 58.0615845 - 0 - 0.03527552 - 0.0471138731 - 0 - 3 - 3 -
  • -
  • - True - Cum - 90 - 92.15109 - 96.34238 - 0 - 0.0237147212 - 0.0432603136 - 0 - 3 - 3 -
  • -
  • - True - Cum - 70 - 92.15109 - 96.34238 - 0 - 0.0237147212 - 0.0432603136 - 0 - 3 - 3 -
  • -
  • - 70 - 92.15109 - 96.34238 - 0 - 0.0237147212 - 0.0432603136 - 0 - 3 - 3 -
  • -
  • - 1 - 81.65927 - 58.8843079 - 0 - 0.03912908 - 0.08950315 - 0 - 3 - 3 -
  • - - -
  • - -
  • - - 6 - -0.2899 - -0.0282852575 - 98.13748 -
  • -
  • - - 80 - -0.178146541 - -0.01672452 - 96.95889 -
  • -
  • - - 90 - -0.178146541 - -0.01672452 - 96.95889 -
  • -
  • - - 70 - -0.178146541 - -0.01672452 - 96.95889 -
  • -
  • - - 70 - -0.178146541 - -0.01672452 - 96.95889 -
  • -
  • - - 1 - -0.2899 - -0.0282852575 - 98.13748 -
  • - - - - -
    -
    -
    \ No newline at end of file diff --git a/Patch_SexToysMasturbation/Patch_SexToysMasturbation.csproj b/Patch_SexToysMasturbation/Patch_SexToysMasturbation.csproj deleted file mode 100644 index d274c6a..0000000 --- a/Patch_SexToysMasturbation/Patch_SexToysMasturbation.csproj +++ /dev/null @@ -1,89 +0,0 @@ - - - - - Debug - AnyCPU - {87763712-0536-4D5F-9EAA-520F15D4F84E} - Library - Properties - Patch_SexToysMasturbation - Patch_SexToysMasturbation - v4.8 - 512 - true - - - - false - none - false - 1.4\Assemblies\ - DEBUG;TRACE - prompt - 4 - Auto - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\..\..\..\..\workshop\content\294100\1127530465\1.3\Assemblies\0Harmony.dll - False - - - ..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll - False - - - False - ..\1.3\Assemblies\Rimworld-Animations.dll - False - - - ..\..\rjw\1.4\Assemblies\RJW.dll - False - - - ..\..\rjw-toys-and-masturbation\Assemblies\RJW-ToysAndMasturbation.dll - False - - - - - - - - - - - ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.dll - False - - - ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll - False - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Patch_SexToysMasturbation/Source/Defs/SexToyAnimationDef.cs b/Patch_SexToysMasturbation/Source/Defs/SexToyAnimationDef.cs deleted file mode 100644 index a572d5e..0000000 --- a/Patch_SexToysMasturbation/Source/Defs/SexToyAnimationDef.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Rimworld_Animations; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Patch_SexToysMasturbation -{ - public class SexToyAnimationDef : AnimationDef - { - - public String requiredBodyPart = null; - - } -} diff --git a/Patch_SexToysMasturbation/Source/Harmony/Harmony_PatchAll.cs b/Patch_SexToysMasturbation/Source/Harmony/Harmony_PatchAll.cs deleted file mode 100644 index b48ece7..0000000 --- a/Patch_SexToysMasturbation/Source/Harmony/Harmony_PatchAll.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Verse; -using HarmonyLib; -using System.Reflection; - -namespace Patch_SexToysMasturbation -{ - - [StaticConstructorOnStartup] - public static class Harmony_PatchAll { - - static Harmony_PatchAll() { - - Harmony val = new Harmony("animtoyspatch"); - val.PatchAll(Assembly.GetExecutingAssembly()); - - } - } -} diff --git a/Patch_SexToysMasturbation/Source/Patches/HarmonyPatch_JobDriver_SexBaseInitiator.cs b/Patch_SexToysMasturbation/Source/Patches/HarmonyPatch_JobDriver_SexBaseInitiator.cs deleted file mode 100644 index 9f29203..0000000 --- a/Patch_SexToysMasturbation/Source/Patches/HarmonyPatch_JobDriver_SexBaseInitiator.cs +++ /dev/null @@ -1,76 +0,0 @@ -using HarmonyLib; -using Rimworld_Animations; -using rjw; -using RJW_ToysAndMasturbation; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Verse; - -namespace Patch_SexToysMasturbation -{ - [HarmonyPatch(typeof(JobDriver_SexBaseInitiator), "Start")] - public class HarmonyPatch_JobDriver_SexBaseInitiator - { - - public static void Postfix(ref JobDriver_SexBaseInitiator __instance) - { - - if(__instance is JobDriver_MasturbateWithToy masturbateJobDriver) - { - - Log.Message("Rerolling animations..."); - Pawn pawn = masturbateJobDriver.pawn; - Thing sexToy = masturbateJobDriver.dildo; - - RerollAnimationsForSexToy(pawn, sexToy, masturbateJobDriver.Bed); - } - - - } - - public static void RerollAnimationsForSexToy(Pawn pawn, Thing thing, Thing bed) - { - CompSexToy sextoy = thing.TryGetComp(); - - SexToyAnimationDef anim = AnimSexToyUtility.tryFindAnimation(sextoy, pawn); - - if (anim != null) - { - Log.Message("Playing anim " + anim.defName); - - if(bed != null) - { - pawn.TryGetComp().setAnchor(bed); - thing.TryGetComp().setAnchor(bed); - } - else - { - pawn.TryGetComp().setAnchor(pawn.Position); - thing.TryGetComp().setAnchor(pawn.Position); - } - - bool mirror = GenTicks.TicksGame % 2 == 0; - - pawn.TryGetComp().StartAnimation(anim, new List { pawn }, 0, mirror); - thing.TryGetComp().StartAnimation(anim, pawn, mirror); - - (pawn.jobs.curDriver as JobDriver_Sex).ticks_left = anim.animationTimeTicks; - (pawn.jobs.curDriver as JobDriver_Sex).sex_ticks = anim.animationTimeTicks; - (pawn.jobs.curDriver as JobDriver_Sex).orgasmStartTick = anim.animationTimeTicks; - (pawn.jobs.curDriver as JobDriver_Sex).duration = anim.animationTimeTicks; - } - else - { - Log.Message("No animation found"); - } - - - } - - } - - -} diff --git a/Patch_SexToysMasturbation/Source/Utilities/AnimSexToyUtility.cs b/Patch_SexToysMasturbation/Source/Utilities/AnimSexToyUtility.cs deleted file mode 100644 index 5ab05b1..0000000 --- a/Patch_SexToysMasturbation/Source/Utilities/AnimSexToyUtility.cs +++ /dev/null @@ -1,47 +0,0 @@ -using rjw; -using RJW_ToysAndMasturbation; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Verse; - -namespace Patch_SexToysMasturbation -{ - public class AnimSexToyUtility - { - - public static SexToyAnimationDef tryFindAnimation(CompSexToy sexToy, Pawn pawn) - { - - IEnumerable options = DefDatabase.AllDefs.Where((SexToyAnimationDef x) => - { - - if(!sexToy.Props.requiredBodyParts.Contains(x.requiredBodyPart)) - { - return false; - } - - if(x.requiredBodyPart == "vagina" && !Genital_Helper.has_vagina(pawn)) - { - return false; - } - - return true; - - }); - - if(options != null && options.Any()) - { - return options.RandomElement(); - } - else - { - return null; - } - - } - - } -} diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs deleted file mode 100644 index e3bb54e..0000000 --- a/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -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("Rimworld-Animations")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Rimworld-Animations")] -[assembly: AssemblyCopyright("Copyright © 2020")] -[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("71b05d71-67b2-4014-82cd-18c20ac0882f")] - -// 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")] diff --git a/Rimworld-Animations.csproj b/Rimworld-Animations.csproj index 657ccf2..01a5440 100644 --- a/Rimworld-Animations.csproj +++ b/Rimworld-Animations.csproj @@ -1,184 +1,81 @@ - - - + - Debug - AnyCPU - {71B05D71-67B2-4014-82CD-18C20AC0882F} + TargetFramework Library - Properties Rimworld_Animations - Rimworld-Animations - v4.8 - 512 - true - + net472 + false + false false none - false - 1.4\Assemblies\ - DEBUG;TRACE - prompt - 4 + 1.6\Assemblies\ - none - true - bin\Release\ - TRACE - prompt - 4 + 1.6\Assemblies\ + x64 - - ..\..\..\..\workshop\content\294100\839005762\1.4\Assemblies\0Harmony.dll - False - - - ..\..\..\..\workshop\content\294100\839005762\1.4\Assemblies\AlienRace.dll - False - - - ..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll - False - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - ..\rjw\1.4\Assemblies\RJW.dll - False - - - ..\rjw-toys-and-masturbation\Assemblies\RJW-ToysAndMasturbation.dll - False - - - - - - - - - - - ..\..\RimWorldWin64_Data\Managed\UnityEngine.dll - False - - - ..\..\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll + ..\rjw\1.6\Assemblies\RJW.dll False - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - \ No newline at end of file diff --git a/Rimworld-Animations.sln b/Rimworld-Animations.sln index a5817dd..bfb5422 100644 --- a/Rimworld-Animations.sln +++ b/Rimworld-Animations.sln @@ -1,16 +1,10 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29905.134 +# Visual Studio Version 17 +VisualStudioVersion = 17.11.35431.28 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Rimworld-Animations", "Rimworld-Animations.csproj", "{71B05D71-67B2-4014-82CD-18C20AC0882F}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Patch_HatsDisplaySelection", "Patch_HatsDisplaySelection\Patch_HatsDisplaySelection.csproj", "{BA766964-1716-422D-A09E-29426F8EB9D5}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Patch_SexToysMasturbation", "Patch_SexToysMasturbation\Patch_SexToysMasturbation.csproj", "{87763712-0536-4D5F-9EAA-520F15D4F84E}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Patch_HumanoidAlienRaces", "Patch_HumanoidAlienRaces\Patch_HumanoidAlienRaces.csproj", "{C76F3790-9AC0-4827-ACD5-84174238954F}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -19,19 +13,8 @@ Global GlobalSection(ProjectConfigurationPlatforms) = postSolution {71B05D71-67B2-4014-82CD-18C20AC0882F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {71B05D71-67B2-4014-82CD-18C20AC0882F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {71B05D71-67B2-4014-82CD-18C20AC0882F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {71B05D71-67B2-4014-82CD-18C20AC0882F}.Release|Any CPU.Build.0 = Release|Any CPU - {BA766964-1716-422D-A09E-29426F8EB9D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BA766964-1716-422D-A09E-29426F8EB9D5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BA766964-1716-422D-A09E-29426F8EB9D5}.Release|Any CPU.Build.0 = Release|Any CPU - {87763712-0536-4D5F-9EAA-520F15D4F84E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {87763712-0536-4D5F-9EAA-520F15D4F84E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {87763712-0536-4D5F-9EAA-520F15D4F84E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {87763712-0536-4D5F-9EAA-520F15D4F84E}.Release|Any CPU.Build.0 = Release|Any CPU - {C76F3790-9AC0-4827-ACD5-84174238954F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C76F3790-9AC0-4827-ACD5-84174238954F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C76F3790-9AC0-4827-ACD5-84174238954F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C76F3790-9AC0-4827-ACD5-84174238954F}.Release|Any CPU.Build.0 = Release|Any CPU + {71B05D71-67B2-4014-82CD-18C20AC0882F}.Release|Any CPU.ActiveCfg = Debug|Any CPU + {71B05D71-67B2-4014-82CD-18C20AC0882F}.Release|Any CPU.Build.0 = Debug|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/packages.lock.json b/packages.lock.json new file mode 100644 index 0000000..c6d3489 --- /dev/null +++ b/packages.lock.json @@ -0,0 +1,45 @@ +{ + "version": 2, + "dependencies": { + ".NETFramework,Version=v4.7.2": { + "Krafs.Rimworld.Ref": { + "type": "Direct", + "requested": "[1.6.4566, )", + "resolved": "1.6.4566", + "contentHash": "lL2q5+XwA6xR4qcOHEVxoPrVxQqJLL1fTbmi2QI17qSlwobNBnhawxJqFMisbOYGA9EeAuIGhSkBrYLsPsFAuw==" + }, + "Lib.Harmony": { + "type": "Direct", + "requested": "[2.4.1, )", + "resolved": "2.4.1", + "contentHash": "iLTZi/kKKB18jYEIwReZSx2xXyVUh4J1swReMgvYBBBn4tzA1Nd0PJlVyntY5BDdSiXSxzmvjc/3OYfFs0YwFg==" + }, + "Microsoft.CSharp": { + "type": "Direct", + "requested": "[4.7.0, )", + "resolved": "4.7.0", + "contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==" + }, + "Microsoft.NETFramework.ReferenceAssemblies": { + "type": "Direct", + "requested": "[1.0.3, )", + "resolved": "1.0.3", + "contentHash": "vUc9Npcs14QsyOD01tnv/m8sQUnGTGOw1BCmKcv77LBJY7OxhJ+zJF7UD/sCL3lYNFuqmQEVlkfS4Quif6FyYg==", + "dependencies": { + "Microsoft.NETFramework.ReferenceAssemblies.net472": "1.0.3" + } + }, + "System.Data.DataSetExtensions": { + "type": "Direct", + "requested": "[4.5.0, )", + "resolved": "4.5.0", + "contentHash": "221clPs1445HkTBZPL+K9sDBdJRB8UN8rgjO3ztB0CQ26z//fmJXtlsr6whGatscsKGBrhJl5bwJuKSA8mwFOw==" + }, + "Microsoft.NETFramework.ReferenceAssemblies.net472": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "0E7evZXHXaDYYiLRfpyXvCh+yzM2rNTyuZDI+ZO7UUqSc6GfjePiXTdqJGtgIKUwdI81tzQKmaWprnUiPj9hAw==" + } + } + } +} \ No newline at end of file