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); }