====== 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...