Various fixes

This commit is contained in:
c0ffee 2021-04-12 10:43:58 -07:00
parent 6d1a218b2e
commit 1cfbc2c83e
7 changed files with 57 additions and 5 deletions

Binary file not shown.

View file

@ -63,6 +63,8 @@
<Compile Include="Source\JobGivers\JobGiver_FindOrgyPartner.cs" />
<Compile Include="Source\JobGivers\JobGiver_GetNaked.cs" />
<Compile Include="Source\LordJobs\LordJob_Joinable_Orgy.cs" />
<Compile Include="Source\Patches\HarmonyPatch_ReclotheOnRemovePawn.cs" />
<Compile Include="Source\Patches\HarmonyPatch_StayNudeForOrgy.cs" />
<Compile Include="Source\Patches\Harmony_PatchAll.cs" />
<Compile Include="Source\ThinkNodes\ThinkNode_ConditionalNude.cs" />
</ItemGroup>

View file

@ -23,12 +23,13 @@ namespace RJW_Events
{
base.setup_ticks();
JobDef PartnerJob = DefDatabase<JobDef>.GetNamed("GettinOrgySex", true);
this.FailOnDespawnedNullOrForbidden(this.iTarget);
this.FailOnDespawnedOrNull(this.iTarget);
this.FailOn(() => !this.Partner.health.capacities.CanBeAwake);
this.FailOn(() => this.pawn.IsFighting());
this.FailOn(() => this.Partner.IsFighting());
this.FailOn(() => this.pawn.Drafted);
yield return Toils_Goto.GotoThing(this.iTarget, PathEndMode.OnCell);
this.FailOn(() => this.Partner.Drafted);
yield return Toils_Goto.GotoThing(this.iTarget, PathEndMode.ClosestTouch);
yield return new Toil
{
defaultCompleteMode = ToilCompleteMode.Delay,
@ -39,7 +40,7 @@ namespace RJW_Events
tickAction = delegate ()
{
this.pawn.GainComfortFromCellIfPossible(false);
if (this.pawn.Position.DistanceTo(this.Partner.Position) <= 1f)
if (this.pawn.Position.DistanceTo(this.Partner.Position) <= 3f)
{
this.ReadyForNextToil();
}
@ -91,7 +92,7 @@ namespace RJW_Events
toil.AddFinishAction(delegate
{
this.End();
if(LordUtility.GetLord(pawn)?.CurLordToil != null && !(LordUtility.GetLord(pawn).CurLordToil is LordToil_End))
if(LordUtility.GetLord(pawn)?.LordJob != null && LordUtility.GetLord(pawn).LordJob is LordJob_Joinable_Orgy && !(LordUtility.GetLord(pawn).CurLordToil is LordToil_End))
SexUtility.DrawNude(pawn);
});
yield return toil;

View file

@ -35,6 +35,7 @@ namespace RJW_Events
this.ticks_between_hearts -= 25;
}
this.FailOnDespawnedOrNull(this.iTarget);
this.FailOn(() => !(Partner.jobs.curDriver is JobDriver_Sex));
this.FailOn(() => !base.Partner.health.capacities.CanBeAwake);
this.FailOn(() => this.pawn.Drafted);
this.FailOn(() => base.Partner.Drafted);
@ -69,7 +70,7 @@ namespace RJW_Events
return JobCondition.Succeeded;
}
return JobCondition.Ongoing;
});
});
toil.socialMode = RandomSocialMode.Off;
return toil;
}

View file

@ -79,6 +79,7 @@ namespace RJW_Events
{
if(targets.TryRandomElementByWeight((Pawn p) => {
if (p == pawn1) return 0;
float chance = pawn1.relations.SecondaryRomanceChanceFactor(p);
if(!(p.jobs.curDriver is JobDriver_Sex))
{

View file

@ -0,0 +1,23 @@
using HarmonyLib;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse;
using Verse.AI.Group;
namespace RJW_Events
{
[HarmonyPatch(typeof(Lord), "RemovePawn")]
public static class HarmonyPatch_ReclotheOnRemovePawn
{
public static void Postfix(Lord __instance, Pawn p)
{
if(__instance?.LordJob != null && __instance.LordJob is LordJob_Joinable_Orgy)
{
p.Drawer.renderer.graphics.ResolveApparelGraphics();
}
}
}
}

View file

@ -0,0 +1,24 @@
using HarmonyLib;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Verse;
using Verse.AI.Group;
namespace RJW_Events
{
[HarmonyPatch(typeof(PawnGraphicSet), "ResolveApparelGraphics")]
public static class HarmonyPatch_StayNudeForOrgy
{
public static bool Prefix(PawnGraphicSet __instance)
{
if(LordUtility.GetLord(__instance.pawn)?.LordJob != null && LordUtility.GetLord(__instance.pawn).LordJob is LordJob_Joinable_Orgy)
{
return false;
}
return true;
}
}
}