Exemple #1
0
        public override Job JobOnThing(Pawn pawn, Thing t, bool forced = false)
        {
            // Different factions
            if (t.Faction != pawn.Faction)
            {
                return(null);
            }

            // Not upgradable
            var upgradableComp = t.TryGetComp <CompUpgradable>();

            if (upgradableComp == null)
            {
                return(null);
            }

            // Not designated to be upgraded
            if (t.Map.designationManager.DesignationOn(t, DesignationDefOf.UpgradeTurret) == null)
            {
                return(null);
            }

            // Blocked
            if (GenConstruct.FirstBlockingThing(t, pawn) != null)
            {
                return(GenConstruct.HandleBlockingThingJob(t, pawn, forced));
            }

            // Construction skill
            var checkSkill = def.workType == WorkTypeDefOf.Construction;

            if (checkSkill && pawn.skills.GetSkill(SkillDefOf.Construction).Level < upgradableComp.Props.constructionSkillPrerequisite)
            {
                return(null);
            }

            return(ResourceDeliverJobFor(pawn, upgradableComp, false));
        }