EGGS

Egg Types

The shared egg artwork, one image per first type. Every creature of that first type uses this image for its own egg. Click the type badge to open that type's page.

LOADING…

Hatch Chances by Egg Grade

Chance (%) of the hatchling's grade for each egg grade. Rows sum to 100%. The egg's grade weights the roll — it does not fix the outcome.

LOADING…

Hatching Mechanics

Every creature has its own egg. Hatching an egg always produces that specific creature — a Bristle Egg hatches a Bristle, a Nightmare Egg hatches a Nightmare. There are as many eggs as creatures in the tower.

Egg artwork is shared: an egg's shell shows the creature's first type, so every creature whose first type is Beast uses the Beast egg image, and so on. The image is cosmetic — it does not change what hatches.

Eggs drop at a grade on the shared 10-tier scale used across the game (Worn → Common → Uncommon → Rare → Epic → Legendary → Abyssal → Divine → Primordial → Void). Each grade of egg has a chance to hatch a creature of each grade — every egg can hatch a creature up to 4 grades above its own grade (never more) and any grade below it. Higher-grade eggs shift the roll upward and away from the low grades, but the top grades stay rare from any egg. The exact weights are the table above.

Eggs are never tradeable. A creature enters the marketplace only after it hatches.

Void Apex eggs sit above this table's floor bands. On floors 101–120 the egg grade band is Rare–Legendary (no Abyssal eggs — breeding stays the only path above Legendary), and the species mix is far richer: SSR grows from 12% of spawns at floor 101 to 50% at floor 119, taking the SSR share of wild eggs from about 30% to 68%. See Void Apex. The species ramp is LIVE on release since 0.48 (2026-08-13) — encounter_weights.csv authors 12% SSR at floor 101 rising to 50% at 119, and every spawn slot is an independent roll on it. The grade band is authored but unconfirmed on release: the Apex bands in drop_grade_weights.csv still include Abyssal, and the fold into Legendary has not been observed in the shipped bytes.

Changelog

Where the hatch is decided

The server draws the hatched grade and tells the client. POST /api/hatch carries the egg's id and its grade; the server reads that grade's row from egg_hatch_weights.csv, draws against those weights with a secret-keyed HMAC, records the result and answers it. The weights are never restated in code, and there is no fallback — an egg whose grade the file does not author hatches nothing rather than defaulting to the lowest tier, because a default would quietly become the balance.

An egg hatches once, forever. The result is stored against the egg's own id, not a key the caller chooses, so a retry or a lost connection replays the same creature. Re-submitting the same egg while claiming a richer grade cannot re-roll it.