Props

What it is

Props are decorative, breakable world objects that spawn off-screen around the player’s ship as they move through a planet. The player breaks them by ramming with the ship (one-shot on contact) or by chipping them down with bullet fire. On break, each prop drops a fan of XP orbs and triggers a per-type visual/audio burst. Several prop types also fire a bespoke “cross-system” synergy on break — a brief mechanical reward like a speed boost, an invuln window, or a gravity pull on nearby enemies.

There are seven prop types, sharing a single spawn pool and weighted spawn roll. Rare types (Supply Pod, Magnetar Pulse) are flagged with a screen-edge directional arrow so the player can hunt them.

Stats tables

Prop types — core stats

TypeHPRadius (px)StickerRim colorDensity mult vs sliderEdge arrow
Scrap Pile1032salvage binslate grey (#9aa3ad)1.00no
Drone Wreck1830broken droneelectric cyan (#5fc8ff)0.60no
Comet Fragment826comet streakpale ice (#c8ddff)0.40no
Volatile Crystal2530crystalmagenta (#ff5fcb)0.35no
Mineral Vein4034rock outcropbright green (#5fe07a)0.25no
Magnetar Pulse3532swirlviolet (#a050ff)0.20yes
Supply Pod8040supply crateamber (#ffaa44)0.15yes

Prop drops

Each orb is worth orbXpFracPerOrb × current-level XP bar size, rounded up, minimum 1 XP.

TypeOrb countXP fraction per orbTotal fraction of level bar
Scrap Pile40.0180.072
Drone Wreck60.0200.120
Comet Fragment70.0150.105
Volatile Crystal80.0220.176
Mineral Vein100.0240.240
Magnetar Pulse60.0200.120
Supply Pod120.0350.420

Spawn rules — shared pool

SettingValue
Pool capacity (max slots)48
Max active props at slider 10010
Density slider sourceplanet destructibles.crates slider, 0–100
Spawn cadenceevery 250 ms
Spawn attempts per tick6
Min spawn distance from ship500 px
Max spawn distance from ship1400 px
Cull radius from ship2200 px
Min gap between props160 px
Viewport margin (no-spawn zone)80 px past visible edge
Velocity-cone bias70% of spawns biased toward player heading
Cone half-angle (in-cone)0.55π rad
Spawn type weightingeach type’s densityMult

Bullet collision

SettingValue
Bullet hit radius vs propprop.radius + 4 px
Damage per hitbullet.dmg (min 1)
Piercing bulletstracked via per-bullet hits set; same prop cannot be chipped twice by one bullet
Non-piercing bullet on hitconsumed
Rim hit-flash duration0.18 s
Chip-spark particle count6

Break VFX — per type

TypeSpark RGBChunk RGBRing colorSpark countOutward ring burst count
Scrap Pile220,220,220110,110,110cfd6df140
Drone Wreck120,220,25580,120,1607fd5ff180
Comet Fragment220,235,255150,180,220dfeaff208
Volatile Crystal255,100,220180,60,180ff3fb02218
Mineral Vein120,230,13060,140,807fe89a2410
Magnetar Pulse180,110,255110,50,200a060ff2616
Supply Pod255,200,100200,150,80ffcc443014

All breaks additionally fire 5 chunky debris particles and a shockwave ring (8→80 px expand, 0.3 s).

Break behavior — per-type synergies

Each synergy is a named one-off effect that fires on break. Multiple synergies can chain through cascades (Supply Pod break spawns 5 props, each of which rolls its own synergy on its next break).

TypeProc chanceEffect
Scrap Pile15%Engages global XP-orb magnet; every active orb locks on to the player
Drone Wreck30%Sets ship invulnerable for 0.5 s (or extends existing window)
Comet Fragment35%Multiplies ship velocity by 1.5×, capped at 2.0× ship max speed
Mineral Vein30%Cascade-spawns 1 Comet Fragment + 1 Magnetar Pulse at 70 px offsets around the break
Volatile Crystal25%Overlays fire particles; if ship is within 180 px, deals 4 damage to ship (respects invuln/shield/reduction)
Magnetar Pulse100%Gravity pull on enemies within 220 px: sets velocity to 360 px/s inward and snaps position up to 28 px toward break point (scales with proximity)
Supply Pod100%Fan-spawns 5 props in a 110 px ring: 2× Scrap Pile, 1× Mineral Vein, 1× Comet Fragment, 1× Magnetar Pulse

Visual idle

SettingValue
Bob period8.0 s
Bob amplitude (random per prop)6–14 px
Bob axisvertical

How it works

A single pool of 48 slots holds every active prop. Each slot stores its type id, current hp, position, hit-flash timestamp, and bob parameters. The pool runs collision every frame and runs spawn/cull on a 250 ms tick.

Spawning is gated by a target density derived from the planet’s destructibles.crates slider (0–100), scaled to the prop cap of 10. Each spawn rolls a type using each type’s densityMult as a weight (Scrap Pile dominates at 1.0; Supply Pod is rarest at 0.15), then picks a spawn point off-screen at 500–1400 px from the ship, biased 70% of the time into a cone pointing along the ship’s velocity. Spawn is rejected if the chosen point is on-screen or within 160 px of another prop.

Active props are culled when they move beyond 2200 px from the ship, but never while on-screen.

Ship-contact collision is per-frame. If the ship overlaps a prop (distance < ship radius + prop radius), the prop one-shot breaks regardless of hp. Bullet collision is also per-frame and applies bullet damage to any prop the bullet overlaps. Piercing bullets remember which props they have already hit via a per-bullet set, so they cannot chip the same prop twice. Non-piercing bullets die on first hit; bullets with a positive pierce count decrement and die when it reaches zero.

When a prop reaches hp ≤ 0 (or any time the ship contacts it), the break sequence runs in order: signal fired, audio cue played, telemetry recorded, XP orbs fanned out, break VFX layered, per-type synergy rolled, slot deactivated.

The XP-orb fan spawns orbCount orbs at the break point, evenly spaced in angle (with small jitter), each at 10–18 px outward offset and 140–220 px/s outward velocity. Per-orb XP is ceil(level-bar-size × orbXpFracPerOrb), minimum 1.

Synergies that need to spawn more props (Mineral Vein cascade, Supply Pod cascade) use a force-spawn entry point that bypasses spawn-cadence, viewport gating, and the velocity cone. These cascades are skipped silently if the pool is at capacity.

Each prop type has a flavored break audio recipe; missing keys fall back to a generic prop_break cue.

Interactions

  • Planet density slider. Props read the same destructibles.crates slider as crates, but cap at 10 active vs the crate cap of 20 — props are deliberately rarer than crates because each prop is visually richer.
  • XP-orb system. Every break drops orbs via the shared XP-orb spawner; the Scrap Pile magnet synergy reaches back into the XP-orb subsystem to flip all active orbs into player lock-on.
  • Ship state. Comet Fragment writes to ship.vx / ship.vy (with a hard speed cap). Drone Wreck writes to ship.invulnerable and ship.invulnTimer, extending rather than overwriting an existing invuln window.
  • Damage chain. Volatile Crystal’s afterburn calls the standard player-damage path, so it respects invuln, shield, and damage reduction.
  • Enemy velocity + position. Magnetar Pulse overwrites each in-radius enemy’s velocity and applies a one-shot position displacement that scales with proximity. AI may override velocity on the next frame; the position snap guarantees a visible step regardless.
  • Burning-aura affix palette. Volatile Crystal’s fire overlay reads its color from the burning_aura elite-affix palette; if that palette is removed, the afterburn fails silent.
  • Boss reward chamber. The Supply Pod cascade entry point is also called by external systems (boss defeat reward, Vortex sub-event dispatch) with custom prop lists, reusing the same fan-spawn + VFX + audio + telemetry pipeline.
  • Cascade chaining. A Supply Pod break spawns five new props; each of those rolls its own synergy on its next break. The maximum chain in one beat is six synergies.
  • HUD edge arrows. Props with the edge-arrow flag (Supply Pod, Magnetar Pulse) are enumerated for the HUD layer so it can draw screen-edge directional indicators while they are off-screen.
  • Telemetry. Every break records a prop_break:<type> event with orb count; each synergy proc records its own event (afterburn hit/miss, speed boost result, invuln duration, cascade spawn count, magnetar enemy count, scrap magnet orb count).

What it does NOT do

  • Props do not damage the ship on contact. The only damage path from a prop is the Volatile Crystal afterburn proc when the ship is within 180 px of the break point.
  • Props do not block ship movement or push the ship. Ship contact passes straight through (and breaks the prop).
  • Props do not block bullets. A bullet that hits a non-fatal prop is consumed (non-piercing) or counted (piercing), but no visual stop happens beyond the chip flash.
  • Props do not respawn on a fixed grid or schedule. There is no per-prop respawn timer; the pool simply tries to refill to the density target every 250 ms.
  • Props do not chip from enemy contact, AoE explosions, or other props. Only player ship contact (one-shot) and player bullets damage them.
  • Props do not award score, currency, or pickups other than the XP-orb fan. There is no per-type loot table; the only reward variance is orb count and per-orb XP fraction.
  • Props are not cleared between waves or runs by the pool itself. The pool only clears via an explicit reset call.
  • Props do not stack synergies on the same prop. Each prop type fires at most its single named synergy on break.
  • Props do not telegraph their type before spawn. The off-screen edge arrow only appears for already-spawned edge-arrow types.
  • Props do not respect the velocity cone or viewport gate when force-spawned by a cascade — cascade spawns can appear on-screen.