effect · demote_leader
Definition
- Supported scope:
CHARACTER - Supported target:
none
Description
Demotes field marshal to general
demote_leaderCHARACTERnoneDemotes field marshal to general
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.
demote_leader is commonly used in scripted events or decisions to forcibly demote a field marshal to general rank due to narrative reasons such as military defeat, political setback, or injury, enabling dynamic changes to the command structure. For example, in a "command failure" event where the player-controlled character is automatically demoted:
character_event = {
id = my_mod.101
title = "Command Failure"
option = {
name = "Accept Punishment"
# scope is already CHARACTER
demote_leader = yes
}
}
[is_field_marshal](/wiki/trigger/is_field_marshal): Use this trigger before executing the demotion to verify the character is actually a field marshal, avoiding logic errors from calling this command on ordinary generals.[add_corps_commander_role](/wiki/effect/add_corps_commander_role): After demotion, if the character lacks a corps commander role definition, use this command to supplement the configuration and ensure the character can assume command normally after demotion.[is_leading_army_group](/wiki/trigger/is_leading_army_group): Before demotion, check whether the character is currently commanding an army group; if still in command, additional handling of unit assignment logic may be required.[promote_leader](/wiki/effect/promote_leader): Forms a symmetric operation with demote_leader, allowing mutual pairing in reward/punishment event chains to create bidirectional promotion/demotion narratives.demote_leader directly on an ordinary general (is_corps_commander) will not produce the expected effect; you should first use [is_field_marshal](/wiki/trigger/is_field_marshal) to confirm the character actually holds field marshal rank before executing.CHARACTER scope. If written in a country scope without transitioning via every_character or a specific character variable, the script will fail silently without error messages, making it easy to miss during debugging.