Phase 5: active items — room-clear charged, dedicated pedestals, Space to use
- ACTIVES table with 10 actives (Bone Nova, Offal Bomb, Blood Transfusion, Cleaver Storm, Butcher's Bell, Marrow Draught, Slaughter Time, Panic Room, Skinner's Coin, Gut Reroll); charges accrue +1/combat room, +2/boss - Dedicated 'active' pickup with weapon-style swap-drop; 30% boss / 15% item-room bonus pedestal spawns; flat +2 powerScore while held - HUD active slot with charge pips + READY state; ACTIVES help page (12 pages); teal medallion frame variant in draw_sprites.py; 10 generated icons - Procedural Sfx.active()/activeEmpty() (real clips deferred to audio batch) - Fix: toast panel width now fits the wider of title/subtitle and clamps to screen - Bump asset cache to v=40
This commit is contained in:
1 parent
f71d202850
commit
0ec12cd72c
27 files changed
+337
-37
No files matched your search
+14
@@ -90,6 +90,8 @@ function enterRoom(gx, gy) {
|
||||
const w = rollWeaponDrop(G.floor);
|
||||
spawnPickup('weapon', W / 2 + 55, H / 2, { wid: w.id });
|
||||
}
|
||||
// and occasionally a bonus active pedestal
|
||||
if (chance(0.15)) spawnActivePedestal(W / 2 + 130, H / 2 + 55);
|
||||
room.cleared = true;
|
||||
}
|
||||
} else if (room.type === 'combat' && !room.cleared && room.wavesLeft > 0) {
|
||||
@@ -177,6 +179,18 @@ function recordRoomClear(room) {
|
||||
} else {
|
||||
G.streak = 0;
|
||||
}
|
||||
// active items charge on room clears: +1 per combat room, +2 per boss
|
||||
const p = G.player;
|
||||
if (p && p.active) {
|
||||
const a = ACTIVES[p.active.iid];
|
||||
if (a) {
|
||||
const gain = room.type === 'boss' ? 2 : (room.type === 'combat' ? 1 : 0);
|
||||
if (gain > 0 && p.active.charges < a.cost) {
|
||||
p.active.charges = Math.min(a.cost, p.active.charges + gain);
|
||||
if (p.active.charges >= a.cost) spawnText(p.x, p.y - 30, a.name.toUpperCase() + ' READY', '#e2472f');
|
||||
}
|
||||
}
|
||||
}
|
||||
if (room.type === 'combat' && G.player.stats.roomHeal > 0 && G.player.hp < G.player.stats.maxHp) {
|
||||
const before = G.player.hp;
|
||||
healPlayer(G.player.stats.roomHeal);
|
||||
|
||||
Reference in new issue
Block a user