/** * * Simple Blackboard For Simple Houses * * Suggested by Lanfear. * @author Drakkos * @started 16/06/2000 * */ inherit "/std/room/furniture/basic"; int query_allowed (string); string read_stuff(); string query_words(); string _owner = ""; string _words = ""; void setup() { set_name ("blackboard"); set_short ("blackboard"); add_alias (({"board", "sign"})); set_long ("The residue of faded chalk-dust and long forgotten " "doodles lies heavily on the blackboard. The grain of the " "board is worn and slightly mottled with age, hinting at " "a long and dignified history of classrooms and university " "lecterns. Or perhaps just hinting at cheap wood and " "bad upkeep.\n"); set_read_mess ((: read_stuff :)); set_allowed_room_verbs( (["standing" : "stands", "hanging" : "hangs"]) ); set_value(0); } void init() { this_player()->add_command ("write", this_object(), "[on] <direct:object>"); this_player()->add_command ("clean", this_object(), "<direct:object>"); } void set_words (string bing) { _words = bing; } string query_words () { return _words; } string read_stuff() { string bing = ""; if (sizeof (query_words())) { bing += query_words(); } if (!sizeof (bing)) { bing = "A few random letters that escaped cleaning can be seen on " "the blackboard."; } return bing; } int do_clean() { if (!query_allowed (this_player()->query_name())) { this_player()->add_failed_mess (this_object(), "You cannot clean " "the blackboard!\n", ({ })); return 0; } set_words (""); return 1; } int do_write() { string bean; if (!query_allowed (this_player()->query_name())) { this_player()->add_failed_mess (this_object(), "You cannot write on " "the blackboard!\n", ({ })); return 0; } bean = query_words(); this_player()->do_edit(bean, "blackboard_text", this_object()); this_player()->add_succeeded_mess (this_object(), "$N find$s a handy " "piece of chalk and start$s to write on the blackboard.\n", ({ })); return 1; } void blackboard_text(string text) { if (!text) { tell_room (environment (this_object()), this_player()->one_short() + " steps back from the blackboard without making any " "changes.\n", this_player()); tell_object (this_player(), "Okay, nothing has been changed.\n"); return; } set_words (text); tell_room(environment (this_object()), this_player()->one_short() + " finishes writing on the blackboard.\n", this_player()); } int query_allowed (string name) { if (function_exists ("query_owner", environment (this_object()))) { if (name == environment (this_object())->query_owner()) { return 1; } } if (function_exists ("query_allowed", environment (this_object()))) { if (member_array (name, environment(this_object())->query_allowed()) != -1) { return 1; } else { return 0; } } return 1; } mapping query_dynamic_auto_load() { return ([ "::" : ::query_dynamic_auto_load(), "words" : query_words(), ]); } void init_dynamic_arg( mapping map ) { ::init_dynamic_arg( map[ "::" ] ); set_words (map["words"]); set_read_mess ((: read_stuff :)); }