Escalation (EnemySpawner exports, all tunable):
- Wave size grows +1 enemy per wave, capped at 20
- Enemy health +15% and damage +10% per wave, applied identically on
every peer via the spawn RPC before _ready (so hitbox stats and
current_health pick them up)
Boss milestone every 5th wave: the Snippest - the basic lobster at
5x scale and 5x combat stats (50 HP, 25 damage, 5x knockback and
reach). Movement deliberately not 5x (1.2x - it lumbers). Pays 250
gold and always drops a health orb. Wave escalation multipliers stack
on top, so later bosses keep scaling.
Boss scene instances basic_enemy.tscn with the BossLobster script;
visual/collision children are scaled uniformly in code (not the
CharacterBody3D root, not shared shape resources).
Turns the sandbox into a survival roguelike loop: outfit your gladiator
with banked gold, enter the arena, earn gold from kills and wave clears,
die, keep 10% of your total value (floored at the 500 fresh-start).
Economy (GameState autoload):
- banked_gold, owned items, and loadout persist to user://save.cfg
- Kill gold (basic 10g, armed 25g) credited server-side to the killer
- Wave-clear bonus (25 + 5/wave) for all players; wave synced to peers
- Death settlement liquidates gear, guarded against double-fire
Character creation / shop:
- Menu reframed: armory shop + live Character Sheet loadout preview
- Character Sheet gains preview mode (renders from loadout, no player)
- Buy/Equip with hand rules; two-handers and off-hands displace each
other symmetrically (shop and in-game pickups)
- Chosen loadout auto-equips on spawn via existing RPC path
Combat feel:
- Attacks snap to camera facing and lock direction for the swing
- Dash commits to its direction for the full duration
- Weapon slots show name text when no icon is set
- Hitbox/hurtbox debug meshes hidden by default (H toggles)
Death is final: players no longer respawn; a results screen shows waves,
time, kills, and the settlement, then returns to camp. Armed enemies no
longer respawn (were an infinite gold farm and respawned invisible).