Upgrade system — review + changes (2026-06-30)
Upgrade system — review + changes (2026-06-30)
Section titled “Upgrade system — review + changes (2026-06-30)”A pass over how upgrades are offered (Sim.roll_upgrade_choices), driven by your asks: weapons
came too fast, the offers wanted a random seed each game, and a thorough look at the system.
Applied this session
Section titled “Applied this session”- Weapons are now paced by level (the “too quick” fix). Before: survival GUARANTEED a weapon
every level-up while you had <4 weapons, and crystals dumped every un-owned weapon into the
offer pool — so weapons arrived almost every level. Now a new weapon is only OFFERED once
player.level >= (current weapon count) * WEAPON_LEVEL_GAP(=3). So roughly: weapon #2 at L3, #3 at L6, #4 at L9, #5 at L12 — the build forms gradually. TuneSim.WEAPON_LEVEL_GAP(lower = faster). Determinism-safe (the baseline never rolls upgrades). - Random seed every game (separate commit):
mainnow seeds the run withrandi(), so spawns AND upgrade rolls vary run-to-run instead of replaying a fixed sequence.
How offers work now (for reference)
Section titled “How offers work now (for reference)”- Survival: guarantee an evolution if available → guarantee a weapon if past the level gate and <4 owned → fill the rest from eligible stat/transformative mods + per-weapon mods + weapons.
- Crystals (v0.1 mode): ~34% chance of a crystal grant, then fill from a shuffled pool of
eligible mods + (level-gated) weapons.
wm:/evolve:are replaced by the crystal-threshold auto-upgrades (_eval_thresholds), so per-weapon mods aren’t offered in crystals.
Observations to consider (NOT applied — your call / playtest)
Section titled “Observations to consider (NOT applied — your call / playtest)”- Crystals mod pool is thin.
_mod_eligiblefilters out reaction/aura/stack mods (reactions are off in crystals) AND pickup-radius. What’s left to offer beside crystal grants + weapons is the plain stat mods (move-speed, fire-rate, thrusters, armor, max-hp). Early on that can feel repetitive. Options: add a couple of crystals-relevant mods, or raise the crystal-grant rate. - Dead/!offerable upgrades. The
critmod is loaded but never offered (not in StatEffects/ SimMods vocab);pierce/splitonly appear once a projectile weapon is owned. Worth confirming that’s intended vs. surfacing them. - Weapon pacing vs run length. Telemetry: crystals runs ~6 min / ~level 13. With GAP=3 a player reaches ~5 weapons by L12 — matches the observed ~5-weapon average but spread across the run. If you want the 6th weapon to feel achievable, GAP=3 gets there ~L15; lower GAP slightly if not.
- Evolutions are always surfaced first when available — that’s a deliberate payoff and reads well; left as-is.
Levers
Section titled “Levers”Sim.WEAPON_LEVEL_GAP (pacing), Sim.MAX_WEAPONS (cap), the crystal-grant rate (0.34 in
roll_upgrade_choices), _mod_eligible (what mods are offerable per ruleset), WEAPON_MODS /
WeaponThresholds (per-weapon upgrade content).