You have nothing defined for IoShootAt (you really should use ShootWith to
avoid confusion) in the indirect object (the shootable). Without that, the
shoot verb cannot work. So, you will need the following for the gun:
verIoShootWith(actor) = {}
IoShootWith(actor, dobj) =
{
dobj.DoShootWith(actor);
}
The parser gets the action for an ioAction from the indirect object,
not the direct object. If you want the direct object to contain the
action, then you have to call the method in the direct object from the
indirect object. ADV.T uses this methodology for the Ask and Tell
verbs.
Also, verDoShootWith needs to include the indirect object as a second
parameter.
DSR