Wiki

effect · set_grand_doctrine

Definition

  • Supported scope:COUNTRY
  • Supported target:none

Description

Activate (unlock and assign) the specified grand doctrine

	### Examples
	```
	GER = {
		set_grand_doctrine = mobile_warfare
	}
	```

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

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

  1. 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.
  2. 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.