string info = ""; mapping busy = ([]); void create(){ seteuid("Root"); } void receive_snoop(string bing){ info += bing; } string query_result(){ return info; } void remind(){ if(busy[this_player()]){ write("Type harass again to stop logging.\n"); call_out((:remind:), 60); } } mixed *query_patterns(){ return ({"", function(){ if(busy[this_player()]){ string result = busy[this_player()]->query_result(); unguarded((:write_file,sprintf("/d/liaison/secure/harass/%s%d", this_player()->query_name(), time()), $(result):)); destruct(busy[this_player()]); map_delete(busy, this_player()); write("Log written.\n"); return 1; } else { busy[this_player()] = clone_object(__FILE__); if(efun::snoop(busy[this_player()], this_player())){ write("Started logging.\nType harass again to stop.\n"); call_out((:remind:), 60); return 1; } else { destruct(busy[this_player()]); map_delete(busy, this_player()); write("Failed.\n"); return 1; } } } }); }