>You could, for example, copy the code for decoration from std.t (or is it
>adv.t?) and just change "is" to "are".
But what happens when the user does something you hadn't anticipated with
the decoration, like
>turn books
Then ADV.T might print something like "The books doesn't turn." This is a
general problem that you can't solve (with ADV.T) without writing tons of
special-case code.
In WorldClass there are separate methods for plural/singular and
objective/nominative case. So a typical WorldClass "you can't do that"
message looks like this:
"\^<<obj.subjthedesc>> <<obj.doesnt>> turn."
Which gives you
The books don't turn. [books object has isplural = true]
The shelf doesn't turn. [shelf object has isplural = nil]
WorldClass also handles the reflexive case properly:
"\^<<actor.subjthedesc>> can't turn <<obj.objthedesc(actor)>>."
Gives you
You can't turn the books. [actor != obj]
You can't turn yourself. [actor = obj]
Floyd can't turn himself. [actor = obj]
&c.
If you're writing a game that assumes the actor is always "you," as is
typical, you needn't write such paranoid error messages. But WorldClass
itself makes no assumptions, so its messages will always work.
There are other subtleties to getting generated text right in all cases.
Some nouns are determined (e.g., Elvis, Yet-Another-Rusty-Rod), and should
never get a preceding "the". Having actors you control that aren't "you"
requires care as well.
Though people have mentioned they see no *visible* advantage to WorldClass,
I think these kind of things do make a difference in polish, which someone
mentioned in another thread.
Dave Baggett
__
dmb@ai.mit.edu
"Mr. Price: Please don't try to make things nice! The wrong notes are *right*."
--- Charles Ives (note to copyist on the autograph score of The Fourth of July)