Hands-On Usage
is_general_captured is commonly used in prisoner-of-war events or decisions — for example, triggering a diplomatic negotiation event when a commander is captured, restricting a captured commander from performing assignments, or granting a reward trait after a prisoner is released. The example below shows how to check whether a specific character is currently in a captured state inside an event trigger:
# Inside a character event's trigger block, check whether the commander is captured
some_character = {
is_general_captured = yes
is_corps_commander = yes
}
It can also be paired with the release_from_captivity effect to build a "trigger release" logic flow:
# Confirm the target is still captured in the decision's available block, then release via effect
available = {
some_character = {
is_general_captured = yes
}
}
effect = {
some_character = {
release_from_captivity = yes
}
}
Synergy
- is_corps_commander / is_field_marshal: Use alongside
is_general_captured to narrow the scope and confirm the captured character is actually a commander rather than some other character type, preventing false positives.
- can_be_captured: Used as a prerequisite check before capture logic fires, confirming that the commander is eligible to be captured. Together with
is_general_captured, this forms a complete "can be captured → has been captured" evaluation chain.
- release_from_captivity: The most common follow-up effect. First verify the state with
is_general_captured = yes, then execute the release — this prevents accidentally triggering a release on a commander who was never captured.
- add_unit_leader_trait: Adds a trait to the commander after release or event resolution (e.g., a "POW Experience" trait). This is typically used in the same event's trigger/effect pair as the
is_general_captured check.
Common Pitfalls
- Wrong scope target:
is_general_captured must be used inside a CHARACTER scope. Writing it directly inside country = { is_general_captured = yes } or at the top level will cause an error. You must first enter the correct scope via some_character = { ... } or any_character = { ... }.
- Assuming
= no means "alive and free": is_general_captured = no only rules out the "currently captured" state — it does not distinguish between "at liberty," "dead," or "retired." If you need a precise check, stack additional conditions such as is_unit_leader = yes.