static bool IsAwaiting(Pawn p) { if (HealthAIUtility.ShouldHaveSurgeryDoneNow(p)) { return(p.InBed()); } return(false); }
public override bool ShouldSkip(Pawn pawn, bool forced = false) { List <Pawn> allPawnsSpawned = pawn.Map.mapPawns.AllPawnsSpawned; for (int i = 0; i < allPawnsSpawned.Count; i++) { if (HealthAIUtility.ShouldHaveSurgeryDoneNow(allPawnsSpawned[i])) { return(false); } } return(true); }
public override ThinkResult TryIssueJobPackage(Pawn pawn, JobIssueParams jobParams) { if (!HealthAIUtility.ShouldSeekMedicalRest(pawn)) { return(ThinkResult.NoJob); } if (respectTimetable && RestUtility.TimetablePreventsLayDown(pawn) && !HealthAIUtility.ShouldHaveSurgeryDoneNow(pawn) && !HealthAIUtility.ShouldBeTendedNowByPlayer(pawn)) { return(ThinkResult.NoJob); } if (RestUtility.DisturbancePreventsLyingDown(pawn)) { return(ThinkResult.NoJob); } Thing thing = RestUtility.FindPatientBedFor(pawn); if (thing == null) { return(ThinkResult.NoJob); } return(new ThinkResult(JobMaker.MakeJob(JobDefOf.LayDown, thing), this)); }
public override ThinkResult TryIssueJobPackage(Pawn pawn, JobIssueParams jobParams) { ThinkResult result; if (!HealthAIUtility.ShouldSeekMedicalRest(pawn)) { result = ThinkResult.NoJob; } else if (this.respectTimetable && RestUtility.TimetablePreventsLayDown(pawn) && !HealthAIUtility.ShouldHaveSurgeryDoneNow(pawn) && !HealthAIUtility.ShouldBeTendedNowByPlayer(pawn)) { result = ThinkResult.NoJob; } else if (RestUtility.DisturbancePreventsLyingDown(pawn)) { result = ThinkResult.NoJob; } else { Thing thing = RestUtility.FindPatientBedFor(pawn); if (thing == null) { result = ThinkResult.NoJob; } else { Job job = new Job(JobDefOf.LayDown, thing); result = new ThinkResult(job, this, null, false); } } return(result); }
public override bool HasJobOnThing(Pawn pawn, Thing t, bool forced = false) { Pawn pawn2 = t as Pawn; if (pawn2 != null && pawn2 != pawn && !pawn2.InBed() && pawn2.RaceProps.IsFlesh && HealthAIUtility.ShouldHaveSurgeryDoneNow(pawn2)) { LocalTargetInfo target = pawn2; bool ignoreOtherReservations = forced; if (pawn.CanReserve(target, 1, -1, null, ignoreOtherReservations) && (!pawn2.InMentalState || !pawn2.MentalStateDef.IsAggro)) { if (!pawn2.Downed) { if (pawn2.IsColonist) { return(false); } if (!pawn2.IsPrisonerOfColony && pawn2.Faction != Faction.OfPlayer) { return(false); } if (pawn2.guest != null && pawn2.guest.Released) { return(false); } } Building_Bed building_Bed = FindBed(pawn, pawn2); if (building_Bed != null && pawn2.CanReserve(building_Bed, building_Bed.SleepingSlotsCount)) { return(true); } return(false); } } return(false); }
public static bool ShouldSeekMedicalRestUrgent(Pawn pawn) { return(pawn.Downed || pawn.health.HasHediffsNeedingTend(false) || HealthAIUtility.ShouldHaveSurgeryDoneNow(pawn)); }
private static bool <get_AwaitingMedicalOperation> m__0(Pawn p) { return(HealthAIUtility.ShouldHaveSurgeryDoneNow(p) && p.InBed()); }
public override bool HasJobOnThing(Pawn pawn, Thing t, bool forced = false) { Pawn pawn2 = t as Pawn; if (pawn2 == null || pawn2 == pawn || pawn2.InBed() || !pawn2.RaceProps.IsFlesh || !HealthAIUtility.ShouldHaveSurgeryDoneNow(pawn2) || !pawn.CanReserve(pawn2, 1, -1, null, forced) || (pawn2.InMentalState && pawn2.MentalStateDef.IsAggro)) { return(false); } if (!pawn2.Downed) { if (pawn2.IsColonist) { return(false); } if (!pawn2.IsPrisonerOfColony && pawn2.Faction != Faction.OfPlayer) { return(false); } if (pawn2.guest != null && pawn2.guest.Released) { return(false); } } Building_Bed building_Bed = FindBed(pawn, pawn2); if (building_Bed != null && pawn2.CanReserve(building_Bed, building_Bed.SleepingSlotsCount)) { return(true); } return(false); }