mirror of
https://gitgud.io/c0ffeeeeeeee/rimworld-animations.git
synced 2026-06-18 19:35:58 +00:00
53 lines
1.6 KiB
C#
53 lines
1.6 KiB
C#
using HarmonyLib;
|
|
using rjw;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using UnityEngine;
|
|
using Verse;
|
|
|
|
namespace Rimworld_Animations
|
|
{
|
|
|
|
[HarmonyPatch(typeof(JobDriver_Sex), "setup_ticks")]
|
|
public class HarmonyPatch_JobDriver_Sex
|
|
{
|
|
public static void Postfix(JobDriver_Sex __instance)
|
|
{
|
|
if (!RJWAnimationSettings.hearts)
|
|
{
|
|
__instance.ticks_between_hearts = int.MaxValue;
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
[HarmonyPatch(typeof(JobDriver_Sex), "SexTick")]
|
|
public class HarmonyPatch_JobDriver_Sex2
|
|
{
|
|
public static void Postfix(JobDriver_Sex __instance, Pawn pawn)
|
|
{
|
|
//if neverending sex and pawn doesn't have an animation,
|
|
if (__instance.neverendingsex
|
|
&& __instance is JobDriver_SexBaseReciever receiverJobDriver
|
|
&& !pawn.TryGetComp<CompExtendedAnimator>().IsAnimating)
|
|
{
|
|
|
|
//start a new animation for all the pawns paired with receiver job driver
|
|
List<Pawn> participants = receiverJobDriver.parteners.Append(pawn).ToList();
|
|
GroupAnimationDef animation = AnimationUtility.FindGroupAnimation(participants, out int reorder);
|
|
if (animation != null)
|
|
{
|
|
Thing anchor = (Thing)__instance.Bed ?? pawn;
|
|
AnimationUtility.StartGroupAnimation(participants, animation, reorder, anchor);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
}
|