====== UO Protocol 0xAD ======
Unicode speech request (variable # of bytes)
Clients send this packet when talking.
Offset Type Name Description
------ -------- ---------------- ------------------------------
0000 BYTE cmd
0001 USHORT size the packetsize
0003 BYTE mode speech mode (see below)
0004 USHORT hue
0006 USHORT font font number
0006 CHAR[4] language preferred language
BYTE[] KeywordInfo present if (mode & 0xC0)
UNI[] Text 0x00 terminated
[[Speech]] mode / Speech types
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
Keyword Info
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...