inherit "inherit/treasure"; void reset(status arg) { set_name("stethoscope"); set_short("Stethoscope"); set_long("The stethoscope has two tubes that plug into your ears.\n"+ "Maybe you can apply it to something.\n"); set_weight(1); set_value(15); } object listen_ob, player_ob; void init() { add_action("apply", "apply"); add_action("apply", "use"); } status apply(string str) { string what; object ob; if(environment() != this_player()) { notify_fail("You have to get it first!\n"); return 0; } if(!str) { notify_fail("apply stethoscope to <item>\n"); return 0; } if(sscanf(str, "stethoscope to %s", what) != 1) { notify_fail("apply stethoscope to what?\n"); return 0; } if(!(ob = present(what, this_player()))) { if(!(ob = present(what, environment(this_player())))) { write("There is no "+ what +" here.\n"); return 1; } } if(living(ob) || call_other(ob, "use_stethoscope", this_object())) { write("You listen to the " + what + ".\n"); listen_ob = ob; player_ob = this_player(); set_heart_beat(1); return 1; } notify_fail("You can't do that!\n"); return 0; } /* * Detect if the player leaves the object. */ void heart_beat() { if(!(player_ob || listen_ob)) { set_heart_beat(0); return; } if(!present(listen_ob,environment(player_ob)) || environment() != player_ob) { listen_ob = 0; return; } if(living(listen_ob)) tell_object(player_ob, "Dunk dunk\n"); } object query_listening() { return listen_ob; }