Hands-On Usage
num_of_owned_factories is commonly used to check a country's industrial capacity threshold, particularly in national focuses, decisions, or events where the player or AI must meet a minimum factory baseline to trigger certain conditions. Typical scenarios include restricting minor nations from certain military expansion routes, or serving as a prerequisite industrial condition in the available block of a decision.
# Example: A decision becomes available only when the nation owns at least 50 factories
available = {
num_of_owned_factories > 50
}
Synergy
[has_completed_focus](/wiki/trigger/has_completed_focus) — Often combined with focus completion checks to ensure players reach the factory count requirement only after completing a specific industrial focus, together forming a comprehensive "industrialization progress" verification.
[controls_state](/wiki/trigger/controls_state) — In expansion-oriented mods, typically paired to simultaneously check both occupation of key industrial states and total factory count exceeding a threshold before unlocking the next-stage objective.
[any_owned_state](/wiki/trigger/any_owned_state) — When finer-grained analysis of "which states contribute factories" is needed, can be used in conjunction within a child scope alongside num_of_owned_factories to create dual-layer validation at both macro and micro levels.
[add_cic](/wiki/effect/add_cic) — After conditions based on factory count are satisfied, commonly used to reward additional civilian factories, creating a positive feedback loop of "industrial snowballing."
Common Pitfalls
- Mistakenly assuming it includes trade/modifier factors: This trigger counts only factories directly owned within states. Factory capacity gained through trade agreements, puppet tribute, or temporary modifiers is not included. Newcomers often confuse this with actual production capacity, causing condition checks to diverge from expectations.
- Scope errors causing silent failures:
num_of_owned_factories is only valid in COUNTRY scope. If accidentally placed within STATE scope (such as inside an any_owned_state sub-block), the script will not error but the check will silently always return false, making debugging extremely time-consuming.