public override float GetPriority(Pawn pawn) { if (FuelUtility.FueledEnergySourceNeedRefilling(pawn) != null) { return(10f); } return(0f); }
protected override Job TryGiveJob(Pawn pawn) { if (pawn.Downed) { return(null); } if (pawn.InBed()) { return(null); } Thing fueledEnergySource = FuelUtility.FueledEnergySourceNeedRefilling(pawn); //Nothing to refill. if (fueledEnergySource == null) { return(null); } //Is there anything to refill it witH? EnergySource_Fueled fuelEnergySourceComp = fueledEnergySource.TryGetComp <EnergySource_Fueled>(); if (!fuelEnergySourceComp.autoRefuel) { return(null); } Thing closestConsumablePowerSource = FuelUtility.FindSuitableFuelForPawn(pawn, fuelEnergySourceComp); //No compatible fuel source found. if (closestConsumablePowerSource == null) { return(null); } //Refill the fueled energy source with this. Job refuelJob = new Job(refillJob, fueledEnergySource, closestConsumablePowerSource); int refuelCount = fuelEnergySourceComp.CalculateFuelNeededToRefill(closestConsumablePowerSource); refuelJob.count = refuelCount; return(refuelJob); }