I am having trouble getting a backdrop to appear in both a room and a region. I thought I followed the example pretty well but I can’t get the sky to appear in both the room Rubble Heap and the region Blue Waste. It will do one but not the other, electing to choose the single room over the region.
The Blue Waste is a region. The Outside the Tunnels and the Deadwood Lowlands and the Cragged Paths and the Scorched Ridges and the Pebble Hills and the Slate Barrens are in the Blue Waste.
The sky is a backdrop. The sky is in the Rubble Heap. The sky is in the Blue Waste. The description of the sky is "Test."
Is something in the wrong order?
Made this up real quick from the documentation and I’m still having the same problem:
The Skylight Room is a room.
The Outdoors Area is a region.
The Test Room is in the Outdoors Area.
The Moon is a backdrop.
The Moon is in the Outdoors Area.
The Moon is in the Skylight Room.
The description of the Moon is "Test.".
The Test Room is south of the Skylight room.
If it were my game, I’d consider listing the rooms individually. Alternately, if there were a lot of rooms within the relevant regions, I might place the backdrop at runtime using a property.
But I’d wait to see if I’ve missed something before spending too much time on that.
Something that might work for your situation is to make a complex definition so that you can make only one assertion about the backdrop. Something like:
Definition: a room is open-to-the-sky if it is the Rubble Heap or it is in the Blue Waste.
The sky is in all open-to-the-sky rooms.
I didn’t test that, but it should be at least close.
Having trouble getting this working. Says: Problem. You wrote ‘a room is open-to-the-sky if it is in the Blue Waste’ but in an assertion ‘every’ or ‘all’ can only be used with a kind.
It’s not the most precise Problem message in this case, but the underlying cause is a genuine issue that I should have remembered: The validity of the open-to-the-sky adjective can only be determined at run time, not at compile time. This is because it’s not a specific property that can be checked for a stored value (like open vs. closed, for example) but is instead the result of a computation.
WI 8.8 Moving Backdrops shows the built-in phrase to use at runtime to change the assignment of a backdrop. You can set up a when play begins rule to do this instead of the incorrect declaration The sky is in... from my post above.