void reset_area( AREA_DATA * area ) { ROOM_INDEX_DATA *room; if ( !area->first_room ) return; for ( room = area->first_room; room; room = room->next_aroom ) reset_room( room ); }
void area_update( void ) { area_data* area; room_data* room; struct timeval start; bool save = TRUE; gettimeofday( &start, NULL ); for( int i = 0; i < max_clan; i++ ) if( clan_list[i]->modified ) save_clans( clan_list[i] ); for( area = area_list; area != NULL; area = area->next ) { if( ++area->age < 15 && ( area->nplayer != 0 || area->age < 5 ) ) continue; for( room = area->room_first; room != NULL; room = room->next ) if( !player_in_room( room ) ) { reset_room( room ); save_room_items( room ); } area->age = number_range( 0, 3 ); if( save && area->modified ) { save_area( area ); save = FALSE; } } shop_update( ); pulse_time[ TIME_RESET ] = stop_clock( start ); return; }
/***************************************************************************** * do_redit * * entry level function into the room editor *****************************************************************************/ void do_redit(struct char_data *ch, const char *argument) { struct room_index_data *room; char arg[MAX_STRING_LENGTH]; if (IS_NPC(ch)) return; argument = one_argument(argument, arg); room = ch->in_room; if (!str_cmp(arg, "reset")) { /* redit reset */ if (!IS_BUILDER(ch, room->area)) { send_to_char("Insufficient security to edit rooms.\n\r", ch); return; } reset_room(room); send_to_char("Room reset.\n\r", ch); return; } else { if (!str_cmp(arg, "create")) { /* redit create <vnum> */ if (argument[0] == '\0' || parse_int(argument) == 0) { send_to_char("Syntax: edit room create [vnum]\n\r", ch); return; } if (redit_create(ch, argument)) { ch->desc->editor = ED_ROOM; char_from_room(ch); char_to_room(ch, ch->desc->ed_data); SET_BIT(((struct room_index_data *)ch->desc->ed_data)->area->area_flags, AREA_CHANGED); } return; } else if (!str_cmp(arg, "clone")) { if (argument[0] == '\0') { send_to_char("Syntax: edit room clone [new vnum] [existing vnum]\n\r", ch); return; } if (redit_create(ch, argument)) { argument = one_argument(argument, arg); ch->desc->editor = ED_ROOM; char_from_room(ch); char_to_room(ch, ch->desc->ed_data); SET_BIT(((struct room_index_data *)ch->desc->ed_data)->area->area_flags, AREA_CHANGED); redit_clone(ch, argument); } return; } else if (!IS_NULLSTR(arg)) { /* redit <vnum> */ room = get_room_index(parse_int(arg)); if (!room) { send_to_char("REdit : room does not exist.\n\r", ch); return; } if (!IS_BUILDER(ch, room->area)) { send_to_char("REdit : insufficient security to edit rooms.\n\r", ch); return; } char_from_room(ch); char_to_room(ch, room); } } if (!IS_BUILDER(ch, room->area)) { send_to_char("REdit : Insufficient security to edit rooms.\n\r", ch); return; } ch->desc->ed_data = (void *)room; ch->desc->editor = ED_ROOM; return; }
/* Entry point for editing room_index_data. */ void do_redit (CHAR_DATA * ch, char *argument) { ROOM_INDEX_DATA *pRoom; char arg1[MAX_STRING_LENGTH]; if (IS_NPC (ch)) return; argument = one_argument (argument, arg1); pRoom = ch->in_room; if (!str_cmp (arg1, "reset")) { /* redit reset */ if (!IS_BUILDER (ch, pRoom->area)) { send_to_char ("Insufficient security to modify room.\n\r", ch); return; } reset_room (pRoom); send_to_char ("Room reset.\n\r", ch); return; } else if (!str_cmp (arg1, "create")) { /* redit create <vnum> */ if (argument[0] == '\0' || atoi (argument) == 0) { send_to_char ("Syntax: edit room create [vnum]\n\r", ch); return; } if (redit_create (ch, argument)) { /* pEdit == nuevo cuarto */ ch->desc->editor = ED_ROOM; char_from_room (ch); char_to_room (ch, ch->desc->pEdit); SET_BIT (((ROOM_INDEX_DATA *) ch->desc->pEdit)->area->area_flags, AREA_CHANGED); } return; } else if (!IS_NULLSTR (arg1)) { /* redit <vnum> */ pRoom = get_room_index (atoi (arg1)); if (!pRoom) { send_to_char ("REdit : Nonexistant room.\n\r", ch); return; } if (!IS_BUILDER (ch, pRoom->area)) { send_to_char ("REdit : Insufficient security to modify room.\n\r", ch); return; } char_from_room (ch); char_to_room (ch, pRoom); } if (!IS_BUILDER (ch, pRoom->area)) { send_to_char ("REdit : Insufficient security to modify room.\n\r", ch); return; } ch->desc->pEdit = (void *) pRoom; ch->desc->editor = ED_ROOM; return; }