private void TrySatisfyFoodNeed(Pawn pawn, Need_Food food) { if (food.CurCategory < HungerCategory.Hungry) { return; } if (VirtualPlantsUtility.CanEatVirtualPlantsNow(pawn)) { VirtualPlantsUtility.EatVirtualPlants(pawn); return; } Thing thing; Pawn pawn2; if (CaravanInventoryUtility.TryGetBestFood(this.caravan, pawn, out thing, out pawn2)) { food.CurLevel += thing.Ingested(pawn, food.NutritionWanted); if (thing.Destroyed) { if (pawn2 != null) { pawn2.inventory.innerContainer.Remove(thing); this.caravan.RecacheImmobilizedNow(); this.caravan.RecacheDaysWorthOfFood(); } if (!this.caravan.notifiedOutOfFood && !CaravanInventoryUtility.TryGetBestFood(this.caravan, pawn, out thing, out pawn2)) { Messages.Message("MessageCaravanRanOutOfFood".Translate(this.caravan.LabelCap, pawn.Label, pawn.Named("PAWN")), this.caravan, MessageTypeDefOf.ThreatBig, true); this.caravan.notifiedOutOfFood = true; } } } }
private static void TrySatisfyFoodNeed(Pawn pawn, Need_Food food, Caravan caravan) { if ((int)food.CurCategory >= 1) { Thing thing = default(Thing); Pawn pawn2 = default(Pawn); if (VirtualPlantsUtility.CanEatVirtualPlantsNow(pawn)) { VirtualPlantsUtility.EatVirtualPlants(pawn); } else if (CaravanInventoryUtility.TryGetBestFood(caravan, pawn, out thing, out pawn2)) { food.CurLevel += thing.Ingested(pawn, food.NutritionWanted); if (thing.Destroyed) { if (pawn2 != null) { pawn2.inventory.innerContainer.Remove(thing); caravan.RecacheImmobilizedNow(); caravan.RecacheDaysWorthOfFood(); } if (!CaravanInventoryUtility.TryGetBestFood(caravan, pawn, out thing, out pawn2)) { Messages.Message("MessageCaravanRunOutOfFood".Translate(caravan.LabelCap, pawn.Label), caravan, MessageTypeDefOf.ThreatBig); } } } } }
private void TrySatisfyFoodNeed(Pawn pawn, Need_Food food) { if ((int)food.CurCategory >= 1) { Thing food2; Pawn owner; if (VirtualPlantsUtility.CanEatVirtualPlantsNow(pawn)) { VirtualPlantsUtility.EatVirtualPlants(pawn); } else if (CaravanInventoryUtility.TryGetBestFood(caravan, pawn, out food2, out owner)) { food.CurLevel += food2.Ingested(pawn, food.NutritionWanted); if (food2.Destroyed) { if (owner != null) { owner.inventory.innerContainer.Remove(food2); caravan.RecacheImmobilizedNow(); caravan.RecacheDaysWorthOfFood(); } if (!caravan.notifiedOutOfFood && !CaravanInventoryUtility.TryGetBestFood(caravan, pawn, out food2, out owner)) { Messages.Message("MessageCaravanRanOutOfFood".Translate(caravan.LabelCap, pawn.Label, pawn.Named("PAWN")), caravan, MessageTypeDefOf.ThreatBig); caravan.notifiedOutOfFood = true; } } } } }