parent $frob_class parent $messaged object $event_class var $root child_index 0 var $root owners [$event_class] var $root owned [$event_class] var $root fertile 0 var $root inited 1 var $root manager $event_class var $root writable [$event_class] var $root readable ['parameters, 'methods, 'code] var $root dbref 'event_class var $event_class type 'generic var $messaged messages #[] method new arg [args]; .perms(caller(), $event_handler); // we still don't know what we want // if (type(location) != 'dbref) // throw(~type, "The location must be given as a dbref"); // return <this(), #[['actor, sender()], ['action, action], ['what, what], ['where, location], ['direction, direction]]>; return <this(), [sender(), @args]>; . method dispatch arg dict; (dict['where]).event(<this(), dict>); . method set_event_type arg newtype; .perms(sender()); if (type(newtype) != 'symbol) throw(~type, "New event types must be symbols."); type = newtype; . method type arg frob; return type; . method process arg [args]; .