protected override IEnumerable <Toil> MakeNewToils() { this.FailOnDespawnedNullOrForbidden(TargetIndex.B); this.FailOn(() => !FoodUtility.ShouldBeFedBySomeone(Deliveree)); if (pawn.inventory != null && pawn.inventory.Contains(base.TargetThingA)) { yield return(Toils_Misc.TakeItemFromInventoryToCarrier(pawn, TargetIndex.A)); } else if (base.TargetThingA is Building_NutrientPasteDispenser) { yield return(Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.InteractionCell).FailOnForbidden(TargetIndex.A)); yield return(Toils_Ingest.TakeMealFromDispenser(TargetIndex.A, pawn)); } else { yield return(Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.ClosestTouch).FailOnForbidden(TargetIndex.A)); yield return(Toils_Ingest.PickupIngestible(TargetIndex.A, Deliveree)); } yield return(Toils_Goto.GotoThing(TargetIndex.B, PathEndMode.Touch)); yield return(Toils_Ingest.ChewIngestible(Deliveree, 1.5f, TargetIndex.A).FailOnCannotTouch(TargetIndex.B, PathEndMode.Touch)); yield return(Toils_Ingest.FinalizeIngest(Deliveree, TargetIndex.A)); }
// Token: 0x0600003F RID: 63 RVA: 0x00004036 File Offset: 0x00002236 protected override IEnumerable <Toil> MakeNewToils() { this.FailOnDespawnedNullOrForbidden(TargetIndex.B); this.FailOn(() => !FoodUtility.ShouldBeFedBySomeone(this.Deliveree)); bool flag = base.TargetThingA is Building_NutrientPasteDispenser; if (flag) { yield return(Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.InteractionCell).FailOnForbidden(TargetIndex.A)); yield return(Toils_Ingest.TakeMealFromDispenser(TargetIndex.A, this.pawn)); } else { yield return(Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.ClosestTouch).FailOnForbidden(TargetIndex.A)); yield return(Toils_Ingest.PickupIngestible(TargetIndex.A, this.Deliveree)); } yield return(Toils_Goto.GotoThing(TargetIndex.B, PathEndMode.Touch)); yield return(Toils_Ingest.ChewIngestible(this.Deliveree, 1.5f, TargetIndex.A, TargetIndex.None).FailOnCannotTouch(TargetIndex.B, PathEndMode.Touch)); yield return(Toils_Ingest.FinalizeIngest(this.Deliveree, TargetIndex.A)); yield break; }
public override float GetPriority(Pawn pawn) { Need_Food food = pawn.needs.food; float result; if (food == null) { result = 0f; } else if (pawn.needs.food.CurCategory < HungerCategory.Starving && FoodUtility.ShouldBeFedBySomeone(pawn)) { result = 0f; } else if (food.CurCategory < this.minCategory) { result = 0f; } else if (food.CurLevelPercentage < pawn.RaceProps.FoodLevelPercentageWantEat) { result = 9.5f; } else { result = 0f; } return(result); }
public override float GetPriority(Pawn pawn) { Need_Food food = pawn.needs.food; if (food == null) { return(0f); } if ((int)pawn.needs.food.CurCategory < 3 && FoodUtility.ShouldBeFedBySomeone(pawn)) { return(0f); } if ((int)food.CurCategory < (int)minCategory) { return(0f); } if (food.CurLevelPercentage > maxLevelPercentage) { return(0f); } if (food.CurLevelPercentage < pawn.RaceProps.FoodLevelPercentageWantEat) { return(9.5f); } return(0f); }
protected override IEnumerable <Toil> MakeNewToils() { this.FailOnDespawnedNullOrForbidden(TargetIndex.B); this.FailOn(() => !FoodUtility.ShouldBeFedBySomeone(((_003CMakeNewToils_003Ec__Iterator0) /*Error near IL_0050: stateMachine*/)._0024this.Deliveree)); if (base.pawn.inventory != null && base.pawn.inventory.Contains(base.TargetThingA)) { yield return(Toils_Misc.TakeItemFromInventoryToCarrier(base.pawn, TargetIndex.A)); /*Error: Unable to find new state assignment for yield return*/; } if (base.TargetThingA is Building_NutrientPasteDispenser) { yield return(Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.InteractionCell).FailOnForbidden(TargetIndex.A)); /*Error: Unable to find new state assignment for yield return*/; } yield return(Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.ClosestTouch).FailOnForbidden(TargetIndex.A)); /*Error: Unable to find new state assignment for yield return*/; }
public bool MoveNext() { uint num = (uint)this.$PC; this.$PC = -1; switch (num) { case 0u: this.FailOnDespawnedNullOrForbidden(TargetIndex.B); this.FailOn(() => !FoodUtility.ShouldBeFedBySomeone(base.Deliveree)); if (this.pawn.inventory != null && this.pawn.inventory.Contains(base.TargetThingA)) { this.$current = Toils_Misc.TakeItemFromInventoryToCarrier(this.pawn, TargetIndex.A); if (!this.$disposing) { this.$PC = 1; } return(true); } if (base.TargetThingA is Building_NutrientPasteDispenser) { this.$current = Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.InteractionCell).FailOnForbidden(TargetIndex.A); if (!this.$disposing) { this.$PC = 2; } return(true); } this.$current = Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.ClosestTouch).FailOnForbidden(TargetIndex.A); if (!this.$disposing) { this.$PC = 4; } return(true); case 1u: break; case 2u: this.$current = Toils_Ingest.TakeMealFromDispenser(TargetIndex.A, this.pawn); if (!this.$disposing) { this.$PC = 3; } return(true); case 3u: break; case 4u: this.$current = Toils_Ingest.PickupIngestible(TargetIndex.A, base.Deliveree); if (!this.$disposing) { this.$PC = 5; } return(true); case 5u: break; case 6u: this.$current = Toils_Ingest.ChewIngestible(base.Deliveree, 1.5f, TargetIndex.A, TargetIndex.None).FailOnCannotTouch(TargetIndex.B, PathEndMode.Touch); if (!this.$disposing) { this.$PC = 7; } return(true); case 7u: this.$current = Toils_Ingest.FinalizeIngest(base.Deliveree, TargetIndex.A); if (!this.$disposing) { this.$PC = 8; } return(true); case 8u: this.$PC = -1; return(false); default: return(false); } this.$current = Toils_Goto.GotoThing(TargetIndex.B, PathEndMode.Touch); if (!this.$disposing) { this.$PC = 6; } return(true); }