Hands-On Usage
has_any_grand_doctrine is commonly used to check whether a country has already allocated a "grand doctrine" within a specific doctrine folder, thereby unlocking subsequent national focuses, decisions, or advisors. For example, in military reform mods, you can use it to verify whether the player has activated a land or naval doctrine direction, then decide whether to display corresponding specialized reward decisions.
# Only available if the country has a grand doctrine assigned in the land folder
available = {
has_any_grand_doctrine = land
}
Synergy
[has_completed_subdoctrine](/wiki/trigger/has_completed_subdoctrine): Used together to further distinguish between "grand doctrine allocated" and "specific subdoctrine completed", enabling more granular doctrine progress thresholds.
[has_doctrine](/wiki/trigger/has_doctrine): Checks whether a specific doctrine node has been unlocked. Combined with has_any_grand_doctrine, it constructs a dual-condition check of "broad direction selected + specific node researched".
[has_completed_track](/wiki/trigger/has_completed_track): Verifies whether an entire doctrine track is completed. Can be used alongside has_any_grand_doctrine as a prerequisite for advanced national focuses or decisions.
[add_doctrine_cost_reduction](/wiki/effect/add_doctrine_cost_reduction): Grants doctrine cost reduction after the trigger condition is met, representing the common design pattern of "grand doctrine direction selected → subsequent research becomes cheaper".
Common Pitfalls
- Scope error: This trigger only works within COUNTRY scope. If placed in STATE or CHARACTER scope, the script will error or silently fail. Always verify that the outer scope is a country.
- Doctrine folder name typo: The parameter is the name of the doctrine folder (e.g.,
land, naval), and must exactly match the folder identifier under common/technologies/. Mismatched capitalization or naming will cause the condition to always evaluate as false.