Exemplo n.º 1
0
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 );
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
/*****************************************************************************
 *	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;
}
Exemplo n.º 4
0
/* 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;
}