Hands-On Usage
has_military_industrial_organization is commonly used in national focuses, decisions, or events to check whether a country has unlocked a specific military industrial organization. For example, it can restrict a decision's availability to countries with an infantry MIO, or trigger special research bonuses only when a particular MIO is present. When combined with dynamic MIO allocation systems, you can also use the var: syntax to check whether a MIO referenced by a variable exists in that country.
# Decision is only available if Germany has a specific armor MIO
GER = {
available = {
has_military_industrial_organization = panzer_mio_token
}
}
# Dynamic detection using variables
some_country = {
trigger = {
has_military_industrial_organization = var:selected_mio_var
}
}
Synergy
[any_military_industrial_organization](/wiki/trigger/any_military_industrial_organization): Use this when you need to check whether a country "has any MIO that meets certain conditions." While has_military_industrial_organization checks for a specific token, these two triggers form complementary pairs for precise versus generalized matching.
[every_military_industrial_organization](/wiki/effect/every_military_industrial_organization): After confirming that an MIO exists, use this effect to perform batch operations on it (such as adding modifiers), establishing a safe "verify-then-operate" pattern.
[has_completed_focus](/wiki/trigger/has_completed_focus): MIOs are typically unlocked through national focuses, so these two commonly appear together in trigger blocks to ensure both the focus is completed and the MIO is activated.
[has_dynamic_modifier](/wiki/trigger/has_dynamic_modifier): Some mods bind MIO activation to dynamic modifiers; use both in parallel to verify a country's complete industrial state.
Common Pitfalls
- Token spelling mismatched with registration name:
has_military_industrial_organization uses the token field value from the MIO definition file, not the MIO's localization key name. Beginners often directly input the localized name, causing the condition to silently fail without error messages.
- Ignoring scope requirements: This trigger only works in COUNTRY scope. If called directly within STATE or CHARACTER scope (for example, inside an
any_owned_state sub-block without switching back to country scope), it will silently fail or throw a scope error. Use owner = { has_military_industrial_organization = ... } to explicitly switch scopes.