Wiki

effect · puppet

Definition

  • Supported scope:COUNTRY
  • Supported target:THIS, ROOT, PREV, FROM, OWNER, CONTROLLER, OCCUPIED, CAPITAL

Description

Puppets specified country. By default, cancels the puppets existing war relations.
Example 1:
ENG = {
  puppet = ITA
}
Example 2:
ENG = {
  puppet = {
    target = ITA
    end_wars = yes  # Optional, default yes. Will not cancel non-civil wars if set to no.
    end_civil_wars = yes  # Optional, default yes. Will not cancel civil wars if set to no.
  }
}

实战 · 配合 · 坑

实战内容由 AI 生成,并已对照 vanilla 命令词表校验 —— 请当作起点而非权威依据。上方的定义节才是游戏自带文档原文。

实战用法

puppet 常用于和平事件、战后结算或焦点树完成后建立傀儡关系,例如在玩家完成某个外交焦点后令目标国家成为傀儡。在涉及内战剧本时,可通过 end_civil_wars = no 保留内战状态,让傀儡化不会强行结束进行中的内战。

# 英国通过焦点将埃及变为傀儡,但保留内战
focus = {
    id = ENG_puppet_egypt
    ...
    completion_reward = {
        ENG = {
            puppet = {
                target = EGY
                end_wars = yes
                end_civil_wars = no
            }
        }
    }
}

配合关系

  • [diplomatic_relation](/wiki/effect/diplomatic_relation) — 在建立傀儡关系后,可进一步通过该命令设置军事通行权、保证等外交状态,完善宗主-傀儡的外交框架。
  • [add_autonomy_score](/wiki/effect/add_autonomy_score) / [add_autonomy_ratio](/wiki/effect/add_autonomy_ratio) — 傀儡化后立即调整自治度分数,用于精确控制傀儡国的初始自治等级,避免其一开始就处于边缘状态。
  • [end_puppet](/wiki/effect/end_puppet) — 与 puppet 形成对立操作,常在同一个事件链里配合使用,处理"先解除旧傀儡关系再重建"的外交重组逻辑。
  • [has_autonomy_state](/wiki/trigger/has_autonomy_state) — 在执行 puppet 前先触发判断,确认目标国当前并非已处于某一自治等级,防止重复傀儡化导致脚本逻辑混乱。

常见坑

  1. 宿主 scope 写错puppet 必须在宗主国的 scope 下调用,不能在被傀儡国的 scope 里写 puppet = SELF——那会让被傀儡国去傀儡自己,逻辑上无效且容易引发报错。
  2. 忘记 end_wars 的默认行为:默认 end_wars = yes 会自动取消傀儡化相关的战争,如果你的剧本需要保留宗主国正在进行的战争(例如傀儡后继续联合作战),必须显式写 end_wars = no,否则战争会被静默结束而不报任何错误。

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

puppet is commonly used in peace events, post-war settlements, or upon focus tree completion to establish puppet relationships. For example, after a player completes a diplomatic focus, you can make the target nation a puppet. When dealing with civil war scenarios, you can use end_civil_wars = no to preserve the civil war state, preventing puppetization from forcibly ending an ongoing civil war.

# Britain converts Egypt to a puppet via focus, but preserves the civil war
focus = {
    id = ENG_puppet_egypt
    ...
    completion_reward = {
        ENG = {
            puppet = {
                target = EGY
                end_wars = yes
                end_civil_wars = no
            }
        }
    }
}

Synergy

  • [diplomatic_relation](/wiki/effect/diplomatic_relation) — After establishing a puppet relationship, you can further use this command to set up military access, guarantees, and other diplomatic statuses to complete the suzerain-puppet diplomatic framework.
  • [add_autonomy_score](/wiki/effect/add_autonomy_score) / [add_autonomy_ratio](/wiki/effect/add_autonomy_ratio) — Immediately adjust autonomy scores after puppetization to precisely control the puppet's initial autonomy level and avoid it starting in a marginal state.
  • [end_puppet](/wiki/effect/end_puppet) — Forms the opposite operation to puppet and is often used together in the same event chain to handle diplomatic reorganization logic like "remove old puppet relationship then rebuild."
  • [has_autonomy_state](/wiki/trigger/has_autonomy_state) — Trigger a check before executing puppet to confirm the target nation is not already in a certain autonomy state, preventing duplicate puppetization from causing script logic confusion.

Common Pitfalls

  1. Wrong host scope: puppet must be called within the suzerain's scope, not written as puppet = SELF in the puppet nation's scope—that would cause the puppet nation to puppet itself, which is logically invalid and prone to errors.
  2. Forgetting the default behavior of end_wars: The default end_wars = yes automatically cancels wars related to puppetization. If your scenario needs to preserve ongoing wars for the suzerain (for example, continuing joint operations after puppetization), you must explicitly write end_wars = no. Otherwise, the war will be silently ended without any error messages.