Changelog entry
Chain offensive tracking (P2.1A)
2026-03-20
- Added server-authoritative chain-offensive tracking: consecutive cross-alliance attacks within a war are now recorded per `(attacker alliance, defender alliance, war)` tuple.
- Active chains expire to a 24-hour cooldown (12 ticks) if no follow-up attack lands within the same tick; cooldowns reset cleanly before a chain can be restarted.
- `ChainOffensiveStarted`, `ChainOffensiveIncremented`, and `ChainOffensiveExpired` events are emitted inside the tick transaction — no client-side state is trusted.
- No UI surface change yet; this lays the data and engine foundation for chain-bonus gameplay.