Hands-On Usage
release_on_controlled is commonly used in scripted events or decisions to allow the player or AI nations to establish a puppet state from an occupied/controlled territory without needing to own all of that nation's core states beforehand. Typical scenarios include: liberating occupied nations as vassals in post-war peace settlements, or in civil war scripts where the victorious side immediately controls and establishes a new regime.
# Example: Germany releases occupied France as a puppet through a decision
release_on_controlled = FRA
Synergy
[controls_state](/wiki/trigger/controls_state) — Check before execution whether you actually control key states of the target nation, avoiding invalid triggers due to incomplete occupation;
[exists](/wiki/trigger/exists) — First verify whether the target tag already exists as an independent nation, preventing conflicts from releasing an already-existing nation;
[add_state_core](/wiki/effect/add_state_core) — After releasing the puppet, add cores to the host nation over relevant states to strengthen the territorial legitimacy of the puppet relationship;
[diplomatic_relation](/wiki/effect/diplomatic_relation) — Pair with subsequent diplomatic relations (such as military access rights) so the puppet enters the intended diplomatic state immediately upon establishment.
Common Pitfalls
- Mistakenly assuming only "owning" states is sufficient: This effect accepts both "controlled" states, but if the target nation's capital state is neither owned nor controlled, release often fails silently — always confirm key states are actually in your possession using
[controls_state](/wiki/trigger/controls_state) or [has_capitulated](/wiki/trigger/has_capitulated) before triggering.
- Failing to check whether the target tag already exists as an independent nation: If the target nation currently exists as an independent nation (
[exists](/wiki/trigger/exists) is true and is not a puppet), calling this effect directly may produce unexpected results; either handle it first with annex_country or other logic before releasing, or add a condition to skip it.