Burst
The optional burst field requires an objective’s actions to arrive clustered: at least
amount units within one trailing window of windowSeconds form one burst.
amountRequired then counts completed bursts instead of raw actions. When the field is absent,
every action counts individually.
Burst is the inverse of cooldown: cooldown ignores actions that come too fast, burst ignores actions that come too slow.
Like cooldown, burst is available on every amount-based objective (see the technical note on the Objectives overview).
{ "type": "Kill", "title": "Double Tap", "description": "Kill 2 scientists within 3 seconds of each other, 5 times.", "amountRequired": 5, "burst": { "amount": 2, "windowSeconds": 3 }, "conditions": {}, "entities": ["@scientists"]}Fields
Section titled “Fields”| Field | Type | Description |
|---|---|---|
amount |
number (≥ 2) | How many units of the underlying action form one burst. A value of 1 would change nothing and is rejected as a config error. |
windowSeconds |
number (≥ 1) | Length of the trailing window, in seconds. All amount units must land within one such span. |
One-shot challenges
Section titled “One-shot challenges”Set amountRequired: 1 for a single-cluster challenge, where the whole objective is one big burst:
- “Harvest 30 corn in 10 seconds” =
amountRequired: 1+burst: { "amount": 30, "windowSeconds": 10 } - “Deal 10,000 damage in a day” =
amountRequired: 1+burst: { "amount": 10000, "windowSeconds": 86400 }
How clustering works
Section titled “How clustering works”Each qualifying action becomes a timestamped candidate instead of counting immediately:
- Candidates older than the trailing window expire silently: they never count, and no credited progress is ever taken back. Progress only moves forward, one whole burst at a time.
- The moment the candidates inside the window reach
amountunits, one burst completes andamountRequiredticks by 1. Exactlyamountunits are consumed, oldest first. - Excess carries over. The leftover units of a large action stay as a candidate with their
original timestamp and seed the next cluster. A third rapid kill after a 2-kill burst starts the
next pair. A single 1,200-damage hit against
amount: 500fires 2 bursts (2 x 500) and carries 200 (1200 - 2 x 500 = 200). - Candidates are tracked per player, per objective. They survive server restarts and die with the player’s progress: abandoning the contract or losing it to a rotation clears them.
The window here is the same trailing (sliding) window as cooldown:
it always covers the last windowSeconds from the current moment, with no fixed reset tick. The only
difference is the direction of the trigger. Cooldown counts progress inside the window and blocks when
it exceeds maxAmount, while burst counts candidates inside the window and fires a burst when they reach
amount.
Combining with cooldown
Section titled “Combining with cooldown”An objective can carry both a burst and a cooldown. Cooldown’s maxAmount shares
amountRequired’s unit, so with a burst present it paces completed bursts: “kill 2 within 3
seconds, 5 times, at most 1 burst every 10 minutes” is a burst plus
cooldown: { "maxAmount": 1, "windowSeconds": 600 }.
What players see
Section titled “What players see”While candidates are pending, players get live feedback in both the contracts menu and the HUD: the
sub-progress toward the next burst (e.g. 1/2) and a countdown to when the oldest candidate
expires. When nothing is pending, no burst UI shows. The burst UI is also hidden while a
cooldown on the same objective is blocking, since a burst
completed during that time would be wasted. It reappears once the cooldown releases.
Windows shorter than the Hide Burst UI when window is below seconds config
(default 10) never show burst UI, avoiding flicker on very short windows: the progress bar simply
advances one whole burst at a time. Set the config to 0 to always show the burst UI.
- Burst is a premium feature. On the Lite edition, a contract whose objective carries a burst is locked: it never enters a rotation, and its definition is preserved untouched for when you upgrade.
- Burst is not a condition. Conditions filter when an action counts based on the state of the world at that instant, while burst shapes how actions must be grouped over time.
