Event Types Catalog
Enumeration of the thirteen EventType values declared in engine/world/events.ts. Each event is a stand-in-zone state machine — the type determines only the reward dispatched on completion (see bridge.ts); the hold-to-charge mechanic and lifecycle phases (idle → active → completing → done/failed) are shared.
The default pool is built by buildDefaultEventPool() as a 71-entry uniformly-sampled array. Weights below express the count of duplicates added to that pool. The radius column reflects the fixed-by-type sizing in radiusForEventType() (tight = 110 u, small = 130 u, large = 220 u).
For shared lifecycle, charge mechanics, decay, and dispatch wiring, see event-system.
Pool composition (default)
| Type | Pool count | Pool % | Radius | Reward shape |
|---|---|---|---|---|
levelup | 27 | 38.0% | 130 (small) | Level-up reward |
magnet | 10 | 14.1% | 220 (large) | Magnet sweep |
weapon | 6 | 8.5% | 220 (large) | Weapon box / +1 level when slots full |
regen | 5 | 7.0% | 110 (tight) | HP regen — filtered out until hull damage taken |
artifact | 4 | 5.6% | 220 (large) | Artifact box |
forager | 4 | 5.6% | 220 (large) | Stardew-style XP-orb cluster scan |
horde | 3 | 4.2% | 220 (large) | VS-style elite-pack spawn — combat-stakes |
comet_shower | 3 | 4.2% | 220 (large) | All-Comet meteor-shower ring |
pulse | 3 | 4.2% | 220 (large) | Screen-clear shockwave (600 px) |
vortex | 3 | 4.2% | 220 (large) | Gravity-pull cluster (220 px via spawnMagnetarPull) |
starpower | 2 | 2.8% | 110 (tight) | Legendary sub-event |
cascade | 2 | 2.8% | 220 (large) | Loot-piñata sub-event |
wheel | 0 | 0.0% | 220 (large) | Wheel-of-fortune (typed; not in default pool) |
(Pool counts sum to 72 — the comment header in events.ts rounds slightly. Percentages above use the actual loop counts as ground truth.)
Per-type detail
levelup
- Pool weight: 27 entries (most common; the filler event).
- Radius: 130 u (small) — kept tight so the screen doesn’t fill with giant level-up rings.
- Reward: Level-up choice flow.
- Gating: None beyond the global event unlock (lifetime kills ≥ 25 →
context.eventsUnlocked).
magnet
- Pool weight: 10 entries.
- Radius: 220 u (large).
- Reward: Magnet sweep pulling nearby XP / pickups.
- Gating: None.
weapon
- Pool weight: 6 entries.
- Radius: 220 u (large).
- Reward: Weapon box. If all weapon slots are full at collection, dispatch grants +1 level to every equipped weapon instead (handled in the
weapon_boxreward dispatch inbridge.ts). Weapon events stay weapon events when slots are full — the type does not downgrade. - Gating: None.
artifact
- Pool weight: 4 entries.
- Radius: 220 u (large).
- Reward: Artifact box.
- Gating: Typically requires the player to already own ≥ 2 artifacts before this type rolls (so the reward improves an existing build rather than seeding from zero). Gating is applied at pool-filter time outside
events.ts.
wheel
- Pool weight: 0 (typed, not added to the default pool).
- Radius: 220 u (large).
- Reward: Wheel-of-fortune spin.
- Gating: Only injected by missions / scenarios that explicitly include
'wheel'in theirEventPoolConfig.pool.
starpower
- Pool weight: 2 entries (legendary sub-event).
- Radius: 110 u (tight) — the ring reads as compact and potent.
- Reward: Star-power grant.
- Gating:
context.starsUnlocked(lifetime kills ≥ 25).
regen
- Pool weight: 5 entries.
- Radius: 110 u (tight).
- Reward: HP regen at the station.
- Gating: Filtered out of the pool until the player has taken hull damage — useless at full HP, so it never rolls then.
cascade
- Pool weight: 2 entries (Tick 37 — loot-piñata sub-event).
- Radius: 220 u (large).
- Reward: Cascade of pickups / drops.
- Gating: None.
forager
- Pool weight: 4 entries (Tick 38 — Stardew-style XP-orb scan).
- Radius: 220 u (large).
- Reward: XP-orb cluster — low-stakes, familiar shape. Rolled at artifact-rarity frequency.
- Gating: None.
horde
- Pool weight: 3 entries (Tick 38 — VS-style elite-pack spawn).
- Radius: 220 u (large).
- Reward: Combat-stakes — player fights through an elite pack for natural drops.
- Gating: None; spawns combat regardless of current pressure.
comet_shower
- Pool weight: 3 entries (Tick 38 — meteor-shower iconic).
- Radius: 220 u (large).
- Reward: All-Comet ring of projectiles.
- Gating: None.
pulse
- Pool weight: 3 entries (Tick 47 — screen-clear shockwave).
- Radius: 220 u (large).
- Reward: Damages all enemies within 600 px — commons die, elites bleed. Survivor-genre smart-bomb shape.
- Gating: None.
vortex
- Pool weight: 3 entries (Tick 62 — gravity-pull cluster).
- Radius: 220 u (large).
- Reward: Yanks all enemies within 220 px toward center via the existing
spawnMagnetarPullprimitive. Sets up a kill-vortex moment without spawning fresh foes — a speed-build payoff. - Gating: Rarer than forager (3 vs 4) by design.
Notes
levelupalone accounts for ~38% of the default pool — it is the load-bearing filler.- Large-radius types (
magnet,weapon,artifact,wheel,cascade,forager,horde,comet_shower,pulse,vortex) are premium / reward / combat sub-events that need a visible footprint. regenandstarpoweruse tight (110 u) rings to read as compact / rare;levelupuses the small (130 u) ring as the common case.- Missions may override the default pool entirely via
RunDefinition.node.events.pool(an array ofEventTypestrings). An emptypool: []falls back tobuildDefaultEventPool().
Cross-references
- event-system — shared lifecycle (
idle/active/completing/done/failed), charge acceleration (+10% / s inside), decay (25-40 s untouched), exit-fail window (8 s with 5 s warning), hub-lantern variant rules.