Example #1
0
//
// 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);
}
Example #2
0
//
// 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);
}
Example #3
0
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;
}