/* /verbs/items/listen.c * from the Dead Souls Object Library * created by Descartes of Borg 961014 * Version: @(#) listen.c 1.1@(#) * Last modified: 96/10/14 */ #include <lib.h> #include <daemons.h> #include <function.h> inherit LIB_VERB; static void create() { verb::create(); SetVerb("listen"); SetRules("", "OBJ", "to OBJ", "to STR on OBJ", "to STR of OBJ"); SetErrorMessage("Listen to something?"); SetHelp("Syntax: <listen>\n" " <listen to ITEM>\n\n" "Without any arguments, this command allowed you to listen " "to your general surroundings. You may, however, concentrate " "your listening on any target. If it is making noise and you " "can hear well, then you will hear any relevant noise it is " "making.\n\n" "See also: look, search, smell, touch"); } mixed can_listen() { if( !environment(this_player()) ) { return "You are nowhere."; } return 1; } mixed can_listen_obj() { return 1; } mixed can_listen_to_obj() { return 1; } mixed can_listen_to_str_word_obj() { return 1; } mixed do_listen() { mixed val = environment(this_player())->GetListen(); if( functionp(val) ) { if( !(functionp(val) & FP_OWNER_DESTED) ) { val = evaluate(val, this_player()); } else { val = 0; } } if( !val ) { val = "You don't hear a thing."; } environment(this_player())->eventPrint(this_player()->GetName() + " puts an ear to the air.", this_player()); this_player()->eventPrint(val); return 1; } mixed do_listen_obj(object ob) { return ob->eventListen(this_player()); } mixed do_listen_to_obj(object ob) { return do_listen_obj(ob); } mixed do_listen_to_str_word_obj(string str, object ob) { return ob->eventListen(this_player(), str); }