diff --git a/1.1/Assemblies/Rimworld-Animations.dll b/1.1/Assemblies/Rimworld-Animations.dll
index 122c545..9aa60b5 100644
Binary files a/1.1/Assemblies/Rimworld-Animations.dll and b/1.1/Assemblies/Rimworld-Animations.dll differ
diff --git a/Defs/AnimationDefs/Animations_Beast.xml b/Defs/AnimationDefs/Animations_Beast.xml
index e8dc8ad..322f0b6 100644
--- a/Defs/AnimationDefs/Animations_Beast.xml
+++ b/Defs/AnimationDefs/Animations_Beast.xml
@@ -21,6 +21,7 @@
Wolf_Arctic
true
+ true
diff --git a/Defs/AnimationDefs/Animations_Lesbian.xml b/Defs/AnimationDefs/Animations_Lesbian.xml
index 5b891ed..4ca9c9c 100644
--- a/Defs/AnimationDefs/Animations_Lesbian.xml
+++ b/Defs/AnimationDefs/Animations_Lesbian.xml
@@ -13,6 +13,7 @@
Human
true
+ true
Vagina
diff --git a/Defs/AnimationDefs/Animations_Multi.xml b/Defs/AnimationDefs/Animations_Multi.xml
index d483d10..325e36c 100644
--- a/Defs/AnimationDefs/Animations_Multi.xml
+++ b/Defs/AnimationDefs/Animations_Multi.xml
@@ -19,12 +19,14 @@
Human
true
+ true
Human
true
+ true
diff --git a/Defs/AnimationDefs/Animations_vanilla.xml b/Defs/AnimationDefs/Animations_vanilla.xml
index 24f8253..6375282 100644
--- a/Defs/AnimationDefs/Animations_vanilla.xml
+++ b/Defs/AnimationDefs/Animations_vanilla.xml
@@ -22,6 +22,7 @@
Human
true
+ true
@@ -463,12 +464,14 @@
Human
+ true
Human
true
+ true
@@ -852,7 +855,7 @@
ReverseStandAndCarry
-
+
true
Anal
@@ -870,6 +873,7 @@
Human
+ true
true
@@ -1950,6 +1954,574 @@
+
+ Cowgirl
+
+ true
+
+ Anal
+ Vaginal
+
+
+
+
+
+ Human
+
+ true
+ true
+
+
+
+ Human
+
+ true
+
+
+
+
+
+ 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
+
+
+ 33
+ 180
+ 180
+ 0
+ -0.263
+ 2
+ 2
+ 0
+
+
+ 33
+ 180
+ 180
+ 0
+ -0.213
+ 2
+ 2
+ 0.045
+
+
+ 1
+ 180
+ 180
+ 0
+ -0.263
+ 2
+ 2
+ 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.263
+ 2
+ 2
+ 0
+
+
+ 13
+ 180
+ 180
+ 0
+ -0.213
+ 2
+ 2
+ 0.045
+
+
+ 1
+ 180
+ 180
+ 0
+ -0.263
+ 2
+ 2
+ 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
+
+
+ 45
+ Cum
+ 0
+ 0
+ 0
+ 0.554
+ 2
+ 2
+ 0
+
+
+ 40
+ 0
+ 0
+ 0
+ 0.534
+ 2
+ 2
+ 0
+
+
+ 1
+ 0
+ 0
+ 0
+ 0.554
+ 2
+ 2
+ 0
+
+
+
+
+ LayingPawn
+
+
+ 10
+ 180
+ 180
+ 0
+ -0.263
+ 2
+ 2
+ 0
+
+
+ 10
+ 180
+ 180
+ 0
+ -0.213
+ 2
+ 2
+ 0.045
+
+
+ 1
+ 180
+ 180
+ 0
+ -0.263
+ 2
+ 2
+ 0
+
+
+
+ 10
+ 180
+ 180
+ 0
+ -0.263
+ 2
+ 2
+ 0
+
+
+ 10
+ 180
+ 180
+ 0
+ -0.213
+ 2
+ 2
+ 0.045
+
+
+ 1
+ 180
+ 180
+ 0
+ -0.263
+ 2
+ 2
+ 0
+
+
+
+ 10
+ 180
+ 180
+ 0
+ -0.263
+ 2
+ 2
+ 0
+
+
+ 10
+ 180
+ 180
+ 0
+ -0.213
+ 2
+ 2
+ 0.045
+
+
+ 45
+ 180
+ 180
+ 0
+ -0.263
+ 2
+ 2
+ 0
+
+
+ 40
+ 180
+ 180
+ 0
+ -0.263
+ 2
+ 2
+ 0
+
+
+ 1
+ 180
+ 180
+ 0
+ -0.263
+ 2
+ 2
+ 0
+
+
+
+
+
+
+
+
+
diff --git a/Source/Actors/Actor.cs b/Source/Actors/Actor.cs
index 953342f..5ab1736 100644
--- a/Source/Actors/Actor.cs
+++ b/Source/Actors/Actor.cs
@@ -10,7 +10,7 @@ namespace Rimworld_Animations {
public List defNames;
public List requiredGenitals;
public List raceOffsets;
- public bool activeRole = false;
+ public bool initiator = false;
public string gender;
public bool isFucking = false;
public bool isFucked = false;
diff --git a/Source/AnimationUtility.cs b/Source/AnimationUtility.cs
index 1332e11..488fd8b 100644
--- a/Source/AnimationUtility.cs
+++ b/Source/AnimationUtility.cs
@@ -46,10 +46,11 @@ namespace Rimworld_Animations {
if (!x.actors[i].defNames.Contains(localParticipants[i].def.defName)) {
if (rjw.RJWSettings.DevMode) {
- Log.Message(x.defName.ToStringSafe() + " not selected -- " + localParticipants[i].def.defName.ToStringSafe() + " " + localParticipants[i].Name.ToStringSafe() + " is not ");
+ 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) {
- Log.Message(defname + ", ");
+ animInfo += defname + ", ";
}
+ Log.Message(animInfo);
}
return false;
@@ -67,9 +68,10 @@ namespace Rimworld_Animations {
//TESTING ANIMATIONS ONLY REMEMBER TO COMMENT OUT BEFORE PUSH
/*
- if (x.defName != "ReverseStandAndCarry")
+ if (x.defName != "Cowgirl")
return false;
- */
+ */
+
if (x.actors[i].isFucking && !rjw.xxx.can_fuck(localParticipants[i])) {
Log.Message(x.defName.ToStringSafe() + " not selected -- " + localParticipants[i].def.defName.ToStringSafe() + " " + localParticipants[i].Name.ToStringSafe() + " can't fuck");
@@ -83,19 +85,51 @@ namespace Rimworld_Animations {
}
return true;
});
-
List optionsWithSexType = options.ToList().FindAll(x => x.sexTypes.Contains(sexType));
+ List optionsWithSexTypeAndInitiator = optionsWithSexType.FindAll(x => {
+ bool initiatorsAlignWithSexType = true;
+ for (int i = 0; i < x.actors.Count; i++) {
+
+ //if the animation not for initiators, but an initiator is playing it
+
+ if (x.actors[i].initiator && !(localParticipants[i].jobs.curDriver is rjw.JobDriver_SexBaseInitiator)) {
+ initiatorsAlignWithSexType = false;
+ }
+ }
+ return initiatorsAlignWithSexType;
+ });
+ List optionsWithInitiator = options.ToList().FindAll(x => {
+ bool initiatorsAlignWithSexType = true;
+ for (int i = 0; i < x.actors.Count; i++) {
+
+ //if the animation not for initiators, but an initiator is playing it
+
+ if (x.actors[i].initiator && !(localParticipants[i].jobs.curDriver is rjw.JobDriver_SexBaseInitiator)) {
+ initiatorsAlignWithSexType = false;
+ }
+ }
+ return initiatorsAlignWithSexType;
+ });
+
+
+ if (optionsWithSexTypeAndInitiator.Any()) {
+ Log.Message("Selecting animation for rjwSexType " + sexType.ToStringSafe() + " and initiators...");
+ return optionsWithSexType.RandomElement();
+ }
if (optionsWithSexType.Any()) {
Log.Message("Selecting animation for rjwSexType " + sexType.ToStringSafe() + "...");
return optionsWithSexType.RandomElement();
}
+ if(optionsWithInitiator.Any()) {
+ Log.Message("Selecting animation for initiators...");
+ }
+
if (options != null && options.Any()) {
Log.Message("Randomly selecting animation...");
return options.RandomElement();
}
-
else
return null;
}
diff --git a/Source/Patches/rjwPatches/HarmonyPatch_JobDriver_SexBaseInitiator.cs b/Source/Patches/rjwPatches/HarmonyPatch_JobDriver_SexBaseInitiator.cs
index 15611d9..5f19afb 100644
--- a/Source/Patches/rjwPatches/HarmonyPatch_JobDriver_SexBaseInitiator.cs
+++ b/Source/Patches/rjwPatches/HarmonyPatch_JobDriver_SexBaseInitiator.cs
@@ -41,6 +41,8 @@ namespace Rimworld_Animations {
}
else if (__instance is JobDriver_Masturbate_Bed)
bed = (__instance as JobDriver_Masturbate_Bed).Bed;
+ else if (__instance is JobDriver_RapeComfortPawn || __instance is JobDriver_Breeding)
+ bed = (__instance?.Partner?.jobs?.curDriver as JobDriver_Sex)?.pBed;
if ((__instance.Target as Pawn)?.jobs?.curDriver is JobDriver_SexBaseReciever) {