Wiki

trigger · has_subdoctrine_in_track

Definition

  • Supported scope:COUNTRY
  • Supported target:none

Description

Checks if any subdoctrine is currently assigned to (any instance of) the given track

	### Examples
	```
	TAG = {
		has_subdoctrine_in_track = infantry
	}
	```

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

Commonly used in custom doctrine system mods to check whether a doctrine track has been assigned any subdoctrine, thereby determining whether to unlock additional decisions, focuses, or modifiers. For example, allow a military reform event to trigger only after the player has selected any subdoctrine in the infantry track:

available = {
    has_subdoctrine_in_track = infantry
}

Synergy

  • [has_completed_subdoctrine](/wiki/trigger/has_completed_subdoctrine): Often used in conjunction with this trigger—first use has_subdoctrine_in_track to confirm the track has an assignment, then use has_completed_subdoctrine to further verify whether a specific subdoctrine has been researched, forming a two-layer condition filter.
  • [has_completed_track](/wiki/trigger/has_completed_track): Used to distinguish between different progress stages of "subdoctrine assigned" and "entire track fully completed"; combining both enables phased reward logic.
  • [has_doctrine](/wiki/trigger/has_doctrine): Checks whether the parent doctrine has been unlocked; pairing with this trigger ensures the doctrine system's prerequisites are complete.
  • [add_doctrine_cost_reduction](/wiki/effect/add_doctrine_cost_reduction): Serves as a reward on the effect side after the trigger is satisfied, granting doctrine cost reduction—a typical reward output in doctrine-related event chains.

Common Pitfalls

  1. Track name spelling errors: Track identifiers like infantry, armor must exactly match the track identifiers in the mod's doctrine definition files (case-sensitive); writing localized display names (such as Chinese names or full English names) will cause the condition to never evaluate to true without error reporting, making it extremely difficult to debug.
  2. Confusing subdoctrine key with track key: The value for this trigger is the identifier of a track, not a specific subdoctrine's key; if you want to check whether a specific subdoctrine is assigned, use has_completed_subdoctrine instead. Mixing the two is the most common logical mistake among newcomers.