rimworld-animations/1.5/Source/Patches/RJWPatches/JobDrivers/JobDriver_Sex/HarmonyPatch_Animate.cs

54 lines
1.3 KiB
C#

using HarmonyLib;
using rjw;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse;
namespace Rimworld_Animations
{
[HarmonyPatch(typeof(JobDriver_Sex), "Animate")]
public class HarmonyPatch_Animate
{
public static bool Prefix(ref JobDriver_Sex __instance, ref Pawn pawn, ref Thing target)
{
//remove all bumping stuff in animations; keep draw nude code
__instance.RotatePawns(pawn, __instance.Partner);
if (target != null)
{
Pawn pawn2 = target as Pawn;
if (pawn2 != null && !__instance.Sexprops.isRapist)
{
// if not (pawn has root node and rootnode is animating)
if (!(pawn2?.Drawer?.renderer?.renderTree?.rootNode is PawnRenderNode rootNode
&& (rootNode.AnimationWorker is AnimationWorker_KeyframesExtended || rootNode.children.Any(x => x.AnimationWorker is AnimationWorker_KeyframesExtended))))
{
//play bumpin anim
pawn.Drawer.Notify_MeleeAttackOn(target);
}
}
if (!__instance.isEndytophile)
{
SexUtility.DrawNude(pawn, false);
if (pawn2 != null)
{
SexUtility.DrawNude(pawn2, false);
return false;
}
}
}
else if (!__instance.isEndytophile)
{
SexUtility.DrawNude(pawn, false);
}
return false;
}
}
}