protected override IEnumerable <Toil> MakeNewToils() { HarpyComp comp = this.pawn.TryGetComp <HarpyComp>(); bool flag = comp != null; if (flag) { bool flag2 = this.pawn.Position.Roofed(this.pawn.Map); if (flag2) { yield return(Toils_Harpy.GoToNearUnroofedCell(TargetIndex.A, comp.AdjustedRange)); } yield return(Toils_Harpy.CastFlyAbility(TargetIndex.A)); } yield break; }
public static Toil CastFlyAbility(TargetIndex ind) { Toil toil = new Toil(); toil.initAction = delegate() { Pawn actor = toil.actor; HarpyComp harpyComp = actor.TryGetComp <HarpyComp>(); bool flag = harpyComp != null; if (flag) { harpyComp.FlyAbility(actor, actor.jobs.curJob.GetTarget(ind).Cell); } else { actor.jobs.EndCurrentJob(JobCondition.Incompletable, true, true); } }; toil.defaultCompleteMode = ToilCompleteMode.PatherArrival; return(toil); }