{ "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 } } ] }