diff --git a/1.5/Assemblies/Rimworld-Animations.dll b/1.5/Assemblies/Rimworld-Animations.dll
index 292a905..3c23703 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/TestAnimation3.xml b/1.5/Defs/AnimationDefs/TestAnimation3.xml
new file mode 100644
index 0000000..b4db1f0
--- /dev/null
+++ b/1.5/Defs/AnimationDefs/TestAnimation3.xml
@@ -0,0 +1,112 @@
+
+
+
+ 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
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.5/Defs/AnimationPropDefs/AnimationPropDef_Knees.xml b/1.5/Defs/AnimationPropDefs/AnimationPropDef_Knees.xml
new file mode 100644
index 0000000..4e60a75
--- /dev/null
+++ b/1.5/Defs/AnimationPropDefs/AnimationPropDef_Knees.xml
@@ -0,0 +1,56 @@
+
+
+
+ RenderNodeTag_Knees
+
+
+
+ AnimationProp_Knees
+
+ Knees
+ Rimworld_Animations.PawnRenderNode_BodyTypeVariants
+ Rimworld_Animations.PawnRenderNodeWorker_BodyTypeVariants
+ RenderNodeTag_Knees
+ False
+ Root
+
+ Head
+ True
+ Skin
+ 95
+
+
+ Female
+ TexPathVariants_Knees
+
+
+
+
+
+
+ RenderNodeTag_Arms
+
+
+
+ AnimationProp_Arms
+
+ Arms
+ Rimworld_Animations.PawnRenderNode_BodyTypeVariants
+ Rimworld_Animations.PawnRenderNodeWorker_BodyTypeVariants
+ RenderNodeTag_Knees
+ False
+ Root
+ True
+ Skin
+
+ Body
+ -1
+
+
+ Female
+ TexPathVariants_Arms
+
+
+
+
+
\ No newline at end of file
diff --git a/1.5/Defs/GroupAnimationDefs/TestGroupAnimation1.xml b/1.5/Defs/GroupAnimationDefs/TestGroupAnimation1.xml
index 6be826f..ea2061e 100644
--- a/1.5/Defs/GroupAnimationDefs/TestGroupAnimation1.xml
+++ b/1.5/Defs/GroupAnimationDefs/TestGroupAnimation1.xml
@@ -10,16 +10,16 @@
3
- TestAnimation1
- TestAnimation2
+ TestAnimation3
+ TestAnimation3
1
- TestAnimation1
- TestAnimation2
+ TestAnimation3
+ TestAnimation3
@@ -49,7 +49,6 @@
Sex_Reverse_Anal
Sex_Reverse_Vaginal
-
diff --git a/1.5/Defs/TexPathVariantsDefs/TexPathVariants_Arms.xml b/1.5/Defs/TexPathVariantsDefs/TexPathVariants_Arms.xml
new file mode 100644
index 0000000..d582b7b
--- /dev/null
+++ b/1.5/Defs/TexPathVariantsDefs/TexPathVariants_Arms.xml
@@ -0,0 +1,10 @@
+
+
+
+ TexPathVariants_Arms
+
+ AnimationProps/Doggystyle/Doggy_Arms
+
+
+
+
\ No newline at end of file
diff --git a/1.5/Defs/TexPathVariantsDefs/TexPathVariants_Knees.xml b/1.5/Defs/TexPathVariantsDefs/TexPathVariants_Knees.xml
new file mode 100644
index 0000000..5f368ee
--- /dev/null
+++ b/1.5/Defs/TexPathVariantsDefs/TexPathVariants_Knees.xml
@@ -0,0 +1,10 @@
+
+
+
+ TexPathVariants_Knees
+
+ AnimationProps/Doggystyle/Doggy_Legs
+
+
+
+
\ No newline at end of file
diff --git a/1.5/Source/Comps/CompExtendedAnimator.cs b/1.5/Source/Comps/CompExtendedAnimator.cs
index a7c6973..46951c6 100644
--- a/1.5/Source/Comps/CompExtendedAnimator.cs
+++ b/1.5/Source/Comps/CompExtendedAnimator.cs
@@ -196,10 +196,6 @@ namespace Rimworld_Animations {
{
PawnRenderNodeProperties props = animationProp.animPropProperties;
- if (props.texPath.NullOrEmpty())
- {
- props.texPath = "AnimationProps/Banana/Banana";
- }
//create new render node
PawnRenderNode animRenderNode = (PawnRenderNode)Activator.CreateInstance(props.nodeClass, new object[] {
diff --git a/1.5/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs b/1.5/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs
index e464028..3ba2def 100644
--- a/1.5/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs
+++ b/1.5/Source/Patches/RJWPatches/JobDrivers/HarmonyPatch_JobDriver_SexBaseInitiator.cs
@@ -82,8 +82,23 @@ namespace Rimworld_Animations {
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
+ 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.5/Source/Patches/RJWPatches/JobDrivers/SexBaseReceivers/HarmonyPatch_JobDriver_SexBaseReceiverRaped.cs b/1.5/Source/Patches/RJWPatches/JobDrivers/SexBaseReceivers/HarmonyPatch_JobDriver_SexBaseReceiverRaped.cs
index e0b115d..703bdcc 100644
--- a/1.5/Source/Patches/RJWPatches/JobDrivers/SexBaseReceivers/HarmonyPatch_JobDriver_SexBaseReceiverRaped.cs
+++ b/1.5/Source/Patches/RJWPatches/JobDrivers/SexBaseReceivers/HarmonyPatch_JobDriver_SexBaseReceiverRaped.cs
@@ -12,6 +12,10 @@ 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
@@ -19,5 +23,7 @@ namespace Rimworld_Animations
AnimationUtility.StopGroupAnimation(__instance.pawn);
});
}
+
+ */
}
}
diff --git a/1.5/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNodeProperties_GraphicBodyTypeVariants.cs b/1.5/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNodeProperties_GraphicBodyTypeVariants.cs
new file mode 100644
index 0000000..bc21421
--- /dev/null
+++ b/1.5/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNodeProperties_GraphicBodyTypeVariants.cs
@@ -0,0 +1,27 @@
+using RimWorld;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Verse;
+
+namespace Rimworld_Animations
+{
+ public class PawnRenderNodeProperties_BodyTypeVariants : PawnRenderNodeProperties_GraphicVariants
+ {
+
+ public List bodyTypeVariantsDef;
+
+ }
+
+ public class TexPathVariants_BodyType
+ {
+
+ public BodyTypeDef bodyType;
+ public TexPathVariantsDef texPathVariantsDef;
+
+ }
+
+
+}
diff --git a/1.5/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNodeWorker_GraphicBodyTypeVariants.cs b/1.5/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNodeWorker_GraphicBodyTypeVariants.cs
new file mode 100644
index 0000000..ad745b8
--- /dev/null
+++ b/1.5/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNodeWorker_GraphicBodyTypeVariants.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Rimworld_Animations
+{
+ public class PawnRenderNodeWorker_BodyTypeVariants : PawnRenderNodeWorker_GraphicVariants
+ {
+ //same functionality as graphicvariants worker
+ //just here for readability
+
+ }
+}
diff --git a/1.5/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNode_GraphicBodyTypeVariants.cs b/1.5/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNode_GraphicBodyTypeVariants.cs
new file mode 100644
index 0000000..6164782
--- /dev/null
+++ b/1.5/Source/PawnRenderNode/GraphicBodyTypeVariants/PawnRenderNode_GraphicBodyTypeVariants.cs
@@ -0,0 +1,58 @@
+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
+ {
+
+ protected new PawnRenderNodeProperties_BodyTypeVariants props;
+
+ public PawnRenderNode_BodyTypeVariants(Pawn pawn, PawnRenderNodeProperties props, PawnRenderTree tree) : base(pawn, props, tree)
+ {
+
+ this.props = (PawnRenderNodeProperties_BodyTypeVariants)props;
+
+ }
+
+ protected override Dictionary GraphicVariantsFor(Pawn pawn)
+ {
+
+ if (props.bodyTypeVariantsDef == null)
+ {
+ Log.ErrorOnce("[Anims] Error: Tried to use BodyTypeVariants node, but bodyTypeVariants weren't given", 211341349);
+ 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
+ return GenerateVariants(pawn, texPathVariant_BodyType.texPathVariantsDef);
+
+ }
+
+ }
+
+ //otherwise just use default
+ return base.GraphicVariantsFor(pawn);
+
+ }
+
+ protected override void EnsureMaterialsInitialized()
+ {
+ variants = GraphicVariantsFor(this.tree.pawn);
+ base.EnsureMaterialsInitialized();
+ }
+
+
+ }
+
+}
diff --git a/1.5/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNode_GraphicHediffVariants.cs b/1.5/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNode_GraphicHediffVariants.cs
index 8d78dca..e73b1cc 100644
--- a/1.5/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNode_GraphicHediffVariants.cs
+++ b/1.5/Source/PawnRenderNode/GraphicHediffVariants/PawnRenderNode_GraphicHediffVariants.cs
@@ -23,6 +23,12 @@ namespace Rimworld_Animations
protected override Dictionary GraphicVariantsFor(Pawn pawn)
{
+ if (props.hediffVariants == null)
+ {
+ Log.ErrorOnce("[Anims] Error: Tried to use GraphicHediffVariants node, but hediffVariants weren't given", 231321349);
+ return null;
+ }
+
//for each different hediff-based texpathvariants,
foreach (TexPathVariants_Hediff texPathVariant_Hediff in props.hediffVariants)
{
diff --git a/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeWorker_GraphicVariants.cs b/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeWorker_GraphicVariants.cs
index da96fe5..9c3cf91 100644
--- a/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeWorker_GraphicVariants.cs
+++ b/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNodeWorker_GraphicVariants.cs
@@ -40,6 +40,7 @@ namespace Rimworld_Animations
&& extendedAnimWorker.TexPathVariantAtTick(node.tree.AnimationTick) != null)
{
Material materialVariant = GetMaterialVariant(nodeWithGraphicVariants, parms, (int)extendedAnimWorker.TexPathVariantAtTick(node.tree.AnimationTick));
+
if (materialVariant != null) {
return materialVariant;
}
@@ -52,11 +53,11 @@ namespace Rimworld_Animations
public virtual Material GetMaterialVariant(PawnRenderNode_GraphicVariants node, PawnDrawParms parms, int variant)
{
- Material material = node.getGraphicVariant(variant).NodeGetMat(parms);
+ Material material = node.getGraphicVariant(variant)?.NodeGetMat(parms);
if (material == null) return null;
- if (material != null && !parms.Portrait && parms.flags.FlagSet(PawnRenderFlags.Invisible))
+ if (!parms.Portrait && parms.flags.FlagSet(PawnRenderFlags.Invisible))
{
material = InvisibilityMatPool.GetInvisibleMat(material);
}
diff --git a/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNode_GraphicVariants.cs b/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNode_GraphicVariants.cs
index 24a74d6..da09317 100644
--- a/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNode_GraphicVariants.cs
+++ b/1.5/Source/PawnRenderNode/GraphicVariants/PawnRenderNode_GraphicVariants.cs
@@ -16,9 +16,8 @@ namespace Rimworld_Animations
public Graphic getGraphicVariant(int variant)
{
- if (!variants.ContainsKey(variant))
+ if (variants == null || !variants.ContainsKey(variant))
{
- Log.ErrorOnce("[Anims] Error: tried to get key from variants that doesn't exist; key = " + variant, 2043428111);
return null;
}
@@ -45,17 +44,21 @@ namespace Rimworld_Animations
protected virtual Dictionary GraphicVariantsFor(Pawn pawn)
{
+ if (props.texPathVariantsDef == null)
+ {
+ return null;
+ }
+
return GenerateVariants(pawn, props.texPathVariantsDef);
}
+ //used by all, including base classes, to create texPathVariants for pawn
protected Dictionary GenerateVariants(Pawn pawn, TexPathVariantsDef texPathVariants)
{
Dictionary variantGraphics = new Dictionary();
- if (texPathVariants == null) return variantGraphics;
-
//for each graphic variant
for (int i = 0; i < texPathVariants.variants.Count; i++)
{
diff --git a/1.5/Textures/AnimationProps/Doggystyle/Doggy_Arms_north.png b/1.5/Textures/AnimationProps/Doggystyle/Doggy_Arms_north.png
new file mode 100644
index 0000000..ecf9622
Binary files /dev/null and b/1.5/Textures/AnimationProps/Doggystyle/Doggy_Arms_north.png differ
diff --git a/1.5/Textures/AnimationProps/Doggystyle/Doggy_Legs_north.png b/1.5/Textures/AnimationProps/Doggystyle/Doggy_Legs_north.png
new file mode 100644
index 0000000..1da02fc
Binary files /dev/null and b/1.5/Textures/AnimationProps/Doggystyle/Doggy_Legs_north.png differ
diff --git a/Languages/ChineseSimplified/Keyed/RJWAnimations-LanguageData.xml b/Languages/ChineseSimplified/Keyed/RJWAnimations-LanguageData.xml
new file mode 100644
index 0000000..01c1efe
--- /dev/null
+++ b/Languages/ChineseSimplified/Keyed/RJWAnimations-LanguageData.xml
@@ -0,0 +1,22 @@
+
+
+
+
+ RJW Animation Settings
+ 启用声音覆盖
+ 控制生殖器旋转
+ 启用高潮颤抖
+ 启用强奸颤动
+ 性爱时启用心形
+ 播放非性行为的动画 (牵手、亲热)
+ 启用动画管理器选项卡
+ 颤抖/颤动强度 (默认为 2):
+ 调试模式
+
+
+ Animation Manager
+ 警告--一般情况下,你不想更改人类偏移值,只想更改外星種族偏移值或动物偏移值
+ 将偏移值复制到剪贴板
+ 将偏移值粘贴到 OffsetDef 中,或在 Discord 中共享
+
+
\ No newline at end of file
diff --git a/Languages/ChineseTraditional/Keyed/RJWAnimations-LanguageData.xml b/Languages/ChineseTraditional/Keyed/RJWAnimations-LanguageData.xml
new file mode 100644
index 0000000..413ee6e
--- /dev/null
+++ b/Languages/ChineseTraditional/Keyed/RJWAnimations-LanguageData.xml
@@ -0,0 +1,22 @@
+
+
+
+
+ RJW Animation Settings
+ 啟用聲音覆蓋
+ 控制生殖器旋轉
+ 啟用高潮顫抖
+ 啟用強姦顫動
+ 性愛時啟用心形
+ 播放非性行為的動畫 (牽手、親熱)
+ 啟用動畫管理器選項卡
+ 顫抖/顫動強度 (預設為 2):
+ 除錯模式
+
+
+ Animation Manager
+ 警告--一般情況下,你不想更改人類偏移值,只想更改外星種族偏移值或動物偏移值
+ 將偏移值複製到剪貼板
+ 將偏移值黏貼到 OffsetDef 中,或在 Discord 中共享
+
+
\ No newline at end of file
diff --git a/Rimworld-Animations.csproj b/Rimworld-Animations.csproj
index a57ed97..70e188e 100644
--- a/Rimworld-Animations.csproj
+++ b/Rimworld-Animations.csproj
@@ -118,6 +118,9 @@
+
+
+
@@ -136,6 +139,8 @@
+
+
@@ -144,6 +149,8 @@
+
+
@@ -188,6 +195,8 @@
+
+