Change log v 2.0.1
- Fixed issue with a hand animation calling a missing method
- Fixed errored that was triggering at the end of sex
- Dependency on Humanoid Alien Race is now listed and enforced in the mod load screen
- Made XML patching more robust
This commit is contained in:
AbstractConcept 2023-02-06 10:15:30 -06:00
parent ae95e34137
commit 767317773b
15 changed files with 157 additions and 127 deletions

View File

@ -24,6 +24,12 @@
<displayName>Rimworld-Animations</displayName>
<downloadUrl>https://gitgud.io/c0ffeeeeeeee/rimworld-animations</downloadUrl>
</li>
<li>
<packageId>erdelf.HumanoidAlienRaces</packageId>
<displayName>Humanoid Alien Races</displayName>
<downloadUrl>https://github.com/erdelf/AlienRaces</downloadUrl>
</li>
</modDependencies>
<loadBefore>
<li>Dubwise.DubsApparelTweaks</li>
@ -40,7 +46,7 @@
<description>
A patch for RimWorld Animations and RJW, adding some additional functions and tweaks
This mod requires both RimWorld Animations and RJW to function - RimNudeWorld isn't required, but it is recommended
This mod requires RimWorld Animations, RJW and Humanoid Alien Races to function - RimNudeWorld isn't required, but it is recommended
Here's a brief overview of what's included in this mod
- 12 animations for casual sex

View File

@ -1,2 +0,0 @@
Change log v 2.0.0
- Initial re-release (for RimWorld 1.4)

View File

@ -0,0 +1,8 @@
Change log v 2.0.1
- Fixed issue with a hand animation calling a missing method
- Fixed errored that was triggering at the end of sex
- Dependency on Humanoid Alien Race is now listed and enforced in the mod load screen
- Made XML patching more robust
Change log v 2.0.0
- Initial re-release (for RimWorld 1.4)

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Manifest>
<version>2.0.0</version>
<version>2.0.1</version>
<downloadUri>https://gitgud.io/AbstractConcept/rimworld-animations-patch</downloadUri>
</Manifest>

View File

@ -1,77 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
<Operation Class="PatchOperationSequence">
<success>Normal</success>
<operations>
<li Class="PatchOperationAdd">
<success>Always</success>
<xpath>Defs/ThingDef[race][not(comps)]</xpath>
<value>
<comps />
</value>
</li>
<li Class="PatchOperationAdd">
<success>Always</success>
<xpath>Defs/AlienRace.ThingDef_AlienRace[not(comps)]</xpath>
<value>
<comps />
</value>
</li>
<li Class="PatchOperationAdd">
<xpath>Defs/ThingDef[@Name="BasePawn"]/comps</xpath>
<value>
<li Class="Rimworld_Animations_Patch.CompProperties_PawnSexData" />
</value>
</li>
<li Class="PatchOperationAdd">
<xpath>Defs/AlienRace.ThingDef_AlienRace/comps</xpath>
<value>
<li Class="Rimworld_Animations_Patch.CompProperties_PawnSexData" />
</value>
</li>
<li Class="PatchOperationConditional">
<xpath>/Defs/ThingDef[thingClass="Apparel"]/comps</xpath>
<match Class="PatchOperationAdd">
<xpath>Defs/ThingDef[thingClass="Apparel"]/comps</xpath>
<value>
<li Class="Rimworld_Animations_Patch.CompProperties_ApparelVisibility">
<compClass>Rimworld_Animations_Patch.CompApparelVisibility</compClass>
</li>
</value>
</match>
<nomatch Class="PatchOperationAdd">
<xpath>/Defs/ThingDef[thingClass="Apparel"]</xpath>
<value>
<comps>
<li Class="Rimworld_Animations_Patch.CompProperties_ApparelVisibility">
<compClass>Rimworld_Animations_Patch.CompApparelVisibility</compClass>
</li>
</comps>
</value>
</nomatch>
</li>
<!--<li Class="PatchOperationConditional">
<xpath>/Defs/ThingDef[thingClass="Apparel"]/apparel/bodyPartGroups/Torso</xpath>
<match Class="PatchOperationInsert">
<xpath>/Defs/ThingDef[thingClass="Apparel"]/apparel/bodyPartGroups/Torso</xpath>
<value>
<li>ChestBPG</li>
</value>
</match>
</li>
<li Class="PatchOperationInsert">
<xpath>/Defs/ThingDef[thingClass="Apparel"]/apparel/bodyPartGroups/Legs</xpath>
<value>
<li>GenitalsBPG</li>
</value>
</li>-->
</operations>
</Operation>
</Patch>

View File

@ -1,24 +1,32 @@
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
<Operation Class="PatchOperationReplace">
<xpath>/Defs/BodyDef/corePart/parts/li[def = "Genitals"]/groups</xpath>
<value>
<groups>
<li>Legs</li>
<li>GenitalsBPG</li>
</groups>
</value>
<!-- Moves genitals to the legs -->
<Operation Class="PatchOperationConditional">
<xpath>Defs/BodyDef/corePart/parts/li[def = "Genitals"]/groups</xpath>
<match Class="PatchOperationReplace">
<xpath>Defs/BodyDef/corePart/parts/li[def = "Genitals"]/groups</xpath>
<value>
<groups>
<li>Legs</li>
<li>GenitalsBPG</li>
</groups>
</value>
</match>
</Operation>
<Operation Class="PatchOperationReplace">
<xpath>/Defs/BodyDef/corePart/parts/li[def = "Anus"]/groups</xpath>
<value>
<groups>
<li>Legs</li>
<li>AnusBPG</li>
</groups>
</value>
<!-- Moves anus to the legs -->
<Operation Class="PatchOperationConditional">
<xpath>Defs/BodyDef/corePart/parts/li[def = "Anus"]/groups</xpath>
<match Class="PatchOperationReplace">
<xpath>Defs/BodyDef/corePart/parts/li[def = "Anus"]/groups</xpath>
<value>
<groups>
<li>Legs</li>
<li>AnusBPG</li>
</groups>
</value>
</match>
</Operation>
</Patch>

View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
<Operation Class="PatchOperationConditional">
<xpath>Defs/ThingDef[@Name="BasePawn"]/comps</xpath>
<match Class="PatchOperationAdd">
<xpath>Defs/ThingDef[@Name="BasePawn"]/comps</xpath>
<value>
<li Class="Rimworld_Animations_Patch.CompProperties_PawnSexData" />
</value>
</match>
<nomatch Class="PatchOperationAdd">
<xpath>Defs/ThingDef[@Name="BasePawn"]</xpath>
<value>
<comps>
<li Class="Rimworld_Animations_Patch.CompProperties_PawnSexData" />
</comps>
</value>
</nomatch>
</Operation>
<Operation Class="PatchOperationConditional">
<xpath>Defs/AlienRace.ThingDef_AlienRace</xpath>
<match Class="PatchOperationConditional">
<xpath>Defs/AlienRace.ThingDef_AlienRace/comps</xpath>
<match Class="PatchOperationAdd">
<xpath>Defs/AlienRace.ThingDef_AlienRace/comps</xpath>
<value>
<li Class="Rimworld_Animations_Patch.CompProperties_PawnSexData" />
</value>
</match>
<nomatch Class="PatchOperationAdd">
<xpath>Defs/AlienRace.ThingDef_AlienRace</xpath>
<value>
<comps>
<li Class="Rimworld_Animations_Patch.CompProperties_PawnSexData" />
</comps>
</value>
</nomatch>
</match>
</Operation>
<Operation Class="PatchOperationConditional">
<xpath>/Defs/ThingDef[thingClass="Apparel"]/comps</xpath>
<match Class="PatchOperationAdd">
<xpath>Defs/ThingDef[thingClass="Apparel"]/comps</xpath>
<value>
<li Class="Rimworld_Animations_Patch.CompProperties_ApparelVisibility">
<compClass>Rimworld_Animations_Patch.CompApparelVisibility</compClass>
</li>
</value>
</match>
<nomatch Class="PatchOperationAdd">
<xpath>/Defs/ThingDef[thingClass="Apparel"]</xpath>
<value>
<comps>
<li Class="Rimworld_Animations_Patch.CompProperties_ApparelVisibility">
<compClass>Rimworld_Animations_Patch.CompApparelVisibility</compClass>
</li>
</comps>
</value>
</nomatch>
</Operation>
</Patch>

View File

@ -5,20 +5,27 @@
<li>OTY_NUDE Unofficial Update</li>
</mods>
<match Class="PatchOperationSequence">
<success>Normal</success>
<operations>
<li Class="PatchOperationReplace">
<!-- Anus should be behind the pawn -->
<li Class="PatchOperationConditional">
<xpath>Defs/ThingDef/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart="Anus"]/inFrontOfBody</xpath>
<value>
<inFrontOfBody>false</inFrontOfBody>
</value>
<match Class="PatchOperationReplace">
<xpath>Defs/ThingDef/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart="Anus"]/inFrontOfBody</xpath>
<value>
<inFrontOfBody>false</inFrontOfBody>
</value>
</match>
</li>
<li Class="PatchOperationRemove">
<!-- Hiding these bodyparts is now handled by code -->
<li Class="PatchOperationConditional">
<xpath>Defs/ThingDef/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart="Anus"]/hiddenUnderApparelFor</xpath>
<match Class="PatchOperationRemove">
<xpath>Defs/ThingDef/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart="Anus"]/hiddenUnderApparelFor</xpath>
</match>
</li>
</operations>
</match>
</Operation>

View File

@ -5,38 +5,52 @@
<li>RimNudeWorld</li>
</mods>
<match Class="PatchOperationSequence">
<success>Normal</success>
<operations>
<!-- Hiding these bodyparts is now handled by code -->
<li Class="PatchOperationRemove">
<li Class="PatchOperationConditional">
<xpath>Defs/ThingDef/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart="Genitals"]/hiddenUnderApparelFor</xpath>
<match Class="PatchOperationRemove">
<xpath>Defs/ThingDef/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart="Genitals"]/hiddenUnderApparelFor</xpath>
</match>
</li>
<li Class="PatchOperationRemove">
<li Class="PatchOperationConditional">
<xpath>Defs/ThingDef/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart="Chest"]/hiddenUnderApparelFor</xpath>
<match Class="PatchOperationRemove">
<xpath>Defs/ThingDef/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart="Chest"]/hiddenUnderApparelFor</xpath>
</match>
</li>
<!-- Changes the layering of belly graphics so they are rendered first -->
<li Class="PatchOperationReplace">
<li Class="PatchOperationConditional">
<xpath>Defs/ThingDef/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[hediffGraphics/RJW_pregnancy]/offsets/south/layerOffset</xpath>
<value>
<layerOffset>-0.291</layerOffset>
</value>
<match Class="PatchOperationReplace">
<xpath>Defs/ThingDef/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[hediffGraphics/RJW_pregnancy]/offsets/south/layerOffset</xpath>
<value>
<layerOffset>-0.291</layerOffset>
</value>
</match>
</li>
<li Class="PatchOperationReplace">
<li Class="PatchOperationConditional">
<xpath>Defs/ThingDef/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[hediffGraphics/RJW_pregnancy]/offsets/north/layerOffset</xpath>
<value>
<layerOffset>-0.294</layerOffset>
</value>
<match Class="PatchOperationReplace">
<xpath>Defs/ThingDef/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[hediffGraphics/RJW_pregnancy]/offsets/north/layerOffset</xpath>
<value>
<layerOffset>-0.294</layerOffset>
</value>
</match>
</li>
<li Class="PatchOperationReplace">
<li Class="PatchOperationConditional">
<xpath>Defs/ThingDef/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[hediffGraphics/RJW_pregnancy]/offsets/east/layerOffset</xpath>
<value>
<layerOffset>-0.291</layerOffset>
</value>
<match Class="PatchOperationReplace">
<xpath>Defs/ThingDef/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[hediffGraphics/RJW_pregnancy]/offsets/north/layerOffset</xpath>
<value>
<layerOffset>-0.291</layerOffset>
</value>
</match>
</li>
</operations>

View File

@ -11,7 +11,7 @@ using Verse;
namespace Rimworld_Animations_Patch
{
public class Motion_StrokeGenitalsUpAndDown_FacingNS : HandMotion
public class StrokeGenitalsUpAndDown_FacingNS : HandMotion
{
public override Vector3 GetHandPosition(Pawn pawn, HandAnimationData handAnimationData, float baseAngle)
{

View File

@ -320,12 +320,13 @@ namespace Rimworld_Animations_Patch
// Clear all partners out when sex ends to prevent issues with threesome animations
public static void Postfix(ref JobDriver_SexBaseInitiator __instance)
{
if (__instance.Partner != null && __instance?.Partner?.jobs?.curDriver != null && __instance.Partner.Dead == false && __instance.Partner?.jobs.curDriver is JobDriver_SexBaseReciever)
if (__instance.Partner != null &&__instance.Partner.Dead == false && __instance.Partner?.jobs?.curDriver != null && __instance.Partner?.jobs?.curDriver is JobDriver_SexBaseReciever)
{
foreach (Pawn participant in (__instance.Partner?.jobs.curDriver as JobDriver_SexBaseReciever).parteners)
{ participant.jobs.EndCurrentJob(JobCondition.Succeeded, false, true); }
(__instance.Partner?.jobs.curDriver as JobDriver_SexBaseReciever).parteners.Clear();
{
if (__instance.pawn != participant)
{ participant.jobs.EndCurrentJob(JobCondition.Succeeded, false, true); }
}
}
}
}