Gear & Progression (meta loop)¶
Source: PROJECT_CONTEXT.md §5, §8.7;
config.jsloot,player;game.jsSLOT_ORDER,computeStats,autoEquipEmpty. Status: ⚠️ Partial — 7-slot loadout, rarities, sets, and blueprint upgrades are built; loot scarcity / source-gating is config-gated (the parked-inventory pass tunes which sources yield gear).
What it is¶
The out-of-raid meta loop: the inventory is the main meta loop (reference: Survivor.io). You collect gear across raids, upgrade it by spending blueprints (the upgrade resource), and craft builds that fit a play style. Better gear raises your stats — primarily Power — and the rarest pieces grant passive abilities. Loot is deliberately scarce and source-gated so finding a real gear piece stays meaningful.
How it works¶
- 7 equipment slots (
SLOT_ORDER): melee weapon, ranged weapon, armor, belt, gloves, boots, accessory. - Items raise stats, primarily Power (overall strength). The bulk of power growth comes from gear, not the base character.
- Rarer items grant passive abilities. Rarity tiers: common / rare / epic / legendary.
- Builds — players assemble gear toward a style: aggressive, stealthy, fast, or tanky.
- Set bonuses specialize the build (vs mobs, vs players, or vs a mob type). Three sets exist (Hunter / Stalker / Bulwark), each activating at 3 matching pieces.
- Core stats: ATK, HP, Crit (Damage), Speed. Power is a weighted sum of these (
player.powAtk/powHp/powCrit/powSpeed). - Upgrade resource = blueprints. The current loop is farm blueprints → upgrade gear, because gear itself is rare (see scarcity below).
- Loot scarcity / source-gating (economy framing, §8.7):
loot.gearChanceis low — a loot roll is rarely a gear piece.loot.maxGearPerMaphard-caps gear a single map's procedural loot can yield (_gearSpawned).- Gear is earned, not found loose: it comes only from >t1 mobs, rival raiders, and rare+ containers.
- Tier-1 trash mobs and common containers drop only blueprints/materials, never gear or valuables (
loot.t1Valuables = false; t1 material drop chance vialoot.t1MaterialChance). - Scattered floor loot carries no equipment at all (
loot.floorGear = false→ valuables/blueprints only). - On extract with the in-run inventory parked,
autoEquipEmptyfills empty loadout slots from the banked haul (builds the starter kit, esp. for the gearless tutorial start).
Tunables¶
config.js loot:
| Key | Default | Note |
|---|---|---|
| gearChance | 0.06 | chance a loot roll is a gear piece (else valuable/material) |
| valuableChance | 0.25 | of non-gear rolls, chance it's a valuable (else a blueprint material) |
| maxGearPerMap | 5 | hard cap on gear pieces a map's procedural loot yields (-1 = no cap) |
| t1Valuables | false | may tier-1 trash drop gear/valuables? off → blueprints only |
| t1MaterialChance | 0.5 | chance a slain tier-1 mob drops a blueprint material |
| floorGear | false | may scattered floor loot contain equipment? off → valuables/blueprints |
| autoEquipEmpty | true | fill empty loadout slots from the haul on extract |
config.js player (stat baseline + Power weights):
| Key | Default | Note |
|---|---|---|
| baseAtk | 30 | base ATK before gear |
| baseHp | 190 | base HP before gear |
| baseCrit | 50 | base Crit before gear |
| baseSpeed | 60 | base Speed before gear |
| powAtk | 6 | Power weight on ATK |
| powHp | 0.9 | Power weight on HP |
| powCrit | 4 | Power weight on Crit |
| powSpeed | 2 | Power weight on Speed |
Rarity value multipliers (RAR_MULT, game.js): common 1 · rare 1.8 · epic 3.0 · legendary 5.0.
Design intent¶
The meta loop is what turns single raids into long-term retention — the Survivor.io "collect and upgrade" hook (PROJECT_CONTEXT §5). Source-gating gear so it only drops from real threats (>t1 mobs, rivals, rich containers) keeps finding a weapon meaningful and ties power growth back to the hide-and-kill risk gradient (§2): you have to fight or sneak past the dangerous sources to grow, while trash farming yields only the blueprints that feed slow, safe upgrading.
Open questions / deltas¶
- "Crit Damage" (concept) vs
crit(code) — the concept lists Crit Damage as a core stat; the prototype tracks a singlecritvalue. Naming/semantics need reconciling, especially for the Unity port (§9). - Scarcity / source-gating values (
gearChance,maxGearPerMap,t1Valuables,floorGear) are the parked Diablo-2 pass's economy dials (§8.7); all revert to higher values /trueto restore the looser old economy. Tuning these against the intended upgrade cadence is an open balance TODO.