Example #1
0
 public static void TryTendToAnyPawn(Caravan caravan)
 {
     FindPawnsNeedingTend(caravan, tmpPawnsNeedingTreatment);
     if (tmpPawnsNeedingTreatment.Any())
     {
         tmpPawnsNeedingTreatment.SortByDescending(GetTendPriority);
         Pawn patient = null;
         Pawn pawn    = null;
         for (int i = 0; i < tmpPawnsNeedingTreatment.Count; i++)
         {
             patient = tmpPawnsNeedingTreatment[i];
             pawn    = FindBestDoctorFor(caravan, patient);
             if (pawn != null)
             {
                 break;
             }
         }
         if (pawn != null)
         {
             Medicine medicine = null;
             Pawn     owner    = null;
             CaravanInventoryUtility.TryGetBestMedicine(caravan, patient, out medicine, out owner);
             TendUtility.DoTend(pawn, patient, medicine);
             if (medicine != null && medicine.Destroyed)
             {
                 owner?.inventory.innerContainer.Remove(medicine);
             }
             tmpPawnsNeedingTreatment.Clear();
         }
     }
 }
        public static void TryTendToRandomPawn(Caravan caravan)
        {
            CaravanTendUtility.FindPawnsNeedingTend(caravan, CaravanTendUtility.tmpPawnsNeedingTreatment);
            if (!CaravanTendUtility.tmpPawnsNeedingTreatment.Any <Pawn>())
            {
                return;
            }
            Pawn patient = CaravanTendUtility.tmpPawnsNeedingTreatment.RandomElement <Pawn>();
            Pawn pawn    = CaravanTendUtility.FindBestDoctor(caravan, patient);

            if (pawn == null)
            {
                return;
            }
            Medicine medicine = null;
            Pawn     pawn2    = null;

            CaravanInventoryUtility.TryGetBestMedicine(caravan, patient, out medicine, out pawn2);
            TendUtility.DoTend(pawn, patient, medicine);
            if (medicine != null && medicine.Destroyed && pawn2 != null)
            {
                pawn2.inventory.innerContainer.Remove(medicine);
            }
            CaravanTendUtility.tmpPawnsNeedingTreatment.Clear();
        }
        public static void TryTendToAnyPawn(Caravan caravan)
        {
            CaravanTendUtility.FindPawnsNeedingTend(caravan, CaravanTendUtility.tmpPawnsNeedingTreatment);
            if (!CaravanTendUtility.tmpPawnsNeedingTreatment.Any <Pawn>())
            {
                return;
            }
            CaravanTendUtility.tmpPawnsNeedingTreatment.SortByDescending(new Func <Pawn, float>(CaravanTendUtility.GetTendPriority));
            Pawn patient = null;
            Pawn pawn    = null;

            for (int i = 0; i < CaravanTendUtility.tmpPawnsNeedingTreatment.Count; i++)
            {
                patient = CaravanTendUtility.tmpPawnsNeedingTreatment[i];
                pawn    = CaravanTendUtility.FindBestDoctorFor(caravan, patient);
                if (pawn != null)
                {
                    break;
                }
            }
            if (pawn == null)
            {
                return;
            }
            Medicine medicine = null;
            Pawn     pawn2    = null;

            CaravanInventoryUtility.TryGetBestMedicine(caravan, patient, out medicine, out pawn2);
            TendUtility.DoTend(pawn, patient, medicine);
            if (medicine != null && medicine.Destroyed && pawn2 != null)
            {
                pawn2.inventory.innerContainer.Remove(medicine);
            }
            CaravanTendUtility.tmpPawnsNeedingTreatment.Clear();
        }