diff --git a/.gitignore b/.gitignore index d392330..1c79e0c 100644 --- a/.gitignore +++ b/.gitignore @@ -348,15 +348,3 @@ 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 new file mode 100644 index 0000000..b2bba40 Binary files /dev/null and b/1.1/Assemblies/Rimworld-Animations.dll differ diff --git a/1.2/Assemblies/Rimworld-Animations.dll b/1.2/Assemblies/Rimworld-Animations.dll new file mode 100644 index 0000000..13afe5e Binary files /dev/null and b/1.2/Assemblies/Rimworld-Animations.dll differ diff --git a/1.2/Defs/AnimationDefs/AnimationDefs.rar b/1.2/Defs/AnimationDefs/AnimationDefs.rar new file mode 100644 index 0000000..e7bf2a1 Binary files /dev/null and b/1.2/Defs/AnimationDefs/AnimationDefs.rar differ diff --git a/1.2/Defs/AnimationDefs/Animations_Beast.xml b/1.2/Defs/AnimationDefs/Animations_Beast.xml new file mode 100644 index 0000000..30d14fc --- /dev/null +++ b/1.2/Defs/AnimationDefs/Animations_Beast.xml @@ -0,0 +1,2180 @@ + + + + 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 new file mode 100644 index 0000000..56d805a --- /dev/null +++ b/1.2/Defs/AnimationDefs/Animations_Lesbian.xml @@ -0,0 +1,1782 @@ + + + + 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 new file mode 100644 index 0000000..2968fa1 --- /dev/null +++ b/1.2/Defs/AnimationDefs/Animations_Masturbate.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/1.2/Defs/AnimationDefs/Animations_Multi.xml b/1.2/Defs/AnimationDefs/Animations_Multi.xml new file mode 100644 index 0000000..ce4e595 --- /dev/null +++ b/1.2/Defs/AnimationDefs/Animations_Multi.xml @@ -0,0 +1,657 @@ + + + + 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 new file mode 100644 index 0000000..fcab1a9 --- /dev/null +++ b/1.2/Defs/AnimationDefs/Animations_Vanilla2.xml @@ -0,0 +1,377 @@ + + + + + + + \ No newline at end of file diff --git a/1.2/Defs/AnimationDefs/Animations_vanilla.xml b/1.2/Defs/AnimationDefs/Animations_vanilla.xml new file mode 100644 index 0000000..079753a --- /dev/null +++ b/1.2/Defs/AnimationDefs/Animations_vanilla.xml @@ -0,0 +1,2796 @@ + + + + + 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 new file mode 100644 index 0000000..0305903 --- /dev/null +++ b/1.2/Defs/AnimationDefs/TemplateAnimation.xml @@ -0,0 +1,54 @@ + + + + diff --git a/1.2/Defs/JobDefs/Jobs_SexForAnim.xml b/1.2/Defs/JobDefs/Jobs_SexForAnim.xml new file mode 100644 index 0000000..20c0bca --- /dev/null +++ b/1.2/Defs/JobDefs/Jobs_SexForAnim.xml @@ -0,0 +1,17 @@ + + + + + JoinInBedAnimation + Rimworld_Animations.JobDriver_SexCasualForAnimation + joining someone in bed. + false + + + + GettinLovedAnimation + Rimworld_Animations.JobDriver_SexBaseRecieverLovedForAnimation + lovin'. + false + + diff --git a/1.6/Defs/MainTabDefs/MainButtonDef.xml b/1.2/Defs/MainTabDefs/MainButtonDef.xml similarity index 75% rename from 1.6/Defs/MainTabDefs/MainButtonDef.xml rename to 1.2/Defs/MainTabDefs/MainButtonDef.xml index 24be191..0674d24 100644 --- a/1.6/Defs/MainTabDefs/MainButtonDef.xml +++ b/1.2/Defs/MainTabDefs/MainButtonDef.xml @@ -3,8 +3,8 @@ OffsetManager - - Edit pawn offsets for animations. + + Control pawn offsets Rimworld_Animations.MainTabWindow_OffsetConfigure 54 false diff --git a/1.2/Defs/SoundDefs/Sounds_Sex.xml b/1.2/Defs/SoundDefs/Sounds_Sex.xml new file mode 100644 index 0000000..4cce5d0 --- /dev/null +++ b/1.2/Defs/SoundDefs/Sounds_Sex.xml @@ -0,0 +1,212 @@ + + + + + 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.6/Patch_HatsDisplaySelection/Patch_HatsDisplaySelection.csproj b/1.2/Patch_HatsDisplaySelection/Patch_HatsDisplaySelection.csproj similarity index 100% rename from 1.6/Patch_HatsDisplaySelection/Patch_HatsDisplaySelection.csproj rename to 1.2/Patch_HatsDisplaySelection/Patch_HatsDisplaySelection.csproj diff --git a/Milkable-Colonists-Animations/Properties/AssemblyInfo.cs b/1.2/Patch_HatsDisplaySelection/Properties/AssemblyInfo.cs similarity index 83% rename from Milkable-Colonists-Animations/Properties/AssemblyInfo.cs rename to 1.2/Patch_HatsDisplaySelection/Properties/AssemblyInfo.cs index 1032646..6905d78 100644 --- a/Milkable-Colonists-Animations/Properties/AssemblyInfo.cs +++ b/1.2/Patch_HatsDisplaySelection/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("Milkable-Colonists-Animations")] +[assembly: AssemblyTitle("Patch_HatsDisplaySelection")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Milkable-Colonists-Animations")] -[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyProduct("Patch_HatsDisplaySelection")] +[assembly: AssemblyCopyright("Copyright © 2021")] [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("11dc70af-ff23-4d4d-a4e5-6453664b1a12")] +[assembly: Guid("ba766964-1716-422d-a09e-29426f8eb9d5")] // Version information for an assembly consists of the following four values: // diff --git a/1.2/Patch_HatsDisplaySelection/Source/Patches/Patch_HatsDisplaySelection.cs b/1.2/Patch_HatsDisplaySelection/Source/Patches/Patch_HatsDisplaySelection.cs new file mode 100644 index 0000000..6f00a5a --- /dev/null +++ b/1.2/Patch_HatsDisplaySelection/Source/Patches/Patch_HatsDisplaySelection.cs @@ -0,0 +1,47 @@ +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 new file mode 100644 index 0000000..fe3a27c --- /dev/null +++ b/1.2/Patches/AnimationPatch_CompBodyAnimator.xml @@ -0,0 +1,25 @@ + + + + Always + +
  • + /Defs/ThingDef/comps + Always + + /Defs/ThingDef + + + + +
  • + +
  • + /Defs/ThingDef/comps + +
  • + +
  • +
    +
    +
    \ No newline at end of file diff --git a/1.6/Patches/CompatibilityPatch_FacialAnimation.xml b/1.2/Patches/CompatibilityPatch_FacialAnimation.xml similarity index 58% rename from 1.6/Patches/CompatibilityPatch_FacialAnimation.xml rename to 1.2/Patches/CompatibilityPatch_FacialAnimation.xml index 53e3f05..125d79f 100644 --- a/1.6/Patches/CompatibilityPatch_FacialAnimation.xml +++ b/1.2/Patches/CompatibilityPatch_FacialAnimation.xml @@ -11,21 +11,68 @@ /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="Lovin" or defName="Lovin2"]/animationFrames/li[1]/headOffset +
  • + /Defs/FacialAnimation.FaceAnimationDef[defName="WaitCombat" or defName="Wait_Combat_Rare"]/targetJobs Always + +
  • RapeComfortPawn
  • +
  • RandomRape
  • +
  • RapeEnemy
  • + -
  • - /Defs/FacialAnimation.FaceAnimationDef[defName="Lovin"]/animationFrames/li[2]/headOffset +
  • + /Defs/FacialAnimation.FaceAnimationDef[defName="StandAndBeSociallyActive"]/targetJobs Always + +
  • WhoreInvitingVisitors
  • + -
  • - /Defs/FacialAnimation.FaceAnimationDef[defName="Lovin"]/animationFrames/li[3]/headOffset +
  • + /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 +
  • +
    +
    diff --git a/1.2/Patches/CompatibilityPatch_HCSK.xml b/1.2/Patches/CompatibilityPatch_HCSK.xml new file mode 100644 index 0000000..2c0b7a0 --- /dev/null +++ b/1.2/Patches/CompatibilityPatch_HCSK.xml @@ -0,0 +1,32 @@ + + + + + +
  • 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.6/Sounds/Sex/Clap_1.wav b/1.2/Sounds/Sex/Clap_1.wav similarity index 100% rename from 1.6/Sounds/Sex/Clap_1.wav rename to 1.2/Sounds/Sex/Clap_1.wav diff --git a/1.6/Sounds/Sex/Clap_2.wav b/1.2/Sounds/Sex/Clap_2.wav similarity index 100% rename from 1.6/Sounds/Sex/Clap_2.wav rename to 1.2/Sounds/Sex/Clap_2.wav diff --git a/1.6/Sounds/Sex/Clap_3.wav b/1.2/Sounds/Sex/Clap_3.wav similarity index 100% rename from 1.6/Sounds/Sex/Clap_3.wav rename to 1.2/Sounds/Sex/Clap_3.wav diff --git a/1.6/Sounds/Sex/Clap_4.wav b/1.2/Sounds/Sex/Clap_4.wav similarity index 100% rename from 1.6/Sounds/Sex/Clap_4.wav rename to 1.2/Sounds/Sex/Clap_4.wav diff --git a/1.6/Sounds/Sex/Clap_5.wav b/1.2/Sounds/Sex/Clap_5.wav similarity index 100% rename from 1.6/Sounds/Sex/Clap_5.wav rename to 1.2/Sounds/Sex/Clap_5.wav diff --git a/1.6/Sounds/Sex/Clap_6.wav b/1.2/Sounds/Sex/Clap_6.wav similarity index 100% rename from 1.6/Sounds/Sex/Clap_6.wav rename to 1.2/Sounds/Sex/Clap_6.wav diff --git a/1.6/Sounds/Sex/Clap_7.wav b/1.2/Sounds/Sex/Clap_7.wav similarity index 100% rename from 1.6/Sounds/Sex/Clap_7.wav rename to 1.2/Sounds/Sex/Clap_7.wav diff --git a/1.6/Sounds/Sex/Clap_8.wav b/1.2/Sounds/Sex/Clap_8.wav similarity index 100% rename from 1.6/Sounds/Sex/Clap_8.wav rename to 1.2/Sounds/Sex/Clap_8.wav diff --git a/1.6/Sounds/Sex/Slime/Slimy1.wav b/1.2/Sounds/Sex/Slime/Slimy1.wav similarity index 100% rename from 1.6/Sounds/Sex/Slime/Slimy1.wav rename to 1.2/Sounds/Sex/Slime/Slimy1.wav diff --git a/1.6/Sounds/Sex/Slime/Slimy2.wav b/1.2/Sounds/Sex/Slime/Slimy2.wav similarity index 100% rename from 1.6/Sounds/Sex/Slime/Slimy2.wav rename to 1.2/Sounds/Sex/Slime/Slimy2.wav diff --git a/1.6/Sounds/Sex/Slime/Slimy3.wav b/1.2/Sounds/Sex/Slime/Slimy3.wav similarity index 100% rename from 1.6/Sounds/Sex/Slime/Slimy3.wav rename to 1.2/Sounds/Sex/Slime/Slimy3.wav diff --git a/1.6/Sounds/Sex/Slime/Slimy4.wav b/1.2/Sounds/Sex/Slime/Slimy4.wav similarity index 100% rename from 1.6/Sounds/Sex/Slime/Slimy4.wav rename to 1.2/Sounds/Sex/Slime/Slimy4.wav diff --git a/1.6/Sounds/Sex/Slime/Slimy5.wav b/1.2/Sounds/Sex/Slime/Slimy5.wav similarity index 100% rename from 1.6/Sounds/Sex/Slime/Slimy5.wav rename to 1.2/Sounds/Sex/Slime/Slimy5.wav diff --git a/1.6/Sounds/Sex/Suck/Suck_1.wav b/1.2/Sounds/Sex/Suck/Suck_1.wav similarity index 100% rename from 1.6/Sounds/Sex/Suck/Suck_1.wav rename to 1.2/Sounds/Sex/Suck/Suck_1.wav diff --git a/1.6/Sounds/Sex/Suck/Suck_10.wav b/1.2/Sounds/Sex/Suck/Suck_10.wav similarity index 100% rename from 1.6/Sounds/Sex/Suck/Suck_10.wav rename to 1.2/Sounds/Sex/Suck/Suck_10.wav diff --git a/1.6/Sounds/Sex/Suck/Suck_3.wav b/1.2/Sounds/Sex/Suck/Suck_3.wav similarity index 100% rename from 1.6/Sounds/Sex/Suck/Suck_3.wav rename to 1.2/Sounds/Sex/Suck/Suck_3.wav diff --git a/1.6/Sounds/Sex/Suck/Suck_4.wav b/1.2/Sounds/Sex/Suck/Suck_4.wav similarity index 100% rename from 1.6/Sounds/Sex/Suck/Suck_4.wav rename to 1.2/Sounds/Sex/Suck/Suck_4.wav diff --git a/1.6/Sounds/Sex/Suck/Suck_5.wav b/1.2/Sounds/Sex/Suck/Suck_5.wav similarity index 100% rename from 1.6/Sounds/Sex/Suck/Suck_5.wav rename to 1.2/Sounds/Sex/Suck/Suck_5.wav diff --git a/1.6/Sounds/Sex/Suck/Suck_6.wav b/1.2/Sounds/Sex/Suck/Suck_6.wav similarity index 100% rename from 1.6/Sounds/Sex/Suck/Suck_6.wav rename to 1.2/Sounds/Sex/Suck/Suck_6.wav diff --git a/1.6/Sounds/Sex/Suck/Suck_7.wav b/1.2/Sounds/Sex/Suck/Suck_7.wav similarity index 100% rename from 1.6/Sounds/Sex/Suck/Suck_7.wav rename to 1.2/Sounds/Sex/Suck/Suck_7.wav diff --git a/1.6/Sounds/Sex/Suck/Suck_8.wav b/1.2/Sounds/Sex/Suck/Suck_8.wav similarity index 100% rename from 1.6/Sounds/Sex/Suck/Suck_8.wav rename to 1.2/Sounds/Sex/Suck/Suck_8.wav diff --git a/1.6/Sounds/Sex/Suck/Suck_9.wav b/1.2/Sounds/Sex/Suck/Suck_9.wav similarity index 100% rename from 1.6/Sounds/Sex/Suck/Suck_9.wav rename to 1.2/Sounds/Sex/Suck/Suck_9.wav diff --git a/1.6/Sounds/Sex/Suck/Swallow_1.wav b/1.2/Sounds/Sex/Suck/Swallow_1.wav similarity index 100% rename from 1.6/Sounds/Sex/Suck/Swallow_1.wav rename to 1.2/Sounds/Sex/Suck/Swallow_1.wav diff --git a/1.6/Sounds/Sex/Suck/Swallow_2.wav b/1.2/Sounds/Sex/Suck/Swallow_2.wav similarity index 100% rename from 1.6/Sounds/Sex/Suck/Swallow_2.wav rename to 1.2/Sounds/Sex/Suck/Swallow_2.wav diff --git a/1.6/Sounds/Sex/Suck/Swallow_3.wav b/1.2/Sounds/Sex/Suck/Swallow_3.wav similarity index 100% rename from 1.6/Sounds/Sex/Suck/Swallow_3.wav rename to 1.2/Sounds/Sex/Suck/Swallow_3.wav diff --git a/1.6/Sounds/Sex/Suck/Suck_2.wav b/1.2/Sounds/Sex/Suck/suck_2.wav similarity index 100% rename from 1.6/Sounds/Sex/Suck/Suck_2.wav rename to 1.2/Sounds/Sex/Suck/suck_2.wav diff --git a/1.6/Sounds/Sex/cum.wav b/1.2/Sounds/Sex/cum.wav similarity index 100% rename from 1.6/Sounds/Sex/cum.wav rename to 1.2/Sounds/Sex/cum.wav diff --git a/1.6/Sounds/Sex/kucyu04.wav b/1.2/Sounds/Sex/kucyu04.wav similarity index 100% rename from 1.6/Sounds/Sex/kucyu04.wav rename to 1.2/Sounds/Sex/kucyu04.wav diff --git a/1.2/Textures/UI/MainTab.png b/1.2/Textures/UI/MainTab.png new file mode 100644 index 0000000..92f855f Binary files /dev/null and b/1.2/Textures/UI/MainTab.png differ diff --git a/1.3/Assemblies/Rimworld-Animations.dll b/1.3/Assemblies/Rimworld-Animations.dll new file mode 100644 index 0000000..7f376ba Binary files /dev/null and b/1.3/Assemblies/Rimworld-Animations.dll differ diff --git a/1.3/Defs/AnimationDefs/AnimationDefs.rar b/1.3/Defs/AnimationDefs/AnimationDefs.rar new file mode 100644 index 0000000..e7bf2a1 Binary files /dev/null and b/1.3/Defs/AnimationDefs/AnimationDefs.rar differ diff --git a/1.3/Defs/AnimationDefs/Animations_Beast.xml b/1.3/Defs/AnimationDefs/Animations_Beast.xml new file mode 100644 index 0000000..30d14fc --- /dev/null +++ b/1.3/Defs/AnimationDefs/Animations_Beast.xml @@ -0,0 +1,2180 @@ + + + + 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 new file mode 100644 index 0000000..56d805a --- /dev/null +++ b/1.3/Defs/AnimationDefs/Animations_Lesbian.xml @@ -0,0 +1,1782 @@ + + + + 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 new file mode 100644 index 0000000..2968fa1 --- /dev/null +++ b/1.3/Defs/AnimationDefs/Animations_Masturbate.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/1.3/Defs/AnimationDefs/Animations_Multi.xml b/1.3/Defs/AnimationDefs/Animations_Multi.xml new file mode 100644 index 0000000..af7ea7a --- /dev/null +++ b/1.3/Defs/AnimationDefs/Animations_Multi.xml @@ -0,0 +1,660 @@ + + + + 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 new file mode 100644 index 0000000..320d3aa --- /dev/null +++ b/1.3/Defs/AnimationDefs/Animations_SexToys.xml @@ -0,0 +1,59 @@ + + + + diff --git a/1.3/Defs/AnimationDefs/Animations_Vanilla2.xml b/1.3/Defs/AnimationDefs/Animations_Vanilla2.xml new file mode 100644 index 0000000..71b02a9 --- /dev/null +++ b/1.3/Defs/AnimationDefs/Animations_Vanilla2.xml @@ -0,0 +1,378 @@ + + + + + + + \ No newline at end of file diff --git a/1.3/Defs/AnimationDefs/Animations_vanilla.xml b/1.3/Defs/AnimationDefs/Animations_vanilla.xml new file mode 100644 index 0000000..0fd61d5 --- /dev/null +++ b/1.3/Defs/AnimationDefs/Animations_vanilla.xml @@ -0,0 +1,2799 @@ + + + + + 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 new file mode 100644 index 0000000..0305903 --- /dev/null +++ b/1.3/Defs/AnimationDefs/TemplateAnimation.xml @@ -0,0 +1,54 @@ + + + + diff --git a/1.3/Defs/MainTabDefs/MainButtonDef.xml b/1.3/Defs/MainTabDefs/MainButtonDef.xml new file mode 100644 index 0000000..0674d24 --- /dev/null +++ b/1.3/Defs/MainTabDefs/MainButtonDef.xml @@ -0,0 +1,15 @@ + + + + + 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 new file mode 100644 index 0000000..4cce5d0 --- /dev/null +++ b/1.3/Defs/SoundDefs/Sounds_Sex.xml @@ -0,0 +1,212 @@ + + + + + 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/Milkable-Colonists-Animations/Milkable-Colonists-Animations.csproj b/1.3/Patch_HatsDisplaySelection/Patch_HatsDisplaySelection.csproj similarity index 66% rename from Milkable-Colonists-Animations/Milkable-Colonists-Animations.csproj rename to 1.3/Patch_HatsDisplaySelection/Patch_HatsDisplaySelection.csproj index e4e8b55..8da21a6 100644 --- a/Milkable-Colonists-Animations/Milkable-Colonists-Animations.csproj +++ b/1.3/Patch_HatsDisplaySelection/Patch_HatsDisplaySelection.csproj @@ -4,20 +4,20 @@ Debug AnyCPU - {11DC70AF-FF23-4D4D-A4E5-6453664B1A12} + {BA766964-1716-422D-A09E-29426F8EB9D5} Library Properties - Milkable_Colonists_Animations - Milkable-Colonists-Animations - v4.8 + Patch_HatsDisplaySelection + Patch_HatsDisplaySelection + v4.7.2 512 true - true - full + false + none false - bin\Debug\ + 1.2\Assemblies\ DEBUG;TRACE prompt 4 @@ -32,15 +32,19 @@ - ..\..\..\..\..\workshop\content\294100\839005762\1.5\Assemblies\0Harmony.dll + ..\..\..\..\..\workshop\content\294100\2009463077\Current\Assemblies\0Harmony.dll False ..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll False - - ..\..\rjw\1.4\Assemblies\RJW.dll + + ..\..\..\..\..\workshop\content\294100\1542291825\1.2\Assemblies\HatDisplaySelection.dll + False + + + ..\1.2\Assemblies\Rimworld-Animations.dll False @@ -55,10 +59,17 @@ ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.dll False + + ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll + False + - + + + + \ No newline at end of file diff --git a/1.6/Patches/AnimationPatchHSK.xml b/1.3/Patches/AnimationPatchHSK.xml similarity index 90% rename from 1.6/Patches/AnimationPatchHSK.xml rename to 1.3/Patches/AnimationPatchHSK.xml index e061299..74038ea 100644 --- a/1.6/Patches/AnimationPatchHSK.xml +++ b/1.3/Patches/AnimationPatchHSK.xml @@ -21,7 +21,7 @@
  • Defs/ThingDef[@Name="BaseAnimalPawn" or @Name="SK_BasePawn" or @Name="BasePawnSkynet"]/comps -
  • +
  • diff --git a/1.6/Patches/AnimationPatch_CompExtendedAnimator.xml b/1.3/Patches/AnimationPatch_CompBodyAnimator.xml similarity index 83% rename from 1.6/Patches/AnimationPatch_CompExtendedAnimator.xml rename to 1.3/Patches/AnimationPatch_CompBodyAnimator.xml index 87f9f7d..e645747 100644 --- a/1.6/Patches/AnimationPatch_CompExtendedAnimator.xml +++ b/1.3/Patches/AnimationPatch_CompBodyAnimator.xml @@ -21,13 +21,13 @@
  • Defs/ThingDef[@Name="BasePawn"]/comps -
  • +
  • Defs/AlienRace.ThingDef_AlienRace/comps -
  • +
  • diff --git a/1.6/Patches/CompPatches/AutoCleaner.xml b/1.3/Patches/CompPatches/AutoCleaner.xml similarity index 87% rename from 1.6/Patches/CompPatches/AutoCleaner.xml rename to 1.3/Patches/CompPatches/AutoCleaner.xml index c6ba2bb..c2ad860 100644 --- a/1.6/Patches/CompPatches/AutoCleaner.xml +++ b/1.3/Patches/CompPatches/AutoCleaner.xml @@ -9,7 +9,7 @@ /Defs/ThingDef[@Name="BaseBaseAutocleaner"]/comps -
  • +
  • diff --git a/1.6/Patches/CompPatches/CombatExtended.xml b/1.3/Patches/CompPatches/CombatExtended.xml similarity index 86% rename from 1.6/Patches/CompPatches/CombatExtended.xml rename to 1.3/Patches/CompPatches/CombatExtended.xml index aed123b..7d35127 100644 --- a/1.6/Patches/CompPatches/CombatExtended.xml +++ b/1.3/Patches/CompPatches/CombatExtended.xml @@ -9,7 +9,7 @@ /Defs/ThingDef[@Name="BasePawnSimple"]/comps -
  • +
  • diff --git a/1.6/Patches/CompPatches/ZombieLand.xml b/1.3/Patches/CompPatches/ZombieLand.xml similarity index 86% rename from 1.6/Patches/CompPatches/ZombieLand.xml rename to 1.3/Patches/CompPatches/ZombieLand.xml index 87f618c..e950e0e 100644 --- a/1.6/Patches/CompPatches/ZombieLand.xml +++ b/1.3/Patches/CompPatches/ZombieLand.xml @@ -9,7 +9,7 @@ /Defs/ThingDef[@Name="BaseZombie"]/comps -
  • +
  • diff --git a/1.3/Patches/CompatibilityPatch_FacialAnimation.xml b/1.3/Patches/CompatibilityPatch_FacialAnimation.xml new file mode 100644 index 0000000..125d79f --- /dev/null +++ b/1.3/Patches/CompatibilityPatch_FacialAnimation.xml @@ -0,0 +1,130 @@ + + + + +
  • [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.6/Patches/CompatibilityPatch_HCSK.xml b/1.3/Patches/CompatibilityPatch_HCSK.xml similarity index 95% rename from 1.6/Patches/CompatibilityPatch_HCSK.xml rename to 1.3/Patches/CompatibilityPatch_HCSK.xml index 576a07f..ead8783 100644 --- a/1.6/Patches/CompatibilityPatch_HCSK.xml +++ b/1.3/Patches/CompatibilityPatch_HCSK.xml @@ -22,14 +22,14 @@
  • /Defs/ThingDef[@Name="SK_BasePawn"]/comps -
  • +
  • /Defs/ThingDef[@Name="BaseAnimalPawn"]/comps -
  • +
  • diff --git a/1.3/Patches/RacePatches/Epona race Renaissance.xml b/1.3/Patches/RacePatches/Epona race Renaissance.xml new file mode 100644 index 0000000..f39b509 --- /dev/null +++ b/1.3/Patches/RacePatches/Epona race Renaissance.xml @@ -0,0 +1,19 @@ + + + + +
  • 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 new file mode 100644 index 0000000..0a7a08e --- /dev/null +++ b/1.3/Patches/RacePatches/Nyaron.xml @@ -0,0 +1,19 @@ + + + + +
  • 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 new file mode 100644 index 0000000..bccd0f2 Binary files /dev/null and b/1.3/Sounds/Sex/Clap_1.wav differ diff --git a/1.3/Sounds/Sex/Clap_2.wav b/1.3/Sounds/Sex/Clap_2.wav new file mode 100644 index 0000000..a382f59 Binary files /dev/null and b/1.3/Sounds/Sex/Clap_2.wav differ diff --git a/1.3/Sounds/Sex/Clap_3.wav b/1.3/Sounds/Sex/Clap_3.wav new file mode 100644 index 0000000..65cf39b Binary files /dev/null and b/1.3/Sounds/Sex/Clap_3.wav differ diff --git a/1.3/Sounds/Sex/Clap_4.wav b/1.3/Sounds/Sex/Clap_4.wav new file mode 100644 index 0000000..3ae1b3e Binary files /dev/null and b/1.3/Sounds/Sex/Clap_4.wav differ diff --git a/1.3/Sounds/Sex/Clap_5.wav b/1.3/Sounds/Sex/Clap_5.wav new file mode 100644 index 0000000..65144e7 Binary files /dev/null and b/1.3/Sounds/Sex/Clap_5.wav differ diff --git a/1.3/Sounds/Sex/Clap_6.wav b/1.3/Sounds/Sex/Clap_6.wav new file mode 100644 index 0000000..0026325 Binary files /dev/null and b/1.3/Sounds/Sex/Clap_6.wav differ diff --git a/1.3/Sounds/Sex/Clap_7.wav b/1.3/Sounds/Sex/Clap_7.wav new file mode 100644 index 0000000..6d7de2a Binary files /dev/null and b/1.3/Sounds/Sex/Clap_7.wav differ diff --git a/1.3/Sounds/Sex/Clap_8.wav b/1.3/Sounds/Sex/Clap_8.wav new file mode 100644 index 0000000..1af5710 Binary files /dev/null and b/1.3/Sounds/Sex/Clap_8.wav differ diff --git a/1.3/Sounds/Sex/Slime/Slimy1.wav b/1.3/Sounds/Sex/Slime/Slimy1.wav new file mode 100644 index 0000000..3cfbd74 Binary files /dev/null and b/1.3/Sounds/Sex/Slime/Slimy1.wav differ diff --git a/1.3/Sounds/Sex/Slime/Slimy2.wav b/1.3/Sounds/Sex/Slime/Slimy2.wav new file mode 100644 index 0000000..36a9197 Binary files /dev/null and b/1.3/Sounds/Sex/Slime/Slimy2.wav differ diff --git a/1.3/Sounds/Sex/Slime/Slimy3.wav b/1.3/Sounds/Sex/Slime/Slimy3.wav new file mode 100644 index 0000000..40aff1e Binary files /dev/null and b/1.3/Sounds/Sex/Slime/Slimy3.wav differ diff --git a/1.3/Sounds/Sex/Slime/Slimy4.wav b/1.3/Sounds/Sex/Slime/Slimy4.wav new file mode 100644 index 0000000..0b6404e Binary files /dev/null and b/1.3/Sounds/Sex/Slime/Slimy4.wav differ diff --git a/1.3/Sounds/Sex/Slime/Slimy5.wav b/1.3/Sounds/Sex/Slime/Slimy5.wav new file mode 100644 index 0000000..ea310db Binary files /dev/null and b/1.3/Sounds/Sex/Slime/Slimy5.wav differ diff --git a/1.3/Sounds/Sex/Suck/Suck_1.wav b/1.3/Sounds/Sex/Suck/Suck_1.wav new file mode 100644 index 0000000..4f1eafd Binary files /dev/null and b/1.3/Sounds/Sex/Suck/Suck_1.wav differ diff --git a/1.3/Sounds/Sex/Suck/Suck_10.wav b/1.3/Sounds/Sex/Suck/Suck_10.wav new file mode 100644 index 0000000..284cda3 Binary files /dev/null and b/1.3/Sounds/Sex/Suck/Suck_10.wav differ diff --git a/1.3/Sounds/Sex/Suck/Suck_3.wav b/1.3/Sounds/Sex/Suck/Suck_3.wav new file mode 100644 index 0000000..95e7348 Binary files /dev/null and b/1.3/Sounds/Sex/Suck/Suck_3.wav differ diff --git a/1.3/Sounds/Sex/Suck/Suck_4.wav b/1.3/Sounds/Sex/Suck/Suck_4.wav new file mode 100644 index 0000000..753a023 Binary files /dev/null and b/1.3/Sounds/Sex/Suck/Suck_4.wav differ diff --git a/1.3/Sounds/Sex/Suck/Suck_5.wav b/1.3/Sounds/Sex/Suck/Suck_5.wav new file mode 100644 index 0000000..8ecda9c Binary files /dev/null and b/1.3/Sounds/Sex/Suck/Suck_5.wav differ diff --git a/1.3/Sounds/Sex/Suck/Suck_6.wav b/1.3/Sounds/Sex/Suck/Suck_6.wav new file mode 100644 index 0000000..08567d6 Binary files /dev/null and b/1.3/Sounds/Sex/Suck/Suck_6.wav differ diff --git a/1.3/Sounds/Sex/Suck/Suck_7.wav b/1.3/Sounds/Sex/Suck/Suck_7.wav new file mode 100644 index 0000000..a63b0e4 Binary files /dev/null and b/1.3/Sounds/Sex/Suck/Suck_7.wav differ diff --git a/1.3/Sounds/Sex/Suck/Suck_8.wav b/1.3/Sounds/Sex/Suck/Suck_8.wav new file mode 100644 index 0000000..320da09 Binary files /dev/null and b/1.3/Sounds/Sex/Suck/Suck_8.wav differ diff --git a/1.3/Sounds/Sex/Suck/Suck_9.wav b/1.3/Sounds/Sex/Suck/Suck_9.wav new file mode 100644 index 0000000..7ab538a Binary files /dev/null and b/1.3/Sounds/Sex/Suck/Suck_9.wav differ diff --git a/1.3/Sounds/Sex/Suck/Swallow_1.wav b/1.3/Sounds/Sex/Suck/Swallow_1.wav new file mode 100644 index 0000000..f3276cc Binary files /dev/null and b/1.3/Sounds/Sex/Suck/Swallow_1.wav differ diff --git a/1.3/Sounds/Sex/Suck/Swallow_2.wav b/1.3/Sounds/Sex/Suck/Swallow_2.wav new file mode 100644 index 0000000..09a7a00 Binary files /dev/null and b/1.3/Sounds/Sex/Suck/Swallow_2.wav differ diff --git a/1.3/Sounds/Sex/Suck/Swallow_3.wav b/1.3/Sounds/Sex/Suck/Swallow_3.wav new file mode 100644 index 0000000..2817b29 Binary files /dev/null and b/1.3/Sounds/Sex/Suck/Swallow_3.wav differ diff --git a/1.3/Sounds/Sex/Suck/suck_2.wav b/1.3/Sounds/Sex/Suck/suck_2.wav new file mode 100644 index 0000000..a8305c1 Binary files /dev/null and b/1.3/Sounds/Sex/Suck/suck_2.wav differ diff --git a/1.3/Sounds/Sex/cum.wav b/1.3/Sounds/Sex/cum.wav new file mode 100644 index 0000000..ef98437 Binary files /dev/null and b/1.3/Sounds/Sex/cum.wav differ diff --git a/1.3/Sounds/Sex/kucyu04.wav b/1.3/Sounds/Sex/kucyu04.wav new file mode 100644 index 0000000..3ae1ce8 Binary files /dev/null and b/1.3/Sounds/Sex/kucyu04.wav differ diff --git a/1.6/Source/Actors/Actor.cs b/1.3/Source/Actors/Actor.cs similarity index 100% rename from 1.6/Source/Actors/Actor.cs rename to 1.3/Source/Actors/Actor.cs diff --git a/1.6/Source/Actors/AlienRaceOffset.cs b/1.3/Source/Actors/AlienRaceOffset.cs similarity index 100% rename from 1.6/Source/Actors/AlienRaceOffset.cs rename to 1.3/Source/Actors/AlienRaceOffset.cs diff --git a/1.3/Source/Actors/BodyTypeOffset.cs b/1.3/Source/Actors/BodyTypeOffset.cs new file mode 100644 index 0000000..82a23a3 --- /dev/null +++ b/1.3/Source/Actors/BodyTypeOffset.cs @@ -0,0 +1,18 @@ +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 new file mode 100644 index 0000000..7a1304e --- /dev/null +++ b/1.3/Source/Animations/AnimationStage.cs @@ -0,0 +1,28 @@ +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 new file mode 100644 index 0000000..aa35b31 --- /dev/null +++ b/1.3/Source/Animations/Clips/BaseAnimationClip.cs @@ -0,0 +1,20 @@ +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 new file mode 100644 index 0000000..e9d2489 --- /dev/null +++ b/1.3/Source/Animations/Clips/PawnAnimationClip.cs @@ -0,0 +1,115 @@ +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 new file mode 100644 index 0000000..26f4d4c --- /dev/null +++ b/1.3/Source/Animations/Clips/ThingAnimationClip.cs @@ -0,0 +1,74 @@ +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 new file mode 100644 index 0000000..8cd859d --- /dev/null +++ b/1.3/Source/Animations/Keyframes/Keyframe.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 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 new file mode 100644 index 0000000..e710981 --- /dev/null +++ b/1.3/Source/Animations/Keyframes/PawnKeyframe.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 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 new file mode 100644 index 0000000..6604f5e --- /dev/null +++ b/1.3/Source/Animations/Keyframes/ThingKeyframe.cs @@ -0,0 +1,18 @@ +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 new file mode 100644 index 0000000..7910f7d --- /dev/null +++ b/1.3/Source/Comps/CompBodyAnimator.cs @@ -0,0 +1,527 @@ +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.6/Source/Comps/CompProperties_ExtendedAnimator.cs b/1.3/Source/Comps/CompProperties_BodyAnimator.cs similarity index 55% rename from 1.6/Source/Comps/CompProperties_ExtendedAnimator.cs rename to 1.3/Source/Comps/CompProperties_BodyAnimator.cs index 47fc1a5..09df7ce 100644 --- a/1.6/Source/Comps/CompProperties_ExtendedAnimator.cs +++ b/1.3/Source/Comps/CompProperties_BodyAnimator.cs @@ -7,12 +7,11 @@ using Verse; using RimWorld; namespace Rimworld_Animations { - public class CompProperties_ExtendedAnimator : CompProperties + public class CompProperties_BodyAnimator : CompProperties { - public CompProperties_ExtendedAnimator() + public CompProperties_BodyAnimator() { - base.compClass = typeof(CompExtendedAnimator); - + base.compClass = typeof(CompBodyAnimator); } } } diff --git a/1.6/Source/Comps/CompProperties_ThingAnimator.cs b/1.3/Source/Comps/CompProperties_ThingAnimator.cs similarity index 100% rename from 1.6/Source/Comps/CompProperties_ThingAnimator.cs rename to 1.3/Source/Comps/CompProperties_ThingAnimator.cs diff --git a/1.3/Source/Comps/CompThingAnimator.cs b/1.3/Source/Comps/CompThingAnimator.cs new file mode 100644 index 0000000..f5315e4 --- /dev/null +++ b/1.3/Source/Comps/CompThingAnimator.cs @@ -0,0 +1,245 @@ +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 new file mode 100644 index 0000000..395ff83 --- /dev/null +++ b/1.3/Source/Defs/AnimationDef.cs @@ -0,0 +1,28 @@ +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 new file mode 100644 index 0000000..4901de2 --- /dev/null +++ b/1.3/Source/Extensions/PawnWoundDrawerExtension.cs @@ -0,0 +1,34 @@ +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 new file mode 100644 index 0000000..b7fef1d --- /dev/null +++ b/1.3/Source/MainTabWindows/MainTabWindow_OffsetConfigure.cs @@ -0,0 +1,143 @@ +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.6/Source/MainTabWindows/OffsetMainButtonDefOf.cs b/1.3/Source/MainTabWindows/OffsetMainButtonDefOf.cs similarity index 100% rename from 1.6/Source/MainTabWindows/OffsetMainButtonDefOf.cs rename to 1.3/Source/MainTabWindows/OffsetMainButtonDefOf.cs diff --git a/1.6/Source/MainTabWindows/WorldComponent_UpdateMainTab.cs b/1.3/Source/MainTabWindows/WorldComponent_UpdateMainTab.cs similarity index 76% rename from 1.6/Source/MainTabWindows/WorldComponent_UpdateMainTab.cs rename to 1.3/Source/MainTabWindows/WorldComponent_UpdateMainTab.cs index 554f9ab..2694419 100644 --- a/1.6/Source/MainTabWindows/WorldComponent_UpdateMainTab.cs +++ b/1.3/Source/MainTabWindows/WorldComponent_UpdateMainTab.cs @@ -14,9 +14,9 @@ namespace Rimworld_Animations { } - public override void FinalizeInit(bool fromLoad) { - base.FinalizeInit(fromLoad); - OffsetMainButtonDefOf.OffsetManager.buttonVisible = RJWAnimationSettings.offsetTab; + public override void FinalizeInit() { + base.FinalizeInit(); + OffsetMainButtonDefOf.OffsetManager.buttonVisible = AnimationSettings.offsetTab; } diff --git a/1.6/Source/Patches/Harmony_PatchAll.cs b/1.3/Source/Patches/Harmony_PatchAll.cs similarity index 100% rename from 1.6/Source/Patches/Harmony_PatchAll.cs rename to 1.3/Source/Patches/Harmony_PatchAll.cs diff --git a/1.3/Source/Patches/OtherModPatches/HarmonyPatch_AlienRace.cs b/1.3/Source/Patches/OtherModPatches/HarmonyPatch_AlienRace.cs new file mode 100644 index 0000000..b7198da --- /dev/null +++ b/1.3/Source/Patches/OtherModPatches/HarmonyPatch_AlienRace.cs @@ -0,0 +1,397 @@ +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 new file mode 100644 index 0000000..8345ede --- /dev/null +++ b/1.3/Source/Patches/OtherModPatches/HarmonyPatch_CSL.cs @@ -0,0 +1,87 @@ +/* +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 new file mode 100644 index 0000000..3cb2a63 --- /dev/null +++ b/1.3/Source/Patches/OtherModPatches/HarmonyPatch_DontShaveYourHead.cs @@ -0,0 +1,29 @@ +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 new file mode 100644 index 0000000..83ffd5b --- /dev/null +++ b/1.3/Source/Patches/OtherModPatches/HarmonyPatch_FacialAnimation.cs @@ -0,0 +1,104 @@ +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 new file mode 100644 index 0000000..1cd5707 --- /dev/null +++ b/1.3/Source/Patches/OtherModPatches/HarmonyPatch_HatsDisplaySelection.cs @@ -0,0 +1,77 @@ +/*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 new file mode 100644 index 0000000..a42ab7d --- /dev/null +++ b/1.3/Source/Patches/OtherModPatches/HarmonyPatch_ShowHairWithHats.cs @@ -0,0 +1,51 @@ +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 new file mode 100644 index 0000000..6544f13 --- /dev/null +++ b/1.3/Source/Patches/RJWPatches/HarmonyPatch_PlaySexSounds.cs @@ -0,0 +1,25 @@ +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.6/Source/Patches/RJWPatches/JobDrivers/JobDriver_Sex/HarmonyPatch_SexTick.cs b/1.3/Source/Patches/RJWPatches/HarmonyPatch_SexTick.cs similarity index 83% rename from 1.6/Source/Patches/RJWPatches/JobDrivers/JobDriver_Sex/HarmonyPatch_SexTick.cs rename to 1.3/Source/Patches/RJWPatches/HarmonyPatch_SexTick.cs index 3508837..9ba03b2 100644 --- a/1.6/Source/Patches/RJWPatches/JobDrivers/JobDriver_Sex/HarmonyPatch_SexTick.cs +++ b/1.3/Source/Patches/RJWPatches/HarmonyPatch_SexTick.cs @@ -38,12 +38,16 @@ namespace Rimworld_Animations __instance.PlaySexSound(); if (!__instance.Sexprops.isRape) { - pawn.GainComfortFromCellIfPossible(__instance.ticks_between_thrusts); + pawn.GainComfortFromCellIfPossible(false); if (target is Pawn) { - (target as Pawn).GainComfortFromCellIfPossible(__instance.ticks_between_thrusts); + (target as Pawn).GainComfortFromCellIfPossible(false); } } + if(!__instance.isEndytophile) + { + SexUtility.DrawNude(pawn, false); + } } return false; diff --git a/1.6/Source/Patches/RJWPatches/HarmonyPatch_WorkGiverSex.cs b/1.3/Source/Patches/RJWPatches/HarmonyPatch_WorkGiverSex.cs similarity index 100% rename from 1.6/Source/Patches/RJWPatches/HarmonyPatch_WorkGiverSex.cs rename to 1.3/Source/Patches/RJWPatches/HarmonyPatch_WorkGiverSex.cs diff --git a/1.3/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_JoinInBed.cs b/1.3/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_JoinInBed.cs new file mode 100644 index 0000000..18c955e --- /dev/null +++ b/1.3/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_JoinInBed.cs @@ -0,0 +1,84 @@ +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 new file mode 100644 index 0000000..260d924 --- /dev/null +++ b/1.3/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs @@ -0,0 +1,191 @@ +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 new file mode 100644 index 0000000..d328d2b --- /dev/null +++ b/1.3/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseReceiverLoved.cs @@ -0,0 +1,40 @@ +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 new file mode 100644 index 0000000..37ba6ce --- /dev/null +++ b/1.3/Source/Patches/RimworldPatches/HarmonyPatch_HeadHair.cs @@ -0,0 +1,22 @@ +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 new file mode 100644 index 0000000..218e45b --- /dev/null +++ b/1.3/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderer.cs @@ -0,0 +1,84 @@ +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 new file mode 100644 index 0000000..7ec75a1 --- /dev/null +++ b/1.3/Source/Patches/RimworldPatches/HarmonyPatch_PawnRotation.cs @@ -0,0 +1,29 @@ +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 new file mode 100644 index 0000000..5cdcfce --- /dev/null +++ b/1.3/Source/Patches/RimworldPatches/HarmonyPatch_Pawn_DrawTracker.cs @@ -0,0 +1,26 @@ +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 new file mode 100644 index 0000000..b8c66b8 --- /dev/null +++ b/1.3/Source/Patches/RimworldPatches/HarmonyPatch_SetPawnAnimatable.cs @@ -0,0 +1,40 @@ +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.6/Source/Patches/RimworldPatches/HarmonyPatch_Thing.cs b/1.3/Source/Patches/RimworldPatches/HarmonyPatch_Thing.cs similarity index 96% rename from 1.6/Source/Patches/RimworldPatches/HarmonyPatch_Thing.cs rename to 1.3/Source/Patches/RimworldPatches/HarmonyPatch_Thing.cs index ec738f7..9477abf 100644 --- a/1.6/Source/Patches/RimworldPatches/HarmonyPatch_Thing.cs +++ b/1.3/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,7 +27,5 @@ namespace Rimworld_Animations } - - */ } } diff --git a/1.3/Source/Settings/AnimationSettings.cs b/1.3/Source/Settings/AnimationSettings.cs new file mode 100644 index 0000000..0a96621 --- /dev/null +++ b/1.3/Source/Settings/AnimationSettings.cs @@ -0,0 +1,98 @@ +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 new file mode 100644 index 0000000..a75fc32 --- /dev/null +++ b/1.3/Source/Utilities/AnimationUtility.cs @@ -0,0 +1,319 @@ +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 new file mode 100644 index 0000000..4e1bd85 --- /dev/null +++ b/1.3/Source/Utilities/PatchOperationAddOrReplace.cs @@ -0,0 +1,59 @@ +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 new file mode 100644 index 0000000..92f855f Binary files /dev/null and b/1.3/Textures/UI/MainTab.png differ diff --git a/1.4/Assemblies/Rimworld-Animations.dll b/1.4/Assemblies/Rimworld-Animations.dll new file mode 100644 index 0000000..cfec529 Binary files /dev/null and b/1.4/Assemblies/Rimworld-Animations.dll differ diff --git a/1.4/Defs/AnimationDefs/AggressiveDoggy.xml b/1.4/Defs/AnimationDefs/AggressiveDoggy.xml new file mode 100644 index 0000000..1a9098c --- /dev/null +++ b/1.4/Defs/AnimationDefs/AggressiveDoggy.xml @@ -0,0 +1,1534 @@ + + + + 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 new file mode 100644 index 0000000..e7bf2a1 Binary files /dev/null and b/1.4/Defs/AnimationDefs/AnimationDefs.rar differ diff --git a/1.4/Defs/AnimationDefs/Animations_Beast.xml b/1.4/Defs/AnimationDefs/Animations_Beast.xml new file mode 100644 index 0000000..30d14fc --- /dev/null +++ b/1.4/Defs/AnimationDefs/Animations_Beast.xml @@ -0,0 +1,2180 @@ + + + + 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 new file mode 100644 index 0000000..56d805a --- /dev/null +++ b/1.4/Defs/AnimationDefs/Animations_Lesbian.xml @@ -0,0 +1,1782 @@ + + + + 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 new file mode 100644 index 0000000..2968fa1 --- /dev/null +++ b/1.4/Defs/AnimationDefs/Animations_Masturbate.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/1.4/Defs/AnimationDefs/Animations_Multi.xml b/1.4/Defs/AnimationDefs/Animations_Multi.xml new file mode 100644 index 0000000..af7ea7a --- /dev/null +++ b/1.4/Defs/AnimationDefs/Animations_Multi.xml @@ -0,0 +1,660 @@ + + + + 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 new file mode 100644 index 0000000..320d3aa --- /dev/null +++ b/1.4/Defs/AnimationDefs/Animations_SexToys.xml @@ -0,0 +1,59 @@ + + + + diff --git a/1.4/Defs/AnimationDefs/Animations_Vanilla2.xml b/1.4/Defs/AnimationDefs/Animations_Vanilla2.xml new file mode 100644 index 0000000..71b02a9 --- /dev/null +++ b/1.4/Defs/AnimationDefs/Animations_Vanilla2.xml @@ -0,0 +1,378 @@ + + + + + + + \ No newline at end of file diff --git a/1.4/Defs/AnimationDefs/Animations_vanilla.xml b/1.4/Defs/AnimationDefs/Animations_vanilla.xml new file mode 100644 index 0000000..0fd61d5 --- /dev/null +++ b/1.4/Defs/AnimationDefs/Animations_vanilla.xml @@ -0,0 +1,2799 @@ + + + + + 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 new file mode 100644 index 0000000..4dd5c9f --- /dev/null +++ b/1.4/Defs/AnimationDefs/DoubleBlowjob.xml @@ -0,0 +1,1921 @@ + + + + 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 new file mode 100644 index 0000000..440dd8f --- /dev/null +++ b/1.4/Defs/AnimationDefs/FacingForwardFuck.xml @@ -0,0 +1,686 @@ + + + + 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 new file mode 100644 index 0000000..49aecc2 --- /dev/null +++ b/1.4/Defs/AnimationDefs/LezThreesome.xml @@ -0,0 +1,1086 @@ + + + + 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 new file mode 100644 index 0000000..a528948 --- /dev/null +++ b/1.4/Defs/AnimationDefs/SidewaysBJ.xml @@ -0,0 +1,1283 @@ + + + + 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 new file mode 100644 index 0000000..0305903 --- /dev/null +++ b/1.4/Defs/AnimationDefs/TemplateAnimation.xml @@ -0,0 +1,54 @@ + + + + diff --git a/1.4/Defs/MainTabDefs/MainButtonDef.xml b/1.4/Defs/MainTabDefs/MainButtonDef.xml new file mode 100644 index 0000000..0674d24 --- /dev/null +++ b/1.4/Defs/MainTabDefs/MainButtonDef.xml @@ -0,0 +1,15 @@ + + + + + OffsetManager + + Control pawn offsets + Rimworld_Animations.MainTabWindow_OffsetConfigure + 54 + false + UI/MainTab + true + + + \ No newline at end of file diff --git a/1.6/Defs/SoundDefs/Sounds_Sex.xml b/1.4/Defs/SoundDefs/Sounds_Sex.xml similarity index 70% rename from 1.6/Defs/SoundDefs/Sounds_Sex.xml rename to 1.4/Defs/SoundDefs/Sounds_Sex.xml index b42fc01..f05a1a8 100644 --- a/1.6/Defs/SoundDefs/Sounds_Sex.xml +++ b/1.4/Defs/SoundDefs/Sounds_Sex.xml @@ -5,8 +5,8 @@ Cum MapOnly - 5 - 5 + 1 + 1
  • @@ -34,8 +34,8 @@ Sex MapOnly - 5 - 5 + 1 + 1
  • @@ -63,8 +63,8 @@ Suck MapOnly - 5 - 5 + 1 + 1
  • @@ -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 - 5 - 5 + 1 + 1
  • @@ -150,7 +150,10 @@ Sex/Clap_8
  • - 35~45 + + 45 + 70 + 1.0 1.0 @@ -168,8 +171,8 @@ Slimy MapOnly - 5 - 5 + 1 + 1
  • @@ -206,46 +209,4 @@
  • - - 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.4/Patch_HatsDisplaySelection/Patch_HatsDisplaySelection.csproj b/1.4/Patch_HatsDisplaySelection/Patch_HatsDisplaySelection.csproj new file mode 100644 index 0000000..8da21a6 --- /dev/null +++ b/1.4/Patch_HatsDisplaySelection/Patch_HatsDisplaySelection.csproj @@ -0,0 +1,75 @@ + + + + + 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.6/Patch_HumanoidAlienRaces/Assemblies/Patch_HumanoidAlienRaces.dll b/1.4/Patch_HumanoidAlienRaces/Assemblies/Patch_HumanoidAlienRaces.dll similarity index 100% rename from 1.6/Patch_HumanoidAlienRaces/Assemblies/Patch_HumanoidAlienRaces.dll rename to 1.4/Patch_HumanoidAlienRaces/Assemblies/Patch_HumanoidAlienRaces.dll diff --git a/1.6/Patch_HumanoidAlienRaces/Patch_HumanoidAlienRaces.csproj b/1.4/Patch_HumanoidAlienRaces/Patch_HumanoidAlienRaces.csproj similarity index 100% rename from 1.6/Patch_HumanoidAlienRaces/Patch_HumanoidAlienRaces.csproj rename to 1.4/Patch_HumanoidAlienRaces/Patch_HumanoidAlienRaces.csproj diff --git a/1.6/Patch_HumanoidAlienRaces/Properties/AssemblyInfo.cs b/1.4/Patch_HumanoidAlienRaces/Properties/AssemblyInfo.cs similarity index 100% rename from 1.6/Patch_HumanoidAlienRaces/Properties/AssemblyInfo.cs rename to 1.4/Patch_HumanoidAlienRaces/Properties/AssemblyInfo.cs diff --git a/1.4/Patches/AnimationPatchHSK.xml b/1.4/Patches/AnimationPatchHSK.xml new file mode 100644 index 0000000..74038ea --- /dev/null +++ b/1.4/Patches/AnimationPatchHSK.xml @@ -0,0 +1,31 @@ + + + + +
  • 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 new file mode 100644 index 0000000..e645747 --- /dev/null +++ b/1.4/Patches/AnimationPatch_CompBodyAnimator.xml @@ -0,0 +1,35 @@ + + + + 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/CompPatches/AutoCleaner.xml b/1.4/Patches/CompPatches/AutoCleaner.xml new file mode 100644 index 0000000..c2ad860 --- /dev/null +++ b/1.4/Patches/CompPatches/AutoCleaner.xml @@ -0,0 +1,19 @@ + + + + Always + +
  • + /Defs/ThingDef[@Name="BaseBaseAutocleaner"]/comps + Always + + /Defs/ThingDef[@Name="BaseBaseAutocleaner"]/comps + +
  • + + +
  • +
    +
    +
    + diff --git a/1.4/Patches/CompPatches/CombatExtended.xml b/1.4/Patches/CompPatches/CombatExtended.xml new file mode 100644 index 0000000..7d35127 --- /dev/null +++ b/1.4/Patches/CompPatches/CombatExtended.xml @@ -0,0 +1,18 @@ + + + + Always + +
  • + /Defs/ThingDef[@Name="BasePawnSimple"]/comps + Always + + /Defs/ThingDef[@Name="BasePawnSimple"]/comps + +
  • + + +
  • +
    +
    +
    diff --git a/1.4/Patches/CompPatches/ZombieLand.xml b/1.4/Patches/CompPatches/ZombieLand.xml new file mode 100644 index 0000000..e950e0e --- /dev/null +++ b/1.4/Patches/CompPatches/ZombieLand.xml @@ -0,0 +1,18 @@ + + + + Always + +
  • + /Defs/ThingDef[@Name="BaseZombie"]/comps + Always + + /Defs/ThingDef[@Name="BaseZombie"]/comps + +
  • + + +
  • +
    +
    +
    diff --git a/1.4/Patches/CompatibilityPatch_FacialAnimation.xml b/1.4/Patches/CompatibilityPatch_FacialAnimation.xml new file mode 100644 index 0000000..125d79f --- /dev/null +++ b/1.4/Patches/CompatibilityPatch_FacialAnimation.xml @@ -0,0 +1,130 @@ + + + + +
  • [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/CompatibilityPatch_HCSK.xml b/1.4/Patches/CompatibilityPatch_HCSK.xml new file mode 100644 index 0000000..ead8783 --- /dev/null +++ b/1.4/Patches/CompatibilityPatch_HCSK.xml @@ -0,0 +1,39 @@ + + + + + +
  • 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.4/Patches/RacePatches/Epona race Renaissance.xml b/1.4/Patches/RacePatches/Epona race Renaissance.xml new file mode 100644 index 0000000..9453030 --- /dev/null +++ b/1.4/Patches/RacePatches/Epona race Renaissance.xml @@ -0,0 +1,21 @@ + + + + +
  • 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 new file mode 100644 index 0000000..c176521 --- /dev/null +++ b/1.4/Patches/RacePatches/Nyaron.xml @@ -0,0 +1,30 @@ + + + + +
  • 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 new file mode 100644 index 0000000..bccd0f2 Binary files /dev/null and b/1.4/Sounds/Sex/Clap_1.wav differ diff --git a/1.4/Sounds/Sex/Clap_2.wav b/1.4/Sounds/Sex/Clap_2.wav new file mode 100644 index 0000000..a382f59 Binary files /dev/null and b/1.4/Sounds/Sex/Clap_2.wav differ diff --git a/1.4/Sounds/Sex/Clap_3.wav b/1.4/Sounds/Sex/Clap_3.wav new file mode 100644 index 0000000..65cf39b Binary files /dev/null and b/1.4/Sounds/Sex/Clap_3.wav differ diff --git a/1.4/Sounds/Sex/Clap_4.wav b/1.4/Sounds/Sex/Clap_4.wav new file mode 100644 index 0000000..3ae1b3e Binary files /dev/null and b/1.4/Sounds/Sex/Clap_4.wav differ diff --git a/1.4/Sounds/Sex/Clap_5.wav b/1.4/Sounds/Sex/Clap_5.wav new file mode 100644 index 0000000..65144e7 Binary files /dev/null and b/1.4/Sounds/Sex/Clap_5.wav differ diff --git a/1.4/Sounds/Sex/Clap_6.wav b/1.4/Sounds/Sex/Clap_6.wav new file mode 100644 index 0000000..0026325 Binary files /dev/null and b/1.4/Sounds/Sex/Clap_6.wav differ diff --git a/1.4/Sounds/Sex/Clap_7.wav b/1.4/Sounds/Sex/Clap_7.wav new file mode 100644 index 0000000..6d7de2a Binary files /dev/null and b/1.4/Sounds/Sex/Clap_7.wav differ diff --git a/1.4/Sounds/Sex/Clap_8.wav b/1.4/Sounds/Sex/Clap_8.wav new file mode 100644 index 0000000..1af5710 Binary files /dev/null and b/1.4/Sounds/Sex/Clap_8.wav differ diff --git a/1.4/Sounds/Sex/Slime/Slimy1.wav b/1.4/Sounds/Sex/Slime/Slimy1.wav new file mode 100644 index 0000000..3cfbd74 Binary files /dev/null and b/1.4/Sounds/Sex/Slime/Slimy1.wav differ diff --git a/1.4/Sounds/Sex/Slime/Slimy2.wav b/1.4/Sounds/Sex/Slime/Slimy2.wav new file mode 100644 index 0000000..36a9197 Binary files /dev/null and b/1.4/Sounds/Sex/Slime/Slimy2.wav differ diff --git a/1.4/Sounds/Sex/Slime/Slimy3.wav b/1.4/Sounds/Sex/Slime/Slimy3.wav new file mode 100644 index 0000000..40aff1e Binary files /dev/null and b/1.4/Sounds/Sex/Slime/Slimy3.wav differ diff --git a/1.4/Sounds/Sex/Slime/Slimy4.wav b/1.4/Sounds/Sex/Slime/Slimy4.wav new file mode 100644 index 0000000..0b6404e Binary files /dev/null and b/1.4/Sounds/Sex/Slime/Slimy4.wav differ diff --git a/1.4/Sounds/Sex/Slime/Slimy5.wav b/1.4/Sounds/Sex/Slime/Slimy5.wav new file mode 100644 index 0000000..ea310db Binary files /dev/null and b/1.4/Sounds/Sex/Slime/Slimy5.wav differ diff --git a/1.4/Sounds/Sex/Suck/Suck_1.wav b/1.4/Sounds/Sex/Suck/Suck_1.wav new file mode 100644 index 0000000..4f1eafd Binary files /dev/null and b/1.4/Sounds/Sex/Suck/Suck_1.wav differ diff --git a/1.4/Sounds/Sex/Suck/Suck_10.wav b/1.4/Sounds/Sex/Suck/Suck_10.wav new file mode 100644 index 0000000..284cda3 Binary files /dev/null and b/1.4/Sounds/Sex/Suck/Suck_10.wav differ diff --git a/1.4/Sounds/Sex/Suck/Suck_2.wav b/1.4/Sounds/Sex/Suck/Suck_2.wav new file mode 100644 index 0000000..a8305c1 Binary files /dev/null and b/1.4/Sounds/Sex/Suck/Suck_2.wav differ diff --git a/1.4/Sounds/Sex/Suck/Suck_3.wav b/1.4/Sounds/Sex/Suck/Suck_3.wav new file mode 100644 index 0000000..95e7348 Binary files /dev/null and b/1.4/Sounds/Sex/Suck/Suck_3.wav differ diff --git a/1.4/Sounds/Sex/Suck/Suck_4.wav b/1.4/Sounds/Sex/Suck/Suck_4.wav new file mode 100644 index 0000000..753a023 Binary files /dev/null and b/1.4/Sounds/Sex/Suck/Suck_4.wav differ diff --git a/1.4/Sounds/Sex/Suck/Suck_5.wav b/1.4/Sounds/Sex/Suck/Suck_5.wav new file mode 100644 index 0000000..8ecda9c Binary files /dev/null and b/1.4/Sounds/Sex/Suck/Suck_5.wav differ diff --git a/1.4/Sounds/Sex/Suck/Suck_6.wav b/1.4/Sounds/Sex/Suck/Suck_6.wav new file mode 100644 index 0000000..08567d6 Binary files /dev/null and b/1.4/Sounds/Sex/Suck/Suck_6.wav differ diff --git a/1.4/Sounds/Sex/Suck/Suck_7.wav b/1.4/Sounds/Sex/Suck/Suck_7.wav new file mode 100644 index 0000000..a63b0e4 Binary files /dev/null and b/1.4/Sounds/Sex/Suck/Suck_7.wav differ diff --git a/1.4/Sounds/Sex/Suck/Suck_8.wav b/1.4/Sounds/Sex/Suck/Suck_8.wav new file mode 100644 index 0000000..320da09 Binary files /dev/null and b/1.4/Sounds/Sex/Suck/Suck_8.wav differ diff --git a/1.4/Sounds/Sex/Suck/Suck_9.wav b/1.4/Sounds/Sex/Suck/Suck_9.wav new file mode 100644 index 0000000..7ab538a Binary files /dev/null and b/1.4/Sounds/Sex/Suck/Suck_9.wav differ diff --git a/1.4/Sounds/Sex/Suck/Swallow_1.wav b/1.4/Sounds/Sex/Suck/Swallow_1.wav new file mode 100644 index 0000000..f3276cc Binary files /dev/null and b/1.4/Sounds/Sex/Suck/Swallow_1.wav differ diff --git a/1.4/Sounds/Sex/Suck/Swallow_2.wav b/1.4/Sounds/Sex/Suck/Swallow_2.wav new file mode 100644 index 0000000..09a7a00 Binary files /dev/null and b/1.4/Sounds/Sex/Suck/Swallow_2.wav differ diff --git a/1.4/Sounds/Sex/Suck/Swallow_3.wav b/1.4/Sounds/Sex/Suck/Swallow_3.wav new file mode 100644 index 0000000..2817b29 Binary files /dev/null and b/1.4/Sounds/Sex/Suck/Swallow_3.wav differ diff --git a/1.4/Sounds/Sex/cum.wav b/1.4/Sounds/Sex/cum.wav new file mode 100644 index 0000000..ef98437 Binary files /dev/null and b/1.4/Sounds/Sex/cum.wav differ diff --git a/1.4/Sounds/Sex/kucyu04.wav b/1.4/Sounds/Sex/kucyu04.wav new file mode 100644 index 0000000..3ae1ce8 Binary files /dev/null and b/1.4/Sounds/Sex/kucyu04.wav differ diff --git a/1.4/Source/Actors/Actor.cs b/1.4/Source/Actors/Actor.cs new file mode 100644 index 0000000..3b382dd --- /dev/null +++ b/1.4/Source/Actors/Actor.cs @@ -0,0 +1,26 @@ +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 new file mode 100644 index 0000000..a5bbe20 --- /dev/null +++ b/1.4/Source/Actors/AlienRaceOffset.cs @@ -0,0 +1,15 @@ +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 new file mode 100644 index 0000000..82a23a3 --- /dev/null +++ b/1.4/Source/Actors/BodyTypeOffset.cs @@ -0,0 +1,18 @@ +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 new file mode 100644 index 0000000..7a1304e --- /dev/null +++ b/1.4/Source/Animations/AnimationStage.cs @@ -0,0 +1,28 @@ +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 new file mode 100644 index 0000000..aa35b31 --- /dev/null +++ b/1.4/Source/Animations/Clips/BaseAnimationClip.cs @@ -0,0 +1,20 @@ +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 new file mode 100644 index 0000000..e9d2489 --- /dev/null +++ b/1.4/Source/Animations/Clips/PawnAnimationClip.cs @@ -0,0 +1,115 @@ +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 new file mode 100644 index 0000000..26f4d4c --- /dev/null +++ b/1.4/Source/Animations/Clips/ThingAnimationClip.cs @@ -0,0 +1,74 @@ +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 new file mode 100644 index 0000000..8cd859d --- /dev/null +++ b/1.4/Source/Animations/Keyframes/Keyframe.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 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 new file mode 100644 index 0000000..e710981 --- /dev/null +++ b/1.4/Source/Animations/Keyframes/PawnKeyframe.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 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 new file mode 100644 index 0000000..6604f5e --- /dev/null +++ b/1.4/Source/Animations/Keyframes/ThingKeyframe.cs @@ -0,0 +1,18 @@ +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 new file mode 100644 index 0000000..123a8aa --- /dev/null +++ b/1.4/Source/Comps/CompBodyAnimator.cs @@ -0,0 +1,543 @@ +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 new file mode 100644 index 0000000..09df7ce --- /dev/null +++ b/1.4/Source/Comps/CompProperties_BodyAnimator.cs @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000..34c67b1 --- /dev/null +++ b/1.4/Source/Comps/CompProperties_ThingAnimator.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 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 new file mode 100644 index 0000000..f5315e4 --- /dev/null +++ b/1.4/Source/Comps/CompThingAnimator.cs @@ -0,0 +1,245 @@ +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 new file mode 100644 index 0000000..395ff83 --- /dev/null +++ b/1.4/Source/Defs/AnimationDef.cs @@ -0,0 +1,28 @@ +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 new file mode 100644 index 0000000..77594e6 --- /dev/null +++ b/1.4/Source/Extensions/PawnWoundDrawerExtension.cs @@ -0,0 +1,32 @@ +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 new file mode 100644 index 0000000..1cbc26d --- /dev/null +++ b/1.4/Source/MainTabWindows/MainTabWindow_OffsetConfigure.cs @@ -0,0 +1,136 @@ +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 new file mode 100644 index 0000000..e7ad9eb --- /dev/null +++ b/1.4/Source/MainTabWindows/OffsetMainButtonDefOf.cs @@ -0,0 +1,22 @@ +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/MainTabWindows/WorldComponent_UpdateMainTab.cs b/1.4/Source/MainTabWindows/WorldComponent_UpdateMainTab.cs new file mode 100644 index 0000000..2694419 --- /dev/null +++ b/1.4/Source/MainTabWindows/WorldComponent_UpdateMainTab.cs @@ -0,0 +1,24 @@ +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/Milkable-Colonists-Animations/Source/Patches/Harmony_PatchAll.cs b/1.4/Source/Patches/Harmony_PatchAll.cs similarity index 81% rename from Milkable-Colonists-Animations/Source/Patches/Harmony_PatchAll.cs rename to 1.4/Source/Patches/Harmony_PatchAll.cs index a7e1fce..1c1d63f 100644 --- a/Milkable-Colonists-Animations/Source/Patches/Harmony_PatchAll.cs +++ b/1.4/Source/Patches/Harmony_PatchAll.cs @@ -7,14 +7,14 @@ using Verse; using HarmonyLib; using System.Reflection; -namespace MC_Animations { +namespace Rimworld_Animations { [StaticConstructorOnStartup] public static class Harmony_PatchAll { static Harmony_PatchAll() { - Harmony val = new Harmony("mcanim"); + Harmony val = new Harmony("rjwanim"); val.PatchAll(Assembly.GetExecutingAssembly()); } diff --git a/1.4/Source/Patches/OtherModPatches/HarmonyPatch_CSL.cs b/1.4/Source/Patches/OtherModPatches/HarmonyPatch_CSL.cs new file mode 100644 index 0000000..8345ede --- /dev/null +++ b/1.4/Source/Patches/OtherModPatches/HarmonyPatch_CSL.cs @@ -0,0 +1,87 @@ +/* +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 new file mode 100644 index 0000000..3cb2a63 --- /dev/null +++ b/1.4/Source/Patches/OtherModPatches/HarmonyPatch_DontShaveYourHead.cs @@ -0,0 +1,29 @@ +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 new file mode 100644 index 0000000..59631b8 --- /dev/null +++ b/1.4/Source/Patches/OtherModPatches/HarmonyPatch_FacialAnimation.cs @@ -0,0 +1,103 @@ +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 new file mode 100644 index 0000000..1cd5707 --- /dev/null +++ b/1.4/Source/Patches/OtherModPatches/HarmonyPatch_HatsDisplaySelection.cs @@ -0,0 +1,77 @@ +/*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 new file mode 100644 index 0000000..a42ab7d --- /dev/null +++ b/1.4/Source/Patches/OtherModPatches/HarmonyPatch_ShowHairWithHats.cs @@ -0,0 +1,51 @@ +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.6/Source/Patches/RJWPatches/JobDrivers/JobDriver_Sex/HarmonyPatch_PlaySexSounds.cs b/1.4/Source/Patches/RJWPatches/HarmonyPatch_PlaySexSounds.cs similarity index 65% rename from 1.6/Source/Patches/RJWPatches/JobDrivers/JobDriver_Sex/HarmonyPatch_PlaySexSounds.cs rename to 1.4/Source/Patches/RJWPatches/HarmonyPatch_PlaySexSounds.cs index dfbefe6..25d93b9 100644 --- a/1.6/Source/Patches/RJWPatches/JobDrivers/JobDriver_Sex/HarmonyPatch_PlaySexSounds.cs +++ b/1.4/Source/Patches/RJWPatches/HarmonyPatch_PlaySexSounds.cs @@ -1,6 +1,5 @@ using HarmonyLib; using rjw; -using Verse; namespace Rimworld_Animations { @@ -9,14 +8,12 @@ namespace Rimworld_Animations { public static bool Prefix(JobDriver_Sex __instance) { - if (__instance.pawn?.TryGetComp() != null - && __instance.pawn.TryGetComp().IsAnimating) + if (CompBodyAnimator.IsAnimating(__instance.pawn)) { return false; } return true; - } } } diff --git a/1.4/Source/Patches/RJWPatches/HarmonyPatch_SexTick.cs b/1.4/Source/Patches/RJWPatches/HarmonyPatch_SexTick.cs new file mode 100644 index 0000000..9ba03b2 --- /dev/null +++ b/1.4/Source/Patches/RJWPatches/HarmonyPatch_SexTick.cs @@ -0,0 +1,61 @@ +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 new file mode 100644 index 0000000..af4a755 --- /dev/null +++ b/1.4/Source/Patches/RJWPatches/HarmonyPatch_WorkGiverSex.cs @@ -0,0 +1,31 @@ +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.6/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_JoinInBed.cs b/1.4/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_JoinInBed.cs similarity index 87% rename from 1.6/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_JoinInBed.cs rename to 1.4/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_JoinInBed.cs index 0f63b7d..bbbb0b8 100644 --- a/1.6/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_JoinInBed.cs +++ b/1.4/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_JoinInBed.cs @@ -56,6 +56,14 @@ 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.4/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs b/1.4/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs new file mode 100644 index 0000000..530600b --- /dev/null +++ b/1.4/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs @@ -0,0 +1,192 @@ +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.6/Source/Patches/RJWPatches/JobDrivers/SexBaseReceivers/HarmonyPatch_JobDriver_SexBaseReceiverLoved.cs b/1.4/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseReceiverLoved.cs similarity index 64% rename from 1.6/Source/Patches/RJWPatches/JobDrivers/SexBaseReceivers/HarmonyPatch_JobDriver_SexBaseReceiverLoved.cs rename to 1.4/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseReceiverLoved.cs index ca4df23..dfa116e 100644 --- a/1.6/Source/Patches/RJWPatches/JobDrivers/SexBaseReceivers/HarmonyPatch_JobDriver_SexBaseReceiverLoved.cs +++ b/1.4/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseReceiverLoved.cs @@ -1,35 +1,28 @@ -using HarmonyLib; -using RimWorld; -using rjw; -using System; +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 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); - }); - } + [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++) + 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]; @@ -48,5 +41,6 @@ namespace Rimworld_Animations { return new Toil(); } + } } diff --git a/1.4/Source/Patches/RimworldPatches/HarmonyPatch_HeadHair.cs b/1.4/Source/Patches/RimworldPatches/HarmonyPatch_HeadHair.cs new file mode 100644 index 0000000..401f1b5 --- /dev/null +++ b/1.4/Source/Patches/RimworldPatches/HarmonyPatch_HeadHair.cs @@ -0,0 +1,22 @@ +/*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 new file mode 100644 index 0000000..518f24c --- /dev/null +++ b/1.4/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderer.cs @@ -0,0 +1,79 @@ +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 new file mode 100644 index 0000000..cf2a7d9 --- /dev/null +++ b/1.4/Source/Patches/RimworldPatches/HarmonyPatch_PawnRotation.cs @@ -0,0 +1,23 @@ +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 new file mode 100644 index 0000000..fdd3e07 --- /dev/null +++ b/1.4/Source/Patches/RimworldPatches/HarmonyPatch_Pawn_DrawTracker.cs @@ -0,0 +1,20 @@ +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 new file mode 100644 index 0000000..379f85e --- /dev/null +++ b/1.4/Source/Patches/RimworldPatches/HarmonyPatch_ResolveApparelGraphics.cs @@ -0,0 +1,18 @@ +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 new file mode 100644 index 0000000..f495bff --- /dev/null +++ b/1.4/Source/Patches/RimworldPatches/HarmonyPatch_SetPawnAnimatable.cs @@ -0,0 +1,32 @@ +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 new file mode 100644 index 0000000..9477abf --- /dev/null +++ b/1.4/Source/Patches/RimworldPatches/HarmonyPatch_Thing.cs @@ -0,0 +1,31 @@ +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 new file mode 100644 index 0000000..0a96621 --- /dev/null +++ b/1.4/Source/Settings/AnimationSettings.cs @@ -0,0 +1,98 @@ +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 new file mode 100644 index 0000000..fa60198 --- /dev/null +++ b/1.4/Source/Utilities/AnimationUtility.cs @@ -0,0 +1,325 @@ +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 new file mode 100644 index 0000000..4e1bd85 --- /dev/null +++ b/1.4/Source/Utilities/PatchOperationAddOrReplace.cs @@ -0,0 +1,59 @@ +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 new file mode 100644 index 0000000..92f855f Binary files /dev/null and b/1.4/Textures/UI/MainTab.png differ diff --git a/1.6/Assemblies/Rimworld-Animations.dll b/1.6/Assemblies/Rimworld-Animations.dll deleted file mode 100644 index a52d4f5..0000000 Binary files a/1.6/Assemblies/Rimworld-Animations.dll and /dev/null differ diff --git a/1.6/Defs/AnimationPropDefs/AnimationPropDef_Banana.xml b/1.6/Defs/AnimationPropDefs/AnimationPropDef_Banana.xml deleted file mode 100644 index 235c9fa..0000000 --- a/1.6/Defs/AnimationPropDefs/AnimationPropDef_Banana.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - 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 deleted file mode 100644 index d5ba7da..0000000 --- a/1.6/Defs/AnimationPropDefs/AnimationPropDef_Hand.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - 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 deleted file mode 100644 index a5dac3a..0000000 --- a/1.6/Defs/AnimationPropDefs/AnimationPropDef_Knees.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - 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 deleted file mode 100644 index 9211de5..0000000 --- a/1.6/Defs/AnimationPropDefs/AnimationPropDef_Xray_Inside.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - 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 deleted file mode 100644 index 260617b..0000000 --- a/1.6/Defs/AnimationPropDefs/AnimationPropDef_Xray_Penis.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - 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 deleted file mode 100644 index aa90bcc..0000000 --- a/1.6/Defs/AnimationPropDefs/AnimationPropDef_Xray_Race.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - 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 deleted file mode 100644 index 6f95f49..0000000 --- a/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/GroupAnimation_DogBeast.xml +++ /dev/null @@ -1,219 +0,0 @@ - - - - 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 deleted file mode 100644 index 68eb5e1..0000000 --- a/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage1.xml +++ /dev/null @@ -1,244 +0,0 @@ - - - - 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 deleted file mode 100644 index 5bfddcd..0000000 --- a/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage2.xml +++ /dev/null @@ -1,309 +0,0 @@ - - - - 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 deleted file mode 100644 index df355fd..0000000 --- a/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage3_Variant1.xml +++ /dev/null @@ -1,203 +0,0 @@ - - - - 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 deleted file mode 100644 index cef2bc5..0000000 --- a/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage3_Variant2_FollowupWithVariant1.xml +++ /dev/null @@ -1,233 +0,0 @@ - - - - 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 deleted file mode 100644 index 8253831..0000000 --- a/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage3_Variant3.xml +++ /dev/null @@ -1,162 +0,0 @@ - - - - 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 deleted file mode 100644 index 9464f36..0000000 --- a/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage4.xml +++ /dev/null @@ -1,236 +0,0 @@ - - - - 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 deleted file mode 100644 index e7c787b..0000000 --- a/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage5_Variant1.xml +++ /dev/null @@ -1,201 +0,0 @@ - - - - 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 deleted file mode 100644 index daff31d..0000000 --- a/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage5_Variant2.xml +++ /dev/null @@ -1,188 +0,0 @@ - - - - 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 deleted file mode 100644 index dac2f49..0000000 --- a/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage5_Variant3.xml +++ /dev/null @@ -1,188 +0,0 @@ - - - - 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 deleted file mode 100644 index 542a315..0000000 --- a/1.6/Defs/GroupAnimationDefs/Beast/DogBeast/Stage6.xml +++ /dev/null @@ -1,232 +0,0 @@ - - - - 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 deleted file mode 100644 index 1b54b64..0000000 --- a/1.6/Defs/GroupAnimationDefs/Blowjob/AnimationPropDef_Cum.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - 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 deleted file mode 100644 index 9e22a78..0000000 --- a/1.6/Defs/GroupAnimationDefs/Blowjob/GroupAnimation_Blowjob.xml +++ /dev/null @@ -1,398 +0,0 @@ - - - - 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 deleted file mode 100644 index fb69523..0000000 --- a/1.6/Defs/GroupAnimationDefs/Blowjob/OffsetDef_Blowjob.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - 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 deleted file mode 100644 index e581ee9..0000000 --- a/1.6/Defs/GroupAnimationDefs/Blowjob/Stage1.xml +++ /dev/null @@ -1,198 +0,0 @@ - - - - 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 deleted file mode 100644 index ed3684c..0000000 --- a/1.6/Defs/GroupAnimationDefs/Blowjob/Stage2a.xml +++ /dev/null @@ -1,157 +0,0 @@ - - - - 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 deleted file mode 100644 index 6f11543..0000000 --- a/1.6/Defs/GroupAnimationDefs/Blowjob/Stage2b.xml +++ /dev/null @@ -1,178 +0,0 @@ - - - - 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 deleted file mode 100644 index adac6e9..0000000 --- a/1.6/Defs/GroupAnimationDefs/Blowjob/Stage2c.xml +++ /dev/null @@ -1,193 +0,0 @@ - - - - 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 deleted file mode 100644 index 078aa81..0000000 --- a/1.6/Defs/GroupAnimationDefs/Blowjob/Stage3.xml +++ /dev/null @@ -1,138 +0,0 @@ - - - - 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 deleted file mode 100644 index cc2e144..0000000 --- a/1.6/Defs/GroupAnimationDefs/Blowjob/Stage4a.xml +++ /dev/null @@ -1,159 +0,0 @@ - - - - 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 deleted file mode 100644 index 88340a4..0000000 --- a/1.6/Defs/GroupAnimationDefs/Blowjob/Stage4b.xml +++ /dev/null @@ -1,160 +0,0 @@ - - - - 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 deleted file mode 100644 index b759f5b..0000000 --- a/1.6/Defs/GroupAnimationDefs/Blowjob/Stage4c.xml +++ /dev/null @@ -1,237 +0,0 @@ - - - - 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 deleted file mode 100644 index 3b2d6ef..0000000 --- a/1.6/Defs/GroupAnimationDefs/Blowjob/Stage5.xml +++ /dev/null @@ -1,159 +0,0 @@ - - - - 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 deleted file mode 100644 index 7f94029..0000000 --- a/1.6/Defs/GroupAnimationDefs/Blowjob/Stage6a.xml +++ /dev/null @@ -1,363 +0,0 @@ - - - - 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 deleted file mode 100644 index 8cc8edb..0000000 --- a/1.6/Defs/GroupAnimationDefs/Blowjob/Stage6b.xml +++ /dev/null @@ -1,450 +0,0 @@ - - - - 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 deleted file mode 100644 index 23b5562..0000000 --- a/1.6/Defs/GroupAnimationDefs/Cowgirl/AnimationPropDef_Cowgirl_Xray.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - 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 deleted file mode 100644 index 9c2e144..0000000 --- a/1.6/Defs/GroupAnimationDefs/Cowgirl/Cowgirl_Stage1.xml +++ /dev/null @@ -1,160 +0,0 @@ - - - - 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 deleted file mode 100644 index 0e26035..0000000 --- a/1.6/Defs/GroupAnimationDefs/Cowgirl/Cowgirl_Stage2_1.xml +++ /dev/null @@ -1,132 +0,0 @@ - - - - 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 deleted file mode 100644 index 7ab31ad..0000000 --- a/1.6/Defs/GroupAnimationDefs/Cowgirl/Cowgirl_Stage2_2.xml +++ /dev/null @@ -1,132 +0,0 @@ - - - - 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 deleted file mode 100644 index e1dc5ba..0000000 --- a/1.6/Defs/GroupAnimationDefs/Cowgirl/Cowgirl_Stage2_3.xml +++ /dev/null @@ -1,146 +0,0 @@ - - - - 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 deleted file mode 100644 index b7be002..0000000 --- a/1.6/Defs/GroupAnimationDefs/Cowgirl/Cowgirl_Stage3_XRay.xml +++ /dev/null @@ -1,206 +0,0 @@ - - - - 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 deleted file mode 100644 index 43c659d..0000000 --- a/1.6/Defs/GroupAnimationDefs/Cowgirl/Cowgirl_Stage4.xml +++ /dev/null @@ -1,254 +0,0 @@ - - - - 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 deleted file mode 100644 index 0e9e83b..0000000 --- a/1.6/Defs/GroupAnimationDefs/Cowgirl/Cowgirl_Stage_1_5.xml +++ /dev/null @@ -1,133 +0,0 @@ - - - - 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 deleted file mode 100644 index c67895b..0000000 --- a/1.6/Defs/GroupAnimationDefs/Cowgirl/GroupAnimation_Cowgirl.xml +++ /dev/null @@ -1,231 +0,0 @@ - - - - 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 deleted file mode 100644 index 5a3099b..0000000 --- a/1.6/Defs/GroupAnimationDefs/Cowgirl/OffsetDef_Cowgirl.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - 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 deleted file mode 100644 index 354317e..0000000 --- a/1.6/Defs/GroupAnimationDefs/Cowgirl/TexPathVariants_Cowgirl.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - 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 deleted file mode 100644 index ab62d28..0000000 --- a/1.6/Defs/GroupAnimationDefs/Cunnilingus/AnimationPropDef_Saliva.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - 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 deleted file mode 100644 index a7e6f5a..0000000 --- a/1.6/Defs/GroupAnimationDefs/Cunnilingus/GroupAnimation_Cunnilingus.xml +++ /dev/null @@ -1,309 +0,0 @@ - - - - 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 deleted file mode 100644 index 2bb7b8b..0000000 --- a/1.6/Defs/GroupAnimationDefs/Cunnilingus/OffsetDef_Cunnilingus.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - 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 deleted file mode 100644 index 865f727..0000000 --- a/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage1.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - 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 deleted file mode 100644 index 1a12fca..0000000 --- a/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage2a.xml +++ /dev/null @@ -1,155 +0,0 @@ - - - - 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 deleted file mode 100644 index 035792f..0000000 --- a/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage2b.xml +++ /dev/null @@ -1,155 +0,0 @@ - - - - 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 deleted file mode 100644 index d35dfea..0000000 --- a/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage2c.xml +++ /dev/null @@ -1,137 +0,0 @@ - - - - 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 deleted file mode 100644 index 507db26..0000000 --- a/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage3_LoopOnce.xml +++ /dev/null @@ -1,125 +0,0 @@ - - - - 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 deleted file mode 100644 index 899ebff..0000000 --- a/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage4a.xml +++ /dev/null @@ -1,180 +0,0 @@ - - - - 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 deleted file mode 100644 index a1a186b..0000000 --- a/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage4b.xml +++ /dev/null @@ -1,173 +0,0 @@ - - - - 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 deleted file mode 100644 index a5362ee..0000000 --- a/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage4c.xml +++ /dev/null @@ -1,180 +0,0 @@ - - - - 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 deleted file mode 100644 index 4f739d6..0000000 --- a/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage5.xml +++ /dev/null @@ -1,179 +0,0 @@ - - - - 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 deleted file mode 100644 index 03722a8..0000000 --- a/1.6/Defs/GroupAnimationDefs/Cunnilingus/Stage6.xml +++ /dev/null @@ -1,275 +0,0 @@ - - - - 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 deleted file mode 100644 index a5bdd8e..0000000 --- a/1.6/Defs/GroupAnimationDefs/DoublePenetration/GroupAnimation_DP.xml +++ /dev/null @@ -1,389 +0,0 @@ - - - - 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 deleted file mode 100644 index 3a15e52..0000000 --- a/1.6/Defs/GroupAnimationDefs/DoublePenetration/OffsetDef_DP.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - 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 deleted file mode 100644 index 055e2f6..0000000 --- a/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage1.xml +++ /dev/null @@ -1,203 +0,0 @@ - - - - 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 deleted file mode 100644 index ab954dc..0000000 --- a/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage2a.xml +++ /dev/null @@ -1,178 +0,0 @@ - - - - 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 deleted file mode 100644 index 60ee1e8..0000000 --- a/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage2b.xml +++ /dev/null @@ -1,178 +0,0 @@ - - - - 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 deleted file mode 100644 index fa7d8cc..0000000 --- a/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage2c.xml +++ /dev/null @@ -1,191 +0,0 @@ - - - - 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 deleted file mode 100644 index 2cd98f9..0000000 --- a/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage2d.xml +++ /dev/null @@ -1,234 +0,0 @@ - - - - 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 deleted file mode 100644 index 33eeda1..0000000 --- a/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage3.xml +++ /dev/null @@ -1,191 +0,0 @@ - - - - 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 deleted file mode 100644 index 363b6dc..0000000 --- a/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage4.xml +++ /dev/null @@ -1,191 +0,0 @@ - - - - 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 deleted file mode 100644 index 9a800d4..0000000 --- a/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage5_Base.xml +++ /dev/null @@ -1,248 +0,0 @@ - - - - - \ No newline at end of file diff --git a/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage5a.xml b/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage5a.xml deleted file mode 100644 index 6e4937c..0000000 --- a/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage5a.xml +++ /dev/null @@ -1,293 +0,0 @@ - - - - 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 deleted file mode 100644 index 8842f17..0000000 --- a/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage5b.xml +++ /dev/null @@ -1,281 +0,0 @@ - - - - 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 deleted file mode 100644 index a2a57de..0000000 --- a/1.6/Defs/GroupAnimationDefs/DoublePenetration/Stage5c.xml +++ /dev/null @@ -1,330 +0,0 @@ - - - - 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 deleted file mode 100644 index a9702dd..0000000 --- a/1.6/Defs/GroupAnimationDefs/Missionary/GroupAnimation_Missionary.xml +++ /dev/null @@ -1,248 +0,0 @@ - - - - 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 deleted file mode 100644 index 0328903..0000000 --- a/1.6/Defs/GroupAnimationDefs/Missionary/OffsetDef_Missionary.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - 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 deleted file mode 100644 index 3d76c06..0000000 --- a/1.6/Defs/GroupAnimationDefs/Missionary/Stage1.xml +++ /dev/null @@ -1,184 +0,0 @@ - - - - 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 deleted file mode 100644 index 2d2479e..0000000 --- a/1.6/Defs/GroupAnimationDefs/Missionary/Stage2.xml +++ /dev/null @@ -1,164 +0,0 @@ - - - - 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 deleted file mode 100644 index b7817a4..0000000 --- a/1.6/Defs/GroupAnimationDefs/Missionary/Stage2b.xml +++ /dev/null @@ -1,164 +0,0 @@ - - - - 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 deleted file mode 100644 index b4179bf..0000000 --- a/1.6/Defs/GroupAnimationDefs/Missionary/Stage2c.xml +++ /dev/null @@ -1,164 +0,0 @@ - - - - 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 deleted file mode 100644 index 1bcde62..0000000 --- a/1.6/Defs/GroupAnimationDefs/Missionary/Stage3_DontLoop.xml +++ /dev/null @@ -1,131 +0,0 @@ - - - - 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 deleted file mode 100644 index b36dddf..0000000 --- a/1.6/Defs/GroupAnimationDefs/Missionary/Stage4.xml +++ /dev/null @@ -1,143 +0,0 @@ - - - - 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 deleted file mode 100644 index ac7357c..0000000 --- a/1.6/Defs/GroupAnimationDefs/Missionary/Stage5.xml +++ /dev/null @@ -1,143 +0,0 @@ - - - - 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 deleted file mode 100644 index e56067a..0000000 --- a/1.6/Defs/GroupAnimationDefs/Missionary/Stage6.xml +++ /dev/null @@ -1,211 +0,0 @@ - - - - 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 deleted file mode 100644 index 30402af..0000000 --- a/1.6/Defs/GroupAnimationDefs/TestAnimation/ConditionalPathExample +++ /dev/null @@ -1,25 +0,0 @@ - - - - diff --git a/1.6/Defs/GroupAnimationDefs/TestAnimation/TestAnimation1.xml b/1.6/Defs/GroupAnimationDefs/TestAnimation/TestAnimation1.xml deleted file mode 100644 index a0be981..0000000 --- a/1.6/Defs/GroupAnimationDefs/TestAnimation/TestAnimation1.xml +++ /dev/null @@ -1,135 +0,0 @@ - - - - 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 deleted file mode 100644 index 07f70d3..0000000 --- a/1.6/Defs/GroupAnimationDefs/TestAnimation/TestAnimation2.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - - 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 deleted file mode 100644 index 11a6623..0000000 --- a/1.6/Defs/GroupAnimationDefs/TestAnimation/TestAnimation3.xml +++ /dev/null @@ -1,133 +0,0 @@ - - - - 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 deleted file mode 100644 index a9cd0b5..0000000 --- a/1.6/Defs/GroupAnimationDefs/TestAnimation/TestGroupAnimation1.xml +++ /dev/null @@ -1,71 +0,0 @@ - - - - TestGroupAnimation1 - 2 - -
  • - 10 - -
  • - 3 - -
  • TestAnimation2
  • -
  • TestAnimation2
  • - - - -
  • - 1 - -
  • TestAnimation2
  • -
  • TestAnimation2
  • - - - - - - - -
    - - - -
  • GroinToAppropriateHeight
  • -
  • GroinToAppropriateHeight
  • -
    - -
    -
    diff --git a/1.6/Defs/OffsetDefs/OffsetDef_GroinToAppropriateHeight.xml b/1.6/Defs/OffsetDefs/OffsetDef_GroinToAppropriateHeight.xml deleted file mode 100644 index 60f7a54..0000000 --- a/1.6/Defs/OffsetDefs/OffsetDef_GroinToAppropriateHeight.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - 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 deleted file mode 100644 index 4e88661..0000000 --- a/1.6/Defs/OffsetDefs/OffsetDef_Placeholder.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - Offset_Placeholder - - - - diff --git a/1.6/Defs/TexPathVariantsDefs/TexPathVariants_Arms.xml b/1.6/Defs/TexPathVariantsDefs/TexPathVariants_Arms.xml deleted file mode 100644 index d582b7b..0000000 --- a/1.6/Defs/TexPathVariantsDefs/TexPathVariants_Arms.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - 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 deleted file mode 100644 index 474aca4..0000000 --- a/1.6/Defs/TexPathVariantsDefs/TexPathVariants_Cat.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - 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 deleted file mode 100644 index 5f368ee..0000000 --- a/1.6/Defs/TexPathVariantsDefs/TexPathVariants_Knees.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - 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 deleted file mode 100644 index 3b14154..0000000 --- a/1.6/Defs/TexPathVariantsDefs/TexPathVariants_XrayPenis_Horse.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - 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 deleted file mode 100644 index 235ee3e..0000000 --- a/1.6/Defs/TexPathVariantsDefs/TexPathVariants_XrayPenis_Human.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - 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 deleted file mode 100644 index 4c9f90b..0000000 --- a/1.6/Defs/TexPathVariantsDefs/TexPathVariants_Xray_Inside.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - 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 deleted file mode 100644 index 7c9cb6c..0000000 --- a/1.6/Defs/VoiceDefs/VoiceDef_Human/SoundDef_HumanFemale.xml +++ /dev/null @@ -1,130 +0,0 @@ - - - - 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 deleted file mode 100644 index a9927cd..0000000 --- a/1.6/Defs/VoiceDefs/VoiceDef_Human/SoundDef_HumanMale.xml +++ /dev/null @@ -1,120 +0,0 @@ - - - - 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 deleted file mode 100644 index eef8942..0000000 --- a/1.6/Defs/VoiceDefs/VoiceDef_Human/VoiceDef_Human.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - 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 deleted file mode 100644 index be5bec0..0000000 --- a/1.6/Defs/VoiceDefs/VoiceDef_Orassan.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/1.6/Defs/VoiceDefs/VoiceTagDef.xml b/1.6/Defs/VoiceDefs/VoiceTagDef.xml deleted file mode 100644 index 1bbc6f2..0000000 --- a/1.6/Defs/VoiceDefs/VoiceTagDef.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - Moan - 0.2 - - - - MoanShort - 0.1 - - - - Grunt - 0.1 - - - - - - - Scream - 1 - - - \ No newline at end of file diff --git a/1.6/Patches/AnimationPatch_PawnRenderTree_OffsetSubWorker.xml b/1.6/Patches/AnimationPatch_PawnRenderTree_OffsetSubWorker.xml deleted file mode 100644 index 6aa36a8..0000000 --- a/1.6/Patches/AnimationPatch_PawnRenderTree_OffsetSubWorker.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - 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.6/Patches/OffsetDefPatchTemplate/AnimationPatch_OffsetDef.xml b/1.6/Patches/OffsetDefPatchTemplate/AnimationPatch_OffsetDef.xml deleted file mode 100644 index 5d45225..0000000 --- a/1.6/Patches/OffsetDefPatchTemplate/AnimationPatch_OffsetDef.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - \ No newline at end of file diff --git a/1.6/Patches/Patch_GenitaliaRenderNode.xml b/1.6/Patches/Patch_GenitaliaRenderNode.xml deleted file mode 100644 index 553374a..0000000 --- a/1.6/Patches/Patch_GenitaliaRenderNode.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - diff --git a/1.6/Sounds/Sex/Slap/Slap_1.wav b/1.6/Sounds/Sex/Slap/Slap_1.wav deleted file mode 100644 index 3387390..0000000 Binary files a/1.6/Sounds/Sex/Slap/Slap_1.wav and /dev/null differ diff --git a/1.6/Sounds/Sex/Slap/Slap_2.wav b/1.6/Sounds/Sex/Slap/Slap_2.wav deleted file mode 100644 index 1486217..0000000 Binary files a/1.6/Sounds/Sex/Slap/Slap_2.wav and /dev/null differ diff --git a/1.6/Sounds/Sex/Slap/Slap_3.wav b/1.6/Sounds/Sex/Slap/Slap_3.wav deleted file mode 100644 index 8d476db..0000000 Binary files a/1.6/Sounds/Sex/Slap/Slap_3.wav and /dev/null differ diff --git a/1.6/Sounds/Sex/Slap/Slap_4.wav b/1.6/Sounds/Sex/Slap/Slap_4.wav deleted file mode 100644 index c958a4c..0000000 Binary files a/1.6/Sounds/Sex/Slap/Slap_4.wav and /dev/null differ diff --git a/1.6/Sounds/Sex/Slap/Slap_5.wav b/1.6/Sounds/Sex/Slap/Slap_5.wav deleted file mode 100644 index 033b2c4..0000000 Binary files a/1.6/Sounds/Sex/Slap/Slap_5.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/FVoice/Grunt1.wav b/1.6/Sounds/Voices/FVoice/Grunt1.wav deleted file mode 100644 index 3ae3ca3..0000000 Binary files a/1.6/Sounds/Voices/FVoice/Grunt1.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/FVoice/Grunt2.wav b/1.6/Sounds/Voices/FVoice/Grunt2.wav deleted file mode 100644 index 496a02d..0000000 Binary files a/1.6/Sounds/Voices/FVoice/Grunt2.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/FVoice/Grunt3.wav b/1.6/Sounds/Voices/FVoice/Grunt3.wav deleted file mode 100644 index 3e905dd..0000000 Binary files a/1.6/Sounds/Voices/FVoice/Grunt3.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/FVoice/Grunt4.wav b/1.6/Sounds/Voices/FVoice/Grunt4.wav deleted file mode 100644 index 4586e8a..0000000 Binary files a/1.6/Sounds/Voices/FVoice/Grunt4.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/FVoice/Grunt5.wav b/1.6/Sounds/Voices/FVoice/Grunt5.wav deleted file mode 100644 index 6fad8c2..0000000 Binary files a/1.6/Sounds/Voices/FVoice/Grunt5.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/FVoice/Grunt6.wav b/1.6/Sounds/Voices/FVoice/Grunt6.wav deleted file mode 100644 index e660f30..0000000 Binary files a/1.6/Sounds/Voices/FVoice/Grunt6.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/FVoice/Moan1.wav b/1.6/Sounds/Voices/FVoice/Moan1.wav deleted file mode 100644 index 14d19bc..0000000 Binary files a/1.6/Sounds/Voices/FVoice/Moan1.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/FVoice/Moan2.wav b/1.6/Sounds/Voices/FVoice/Moan2.wav deleted file mode 100644 index 7aba4b5..0000000 Binary files a/1.6/Sounds/Voices/FVoice/Moan2.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/FVoice/Moan3.wav b/1.6/Sounds/Voices/FVoice/Moan3.wav deleted file mode 100644 index d3fbf99..0000000 Binary files a/1.6/Sounds/Voices/FVoice/Moan3.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/FVoice/Moan4.wav b/1.6/Sounds/Voices/FVoice/Moan4.wav deleted file mode 100644 index cfe3606..0000000 Binary files a/1.6/Sounds/Voices/FVoice/Moan4.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/FVoice/MoanShort1.wav b/1.6/Sounds/Voices/FVoice/MoanShort1.wav deleted file mode 100644 index 48eea21..0000000 Binary files a/1.6/Sounds/Voices/FVoice/MoanShort1.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/FVoice/MoanShort2.wav b/1.6/Sounds/Voices/FVoice/MoanShort2.wav deleted file mode 100644 index 4e3b5b8..0000000 Binary files a/1.6/Sounds/Voices/FVoice/MoanShort2.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/FVoice/MoanShort3.wav b/1.6/Sounds/Voices/FVoice/MoanShort3.wav deleted file mode 100644 index bcd4b49..0000000 Binary files a/1.6/Sounds/Voices/FVoice/MoanShort3.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/FVoice/Scream1.wav b/1.6/Sounds/Voices/FVoice/Scream1.wav deleted file mode 100644 index 58ddb69..0000000 Binary files a/1.6/Sounds/Voices/FVoice/Scream1.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/FVoice/Scream2.wav b/1.6/Sounds/Voices/FVoice/Scream2.wav deleted file mode 100644 index 75bbd9b..0000000 Binary files a/1.6/Sounds/Voices/FVoice/Scream2.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/FVoice/Scream3.wav b/1.6/Sounds/Voices/FVoice/Scream3.wav deleted file mode 100644 index 251126d..0000000 Binary files a/1.6/Sounds/Voices/FVoice/Scream3.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/FVoice/Scream4.wav b/1.6/Sounds/Voices/FVoice/Scream4.wav deleted file mode 100644 index bd7ca69..0000000 Binary files a/1.6/Sounds/Voices/FVoice/Scream4.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/MVoice/Grunt1.wav b/1.6/Sounds/Voices/MVoice/Grunt1.wav deleted file mode 100644 index d73ca08..0000000 Binary files a/1.6/Sounds/Voices/MVoice/Grunt1.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/MVoice/Grunt2.wav b/1.6/Sounds/Voices/MVoice/Grunt2.wav deleted file mode 100644 index 8307871..0000000 Binary files a/1.6/Sounds/Voices/MVoice/Grunt2.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/MVoice/Grunt3.wav b/1.6/Sounds/Voices/MVoice/Grunt3.wav deleted file mode 100644 index 9cf9162..0000000 Binary files a/1.6/Sounds/Voices/MVoice/Grunt3.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/MVoice/Grunt4.wav b/1.6/Sounds/Voices/MVoice/Grunt4.wav deleted file mode 100644 index c8b7efa..0000000 Binary files a/1.6/Sounds/Voices/MVoice/Grunt4.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/MVoice/Moan1.wav b/1.6/Sounds/Voices/MVoice/Moan1.wav deleted file mode 100644 index eafc035..0000000 Binary files a/1.6/Sounds/Voices/MVoice/Moan1.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/MVoice/Moan2.wav b/1.6/Sounds/Voices/MVoice/Moan2.wav deleted file mode 100644 index 636b445..0000000 Binary files a/1.6/Sounds/Voices/MVoice/Moan2.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/MVoice/Moan3.wav b/1.6/Sounds/Voices/MVoice/Moan3.wav deleted file mode 100644 index b47f6c3..0000000 Binary files a/1.6/Sounds/Voices/MVoice/Moan3.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/MVoice/Moan4.wav b/1.6/Sounds/Voices/MVoice/Moan4.wav deleted file mode 100644 index dc92d64..0000000 Binary files a/1.6/Sounds/Voices/MVoice/Moan4.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/MVoice/MoanShort1.wav b/1.6/Sounds/Voices/MVoice/MoanShort1.wav deleted file mode 100644 index 9bf94e4..0000000 Binary files a/1.6/Sounds/Voices/MVoice/MoanShort1.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/MVoice/MoanShort2.wav b/1.6/Sounds/Voices/MVoice/MoanShort2.wav deleted file mode 100644 index 481ca2d..0000000 Binary files a/1.6/Sounds/Voices/MVoice/MoanShort2.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/MVoice/MoanShort3.wav b/1.6/Sounds/Voices/MVoice/MoanShort3.wav deleted file mode 100644 index 34d5ee1..0000000 Binary files a/1.6/Sounds/Voices/MVoice/MoanShort3.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/MVoice/Scream1.wav b/1.6/Sounds/Voices/MVoice/Scream1.wav deleted file mode 100644 index 2d987a0..0000000 Binary files a/1.6/Sounds/Voices/MVoice/Scream1.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/MVoice/Scream2.wav b/1.6/Sounds/Voices/MVoice/Scream2.wav deleted file mode 100644 index b71293b..0000000 Binary files a/1.6/Sounds/Voices/MVoice/Scream2.wav and /dev/null differ diff --git a/1.6/Sounds/Voices/MVoice/Scream3.wav b/1.6/Sounds/Voices/MVoice/Scream3.wav deleted file mode 100644 index f7b73c3..0000000 Binary files a/1.6/Sounds/Voices/MVoice/Scream3.wav and /dev/null differ diff --git a/1.6/Source/Animations/AnimationOffsets/AnimationOffsetDef.cs b/1.6/Source/Animations/AnimationOffsets/AnimationOffsetDef.cs deleted file mode 100644 index 03cdc8d..0000000 --- a/1.6/Source/Animations/AnimationOffsets/AnimationOffsetDef.cs +++ /dev/null @@ -1,32 +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 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 deleted file mode 100644 index 8427c16..0000000 --- a/1.6/Source/Animations/AnimationOffsets/Offsets/AnimationOffset_AgeRange.cs +++ /dev/null @@ -1,42 +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 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 deleted file mode 100644 index b5a5532..0000000 --- a/1.6/Source/Animations/AnimationOffsets/Offsets/AnimationOffset_AgeRangeGendered.cs +++ /dev/null @@ -1,52 +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 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 deleted file mode 100644 index 06f19ee..0000000 --- a/1.6/Source/Animations/AnimationOffsets/Offsets/AnimationOffset_BodyType.cs +++ /dev/null @@ -1,45 +0,0 @@ -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 deleted file mode 100644 index c2716dc..0000000 --- a/1.6/Source/Animations/AnimationOffsets/Offsets/AnimationOffset_BodyTypeGendered.cs +++ /dev/null @@ -1,69 +0,0 @@ -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 deleted file mode 100644 index 061cf39..0000000 --- a/1.6/Source/Animations/AnimationOffsets/Offsets/AnimationOffset_Genes.cs +++ /dev/null @@ -1,42 +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 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 deleted file mode 100644 index a728834..0000000 --- a/1.6/Source/Animations/AnimationOffsets/Offsets/AnimationOffset_Single.cs +++ /dev/null @@ -1,33 +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 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 deleted file mode 100644 index e5d2243..0000000 --- a/1.6/Source/Animations/AnimationOffsets/Offsets/BaseAnimationOffset.cs +++ /dev/null @@ -1,29 +0,0 @@ -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 deleted file mode 100644 index b441262..0000000 --- a/1.6/Source/Animations/AnimationOffsets/Offsets/BodyTypeOffset.cs +++ /dev/null @@ -1,19 +0,0 @@ -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 deleted file mode 100644 index 2a1f501..0000000 --- a/1.6/Source/Animations/AnimationProps/AnimationPropDef.cs +++ /dev/null @@ -1,47 +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 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 deleted file mode 100644 index dd8f4a1..0000000 --- a/1.6/Source/Animations/AnimationWorkers/AnimationWorker_KeyframesExtended.cs +++ /dev/null @@ -1,229 +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 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 deleted file mode 100644 index de5ddc3..0000000 --- a/1.6/Source/Animations/GroupAnimations/GroupAnimationContexts/BaseGroupAnimationContext.cs +++ /dev/null @@ -1,69 +0,0 @@ -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 deleted file mode 100644 index 74d91da..0000000 --- a/1.6/Source/Animations/GroupAnimations/GroupAnimationContexts/GroupAnimationContext.cs +++ /dev/null @@ -1,188 +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 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 deleted file mode 100644 index cefdf6a..0000000 --- a/1.6/Source/Animations/GroupAnimations/GroupAnimationContexts/GroupAnimationContext_RJWSex.cs +++ /dev/null @@ -1,40 +0,0 @@ -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 deleted file mode 100644 index 30c9f61..0000000 --- a/1.6/Source/Animations/GroupAnimations/GroupAnimationDef.cs +++ /dev/null @@ -1,192 +0,0 @@ -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 deleted file mode 100644 index 44797ba..0000000 --- a/1.6/Source/Animations/GroupAnimations/GroupAnimationStages/AnimationStage.cs +++ /dev/null @@ -1,18 +0,0 @@ -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 deleted file mode 100644 index 6817360..0000000 --- a/1.6/Source/Animations/GroupAnimations/GroupAnimationStages/AnimationStage_Branch.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 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 deleted file mode 100644 index 1f6f6e8..0000000 --- a/1.6/Source/Animations/GroupAnimations/GroupAnimationStages/AnimationStage_BranchConditional.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; - -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 deleted file mode 100644 index 18f58aa..0000000 --- a/1.6/Source/Animations/GroupAnimations/GroupAnimationStages/AnimationStage_LoopRandomSelectChance.cs +++ /dev/null @@ -1,60 +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 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 deleted file mode 100644 index cd63ecf..0000000 --- a/1.6/Source/Animations/GroupAnimations/GroupAnimationStages/AnimationStage_TicksDuration.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; - -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 deleted file mode 100644 index 45fced9..0000000 --- a/1.6/Source/Animations/Keyframes/ExtendedKeyframe.cs +++ /dev/null @@ -1,19 +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 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 deleted file mode 100644 index 9ada366..0000000 --- a/1.6/Source/Animations/PawnTests/BasePawnTest.cs +++ /dev/null @@ -1,15 +0,0 @@ -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 deleted file mode 100644 index 198f71b..0000000 --- a/1.6/Source/Animations/PawnTests/Logic/PawnTest_Always.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 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 deleted file mode 100644 index c5fc2b7..0000000 --- a/1.6/Source/Animations/PawnTests/Logic/PawnTest_And.cs +++ /dev/null @@ -1,15 +0,0 @@ -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 deleted file mode 100644 index 8c854a2..0000000 --- a/1.6/Source/Animations/PawnTests/Logic/PawnTest_Multi.cs +++ /dev/null @@ -1,27 +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 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 deleted file mode 100644 index fad9985..0000000 --- a/1.6/Source/Animations/PawnTests/Logic/PawnTest_Never.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 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 deleted file mode 100644 index a3e2690..0000000 --- a/1.6/Source/Animations/PawnTests/Logic/PawnTest_Not.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 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 deleted file mode 100644 index 6731f5a..0000000 --- a/1.6/Source/Animations/PawnTests/Logic/PawnTest_Or.cs +++ /dev/null @@ -1,31 +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 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 deleted file mode 100644 index 42b59b5..0000000 --- a/1.6/Source/Animations/PawnTests/RJW/PawnTest_RJWCanBeFucked.cs +++ /dev/null @@ -1,28 +0,0 @@ -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 deleted file mode 100644 index 7ef9c55..0000000 --- a/1.6/Source/Animations/PawnTests/RJW/PawnTest_RJWCanFuck.cs +++ /dev/null @@ -1,18 +0,0 @@ -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 deleted file mode 100644 index db22978..0000000 --- a/1.6/Source/Animations/PawnTests/RJW/PawnTest_RJWInitiator.cs +++ /dev/null @@ -1,21 +0,0 @@ -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 deleted file mode 100644 index ae01bd4..0000000 --- a/1.6/Source/Animations/PawnTests/RJW/PawnTest_RJWRape.cs +++ /dev/null @@ -1,19 +0,0 @@ -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 deleted file mode 100644 index 4196f20..0000000 --- a/1.6/Source/Animations/PawnTests/RJW/PawnTest_RJWReceiver.cs +++ /dev/null @@ -1,18 +0,0 @@ -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 deleted file mode 100644 index 249002c..0000000 --- a/1.6/Source/Animations/PawnTests/RJW/PawnTest_RJWSex.cs +++ /dev/null @@ -1,18 +0,0 @@ -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 deleted file mode 100644 index a7ab7d2..0000000 --- a/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_BodyType.cs +++ /dev/null @@ -1,33 +0,0 @@ -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 deleted file mode 100644 index a021ce1..0000000 --- a/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_Dead.cs +++ /dev/null @@ -1,18 +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 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 deleted file mode 100644 index 1787e5f..0000000 --- a/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_DeadOrDown.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 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 deleted file mode 100644 index 758e594..0000000 --- a/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_Down.cs +++ /dev/null @@ -1,18 +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 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 deleted file mode 100644 index 8849373..0000000 --- a/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_Hediff.cs +++ /dev/null @@ -1,33 +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 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 deleted file mode 100644 index dada773..0000000 --- a/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_HostileToPlayer.cs +++ /dev/null @@ -1,19 +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 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 deleted file mode 100644 index dbbf8fe..0000000 --- a/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_Humanlike.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 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 deleted file mode 100644 index 92346dc..0000000 --- a/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_JobDef.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; - -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 deleted file mode 100644 index 2d92411..0000000 --- a/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_OfPlayerFaction.cs +++ /dev/null @@ -1,19 +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 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 deleted file mode 100644 index 190c57b..0000000 --- a/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_PrisonerOfColony.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 -{ - 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 deleted file mode 100644 index 2f2f1fe..0000000 --- a/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_Race.cs +++ /dev/null @@ -1,30 +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 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 deleted file mode 100644 index b158779..0000000 --- a/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_SlaveOfColony.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 -{ - 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 deleted file mode 100644 index df642ad..0000000 --- a/1.6/Source/Animations/PawnTests/Rimworld/PawnTest_Trait.cs +++ /dev/null @@ -1,27 +0,0 @@ -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 deleted file mode 100644 index 17ce3a3..0000000 --- a/1.6/Source/Comps/CompExtendedAnimator.cs +++ /dev/null @@ -1,468 +0,0 @@ -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.6/Source/Comps/CompThingAnimator.cs b/1.6/Source/Comps/CompThingAnimator.cs deleted file mode 100644 index 64dcc59..0000000 --- a/1.6/Source/Comps/CompThingAnimator.cs +++ /dev/null @@ -1,23 +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 - { - - 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 deleted file mode 100644 index 6116a8c..0000000 --- a/1.6/Source/Comps/ExtendedAnimatorAnchor/BaseExtendedAnimatorAnchor.cs +++ /dev/null @@ -1,23 +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 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 deleted file mode 100644 index 6f86334..0000000 --- a/1.6/Source/Comps/ExtendedAnimatorAnchor/ExtendedAnimatorAnchor_Thing.cs +++ /dev/null @@ -1,41 +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 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 deleted file mode 100644 index 7eb5ed8..0000000 --- a/1.6/Source/Comps/ExtendedAnimatorAnchor/ExtendedAnimatorAnchor_Vector3.cs +++ /dev/null @@ -1,34 +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 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 deleted file mode 100644 index 99a766e..0000000 --- a/1.6/Source/Defs/AnimationDefOf.cs +++ /dev/null @@ -1,22 +0,0 @@ -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 deleted file mode 100644 index 318e9c2..0000000 --- a/1.6/Source/MainTabWindows/MainTabWindow_OffsetConfigure.cs +++ /dev/null @@ -1,209 +0,0 @@ -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.6/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_Masturbate.cs b/1.6/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_Masturbate.cs deleted file mode 100644 index d7c9e98..0000000 --- a/1.6/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_Masturbate.cs +++ /dev/null @@ -1,55 +0,0 @@ -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 deleted file mode 100644 index 622b7c1..0000000 --- a/1.6/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_Sex.cs +++ /dev/null @@ -1,66 +0,0 @@ -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 deleted file mode 100644 index 36a1316..0000000 --- a/1.6/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs +++ /dev/null @@ -1,133 +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) - { - - 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 deleted file mode 100644 index 4de97aa..0000000 --- a/1.6/Source/Patches/RJWPatches/JobDrivers/JobDriver_Sex/HarmonyPatch_Animate.cs +++ /dev/null @@ -1,53 +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), "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.6/Source/Patches/RJWPatches/JobDrivers/SexBaseReceivers/HarmonyPatch_JobDriver_SexBaseReceiverRaped.cs b/1.6/Source/Patches/RJWPatches/JobDrivers/SexBaseReceivers/HarmonyPatch_JobDriver_SexBaseReceiverRaped.cs deleted file mode 100644 index 703bdcc..0000000 --- a/1.6/Source/Patches/RJWPatches/JobDrivers/SexBaseReceivers/HarmonyPatch_JobDriver_SexBaseReceiverRaped.cs +++ /dev/null @@ -1,29 +0,0 @@ -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 deleted file mode 100644 index eadccea..0000000 --- a/1.6/Source/Patches/RimworldPatches/HarmonyPatch_Dialog_DebugRenderTree.cs +++ /dev/null @@ -1,47 +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 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 deleted file mode 100644 index cbdc70a..0000000 --- a/1.6/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderNode.cs +++ /dev/null @@ -1,63 +0,0 @@ -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 deleted file mode 100644 index 67981ed..0000000 --- a/1.6/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderNodeWorker.cs +++ /dev/null @@ -1,40 +0,0 @@ -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 deleted file mode 100644 index c62bcc4..0000000 --- a/1.6/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderTree.cs +++ /dev/null @@ -1,155 +0,0 @@ -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 deleted file mode 100644 index 99964d5..0000000 --- a/1.6/Source/Patches/RimworldPatches/HarmonyPatch_PawnRenderer.cs +++ /dev/null @@ -1,47 +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(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 deleted file mode 100644 index da0f303..0000000 --- a/1.6/Source/Patches/RimworldPatches/HarmonyPatch_Pawn_DrawTracker.cs +++ /dev/null @@ -1,28 +0,0 @@ -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.6/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNodeProperties_GraphicBodyTypeVariants.cs b/1.6/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNodeProperties_GraphicBodyTypeVariants.cs deleted file mode 100644 index c797e04..0000000 --- a/1.6/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNodeProperties_GraphicBodyTypeVariants.cs +++ /dev/null @@ -1,33 +0,0 @@ -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 deleted file mode 100644 index ad745b8..0000000 --- a/1.6/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNodeWorker_GraphicBodyTypeVariants.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 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 deleted file mode 100644 index f64c46b..0000000 --- a/1.6/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNode_GraphicBodyTypeVariants.cs +++ /dev/null @@ -1,63 +0,0 @@ -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 deleted file mode 100644 index e465ee3..0000000 --- a/1.6/Source/PawnRenderNode/GraphicHediffSeverityVariants/PawnRenderNodeProperties_GraphicHediffSeverityVariants.cs +++ /dev/null @@ -1,40 +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 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 deleted file mode 100644 index bac5d31..0000000 --- a/1.6/Source/PawnRenderNode/GraphicHediffSeverityVariants/PawnRenderNodeWorker_GraphicHediffSeverityVariants.cs +++ /dev/null @@ -1,14 +0,0 @@ -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 deleted file mode 100644 index a7e7b0a..0000000 --- a/1.6/Source/PawnRenderNode/GraphicHediffSeverityVariants/PawnRenderNode_GraphicHediffSeverityVariants.cs +++ /dev/null @@ -1,121 +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 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 deleted file mode 100644 index 1717e37..0000000 --- a/1.6/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNodeProperties_GraphicHediffVariants.cs +++ /dev/null @@ -1,32 +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 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 deleted file mode 100644 index 24a10dc..0000000 --- a/1.6/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNodeWorker_GraphicHediffVariants.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 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 deleted file mode 100644 index 3949044..0000000 --- a/1.6/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNode_GraphicHediffVariants.cs +++ /dev/null @@ -1,69 +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 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 deleted file mode 100644 index 98fafeb..0000000 --- a/1.6/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeProperties_GraphicVariants.cs +++ /dev/null @@ -1,30 +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 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 deleted file mode 100644 index fae9f47..0000000 --- a/1.6/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeWorker_GraphicVariants.cs +++ /dev/null @@ -1,136 +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 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 deleted file mode 100644 index 2fd5241..0000000 --- a/1.6/Source/PawnRenderNode/GraphicVariants/PawnRenderNode_GraphicVariants.cs +++ /dev/null @@ -1,90 +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 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 deleted file mode 100644 index d741756..0000000 --- a/1.6/Source/PawnRenderNode/TexPathVariants.cs +++ /dev/null @@ -1,16 +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 TexPathVariantsDef : Def - { - - public List variants; - - } -} diff --git a/1.6/Source/RenderSubWorkers/PawnRenderSubWorker_ChangeOffset.cs b/1.6/Source/RenderSubWorkers/PawnRenderSubWorker_ChangeOffset.cs deleted file mode 100644 index 4e64eb5..0000000 --- a/1.6/Source/RenderSubWorkers/PawnRenderSubWorker_ChangeOffset.cs +++ /dev/null @@ -1,50 +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 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 deleted file mode 100644 index 74bc599..0000000 --- a/1.6/Source/RenderSubWorkers/PawnRenderSubWorker_HideWhenAnimating.cs +++ /dev/null @@ -1,38 +0,0 @@ -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 deleted file mode 100644 index 8f280a1..0000000 --- a/1.6/Source/Settings/PawnScaledOffsets.cs +++ /dev/null @@ -1,88 +0,0 @@ -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 deleted file mode 100644 index 2c594bc..0000000 --- a/1.6/Source/Settings/RJWAnimationSettings.cs +++ /dev/null @@ -1,110 +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 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 deleted file mode 100644 index dfaddc9..0000000 --- a/1.6/Source/Utilities/AnimationUtility.cs +++ /dev/null @@ -1,167 +0,0 @@ -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 deleted file mode 100644 index 3e30548..0000000 --- a/1.6/Source/Utilities/DebugActions.cs +++ /dev/null @@ -1,30 +0,0 @@ -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 deleted file mode 100644 index 3be6ebd..0000000 --- a/1.6/Source/Voices/VoiceDef.cs +++ /dev/null @@ -1,41 +0,0 @@ -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 deleted file mode 100644 index e489233..0000000 --- a/1.6/Source/Voices/VoiceDefOf.cs +++ /dev/null @@ -1,22 +0,0 @@ -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 deleted file mode 100644 index 2127b22..0000000 --- a/1.6/Source/Voices/VoiceTagDef.cs +++ /dev/null @@ -1,16 +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 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 deleted file mode 100644 index d7df227..0000000 Binary files a/1.6/Textures/AnimationProps/Banana/Banana_east.png and /dev/null differ diff --git a/1.6/Textures/AnimationProps/Banana/Banana_north.png b/1.6/Textures/AnimationProps/Banana/Banana_north.png deleted file mode 100644 index d4a4d28..0000000 Binary files a/1.6/Textures/AnimationProps/Banana/Banana_north.png and /dev/null differ diff --git a/1.6/Textures/AnimationProps/Banana/Banana_south.png b/1.6/Textures/AnimationProps/Banana/Banana_south.png deleted file mode 100644 index d7df227..0000000 Binary files a/1.6/Textures/AnimationProps/Banana/Banana_south.png and /dev/null differ diff --git a/1.6/Textures/AnimationProps/Banana/Banana_west.png b/1.6/Textures/AnimationProps/Banana/Banana_west.png deleted file mode 100644 index d7df227..0000000 Binary files a/1.6/Textures/AnimationProps/Banana/Banana_west.png and /dev/null differ diff --git a/1.6/Textures/AnimationProps/Cat/Cat1_north.png b/1.6/Textures/AnimationProps/Cat/Cat1_north.png deleted file mode 100644 index e9303f5..0000000 Binary files a/1.6/Textures/AnimationProps/Cat/Cat1_north.png and /dev/null differ diff --git a/1.6/Textures/AnimationProps/Cat/Cat2_north.png b/1.6/Textures/AnimationProps/Cat/Cat2_north.png deleted file mode 100644 index caa4969..0000000 Binary files a/1.6/Textures/AnimationProps/Cat/Cat2_north.png and /dev/null differ diff --git a/1.6/Textures/AnimationProps/CowgirlXray/XRay2-1.png b/1.6/Textures/AnimationProps/CowgirlXray/XRay2-1.png deleted file mode 100644 index 2a848c6..0000000 Binary files a/1.6/Textures/AnimationProps/CowgirlXray/XRay2-1.png and /dev/null differ diff --git a/1.6/Textures/AnimationProps/CowgirlXray/XRay2-2.png b/1.6/Textures/AnimationProps/CowgirlXray/XRay2-2.png deleted file mode 100644 index d5cccf2..0000000 Binary files a/1.6/Textures/AnimationProps/CowgirlXray/XRay2-2.png and /dev/null differ diff --git a/1.6/Textures/AnimationProps/CowgirlXray/XRay2-3.png b/1.6/Textures/AnimationProps/CowgirlXray/XRay2-3.png deleted file mode 100644 index 9dffa7c..0000000 Binary files a/1.6/Textures/AnimationProps/CowgirlXray/XRay2-3.png and /dev/null differ diff --git a/1.6/Textures/AnimationProps/CowgirlXray/XRay2-4.png b/1.6/Textures/AnimationProps/CowgirlXray/XRay2-4.png deleted file mode 100644 index af3af31..0000000 Binary files a/1.6/Textures/AnimationProps/CowgirlXray/XRay2-4.png and /dev/null differ diff --git a/1.6/Textures/AnimationProps/CowgirlXray/XRay2-5.png b/1.6/Textures/AnimationProps/CowgirlXray/XRay2-5.png deleted file mode 100644 index bfd3ef5..0000000 Binary files a/1.6/Textures/AnimationProps/CowgirlXray/XRay2-5.png and /dev/null differ diff --git a/1.6/Textures/AnimationProps/CowgirlXray/XRay2-6.png b/1.6/Textures/AnimationProps/CowgirlXray/XRay2-6.png deleted file mode 100644 index 95a1397..0000000 Binary files a/1.6/Textures/AnimationProps/CowgirlXray/XRay2-6.png and /dev/null differ diff --git a/1.6/Textures/AnimationProps/Cum/Cum.png b/1.6/Textures/AnimationProps/Cum/Cum.png deleted file mode 100644 index c32f1ea..0000000 Binary files a/1.6/Textures/AnimationProps/Cum/Cum.png and /dev/null differ diff --git a/1.6/Textures/AnimationProps/Doggystyle/Doggy_Arms_north.png b/1.6/Textures/AnimationProps/Doggystyle/Doggy_Arms_north.png deleted file mode 100644 index ecf9622..0000000 Binary files a/1.6/Textures/AnimationProps/Doggystyle/Doggy_Arms_north.png and /dev/null differ diff --git a/1.6/Textures/AnimationProps/Doggystyle/Doggy_Legs_north.png b/1.6/Textures/AnimationProps/Doggystyle/Doggy_Legs_north.png deleted file mode 100644 index 1da02fc..0000000 Binary files a/1.6/Textures/AnimationProps/Doggystyle/Doggy_Legs_north.png and /dev/null differ diff --git a/1.6/Textures/AnimationProps/Hand/Hand_north.png b/1.6/Textures/AnimationProps/Hand/Hand_north.png deleted file mode 100644 index 6c82f67..0000000 Binary files a/1.6/Textures/AnimationProps/Hand/Hand_north.png and /dev/null differ diff --git a/1.6/Textures/AnimationProps/MissingTexture/MissingTexture_east.png b/1.6/Textures/AnimationProps/MissingTexture/MissingTexture_east.png deleted file mode 100644 index 59958a9..0000000 Binary files a/1.6/Textures/AnimationProps/MissingTexture/MissingTexture_east.png and /dev/null differ diff --git a/1.6/Textures/AnimationProps/MissingTexture/MissingTexture_north.png b/1.6/Textures/AnimationProps/MissingTexture/MissingTexture_north.png deleted file mode 100644 index 59958a9..0000000 Binary files a/1.6/Textures/AnimationProps/MissingTexture/MissingTexture_north.png and /dev/null differ diff --git a/1.6/Textures/AnimationProps/MissingTexture/MissingTexture_south.png b/1.6/Textures/AnimationProps/MissingTexture/MissingTexture_south.png deleted file mode 100644 index 59958a9..0000000 Binary files a/1.6/Textures/AnimationProps/MissingTexture/MissingTexture_south.png and /dev/null differ diff --git a/1.6/Textures/AnimationProps/MissingTexture/MissingTexture_west.png b/1.6/Textures/AnimationProps/MissingTexture/MissingTexture_west.png deleted file mode 100644 index 59958a9..0000000 Binary files a/1.6/Textures/AnimationProps/MissingTexture/MissingTexture_west.png and /dev/null differ diff --git a/1.6/Textures/AnimationProps/Saliva/Saliva_north.png b/1.6/Textures/AnimationProps/Saliva/Saliva_north.png deleted file mode 100644 index 1d267e8..0000000 Binary files a/1.6/Textures/AnimationProps/Saliva/Saliva_north.png and /dev/null differ diff --git a/1.6/Textures/UI/MainTab.png b/1.6/Textures/UI/MainTab.png deleted file mode 100644 index 11f1749..0000000 Binary files a/1.6/Textures/UI/MainTab.png and /dev/null differ diff --git a/About/About.xml b/About/About.xml index a37de85..b264914 100644 --- a/About/About.xml +++ b/About/About.xml @@ -1,15 +1,16 @@ - Rimworld Animations 2.0 + Rimworld-Animations C0ffee https://gitgud.io/c0ffeeeeeeee/rimworld-animations -
  • 1.6
  • +
  • 1.1
  • +
  • 1.2
  • +
  • 1.3
  • +
  • 1.4
  • c0ffee.rimworld.animations - 2.2.0 - UI/MainTab
  • brrainz.harmony @@ -17,6 +18,12 @@ 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 @@ -24,8 +31,8 @@
  • +
  • UnlimitedHugs.HugsLib
  • brrainz.harmony
  • -
  • rim.job.world
  • erdelf.humanoidalienraces
  • nals.facialanimation
  • com.yayo.yayoAni
  • @@ -35,7 +42,7 @@ - Rimworld Animations 2.0! Hurray! + Rimworld Animations! 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 9916331..0a6d4c7 100644 --- a/About/Manifest.xml +++ b/About/Manifest.xml @@ -1,5 +1,5 @@ Rimworld-Animations - 2.2.0 + 1.3.7 diff --git a/Directory.Packages.props b/Directory.Packages.props deleted file mode 100644 index c221e65..0000000 --- a/Directory.Packages.props +++ /dev/null @@ -1,13 +0,0 @@ - - - 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 deleted file mode 100644 index 1d72019..0000000 --- a/Languages/ChineseSimplified/Keyed/RJWAnimations-LanguageData.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - 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 deleted file mode 100644 index c014f16..0000000 --- a/Languages/ChineseTraditional/Keyed/RJWAnimations-LanguageData.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - 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 deleted file mode 100644 index 3a4ccf7..0000000 --- a/Languages/English/Keyed/RJWAnimations-LanguageData.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - 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 b369dab..4fdb79c 100644 --- a/LoadFolders.xml +++ b/LoadFolders.xml @@ -24,22 +24,6 @@
  • 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/Patch_FacialAnimation/1.5/Patches/AnimationPatch_HideHeadWhenAnimating.xml b/Patch_FacialAnimation/1.5/Patches/AnimationPatch_HideHeadWhenAnimating.xml deleted file mode 100644 index b8c72df..0000000 --- a/Patch_FacialAnimation/1.5/Patches/AnimationPatch_HideHeadWhenAnimating.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - 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/Patch_HumanoidAlienRaces.csproj b/Patch_HumanoidAlienRaces/Patch_HumanoidAlienRaces.csproj index 5841608..e34e96e 100644 --- a/Patch_HumanoidAlienRaces/Patch_HumanoidAlienRaces.csproj +++ b/Patch_HumanoidAlienRaces/Patch_HumanoidAlienRaces.csproj @@ -17,7 +17,7 @@ false none false - 1.5\Assemblies\ + 1.4\Assemblies\ DEBUG;TRACE prompt 4 @@ -37,7 +37,7 @@ False - ..\..\..\..\..\workshop\content\294100\839005762\1.5\Assemblies\AlienRace.dll + ..\..\..\..\..\workshop\content\294100\839005762\1.4\Assemblies\AlienRace.dll False @@ -70,12 +70,8 @@ - + - - - - \ No newline at end of file diff --git a/Patch_HumanoidAlienRaces/1.4/Source/HarmonyPatch_AlienRace.cs b/Patch_HumanoidAlienRaces/Source/HarmonyPatch_AlienRace.cs similarity index 100% rename from Patch_HumanoidAlienRaces/1.4/Source/HarmonyPatch_AlienRace.cs rename to Patch_HumanoidAlienRaces/Source/HarmonyPatch_AlienRace.cs diff --git a/Patch_NoRimNudeWorld/1.5/Defs/PawnRenderNodeTagDef_RimnudePenisPlaceholder.xml b/Patch_NoRimNudeWorld/1.5/Defs/PawnRenderNodeTagDef_RimnudePenisPlaceholder.xml deleted file mode 100644 index 004ac6a..0000000 --- a/Patch_NoRimNudeWorld/1.5/Defs/PawnRenderNodeTagDef_RimnudePenisPlaceholder.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - RimNude_Penis - - diff --git a/Patch_NoRimNudeWorldZoo/1.5/Defs/PawnRenderNodeTagDef_AnimalPenisPlaceholder.xml b/Patch_NoRimNudeWorldZoo/1.5/Defs/PawnRenderNodeTagDef_AnimalPenisPlaceholder.xml deleted file mode 100644 index 3632dfe..0000000 --- a/Patch_NoRimNudeWorldZoo/1.5/Defs/PawnRenderNodeTagDef_AnimalPenisPlaceholder.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - AnimalPenis - - diff --git a/Patch_SexToysMasturbation/1.3/Assemblies/Patch_SexToysMasturbation.dll b/Patch_SexToysMasturbation/1.3/Assemblies/Patch_SexToysMasturbation.dll new file mode 100644 index 0000000..723e4ee Binary files /dev/null and b/Patch_SexToysMasturbation/1.3/Assemblies/Patch_SexToysMasturbation.dll differ diff --git a/Patch_SexToysMasturbation/1.3/Defs/AnimationDefs/Animations_Dildo.xml b/Patch_SexToysMasturbation/1.3/Defs/AnimationDefs/Animations_Dildo.xml new file mode 100644 index 0000000..dd483ea --- /dev/null +++ b/Patch_SexToysMasturbation/1.3/Defs/AnimationDefs/Animations_Dildo.xml @@ -0,0 +1,465 @@ + + + + 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 new file mode 100644 index 0000000..a9d0d5f Binary files /dev/null and b/Patch_SexToysMasturbation/1.4/Assemblies/Patch_SexToysMasturbation.dll differ diff --git a/Patch_SexToysMasturbation/1.4/Defs/AnimationDefs/Animations_Dildo.xml b/Patch_SexToysMasturbation/1.4/Defs/AnimationDefs/Animations_Dildo.xml new file mode 100644 index 0000000..dd483ea --- /dev/null +++ b/Patch_SexToysMasturbation/1.4/Defs/AnimationDefs/Animations_Dildo.xml @@ -0,0 +1,465 @@ + + + + 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 new file mode 100644 index 0000000..d274c6a --- /dev/null +++ b/Patch_SexToysMasturbation/Patch_SexToysMasturbation.csproj @@ -0,0 +1,89 @@ + + + + + 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/Properties/AssemblyInfo.cs b/Patch_SexToysMasturbation/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..55c921a --- /dev/null +++ b/Patch_SexToysMasturbation/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +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_SexToysMasturbation")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Patch_SexToysMasturbation")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("87763712-0536-4d5f-9eaa-520f15d4f84e")] + +// 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/Patch_SexToysMasturbation/Source/Defs/SexToyAnimationDef.cs b/Patch_SexToysMasturbation/Source/Defs/SexToyAnimationDef.cs new file mode 100644 index 0000000..a572d5e --- /dev/null +++ b/Patch_SexToysMasturbation/Source/Defs/SexToyAnimationDef.cs @@ -0,0 +1,16 @@ +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 new file mode 100644 index 0000000..b48ece7 --- /dev/null +++ b/Patch_SexToysMasturbation/Source/Harmony/Harmony_PatchAll.cs @@ -0,0 +1,23 @@ +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 new file mode 100644 index 0000000..9f29203 --- /dev/null +++ b/Patch_SexToysMasturbation/Source/Patches/HarmonyPatch_JobDriver_SexBaseInitiator.cs @@ -0,0 +1,76 @@ +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 new file mode 100644 index 0000000..5ab05b1 --- /dev/null +++ b/Patch_SexToysMasturbation/Source/Utilities/AnimSexToyUtility.cs @@ -0,0 +1,47 @@ +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 new file mode 100644 index 0000000..e3bb54e --- /dev/null +++ b/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +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 01a5440..657ccf2 100644 --- a/Rimworld-Animations.csproj +++ b/Rimworld-Animations.csproj @@ -1,81 +1,184 @@ - + + + - TargetFramework + Debug + AnyCPU + {71B05D71-67B2-4014-82CD-18C20AC0882F} Library + Properties Rimworld_Animations - net472 - false - false + Rimworld-Animations + v4.8 + 512 + true + false none - 1.6\Assemblies\ + false + 1.4\Assemblies\ + DEBUG;TRACE + prompt + 4 - 1.6\Assemblies\ - x64 + none + true + bin\Release\ + TRACE + prompt + 4 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + ..\..\..\..\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.6\Assemblies\RJW.dll + ..\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/Rimworld-Animations.sln b/Rimworld-Animations.sln index bfb5422..a5817dd 100644 --- a/Rimworld-Animations.sln +++ b/Rimworld-Animations.sln @@ -1,10 +1,16 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.11.35431.28 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29905.134 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 @@ -13,8 +19,19 @@ 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 = Debug|Any CPU - {71B05D71-67B2-4014-82CD-18C20AC0882F}.Release|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 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/packages.lock.json b/packages.lock.json deleted file mode 100644 index c6d3489..0000000 --- a/packages.lock.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "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