Debugging irregular verbs

I thought I’d seen more information in the documentation about creating new verbs for adaptive text, but all I could find was the section on creating the verb “retrofit.” What I’d like to do is:

  • Be able to specify an irregular verb like “deal” -> “dealt”

  • Be able to test that a verb conjugates correctly.

  • Be able to check whether and where a verb is defined.

Is there an easy builtin way to do any of those things? Is there documentation that I’m missing?

Edit: I just did a brute force check, which shows that “deal” and “beat” both work correctly, but they must be specified as verbs first. It would be tedious to do this check for every verb, though, and I don’t like the level of mystery involved in getting them to work. Here’s the test I did:

"tmp"

To beat is a verb. To deal is a verb.

Example Location is a room. 

When play begins:
	now the story tense is perfect tense;
	say "[The player] [deal] damage. [The player] [beat] the opponent's defense rating."

You can still define irregular verbs in the old style if necessary: “To deal (he deals, they deal, he dealt, it is dealt, he is dealing) is a verb.”

You can define an irregular verb the same way you did in previous versions.

To unbreak (he unbreaks, they unbreak, he unbroke, it is unbroken, he is unbreaking) is a verb.

When play begins:
	repeat with tense running through grammatical tenses:
		now the story tense is tense;
		say "[The player] [unbreak] the thing."

That’s good… any debugging help?

Also, just to make things difficult, I’ve been testing in perfect tense. It turns up some weird things… for example:

[code]
To use is a verb.

Check reloading when the maximum shots of the noun is 0 (this is the cannot reload weapons that use no ammo rule):
take no time;
say “[The noun] [do not use] ammunition.” instead;[/code]

In perfect tense, this looks like:

Is there a trick to force it to say “does not use” in perfect tense and “did not use” in past perfect tense?

You could use the “conjugate [verb] in [tense]” construction to specify present tense there.

Here’s a tricky one. What if I want to use both “lie” as in “tell a falsehood” and “lie” as in “get horizontal?” How can I tell the parser which one to do?

One cool thing I discovered is that verbs can be multiple word phrases. So this works:

To lie down (he lies down, they lie down, he lay down, it is laid down) is a verb.

But what if I want to say:

"[We] [lie] on the bed of nails and [lie], 'Oh yes, I am very comfortable.'"

There’s been some discussion of this on the bug tracker. Right now it seems there isn’t a good way except to write your verbs out by hand.

I thought maybe I could do something like this:

To falsely-lie (he lies, they lie, he lied, it is lied) is a verb.

But I can’t refer to it as “the verb falsely-lie,” so it doesn’t really help.

Yeah, this very case was discussed at the bug-tracker and Graham closed it out as something he hopes to return to later. I think if you want two homonymous verbs with different conjugations you have to represent one as a hand-rolled text substitution (“To say falsely-lie:” and then a bunch of options depending on tense and prior named object). It won’t get you the additional powers of verbs if any, though.