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 = #[];
.