- Add Mahjong packets (0xDA) with 18 sub-commands (6 outgoing, 12 incoming) - Add Bulletin Board incoming packets (0x71) with 4 sub-commands - Add Corpse Equipment packet (0x89) - Convert 0x6F Secure Trade to variants (Cancel, Toggle Accept, Update Gold) - Convert 0xB8 Profile Request to variants (Display, Edit) - Convert 0xAD Unicode Speech to variants with encoded keyword documentation - Move 0xD7 base packet from player.json to encoded.json for consistency - Fix dropdown arrow positioning in HTML template - Fix packet sorting for embedded subIds (0xBF/0x22 format) - Add reflexive relationships between related packets - Update 0x3C container content with corpse usage notes 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
76 lines
4.6 KiB
JSON
76 lines
4.6 KiB
JSON
{
|
|
"category": "Corpse",
|
|
"packets": [
|
|
{
|
|
"id": "0x89",
|
|
"name": "Corpse Equipment",
|
|
"description": "Sends the equipment layer mapping for items on a corpse, including virtual hair and facial hair items.",
|
|
"direction": "outgoing",
|
|
"isDynamic": true,
|
|
"size": "8+",
|
|
"fields": [
|
|
{
|
|
"name": "Packet ID",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0x89",
|
|
"description": "Packet identifier"
|
|
},
|
|
{
|
|
"name": "Length",
|
|
"type": "ushort",
|
|
"size": 2,
|
|
"description": "Packet length"
|
|
},
|
|
{
|
|
"name": "Corpse Serial",
|
|
"type": "uint",
|
|
"size": 4,
|
|
"description": "Serial of the corpse"
|
|
},
|
|
{
|
|
"name": "Equipment",
|
|
"type": "loop",
|
|
"description": "Equipment layer mappings (5 bytes each, until terminator)",
|
|
"loop": {
|
|
"terminator": "Layer == 0",
|
|
"fields": [
|
|
{
|
|
"name": "Layer",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"description": "Equipment layer + 1 (0 = terminator)"
|
|
},
|
|
{
|
|
"name": "Item Serial",
|
|
"type": "uint",
|
|
"size": 4,
|
|
"description": "Serial of item in this layer"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "Terminator",
|
|
"type": "byte",
|
|
"size": 1,
|
|
"value": "0x00",
|
|
"description": "Layer.Invalid (0) marks end of list"
|
|
}
|
|
],
|
|
"notes": "Layer values are offset by +1 (e.g., Layer.Hair (0x0B) is sent as 0x0C). Hair and facial hair use virtual serials.",
|
|
"related": [
|
|
{
|
|
"id": "0x3C",
|
|
"direction": "outgoing",
|
|
"relationship": "related",
|
|
"note": "Container Content (also used for corpse items)"
|
|
}
|
|
],
|
|
"source": {
|
|
"file": "Projects/UOContent/Items/Misc/Corpses/CorpsePackets.cs",
|
|
"line": 24
|
|
}
|
|
}
|
|
]
|
|
}
|