mirror of
https://github.com/amevarashi/RJW-Sexperience.git
synced 2024-08-14 23:54:08 +00:00
WorkGiver to collect cum to bucket
This commit is contained in:
parent
0edd830a2b
commit
3807441418
4 changed files with 55 additions and 32 deletions
17
Defs/WorkGiverDefs/WorkGivers_CleanSelf.xml
Normal file
17
Defs/WorkGiverDefs/WorkGivers_CleanSelf.xml
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Defs>
|
||||
<WorkGiverDef>
|
||||
<defName>CleanSelfwithBucket</defName>
|
||||
<label>collect cum into a bucket</label>
|
||||
<giverClass>RJWSexperience.Cum.WorkGiver_CleanSelfWithBucket</giverClass>
|
||||
<workType>BasicWorker</workType>
|
||||
<verb>collect cum into a</verb>
|
||||
<gerund>collecting cum into a</gerund>
|
||||
<scanCells>false</scanCells>
|
||||
<priorityInType>12</priorityInType><!-- slightly higher than RJW CleanSelf-->
|
||||
<nonColonistsCanDo>true</nonColonistsCanDo>
|
||||
<requiredCapacities>
|
||||
<li>Manipulation</li>
|
||||
</requiredCapacities>
|
||||
</WorkGiverDef>
|
||||
</Defs>
|
|
@ -0,0 +1,37 @@
|
|||
using RimWorld;
|
||||
using rjw;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Verse;
|
||||
using Verse.AI;
|
||||
|
||||
namespace RJWSexperience.Cum
|
||||
{
|
||||
public class WorkGiver_CleanSelfWithBucket : WorkGiver_Scanner
|
||||
{
|
||||
public override ThingRequest PotentialWorkThingRequest => ThingRequest.ForDef(VariousDefOf.CumBucket);
|
||||
public override PathEndMode PathEndMode => PathEndMode.ClosestTouch;
|
||||
public override bool ShouldSkip(Pawn pawn, bool forced = false)
|
||||
{
|
||||
return !pawn.health.hediffSet.HasHediff(RJW_SemenoOverlayHediffDefOf.Hediff_Bukkake);
|
||||
}
|
||||
|
||||
public override bool HasJobOnThing(Pawn pawn, Thing t, bool forced = false)
|
||||
{
|
||||
if (!(t is Building_CumBucket bucket))
|
||||
return false;
|
||||
|
||||
List<Thing> thingsInBucket = bucket.Map.thingGrid.ThingsListAt(bucket.Position);
|
||||
|
||||
int stackInBucket = thingsInBucket.Select(thing => thing.stackCount).Aggregate((sum, x) => sum + x);
|
||||
|
||||
return stackInBucket < VariousDefOf.GatheredCum.stackLimit;
|
||||
}
|
||||
|
||||
public override Job JobOnThing(Pawn pawn, Thing t, bool forced = false)
|
||||
{
|
||||
return JobMaker.MakeJob(VariousDefOf.CleanSelfwithBucket, pawn, t);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,9 +1,6 @@
|
|||
using HarmonyLib;
|
||||
using RimWorld;
|
||||
using rjw;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using Verse;
|
||||
|
||||
namespace RJWSexperience
|
||||
|
@ -20,33 +17,4 @@ namespace RJWSexperience
|
|||
__result.AddVirginTrait();
|
||||
}
|
||||
}
|
||||
|
||||
[HarmonyPatch(typeof(FloatMenuMakerMap), "AddHumanlikeOrders")]
|
||||
public static class HumanlikeOrder_Patch
|
||||
{
|
||||
public static void Postfix(Vector3 clickPos, Pawn pawn, List<FloatMenuOption> opts)
|
||||
{
|
||||
var targets = GenUI.TargetsAt(clickPos, TargetingParameters.ForBuilding());
|
||||
|
||||
if (pawn.health.hediffSet.HasHediff(RJW_SemenoOverlayHediffDefOf.Hediff_Bukkake))
|
||||
foreach (LocalTargetInfo t in targets)
|
||||
{
|
||||
if (t.Thing is Building_CumBucket building)
|
||||
{
|
||||
opts.AddDistinct(MakeMenu(pawn, building));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static FloatMenuOption MakeMenu(Pawn pawn, LocalTargetInfo target)
|
||||
{
|
||||
FloatMenuOption option = FloatMenuUtility.DecoratePrioritizedTask(new FloatMenuOption(Keyed.RS_FloatMenu_CleanSelf, delegate ()
|
||||
{
|
||||
pawn.jobs.TryTakeOrderedJob(new Verse.AI.Job(VariousDefOf.CleanSelfwithBucket, null, target, target.Cell));
|
||||
}, MenuOptionPriority.Low), pawn, target);
|
||||
|
||||
return option;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ namespace RJWSexperience
|
|||
public static readonly RecordDef SexPartnerCount = DefDatabase<RecordDef>.GetNamed("SexPartnerCount");
|
||||
public static readonly RecordDef OrgasmCount = DefDatabase<RecordDef>.GetNamed("OrgasmCount");
|
||||
public static readonly SkillDef SexSkill = DefDatabase<SkillDef>.GetNamed("Sex");
|
||||
public static readonly ThingDef CumBucket = DefDatabase<ThingDef>.GetNamed("CumBucket");
|
||||
public static readonly ThingDef GatheredCum = DefDatabase<ThingDef>.GetNamed("GatheredCum");
|
||||
public static readonly ThingDef FilthCum = ThingDef.Named("FilthCum");
|
||||
public static readonly HediffDef CumAddiction = DefDatabase<HediffDef>.GetNamed("CumAddiction");
|
||||
|
|
Loading…
Reference in a new issue