Wiki

trigger · has_terrain

Definition

  • Supported scope:COUNTRY
  • Supported target:none

Description

Checks if a country has any province of the specified terrain type.
Example: has_terrain = mountain

Hands-On Notes

Hands-on notes are AI-generated and checked against the vanilla command vocabulary — treat them as a starting point, not authoritative reference. The definition above is the game's own documentation.

Hands-On Usage

has_terrain is commonly used in geography-themed mods to unlock exclusive decisions, national focuses, or advisors based on whether a country owns provinces with specific terrain types—for example, only "mountainous nations" can research particular mountain warfare doctrines, or desert nations can gain certain logistics bonuses. It can also be used in available blocks to dynamically restrict certain content from being visible to countries lacking that terrain.

# Only countries owning mountain provinces can activate this decision
available = {
    has_terrain = mountain
}

Synergy

  • [any_owned_state](/wiki/trigger/any_owned_state) — If you need to check more granular terrain conditions (such as a state satisfying both terrain and resource requirements simultaneously), you can use has_terrain at different scope levels to complement each other.
  • [controls_state](/wiki/trigger/controls_state) — Using them together can distinguish between "owns" and "controls," preventing players from accidentally triggering faction-exclusive content by occupying enemy mountain provinces.
  • [add_ideas](/wiki/effect/add_ideas) — Once the has_terrain condition is met, it is commonly used to grant national spirits matching that terrain's style (such as mountain combat bonuses).
  • [add_tech_bonus](/wiki/effect/add_tech_bonus) — Pair terrain checks with specific technology discounts; for example, countries with desert terrain gain accelerated infantry equipment research.

Common Pitfalls

  1. Wrong Scopehas_terrain can only be used under COUNTRY scope. Beginners sometimes mistakenly place it within STATE scope (such as inside any_owned_state sub-blocks), causing script errors or silent failures. To check terrain at state level, you should use state-level terrain-related syntax instead.
  2. Semantic Misunderstanding — This trigger checks whether "the country owns (owns) at least one province of that terrain type," not whether it "controls" them. Therefore, occupied mountain provinces no longer count. If your mod's design intent is based on control range assessment, you need to combine this with other conditions to supplement the logic.