Equipment & Gear
Tower Craft now has an account-level gear system. Rare drops from campaign victories feed a crafting tab accessed from the title screen; crafted gear sits in your account inventory and can be equipped into slots that apply to every future run.
The EQUIPMENT button on the title menu opens the panel.
What gear does
Equipped gear modifies your combat loadout in the Crystalline Caverns dimension. The server authoritatively loads your equipped gear when the run starts — damage numbers, swing speed, and reach all come from the equipped item, not the client.
Slots
| Slot | v1 status |
|---|---|
| SWORD | Active — basic/iron/mithril are available |
| ARMOR | Ghosted, coming soon |
| TRINKET | Ghosted, coming soon |
If no sword is equipped, the Basic Sword (15 damage, 0.8 s swing, 28 px reach) is assumed. It's always available and never needs crafting.
Sword progression
| Sword | Damage | Swing | Reach | Crafted from |
|---|---|---|---|---|
| Basic Sword | 15 | 0.80 s | 28 px | Always equipped by default |
| Mithril Sword | 26 | 0.76 s | 30 px | 1 × mithril_lump |
| Void Sword | 36 | 0.70 s | 32 px | 2 × mithril_lump, 1 × void_touched_shard |
Gear recipes only accept rare, campaign-victory drops — not run-inventory staples like iron or steel. Gear is a persistent reward for clearing maps, not something you can grind inside a single run.
- mithril_lump drops from Desolate Depths victories (15 % chance).
- void_touched_shard drops from Crystalline Caverns victories (15 % chance).
Rare drops
When your party clears a campaign map, the server rolls drops from the map's victory-drop table. Each player rolls independently — if four of you beat Desolate Depths, all four receive their own mithril lump. Drops are persisted to your account inventory immediately.
The Game Over screen shows a YOU RECEIVED panel listing any drops awarded that run.
Current drop tables
Only two rare resources exist, one per map, both 15 % chance:
| Map | Rare drop |
|---|---|
| Desolate Depths | 15 % chance: 1 × mithril_lump |
| Crystalline Caverns | 15 % chance: 1 × void_touched_shard |
Rare drops are stored separately from the run inventory — they never appear in the left panel, never enter crafting recipes, and can't be granted by dev cheats like /infinite. They persist to the account meta blob and feed gear crafting exclusively.
Custom levels do not grant account drops.
Using the Equipment panel
- Click EQUIPMENT on the title menu.
- The top strip shows your three slots with the currently equipped item's sprite and stats. Armor and Trinket are ghosted.
- The middle section lists every gear instance you've crafted. Click [ EQUIP ] on any row to slot it; click again on a different one to swap.
- The right column shows craftable recipes plus your current account inventory. Recipes with enough inputs show a green CRAFT button; insufficient inputs grey it out.
- Crafted gear lands in the owned-gear grid immediately. It's yours until you explicitly delete it (UI for deletion coming later).
Server-authoritative notes
- All meta-state mutations go through two endpoints:
POST /api/meta/craft-gearandPOST /api/meta/equip. The server validates the recipe, deducts inputs atomically, and writes the updated meta blob to SQLite. - The client never computes damage. At run start the server looks up your equipment slot, resolves the sword stats from
GEAR_DEFS, and applies them to the player's combat loadout. A tampered client can't hand itself a 10 000 damage sword. - Basic Sword is implicit —
equipment.sword = undefinedresolves to the basic sword stats. There's no gear instance for the default.
Future slots
The data model already supports Armor and Trinket slots:
- Armor (planned): flat damage reduction; useful in dangerous caverns runs.
- Trinket (planned): situational bonuses — max-HP boost, crit chance, resource drop rate.
Both slots render in the panel today so you can see where they'll plug in; they're disabled pending gear definitions and drop sources.