public override bool HasJobOnThing(Pawn pawn, Thing t, bool forced = false) { IItemProcessor workThing = t as IItemProcessor; if (workThing == null || workThing.Finished || workThing.SpaceLeftForItem <= 0) { return(false); } if (!workThing.TemperatureAcceptable) { JobFailReason.Is(Static.TemperatureTrans); return(false); } Building_Smoker smoker = t as Building_Smoker; if (smoker != null) { if (smoker.Finished) { return(false); } if (!smoker.CanAddFood) { JobFailReason.Is(Static.SmokerLocked); return(false); } } if (t.IsForbidden(pawn) || !pawn.CanReserveAndReach(t, PathEndMode.Touch, pawn.NormalMaxDanger(), 1, -1, null, forced)) { return(false); } if (pawn.Map.designationManager.DesignationOn(t, DesignationDefOf.Deconstruct) != null) { return(false); } if (FindIngredient(pawn, workThing) == null) { JobFailReason.Is(Static.NoIngredient); return(false); } return(!t.IsBurning()); }
public override bool HasJobOnThing(Pawn pawn, Thing t, bool forced = false) { Building_Smoker smoker = t as Building_Smoker; return(smoker != null && smoker.NeedsTending && !t.IsBurning() && !t.IsForbidden(pawn) && pawn.CanReserveAndReach(t, PathEndMode.Touch, pawn.NormalMaxDanger(), 1, -1, null, forced)); }