Tier Color Palette
The canonical rarity color systems used across the game. Two parallel taxonomies exist: performance tiers (bronze/silver/gold/diamond) for end-of-run mission results, and rarity tiers (common → legendary) for entities (ships, artifacts, modifiers, reward cards, enemies). Each subsystem keeps its own table, and the same rarity name does not always resolve to the same hex code — see the drift notes below.
Performance tier palette (bronze/silver/gold/diamond)
Used to label the outcome of a completed arcade run. Awarded by MissionResult based on stars/objectives. Drives credits payouts, reward-track points, and ship-pull minimum rarity (see gameplay/concepts/rewards-and-track).
| Tier | Hex | Use |
|---|---|---|
bronze | #cd7f32 | Worst clear — minimum payout, common pull |
silver | #c0c0c0 | Mid clear — common pull |
gold | #fbbf24 | Strong clear — uncommon pull |
diamond | #60a5fa | Perfect clear — uncommon pull, max points |
Table lives in screens/RunStatsScreen.tsx (no shared module — the only consumer is the run-stats screen). Mission-result tier strings flow through MIN_PULL_BY_TIER, LEVEL_TRACK_POINTS_PER_RUN, and CREDITS_RANGES in data/reward-cards.ts, but those are numeric tables; the color hexes are local to the screen.
Entity rarity palette (common/uncommon/rare/epic/legendary)
The standard WoW-style five-tier ladder. Used for ships, artifacts, modifiers, enemies, and reward-track cards. Every consumer subsystem keeps its own hex table — there is no single shared module.
Ships — data/ships.ts:142 (RARITY_COLORS)
| Rarity | Color | Accent |
|---|---|---|
| common | #ffffff | #333333 |
| uncommon | #50ff78 | #38cc58 |
| rare | #44aaff | #2288dd |
| epic | #cc66ff | #aa44dd |
| legendary | #ffaa00 | #dd8800 |
Artifacts — data/artifacts/index.ts:108 (ARTIFACT_TIER_COLORS)
| Rarity | Color |
|---|---|
| common | #9d9d9d |
| uncommon | #1eff00 |
| rare | #0070dd |
| epic | #a335ee |
| legendary | #ff8000 |
Reward-track cards — data/planet-progression.ts:47 (TRACK_RARITY_COLORS)
| Rarity | Color |
|---|---|
| common | #ffffff |
| uncommon | #50ff78 |
| rare | #44aaff |
| epic | #cc66ff |
| legendary | #ffd228 |
Paired with TRACK_RARITY_BG (line 75) for dark/light card backgrounds:
| Rarity | Dark | Light |
|---|---|---|
| common | #2a2a2a | #ffffff |
| uncommon | #0a5c2a | #d4ffd8 |
| rare | #0a2a6e | #d8eaff |
| epic | #3a0a5c | #f0d8f8 |
| legendary | #a03000 | #ffe8b0 |
Generic theme rarities — data/theme.ts:69 (RARITY_COLORS)
Theme module exposes a four-key ladder keyed by color name (not rarity name):
| Key | Hex | Name |
|---|---|---|
| green | #50ff78 | Common |
| blue | #50a0ff | Rare |
| epic | #b450ff | Epic |
| legend | #ffd228 | Legendary |
Note this omits uncommon entirely and uses different keys than every other table.
Modifiers — data/modifiers.ts:410 (MODIFIER_RARITY_COLORS)
Modifiers only use three tiers:
| Rarity | Color |
|---|---|
| common | #44aa44 |
| uncommon | #4488ff |
| rare | #0070dd |
Enemies — data/enemies/index.ts:245 (ENEMY_TIER_COLORS)
Enemy “rarity” is really enemy archetype tier (common foe vs. elite vs. rare elite vs. boss):
| Tier | Color |
|---|---|
| default | #cc3333 |
| common | #cc3333 |
| uncommon | #3388ff |
| rare | #aa44ff |
| legendary | #ff8800 |
Has no epic entry — the boss is legendary directly above rare.
Drift risk
Six tables, none coordinated. Same rarity name resolves differently across subsystems:
legendaryorange: ships use#ffaa00, artifacts use#ff8000, enemies use#ff8800— three different oranges.legendarygold: reward-track uses#ffd228, theme uses the same#ffd228— only place the two agree.common: ships and reward-track use pure white#ffffff; artifacts use grey#9d9d9d; modifiers use green#44aa44; enemies use red#cc3333.uncommongreen: ships and reward-track agree on#50ff78; artifacts use a brighter#1eff00; theme module routes “Common” (sic) to#50ff78.rareblue: artifacts and modifiers agree on#0070dd; ships use#44aaff; reward-track uses#44aaff; theme uses#50a0ff.
The theme module’s RARITY_COLORS is the most divergent — it labels its green key as “Common” while every other subsystem uses that exact hex (#50ff78) for uncommon. Treat theme.ts:RARITY_COLORS as legacy and don’t import it for new code.
When adding a new rarity-aware subsystem
- Decide whether you need the five-tier ladder (common → legendary) or a smaller subset.
- Match the ships palette (
data/ships.ts:RARITY_COLORS) — it’s the cleanest five-tier table and aligns with the reward-track foreground colors. - Do not invent new hexes. If the existing palettes don’t fit, the right move is to consolidate, not add a seventh table.
Related
gameplay/concepts/rewards-and-track— how performance tiers map to rewardsgameplay/concepts/rarity-system— how entity rarity is rolled and weighteddata/theme— raw color tokens (SP.*) used outside the rarity system