Prop batch 2: monitor, booth lamp, dishwasher, pool table, wet-floor cone, high tables, plants, and a real red-carpet plate for the door
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1
.gitignore
vendored
@ -1,2 +1,3 @@
|
|||||||
node_modules
|
node_modules
|
||||||
dist/
|
dist/
|
||||||
|
art_incoming/
|
||||||
|
|||||||
@ -1531,3 +1531,24 @@ QueueManager owns it (pure, 7 new tests); DoorScene renders it.
|
|||||||
`monitor`, `boothLamp`, `dishwasher`, `poolTable`, `wetFloor`, `highTable`,
|
`monitor`, `boothLamp`, `dishwasher`, `poolTable`, `wetFloor`, `highTable`,
|
||||||
plus new candidates: red-carpet strip + brass bollards (street), the pour
|
plus new candidates: red-carpet strip + brass bollards (street), the pour
|
||||||
glass, the card jar. Recipe in the Phase-3 deploy note.
|
glass, the card jar. Recipe in the Phase-3 deploy note.
|
||||||
|
|
||||||
|
## SESSION — FABLE-SOLO-15 · 2026-07-21
|
||||||
|
|
||||||
|
**Branch:** main (solo, Fable, ultra) · **Gate:** lint ✓ build ✓ test ✓ (718 tests)
|
||||||
|
**Deployed:** https://monsterrobot.games/not-tonight/ (rsync, curl 200)
|
||||||
|
|
||||||
|
### MODELBEAST prop batch #2 (the SOLO-14 art audit, cleared)
|
||||||
|
8 flux_local jobs on the farm (flux2-klein-4b steps 4, seeds 4230–4237,
|
||||||
|
SPACES.md prompt register), imported via tools/props_import.py → 28 generated
|
||||||
|
props now in the manifest: `monitor`, `boothLamp`, `dishwasher`, `poolTable`,
|
||||||
|
`wetFloor`, `highTable`, `plant`, and **`carpet`** — a front-on red-carpet
|
||||||
|
plate (128×32, new TARGETS entry) that DoorScene now prefers over the
|
||||||
|
rect-drawn strip (`gen:prop:carpet` texture check, rects stay as fallback).
|
||||||
|
Batch script kept at scratchpad `mb_props_batch.py` pattern; raws in
|
||||||
|
art_incoming/ (now gitignored — repo carries only the game-ready sprites).
|
||||||
|
Verified in pane: all 8 `gen:prop:*` textures load, carpet plate renders at
|
||||||
|
the door, pool corner dressed on the floor. Screenshots taken.
|
||||||
|
|
||||||
|
### Shelf
|
||||||
|
Remaining §6: Head of Security finale arc, roster board. Ambition-tier patron
|
||||||
|
sprite sheets (ASSETS.md §2) still wants its own session.
|
||||||
|
|||||||
BIN
public/props/boothLamp.png
Normal file
|
After Width: | Height: | Size: 424 B |
BIN
public/props/carpet.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
public/props/dishwasher.png
Normal file
|
After Width: | Height: | Size: 552 B |
BIN
public/props/highTable.png
Normal file
|
After Width: | Height: | Size: 430 B |
@ -2,15 +2,22 @@
|
|||||||
"props": [
|
"props": [
|
||||||
"arcade",
|
"arcade",
|
||||||
"barShelf",
|
"barShelf",
|
||||||
|
"boothLamp",
|
||||||
"boothTable",
|
"boothTable",
|
||||||
"buttBin",
|
"buttBin",
|
||||||
|
"carpet",
|
||||||
"cloak",
|
"cloak",
|
||||||
"crate",
|
"crate",
|
||||||
"deck",
|
"deck",
|
||||||
"discoball",
|
"discoball",
|
||||||
|
"dishwasher",
|
||||||
"glassRack",
|
"glassRack",
|
||||||
"glassStack",
|
"glassStack",
|
||||||
|
"highTable",
|
||||||
"mixer",
|
"mixer",
|
||||||
|
"monitor",
|
||||||
|
"plant",
|
||||||
|
"poolTable",
|
||||||
"poster1",
|
"poster1",
|
||||||
"poster2",
|
"poster2",
|
||||||
"poster3",
|
"poster3",
|
||||||
@ -19,6 +26,7 @@
|
|||||||
"stampPodium",
|
"stampPodium",
|
||||||
"street_backdrop",
|
"street_backdrop",
|
||||||
"taps",
|
"taps",
|
||||||
"till"
|
"till",
|
||||||
|
"wetFloor"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
public/props/monitor.png
Normal file
|
After Width: | Height: | Size: 351 B |
BIN
public/props/plant.png
Normal file
|
After Width: | Height: | Size: 396 B |
BIN
public/props/poolTable.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
public/props/wetFloor.png
Normal file
|
After Width: | Height: | Size: 387 B |
@ -255,13 +255,17 @@ export class DoorScene extends Phaser.Scene {
|
|||||||
// The red carpet: a strip of somewhere-better between rope and door,
|
// The red carpet: a strip of somewhere-better between rope and door,
|
||||||
// flanked by brass posts. Bodies parked here are rendered by
|
// flanked by brass posts. Bodies parked here are rendered by
|
||||||
// syncCarpetSprites; the strip is set dressing.
|
// syncCarpetSprites; the strip is set dressing.
|
||||||
this.add.rectangle(420, 232, 124, 12, 0x8a1428).setDepth(2);
|
if (this.textures.exists('gen:prop:carpet')) {
|
||||||
this.add.rectangle(420, 227, 124, 2, 0xa8283c).setDepth(2);
|
this.add.image(420, 236, 'gen:prop:carpet').setOrigin(0.5, 1).setDisplaySize(132, 34).setDepth(2);
|
||||||
for (const px of [356, 484]) {
|
} else {
|
||||||
this.add.rectangle(px, 216, 3, 22, 0xc8a24a).setDepth(2);
|
this.add.rectangle(420, 232, 124, 12, 0x8a1428).setDepth(2);
|
||||||
this.add.rectangle(px, 205, 7, 4, 0xe0c060).setDepth(2);
|
this.add.rectangle(420, 227, 124, 2, 0xa8283c).setDepth(2);
|
||||||
|
for (const px of [356, 484]) {
|
||||||
|
this.add.rectangle(px, 216, 3, 22, 0xc8a24a).setDepth(2);
|
||||||
|
this.add.rectangle(px, 205, 7, 4, 0xe0c060).setDepth(2);
|
||||||
|
}
|
||||||
|
this.add.rectangle(420, 206, 126, 2, 0x7a2438).setDepth(2); // the velvet itself
|
||||||
}
|
}
|
||||||
this.add.rectangle(420, 206, 126, 2, 0x7a2438).setDepth(2); // the velvet itself
|
|
||||||
|
|
||||||
this.buildRain();
|
this.buildRain();
|
||||||
this.buildRope();
|
this.buildRope();
|
||||||
|
|||||||
@ -29,6 +29,8 @@ TARGETS = {
|
|||||||
"dishwasher": (32, 16),
|
"dishwasher": (32, 16),
|
||||||
# the door-scene backdrop plate is special-cased: full size, no quantise
|
# the door-scene backdrop plate is special-cased: full size, no quantise
|
||||||
"street:backdrop": (640, 176),
|
"street:backdrop": (640, 176),
|
||||||
|
# door-scene red carpet plate (front-on, not a floor prop)
|
||||||
|
"carpet": (128, 32),
|
||||||
}
|
}
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
|
|||||||