Пример #1
0
        protected override bool CanApplyOn(Pawn pawn)
        {
            bool hasRequiredHediff = true;

            if (recipe.HasModExtension <DefModExtension_Recipe>())
            {
                DefModExtension_Recipe ext = recipe.GetModExtension <DefModExtension_Recipe>();
                if (ext.requiredHediff != null && !pawn.health.hediffSet.HasHediff(ext.requiredHediff))
                {
                    hasRequiredHediff = false;
                }
            }
            bool isArtillery             = recipe.ingredients.FirstOrDefault((IngredientCount ic) => ic.FixedIngredient is ThingDef td && td.placeWorkers != null && td.placeWorkers.FirstOrDefault((Type t) => t == typeof(PlaceWorker_NotUnderRoof)) != null) != null;
            bool mortarResearchCompleted = DefDatabase <ResearchProjectDef> .AllDefs.FirstOrDefault((ResearchProjectDef rp) => rp == WTH_DefOf.WTH_TurretModule_Mortars && rp.IsFinished) != null;

            bool isTurretGun = !isArtillery;
            bool turretGunResearchCompleted = DefDatabase <ResearchProjectDef> .AllDefs.FirstOrDefault((ResearchProjectDef rp) => rp == WTH_DefOf.WTH_TurretModule_GunTurrets && rp.IsFinished) != null;

            if (isArtillery && !mortarResearchCompleted)
            {
                return(false);
            }
            if (isTurretGun && !turretGunResearchCompleted)
            {
                return(false);
            }
            return(pawn.IsHacked() && !pawn.health.hediffSet.HasHediff(recipe.addsHediff) && hasRequiredHediff);
        }
Пример #2
0
        public override bool CanApplyOn(Pawn pawn, out string reason)
        {
            reason = "";
            if (recipe.HasModExtension <DefModExtension_Recipe>())
            {
                DefModExtension_Recipe ext = recipe.GetModExtension <DefModExtension_Recipe>();
                if (ext.requiredHediff != null && !pawn.health.hediffSet.HasHediff(ext.requiredHediff))
                {
                    reason = "WTH_Reason_MissingHediff".Translate(ext.requiredHediff.label);
                    return(false);
                }
            }
            bool isArtillery             = recipe.ingredients.FirstOrDefault((IngredientCount ic) => ic.FixedIngredient is ThingDef td && td.placeWorkers != null && td.placeWorkers.FirstOrDefault((Type t) => t == typeof(PlaceWorker_NotUnderRoof)) != null) != null;
            bool mortarResearchCompleted = DefDatabase <ResearchProjectDef> .AllDefs.FirstOrDefault((ResearchProjectDef rp) => rp == WTH_DefOf.WTH_TurretModule_Mortars && rp.IsFinished) != null;

            bool isTurretGun = !isArtillery;
            bool turretGunResearchCompleted = DefDatabase <ResearchProjectDef> .AllDefs.FirstOrDefault((ResearchProjectDef rp) => rp == WTH_DefOf.WTH_TurretModule_GunTurrets && rp.IsFinished) != null;

            if (isArtillery && !mortarResearchCompleted)
            {
                reason = "WTH_Reason_MortarResearch".Translate();
                return(false);
            }
            if (isTurretGun && !turretGunResearchCompleted)
            {
                reason = "WTH_Reason_TurretResearch".Translate();
                return(false);
            }
            return(true);
        }
        protected override bool CanApplyOn(Pawn pawn)
        {
            bool hasRequiredHediff   = true;
            bool hasRequiredBodySize = true;

            if (recipe.HasModExtension <DefModExtension_Recipe>())
            {
                DefModExtension_Recipe ext = recipe.GetModExtension <DefModExtension_Recipe>();
                if (ext.requiredHediff != null && !pawn.health.hediffSet.HasHediff(ext.requiredHediff))
                {
                    hasRequiredHediff = false;
                }
                if (pawn.BodySize < ext.minBodySize)
                {
                    hasRequiredBodySize = false;
                }
            }

            return(pawn.IsHacked() && !pawn.health.hediffSet.HasHediff(recipe.addsHediff) && hasRequiredHediff && hasRequiredBodySize);
        }
        public override bool CanApplyOn(Pawn pawn, out string reason)
        {
            reason = "";
            if (recipe.HasModExtension <DefModExtension_Recipe>())
            {
                DefModExtension_Recipe ext = recipe.GetModExtension <DefModExtension_Recipe>();
                if (ext.requiredHediff != null && !pawn.health.hediffSet.HasHediff(ext.requiredHediff))
                {
                    reason = "WTH_Reason_MissingHediff".Translate(ext.requiredHediff.label);
                    return(false);
                }

                bool ignoreBodySize = recipe.addsHediff == WTH_DefOf.WTH_TurretModule && pawn.def.GetModExtension <DefModExtension_TurretModule>() is DefModExtension_TurretModule modExt && modExt.ignoreMinBodySize;
                if (!ignoreBodySize && pawn.BodySize < ext.minBodySize)
                {
                    reason = "WTH_Reason_BodySize".Translate(ext.minBodySize);
                    return(false);
                }
            }
            return(true);
        }