Ejemplo n.º 1
0
        protected override Job TryGiveJob(Pawn pawn)
        {
            if (!DiabetesUtility.HasIrregularBloodSugar(pawn))
            {
                return(null);
            }
            Hediff hediff = pawn.health.hediffSet.GetFirstHediffOfDef(TypeGetter.HediffDef(EHediffDef.Hypoglycaemia));
            Thing  thing;
            float  value;
            JobDef jobDef;

            if (hediff == null)
            {
                hediff = pawn.health.hediffSet.GetFirstHediffOfDef(TypeGetter.HediffDef(EHediffDef.Hyperglycaemia));
                thing  = DiabetesUtility.FindNextInsulin(pawn);
                value  = DiabetesUtility.InsulinValue;
                jobDef = TypeGetter.JobDef(EJobDef.LowerBloodSugar);
            }
            else
            {
                ThingDef thingDef;
                FoodUtility.TryFindBestFoodSourceFor(pawn, pawn, true, out thing, out thingDef);
                if (thing.def != thingDef)
                {
                    return(null);
                }
                value  = thingDef.ingestible.CachedNutrition * Nutrition_Patch.randomFactor.Average;
                jobDef = JobDefOf.Ingest;
            }
            if (!hediff.CurStage.becomeVisible)
            {
                return(null);
            }
            if (thing == null)
            {
                return(null);
            }
            Job job = JobMaker.MakeJob(jobDef);

            job.targetA = thing;
            job.count   = DiabetesUtility.NumToIngest(thing, hediff, value);
            return(job);
        }