Item system overhaul: rarity bands, per-item caps, source pools + 14 new passives

- Add ITEM_RARITY (common/uncommon/rare/legendary) with per-item tier caps
- Weighted pools per source: elites favour common, item rooms uncommon,
  bosses rare/legendary; legendaries are boss-exclusive; capped items excluded
- Rarity-weighted powerScore so deep common stacks inflate difficulty less
- Differentiate duplicates: Grafted Trigger, Crow Bait, Hollow Bones, Twin Hearts
- 14 new clean passives incl. Chill Gland (activates slowOnHit) and Hooked Sinew
  (activates magnetPull); revive magnetPull in pickups
- Rarity-tinted pedestal glow + nameplates, rarity-sorted HUD implant tray,
  dynamic help implant pages (8 -> 9)
- Generate 14 item icons via gen_assets.py; bump asset cache to v=38
- Update smoke tests for 60 items, per-item caps, pools, weighted power
This commit is contained in:
MeatSlicer Developer committed 2026-07-30 15:21:02 +10:00
1 parent a02cff52cf
commit 4f46d54e99
28 files changed
+356 -187

No files matched your search

+4 -1
View File
@@ -36,6 +36,9 @@ const SPRITE_MANIFEST = [
'i_deadmanswitch', 'i_orbitcrown', 'i_tannedhide', 'i_deadmansclock', 'i_hollowbones', 'i_boneplate',
'i_wormgut', 'i_spinecage', 'i_secondstomach', 'i_spitewell', 'i_twinhearts', 'i_brassmagazine',
'i_crowbait', 'i_gorgingleech', 'i_rerollrib',
'i_chillgland', 'i_hookedsinew', 'i_gyroscopicribs', 'i_marrowpiston', 'i_splitcortex',
'i_gristlecord', 'i_renderedfat', 'i_whipcordtendon', 'i_rusteddiadem', 'i_gorgedtick',
'i_bonemealpowder', 'i_rimedfang', 'i_butcherstwine', 'i_cindersump',
// full 64px/128px eight-direction action atlases
'player_sheet', 'player_legs_sheet',
'enemy_shambler_sheet', 'enemy_runner_sheet', 'enemy_spitter_sheet',
@@ -73,7 +76,7 @@ const Sprites = {
const img = new Image();
img.onload = () => { this.imgs[name] = img; if (--pending === 0) G.imagesLoaded = true; };
img.onerror = () => { if (--pending === 0) G.imagesLoaded = true; };
img.src = 'assets/' + name + '.png?v=37';
img.src = 'assets/' + name + '.png?v=38';
}
},