Hands-On Usage
every_faction_member is most commonly used in faction-wide synchronization scenarios — for example, when a war breaks out, applying a national spirit, firing an event, or distributing resources to every faction member all at once, effectively building a "one-click" faction-wide buff or penalty system. It also pairs well with limit to filter down to members that meet specific conditions, applying effects only to those countries — such as granting extra research slots only to members who have not yet researched a particular technology.
GER = {
every_faction_member = {
limit = {
has_war = yes
has_idea = war_economy
}
add_war_support = 0.05
add_stability = 0.03
add_manpower = 10000
}
}
Synergy
- is_in_faction — Check in the outer scope whether the target country has actually joined a faction, preventing unexpected self-only behavior when the command is called on a country with no faction.
- has_war — Use inside
limit to filter for members currently at war, ensuring effects only apply to active belligerents.
- add_ideas — The most common pairing: batch-apply a national spirit to every faction member (e.g., a wartime mobilization idea), syncing the status of multiple countries in a single pass.
- country_event — Fire a custom event for each member individually, enabling per-country notifications or branching choices within the faction.
Common Pitfalls
- Assuming the effect silently does nothing when there is no faction: According to the official documentation, if the triggering country does not belong to any faction,
every_faction_member will apply its effects to the triggering country itself rather than doing nothing at all. This can cause the effects to run on the target country unexpectedly. Always add a is_in_faction guard beforehand when debugging.
- Placing
limit outside the block instead of inside it: limit must be written as the first line inside the every_faction_member = { } block. Placing it outside the block will silently have no effect and will not throw an error — a common beginner mistake that causes the filter logic to be completely ignored, since the limit ends up in the wrong parent scope.