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> <displayName>Rimworld-Animations</displayName>
<downloadUrl>https://gitgud.io/c0ffeeeeeeee/rimworld-animations</downloadUrl> <downloadUrl>https://gitgud.io/c0ffeeeeeeee/rimworld-animations</downloadUrl>
</li> </li>
<li>
<packageId>erdelf.HumanoidAlienRaces</packageId>
<displayName>Humanoid Alien Races</displayName>
<downloadUrl>https://github.com/erdelf/AlienRaces</downloadUrl>
</li>
</modDependencies> </modDependencies>
<loadBefore> <loadBefore>
<li>Dubwise.DubsApparelTweaks</li> <li>Dubwise.DubsApparelTweaks</li>
@ -40,7 +46,7 @@
<description> <description>
A patch for RimWorld Animations and RJW, adding some additional functions and tweaks 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 Here's a brief overview of what's included in this mod
- 12 animations for casual sex - 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"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Manifest> <Manifest>
<version>2.0.0</version> <version>2.0.1</version>
<downloadUri>https://gitgud.io/AbstractConcept/rimworld-animations-patch</downloadUri> <downloadUri>https://gitgud.io/AbstractConcept/rimworld-animations-patch</downloadUri>
</Manifest> </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" ?> <?xml version="1.0" encoding="utf-8" ?>
<Patch> <Patch>
<Operation Class="PatchOperationReplace"> <!-- Moves genitals to the legs -->
<xpath>/Defs/BodyDef/corePart/parts/li[def = "Genitals"]/groups</xpath> <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> <value>
<groups> <groups>
<li>Legs</li> <li>Legs</li>
<li>GenitalsBPG</li> <li>GenitalsBPG</li>
</groups> </groups>
</value> </value>
</match>
</Operation> </Operation>
<Operation Class="PatchOperationReplace"> <!-- Moves anus to the legs -->
<xpath>/Defs/BodyDef/corePart/parts/li[def = "Anus"]/groups</xpath> <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> <value>
<groups> <groups>
<li>Legs</li> <li>Legs</li>
<li>AnusBPG</li> <li>AnusBPG</li>
</groups> </groups>
</value> </value>
</match>
</Operation> </Operation>
</Patch> </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,18 +5,25 @@
<li>OTY_NUDE Unofficial Update</li> <li>OTY_NUDE Unofficial Update</li>
</mods> </mods>
<match Class="PatchOperationSequence"> <match Class="PatchOperationSequence">
<success>Normal</success>
<operations> <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>
<match Class="PatchOperationReplace">
<xpath>Defs/ThingDef/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart="Anus"]/inFrontOfBody</xpath> <xpath>Defs/ThingDef/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart="Anus"]/inFrontOfBody</xpath>
<value> <value>
<inFrontOfBody>false</inFrontOfBody> <inFrontOfBody>false</inFrontOfBody>
</value> </value>
</match>
</li> </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> <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> </li>
</operations> </operations>

View File

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

View File

@ -11,7 +11,7 @@ using Verse;
namespace Rimworld_Animations_Patch 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) 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 // Clear all partners out when sex ends to prevent issues with threesome animations
public static void Postfix(ref JobDriver_SexBaseInitiator __instance) 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) foreach (Pawn participant in (__instance.Partner?.jobs.curDriver as JobDriver_SexBaseReciever).parteners)
{
if (__instance.pawn != participant)
{ participant.jobs.EndCurrentJob(JobCondition.Succeeded, false, true); } { participant.jobs.EndCurrentJob(JobCondition.Succeeded, false, true); }
}
(__instance.Partner?.jobs.curDriver as JobDriver_SexBaseReciever).parteners.Clear();
} }
} }
} }