private void GenerateStartingSurvivalToolAssignments() { SurvivalToolAssignment staAnything = MakeNewSurvivalToolAssignment(); staAnything.label = "OutfitAnything".Translate(); SurvivalToolAssignment staConstructor = MakeNewSurvivalToolAssignment(); staConstructor.label = "SurvivalToolAssignmentConstructor".Translate(); staConstructor.filter.SetDisallowAll(null, null); SurvivalToolAssignment staMiner = MakeNewSurvivalToolAssignment(); staMiner.label = "SurvivalToolAssignmentMiner".Translate(); staMiner.filter.SetDisallowAll(null, null); SurvivalToolAssignment staPlantWorker = MakeNewSurvivalToolAssignment(); staPlantWorker.label = "SurvivalToolAssignmentPlantWorker".Translate(); staPlantWorker.filter.SetDisallowAll(null, null); foreach (ThingDef tDef in DefDatabase <ThingDef> .AllDefs) { SurvivalToolProperties toolProps = tDef.GetModExtension <SurvivalToolProperties>(); if (toolProps == null) { continue; } else { if (toolProps.defaultSurvivalToolAssignmentTags.Contains("Constructor")) { staConstructor.filter.SetAllow(tDef, true); } if (toolProps.defaultSurvivalToolAssignmentTags.Contains("Miner")) { staMiner.filter.SetAllow(tDef, true); } if (toolProps.defaultSurvivalToolAssignmentTags.Contains("PlantWorker")) { staPlantWorker.filter.SetAllow(tDef, true); } } } SurvivalToolAssignment staNothing = MakeNewSurvivalToolAssignment(); staNothing.label = "FoodRestrictionNothing".Translate(); staNothing.filter.SetDisallowAll(null, null); }
private float GetBaseEstimatedLifespan(SurvivalTool tool, BuildableDef def) { SurvivalToolProperties props = def.GetModExtension <SurvivalToolProperties>() ?? SurvivalToolProperties.defaultValues; if (!((ThingDef)def).useHitPoints) { return(float.PositiveInfinity); } // For def if (tool == null) { return(GenDate.TicksToDays(Mathf.RoundToInt((BaseWearInterval * def.GetStatValueAbstract(StatDefOf.MaxHitPoints)) / props.toolWearFactor))); } // For thing StuffPropsTool stuffProps = tool.Stuff?.GetModExtension <StuffPropsTool>() ?? StuffPropsTool.defaultValues; float wearFactor = tool.def.GetModExtension <SurvivalToolProperties>().toolWearFactor *(stuffProps.wearFactorMultiplier); return(GenDate.TicksToDays(Mathf.RoundToInt((BaseWearInterval * tool.MaxHitPoints) / wearFactor))); }
public static bool IsSurvivalTool(this BuildableDef def, out SurvivalToolProperties toolProps) { toolProps = def.GetModExtension <SurvivalToolProperties>(); return(def.IsSurvivalTool()); }