public static Toil TakeMealFromDispenser(TargetIndex ind, Pawn eater) { Toil toil = new Toil(); toil.initAction = delegate() { Pawn actor = toil.actor; Job curJob = actor.jobs.curJob; Building_NutrientPasteDispenser building_NutrientPasteDispenser = (Building_NutrientPasteDispenser)curJob.GetTarget(ind).Thing; Thing thing = building_NutrientPasteDispenser.TryDispenseFood(); if (thing == null) { actor.jobs.curDriver.EndJobWith(JobCondition.Incompletable); } else { actor.carryTracker.TryStartCarry(thing); actor.CurJob.SetTarget(ind, actor.carryTracker.CarriedThing); } }; toil.FailOnCannotTouch(ind, PathEndMode.Touch); toil.defaultCompleteMode = ToilCompleteMode.Delay; toil.defaultDuration = Building_NutrientPasteDispenser.CollectDuration; return(toil); }
internal void <> m__0() { Pawn actor = this.toil.actor; Job curJob = actor.jobs.curJob; Building_NutrientPasteDispenser building_NutrientPasteDispenser = (Building_NutrientPasteDispenser)curJob.GetTarget(this.ind).Thing; Thing thing = building_NutrientPasteDispenser.TryDispenseFood(); if (thing == null) { actor.jobs.curDriver.EndJobWith(JobCondition.Incompletable); return; } actor.carryTracker.TryStartCarry(thing); actor.CurJob.SetTarget(this.ind, actor.carryTracker.CarriedThing); }