/* Dump command...This command creates a text file with the stats of every * * mob, or object in the mud, depending on the argument given. * * Obviously, this will tend to create HUGE files, so it is recommended * * that it be only given to VERY high level imms, and preferably those * * with shell access, so that they may clean it out, when they are done * * with it. */ void do_dump(CHAR_DATA *ch, char *argument) { MOB_INDEX_DATA *mob; OBJ_INDEX_DATA *obj; AFFECT_DATA *paf; long counter; char arg[MAX_INPUT_LENGTH]; argument = one_argument(argument, arg); if(IS_NPC(ch)) return; if(get_trust(ch) < LEVEL_SUPREME) { send_to_char("Sorry, only the Implementor may use this command!\n\r", ch); return; } if(!str_cmp(arg, "mobs") ) { FILE *fp = fopen("../mobdata.txt", "w"); send_to_char("Writing to file...\n\r", ch); for(counter=0; counter <= 32600; counter++) { if ( (mob = get_mob_index(counter) ) != NULL ) { fprintf(fp, "VNUM: %d\n", mob->vnum); fprintf(fp, "S_DESC: %s\n", mob->short_descr); fprintf(fp, "LEVEL: %d\n", mob->level); fprintf(fp, "HITROLL: %d\n", GET_HITROLL(mob) ); fprintf(fp, "DAMROLL: %d\n", GET_DAMROLL(mob) ); fprintf(fp, "HITDIE: %dd%d+%d\n", mob->hitnodice, mob->hitsizedice, mob->hitplus ); fprintf(fp, "DAMDIE: %dd%d+%d\n", mob->damnodice, mob->damsizedice, mob->damplus ); fprintf(fp, "ACT FLAGS: %s\n", ext_flag_string(&mob->act, act_flags) ); fprintf(fp, "AFFECTED_BY: %s\n", affect_bit_name(&mob->affected_by) ); fprintf(fp, "RESISTS: %s\n", flag_string(mob->resistant, ris_flags) ); fprintf(fp, "SUSCEPTS: %s\n", flag_string(mob->susceptible, ris_flags) ); fprintf(fp, "IMMUNE: %s\n", flag_string(mob->immune, ris_flags) ); fprintf(fp, "ATTACKS: %s\n", ext_flag_string(&mob->attacks, attack_flags) ); fprintf(fp, "DEFENSES: %s\n\n\n", ext_flag_string(&mob->defenses, defense_flags) ); } } fclose (fp); send_to_char("Done.\n\r", ch); return; } if(!str_cmp(arg, "objects") ) { FILE *fp = fopen("../objdata.txt", "w"); send_to_char("Writing objects to file...\n\r", ch); for(counter=0; counter <= 32600; counter++) { if ( (obj = get_obj_index(counter) ) != NULL ) { fprintf(fp, "VNUM: %d\n", obj->vnum); fprintf(fp, "KEYWORDS: %s\n", obj->name); fprintf(fp, "TYPE: %s\n", o_types[obj->item_type]); if ( obj->item_type == ITEM_WEAPON ) { fprintf( fp, "WEAPON CLASS: %s\n\r", get_weapon_type( obj ) ); } fprintf(fp, "SHORT DESC: %s\n", obj->short_descr); fprintf(fp, "WEARFLAGS: %s\n", flag_string(obj->wear_flags, w_flags) ); fprintf(fp, "FLAGS: %s\n", ext_flag_string(&obj->extra_flags, o_flags) ); fprintf(fp, "WEIGHT: %d\n", obj->weight); fprintf(fp, "AFFECTS:\n"); for ( paf = obj->first_affect; paf; paf = paf->next ) fprintf(fp, "Affects %s by %d.\n", affect_loc_name( paf->location ), paf->modifier ); if(obj->layers > 0) fprintf(fp, "Layerable - Wear layer: %d\n", obj->layers); fprintf(fp, "INDEX VALUES: v0: %d v1: %d v2: %d v3: %d v4: %d v5: %d\n\n\n", obj->value[0], obj->value[1], obj->value[2], obj->value[3], obj->value[4], obj->value[5] ); } } fclose (fp); send_to_char( "Done.\n\r", ch); return; } send_to_char( "Syntax: dump <mobs/objects>\n\r", ch ); return; }