parent $foundation object $messaged var $root child_index 0 var $root owners [$messaged] var $root owned [$messaged] var $root fertile 1 var $root inited 1 var $root manager $messaged var $root writable [$messaged] var $root readable ['parameters, 'methods, 'code] var $messaged messages 0 var $root info ["$messaged stores messages for various objects. For example, $exit messages such as would be displayed when a being attempts to travers an exit, but fails would be stored in a $messaged parameter, but could be overridden on a particular exit."] var $root dbref 'messaged method messages .perms(sender(), 'this); return messages || #[]; . method all_messages var msgs, anc, all; // For message to call when inheriting, or something .perms(sender(), 'this); all = #[]; for anc in (.ancestors()) { msgs = (| anc.messages() |); if (msgs) all = all.union(msgs); if (anc == definer()) break; } return all; . method message arg id; var ret; // Don't check .all_messages, we should get rid of it. Methods // calling .message should have their own defaults. // ret = (| (.all_messages())[id] |); return (| (.messages())[id] |) || 0; . method add_message arg id, msg; (> .perms(sender()) <); if (!messages) messages = #[]; if (.has_message(id)) throw(~msgexists, "Message already defined."); messages = dict_add(messages, id, msg); . method set_message arg id, msg; (> .perms(sender()) <); if (!messages) messages = #[]; if (.defines_msg(id)) messages = messages.replace(id, msg); else .add_message(id, msg); . method has_message arg id; return id in dict_keys(.all_messages()); . method defines_msg arg id; return id in dict_keys(.messages()); . method init_messaged .perms(caller(), $root); messages = #[]; .