// // zone reset hook. Whenever a zone is reset, apply all of its reset rules for // each room in the zone. void zone_reset_hook(const char *info) { char *zone_key = NULL; hookParseInfo(info, &zone_key); ZONE_DATA *zone = worldGetZone(gameworld, zone_key); LIST_ITERATOR *res_i = newListIterator(zoneGetResettable(zone)); char *name = NULL; const char *locale = zone_key; ROOM_DATA *room = NULL; ITERATE_LIST(name, res_i) { if((room = worldGetRoom(gameworld, get_fullkey(name, locale))) != NULL) { do_resets(room); } } deleteListIterator(res_i); // garbage collection free(zone_key); }
// // room reset hook. Whenever a room is reset, apply all of the reset rules for // it and its parent. void room_reset_hook(const char *info) { ROOM_DATA *room = NULL; hookParseInfo(info, &room); if(room != NULL) do_resets(room); }
void do_wrlist( CHAR_DATA *ch, char *argument ) { ROOM_INDEX_DATA *room; ROOM_INDEX_DATA *in_room; MOB_INDEX_DATA *mob; OBJ_INDEX_DATA *obj; char arg[MAX_STRING_LENGTH]; char arg1[MAX_STRING_LENGTH]; char arg2[MAX_STRING_LENGTH]; long uvnum; long lvnum; long MR = 0; int type = -1; argument = one_argument( argument, arg ); argument = one_argument( argument, arg1 ); argument = one_argument( argument, arg2 ); uvnum = ( is_number( arg2 ) ) ? atoi( arg2 ) : 0; lvnum = ( is_number( arg1 ) ) ? atoi( arg1 ) : 0; if ( !str_cmp( arg, "o" ) ) type = 2; if ( !str_cmp( arg, "m" ) ) type = 1; if ( !str_cmp( arg, "r" ) ) type = 0; if ( !str_cmp( arg, "n" ) ) type = 3; if ( ( uvnum - lvnum ) > 200 ) { send_to_char( "{WThat range is too large.\n\r{x", ch ); return; } if ( ( ( uvnum == 0 ) && ( lvnum == 0 ) ) || ( arg[0] == '\0' ) || ( type == -1 ) ) { send_to_char( "Syntax: wrlist [type] [lvnum] [uvnum]\n\r", ch ); send_to_char( "Types are (O)bjects, (M)obs, (R)esets and Room(N)ames\n\r", ch ); return; } if ( uvnum < 1 || lvnum < 1 || lvnum > uvnum ) { send_to_char( "#RInvalid level(s).\n\r#n", ch ); return; } in_room = ch->in_room; if ( type == 0 ) { char_from_room( ch ); } for ( MR = lvnum; MR <= uvnum; MR++ ) { if ( type == 0 ) { if ( ( room = get_room_index( MR ) ) ) { sprintf( log_buf, "#R%-5d #w%-20s#n\n\r", room->vnum, room->name); send_to_char( log_buf, ch ); char_to_room( ch, room ); do_resets( ch, "" ); char_from_room( ch ); } } if ( type == 3 ) { if ( ( room = get_room_index( MR ) ) ) { sprintf( log_buf, "#R%-5d #w%-20s#n\n\r", room->vnum, room->name); send_to_char( log_buf, ch ); } } if ( type == 2 ) { if ( ( obj = get_obj_index( MR ) ) ) { sprintf( log_buf, "#R%-5d #w%-20s#n\n\r", obj->vnum, obj->name ); send_to_char( log_buf, ch ); } } if ( type == 1 ) { if ( ( mob = get_mob_index( MR ) ) ) { sprintf( log_buf, "#R%-5d #w%-20s#n\n\r", mob->vnum,mob->player_name ); send_to_char( log_buf, ch ); } } } if ( type == 0 ) char_to_room( ch, in_room ); return; }