It seems Inform can’t distinguish between TAKE ALL and TAKE ALL BOOKS. I believe I found a neater way to re-implement how ALL is handled in Inform 7, and simplifies the language to boot. Here’s the crux:A thing can be all. A thing is usually all. The player is not all.
Understand the all property as describing a thing.
And that’s about it. Here’s a compile-able sample, using ALLL (with an extra L to avoid complications) that shows Inform picks up the appropriate things.[code]
“all as adj” by Ron Newcomb
A thing can be alll. A thing is usually alll. The player is not alll.
Understand the alll property as describing a thing.
Heroism, Courage, and Loyalty are in the library.
Heroism, Courage, and Loyalty are undescribed, not alll.
A book is a kind of thing. Understand “book/books” as a book.
A Time To Kill, The Great Gatsby, and Lord Jim are books in the library.
A bookmark and a candle are in the library.
The library is room.
Test me with “take alll / take alll books”
[/code]produces:
Obviously the final implementation would perform the action on each item rather that as which-do-you-mean. This is just for illustration purposes.
Anyone foresee problems with this idea? If adopted, then the rulebook “deciding whether all includes” can go away, objects being set at compile time or at runtime as “all” just like any other property.