parent $body object $robot var $root dbref 'robot var $root child_index 0 var $root fertile 0 var $root manager $robot var $root owned [$robot] var $root owners [$robot] var $root writable [] var $root readable ['parameters, 'methods, 'code] var $named name ['uniq, "Robot"] var $named name_aliases [] var $gendered gender $gender_neuter var $has_verbs verbs #[] var $described prose #[['short, "A giant hungry rat. His red eyes glare at you malevontly."]] var $located location $body_cave var $located obvious 1 var $root inited 1 var $robot tell_filters [["* says, \"<this>, list commands\"", 'commands]] var $body body_parts #[] var $location contents [] var $has_commands commands [] var $has_commands shortcuts [] var $old_command_environment verb_cache #[] var $old_command_environment command_cache [] var $old_command_environment shortcuts_cache [] method tell arg text; var t, p; for t in (.tell_filters()) { p = t[1]; p = strsub(p, "<this>", .namef()); if (match_pattern(p, text)) $scheduler.add_task(1, t[2], text); } . method add_tell_filter arg mask, method; .perms(sender()); if ((type(mask) != 'string) || (type(method) != 'symbol)) throw(~type, "Args must be a string and a symbol."); tell_filters = [@tell_filters, [mask, method]]; . method del_tell_filter arg mask; var t, tf; .perms(sender()); if (type(mask) != 'string) throw("Argument must be a string"); tf = []; for t in [1 .. listlen(tell_filters)] { if (((tell_filters[t])[1]) == mask) { if (t > 1) tf = [@tf, @sublist(tell_filters, 1, t - 1)]; if (t < listlen(tell_filters)) tf = [@tf, @sublist(tell_filters, t + 1)]; tell_filters = tf; return; } } throw(~tell_nf, "Mask not found."); . method tell_filters var t; catch ~methodnf { t = pass(); } with handler { t = []; } return [@tell_filters, @t]; . method good_morning arg text; text = $string.to_list(text, " "); .say("Good morning, " + (text[1])); . method say arg what; (.location()).announce((((.namef()) + " says, \"") + what) + "\""); . method commands arg text; var o, who, t; //"* says, \"<this>, list commands\"" text = $string.to_list(text, " "); who = $object.to_dbref(text[1]); o = [(who.namef()) + ", my commands are:"]; for t in (.tell_filters()) o = [@o, ((" \"" + (t[1])) + "\" which calls ") + tostr(t[2])]; .lsay(o); . method lsay arg what; what = [((.namef()) + " says, \"") + (what[1]), @sublist(what, 2)]; (.location()).announce(what); . method follow arg who; if (type(who) == 'string) who = $object.to_dbref(who); if (type(who) != 'dbref) throw(~objnf, ("Object (" + who) + ") unknown."); following = who; . method event arg frob; if (class(frob) != $movement_event) return; (frob.exit()).go_through(); .