A command used to list all objects with a certain stat, the position the item is worn may also be specified Any bugs/problems email be at jakehturner@hotmail.com or you can find me on ICQ at #64284941. ------------------ In interpreter.c ------------------ ---- Search for: ACMD(do_stat); And below it add: ACMD(do_statlist); --- Search for: { "stat" , POS_DEAD , do_stat , LVL_IMMORT, 0 }, And below it add: { "statlist" , POS_DEAD , do_statlist , LVL_IMMORT, 0 }, ------------------- act.wizard.c ------------------- --- Add the following somewhere in the code.. ACMD(do_statlist) { char arg1[MAX_INPUT_LENGTH]; char arg2[MAX_INPUT_LENGTH]; int aff = 0, pos = -1, nr, count = 0, object, size = 0; *buf = '\0'; two_arguments(argument, arg1, arg2); if(!*arg1) { send_to_char("You must specify which affect you want. Options are:", ch); olc_list_flags(ch, apply_types); return; } for(aff = 0; *apply_types[aff] != '\n'; aff++) if(is_abbrev(arg1, apply_types[aff])) break; if(*apply_types[aff] == '\n') { send_to_char("Unrecognized apply type, options are:", ch); olc_list_flags(ch, apply_types); return; } if(*arg2) { for(pos = 0; *wear_bits[pos] != '\n'; pos++) if(is_abbrev(arg2, wear_bits[pos])) break; if(*wear_bits[pos] == '\n') { send_to_char("Unrecognized position, options are:", ch); olc_list_flags(ch, wear_bits); return; } } for(object = 0; object <= top_of_objt; object++) { if(pos != -1 && !CAN_WEAR(&obj_proto[object], 1 << pos)) continue; for(nr = 0; nr < MAX_OBJ_AFFECT; nr++) { if(obj_proto[object].affected[nr].location == aff) { count++; sprintf(buf, "[%d] %s - ", obj_index[object].vnum, obj_proto[object].short_description); sprintbit(obj_proto[object].obj_flags.wear_flags, wear_bits, buf + strlen(buf)); sprintf(buf + strlen(buf), "- "); size = obj_proto[object].affected[nr].modifier; if(size < 0) sprintf(buf + strlen(buf), "&b%d&n\r\n", size); else { switch(size) { case 0: sprintf(buf + strlen(buf), "&r0&n\r\n"); break; case 1: sprintf(buf + strlen(buf), "&y1&n\r\n"); break; case 2: sprintf(buf + strlen(buf), "&g2&n\r\n"); break; case 3: sprintf(buf + strlen(buf), "&G3&n\r\n"); break; case 4: sprintf(buf + strlen(buf), "&C4&n\r\n"); break; default: sprintf(buf + strlen(buf), "&W%d&n\r\n", size); break; } } send_to_char(buf, ch); } } } if(!count) send_to_char("No items that affect that stat.\r\n", ch); }