/* /cmds/creator/scan.c * from the Foundation II LPC Library * scans an object * created by Descartes of Borg 950516 */ #include <lib.h> #define OPT_E (1 << 1) #define OPT_D (1 << 2) inherit LIB_DAEMON; string inventory(object ob, int level, int deep); mixed cmd(string args) { object *inv; object ob; string tmp; int scan, i, maxi; if( args == "" || !args ) { ob = this_player(); scan = 0; } else { while(args[0] == '-') { switch(args[1]) { case 'd': scan |= OPT_D; break; case 'e': scan |= OPT_E; break; } if( strlen(args) > 3 ) args = trim(args[2..]); else args = ""; } if( args != "" ) ob = to_object(args); if( !ob ) ob = this_player(); } if( scan & OPT_E ) ob = environment(ob); if( !ob ) return "No environment for requested object."; if( scan & OPT_D ) tmp = "Deep scanning " + identify(ob) + ":\n"; else tmp = "Scanning " + identify(ob) + ":\n"; for(i=0, maxi = sizeof(inv = all_inventory(ob)); i<maxi; i++) tmp += inventory(inv[i], 1, scan & OPT_D); this_player()->more(explode(tmp, "\n"), "system"); return 1; } string inventory(object ob, int level, int deep) { object *inv; string ret; int i, maxi; for(i = 1, ret = ""; i <= level; i++) ret += "\t"; ret += identify(ob); if( deep && (maxi = sizeof(inv = all_inventory(ob))) ) ret += ":\n"; else ret += "\n"; if( !deep ) return ret; for(i=0; i<maxi; i++) ret += inventory(inv[i], level + 1, 1); return ret; } void help() { message("help", "Syntax: <scan (-e) (-d) ([object])>\n\n" "Scans the inventory of the object you name. If you do " "not specify an object, then it gives you your inventory. " "If you specify the -e option, the command does the " "environment of the object which is targeted. If the -d " "option is specified, then a deep scan is done.\n\n" "See also: inventory, stat", this_player()); }