public override bool HasJobOnThing(Pawn pawn, Thing t, bool forced = false) { Building_RxlvnFermentingBarrel building_RxlvnBarrel = t as Building_RxlvnFermentingBarrel; if (building_RxlvnBarrel == null || building_RxlvnBarrel.Fermented || building_RxlvnBarrel.SpaceLeftForMash <= 0) { return(false); } float ambientTemperature = building_RxlvnBarrel.AmbientTemperature; CompProperties_TemperatureRuinable compProperties = building_RxlvnBarrel.def.GetCompProperties <CompProperties_TemperatureRuinable>(); if (ambientTemperature < compProperties.minSafeTemperature + 2f || ambientTemperature > compProperties.maxSafeTemperature - 2f) { JobFailReason.Is(WorkGiver_FillRxlvnFermentingBarrel.TemperatureTrans, null); return(false); } if (!t.IsForbidden(pawn)) { LocalTargetInfo target = t; if (pawn.CanReserve(target, 1, -1, null, forced)) { if (pawn.Map.designationManager.DesignationOn(t, DesignationDefOf.Deconstruct) != null) { return(false); } if (this.FindWort(pawn, building_RxlvnBarrel) == null) { JobFailReason.Is(WorkGiver_FillRxlvnFermentingBarrel.NoWortTrans, null); return(false); } return(!t.IsBurning()); } } return(false); }
public override Job JobOnThing(Pawn pawn, Thing t, bool forced = false) { Building_RxlvnFermentingBarrel barrel = (Building_RxlvnFermentingBarrel)t; Thing t2 = this.FindWort(pawn, barrel); return(new Job(AntDefOf.FillRxlvnFermentingBarrel, t, t2)); }
private Thing FindWort(Pawn pawn, Building_RxlvnFermentingBarrel barrel) { Predicate <Thing> predicate = (Thing x) => !x.IsForbidden(pawn) && pawn.CanReserve(x, 1, -1, null, false); IntVec3 position = pawn.Position; Map map = pawn.Map; ThingRequest thingReq = ThingRequest.ForDef(AntDefOf.Ant_RxlvnMash); PathEndMode peMode = PathEndMode.ClosestTouch; TraverseParms traverseParams = TraverseParms.For(pawn, Danger.Deadly, TraverseMode.ByPawn, false); Predicate <Thing> validator = predicate; return(GenClosest.ClosestThingReachable(position, map, thingReq, peMode, traverseParams, 9999f, validator, null, 0, -1, false, RegionType.Set_Passable, false)); }
public override bool HasJobOnThing(Pawn pawn, Thing t, bool forced = false) { Building_RxlvnFermentingBarrel building_RxlvnBarrel = t as Building_RxlvnFermentingBarrel; if (building_RxlvnBarrel == null || !building_RxlvnBarrel.Fermented) { return(false); } if (t.IsBurning()) { return(false); } if (!t.IsForbidden(pawn)) { LocalTargetInfo target = t; if (pawn.CanReserve(target, 1, -1, null, forced)) { return(true); } } return(false); }