getting 'nil object reference' for TIAction - Solved


Edit: I figured it out. The original post below has the error. It was on the VerbRule of the TIAction line. Instead of:

VerbRule(TickleWith)(‘tickle’ | ‘stroke’) dobjList (‘with’) singleDobj : TickleWithAction

I had to change it to

VerbRule(TickleWith)(‘tickle’ | ‘stroke’) dobjList (‘with’) singleIobj : TickleWithAction

I’ve defined the following verbs:

VerbRule(Tickle)(‘tickle’ | ‘stroke’) dobjList : TickleAction
verbPhrase = ‘tickle/tickling (what)’

VerbRule(TickleWith)(‘tickle’ | ‘stroke’) dobjList (‘with’) singleDobj : TickleWithAction
verbPhrase = ‘tickle/tickling (what) (with what)’

modify Thing
preCond = [objHeld]
verify(){ illogical(cannotTickleMsg); }
preCond = [objHeld]
verify() { illogical(cannotTickleMsg); }
preCond = [objHeld]
verify(){ illogical(cannotTickleWithMsg); }
cannotTickleMsg = '{You/he} cannot tickle {that dobj/him}. ’
cannotTickleWithMsg = '{You/he} cannot tickle anything with {that iobj/him}. ’
defaultTickleMsg = 'Nothing obvious happens. ’
defaultTickleWithMsg = 'Nothing obvious happens. ’

Next, I’ve defined a skeletal game where I’m just using the verb as is

startRoom: Room 'start room' 'start room' "Start room. "; +me: Actor; ++feather: Thing 'feather' 'feather' "A large feather. "; +npc: Actor 'npc' 'npc' "Npc ";

When I run the game and invoke the tickle verb, it works fine:

Start room
Start room.

The npc is standing here.

tickle npc
You cannot tickle that.

However, if I try to ‘tickle with’ (i.e., >tickle npc with feather) the code crashes in file action.t

    //method called on line 4145
    resolveNouns(issuingActor, targetActor, results)
        //error is here on line 4246. objMatch1 is nil (error: 'nil object reference)
        self.(objList1) = objMatch1.resolveNouns(
            self.(getResolver1)(issuingActor, targetActor, true), results);

What am I missing?