Star Power

Star Power is the game’s signature timed buff. It is the only PlayerExclusiveState currently shipped — a privileged mode where the ship is invulnerable, hits twice as hard, moves 20% faster, and ignores heat entirely.

How you get it

Star Power is granted by the shooting star reward, family shooting_star, card type player_buff. The confirm title reads STAR POWER! and the catalog entry is:

player_buff: { name: 'STAR POWER', icon: '🌠', description: '60s of Star Power — invulnerable, 2× damage, +20% speed, no heat' }

The reward calls applyExclusiveState(ship, 'starpower', 60). Repeat grants stack — the timer extends rather than resets, and _starPowerMaxTimer tracks the peak for the HUD fill.

A separate rare world-event also named starpower (legendary sub-event, ~3% pool weight) grants the same exclusive state for 15 seconds instead of 60. Same buff, shorter window.

What it does

While hasExclusiveState(ship, 'starpower') is true:

EffectMagnitudeSource
InvulnerabilityDamage skipped, knock-around still appliesphysics/movement.tsstarPowerActive forces invulnerable=true, exempt from the 5s invuln cap
Damage multiplier×2.0 on every shotweapons/weapons.tsSTAR_POWER_DAMAGE_MULT = 2.0 applied to final per-shot damage
Thrust + max-speed×1.20 (stacks multiplicatively with other speed mods)physics/movement.tsSTAR_POWER_BOOST = 1.20
HeatLocked at 0 — no accumulation, no coolingphysics/movement.ts — heat skipped while active

The “no heat” rule means the overheat danger gradient on the heat bar is suppressed and the thrust-fire emoji below the bar is hidden during Star Power.

Visuals

Star Power has a layered visual stack so the player can’t miss it:

  • Rainbow-chrome ship overlay — off-screen _starPowerBuf canvas renders a hue-rotating chrome pass over the cached ship diffuse, blitted on top of the normal sprite (bridge.ts lines 5930–5995).
  • Rainbow trail — cheap hue-rotating spark stream emitted behind the ship every frame the state is active (bridge.ts line 2828).
  • Heat-bar rainbow fill — the heat HUD swaps its danger gradient for a rainbow hue-cycle and the bar drains from full as the timer elapses, so the heat bar doubles as the Star Power timer (rendering/hud.ts line 2163).
  • Pickup explosion — collecting a shooting star fires four particle phases (gold sparks, white-hot starburst, gold confetti, upward geyser) plus a ring-shatter and Juice.fire('comet_catch'). The game freezes (_weaponChestFreeze = true, timeDilation = 0) for impact.
  • Bridge surge — Star Power grants get an amp 4.0 / dur 0.20 audio-bridge punch and color flash {r:255, g:255, b:160} with 30 particles at speed 130.

Decay

There is no manual cancel. The timer counts down in real time, the heat-bar rainbow drains to empty, and the exclusive state clears when it hits zero. Standard 5s invuln cap returns immediately after (Star Power is exempt while active, not after). Damage multiplier, speed boost, and heat-lock all drop in the same frame.

Why it’s “exclusive”

PlayerExclusiveState is a single-slot system designed to replace one Star Power-style mode with another if more are added later. Today the union is just 'starpower', so the replacement path isn’t exercised.

Key files

  • engine/world/leveling.ts:1060 — reward grant (shooting_star family → 60s)
  • engine/world/events.ts:22, 111 — world-event sub-event grant (15s)
  • engine/bridge.ts:2639–2645 — sub-event handler
  • engine/player/states.tsapplyExclusiveState, hasExclusiveState, PlayerExclusiveState type
  • engine/physics/movement.ts:27, 97–107, 480–530 — invuln + speed + heat-lock
  • engine/weapons/weapons.ts:60, 590–593 — damage multiplier
  • engine/rendering/hud.ts:2163–2342 — heat-bar rainbow fill
  • engine/bridge.ts:228–231, 2828, 5930–5995 — rainbow-chrome overlay + trail