diff --git a/1.5/Assemblies/Rimworld-Animations.dll b/1.5/Assemblies/Rimworld-Animations.dll
index efcf504..996d9f5 100644
Binary files a/1.5/Assemblies/Rimworld-Animations.dll and b/1.5/Assemblies/Rimworld-Animations.dll differ
diff --git a/1.5/Defs/AnimationDefs/DoublePenetration/GroupAnimation_DP.xml b/1.5/Defs/AnimationDefs/DoublePenetration/GroupAnimation_DP.xml
new file mode 100644
index 0000000..97d1b7d
--- /dev/null
+++ b/1.5/Defs/AnimationDefs/DoublePenetration/GroupAnimation_DP.xml
@@ -0,0 +1,346 @@
+
+
+
+ GroupAnimation_DoublePenetration
+ 3
+
+
+ 1
+
+
+ 1
+
+ MalePawn_DP_Stage1
+ FemalePawn_DP_Stage1
+ MalePawn2_DP_Stage1
+
+
+
+
+
+
+
+ 6
+
+ GroupAnimation_DP_Stage2_Branch1
+ GroupAnimation_DP_Stage2_Branch2
+ GroupAnimation_DP_Stage2_Branch3
+ GroupAnimation_DP_Stage2_Branch4
+
+
+
+
+ 25
+
+
+ 1
+
+ MalePawn_DP_Stage3
+ FemalePawn_DP_Stage3
+ MalePawn2_DP_Stage3
+
+
+
+
+
+
+
+ 30
+
+
+ 1
+
+ MalePawn_DP_Stage4
+ FemalePawn_DP_Stage4
+ MalePawn2_DP_Stage4
+
+
+
+
+
+
+ 1
+
+ GroupAnimation_DP_Stage5_Branch1
+ GroupAnimation_DP_Stage5_Branch2
+ GroupAnimation_DP_Stage5_Branch3
+
+
+
+
+
+
+ 1
+ 2
+
+ Sex_DoublePenetration
+ Sex_DoublePenetrationM
+ Sex_Anal
+ Sex_Vaginal
+ Rape_DoublePenetration
+ Rape_DoublePenetrationM
+ Rape_Anal
+ Rape_Vaginal
+
+
+
+ 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
+
+
+
+
+
+
+
+ Offset_Placeholder
+ Offset_DP_FemalePawn
+ Offset_Placeholder
+
+
+
+
+
+ GroupAnimation_DP_Stage2_Branch1
+ 3
+
+
+ 3
+
+
+ 1
+
+ MalePawn_DP_Stage2a
+ FemalePawn_DP_Stage2a
+ MalePawn2_DP_Stage2a
+
+
+
+
+
+
+
+
+ Offset_Placeholder
+ Offset_DP_FemalePawn
+ Offset_Placeholder
+
+
+
+
+
+
+ GroupAnimation_DP_Stage2_Branch2
+ 3
+
+
+ 3
+
+
+ 1
+
+ MalePawn_DP_Stage2b
+ FemalePawn_DP_Stage2b
+ MalePawn2_DP_Stage2b
+
+
+
+
+
+
+
+
+ Offset_Placeholder
+ Offset_DP_FemalePawn
+ Offset_Placeholder
+
+
+
+
+
+ GroupAnimation_DP_Stage2_Branch3
+ 3
+
+
+ 3
+
+
+ 1
+
+ MalePawn_DP_Stage2c
+ FemalePawn_DP_Stage2c
+ MalePawn2_DP_Stage2c
+
+
+
+
+
+
+
+
+ Offset_Placeholder
+ Offset_DP_FemalePawn
+ Offset_Placeholder
+
+
+
+
+
+ GroupAnimation_DP_Stage2_Branch4
+ 3
+
+
+ 1
+
+
+ 1
+
+ MalePawn_DP_Stage2a
+ FemalePawn_DP_Stage2a
+ MalePawn2_DP_Stage2a
+
+
+
+
+
+
+ 1
+
+
+ 1
+
+ MalePawn_DP_Stage2d
+ FemalePawn_DP_Stage2d
+ MalePawn2_DP_Stage2d
+
+
+
+
+
+
+
+ 2
+
+
+ 1
+
+ MalePawn_DP_Stage2b
+ FemalePawn_DP_Stage2b
+ MalePawn2_DP_Stage2b
+
+
+
+
+
+
+
+
+ Offset_Placeholder
+ Offset_DP_FemalePawn
+ Offset_Placeholder
+
+
+
+
+
+ GroupAnimation_DP_Stage5_Branch1
+ 3
+
+
+ 1
+
+
+ 1
+
+ MalePawn_DP_Stage5a
+ FemalePawn_DP_Stage5a
+ MalePawn2_DP_Stage5a
+
+
+
+
+
+
+
+
+ Offset_Placeholder
+ Offset_DP_FemalePawn
+ Offset_Placeholder
+
+
+
+
+
+ GroupAnimation_DP_Stage5_Branch2
+ 3
+
+
+ 1
+
+
+ 1
+
+ MalePawn_DP_Stage5b
+ FemalePawn_DP_Stage5b
+ MalePawn2_DP_Stage5b
+
+
+
+
+
+
+
+
+ Offset_Placeholder
+ Offset_DP_FemalePawn
+ Offset_Placeholder
+
+
+
+
+
+ GroupAnimation_DP_Stage5_Branch3
+ 3
+
+
+ 1
+
+
+ 1
+
+ MalePawn_DP_Stage5c
+ FemalePawn_DP_Stage5c
+ MalePawn2_DP_Stage5c
+
+
+
+
+
+
+
+
+ Offset_Placeholder
+ Offset_DP_FemalePawn
+ Offset_Placeholder
+
+
+
+
+
+
+
diff --git a/1.5/Defs/AnimationDefs/DoublePenetration/OffsetDef_DP.xml b/1.5/Defs/AnimationDefs/DoublePenetration/OffsetDef_DP.xml
new file mode 100644
index 0000000..d982e36
--- /dev/null
+++ b/1.5/Defs/AnimationDefs/DoublePenetration/OffsetDef_DP.xml
@@ -0,0 +1,17 @@
+
+
+
+ Offset_DP_FemalePawn
+
+
+
+ Human
+
+
+ Female(0.1, 0, -0.1)
+ Thin(0, 0, -0.15)-19
+
+
+
+
+
diff --git a/1.5/Defs/AnimationDefs/DoublePenetration/Stage1.xml b/1.5/Defs/AnimationDefs/DoublePenetration/Stage1.xml
new file mode 100644
index 0000000..304add6
--- /dev/null
+++ b/1.5/Defs/AnimationDefs/DoublePenetration/Stage1.xml
@@ -0,0 +1,200 @@
+
+
+
+ MalePawn_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
+
+
+ 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
+
+
+
+
+
+
+
+ FemalePawn_DP_Stage1
+ 80
+
+
+ Root
+
+ Rimworld_Animations.AnimationWorker_KeyframesExtended
+
+
+ 0
+ -40
+ true
+ (-0.6, 0, 0.15)
+ West
+
+
+ 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
+
+
+
+
+
+
+
+ MalePawn2_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
+
+
+ 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.5/Defs/AnimationDefs/DoublePenetration/Stage2a.xml b/1.5/Defs/AnimationDefs/DoublePenetration/Stage2a.xml
new file mode 100644
index 0000000..d8e397d
--- /dev/null
+++ b/1.5/Defs/AnimationDefs/DoublePenetration/Stage2a.xml
@@ -0,0 +1,174 @@
+
+
+
+ MalePawn_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
+
+
+ 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
+
+
+
+
+
+
+
+ FemalePawn_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
+
+
+ 40
+ -30
+ true
+ (-0.45, 0, 0.12)
+ West
+
+
+
+
+
+ Head
+
+ Rimworld_Animations.AnimationWorker_KeyframesExtended
+
+
+ 0
+ 0
+ true
+ West
+
+
+
+
+
+
+
+ MalePawn2_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
+
+
+ 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.5/Defs/AnimationDefs/DoublePenetration/Stage2b.xml b/1.5/Defs/AnimationDefs/DoublePenetration/Stage2b.xml
new file mode 100644
index 0000000..2c11ef7
--- /dev/null
+++ b/1.5/Defs/AnimationDefs/DoublePenetration/Stage2b.xml
@@ -0,0 +1,174 @@
+
+
+
+ MalePawn_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
+
+
+ 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
+
+
+
+
+
+
+
+ FemalePawn_DP_Stage2b
+ 40
+
+
+ Root
+
+ Rimworld_Animations.AnimationWorker_KeyframesExtended
+
+
+ 0
+ -30
+ true
+ (-0.45, 0, 0.12)
+ 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
+ South
+
+
+
+
+
+
+
+ MalePawn2_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
+
+
+ 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.5/Defs/AnimationDefs/DoublePenetration/Stage2c.xml b/1.5/Defs/AnimationDefs/DoublePenetration/Stage2c.xml
new file mode 100644
index 0000000..35fa184
--- /dev/null
+++ b/1.5/Defs/AnimationDefs/DoublePenetration/Stage2c.xml
@@ -0,0 +1,188 @@
+
+
+
+ MalePawn_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
+
+
+ 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
+
+
+
+
+
+
+
+ FemalePawn_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
+
+
+ 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
+
+
+
+
+
+
+
+ MalePawn2_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
+
+
+ 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.5/Defs/AnimationDefs/DoublePenetration/Stage2d.xml b/1.5/Defs/AnimationDefs/DoublePenetration/Stage2d.xml
new file mode 100644
index 0000000..59ae660
--- /dev/null
+++ b/1.5/Defs/AnimationDefs/DoublePenetration/Stage2d.xml
@@ -0,0 +1,230 @@
+
+
+
+ MalePawn_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
+
+
+ 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
+
+
+
+
+
+
+
+ FemalePawn_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
+ -35
+ true
+ (-0.48, 0, 0.12)
+ 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
+
+
+
+
+
+
+
+ MalePawn2_DP_Stage2d
+ 40
+
+
+ Root
+
+ Rimworld_Animations.AnimationWorker_KeyframesExtended
+
+
+ 0
+ 20
+ true
+ (0.2, -1, 0.2)
+ West
+
+
+ 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
+
+
+ 15
+ 0
+ false
+ (-0.1, 1, -0.03)
+ North
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.5/Defs/AnimationDefs/DoublePenetration/Stage3.xml b/1.5/Defs/AnimationDefs/DoublePenetration/Stage3.xml
new file mode 100644
index 0000000..3e7cff3
--- /dev/null
+++ b/1.5/Defs/AnimationDefs/DoublePenetration/Stage3.xml
@@ -0,0 +1,186 @@
+
+
+
+ MalePawn_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
+
+
+ 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
+
+
+
+
+
+
+
+ FemalePawn_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
+
+
+ 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
+
+
+
+
+
+
+
+ MalePawn2_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
+
+
+ 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.5/Defs/AnimationDefs/DoublePenetration/Stage4.xml b/1.5/Defs/AnimationDefs/DoublePenetration/Stage4.xml
new file mode 100644
index 0000000..a2e6f77
--- /dev/null
+++ b/1.5/Defs/AnimationDefs/DoublePenetration/Stage4.xml
@@ -0,0 +1,186 @@
+
+
+
+ MalePawn_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
+
+
+ 17
+ -87
+ true
+ (-0.6, -1, -0.37)
+ East
+
+
+
+
+
+ Head
+
+ Rimworld_Animations.AnimationWorker_KeyframesExtended
+
+
+ 0
+ 10
+ true
+ East
+
+
+ 8
+ -10
+ true
+ East
+
+
+ 17
+ 10
+ true
+ East
+
+
+
+
+
+
+
+ FemalePawn_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
+
+
+ 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
+
+
+
+
+
+
+
+ MalePawn2_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
+
+
+ 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.5/Defs/AnimationDefs/DoublePenetration/Stage5_Base.xml b/1.5/Defs/AnimationDefs/DoublePenetration/Stage5_Base.xml
new file mode 100644
index 0000000..2f0f273
--- /dev/null
+++ b/1.5/Defs/AnimationDefs/DoublePenetration/Stage5_Base.xml
@@ -0,0 +1,248 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/1.5/Defs/AnimationDefs/DoublePenetration/Stage5a.xml b/1.5/Defs/AnimationDefs/DoublePenetration/Stage5a.xml
new file mode 100644
index 0000000..d5383bb
--- /dev/null
+++ b/1.5/Defs/AnimationDefs/DoublePenetration/Stage5a.xml
@@ -0,0 +1,283 @@
+
+
+
+ MalePawn_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
+
+
+ 50
+ -90
+ true
+ (-0.6, -1, -0.37)
+ East
+
+
+ 55
+ -95
+ true
+ (-0.6, -1, -0.37)
+ East
+
+
+ 100
+ -90
+ true
+ (-0.6, -1, -0.37)
+ East
+
+
+ 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
+
+
+
+
+
+
+
+ FemalePawn_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
+
+
+ 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
+
+
+ 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
+
+
+
+
+
+
+
+ MalePawn2_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
+
+
+ 70
+ 20
+ true
+ (0.16, -1, 0.2)
+ West
+
+
+ 75
+ 28
+ true
+ (0.16, -1, 0.2)
+ West
+
+
+ 130
+ 20
+ true
+ (0.16, -1, 0.2)
+ West
+
+
+ 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.5/Defs/AnimationDefs/DoublePenetration/Stage5b.xml b/1.5/Defs/AnimationDefs/DoublePenetration/Stage5b.xml
new file mode 100644
index 0000000..43c1cbb
--- /dev/null
+++ b/1.5/Defs/AnimationDefs/DoublePenetration/Stage5b.xml
@@ -0,0 +1,270 @@
+
+
+
+ MalePawn_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
+
+
+ 25
+ -95
+ true
+ (-0.6, -1, -0.37)
+ East
+
+
+ 50
+ -90
+ true
+ (-0.6, -1, -0.37)
+ East
+
+
+ 55
+ -95
+ true
+ (-0.6, -1, -0.37)
+ East
+
+
+ 100
+ -90
+ true
+ (-0.6, -1, -0.37)
+ East
+
+
+ 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
+
+
+
+
+
+
+
+ FemalePawn_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
+
+
+ 60
+ -35
+ true
+ (-0.55, 0, 0.12)
+ West
+
+
+ 100
+ -60
+ true
+ (-0.6, 0, 0)
+ West
+
+
+ 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
+
+
+
+
+
+
+
+ MalePawn2_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
+
+
+ 23
+ 28
+ true
+ (0.16, -1, 0.2)
+ West
+
+
+ 70
+ 20
+ true
+ (0.16, -1, 0.2)
+ West
+
+
+ 75
+ 28
+ true
+ (0.16, -1, 0.2)
+ West
+
+
+ 130
+ 20
+ true
+ (0.16, -1, 0.2)
+ West
+
+
+ 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.5/Defs/AnimationDefs/DoublePenetration/Stage5c.xml b/1.5/Defs/AnimationDefs/DoublePenetration/Stage5c.xml
new file mode 100644
index 0000000..7c0d90e
--- /dev/null
+++ b/1.5/Defs/AnimationDefs/DoublePenetration/Stage5c.xml
@@ -0,0 +1,319 @@
+
+
+
+ MalePawn_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
+
+
+ 25
+ -95
+ true
+ (-0.6, -1, -0.37)
+ East
+
+
+ 50
+ -90
+ true
+ (-0.6, -1, -0.37)
+ East
+
+
+ 55
+ -95
+ true
+ (-0.6, -1, -0.37)
+ East
+
+
+ 100
+ -90
+ true
+ (-0.6, -1, -0.37)
+ East
+
+
+ 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
+
+
+
+
+
+
+
+ FemalePawn_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
+
+
+ 60
+ -35
+ true
+ (-0.5, 0, 0.12)
+ West
+
+
+ 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
+
+
+ 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
+
+
+
+
+
+
+
+ MalePawn2_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
+
+
+ 23
+ 28
+ true
+ (0.16, -1, 0.2)
+ West
+
+
+ 70
+ 20
+ true
+ (0.16, -1, 0.2)
+ West
+
+
+ 75
+ 28
+ true
+ (0.16, -1, 0.2)
+ West
+
+
+ 130
+ 20
+ true
+ (0.16, -1, 0.2)
+ West
+
+
+ 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.5/Defs/AnimationPropDefs/AnimationPropDef_Hand.xml b/1.5/Defs/AnimationPropDefs/AnimationPropDef_Hand.xml
new file mode 100644
index 0000000..b949979
--- /dev/null
+++ b/1.5/Defs/AnimationPropDefs/AnimationPropDef_Hand.xml
@@ -0,0 +1,24 @@
+
+
+
+ RenderNodeTag_Hand
+
+
+
+ AnimationProp_Hand
+
+ Hand
+ Rimworld_Animations.PawnRenderNode_GraphicVariants
+ Rimworld_Animations.PawnRenderNodeWorker_GraphicVariants
+ RenderNodeTag_Hand
+ True
+ Root
+ AnimationProps/Hand/Hand
+
+ Head
+ True
+ Skin
+ 95
+
+
+
\ No newline at end of file
diff --git a/1.5/Source/Animations/GroupAnimations/GroupAnimationContexts/BaseGroupAnimationContext.cs b/1.5/Source/Animations/GroupAnimations/GroupAnimationContexts/BaseGroupAnimationContext.cs
index 747e154..19f475d 100644
--- a/1.5/Source/Animations/GroupAnimations/GroupAnimationContexts/BaseGroupAnimationContext.cs
+++ b/1.5/Source/Animations/GroupAnimations/GroupAnimationContexts/BaseGroupAnimationContext.cs
@@ -11,7 +11,15 @@ namespace Rimworld_Animations
{
public int actorShift = 0;
public int priority = 0;
- public abstract bool CanAnimationBeUsed(List actors);
+ public virtual bool CanAnimationBeUsed(List actors, int numActors)
+ {
+ if (numActors != actors.Count)
+ {
+ return false;
+ }
+
+ return true;
+ }
public virtual int AnimationReorder()
{
return actorShift;
diff --git a/1.5/Source/Animations/GroupAnimations/GroupAnimationContexts/GroupAnimationContext_RJWSex.cs b/1.5/Source/Animations/GroupAnimations/GroupAnimationContexts/GroupAnimationContext_RJWSex.cs
index 62e1928..3914799 100644
--- a/1.5/Source/Animations/GroupAnimations/GroupAnimationContexts/GroupAnimationContext_RJWSex.cs
+++ b/1.5/Source/Animations/GroupAnimations/GroupAnimationContexts/GroupAnimationContext_RJWSex.cs
@@ -15,12 +15,16 @@ namespace Rimworld_Animations
public List interactionDefs;
- public override bool CanAnimationBeUsed(List actors)
+ 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);
- return interactionDefs.Contains(latestSexBaseInitiator.Sexprops.dictionaryKey);
+ if (!interactionDefs.Contains(latestSexBaseInitiator.Sexprops.dictionaryKey)) {
+ return false;
+ }
+
+ return base.CanAnimationBeUsed(actors, numActors);
}
public override string DebugMessage()
diff --git a/1.5/Source/Animations/GroupAnimations/GroupAnimationDef.cs b/1.5/Source/Animations/GroupAnimations/GroupAnimationDef.cs
index 965eb8e..b49f14d 100644
--- a/1.5/Source/Animations/GroupAnimations/GroupAnimationDef.cs
+++ b/1.5/Source/Animations/GroupAnimations/GroupAnimationDef.cs
@@ -28,7 +28,7 @@ namespace Rimworld_Animations
{
foreach (BaseGroupAnimationContext context in contexts)
{
- if (context.CanAnimationBeUsed(actors))
+ if (context.CanAnimationBeUsed(actors, numActors))
{
//find all where context matches actors
return true;
@@ -48,7 +48,7 @@ namespace Rimworld_Animations
foreach (BaseGroupAnimationContext context in contexts)
{
- if (context.CanAnimationBeUsed(actors))
+ if (context.CanAnimationBeUsed(actors, numActors))
{
if (context.AnimationPriority() > priority)
{
diff --git a/1.5/Source/Animations/GroupAnimations/GroupAnimationStages/AnimationStage_Branch.cs b/1.5/Source/Animations/GroupAnimations/GroupAnimationStages/AnimationStage_Branch.cs
index 414879f..3e61f8f 100644
--- a/1.5/Source/Animations/GroupAnimations/GroupAnimationStages/AnimationStage_Branch.cs
+++ b/1.5/Source/Animations/GroupAnimations/GroupAnimationStages/AnimationStage_Branch.cs
@@ -16,11 +16,9 @@ namespace Rimworld_Animations
for (int i = 0; i < loops; i++)
{
- //loop thru the selected groupanimationdef path
- foreach (AnimationStage stage in paths[((seed * 30 + 12 * i) % 59) % paths.Count].animationStages)
- {
- animationDefs.AddRange(stage.GetAnimations(actorNumber, seed));
- }
+ GroupAnimationDef selectedDef = paths[((seed * 341 + 1582 * i) % 15823) % paths.Count];
+
+ animationDefs.AddRange(selectedDef.GetAllAnimationsForActor(actorNumber, seed));
}
diff --git a/1.5/Source/Comps/CompExtendedAnimator.cs b/1.5/Source/Comps/CompExtendedAnimator.cs
index bed2411..b6172c2 100644
--- a/1.5/Source/Comps/CompExtendedAnimator.cs
+++ b/1.5/Source/Comps/CompExtendedAnimator.cs
@@ -155,6 +155,8 @@ namespace Rimworld_Animations {
anchor = null;
offset = null;
pawn.Drawer.renderer.SetAnimation(null);
+
+ pawn.Drawer.renderer.SetAllGraphicsDirty();
}
public void PlayGroupAnimation(List groupAnimation, Vector3? positionOffset, int? rotationOffset)
@@ -162,6 +164,10 @@ namespace Rimworld_Animations {
this.Offset = positionOffset;
this.Rotation = rotationOffset;
animationQueue = groupAnimation;
+
+ //set all graphics dirty; necessary because sometimes rjw doesn't call during threesomes
+ pawn.Drawer.renderer.SetAllGraphicsDirty();
+
PlayNextAnimation();
}
@@ -192,15 +198,14 @@ namespace Rimworld_Animations {
// for all animationpropdefs,
foreach (AnimationPropDef animationProp in DefDatabase.AllDefsListForReading)
{
-
//if animation makes use of prop,
if (AnimationMakesUseOfProp(animationProp))
{
-
PawnRenderNodeProperties props = animationProp.animPropProperties;
if (props.texPath.NullOrEmpty())
{
+
props.texPath = "AnimationProps/MissingTexture/MissingTexture";
}
@@ -274,6 +279,7 @@ namespace Rimworld_Animations {
{
foreach (PawnRenderNodeTagDef propTag in animation.animationParts.Keys)
{
+
// if that proptag is the same as the one for animationProp,
if (propTag == animationProp.animPropProperties.tagDef)
{
@@ -283,7 +289,6 @@ namespace Rimworld_Animations {
}
}
- //for ALL animations (only recaches at start of rjw job),
return false;
diff --git a/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeProperties_GraphicVariants.cs b/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeProperties_GraphicVariants.cs
index 15ac022..bd2213f 100644
--- a/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeProperties_GraphicVariants.cs
+++ b/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeProperties_GraphicVariants.cs
@@ -10,7 +10,7 @@ namespace Rimworld_Animations
public class PawnRenderNodeProperties_GraphicVariants : PawnRenderNodeProperties
{
- public TexPathVariantsDef texPathVariantsDef;
+ public TexPathVariantsDef texPathVariantsDef = null;
public bool absoluteTransform = false;
}
diff --git a/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNode_GraphicVariants.cs b/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNode_GraphicVariants.cs
index 0298c51..3dd665c 100644
--- a/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNode_GraphicVariants.cs
+++ b/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNode_GraphicVariants.cs
@@ -84,7 +84,7 @@ namespace Rimworld_Animations
protected Graphic GenerateMissingTextureGraphic()
{
- return GraphicDatabase.Get("AnimationProps/MissingTexture");
+ return GraphicDatabase.Get("AnimationProps/MissingTexture/MissingTexture");
}
}
}
diff --git a/1.5/Textures/AnimationProps/Hand/Hand_north.png b/1.5/Textures/AnimationProps/Hand/Hand_north.png
new file mode 100644
index 0000000..6c82f67
Binary files /dev/null and b/1.5/Textures/AnimationProps/Hand/Hand_north.png differ
diff --git a/Rimworld-Animations.csproj b/Rimworld-Animations.csproj
index 6410462..3023dc4 100644
--- a/Rimworld-Animations.csproj
+++ b/Rimworld-Animations.csproj
@@ -150,6 +150,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -160,6 +173,7 @@
+
@@ -222,6 +236,7 @@
+