Ship Rarity Bands

Every player ship in the roster lives in exactly one of five rarity bands. The band is fixed per ship, drives the gacha pull odds, picks the UI tint used for the ship card and outline, and supplies the letter grade shown on collection screens.

The five bands

BandGradeNameColor (hex)Accent (hex)
commonCCommon#ffffff (white)#333333
uncommonBUncommon#50ff78 (green)#38cc58
rareARare#44aaff (blue)#2288dd
epicSEpic#cc66ff (purple)#aa44dd
legendaryLLegendary#ffaa00 (orange/gold)#dd8800

The bands run common → uncommon → rare → epic → legendary in ascending desirability. Grades shorten to a single letter for compact UI: C/B/A/S/L. The order is deliberately non-alphabetical — L sits above S because Legendary is the apex band, not a tier between A and S.

Color and accent come from a single table (RARITY_COLORS) and are reused everywhere the rarity is visually expressed: card outlines, sprite outline color baked into the asset, hover glow, pull reveal flash, dust-particle tint on thrusters, etc.

Gacha pull rates

A single ship pull resolves to a rarity by rolling against this table:

BandPer-pull rate
Common60%
Uncommon25%
Rare10%
Epic5%
Legendary0%

Legendaries are unreachable from pulls — the legendary banner rate is hard zero. They drop only from mission rewards at the legendary reward tier.

Three pity rails layer on top of the base table:

  • Rare pity. A rare-or-better ship is guaranteed at most 10 pulls without one.
  • Epic pity. An epic-or-better ship is guaranteed at most 50 pulls without one.
  • Soft pity. Starting at pull 40 without an epic, the epic rate climbs by +2% per pull until the epic pity fires.

There is also a 10-pull bundle guarantee: any batch of 10 pulls contains at least one result of uncommon or better, so first-time multi-pulls never come back as ten commons.

Featured rate-ups exist as a hook but are currently empty — no ship is on rate-up in the live configuration. Banners (Sun and Moon) split the pool thematically but share the same per-pull rarity rates; universal pull tickets work on either banner.

Per-ship assignment — SHIPS_V4_RARITY

Each player ship sprite (44 hulls across 7 factions, exported as 1024×1024 squares with premultiplied alpha in public/ships-v4/) maps to exactly one rarity in SHIPS_V4_RARITY. The map is keyed by the sprite’s filename (no extension, case-sensitive, spaces preserved — e.g., 'Backwater_Killer Croc').

Source of truth. The rarity is encoded directly into the sprite asset as the outline color, painted by the sprite workbench. The SHIPS_V4_RARITY table is the canonical readback of that paint — if the table and the outline ever disagree, the outline wins and the table is wrong.

Roster shape today (44 hulls / 7 factions):

FactionCountRarity mix
Ancients21 uncommon, 1 epic
Backwater42 uncommon, 1 rare, 1 legendary
Industria82 common, 3 uncommon, 2 rare, 1 epic
Junkrats82 common, 3 uncommon, 1 rare, 1 epic, 1 legendary
Prism60 common, 0 uncommon, 1 rare, 2 epic, 3 legendary
Solaris92 common, 2 uncommon, 1 rare, 1 epic, 3 legendary
(subtotal)37

The seventh faction’s ships are not yet in SHIPS_V4_RARITY; the table fills in as new exports land. Prism is intentionally top-heavy — it is the “premium” faction. Industria and Junkrats lean common/uncommon as the working-class rosters.

How the band gets used downstream

  • Card UI uses RARITY_COLORS[rarity] for outline and accent and RARITY_NAMES[rarity] for the human-readable label.
  • Collection screens show RARITY_GRADES[rarity] as the compact one-letter chip.
  • Pull reveal matches the flash and particle hue to the rolled rarity, then to the ship’s own rarity once the card flips.
  • Thruster VFX blends in a rarity-tinted dust color at low brightness, biased toward the outer flame edge.
  • In-run modifier picks share the same color set for visual treatment but use a wholly separate rarity-weighting system biased by the ship’s luckMult stat — there is no shared pool with ship pulls.

A ship’s gacha pull-rarity is the floor of what you might get, not a guarantee — the rolled band selects from ships of that band, then a uniform draw within the band picks the specific hull.

Sources

  • starship-survivors/src/starship-survivors/data/ships.tsShipRarity type and the RARITY_COLORS / RARITY_NAMES / RARITY_GRADES tables.
  • starship-survivors/src/starship-survivors/data/ships-v4-rarity.ts — per-ship SHIPS_V4_RARITY map.
  • starship-survivors/src/starship-survivors/data/pull-rates.tsSHIP_RARITY_RATES, pity thresholds, soft-pity curve, 10-pull guarantee.