public override bool HasJobOnThing(Pawn pawn, Thing t, bool forced = false)
        {
            if (t.Faction != pawn.Faction)
            {
                return(false);
            }
            Building building = t as Building;

            if (building == null)
            {
                return(false);
            }
            if (building.IsForbidden(pawn))
            {
                return(false);
            }
            if (building.IsBurning())
            {
                return(false);
            }
            LocalTargetInfo target = building.InteractionCell;

            //Reserve Interaction Cell, so that this job wouldn't affect refueling job or updation job
            if (!pawn.CanReserve(target, 1, -1, null, forced))
            {
                return(false);
            }
            CompDetection_ManualDevice comp = building.TryGetComp <CompDetection_ManualDevice>();

            return(comp.CanUseNow);
        }
예제 #2
0
        public override bool HasJobOnThing(Pawn pawn, Thing t, bool forced = false)
        {
            if (t.Faction != pawn.Faction)
            {
                return(false);
            }
            Building building = t as Building;

            if (building == null)
            {
                return(false);
            }
            if (building.IsForbidden(pawn))
            {
                return(false);
            }
            if (building.IsBurning())
            {
                return(false);
            }
            LocalTargetInfo target = building;

            if (!pawn.CanReserve(target, 1, -1, null, forced))
            {
                return(false);
            }
            CompDetection_ManualDevice comp = building.TryGetComp <CompDetection_ManualDevice>();

            return(comp.CanUseNow);
        }
        public override bool ShouldSkip(Pawn pawn, bool forced = false)
        {
            List <Building> allBuildingsColonist = pawn.Map.listerBuildings.allBuildingsColonist;

            for (int i = 0; i < allBuildingsColonist.Count; i++)
            {
                if (allBuildingsColonist[i].def == PESDefOf.PES_watchtower)
                {
                    CompDetection_ManualDevice comp = allBuildingsColonist[i].GetComp <CompDetection_ManualDevice>();
                    if (comp != null && comp.CanUseNow)
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }