parent $note object $news var $root child_index 0 var $root owners [$news] var $root fertile 0 var $has_verbs verbs #[] var $located location $creation var $ seperator 0 var $root inited 1 var $root owned [$news] var $news last_write_time 0 var $news readers #[[$, 794117886]] var $gendered gender $gender_neuter var $located obvious 1 var $described prose #[['short, ["The latest comments from your local admins. Last written on at: %time."]]] var $root manager $news var $root writable [$news] var $root readable ['methods, 'code] var $root dbref 'news var $named name ['uniq, "News"] var $named name_aliases ["news"] var $text text ["There is a Cold Dark mailing list. Subscribe/Unsubscribe to it by sending a message to 'majordomo@tiny.mcs.usu.edu' with a mail body of 'subscribe tcd' or 'unsubscribe tcd'. Send to the list via 'tcd@tiny.mcs.usu.edu'.", "", "If you encounter any problems, feel free to connect at the Cold Dark via:", "", " telnet://recumbent.declab.usu.edu:1138/", ""] var $public public ['readable] method read_vrb arg [args]; pass(@args); readers = dict_add(readers, sender(), time()); . method new // returns true if the sender has not read recent news // first see if they have even read the news if (!(sender() in dict_keys(readers))) return 1; if ((readers[sender()]) < last_write_time) return 1; return 0; . method short_description arg [args]; var text, x; text = pass(@args); for x in [1 .. listlen(text)] text = replace(text, x, strsub(text[x], "%time", $time.ldate(last_write_time))); return text; . method validate_readers var x, new; .perms(sender(), 'system); new = #[]; for x in (readers) { if (valid(x[1])) new = dict_add(new, x[1], x[2]); } readers = new; . method prose arg [args]; var prose, x, lines; prose = (> pass(@args) <); if (type(prose) == 'dictionary) lines = (| prose['short] |); else lines = prose; if (lines) { for x in [1 .. listlen(lines)] lines = replace(lines, x, strsub(lines[x], "%time", $time.date(last_write_time))); } if (type(prose) == 'dictionary) return dict_add(prose, 'short, lines); else return lines; . method last_updated_on arg type; switch (type) { case 'string: return $time.date(last_write_time); case 'integer: return last_write_time; } . method write_vrb arg [args]; pass(@args); last_write_time = time(); . method coreify_news (> .perms(caller(), $sys) <); .set_text(["There is a Cold Dark mailing list. Subscribe/Unsubscribe to it by sending a message to 'majordomo@tiny.mcs.usu.edu' with a mail body of 'subscribe tcd' or 'unsubscribe tcd'. Send to the list via 'tcd@tiny.mcs.usu.edu'.", "", "If you encounter any problems, feel free to connect at the Cold Dark via:", "", " telnet://recumbent.declab.usu.edu:1138/", ""]); readers = #[]; last_write_time = 0; .