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 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); } } }