Phase Splitter
What it is
Phase Splitter is a stat-category artifact whose triggered effect fires once, at run start, and permanently raises the player’s global extra-projectile upgrade counter. Once boosted, the counter is read by every weapon’s fire routine for the rest of the run, so each weapon’s projectile burst is wider. The artifact also installs a guaranteed echo flag on equip and emits a blue sonar VFX whenever a weapon burst is detected, giving it a strong visual signature without changing the underlying fire-rate math. Pairs an always-on offensive passive (weapon-damage flat bonus) with a run-long structural change to weapon fire shape.
Identity
| Field | Value |
|---|---|
| Display name | Phase Splitter |
| Category | stat |
| Icon | 🔹 |
| Primary color | 44aaff |
| Secondary color | 2266cc |
| Bright color | 88ddff |
| Damage tag | none (type-agnostic) |
| Trigger | signal: run start |
| Trigger conditions | none |
| Passive flat-bonus stat | Weapon Damage (flat additive percentage points) |
The run-start trigger has no threshold or filter — the effect fires exactly once when the run begins, before any combat takes place. There is no per-frame proc and no banner: the fire-shape change happens silently at equip time, and the only in-run feedback is the blue sonar-ring VFX that plays whenever a weapon burst is detected.
Per-tier values
The artifact ships four authored tiers indexed uncommon → rare → epic → legendary. A fifth common tier is prepended at runtime and shares the uncommon values record; differentiation between common and uncommon comes from the artifact-wide flat bonus, not from the values record.
The triggered effect carries one named magnitude (the number of extra projectiles added to the global counter) plus the per-tier flat passive weapon-damage bonus. Tier 1 shares the same triggered-effect value as tier 2, and tier 3 shares with tier 4 — the values record steps once between tier 2 and tier 3.
| Tier | Extra projectiles granted | Flat weapon-damage bonus |
|---|---|---|
| 1 (common) | +1 | +10 |
| 2 (uncommon) | +1 | +20 |
| 3 (rare) | +2 | +30 |
| 4 (epic) | +2 | +40 |
| 5 (legendary) | +2 | +50 |
The “+N extra projectiles” magnitude is not a direct projectile count; it is added to the global more_projectiles upgrade counter. Each weapon then consults its own extra-projectile lookup table at that counter level to decide how many projectiles to add per fire. The mapping from counter level to per-fire bonus is non-linear and weapon-specific — most weapons step up at staggered counter thresholds, a couple of weapons ignore the counter entirely, and one weapon reads the counter through a custom fire routine.
The flat passive bonus follows the global per-tier ramp shared by every artifact (10 / 20 / 30 / 40 / 50). Phase Splitter’s passive stat is weapon-damage percentage.
Effect
When the run-start signal fires, the artifact’s authored action increases the global more_projectiles upgrade counter by the per-tier extra-projectile magnitude.
At equip time the runtime also performs two additional bookkeeping writes alongside the counter bump:
| Step | Action | Parameters |
|---|---|---|
| 1 | Increase global more_projectiles upgrade counter | delta = per-tier extra-projectile magnitude |
| 2 | Set the global echo_double_chance flag to 1 | guaranteed double-shot path on weapons that read the flag |
| 3 | Set the global echo_triple_chance flag to 0 | the triple-shot path is explicitly disabled |
The counter and the two flags persist for the rest of the run. They are not refreshed, decayed, or re-applied — Phase Splitter’s contribution to weapon fire shape is a one-shot run-start grant.
When the artifact tier changes mid-meta (between runs, via meta-progression), the runtime first subtracts the previous tier’s extra-projectile magnitude from the counter and zeroes the two flags, then re-applies all three writes at the new tier. Mid-run tier changes do not happen — tier is set at run start by meta-progression and does not increase during a run.
Independently of the trigger, a per-frame tick handler watches the player-bullet count for a spike of three or more bullets in a single frame. When detected, it spawns a blue sonar shockwave ring and a four-particle spark burst at the ship position, flashes the artifact HUD slot for 0.3 s, and records a telemetry event. The tick handler does not modify any gameplay stat — it is purely diegetic VFX feedback that the wider fire is procing.
Stacking rules
- The
more_projectilescounter is a shared global. Phase Splitter adds its per-tier magnitude to whatever other sources (horizontal upgrades, other artifacts, scenario overrides) have contributed. The counter saturates at index 20 in the per-weapon lookup tables; values above 20 read the index-20 row. - The
echo_double_chanceflag is a binary flag, not an additive counter. Phase Splitter sets it to 1 unconditionally on equip and back to 0 on unequip. Other sources that toggle the same flag race with the artifact: whichever applies last wins, and unequipping Phase Splitter explicitly zeroes the flag regardless of who set it. - The
echo_triple_chanceflag is explicitly zeroed on equip. Phase Splitter forces the triple path off even if another source has previously turned it on. - The flat weapon-damage passive bonus stacks additively with every other source of weapon-damage percentage on the ship (other artifacts’ passives, run upgrades, ship stats). Each artifact’s flat bonus uses its own source tag and is replaced wholesale when the artifact’s tier changes.
- Tier upgrades replace the per-tier values record wholesale. The previous tier’s counter and flag writes are subtracted/zeroed before the new tier is applied.
- Phase Splitter can be equipped alongside the other run-start artifacts. All run-start procs fire independently on the same run-start signal with no shared cooldown or priority.
Summary
Phase Splitter is a run-start, fire-shape artifact: it permanently raises the global extra-projectile counter by +1 at tiers 1–2 and +2 at tiers 3–5, sets a guaranteed double-echo flag, and zeroes the triple-echo flag. Each weapon then reads the counter through its own per-weapon lookup table, so the projectile-count payoff is weapon-specific rather than a uniform “+N bullets per fire”. The artifact-wide passive is a flat weapon-damage percentage bonus following the standard 10 / 20 / 30 / 40 / 50 ramp. A per-frame tick handler emits a blue sonar VFX whenever a weapon burst spike is detected, giving the artifact its visual signature without modifying any gameplay stat.
EXTRACT-CANDIDATE:
- The “4 authored tiers + 1 runtime-prepended common tier sharing uncommon values, with common-vs-uncommon differentiation from the artifact-wide flat bonus” rule is a general artifacts-system fact and belongs on the
artifactsroll-up page, not duplicated per entity. - The 10 / 20 / 30 / 40 / 50 flat-bonus ramp is shared by every artifact. Candidate concept page:
concepts/artifact-tier-mapping.md. - “Run-start signal trigger with no conditions” is shared by the run-start artifact family. Candidate concept page:
concepts/run-start-trigger.md. - The
more_projectilesglobal counter + per-weaponEXTRA_PROJ_TABLElookup is a cross-cutting fire-shape mechanic touched by horizontal upgrades, this artifact, and scenario overrides. Candidate concept page:concepts/extra-projectiles-counter.md(or extend theweaponsroll-up). - The
echo_double_chance/echo_triple_chancebinary flags pair is read by weapon fire routines beyond this artifact. Candidate concept page:concepts/echo-flags.md(or fold into the weapons roll-up). - “Per-frame tick handler emits VFX based on engine state, without modifying gameplay” is a recurring artifact-feedback pattern (Phase Splitter, Companion Droid, Crate Buster, Force Field all have tick handlers). Candidate concept page:
concepts/artifact-tick-handlers.md. - “Equip-time runtime writes beyond the authored effect action” (the guaranteed double-flag set, the triple-flag zero) is a runtime-vs-data divergence pattern. Candidate authoring-guide section: which writes belong in the data file’s
effects[]vs which belong inengine/world/artifacts.tsswitch arms. - The non-linear per-counter projectile lookup (
EXTRA_PROJ_TABLE) saturating at index 20 is shared infrastructure that should be documented once on the weapons or projectiles roll-up rather than per per-artifact page.