Building 480 fantasy props that wait to be installed
Every prop is now built in fantasy in four states, with twelve swaps for things that make no sense there, and none is in the game until a fantasy dungeon asks.
All 120 prop members now exist in fantasy, in four states each: peak, declining, decayed and dead. That is 480 models. None of them is in the game yet, on purpose, and there is no film because nothing is stood in the game to film.
Why is nothing installed?
On 12 October I was asked whether every theme and state of a prop should be installed, or only what a place uses. I answered “1) only what a place uses”. run.py install, given no names, works out what content/dressing.json uses and removes the rest. No place is fantasy, so fantasy had one prop installed, the barrel, and that was not from this set. The fantasy dungeon for the theme tour will name its sheet under themes in that file, and run.py install will then put in the 302 variants the room dresser lays.
How do you swap a toilet in a world with no porcelain?
By its job. The form file themes/form/fantasy.json has a jobs table. A row says why, then overrides the generator’s parameters for that object, for instance make: "privy" for the toilet. Twelve rows:
- toilet to a close-stool, washbasin to a bowl on a pedestal
- console to a scribe’s trestle table, gym bench to a plank bench
- trolley to a cart, vendor to an apothecary cabinet, till to a strongbox
- typewriter to a writing slope with inkwell and quill
- radio to a whispering shell, handheld to a small book
- camera to a gargoyle head with lit eyes, tins to clay crocks and a jug
The terminal’s row replaces its whole block list: a base, a pillar, a plinth, a glowing ball and a tilted book. The ball is the object’s indicator light, so the screen becomes a scrying orb.

Sheet 330, desk to lectern, new, declining and decayed. The desk is a trestle table and the chair has four wooden legs.

Sheet 333, bottles to kitchen knives. The radio’s shell, third row from the bottom on the right, reads as a blue lump.
What failed?
Eleven fantasy dead models produced no file at all. Reading the six sheets, 330 to 335, one at a time, showed them missing. The cause was in theme_pipeline.apply_state, which has two loops over frame parts. When a snap or a removal had already taken a part away, the loop still looked it up and the state pass raised. Both loops now skip a part already taken. The models that built before came out the same bytes, compared by manifest hash.
What is still weak?
The radio’s shell is a blue lump, not a shell. Desk, grand desk and console are all the one trestle table. The vendor’s cabinet and the stall are near twins, as are the gym bench and the seat bench. The papers-and-folders and the dish set are close to empty when decayed. I am keeping these for the tour to judge.
How was it checked?
The set was built twice to the same bytes, 480 of 480, and Godot loaded 480 of 480. The 302 variants the dresser lays pass the install gate’s dry run. The gate refuses only the 72 surgery variants, which no place uses. The other four themes’ 1,262 used variants all installed, with their files unchanged.