Where is the order of rules? [Solved]

Noob here again. I can’t fit the whole manual into my head at once, bear with me please.

I once saw a handy guide about how rules are processed – Befores, Insteads, Afters, and all that. My computer crashed, and I’ve lost it. If anyone knows where I could get this simple guide on the order of attempted operations, I’d appreciate it.

If I recall right, it was a color-coded html table, but it might have been an image.

Specifically, this time, I’m trying to get something to happen the first time the player lies down on a table; the problem is that if the requirements for lying down on the table aren’t met [“You can’t do that, there’s too much junk on the table”], the first time is still used up by the failed attempt.

The guide would probably solve my related future problems as well, so I’m really hoping I didn’t just imagine it.

Inform Rules Chart (pdf).

This looks like what you are describing…
Look for the I7 Cheatsheet in the List of inform 7 documentation at the top of this forum [url]https://intfiction.org/t/the-list-of-inform-7-documentation-as-of-19-dec-2011/3311/1]
Its towards the end of the doc (top of pg6)

These are more detailed than the one I wanted, which is sure to be useful. Thanks.

Any advice on how I should do this? If a separate “After” rule isn’t enough to only conduct the one-time event if the “Before” rule succeeds, am I going to have to assign a variable or value or so on [“the table can be used or unused, the table is unused”], or is there some simpler way to do these things?

Ah, some people helped out while I was typing my long post about rule order! Well, I’ll still let you in on this last part, if you like.

To handle the situation regarding your messy table, maybe you should not use “for the first time” in that instance. Try this example as an alternate approach. In the situation, a walrus will represent the mess on your table.

[code]A table is in bedroom. It is an enterable supporter.
A walrus is on table.

Instead of pushing walrus: say “You push the thing right off the table. That’ll show him!”; now walrus is in bedroom.
Before entering table when walrus is on table: say “The walrus is irate and shoves you right back off.” instead.
After entering table when we have not entered table: say “You get on the table. With the walrus gone, this is much more spacious!”[/code]

With this example, the player can unsuccessfully try to “get on table” as much as he likes when the walrus is in the way. It will not disrupt the “much more spacious” message that will be printed on the first successful “get on” attempt. All further attempts to “get on table” will just print the typical ‘you get on’ message.

One word of warning is that this will not work correctly if the player has access to the table before the walrus gets on it.

I don’t see why it wouldn’t work, other than the game text reporting a now-departed walrus, who may have never seen a table in his life, let alone know the exquisite pleasure of sleeping upon a spacious hardwood veneer.

The player is meant to have access to the table, and even be able to sit on it [I’m trying to incorporate the Postures extension in a realistic way]. It’s meant to be a rare inviting place to sift through one’s possessions or create a stash, as most of the large region is inhospitable, but I can’t have the player lying down for a pleasant cat nap on top of the bulky metal ladder they grabbed from the attic – at the least, it would make the table seem much bigger than it is, which would throw the player’s sense of proportion about the house into chaos.

Now that I think about it, I should just use an unused/used state.

If anyone’s still reading the topic, I’m at 10,000 words in my source text and I have three and a half rooms built. When the whole thing’s done it may have less than 25 rooms, but by then, will I be able to compile it at all?

My Hadean Lands test framework (all the game objects, none of the final rooms) is up to 72000 words. There are no particular compilation problems with large I7 games as long as you are targetting Glulx.

(Source code management is another question, which has been discussed on and off in the past several years. The Mac IDE in particular has problems with very large source files.)

You may be right about using your used/unused state. Another possibility is to make a new condition that determines what particular characteristics define a table where lying down is not desired.

As for the length of the source text, I’m sure it can be pretty gigantic if you need it to be. Compile time is probably going to be your worst enemy after a certain point. It is also possible for the Inform 6 portion of the compiler to run out of memory if the source starts getting really huge. There may be some extra settings to help in that situation, but I’m not experienced in pushing Inform’s limits. Someone else will have to give you the specifics.

There are. But I haven’t needed 'em yet, so you won’t need 'em for quite a while.

If you write a really large program, you might need to upgrade the I6 compiler in your I7 setup, to fix certain memory-handling bugs. (See Mantis bug 758.) I really don’t expect most people, including myself, to run into this.