Ultima Online Protocol :: Speech Unicode
Packet # Packet Name Length Client Server Obsolete
0xAD Speech Unicode dynamic X X
Data Type Description
byte 0xAD The packet number.
ushort Size The size of the packet.
byte Mode The speech mode.
  • 0x00 - Regular
  • 0x01 - Broadcast
  • 0x02 - Emote
  • 0x06 - System
  • 0x07 - Message
  • 0x08 - Whisper
  • 0x09 - Yell
The flag 0xC0 is included if the message contains keyword information.
ushort Hue The hue of the message.
ushort Font The font number.
char[4] Language The client's language preference.
byte[] KeywordInfo If Mode includes the keyword flag (0xC0), this information will be present.

This is an array of 12-bit integers padded into a byte array.
The first 12-bit integer contains the number of keywords in the array.

nrKeywords = (KeywordInfo[0] << 4) + (KeywordInfo[1] >> 4);
keyword1 = ((KeywordInfo[1] % 0x10) << 8) + KeywordInfo[2];
keyword2 = (KeywordInfo[3] << 8) + (KeywordInfo[4] >> 4);
keyword3 = ((KeywordInfo[4] % 0x10) << 8) + KeywordInfo[5];

and so on...
uni[] Text The client's message.
byte 0x00 Null terminator for Text.

Packet Description:
Clients send this packet when talking.