// 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);
        }
Exemple #2
0
        //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);
            }
        }