Scrap Pile Break Synergies
Scrap Pile is the workhorse prop tier (density 1.0 — the most common world prop). Each break rolls an independent cross-system synergy: a 15% chance to fire a magnet pulse that flips every active XP orb into exponential lock-on toward the player via the existing xpOrbs.triggerGlobalMagnet() primitive.
Because Scrap Pile spawns at the highest density of any prop type, its proc chance is intentionally the lowest of the synergy family. Without that cap the magnet pulse would feel routine and lose its iconic “vacuum up the field” beat.
The roll
- Chance per break: 15% (
SCRAP_MAGNET_CHANCE) - Effect:
xpOrbs.triggerGlobalMagnet()— every active orb on the field switches to exponential lock-on toward the player - VFX: 10 dust-white particles (Scrap Pile’s own
sparkRgbpalette) travel inward to the ship, selling the “buff lands on you” feedback even when no orbs are nearby to vacuum - Audio: Reuses the
extraction_donecue (sparkle + click + sizzle “completion” recipe) - Telemetry:
prop_break:scrap_magnet_pulserecords the active orb count at proc time so cloud can correlate proc with reward density
The proc fires inside breakProp() after the base orb drop + break VFX, so the player gets both rewards from a single break: standard XP orbs (~1.5 per Scrap Pile) plus the global magnet pulse on the 15% roll.
Why per-prop synergies exist
Scrap Pile is one of seven props in the catalog, and each prop type has its own bespoke break-synergy:
| Prop | Chance | Synergy |
|---|---|---|
| Scrap Pile | 15% | Global XP-orb magnet pulse |
| Comet Fragment | 35% | Ship velocity boost (×1.5, capped at 2× max speed) |
| Drone Wreck | 30% | 0.5s invuln window |
| Volatile Crystal | 25% | Burning afterburn cloud + proximity damage |
| Mineral Vein | 30% | Cascade spawns Comet Fragment + Magnetar Pulse |
| Supply Pod | 100% | 5-prop fan-spawn ring (workhorse cascade) |
| Magnetar Pulse | 100% | Gravity-pull on all enemies in 220px radius |
These are intentionally bespoke per-prop relationships, not a generic data-table flag. Each one is a named connection between two specific subsystems: Scrap reaches into the XP-orb subsystem; Comet and Drone reach into ship-state; Volatile reaches into the affix palette + damage chain; Mineral and Supply reach into the prop pool’s own spawn pipeline; Magnetar reaches into enemy velocity.
Design intent: surprise + reward exploration
The synergy family is built around three pillars:
- Visual variety — every prop has a distinct color palette (dust-white scrap, ice-blue comet, electric cyan drone, magenta volatile, emerald mineral, amber pod, violet magnetar). When a synergy procs, the player sees a flash of that prop’s signature color land on themselves or the field.
- Mechanical reward — each synergy gives the player a small but real edge (vacuum orbs, dodge a hit, sweep enemies inward), so the act of breaking props feels like more than scenery cleanup.
- Discovery curve — proc rates and effects aren’t surfaced in the UI. Players learn the family organically by ramming props during low-pressure beats, then start hunting for specific prop types when the synergy fits their build.
Scrap Pile sits at the bottom of the proc-chance ladder because it’s the prop you’ll see most. The 15% rate means roughly one in seven Scrap breaks fires the pulse, so the player gets the “vacuum” beat as a sporadic delight, not a routine event.
Composition with cascades
Both Supply Pod (100% chance) and Mineral Vein (30%) fan-spawn additional props in a ring at the break point. Supply Pod’s SUPPLY_POD_CASCADE_TYPES list includes 2× Scrap Pile, so cracking a Pod open seeds two additional Scrap Pile break opportunities — each with their own independent 15% magnet roll.
A single Pod cascade can chain up to six synergies in one beat: the Pod fan-spawn → two Scrap magnet rolls → one Mineral cascade → one Comet speed-boost → one Magnetar gravity pull. The cascaded props each respect their own break rolls, which is why the synergies compose naturally without needing a global coordination layer.
Code reference
The roll lives in breakProp() inside PropPool:
if (def.id === 'scrap_pile' && Math.random() < SCRAP_MAGNET_CHANCE) {
this.spawnScrapMagnetPulse(def);
}The spawnScrapMagnetPulse() method handles particle emission, the magnet pulse engagement, the audio cue, and the telemetry record. It bails defensively (if (!sharedShip) return) at the ship-state boundary only — no silent fallbacks for missing palette data or other internal config (per “crash on bad data” preference).
Source
src/starship-survivors/engine/world/props.ts—SCRAP_MAGNET_CHANCE = 0.15,spawnScrapMagnetPulse()implementation,breakProp()synergy dispatch sitesrc/starship-survivors/engine/world/xp-orbs.ts—triggerGlobalMagnet()primitivesrc/starship-survivors/data/props.ts— Scrap Pile type definition (palette, density, orb count)