Ultima Online Protocol :: Character List
Packet # Packet Name Length Client Server Obsolete
0xA9 Character List dynamic X X
Data Type Description
byte 0xA9 The packet number.
ushort Size The size of the packet.
byte num_chars The number of characters in the list.
loop
{
    char[30] name
    char[30] password
}
This loop contains the name and password (if any) of each character in the list. Loop for num_chars.
byte num_cities The number of cities in the list.
loop
{
    byte Index
    char[30] name
    byte 0x00
    char[30] tavern
    byte 0x00
}
This loop contains the name of each town and inn/tavern in the list of cities. Loop for num_cities.

Index: The city's 0-based index number inside the loop.
0x00: Null terminator.
uint Flags Server features to enable:

0x00000000 - None
0x00000001 - Unknown
0x00000002 - IGR Client
0x00000004 - Limit Characters
0x00000008 - Context Menus
0x00000010 - One Character
        - To enable this you must also include the 0x00000004 flag.

0x00000020 - Age of Shadows
0x00000040 - Sixth Character Slot

Note that Flags may not be present in the packet.

Packet Description:
This packet sends the list of characters and cities.
In older clients, the Login OK packet accomplished this.
Also, some clients may require that all five characters be sent even if they are not used.

Note: To enable the creation of AOS characters, the Features packet must be sent prior to this packet; the same goes for the Sixth Character Slot.