Is there a way to make an object that has the normal properties of a room (eg. When moving through it it works like room) but can be moved around and handled as an object (examined, turned invisible, and so on)? Because I would need a bit where you can see and interact with the rooms as objects.
Also, is there a way to create a list of scenes that will happen at a certain time? Like a table with a bunch of turn scripts. Or is that too vague?
For your first question, I suspect the direct approach would be messy, but it should be pretty straightforward to create a kind of object associated with each room that automatically picks up the room’s description. Is the idea that the player can move the objects around and remap the rooms’ connections with each other? That would be possible too, maybe with a relation.
For the second question I don’t think you can define scene start and end conditions via a table, if that’s what you’re asking, but again you could define a kind of scene, say scenes of those kind all begin at a certain time/when a certain condition is met, if that kind of bundling is what you’re after?
I’d say make the “rooms” portable enterable containers that are lit. If you want compass-direction exits or entrances, you’d write rules to intercept those and teleport the player in or out of it (I’m guessing you’re wanting rooms that can be moved around and possibly assembled like a puzzle?) An enterable container has no actual size limit regarding the stuff you can put inside it. You could also use Easy Doors (or make your own code) to include object doors (standard Inform doors won’t work) inside the portable rooms which always lead to the same exit or variable locations as coded.
I’ve made hotel bathrooms that are enterable containers and a kind with attached and contained things so I could just slap the same pre-fab bathroom in every hotel room. You can even attach a switch so the player can turn a light on and off inside.
Could you elaborate on your second question? I suspect you’re asking for more than a chain of scenes that dovetail, like Scene2 is a scene. Scene2 begins when Scene1 ends.
I just wrote a randomized scene picker; it uses a table with blank out the whole row;
so that the scenes don’t repeat. I’m happy to explain my method, if that’s what you’re looking for. You could easily rig it to run in a specific sequence instead of random order.
You can also use time of day to cue scenes.
Scene3 is a scene. Scene3 begins when the time of day is 9:42pm.
This is helpful, but not what I’m looking for. To clarify for everyone:
I am looking for a sort of table which has a list of every scene in the game (except less of a scene and more of a one-turn event). Corresponding to each of the these scenes is a number which decreases every turn, and when the number gets to less than 1 (-1 is an every-turn thing) then the scene runs for the end of that turn. In this way, you can add scenes to the table at specific times, and remove them, etc. This is how scenes function in ZIL, and I’m wondering if there is anything vaguely similar in Inform.
After pushing the button:
the robot arrives in three turns from now;
continue the action.
At the time when the robot arrives:
now the robot is in the location;
say "The robot has arrived!"
You could implement this yourself (that is, avoid using either Inform’s scenes or timed events) by making a table whose columns are numbers and rules.
Table of timed events
Count To-Do
4 Ticky rule
6 Kaboom rule
Every turn:
repeat through the table of timed events:
decrement count entry;
if count entry is zero:
follow the to-do entry;
blank out the whole row;
This is the ticky rule:
say "Tick."
This is the kaboom rule:
say "Kaboom."
This is the direct equivalent of the ZIL table you describe. It’s more flexible than Inform’s timed events, because you can freely add and remove rows from the table, or adjust the timer count, or whatever.