Hands-On Usage
set_grand_doctrine is commonly used in focus trees, decisions, events, or scripted triggers to automatically unlock and activate a specified grand doctrine for a nation when reaching certain historical milestones, without requiring manual player interaction in the doctrine interface. For example, Germany automatically receives the corresponding grand doctrine upon completing the "Blitzkrieg" focus:
focus = {
id = GER_blitzkrieg_focus
...
completion_reward = {
set_grand_doctrine = mobile_warfare
}
}
Synergy
[has_completed_focus](/wiki/trigger/has_completed_focus): Check in limit blocks whether prerequisite focuses have been completed, ensuring grand doctrines unlock in the correct sequence and preventing premature activation.
[has_any_grand_doctrine](/wiki/trigger/has_any_grand_doctrine): Verify whether the target nation already possesses any grand doctrine; useful in conditional logic to prevent duplicate assignments or for AI behavior branching.
[add_doctrine_cost_reduction](/wiki/effect/add_doctrine_cost_reduction): Often paired together to reduce research costs for subsequent subdoctrines while activating a grand doctrine, granting additional doctrine progression bonuses.
[has_completed_subdoctrine](/wiki/trigger/has_completed_subdoctrine): Check subdoctrine completion status; combined with set_grand_doctrine to establish complete doctrine advancement logic such as "Complete subdoctrine → Unlock grand doctrine."
Common Pitfalls
- Calling directly within STATE scope: This effect only supports COUNTRY scope. Invoking it within state events or inside
every_owned_state will cause script errors or silent failures. Always ensure the execution block is within a country scope.
- Passing a non-existent grand doctrine key: The value for
set_grand_doctrine must be an actual grand_doctrine key defined in doctrine files like 00_grand_battle_plan.txt. Spelling errors or using regular subdoctrine names produce no warnings but fail silently, making debugging extremely difficult.