mirror of
https://gitgud.io/AbstractConcept/rimworld-animations-patch.git
synced 2024-08-15 00:43:27 +00:00
v 1.2.4
This commit is contained in:
parent
d18d422a94
commit
fcf187c7dd
22 changed files with 184 additions and 41 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -27,6 +27,7 @@
|
||||||
</modDependencies>
|
</modDependencies>
|
||||||
<loadBefore>
|
<loadBefore>
|
||||||
<li>Dubwise.DubsApparelTweaks</li>
|
<li>Dubwise.DubsApparelTweaks</li>
|
||||||
|
<li>babies.and.children.continued.13</li>
|
||||||
</loadBefore>
|
</loadBefore>
|
||||||
<loadAfter>
|
<loadAfter>
|
||||||
<li>UnlimitedHugs.HugsLib</li>
|
<li>UnlimitedHugs.HugsLib</li>
|
||||||
|
@ -34,8 +35,7 @@
|
||||||
<li>rim.job.world</li>
|
<li>rim.job.world</li>
|
||||||
<li>c0ffee.rimworld.animations</li>
|
<li>c0ffee.rimworld.animations</li>
|
||||||
<li>shauaputa.rimnudeworld</li>
|
<li>shauaputa.rimnudeworld</li>
|
||||||
<li>OTYOTY.NudePatchForRimNudeWorld.UnofficialUpdate</li>
|
<li>OTYOTY.NudePatchForRimNudeWorld.UnofficialUpdate</li>
|
||||||
<li>babies.and.children.continued.13</li>
|
|
||||||
</loadAfter>
|
</loadAfter>
|
||||||
<description>
|
<description>
|
||||||
This started as a patch for RimWorld-Animation, but has since grown to patch RJW and RimNudeWorld as well
|
This started as a patch for RimWorld-Animation, but has since grown to patch RJW and RimNudeWorld as well
|
||||||
|
|
|
@ -1,6 +1,12 @@
|
||||||
Change lob v 1.2.3
|
Change log v 1.2.4
|
||||||
|
- Fix: Fixed an issue with body addons and portraits while pawns are sleeping
|
||||||
|
- Fix: Fixed an error which occurred when the RJW events mod was not installed
|
||||||
|
- Change: Added additional support for the Babies for Children mod. This means that you will need to place BnC below the patch in order for it to work correctly. It also means you can run BnC and Dubs apparel tweaks together now if you wish
|
||||||
|
|
||||||
|
Change log v 1.2.3
|
||||||
- Fix: Fixed a bug which would cause body parts to vanish while a pawn is in a biosculpter pod
|
- Fix: Fixed a bug which would cause body parts to vanish while a pawn is in a biosculpter pod
|
||||||
- Fix: Fixed a bug which would cause body parts to show while sleeping in a bed
|
- Fix: Fixed a bug which would cause body parts to show while sleeping in a bed
|
||||||
|
- Fix: Fixed a bug which where body parts would not be hidden after sex was finished
|
||||||
- Fix: Added additional safeguards to help prevent rare errors when equipping certain apparel and when closing the settings menu while in game
|
- Fix: Added additional safeguards to help prevent rare errors when equipping certain apparel and when closing the settings menu while in game
|
||||||
|
|
||||||
Change log v 1.2.2
|
Change log v 1.2.2
|
Binary file not shown.
|
@ -8,10 +8,11 @@
|
||||||
<OutputType>Library</OutputType>
|
<OutputType>Library</OutputType>
|
||||||
<RootNamespace>Rimworld_Animations_Patch</RootNamespace>
|
<RootNamespace>Rimworld_Animations_Patch</RootNamespace>
|
||||||
<AssemblyName>Rimworld-Animations-Patch</AssemblyName>
|
<AssemblyName>Rimworld-Animations-Patch</AssemblyName>
|
||||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
<Deterministic>true</Deterministic>
|
<Deterministic>true</Deterministic>
|
||||||
|
<TargetFrameworkProfile />
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
@ -48,6 +49,10 @@
|
||||||
<HintPath>..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll</HintPath>
|
<HintPath>..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll</HintPath>
|
||||||
<Private>False</Private>
|
<Private>False</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="BabiesAndChildren">
|
||||||
|
<HintPath>..\..\..\..\..\workshop\content\294100\2559574784\1.3\Assemblies\BabiesAndChildren.dll</HintPath>
|
||||||
|
<Private>False</Private>
|
||||||
|
</Reference>
|
||||||
<Reference Include="BadHygiene">
|
<Reference Include="BadHygiene">
|
||||||
<HintPath>..\..\..\..\..\workshop\content\294100\836308268\1.3\Assemblies\BadHygiene.dll</HintPath>
|
<HintPath>..\..\..\..\..\workshop\content\294100\836308268\1.3\Assemblies\BadHygiene.dll</HintPath>
|
||||||
<Private>False</Private>
|
<Private>False</Private>
|
||||||
|
@ -76,6 +81,7 @@
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="RJW-Events">
|
<Reference Include="RJW-Events">
|
||||||
<HintPath>..\..\rjw-events-master\1.3\Assemblies\RJW-Events.dll</HintPath>
|
<HintPath>..\..\rjw-events-master\1.3\Assemblies\RJW-Events.dll</HintPath>
|
||||||
|
<Private>False</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="RJW-ToysAndMasturbation">
|
<Reference Include="RJW-ToysAndMasturbation">
|
||||||
<HintPath>..\..\rjw-toys-and-masturbation-master\Assemblies\RJW-ToysAndMasturbation.dll</HintPath>
|
<HintPath>..\..\rjw-toys-and-masturbation-master\Assemblies\RJW-ToysAndMasturbation.dll</HintPath>
|
||||||
|
@ -117,9 +123,11 @@
|
||||||
<Compile Include="Scripts\Defs\RimNudeData.cs" />
|
<Compile Include="Scripts\Defs\RimNudeData.cs" />
|
||||||
<Compile Include="Scripts\Enums.cs" />
|
<Compile Include="Scripts\Enums.cs" />
|
||||||
<Compile Include="Scripts\Patches\HarmonyPatch_ApparelGraphicRecordGetter.cs" />
|
<Compile Include="Scripts\Patches\HarmonyPatch_ApparelGraphicRecordGetter.cs" />
|
||||||
|
<Compile Include="Scripts\Patches\HarmonyPatch_BabiesAndChildren.cs" />
|
||||||
<Compile Include="Scripts\Patches\HarmonyPatch_Pawn_ApparelTracker.cs" />
|
<Compile Include="Scripts\Patches\HarmonyPatch_Pawn_ApparelTracker.cs" />
|
||||||
<Compile Include="Scripts\Patches\HarmonyPatch_DrawGUIOverlay.cs" />
|
<Compile Include="Scripts\Patches\HarmonyPatch_DrawGUIOverlay.cs" />
|
||||||
<Compile Include="Scripts\Patches\HarmonyPatch_JobDriver.cs" />
|
<Compile Include="Scripts\Patches\HarmonyPatch_JobDriver.cs" />
|
||||||
|
<Compile Include="Scripts\Patches\HarmonyPatch_RJWEvents.cs" />
|
||||||
<Compile Include="Scripts\Patches\HarmonyPatch_ThoughtWorkers.cs" />
|
<Compile Include="Scripts\Patches\HarmonyPatch_ThoughtWorkers.cs" />
|
||||||
<Compile Include="Scripts\Settings\ApparelSettings.cs" />
|
<Compile Include="Scripts\Settings\ApparelSettings.cs" />
|
||||||
<Compile Include="Scripts\ThoughtWorkers\ThoughtWorker_ExposedUnderwear.cs" />
|
<Compile Include="Scripts\ThoughtWorkers\ThoughtWorker_ExposedUnderwear.cs" />
|
||||||
|
|
|
@ -30,10 +30,10 @@ namespace Rimworld_Animations_Patch
|
||||||
|
|
||||||
if (isPortrait)
|
if (isPortrait)
|
||||||
{ renderFlags |= PawnRenderFlags.Portrait; }
|
{ renderFlags |= PawnRenderFlags.Portrait; }
|
||||||
|
|
||||||
bodyPartRecord = pawn?.def?.race?.body?.AllParts?.FirstOrDefault(x => x.def.defName == bodyAddon?.bodyPart || x.customLabel == bodyAddon?.bodyPart);
|
bodyPartRecord = pawn.def?.race?.body?.AllParts?.FirstOrDefault(x => x.def.defName == bodyAddon?.bodyPart || x.customLabel == bodyAddon?.bodyPart);
|
||||||
alignsWithHead = bodyAddon.alignWithHead || (bodyPartRecord != null && bodyPartRecord.IsInGroup(BodyPartGroupDefOf.FullHead));
|
alignsWithHead = bodyAddon.alignWithHead || (bodyPartRecord != null && bodyPartRecord.IsInGroup(BodyPartGroupDefOf.FullHead));
|
||||||
|
|
||||||
GenerateOffsets();
|
GenerateOffsets();
|
||||||
UpdateVisibility();
|
UpdateVisibility();
|
||||||
}
|
}
|
||||||
|
@ -115,7 +115,10 @@ namespace Rimworld_Animations_Patch
|
||||||
{
|
{
|
||||||
if (pawn == null || bodyAddon == null) return false;
|
if (pawn == null || bodyAddon == null) return false;
|
||||||
|
|
||||||
if (pawn.CurrentBed()?.def.building.bed_showSleeperBody == false && bodyAddon.drawnInBed == false)
|
if (renderFlags.FlagSet(PawnRenderFlags.Portrait) == false && pawn.CurrentBed()?.def.building.bed_showSleeperBody == false && bodyAddon.drawnInBed == false)
|
||||||
|
{ return false; }
|
||||||
|
|
||||||
|
if (renderFlags.FlagSet(PawnRenderFlags.Portrait) == false && (pawn.GetPosture() == PawnPosture.LayingOnGroundNormal || pawn.GetPosture() == PawnPosture.LayingOnGroundFaceUp) && bodyAddon.drawnOnGround == false)
|
||||||
{ return false; }
|
{ return false; }
|
||||||
|
|
||||||
if (bodyAddon.backstoryRequirement.NullOrEmpty() == false && pawn.story?.AllBackstories?.Any((Backstory x) => x.identifier == bodyAddon.backstoryRequirement) == false)
|
if (bodyAddon.backstoryRequirement.NullOrEmpty() == false && pawn.story?.AllBackstories?.Any((Backstory x) => x.identifier == bodyAddon.backstoryRequirement) == false)
|
||||||
|
@ -130,26 +133,25 @@ namespace Rimworld_Animations_Patch
|
||||||
if (bodyAddon.bodyTypeRequirement.NullOrEmpty() == false && pawn.story?.bodyType.ToString() != bodyAddon.bodyTypeRequirement)
|
if (bodyAddon.bodyTypeRequirement.NullOrEmpty() == false && pawn.story?.bodyType.ToString() != bodyAddon.bodyTypeRequirement)
|
||||||
{ return false; }
|
{ return false; }
|
||||||
|
|
||||||
if ((pawn.GetPosture() == PawnPosture.LayingOnGroundNormal || pawn.GetPosture() == PawnPosture.LayingOnGroundFaceUp) && bodyAddon.drawnOnGround == false)
|
|
||||||
{ return false; }
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateVisibility()
|
public void UpdateVisibility()
|
||||||
{
|
{
|
||||||
if (pawn == null || bodyAddon == null) return;
|
if (pawn == null || bodyAddon == null || bodyPartRecord == null) return;
|
||||||
|
|
||||||
canDraw = true;
|
canDraw = true;
|
||||||
|
|
||||||
if (pawn.health?.hediffSet?.GetNotMissingParts()?.Contains(bodyPartRecord) == false)
|
if (pawn.health?.hediffSet?.GetNotMissingParts()?.Contains(bodyPartRecord) == false)
|
||||||
{ bodyPartMissing = true; return; }
|
{ bodyPartMissing = true; return; }
|
||||||
|
|
||||||
|
if (pawn?.apparel?.WornApparel == null || pawn.apparel.WornApparel.NullOrEmpty())
|
||||||
|
{ return; }
|
||||||
|
|
||||||
foreach (Apparel apparel in pawn.apparel.WornApparel)
|
foreach (Apparel apparel in pawn.apparel.WornApparel)
|
||||||
{
|
{
|
||||||
CompApparelVisibility comp = apparel?.TryGetComp<CompApparelVisibility>();
|
CompApparelVisibility comp = apparel?.TryGetComp<CompApparelVisibility>();
|
||||||
if (comp == null) continue;
|
if (comp == null) continue;
|
||||||
|
|
||||||
LoadRimNudeData(comp);
|
LoadRimNudeData(comp);
|
||||||
|
|
||||||
if (comp.isBeingWorn == false) continue;
|
if (comp.isBeingWorn == false) continue;
|
||||||
|
|
49
Source/Scripts/Patches/HarmonyPatch_BabiesAndChildren.cs
Normal file
49
Source/Scripts/Patches/HarmonyPatch_BabiesAndChildren.cs
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Verse;
|
||||||
|
using HarmonyLib;
|
||||||
|
using BabiesAndChildren;
|
||||||
|
using BabiesAndChildren.api;
|
||||||
|
|
||||||
|
namespace Rimworld_Animations_Patch
|
||||||
|
{
|
||||||
|
[StaticConstructorOnStartup]
|
||||||
|
public static class HarmonyPatch_BabiesAndChildren
|
||||||
|
{
|
||||||
|
static HarmonyPatch_BabiesAndChildren()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
((Action)(() =>
|
||||||
|
{
|
||||||
|
if (LoadedModManager.RunningModsListForReading.Any(x => x.PackageIdPlayerFacing == "babies.and.children.continued.13"))
|
||||||
|
{
|
||||||
|
(new Harmony("Rimworld_Animations_Patch")).Patch(AccessTools.Method(typeof(AnimationPatchUtility), "ShouldNotDrawAddonsForPawn"),
|
||||||
|
prefix: new HarmonyMethod(AccessTools.Method(typeof(HarmonyPatch_BabiesAndChildren), "Prefix_ShouldNotDrawAddonsForPawn")));
|
||||||
|
(new Harmony("Rimworld_Animations_Patch")).Patch(AccessTools.Method(typeof(AnimationPatchUtility), "GetBodySize"),
|
||||||
|
prefix: new HarmonyMethod(AccessTools.Method(typeof(HarmonyPatch_BabiesAndChildren), "Prefix_GetBodySize")));
|
||||||
|
}
|
||||||
|
}))();
|
||||||
|
}
|
||||||
|
|
||||||
|
catch (TypeLoadException ex) { }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool Prefix_ShouldNotDrawAddonsForPawn(ref bool __result, Pawn pawn)
|
||||||
|
{
|
||||||
|
__result = AgeStages.IsYoungerThan(pawn, AgeStages.Child, false);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool Prefix_GetBodySize(ref float __result, Pawn pawn)
|
||||||
|
{
|
||||||
|
__result = pawn.ShouldBeScaled() ? ChildrenUtility.GetBodySize(pawn) : 1f;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -12,7 +12,7 @@ using rjw;
|
||||||
|
|
||||||
namespace Rimworld_Animations_Patch
|
namespace Rimworld_Animations_Patch
|
||||||
{
|
{
|
||||||
[StaticConstructorOnStartup]
|
/*[StaticConstructorOnStartup]
|
||||||
[HarmonyPatch(typeof(PawnRenderer), "RenderPawnInternal", new Type[]
|
[HarmonyPatch(typeof(PawnRenderer), "RenderPawnInternal", new Type[]
|
||||||
{
|
{
|
||||||
typeof(Vector3),
|
typeof(Vector3),
|
||||||
|
@ -67,7 +67,7 @@ namespace Rimworld_Animations_Patch
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
|
|
||||||
[StaticConstructorOnStartup]
|
[StaticConstructorOnStartup]
|
||||||
[HarmonyPatch(typeof(PawnGraphicSet), "ResolveAllGraphics")]
|
[HarmonyPatch(typeof(PawnGraphicSet), "ResolveAllGraphics")]
|
||||||
|
|
|
@ -38,6 +38,4 @@ namespace Rimworld_Animations_Patch
|
||||||
__instance?.pawn?.TryGetComp<CompPawnSexData>()?.UpdateBodyAddonVisibility();
|
__instance?.pawn?.TryGetComp<CompPawnSexData>()?.UpdateBodyAddonVisibility();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
44
Source/Scripts/Patches/HarmonyPatch_RJWEvents.cs
Normal file
44
Source/Scripts/Patches/HarmonyPatch_RJWEvents.cs
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Verse;
|
||||||
|
using HarmonyLib;
|
||||||
|
using RJW_Events;
|
||||||
|
|
||||||
|
namespace Rimworld_Animations_Patch
|
||||||
|
{
|
||||||
|
[StaticConstructorOnStartup]
|
||||||
|
public static class HarmonyPatch_RJWEvents
|
||||||
|
{
|
||||||
|
static HarmonyPatch_RJWEvents()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
((Action)(() =>
|
||||||
|
{
|
||||||
|
if (LoadedModManager.RunningModsListForReading.Any(x => x.PackageIdPlayerFacing == "c0ffee.rjw.events"))
|
||||||
|
{
|
||||||
|
(new Harmony("Rimworld_Animations_Patch")).Patch(AccessTools.Method(typeof(ThinkNode_ConditionalNude), "Satisfied"),
|
||||||
|
prefix: new HarmonyMethod(AccessTools.Method(typeof(HarmonyPatch_RJWEvents), "Postfix_ThinkNode_ConditionalNude_Satisfied")));
|
||||||
|
}
|
||||||
|
}))();
|
||||||
|
}
|
||||||
|
|
||||||
|
catch (TypeLoadException ex) { }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool Postfix_ThinkNode_ConditionalNude_Satisfied(ref bool __result, Pawn pawn)
|
||||||
|
{
|
||||||
|
if (__result == false && pawn?.apparel?.WornApparel != null)
|
||||||
|
{
|
||||||
|
// If 'isBeingWorn' has a value, the apparel has already been checked if it should be discarded
|
||||||
|
if (pawn.apparel.WornApparel.Any(x => x.TryGetComp<CompApparelVisibility>() != null && x.TryGetComp<CompApparelVisibility>().isBeingWorn.HasValue))
|
||||||
|
{ __result = true; }
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -95,7 +95,6 @@ namespace Rimworld_Animations_Patch
|
||||||
DebugMode.Message("Running animation: " + anim.defName);
|
DebugMode.Message("Running animation: " + anim.defName);
|
||||||
|
|
||||||
List<Pawn> pawnsToAnimate = pawn.GetAllSexParticipants();
|
List<Pawn> pawnsToAnimate = pawn.GetAllSexParticipants();
|
||||||
Pawn Target = pawn.GetSexReceiver();
|
|
||||||
|
|
||||||
foreach (Pawn participant in pawnsToAnimate)
|
foreach (Pawn participant in pawnsToAnimate)
|
||||||
{
|
{
|
||||||
|
@ -109,7 +108,9 @@ namespace Rimworld_Animations_Patch
|
||||||
public static bool Prefix_DrawAddons(PawnRenderFlags renderFlags, Vector3 vector, Vector3 headOffset, Pawn pawn, Quaternion quat, Rot4 rotation)
|
public static bool Prefix_DrawAddons(PawnRenderFlags renderFlags, Vector3 vector, Vector3 headOffset, Pawn pawn, Quaternion quat, Rot4 rotation)
|
||||||
{
|
{
|
||||||
if (!(pawn.def is ThingDef_AlienRace alienProps) || renderFlags.FlagSet(PawnRenderFlags.Invisible)) return false;
|
if (!(pawn.def is ThingDef_AlienRace alienProps) || renderFlags.FlagSet(PawnRenderFlags.Invisible)) return false;
|
||||||
|
if (AnimationPatchUtility.ShouldNotDrawAddonsForPawn(pawn))
|
||||||
|
{ return false; }
|
||||||
|
|
||||||
// Try to draw apparel thrown on ground
|
// Try to draw apparel thrown on ground
|
||||||
if (ApparelSettings.clothesThrownOnGround)
|
if (ApparelSettings.clothesThrownOnGround)
|
||||||
{ ApparelAnimationUtility.TryToDrawApparelOnFloor(pawn); }
|
{ ApparelAnimationUtility.TryToDrawApparelOnFloor(pawn); }
|
||||||
|
@ -168,8 +169,22 @@ namespace Rimworld_Animations_Patch
|
||||||
bodyAddonAngle = bodyAddonAngle < 0f ? 360f - (bodyAddonAngle % 360) : bodyAddonAngle % 360f;
|
bodyAddonAngle = bodyAddonAngle < 0f ? 360f - (bodyAddonAngle % 360) : bodyAddonAngle % 360f;
|
||||||
float combinedAngle = (bodyAngle + bodyAddonAngle) < 0f ? 360f + ((bodyAngle + bodyAddonAngle) % 360) : (bodyAngle + bodyAddonAngle) % 360f;
|
float combinedAngle = (bodyAngle + bodyAddonAngle) < 0f ? 360f + ((bodyAngle + bodyAddonAngle) % 360) : (bodyAngle + bodyAddonAngle) % 360f;
|
||||||
|
|
||||||
Vector3 bodyAddonPosition = vector + (bodyAddonDatum.alignsWithHead ? headOffset : Vector3.zero) + bodyAddonDatum.GetOffset(rotation).RotatedBy(angle: bodyAngle);
|
Vector3 vector_ = vector;
|
||||||
|
Vector3 headOffset_ = bodyAddonDatum.alignsWithHead ? headOffset : Vector3.zero;
|
||||||
|
Vector3 bodyAddonOffset_ = bodyAddonDatum.GetOffset(apparentRotation).RotatedBy(angle: bodyAngle);
|
||||||
|
|
||||||
|
if (pawn.ageTracker.Adult == false)
|
||||||
|
{
|
||||||
|
float bodySize = AnimationPatchUtility.GetBodySize(pawn);
|
||||||
|
addonGraphic.drawSize = new Vector2(1.5f * bodySize, 1.5f * bodySize); // Doesn't seem to be a need to scale by body part draw size (re: Orassians)
|
||||||
|
|
||||||
|
Vector2 multi = AnimationPatchUtility.GetRaceSpecificOffsetMultipliers(pawn, bodyAddon.bodyPart);
|
||||||
|
bodyAddonOffset_.x *= bodySize * multi.x;
|
||||||
|
bodyAddonOffset_.z *= bodySize * multi.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector3 bodyAddonPosition = vector_ + headOffset_ + bodyAddonOffset_;
|
||||||
|
|
||||||
// Draw the addon if visible
|
// Draw the addon if visible
|
||||||
if (canDraw)
|
if (canDraw)
|
||||||
{
|
{
|
||||||
|
|
|
@ -6,25 +6,9 @@ using System.Threading.Tasks;
|
||||||
using RimWorld;
|
using RimWorld;
|
||||||
using Verse;
|
using Verse;
|
||||||
using HarmonyLib;
|
using HarmonyLib;
|
||||||
using RJW_Events;
|
|
||||||
|
|
||||||
namespace Rimworld_Animations_Patch
|
namespace Rimworld_Animations_Patch
|
||||||
{
|
{
|
||||||
|
|
||||||
[HarmonyPatch(typeof(ThinkNode_ConditionalNude), "Satisfied")]
|
|
||||||
public static class HarmonyPatch_ThinkNode_ConditionalNude
|
|
||||||
{
|
|
||||||
public static void Postfix(ref bool __result, Pawn pawn)
|
|
||||||
{
|
|
||||||
if (__result == false && pawn?.apparel?.WornApparel != null)
|
|
||||||
{
|
|
||||||
// If 'isBeingWorn' has a value, the apparel has already been checked if it should be discarded
|
|
||||||
if (pawn.apparel.WornApparel.Any(x => x.TryGetComp<CompApparelVisibility>() != null && x.TryGetComp<CompApparelVisibility>().isBeingWorn.HasValue))
|
|
||||||
{ __result = true; return; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[HarmonyPatch(typeof(ThoughtWorker_Precept_GroinChestHairOrFaceUncovered), "HasUncoveredGroinChestHairOrFace")]
|
[HarmonyPatch(typeof(ThoughtWorker_Precept_GroinChestHairOrFaceUncovered), "HasUncoveredGroinChestHairOrFace")]
|
||||||
public static class HarmonyPatch_ThoughtWorker_Precept_GroinChestHairOrFaceUncovered
|
public static class HarmonyPatch_ThoughtWorker_Precept_GroinChestHairOrFaceUncovered
|
||||||
{
|
{
|
||||||
|
|
|
@ -172,5 +172,43 @@ namespace Rimworld_Animations_Patch
|
||||||
|
|
||||||
return anchor;
|
return anchor;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
public static bool ShouldNotDrawAddonsForPawn(Pawn pawn)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static float GetBodySize(Pawn pawn)
|
||||||
|
{
|
||||||
|
return 1f;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Dictionary<string, Vector3> raceSpecifocChildMultipliers = new Dictionary<string, Vector3>()
|
||||||
|
{
|
||||||
|
{ "Alien_Orassan", new Vector3(1.4f, 1.4f, 1.4f) },
|
||||||
|
{ "Alien_Cutebold", new Vector3(1.2f, 1f, 1f) },
|
||||||
|
};
|
||||||
|
|
||||||
|
public static Vector2 GetRaceSpecificOffsetMultipliers(Pawn pawn, string bodypart)
|
||||||
|
{
|
||||||
|
Vector2 multiplierVector = new Vector2();
|
||||||
|
|
||||||
|
if (GetBodySize(pawn) == 1f || raceSpecifocChildMultipliers.TryGetValue(pawn.def.defName, out Vector3 raceVector) == false)
|
||||||
|
{ raceVector = new Vector3(1f, 1f, 1f); }
|
||||||
|
|
||||||
|
if (bodypart?.ToLower() == "tail")
|
||||||
|
{
|
||||||
|
multiplierVector.x = raceVector.z;
|
||||||
|
multiplierVector.y = raceVector.x;
|
||||||
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
multiplierVector.x = raceVector.y;
|
||||||
|
multiplierVector.y = raceVector.x;
|
||||||
|
}
|
||||||
|
|
||||||
|
return multiplierVector;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
|
@ -1 +1 @@
|
||||||
3f4f0c89e9095de19b2f487c386783c64b9bb50a
|
80ac53cd1937a7f3bc413d1816a7df030fc583c6
|
||||||
|
|
|
@ -3,5 +3,4 @@ C:\Program Files (x86)\Steam\SteamApps\common\RimWorld\Mods\rimworld-animations-
|
||||||
C:\Program Files (x86)\Steam\SteamApps\common\RimWorld\Mods\rimworld-animations-patch-abscon\1.3\Assemblies\Rimworld-Animations-Patch.pdb
|
C:\Program Files (x86)\Steam\SteamApps\common\RimWorld\Mods\rimworld-animations-patch-abscon\1.3\Assemblies\Rimworld-Animations-Patch.pdb
|
||||||
C:\Program Files (x86)\Steam\SteamApps\common\RimWorld\Mods\rimworld-animations-patch-abscon\Source\obj\Debug\Rimworld-Animations-Patch.dll
|
C:\Program Files (x86)\Steam\SteamApps\common\RimWorld\Mods\rimworld-animations-patch-abscon\Source\obj\Debug\Rimworld-Animations-Patch.dll
|
||||||
C:\Program Files (x86)\Steam\SteamApps\common\RimWorld\Mods\rimworld-animations-patch-abscon\Source\obj\Debug\Rimworld-Animations-Patch.pdb
|
C:\Program Files (x86)\Steam\SteamApps\common\RimWorld\Mods\rimworld-animations-patch-abscon\Source\obj\Debug\Rimworld-Animations-Patch.pdb
|
||||||
C:\Program Files (x86)\Steam\SteamApps\common\RimWorld\Mods\rimworld-animations-patch-abscon\Source\obj\Debug\Rimworld-Animations-Patch.csproj.CopyComplete
|
|
||||||
C:\Program Files (x86)\Steam\SteamApps\common\RimWorld\Mods\rimworld-animations-patch-abscon\Source\obj\Debug\Rimworld-Animations-Patch.csprojAssemblyReference.cache
|
C:\Program Files (x86)\Steam\SteamApps\common\RimWorld\Mods\rimworld-animations-patch-abscon\Source\obj\Debug\Rimworld-Animations-Patch.csprojAssemblyReference.cache
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in a new issue