{ "category": "Extended Commands (0xBF)", "packets": [ { "id": "0xBF", "name": "Extended Command", "description": "Wrapper packet for extended command subpackets. Used for both client-to-server and server-to-client communication.", "direction": "both", "isDynamic": true, "size": "var", "fields": [ { "name": "Packet ID", "type": "byte", "size": 1, "value": "0xBF", "description": "Packet identifier" }, { "name": "Length", "type": "ushort", "size": 2, "description": "Packet length" }, { "name": "Sub-Command", "type": "ushort", "size": 2, "description": "Extended command ID" }, { "name": "Data", "type": "byte[]", "description": "Subcommand-specific data" } ], "subpackets": [ { "subId": "0x04", "name": "Close Gump", "description": "Close a generic gump", "direction": "outgoing" }, { "subId": "0x05", "name": "Screen Size", "description": "Client reports screen dimensions", "direction": "incoming" }, { "subId": "0x06", "name": "Party Message", "description": "Party system commands and messages", "direction": "both" }, { "subId": "0x07", "name": "Quest Arrow Click", "description": "Client clicked the quest tracking arrow", "direction": "incoming" }, { "subId": "0x08", "name": "Map Change", "description": "Notify client of map/facet change", "direction": "outgoing" }, { "subId": "0x09", "name": "Disarm Request", "description": "Request to disarm opponent", "direction": "incoming" }, { "subId": "0x0A", "name": "Stun Request", "description": "Request to stun opponent", "direction": "incoming" }, { "subId": "0x0B", "name": "Language", "description": "Client language setting", "direction": "incoming" }, { "subId": "0x0C", "name": "Status Bar Close", "description": "Client closed a status bar", "direction": "incoming" }, { "subId": "0x0E", "name": "Animate", "description": "Request to play animation", "direction": "incoming" }, { "subId": "0x0F", "name": "Client Info", "description": "Client type and flags (Spy on Client)", "direction": "incoming" }, { "subId": "0x10", "name": "Query Object Properties", "description": "Request object property list", "direction": "incoming" }, { "subId": "0x13", "name": "Context Menu Request", "description": "Request context menu for entity", "direction": "incoming" }, { "subId": "0x14", "name": "Context Menu Display", "description": "Display context menu to client", "direction": "outgoing" }, { "subId": "0x15", "name": "Context Menu Response", "description": "Selected context menu option", "direction": "incoming" }, { "subId": "0x18", "name": "Map Patches", "description": "Send map diff/patch information", "direction": "outgoing" }, { "subId": "0x19", "name": "Stat Lock Info", "description": "Stat lock states and bonded status", "direction": "outgoing" }, { "subId": "0x1A", "name": "Stat Lock Change", "description": "Change STR/DEX/INT lock state", "direction": "incoming" }, { "subId": "0x1B", "name": "New Spellbook Content", "description": "Spellbook spell list (AOS+)", "direction": "outgoing" }, { "subId": "0x1C", "name": "Cast Spell", "description": "Cast spell by ID", "direction": "incoming" }, { "subId": "0x1E", "name": "Query Design Details", "description": "Request house design details", "direction": "incoming" }, { "subId": "0x21", "name": "Set Weapon Ability", "description": "Clear weapon ability selection", "direction": "outgoing" }, { "subId": "0x22", "name": "Damage", "description": "Display damage number (old clients)", "direction": "outgoing" }, { "subId": "0x25", "name": "Toggle Special Ability", "description": "Toggle weapon special move icon", "direction": "outgoing" }, { "subId": "0x26", "name": "Speed Mode", "description": "Set movement speed mode", "direction": "outgoing" }, { "subId": "0x2A", "name": "Race Change Reply", "description": "Response to race change confirmation", "direction": "incoming" }, { "subId": "0x2C", "name": "Bandage Target", "description": "Apply bandage to target", "direction": "incoming" }, { "subId": "0x2D", "name": "Targeted Spell", "description": "Cast spell with pre-selected target", "direction": "incoming" }, { "subId": "0x2E", "name": "Targeted Skill Use", "description": "Use skill with pre-selected target", "direction": "incoming" }, { "subId": "0x30", "name": "Target By Resource Macro", "description": "Resource-based targeting macro", "direction": "incoming" }, { "subId": "0x32", "name": "Toggle Flying", "description": "Toggle gargoyle flying mode", "direction": "incoming" } ], "source": { "file": "Projects/UOContent/Network/Packets/IncomingExtendedCommandPackets.cs", "line": 43 } }, { "id": "0xBF/0x05", "subId": "0x05", "name": "Screen Size", "description": "Client reports screen size.", "direction": "incoming", "isDynamic": true, "size": "var", "fields": [ { "name": "Packet ID", "type": "byte", "size": 1, "value": "0xBF", "description": "Packet identifier" }, { "name": "Length", "type": "ushort", "size": 2, "description": "Packet length" }, { "name": "Sub-Command", "type": "ushort", "size": 2, "value": "0x05", "description": "Screen Size subcommand" }, { "name": "Width", "type": "int", "size": 4, "description": "Screen width" }, { "name": "Unknown", "type": "int", "size": 4, "description": "Unknown value" } ], "source": { "file": "Projects/UOContent/Network/Packets/IncomingExtendedCommandPackets.cs", "line": 136 } }, { "id": "0xBF/0x06", "subId": "0x06", "name": "Party Message", "description": "Client sends party-related commands.", "direction": "incoming", "isDynamic": true, "size": "var", "fields": [ { "name": "Packet ID", "type": "byte", "size": 1, "value": "0xBF", "description": "Packet identifier" }, { "name": "Length", "type": "ushort", "size": 2, "description": "Packet length" }, { "name": "Sub-Command", "type": "ushort", "size": 2, "value": "0x06", "description": "Party Message subcommand" }, { "name": "Party Command", "type": "enum", "enumType": "sequential", "size": 1, "description": "Party command type", "values": [ { "value": 1, "name": "Add Member", "description": "Add member to party" }, { "value": 2, "name": "Remove Member", "description": "Remove member from party" }, { "value": 3, "name": "Private Message", "description": "Send private message to party member" }, { "value": 4, "name": "Public Message", "description": "Send public message to party" }, { "value": 6, "name": "Set Can Loot", "description": "Set loot permission" }, { "value": 8, "name": "Accept", "description": "Accept party invitation" }, { "value": 9, "name": "Decline", "description": "Decline party invitation" } ] }, { "name": "Data", "type": "byte[]", "description": "Command-specific data (target serial, message text)" } ], "source": { "file": "Projects/UOContent/Network/Packets/IncomingExtendedCommandPackets.cs", "line": 142 } }, { "id": "0xBF/0x07", "subId": "0x07", "name": "Quest Arrow Click", "description": "Client clicked the quest tracking arrow.", "direction": "incoming", "isDynamic": true, "size": "var", "fields": [ { "name": "Packet ID", "type": "byte", "size": 1, "value": "0xBF", "description": "Packet identifier" }, { "name": "Length", "type": "ushort", "size": 2, "description": "Packet length" }, { "name": "Sub-Command", "type": "ushort", "size": 2, "value": "0x07", "description": "Quest Arrow Click subcommand" }, { "name": "Right Click", "type": "bool", "size": 1, "description": "True if right-clicked, false if left-clicked" } ], "related": [ { "id": "0xBA", "relationship": "response", "note": "Quest Arrow packet" } ], "source": { "file": "Projects/UOContent/Skills/Tracking/Tracking.cs", "line": 26 } }, { "id": "0xBF/0x09", "subId": "0x09", "name": "Disarm Request", "description": "Client requests to disarm opponent.", "direction": "incoming", "isDynamic": true, "size": "var", "fields": [ { "name": "Packet ID", "type": "byte", "size": 1, "value": "0xBF", "description": "Packet identifier" }, { "name": "Length", "type": "ushort", "size": 2, "description": "Packet length" }, { "name": "Sub-Command", "type": "ushort", "size": 2, "value": "0x09", "description": "Disarm Request subcommand" } ], "source": { "file": "Projects/UOContent/Network/Packets/IncomingExtendedCommandPackets.cs", "line": 289 } }, { "id": "0xBF/0x0A", "subId": "0x0A", "name": "Stun Request", "description": "Client requests to stun opponent.", "direction": "incoming", "isDynamic": true, "size": "var", "fields": [ { "name": "Packet ID", "type": "byte", "size": 1, "value": "0xBF", "description": "Packet identifier" }, { "name": "Length", "type": "ushort", "size": 2, "description": "Packet length" }, { "name": "Sub-Command", "type": "ushort", "size": 2, "value": "0x0A", "description": "Stun Request subcommand" } ], "source": { "file": "Projects/UOContent/Network/Packets/IncomingExtendedCommandPackets.cs", "line": 277 } }, { "id": "0xBF/0x0B", "subId": "0x0B", "name": "Language", "description": "Client sets language preference.", "direction": "incoming", "isDynamic": true, "size": "var", "fields": [ { "name": "Packet ID", "type": "byte", "size": 1, "value": "0xBF", "description": "Packet identifier" }, { "name": "Length", "type": "ushort", "size": 2, "description": "Packet length" }, { "name": "Sub-Command", "type": "ushort", "size": 2, "value": "0x0B", "description": "Language subcommand" }, { "name": "Language", "type": "ascii", "size": 4, "description": "Language code (e.g., \u0027ENU\u0027)" } ], "source": { "file": "Projects/UOContent/Network/Packets/IncomingExtendedCommandPackets.cs", "line": 343 } }, { "id": "0xBF/0x0C", "subId": "0x0C", "name": "Close Status", "description": "Client closes a status gump.", "direction": "incoming", "isDynamic": true, "size": "var", "fields": [ { "name": "Packet ID", "type": "byte", "size": 1, "value": "0xBF", "description": "Packet identifier" }, { "name": "Length", "type": "ushort", "size": 2, "description": "Packet length" }, { "name": "Sub-Command", "type": "ushort", "size": 2, "value": "0x0C", "description": "Close Status subcommand" }, { "name": "Serial", "type": "uint", "size": 4, "description": "Serial of mobile whose status to close" } ], "source": { "file": "Projects/UOContent/Network/Packets/IncomingExtendedCommandPackets.cs", "line": 338 } }, { "id": "0xBF/0x0E", "subId": "0x0E", "name": "Animate", "description": "Client requests to play an animation.", "direction": "incoming", "isDynamic": true, "size": "var", "fields": [ { "name": "Packet ID", "type": "byte", "size": 1, "value": "0xBF", "description": "Packet identifier" }, { "name": "Length", "type": "ushort", "size": 2, "description": "Packet length" }, { "name": "Sub-Command", "type": "ushort", "size": 2, "value": "0x0E", "description": "Animate subcommand" }, { "name": "Action", "type": "int", "size": 4, "description": "Animation action ID (must be in valid list)" } ], "notes": "Only specific animation IDs are allowed for security.", "source": { "file": "Projects/UOContent/Network/Packets/IncomingExtendedCommandPackets.cs", "line": 233 } }, { "id": "0xBF/0x0F", "subId": "0x0F", "name": "Client Info", "description": "Client type information sent once at login. ModernUO currently ignores this packet data.", "direction": "incoming", "isDynamic": true, "implemented": false, "size": "var", "fields": [ { "name": "Packet ID", "type": "byte", "size": 1, "value": "0xBF", "description": "Packet identifier" }, { "name": "Length", "type": "ushort", "size": 2, "description": "Packet length" }, { "name": "Sub-Command", "type": "ushort", "size": 2, "value": "0x000F", "description": "Client Info subcommand" }, { "name": "Unknown", "type": "byte", "size": 1, "value": "0x0A", "description": "Unknown (always 0x0A)" }, { "name": "Client Type", "type": "enum", "enumType": "sequential", "size": 4, "description": "Client type flag (same as character create/login)", "values": [ { "value": "0x00", "name": "Classic", "description": "Classic 2D Client" }, { "value": "0x02", "name": "KR", "description": "Kingdom Reborn Client" }, { "value": "0x03", "name": "EC", "description": "Enhanced Client (Stygian Abyss)" } ] } ], "related": [ { "id": "0xE1", "relationship": "related", "note": "Client Type packet - similar client type information" } ], "source": { "file": "Projects/UOContent/Network/Packets/IncomingExtendedCommandPackets.cs", "line": 52 }, "notes": "ModernUO registers this packet but ignores its data (calls Empty handler). The client type should match the value in 0xE1 Client Type packet." }, { "id": "0xBF/0x10", "subId": "0x10", "name": "Query Properties", "description": "Client queries Object Property List (tooltip) for an entity.", "direction": "incoming", "isDynamic": true, "size": "var", "fields": [ { "name": "Packet ID", "type": "byte", "size": 1, "value": "0xBF", "description": "Packet identifier" }, { "name": "Length", "type": "ushort", "size": 2, "description": "Packet length" }, { "name": "Sub-Command", "type": "ushort", "size": 2, "value": "0x10", "description": "Query Properties subcommand" }, { "name": "Serial", "type": "uint", "size": 4, "description": "Serial of entity to query" } ], "related": [ { "id": "0xDC", "direction": "outgoing", "relationship": "response", "note": "OPL Info packet" } ], "source": { "file": "Projects/UOContent/Network/Packets/IncomingExtendedCommandPackets.cs", "line": 355 } }, { "id": "0xBF/0x13", "subId": "0x13", "name": "Context Menu Request", "description": "Client requests context menu for an entity.", "direction": "incoming", "isDynamic": true, "size": "var", "fields": [ { "name": "Packet ID", "type": "byte", "size": 1, "value": "0xBF", "description": "Packet identifier" }, { "name": "Length", "type": "ushort", "size": 2, "description": "Packet length" }, { "name": "Sub-Command", "type": "ushort", "size": 2, "value": "0x13", "description": "Context Menu Request subcommand" }, { "name": "Target Serial", "type": "uint", "size": 4, "description": "Serial of entity to show context menu for" } ], "related": [ { "id": "0xBF/0x14", "relationship": "response", "note": "Context Menu Display packet" } ], "source": { "file": "Projects/UOContent/Context Menus/ContextMenuSystem.cs", "line": 101 } }, { "id": "0xBF/0x15", "subId": "0x15", "name": "Context Menu Response", "description": "Client selects an option from context menu.", "direction": "incoming", "isDynamic": true, "size": "var", "fields": [ { "name": "Packet ID", "type": "byte", "size": 1, "value": "0xBF", "description": "Packet identifier" }, { "name": "Length", "type": "ushort", "size": 2, "description": "Packet length" }, { "name": "Sub-Command", "type": "ushort", "size": 2, "value": "0x15", "description": "Context Menu Response subcommand" }, { "name": "Target Serial", "type": "uint", "size": 4, "description": "Serial of entity context menu was shown for" }, { "name": "Index", "type": "ushort", "size": 2, "description": "Index of selected menu option" } ], "related": [ { "id": "0xBF/0x13", "relationship": "request", "note": "Context Menu Request packet" } ], "source": { "file": "Projects/UOContent/Context Menus/ContextMenuSystem.cs", "line": 48 } }, { "id": "0xBF/0x1A", "subId": "0x1A", "name": "Stat Lock Change", "description": "Client changes stat lock (STR/DEX/INT).", "direction": "incoming", "isDynamic": true, "size": "var", "fields": [ { "name": "Packet ID", "type": "byte", "size": 1, "value": "0xBF", "description": "Packet identifier" }, { "name": "Length", "type": "ushort", "size": 2, "description": "Packet length" }, { "name": "Sub-Command", "type": "ushort", "size": 2, "value": "0x1A", "description": "Stat Lock Change subcommand" }, { "name": "Stat", "type": "enum", "enumType": "sequential", "size": 1, "description": "Which stat to change", "values": [ { "value": 0, "name": "Strength", "description": "Strength lock" }, { "value": 1, "name": "Dexterity", "description": "Dexterity lock" }, { "value": 2, "name": "Intelligence", "description": "Intelligence lock" } ] }, { "name": "Lock Value", "type": "enum", "enumType": "sequential", "size": 1, "description": "New lock state", "values": [ { "value": 0, "name": "Up", "description": "Stat gains enabled" }, { "value": 1, "name": "Down", "description": "Stat decreases enabled" }, { "value": 2, "name": "Locked", "description": "Stat locked" } ] } ], "source": { "file": "Projects/UOContent/Network/Packets/IncomingExtendedCommandPackets.cs", "line": 301 } }, { "id": "0xBF/0x1C", "subId": "0x1C", "name": "Cast Spell", "description": "Client casts a spell (optionally from spellbook).", "direction": "incoming", "isDynamic": true, "size": "var", "tags": ["Spell"], "fields": [ { "name": "Packet ID", "type": "byte", "size": 1, "value": "0xBF", "description": "Packet identifier" }, { "name": "Length", "type": "ushort", "size": 2, "description": "Packet length" }, { "name": "Sub-Command", "type": "ushort", "size": 2, "value": "0x1C", "description": "Cast Spell subcommand" }, { "name": "Has Book", "type": "short", "size": 2, "description": "1 if casting from book, 0 otherwise" }, { "name": "Book Serial", "type": "uint", "size": 4, "description": "Serial of spellbook (if hasBook)", "condition": "hasBook == 1" }, { "name": "Spell ID", "type": "short", "size": 2, "description": "Spell ID + 1 (1-based)" } ], "source": { "file": "Projects/UOContent/Network/Packets/IncomingExtendedCommandPackets.cs", "line": 257 } }, { "id": "0xBF/0x1E", "subId": "0x1E", "name": "Query Design Details", "description": "Client requests house design details.", "direction": "incoming", "isDynamic": true, "size": "var", "tags": ["House"], "fields": [ { "name": "Packet ID", "type": "byte", "size": 1, "value": "0xBF", "description": "Packet identifier" }, { "name": "Length", "type": "ushort", "size": 2, "description": "Packet length" }, { "name": "Sub-Command", "type": "ushort", "size": 2, "value": "0x1E", "description": "Query Design Details subcommand" }, { "name": "House Serial", "type": "uint", "size": 4, "description": "Serial of house foundation" } ], "source": { "file": "Projects/UOContent/Multis/Houses/HouseFoundation.cs", "line": 1826 } }, { "id": "0xBF/0x2A", "subId": "0x2A", "name": "Race Change Reply", "description": "Client response to race change confirmation gump.", "direction": "incoming", "isDynamic": true, "size": "var", "fields": [ { "name": "Packet ID", "type": "byte", "size": 1, "value": "0xBF", "description": "Packet identifier" }, { "name": "Length", "type": "ushort", "size": 2, "description": "Packet length" }, { "name": "Sub-Command", "type": "ushort", "size": 2, "value": "0x2A", "description": "Race Change Reply subcommand" }, { "name": "Skin Hue", "type": "ushort", "size": 2, "description": "Selected skin hue", "condition": "length \u003e 5" }, { "name": "Hair Item ID", "type": "ushort", "size": 2, "description": "Selected hair style", "condition": "length \u003e 5" }, { "name": "Hair Hue", "type": "ushort", "size": 2, "description": "Selected hair hue", "condition": "length \u003e 5" }, { "name": "Facial Hair Item ID", "type": "ushort", "size": 2, "description": "Selected facial hair style", "condition": "length \u003e 5" }, { "name": "Facial Hair Hue", "type": "ushort", "size": 2, "description": "Selected facial hair hue", "condition": "length \u003e 5" } ], "source": { "file": "Projects/UOContent/Engines/ML Quests/Gumps/RaceChangeGump.cs", "line": 199 } }, { "id": "0xBF/0x2C", "subId": "0x2C", "name": "Bandage Target", "description": "Client uses bandage on a target.", "direction": "incoming", "isDynamic": true, "size": "var", "fields": [ { "name": "Packet ID", "type": "byte", "size": 1, "value": "0xBF", "description": "Packet identifier" }, { "name": "Length", "type": "ushort", "size": 2, "description": "Packet length" }, { "name": "Sub-Command", "type": "ushort", "size": 2, "value": "0x2C", "description": "Bandage Target subcommand" }, { "name": "Bandage Serial", "type": "uint", "size": 4, "description": "Serial of the bandage item" }, { "name": "Target Serial", "type": "uint", "size": 4, "description": "Serial of target mobile" } ], "source": { "file": "Projects/UOContent/Network/Packets/IncomingExtendedCommandPackets.cs", "line": 387 } }, { "id": "0xBF/0x2D", "subId": "0x2D", "name": "Targeted Spell", "description": "Client casts spell with pre-selected target.", "direction": "incoming", "isDynamic": true, "size": "var", "tags": ["Spell"], "fields": [ { "name": "Packet ID", "type": "byte", "size": 1, "value": "0xBF", "description": "Packet identifier" }, { "name": "Length", "type": "ushort", "size": 2, "description": "Packet length" }, { "name": "Sub-Command", "type": "ushort", "size": 2, "value": "0x2D", "description": "Targeted Spell subcommand" }, { "name": "Spell ID", "type": "short", "size": 2, "description": "Spell ID + 1 (1-based)" }, { "name": "Target Serial", "type": "uint", "size": 4, "description": "Serial of target entity" } ], "source": { "file": "Projects/UOContent/Network/Packets/IncomingExtendedCommandPackets.cs", "line": 422 } }, { "id": "0xBF/0x2E", "subId": "0x2E", "name": "Targeted Skill Use", "description": "Client uses skill with pre-selected target.", "direction": "incoming", "isDynamic": true, "size": "var", "fields": [ { "name": "Packet ID", "type": "byte", "size": 1, "value": "0xBF", "description": "Packet identifier" }, { "name": "Length", "type": "ushort", "size": 2, "description": "Packet length" }, { "name": "Sub-Command", "type": "ushort", "size": 2, "value": "0x2E", "description": "Targeted Skill Use subcommand" }, { "name": "Skill ID", "type": "short", "size": 2, "description": "Skill ID" }, { "name": "Target Serial", "type": "uint", "size": 4, "description": "Serial of target entity" } ], "source": { "file": "Projects/UOContent/Network/Packets/IncomingExtendedCommandPackets.cs", "line": 429 } }, { "id": "0xBF/0x30", "subId": "0x30", "name": "Target By Resource Macro", "description": "Client uses resource-based targeting macro.", "direction": "incoming", "isDynamic": true, "size": "var", "fields": [ { "name": "Packet ID", "type": "byte", "size": 1, "value": "0xBF", "description": "Packet identifier" }, { "name": "Length", "type": "ushort", "size": 2, "description": "Packet length" }, { "name": "Sub-Command", "type": "ushort", "size": 2, "value": "0x30", "description": "Target By Resource Macro subcommand" }, { "name": "Item Serial", "type": "uint", "size": 4, "description": "Serial of item" }, { "name": "Resource Type", "type": "short", "size": 2, "description": "Resource type ID" } ], "source": { "file": "Projects/UOContent/Network/Packets/IncomingExtendedCommandPackets.cs", "line": 439 } }, { "id": "0xBF/0x32", "subId": "0x32", "name": "Toggle Flying", "description": "Client toggles gargoyle flying mode.", "direction": "incoming", "isDynamic": true, "size": "var", "fields": [ { "name": "Packet ID", "type": "byte", "size": 1, "value": "0xBF", "description": "Packet identifier" }, { "name": "Length", "type": "ushort", "size": 2, "description": "Packet length" }, { "name": "Sub-Command", "type": "ushort", "size": 2, "value": "0x32", "description": "Toggle Flying subcommand" } ], "source": { "file": "Projects/UOContent/Network/Packets/IncomingExtendedCommandPackets.cs", "line": 272 } } ] }