31 lines
968 B
C#
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);
|
|
}
|
|
}
|
|
} |