Wiki

trigger · is_puppet

Definition

  • Supported scope:COUNTRY
  • Supported target:any

Description

Checks if the country is puppet of any other country

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

is_puppet is commonly used to determine whether the current country is in a puppet state, thereby restricting the activation of certain national focuses, decisions, or events—for example, preventing a puppet state from launching an independence war decision, or unlocking a technology tree only after the puppet is liberated. The following example demonstrates how to require the country to not be a puppet in a decision's available block:

available = {
    NOT = { is_puppet = yes }
    has_war = no
}

If you want to trigger an event specifically for puppet states, you can also directly write is_puppet = yes as the trigger condition.

Synergy

  • [has_autonomy_state](/wiki/trigger/has_autonomy_state): After is_puppet = yes confirms the puppet relationship exists, use has_autonomy_state to further determine the specific autonomy tier (such as dominion or integrated puppet), enabling tiered logic.
  • [compare_autonomy_progress_ratio](/wiki/trigger/compare_autonomy_progress_ratio): Combined with is_puppet, this can determine the autonomy progress ratio of a puppet state, commonly used in event trigger conditions for "about to become independent" scenarios.
  • [end_puppet](/wiki/effect/end_puppet): In an effect block, when the is_puppet = yes condition is satisfied, you can invoke end_puppet to revoke the puppet relationship, typically used in implementing independence events.
  • [any_subject_country](/wiki/trigger/any_subject_country): From the suzerain's perspective, any_subject_country is commonly used to iterate through all subject states, and by nesting is_puppet = yes within its limit, you can precisely filter puppets (as opposed to other types of subject states).

Common Pitfalls

  1. Treating it as a bidirectional relationship: is_puppet only determines "am I someone else's puppet" when scoped to the puppet state itself, not to check "do I have a puppet" from the suzerain's scope. Beginners often write is_puppet = yes under the suzerain's scope, causing the logic to always fail. The correct approach is to use any_subject_country + limit to iterate from the suzerain's side.
  2. Overlooking autonomy tier differences: Not all subject relationships will return true for is_puppet—this trigger specifically targets the "puppet" autonomy state; if the subject is another tier such as a dominion, the result may differ from expectations. It is recommended to combine with has_autonomy_state for more precise determination.