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(); }