Example #1
0
        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);
                 }
             }
         }
     }
 }
Example #3
0
 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;
                 }
             }
         }
     }
 }