feat: Expand packet documentation with enums, bitfields, and detailed formats
- Add 42 new packet JSON definitions (assistant, book, chat, gump, house, etc.) - Convert inline enum/bitflag descriptions to structured enum arrays - Add planeFormat section for 0xD8 house customization packet - Add Plane Format rendering in HTML template - Standardize field descriptions and remove inline value lists - Add comprehensive gump layout command documentation - Document boat, mahjong, party, secure trade, and weapon ability packets 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
f0b65fecb7
commit
0d3dc75330
51 changed files with 18827 additions and 3924 deletions
|
|
@ -1,71 +1,396 @@
|
|||
{
|
||||
"category": "Entity",
|
||||
"packets": [
|
||||
{
|
||||
"id": "0x1D",
|
||||
"name": "Remove Entity",
|
||||
"description": "Removes an entity (item, mobile, or multi) from the client's view.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 5,
|
||||
"fields": [
|
||||
{ "name": "packetId", "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's Object Property List hash. Client compares hash to cached version and requests full OPL if different.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": 9,
|
||||
"fields": [
|
||||
{ "name": "packetId", "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" }
|
||||
],
|
||||
"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 item/mobile-specific packets for Stygian Abyss+ clients.",
|
||||
"direction": "outgoing",
|
||||
"isDynamic": false,
|
||||
"size": "24 (pre-HS) or 26 (HS+)",
|
||||
"fields": [
|
||||
{ "name": "packetId", "type": "byte", "size": 1, "value": "0xF3", "description": "Packet identifier" },
|
||||
{ "name": "command", "type": "short", "size": 2, "value": "0x0001", "description": "Command (always 1)" },
|
||||
{ "name": "entityType", "type": "byte", "size": 1, "description": "Entity type: 0=Item, 1=Mobile, 2=Multi" },
|
||||
{ "name": "serial", "type": "uint", "size": 4, "description": "Entity serial" },
|
||||
{ "name": "graphicId", "type": "ushort", "size": 2, "description": "Graphic/Body ID" },
|
||||
{ "name": "direction", "type": "byte", "size": 1, "description": "Direction (mobiles) or 0" },
|
||||
{ "name": "amountMin", "type": "short", "size": 2, "description": "Minimum amount (items) or 1" },
|
||||
{ "name": "amountMax", "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, "description": "Unknown (HS+ only)", "condition": "HighSeas" }
|
||||
],
|
||||
"clientVersion": {
|
||||
"min": "7.0.9.0",
|
||||
"feature": "StygianAbyss"
|
||||
},
|
||||
"source": {
|
||||
"file": "Projects/Server/Network/Packets/OutgoingEntityPackets.cs",
|
||||
"line": 88
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
{
|
||||
"category": "Entity",
|
||||
"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": "byte",
|
||||
"size": 1,
|
||||
"description": "Entity type",
|
||||
"enum": [
|
||||
{ "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": "byte",
|
||||
"size": 1,
|
||||
"description": "Entity type",
|
||||
"enum": [
|
||||
{ "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
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue