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)

TypePool countPool %RadiusReward shape
levelup2738.0%130 (small)Level-up reward
magnet1014.1%220 (large)Magnet sweep
weapon68.5%220 (large)Weapon box / +1 level when slots full
regen57.0%110 (tight)HP regen — filtered out until hull damage taken
artifact45.6%220 (large)Artifact box
forager45.6%220 (large)Stardew-style XP-orb cluster scan
horde34.2%220 (large)VS-style elite-pack spawn — combat-stakes
comet_shower34.2%220 (large)All-Comet meteor-shower ring
pulse34.2%220 (large)Screen-clear shockwave (600 px)
vortex34.2%220 (large)Gravity-pull cluster (220 px via spawnMagnetarPull)
starpower22.8%110 (tight)Legendary sub-event
cascade22.8%220 (large)Loot-piñata sub-event
wheel00.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_box reward dispatch in bridge.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 their EventPoolConfig.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 spawnMagnetarPull primitive. Sets up a kill-vortex moment without spawning fresh foes — a speed-build payoff.
  • Gating: Rarer than forager (3 vs 4) by design.

Notes

  • levelup alone 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.
  • regen and starpower use tight (110 u) rings to read as compact / rare; levelup uses the small (130 u) ring as the common case.
  • Missions may override the default pool entirely via RunDefinition.node.events.pool (an array of EventType strings). An empty pool: [] falls back to buildDefaultEventPool().

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.