protected override Job TryGiveJob(Pawn pawn)
        {
            MentalState_Slaughterer mentalState_Slaughterer = pawn.MentalState as MentalState_Slaughterer;
            Job result;

            if (mentalState_Slaughterer != null && mentalState_Slaughterer.SlaughteredRecently)
            {
                result = null;
            }
            else
            {
                Pawn pawn2 = SlaughtererMentalStateUtility.FindAnimal(pawn);
                if (pawn2 == null || !pawn.CanReserveAndReach(pawn2, PathEndMode.Touch, Danger.Deadly, 1, -1, null, false))
                {
                    result = null;
                }
                else
                {
                    result = new Job(JobDefOf.Slaughter, pawn2)
                    {
                        ignoreDesignations = true
                    };
                }
            }
            return(result);
        }
 public override bool StateCanOccur(Pawn pawn)
 {
     if (!base.StateCanOccur(pawn))
     {
         return(false);
     }
     return(SlaughtererMentalStateUtility.FindAnimal(pawn) != null);
 }
        protected override Job TryGiveJob(Pawn pawn)
        {
            MentalState_Slaughterer mentalState_Slaughterer = pawn.MentalState as MentalState_Slaughterer;

            if (mentalState_Slaughterer != null && mentalState_Slaughterer.SlaughteredRecently)
            {
                return(null);
            }
            Pawn pawn2 = SlaughtererMentalStateUtility.FindAnimal(pawn);

            if (pawn2 != null && pawn.CanReserveAndReach(pawn2, PathEndMode.Touch, Danger.Deadly, 1, -1, null, false))
            {
                Job job = new Job(JobDefOf.Slaughter, pawn2);
                job.ignoreDesignations = true;
                return(job);
            }
            return(null);
        }