public override bool HasJobOnThing(Pawn pawn, Thing t, bool forced) { Building_FermentingVat building_FermentingVat = t as Building_FermentingVat; WorkGiverDynamicDef dyn_def = def as WorkGiverDynamicDef; if (dyn_def != null && dyn_def.outputThingDef != null) { if (building_FermentingVat.def != dyn_def.outputThingDef) { return(false); } } return(building_FermentingVat != null && building_FermentingVat.Fermented && !t.IsBurning() && !t.IsForbidden(pawn) && pawn.CanReserveAndReach(t, PathEndMode.Touch, pawn.NormalMaxDanger(), 1)); }
public override bool HasJobOnThing(Pawn pawn, Thing t, bool forced) { Building_FermentingVat building_FermentingVat = t as Building_FermentingVat; if (building_FermentingVat == null || building_FermentingVat.Fermented || building_FermentingVat.SpaceLeftForInput <= 0) { return(false); } float temperature = building_FermentingVat.Position.GetTemperature(building_FermentingVat.Map); CompProperties_TemperatureRuinable compProperties = building_FermentingVat.def.GetCompProperties <CompProperties_TemperatureRuinable>(); if (temperature < compProperties.minSafeTemperature + 2f || temperature > compProperties.maxSafeTemperature - 2f) { Reset(); JobFailReason.Is(TemperatureTrans); return(false); } if (t.IsForbidden(pawn) || !pawn.CanReserveAndReach(t, PathEndMode.Touch, pawn.NormalMaxDanger(), 1)) { return(false); } if (pawn.Map.designationManager.DesignationOn(t, DesignationDefOf.Deconstruct) != null) { return(false); } if (this.FindInputThing(pawn, building_FermentingVat) == null) { Reset(); JobFailReason.Is(NoInputTrans); return(false); } WorkGiverDynamicDef dyn_def = def as WorkGiverDynamicDef; if (dyn_def != null && dyn_def.inputThingDef != null) { if (building_FermentingVat.def != dyn_def.inputThingDef) { return(false); } } return(!t.IsBurning()); }