mirror of
https://gitgud.io/c0ffeeeeeeee/rimworld-animations.git
synced 2024-08-15 00:43:45 +00:00
Compare commits
2 commits
26a5993ffd
...
1a66bae865
Author | SHA1 | Date | |
---|---|---|---|
|
1a66bae865 | ||
|
03a41e32c0 |
2 changed files with 122 additions and 81 deletions
Binary file not shown.
|
@ -6,22 +6,22 @@ using RimWorld;
|
|||
using Verse;
|
||||
using rjw;
|
||||
|
||||
namespace Rimworld_Animations {
|
||||
namespace Rimworld_Animations
|
||||
{
|
||||
|
||||
[HarmonyPatch(typeof(JobDriver_SexBaseInitiator), "Start")]
|
||||
static class HarmonyPatch_JobDriver_SexBaseInitiator_Start {
|
||||
public static void Postfix(ref JobDriver_SexBaseInitiator __instance) {
|
||||
static class HarmonyPatch_JobDriver_SexBaseInitiator_Start
|
||||
{
|
||||
public static void Postfix(ref JobDriver_SexBaseInitiator __instance)
|
||||
{
|
||||
|
||||
Pawn pawn = __instance.pawn;
|
||||
Pawn partner = __instance.Target as Pawn;
|
||||
|
||||
if (partner == null)
|
||||
partner = pawn;
|
||||
|
||||
if (partner?.jobs?.curDriver is JobDriver_SexBaseReciever partnerSexBaseReceiver) {
|
||||
|
||||
Pawn Target = __instance.Target as Pawn;
|
||||
|
||||
List<Pawn> participants = partnerSexBaseReceiver.parteners.Append(partner).ToList();
|
||||
|
||||
List<Pawn> participants = GetAllSexParticipants(pawn);
|
||||
GroupAnimationDef groupAnimation = AnimationUtility.FindGroupAnimation(participants, out int reorder);
|
||||
|
||||
if (groupAnimation != null)
|
||||
|
@ -37,7 +37,6 @@ namespace Rimworld_Animations {
|
|||
{
|
||||
Log.Message("Participant: " + participant.Name);
|
||||
Log.Message("JobDriver: " + participant.CurJobDef.defName);
|
||||
|
||||
}
|
||||
|
||||
//null ref check for pawns that might have lost their jobs or become null for some reason
|
||||
|
@ -51,6 +50,47 @@ namespace Rimworld_Animations {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static List<Pawn> GetAllSexParticipants(this Pawn pawn)
|
||||
{
|
||||
List<Pawn> participants = new List<Pawn>();
|
||||
|
||||
if (pawn?.jobs?.curDriver == null ||
|
||||
(pawn.jobs.curDriver is JobDriver_Sex) == false)
|
||||
return participants;
|
||||
|
||||
var receiver = pawn.GetSexReceiver();
|
||||
|
||||
if (receiver != null)
|
||||
{
|
||||
participants = (receiver.jobs.curDriver as JobDriver_SexBaseReciever).parteners;
|
||||
participants.AddDistinct(receiver);
|
||||
|
||||
return participants;
|
||||
}
|
||||
|
||||
participants.AddDistinct(pawn);
|
||||
|
||||
return participants;
|
||||
}
|
||||
|
||||
public static Pawn GetSexReceiver(this Pawn pawn)
|
||||
{
|
||||
if (pawn?.jobs?.curDriver == null)
|
||||
return null;
|
||||
|
||||
if (pawn.jobs.curDriver is JobDriver_SexBaseReciever)
|
||||
return pawn;
|
||||
|
||||
JobDriver_SexBaseInitiator jobDriver = pawn.jobs.curDriver as JobDriver_SexBaseInitiator;
|
||||
|
||||
if (jobDriver?.Partner?.jobs?.curDriver == null)
|
||||
return null;
|
||||
|
||||
if (jobDriver.Partner.jobs.curDriver is JobDriver_SexBaseReciever)
|
||||
return jobDriver.Partner;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
static IEnumerable<String> NonSexActRulePackDefNames = new String[]
|
||||
|
@ -71,7 +111,8 @@ namespace Rimworld_Animations {
|
|||
|
||||
|
||||
[HarmonyPatch(typeof(JobDriver_SexBaseInitiator), "End")]
|
||||
static class HarmonyPatch_JobDriver_SexBaseInitiator_End {
|
||||
static class HarmonyPatch_JobDriver_SexBaseInitiator_End
|
||||
{
|
||||
|
||||
public static void Prefix(ref JobDriver_SexBaseInitiator __instance)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue