DPC Zettelkasten Open in the explorer

Faction Power

A faction's live strength — the sum of its members' power plus a conditional vassal contribution — and the cap on how much land it may hold.

Faction power is the single number the simulation runs on. It is computed, never stored, and it decides how much territory a faction can defend — see Demesne Limit.

The formula

memberPower    = Σ power of each member
maxMemberPower = memberCount × players.maxPower
vassalPower    = Σ (vassal.power × vassalPowerContributionMultiplier)

power = memberPower
      + vassalPower   if memberPower ≥ maxMemberPower / 2
      + bonusPower    if the acceptBonusPower flag is set

memberPower sums each member's Player Power; vassalPower walks the factions related to this one as vassals — see Faction Relationship.

The half-strength gate

The interesting clause is the condition on vassal power: a liege only receives its vassals' contribution while its own members are at or above half their collective maximum. A faction cannot subsist on tribute alone. If its own members stop logging in, the vassal contribution switches off entirely — not proportionally, but as a cliff.

The effect is that Vassalage amplifies a healthy faction rather than propping up a hollow one, and a large empire whose core has gone quiet collapses to the size its own members can hold.

Bonus power is opt-in

bonusPower is a stored constant an operator can grant. A faction can refuse it by clearing the acceptBonusPower Faction Flag — the flag gates both the power and maxPower computations, so declining it costs the faction its ceiling as well as its floor. Servers that want a pure simulation can leave the mechanism unused.

Because power is a computed property on the Faction data class, it is recalculated on every access rather than cached. Anything that walks all factions and reads power therefore also walks every member's player record — worth knowing before adding such a loop to a hot path.

Sources

Linked from