{
    "category":  "Item",
    "tags": ["Mobile"],
    "packets":  [
                    {
                        "id":  "0xD6",
                        "name":  "Object Property List",
                        "description":  "Sends the full Object Property List (tooltip) for an entity. Contains a hash for client caching and a list of localized property entries.",
                        "direction":  "outgoing",
                        "isDynamic":  true,
                        "size":  "15+",
                        "fields":  [
                                       {
                                           "name":  "Packet ID",
                                           "type":  "byte",
                                           "size":  1,
                                           "value":  "0xD6",
                                           "description":  "Packet identifier"
                                       },
                                       {
                                           "name":  "Length",
                                           "type":  "ushort",
                                           "size":  2,
                                           "description":  "Packet length"
                                       },
                                       {
                                           "name":  "Unknown1",
                                           "type":  "ushort",
                                           "size":  2,
                                           "value":  "0x0001",
                                           "description":  "Unknown (always 1)"
                                       },
                                       {
                                           "name":  "Serial",
                                           "type":  "uint",
                                           "size":  4,
                                           "description":  "Entity serial"
                                       },
                                       {
                                           "name":  "Unknown2",
                                           "type":  "ushort",
                                           "size":  2,
                                           "value":  "0x0000",
                                           "description":  "Unknown (always 0)"
                                       },
                                       {
                                           "name":  "Hash",
                                           "type":  "int",
                                           "size":  4,
                                           "description":  "XOR hash of all properties (computed with 26-bit mask)"
                                       },
                                       {
                                           "name":  "Properties",
                                           "type":  "array",
                                           "description":  "Property entries, terminated by number=0",
                                           "loop":  {
                                                        "terminator":  "number == 0",
                                                        "fields":  [
                                                                       {
                                                                           "name":  "Number",
                                                                           "type":  "int",
                                                                           "size":  4,
                                                                           "description":  "Cliloc number (0 = end of list)"
                                                                       },
                                                                       {
                                                                           "name":  "String Length",
                                                                           "type":  "ushort",
                                                                           "size":  2,
                                                                           "description":  "Length of arguments in bytes (0 if no arguments)"
                                                                       },
                                                                       {
                                                                           "name":  "Arguments",
                                                                           "type":  "utf16le",
                                                                           "size":  "var",
                                                                           "description":  "Unicode LE string with tab-separated cliloc arguments. Length = String Length field"
                                                                       }
                                                                   ]
                                                    }
                                       }
                                   ],
                        "related":  [
                                        {
                                            "id":  "0xDC",
                                            "relationship":  "notification",
                                            "note":  "OPL Info notifies client of hash change, triggering 0xD6 request"
                                        }
                                    ],
                        "clientVersion":  {
                                              "min":  "4.0.0a",
                                              "feature":  "AOS tooltips"
                                          },
                        "notes":  "Hash is calculated by XORing each property\u0027s cliloc number with ((hash \u003e\u003e 31) \u0026 1) ^ (hash \u003c\u003c 1). Properties are cliloc entries with optional Unicode LE arguments separated by tabs.",
                        "source":  {
                                       "file":  "Projects/Server/PropertyList/ObjectPropertyList.cs",
                                       "line":  19
                                   }
                    },
                    {
                        "id":  "0x1D",
                        "name":  "Remove Entity",
                        "description":  "Removes an entity (item, mobile, or multi) from the client\u0027s view.",
                        "direction":  "outgoing",
                        "isDynamic":  false,
                        "size":  5,
                        "fields":  [
                                       {
                                           "name":  "Packet ID",
                                           "type":  "byte",
                                           "size":  1,
                                           "value":  "0x1D",
                                           "description":  "Packet identifier"
                                       },
                                       {
                                           "name":  "Serial",
                                           "type":  "uint",
                                           "size":  4,
                                           "description":  "Serial of entity to remove"
                                       }
                                   ],
                        "source":  {
                                       "file":  "Projects/Server/Network/Packets/OutgoingEntityPackets.cs",
                                       "line":  75
                                   }
                    },
                    {
                        "id":  "0xDC",
                        "name":  "OPL Info (Object Property List)",
                        "description":  "Notifies the client of an entity\u0027s Object Property List hash. Client compares hash to cached version and requests full OPL if different.",
                        "direction":  "outgoing",
                        "isDynamic":  false,
                        "size":  9,
                        "fields":  [
                                       {
                                           "name":  "Packet ID",
                                           "type":  "byte",
                                           "size":  1,
                                           "value":  "0xDC",
                                           "description":  "Packet identifier"
                                       },
                                       {
                                           "name":  "Serial",
                                           "type":  "uint",
                                           "size":  4,
                                           "description":  "Entity serial"
                                       },
                                       {
                                           "name":  "Hash",
                                           "type":  "int",
                                           "size":  4,
                                           "description":  "Hash of the Object Property List"
                                       }
                                   ],
                        "related":  [
                                        {
                                            "id":  "0xD6",
                                            "direction":  "outgoing",
                                            "relationship":  "data",
                                            "note":  "Full Object Property List packet"
                                        }
                                    ],
                        "source":  {
                                       "file":  "Projects/Server/Network/Packets/OutgoingEntityPackets.cs",
                                       "line":  33
                                   }
                    },
                    {
                        "id":  "0xF3",
                        "name":  "World Entity (SA+)",
                        "description":  "Unified entity packet for items, mobiles, and multis. Replaces older 0x1A World Item packet for Stygian Abyss+ clients. High Seas clients add 2 extra bytes.",
                        "direction":  "outgoing",
                        "isDynamic":  false,
                        "size":  "Varies",
                        "variants":  [
                                         {
                                             "version":  "Stygian Abyss",
                                             "name":  "SA Format",
                                             "condition":  "Client version 7.0.0.0 - 7.0.8.x (StygianAbyss, pre-HighSeas)",
                                             "size":  24,
                                             "fields":  [
                                                            {
                                                                "name":  "Packet ID",
                                                                "type":  "byte",
                                                                "size":  1,
                                                                "value":  "0xF3",
                                                                "description":  "Packet identifier"
                                                            },
                                                            {
                                                                "name":  "Command",
                                                                "type":  "short",
                                                                "size":  2,
                                                                "value":  "0x0001",
                                                                "description":  "Command (always 1)"
                                                            },
                                                            {
                                                                "name":  "Entity Type",
                                                                "type":  "enum",
                                                                "size":  1,
                                                                "description":  "Entity type",
                                                                "values":  [
                                                                    { "value":  "0", "name":  "Item", "description":  "World item" },
                                                                    { "value":  "1", "name":  "Mobile", "description":  "Mobile/creature" },
                                                                    { "value":  "2", "name":  "Multi", "description":  "Multi/structure" }
                                                                ]
                                                            },
                                                            {
                                                                "name":  "Serial",
                                                                "type":  "uint",
                                                                "size":  4,
                                                                "description":  "Entity serial"
                                                            },
                                                            {
                                                                "name":  "Graphic ID",
                                                                "type":  "ushort",
                                                                "size":  2,
                                                                "description":  "Graphic/Body ID (masked with 0x7FFF)"
                                                            },
                                                            {
                                                                "name":  "Direction",
                                                                "type":  "byte",
                                                                "size":  1,
                                                                "description":  "Direction (mobiles) or 0"
                                                            },
                                                            {
                                                                "name":  "Amount Min",
                                                                "type":  "short",
                                                                "size":  2,
                                                                "description":  "Minimum amount (items) or 1"
                                                            },
                                                            {
                                                                "name":  "Amount Max",
                                                                "type":  "short",
                                                                "size":  2,
                                                                "description":  "Maximum amount (items) or 1"
                                                            },
                                                            {
                                                                "name":  "X",
                                                                "type":  "short",
                                                                "size":  2,
                                                                "description":  "X coordinate (masked with 0x7FFF)"
                                                            },
                                                            {
                                                                "name":  "Y",
                                                                "type":  "short",
                                                                "size":  2,
                                                                "description":  "Y coordinate (masked with 0x3FFF)"
                                                            },
                                                            {
                                                                "name":  "Z",
                                                                "type":  "sbyte",
                                                                "size":  1,
                                                                "description":  "Z coordinate"
                                                            },
                                                            {
                                                                "name":  "Light",
                                                                "type":  "byte",
                                                                "size":  1,
                                                                "description":  "Light level (items)"
                                                            },
                                                            {
                                                                "name":  "Hue",
                                                                "type":  "short",
                                                                "size":  2,
                                                                "description":  "Hue/color"
                                                            },
                                                            {
                                                                "name":  "Flags",
                                                                "type":  "byte",
                                                                "size":  1,
                                                                "description":  "Packet flags (hidden, blessed, etc.)"
                                                            }
                                                        ]
                                         },
                                         {
                                             "version":  "High Seas+",
                                             "name":  "HS Format",
                                             "condition":  "Client version \u003e= 7.0.9.0 (HighSeas)",
                                             "size":  26,
                                             "fields":  [
                                                            {
                                                                "name":  "Packet ID",
                                                                "type":  "byte",
                                                                "size":  1,
                                                                "value":  "0xF3",
                                                                "description":  "Packet identifier"
                                                            },
                                                            {
                                                                "name":  "Command",
                                                                "type":  "short",
                                                                "size":  2,
                                                                "value":  "0x0001",
                                                                "description":  "Command (always 1)"
                                                            },
                                                            {
                                                                "name":  "Entity Type",
                                                                "type":  "enum",
                                                                "size":  1,
                                                                "description":  "Entity type",
                                                                "values":  [
                                                                    { "value":  "0", "name":  "Item", "description":  "World item" },
                                                                    { "value":  "1", "name":  "Mobile", "description":  "Mobile/creature" },
                                                                    { "value":  "2", "name":  "Multi", "description":  "Multi/structure" }
                                                                ]
                                                            },
                                                            {
                                                                "name":  "Serial",
                                                                "type":  "uint",
                                                                "size":  4,
                                                                "description":  "Entity serial"
                                                            },
                                                            {
                                                                "name":  "Graphic ID",
                                                                "type":  "ushort",
                                                                "size":  2,
                                                                "description":  "Graphic/Body ID (masked with 0xFFFF, supports higher IDs)"
                                                            },
                                                            {
                                                                "name":  "Direction",
                                                                "type":  "byte",
                                                                "size":  1,
                                                                "description":  "Direction (mobiles) or 0"
                                                            },
                                                            {
                                                                "name":  "Amount Min",
                                                                "type":  "short",
                                                                "size":  2,
                                                                "description":  "Minimum amount (items) or 1"
                                                            },
                                                            {
                                                                "name":  "Amount Max",
                                                                "type":  "short",
                                                                "size":  2,
                                                                "description":  "Maximum amount (items) or 1"
                                                            },
                                                            {
                                                                "name":  "X",
                                                                "type":  "short",
                                                                "size":  2,
                                                                "description":  "X coordinate (masked with 0x7FFF)"
                                                            },
                                                            {
                                                                "name":  "Y",
                                                                "type":  "short",
                                                                "size":  2,
                                                                "description":  "Y coordinate (masked with 0x3FFF)"
                                                            },
                                                            {
                                                                "name":  "Z",
                                                                "type":  "sbyte",
                                                                "size":  1,
                                                                "description":  "Z coordinate"
                                                            },
                                                            {
                                                                "name":  "Light",
                                                                "type":  "byte",
                                                                "size":  1,
                                                                "description":  "Light level (items)"
                                                            },
                                                            {
                                                                "name":  "Hue",
                                                                "type":  "short",
                                                                "size":  2,
                                                                "description":  "Hue/color"
                                                            },
                                                            {
                                                                "name":  "Flags",
                                                                "type":  "byte",
                                                                "size":  1,
                                                                "description":  "Packet flags (hidden, blessed, etc.)"
                                                            },
                                                            {
                                                                "name":  "Unknown",
                                                                "type":  "short",
                                                                "size":  2,
                                                                "value":  "0x0000",
                                                                "description":  "Unknown (always 0)"
                                                            }
                                                        ]
                                         }
                                     ],
                        "related":  [
                                        {
                                            "id":  "0x1A",
                                            "relationship":  "variant",
                                            "note":  "Legacy World Item packet for pre-SA clients"
                                        }
                                    ],
                        "clientVersion":  {
                                              "min":  "7.0.0.0",
                                              "feature":  "StygianAbyss"
                                          },
                        "source":  {
                                       "file":  "Projects/Server/Network/Packets/OutgoingEntityPackets.cs",
                                       "line":  88
                                   }
                    }
                ]
}