Files
WulaFallenEmpireRW/Source/WulaFallenEmpire/JobDriver_WulaLayDownToCharge.cs
2025-08-14 16:30:38 +08:00

41 lines
1.3 KiB
C#

using RimWorld;
using System.Collections.Generic;
using Verse;
using Verse.AI;
namespace WulaFallenEmpire
{
public class JobDriver_WulaLayDownToCharge : JobDriver
{
public override bool TryMakePreToilReservations(bool errorOnFailed)
{
return pawn.Reserve(job.targetA, job, 1, -1, null, errorOnFailed);
}
protected override IEnumerable<Toil> MakeNewToils()
{
yield return Toils_Bed.GotoBed(TargetIndex.A);
Toil layDownAndCharge = Toils_LayDown.LayDown(TargetIndex.A, true, false, false, false);
layDownAndCharge.tickAction = delegate
{
var bed = (Building_Bed)job.targetA.Thing;
var powerComp = bed.GetComp<CompPowerTrader>();
if (powerComp is { PowerOn: false })
{
EndJobWith(JobCondition.Incompletable);
return;
}
var energyNeed = pawn.needs.TryGetNeed<Need_WulaEnergy>();
if (energyNeed != null && energyNeed.CurLevelPercentage >= 1f)
{
EndJobWith(JobCondition.Succeeded);
}
};
yield return layDownAndCharge;
}
}
}