Can't define irregular verbs using Adv3Lite

I have a cabinet mounted to a wall. The inside of the cabinet is described as having shelves containing a collection of tools.

There is an object assortedTools which has a vocab name shelf.

When I open the cabinet and examine a shelf, I get a description of the assortedTools object.

But if I enter shelves instead of shelf I get You see no shelves here.

I tried defining an irregular verb for shelf/shelves using the irregularVerbs list in the Adv3Lite library’s CustomVocab object, as described in the Adv3Lite manual—adv3Lite/docs/manual/message.htm#custom—but my implementation does not work.

Here’s a transcript…

…and here’s the code…

[code]#charset “us-ascii”

#include <tads.h>
#include “advlite.h”

versionInfo: GameID
IFID = ‘445C38A3-AD1B-4729-957A-F584600DE5C1’
name = ‘test’
byline = ‘by Jerry Ford’
htmlByline = ‘by
Jerry Ford

version = ‘1’
authorEmail = ‘Jerry Ford jerry.o.ford@gmail.com
desc = ‘Testing irregular verb.’
htmlDesc = ‘Testing irregular verb.’

;

gameMain: GameMainDef
initialPlayerChar = me
paraBrksBtwnSubcontents = nil

;

me: Actor ‘me;him’ @workshop
“”
firstName = ‘John’
lastName = ‘Doe’
person = 2
;

workshop: Room ‘Workshop’ ‘workshop’
“The workshop is a room where tools and stuff are stored. There is a
cabinet mounted to the wall. <.p>”
;

  • equipmentLocker: Container, Fixture ‘cabinet;supply;locker’
    “A stainless steel box is mounted to a wall. <.p>”

    isOpenable = true
    isOpen = nil

    dobjFor(Open)
    {
    action()
    {
    “You swing the door to the cabinet open revealing some shelves, on
    which a collection of tools and things are spread. <.p>”;
    isOpen = true;
    }
    }
    ;
    ++ assortedTools: Decoration ‘assorted tools;stuff things shelf’
    “The shelves of the cabinet hold an array of tools. <.p>”

    notImportantMsg = ‘The tools and things all look very nice, but nothing strikes you
    as being particularly useful in the current situation.<.p>’
    ;

CustomVocab
irregularPlurals =
[
‘shelf’, [‘shelves’]
]
;

[/code]

What am I doing wrong?

Jerry

So I posted this in reply to my own post…

[i]Well, doh! Dummy, I says to myself, no wonder it doesn’t work, shelf not being a verb, regular or otherwise.

Sorry.
[/i]

…but that ain’t right, either.

It should work. The Adv3Library list is irregularPlurals not verbs (I got confused because there is also a list of verbs in the doc) as illustrated by this example in the doc…

Shelf/shelves should fit right in.

Jerry

The error is in the definition of the vocab property of the assorted tools object:

++ assortedTools: Decoration 'assorted tools;stuff things shelf'
    "The shelves of the cabinet hold an array of tools. <.p>"

You’re missing a semicolon, so that you’ve defined “stuff things shelf” as adjectives, not nouns. If you add the missing semicolon you’ll find that it works as expected:

++ assortedTools: Decoration 'assorted tools;;stuff things shelf'
    "The shelves of the cabinet hold an array of tools. <.p>"

And you don’t need to define a CustomVocab object to make the library recognize “shelves” as the plural of “shelf”, since this is already defined in the library.