This commit is contained in:
2025-12-11 15:32:12 +08:00
parent 6e807e9054
commit 967a917e2f
5 changed files with 6 additions and 381 deletions

View File

@@ -1,45 +0,0 @@
using System.Collections.Generic;
using RimWorld;
using Verse;
using Verse.AI;
namespace WulaFallenEmpire
{
public class JobDriver_DroneSelfShutdown : JobDriver
{
public const TargetIndex RestSpotIndex = TargetIndex.A;
public override bool TryMakePreToilReservations(bool errorOnFailed)
{
return pawn.Reserve(base.TargetA, job, 1, -1, null, errorOnFailed);
}
protected override IEnumerable<Toil> MakeNewToils()
{
yield return Toils_Goto.GotoCell(TargetIndex.A, PathEndMode.OnCell);
Toil layDown = SelfShutdown();
layDown.PlaySoundAtStart(SoundDefOf.MechSelfShutdown);
yield return layDown;
}
public static Toil SelfShutdown()
{
Toil layDown = ToilMaker.MakeToil("WULA_DroneSelfShutdown");
layDown.initAction = delegate
{
Pawn actor = layDown.actor;
actor.pather?.StopDead();
JobDriver curDriver = actor.jobs.curDriver;
actor.jobs.posture = PawnPosture.Standing;
actor.mindState.lastBedDefSleptIn = null;
curDriver.asleep = true;
};
layDown.defaultCompleteMode = ToilCompleteMode.Never;
layDown.AddFinishAction(delegate
{
layDown.actor.jobs.curDriver.asleep = false;
});
return layDown;
}
}
}

View File

@@ -8,13 +8,13 @@ namespace WulaFallenEmpire
{
protected override Job TryGiveJob(Pawn pawn)
{
if (RCellFinder.TryFindNearbyMechSelfShutdownSpot(pawn.Position, pawn, pawn.Map, out var result, allowForbidden: true))
if (!RCellFinder.TryFindNearbyMechSelfShutdownSpot(pawn.Position, pawn, pawn.Map, out var result, allowForbidden: true))
{
Job job = JobMaker.MakeJob(WulaDefOf.WULA_DroneSelfShutdown, result);
job.forceSleep = true;
return job;
result = pawn.Position;
}
return null;
Job job = JobMaker.MakeJob(JobDefOf.SelfShutdown, result);
job.forceSleep = true;
return job;
}
}
}