Dump of #3879 (Matching Room) @create #27777 named Matching Room:Matching Room "#3879.("entrances") => E_PERM (Permission denied) "#3879.("exits") => E_PERM (Permission denied) "#3879.("key") => E_PERM (Permission denied) ;;#3879.("aliases") = {"Matching Room"} ;;#3879.("description") = "This room optionally keeps itself relatively free of garbage. If this.self_cleaning is set, nonplayer objects which are not present in .residents are only allowed to remain for this.delay seconds (default one hour). This is not perfect; it uses :enterfunc as its trigger instead of forking. Messages: @remove_object gets printed to everyone in the room when an object is ejected. [Note kluge: instead of %n to describe the object being removed, use %[tcurrent_names]; this is so multiple items will be mentioned correctly in one message.]. @self-clean commandline verb toggles self cleaning, :set_self_cleaning permits programmatic shift." ;;#3879.("object_size") = {3829, 1141286552} @verb #3879:"match" this none this rxd #15 @program #3879:match return $match_utils:match(args[1], this:visible()); . @verb #3879:"huh2" this none this rx @program #3879:huh2 set_task_perms(caller_perms()); verb = args[1]; arg = args[2]; places = {}; if (!valid(iobj)) iobj = this:match(iobjstr); endif if (dobj == $failed_match) dobj = this:match(dobjstr); if (valid(dobj) && $match_utils:match_verb(verb, dobj, arg)) return; endif endif if (valid(iobj) && $match_utils:match_verb(verb, iobj, arg)) return; endif if ((((length(dobjstr) > 1) && (dobjstr[length(dobjstr)] == "s")) && ({} != (r = $match_utils:match_list(dobjstr[1..length(dobjstr) - 1], this:visible())))) || ((dobjstr in {"all", "everything"}) && (r = this:visible()))) done = 0; for k in (r) dobj = k; done = $match_utils:match_verb(verb, k, arg) || done; endfor if (done) return; endif endif pass(@args); . @verb #3879:"visible" this none this @program #3879:visible who = (args == {}) ? player | args[1]; return setremove({@who.contents, @this.contents, @this.exits}, who); . @verb #3879:"sub_announce_all_but" this none this rxd #15 @program #3879:sub_announce_all_but "..._but version of :sub_announce_all"; if (typeof(args[1]) == OBJ) this:announce_all_but(args[2], $string_utils:pronoun_sub(tostr(@args[3..length(args)]), args[1])); else this:announce_all_but(args[1], $string_utils:pronoun_sub(tostr(@listdelete(args, 1)), player)); endif . @verb #3879:"sub_announce*_all" this none this rxd #15 @program #3879:sub_announce_all "Automatically pronoun-substituting form of the $room:announce*_all() verbs (see also :sub_announce_all_but())"; "pronoun substitution object is player by default, if the first argument is an object use that instead. The rest of the objects are made into a message and pronoun_subbed"; verb = verb[5..length(verb)]; if (!args) this:(verb)(); elseif (typeof(args[1]) == OBJ) this:(verb)($string_utils:pronoun_sub(tostr(@listdelete(args, 1)), args[1])); else this:(verb)($string_utils:pronoun_sub(tostr(@args), player)); endif . @verb #3879:"here_huh" this none this rx @program #3879:here_huh set_task_perms(caller_perms()); verb = args[1]; arg = args[2]; places = {}; if (!valid(iobj)) iobj = this:match(iobjstr); endif if (dobj == $failed_match) dobj = this:match(dobjstr); if (valid(dobj) && $match_utils:match_verb(verb, dobj, arg)) return 1; endif endif if (valid(iobj) && $match_utils:match_verb(verb, iobj, arg)) return 1; endif if ((((length(dobjstr) > 1) && (dobjstr[length(dobjstr)] == "s")) && ({} != (r = $match_utils:match_list(dobjstr[1..length(dobjstr) - 1], this:visible())))) || ((dobjstr in {"all", "everything"}) && (r = this:visible()))) done = 0; for k in (r) dobj = k; done = $match_utils:match_verb(verb, k, arg) || done; endfor if (done) return 1; endif endif return pass(@args); . "***finished***