// Token: 0x0600006A RID: 106 RVA: 0x00004BBC File Offset: 0x00002DBC public static Toil FinalizeFeeding(TargetIndex feedable, TargetIndex food) { Toil toil = new Toil(); toil.initAction = delegate() { Job curJob = toil.actor.CurJob; Thing thing = curJob.GetTarget(feedable).Thing; Thing excessThing = null; CompAquarium AQComp = thing.TryGetComp <CompAquarium>(); if (AQComp != null) { int numFoodToAdd = AQUtility.GetFoodNumToFullyFeed(AQComp); if (numFoodToAdd > 0) { Thing foodybits = curJob.GetTarget(food).Thing; if (foodybits != null) { int numFoodHave = foodybits.stackCount; int numAdding; if (numFoodHave <= numFoodToAdd) { numAdding = numFoodHave; foodybits.Destroy(DestroyMode.Vanish); } else { numAdding = numFoodToAdd; foodybits.stackCount -= numAdding; GenPlace.TryPlaceThing(foodybits, toil.actor.Position, toil.actor.Map, ThingPlaceMode.Near, out Thing newFoodDrop, null, null, default);
// Token: 0x06000045 RID: 69 RVA: 0x0000409D File Offset: 0x0000229D protected override IEnumerable <Toil> MakeNewToils() { this.FailOnDespawnedNullOrForbidden(Feedable); AddEndCondition(delegate { if (AQComp.foodPct > 0.95f) { return(JobCondition.Succeeded); } return(JobCondition.Ongoing); }); yield return(Toils_General.DoAtomic(delegate { job.count = AQUtility.GetFoodNumToFullyFeed(AQComp); })); Toil reserveFood = Toils_Reserve.Reserve(Foodybits, 1, -1, null); yield return(reserveFood); yield return(Toils_Goto.GotoThing(Foodybits, PathEndMode.ClosestTouch).FailOnDespawnedNullOrForbidden(Foodybits).FailOnSomeonePhysicallyInteracting(Foodybits)); yield return(Toils_Haul.StartCarryThing(Foodybits, false, true, false).FailOnDestroyedNullOrForbidden(Foodybits)); yield return(Toils_Haul.CheckForGetOpportunityDuplicate(reserveFood, Foodybits, TargetIndex.None, true, null)); yield return(Toils_Goto.GotoThing(Feedable, PathEndMode.Touch)); yield return(Toils_General.Wait(FeedDuration, TargetIndex.None).FailOnDestroyedNullOrForbidden(Foodybits).FailOnDestroyedNullOrForbidden(Feedable).FailOnCannotTouch(Feedable, PathEndMode.Touch).WithProgressBarToilDelay(Feedable, false, -0.5f)); yield return(Toils_AQFeed.FinalizeFeeding(Feedable, Foodybits)); if (!job.GetTarget(Foodybits).HasThing) { EndJobWith(JobCondition.Incompletable); } yield return(Toils_Reserve.Reserve(Foodybits, 1, -1, null)); yield return(Toils_Reserve.Reserve(TargetIndex.C, 1, -1, null)); yield return(Toils_Goto.GotoThing(Foodybits, PathEndMode.ClosestTouch)); yield return(Toils_Haul.StartCarryThing(Foodybits, false, false, false)); Toil carry = Toils_Haul.CarryHauledThingToCell(TargetIndex.C); yield return(carry); yield return(Toils_Haul.PlaceHauledThingInCell(TargetIndex.C, carry, true, false)); yield break; }