public override Job JobOnThing(Pawn pawn, Thing t) { if (t.Faction != pawn.Faction) { return(null); } Blueprint blueprint = t as Blueprint; if (blueprint == null) { return(null); } Thing thingToIgnore = GenConstruct.MiniToInstallOrBuildingToReinstall(blueprint); Thing thing = blueprint.FirstBlockingThing(pawn, thingToIgnore, false); if (thing != null) { if (thing.def.category == ThingCategory.Plant) { // SINGLE CHANGE FROM VANILLA WorkGiver, make designation instead of immediate cutting plants //return new Job(JobDefOf.CutPlant, thing); if (Find.DesignationManager.DesignationOn(thing, DesignationDefOf.CutPlant) == null && Find.DesignationManager.DesignationOn(thing, DesignationDefOf.HarvestPlant) == null) { Find.DesignationManager.AddDesignation(new Designation(thing, DesignationDefOf.CutPlant)); } return(null); } else if (thing.def.category == ThingCategory.Item) { if (thing.def.EverHaulable) { return(HaulAIUtility.HaulAsideJobFor(pawn, thing)); } Log.ErrorOnce(string.Concat(new object[] { "Never haulable ", thing, " blocking ", t, " at ", t.Position }), 6429262); } return(null); } if (!GenConstruct.CanConstruct(blueprint, pawn)) { return(null); } Job job = this.DeconstructExistingEdificeJob(pawn, blueprint); if (job != null) { return(job); } Job job2 = base.ResourceDeliverJobFor(pawn, blueprint); if (job2 != null) { return(job2); } Job job3 = this.NoCostFrameMakeJobFor(pawn, blueprint); if (job3 != null) { return(job3); } return(null); }