Files
ArachnaeSwarm/Source/ArachnaeSwarm/Jobs/JobDriver_SuperCarry/JobDriver_SuperCarry.cs
2025-10-04 15:01:28 +08:00

31 lines
968 B
C#

using System.Collections.Generic;
using Verse;
using Verse.AI;
using RimWorld;
namespace ArachnaeSwarm
{
public class JobDriver_SuperCarry : JobDriver
{
private const TargetIndex TakeeIndex = TargetIndex.A;
protected Pawn Takee => (Pawn)job.GetTarget(TargetIndex.A).Thing;
public override bool TryMakePreToilReservations(bool errorOnFailed)
{
return pawn.Reserve(Takee, job, 1, -1, null, errorOnFailed);
}
protected override IEnumerable<Toil> MakeNewToils()
{
this.FailOnDestroyedOrNull(TargetIndex.A);
this.FailOnAggroMentalState(TargetIndex.A);
yield return Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.ClosestTouch)
.FailOnDespawnedNullOrForbidden(TargetIndex.A)
.FailOnSomeonePhysicallyInteracting(TargetIndex.A);
yield return Toils_Haul.StartCarryThing(TargetIndex.A);
}
}
}