// Token: 0x0600002D RID: 45 RVA: 0x00002758 File Offset: 0x00000958 public override ThinkResult TryIssueJobPackage(Pawn pawn, JobIssueParams jobParm) { bool flag = !HealthAIUtility.ShouldSeekMedicalRest(pawn); ThinkResult result; if (flag) { result = ThinkResult.NoJob; } else { bool flag2 = !HealthAIUtility.ShouldBeTendedNowByPlayer(pawn); if (flag2) { result = ThinkResult.NoJob; } else { bool flag3 = !GenCollection.Any <Apparel>(pawn.apparel.WornApparel, (Apparel x) => x.def.defName.Contains("RRY_Equipment_HunterGauntlet")); if (flag3) { result = ThinkResult.NoJob; } else { Thing thing = RestUtility.FindPatientBedFor(pawn); bool flag4 = thing == null; if (flag4) { result = ThinkResult.NoJob; } else { Thing thing2 = null; bool flag5 = Medicine.GetMedicineCountToFullyHeal(pawn) > 0; if (flag5) { thing2 = HealthAIUtility.FindBestMedicine(pawn, pawn); } bool flag6 = thing2 != null; Job job; if (flag6) { job = new Job(YautjaDefOf.RRY_Yautja_TendSelf, thing, thing2); } else { job = new Job(YautjaDefOf.RRY_Yautja_TendSelf, thing); } result = new ThinkResult(job, this, null, false); } } } } return(result); }
//Stupid re-write because I want count. //public override Job JobOnThing(Pawn pawn, Thing t, bool forced = false) public static bool Prefix(Pawn pawn, Thing t, ref Job __result) { medCount = 0; Pawn patient = t as Pawn; Thing thing = null; if (Medicine.GetMedicineCountToFullyHeal(patient) > 0) { thing = HealthAIUtility.FindBestMedicine(pawn, patient); } Log.Message("JobOnThing count = " + medCount); __result = new Job(JobDefOf.TendPatient, patient, thing) { count = medCount }; return(false); }
protected override Job TryGiveJob(Pawn pawn) { Predicate <Thing> validator = delegate(Thing t) { Pawn patient = (Pawn)t; return(HasJobOnThing(pawn, patient)); }; Pawn pawn2 = (Pawn)GenClosest.ClosestThing_Global_Reachable(pawn.Position, pawn.Map, pawn.Map.mapPawns.SpawnedPawnsWithAnyHediff, PathEndMode.OnCell, TraverseParms.For(pawn), radius, validator); if (pawn2 != null) { Thing thing = HealthAIUtility.FindBestMedicine(pawn, pawn2); if (thing != null) { return(JobMaker.MakeJob(JobDefOf.TendPatient, pawn2, thing)); } return(JobMaker.MakeJob(JobDefOf.TendPatient, pawn2)); } else { return(null); } }