From 91a553b0bc04b108b278a01f47d0a890a0577d06 Mon Sep 17 00:00:00 2001 From: Kamron Batman <3953314+kamronbatman@users.noreply.github.com> Date: Sat, 31 Jan 2026 10:58:13 -0800 Subject: [PATCH] chore: Fixes 0x78 and min client version for packets.html (#2322) --- docs/packets/incoming/items.json | 8 +- docs/packets/outgoing/arrow.json | 9 +- docs/packets/outgoing/bulletinboard.json | 3 - docs/packets/outgoing/container.json | 22 +- docs/packets/outgoing/contextmenu.json | 6 +- docs/packets/outgoing/mobile.json | 962 +++++++++++------------ docs/packets/outgoing/party.json | 5 - docs/packets/outgoing/targeting.json | 6 +- 8 files changed, 477 insertions(+), 544 deletions(-) diff --git a/docs/packets/incoming/items.json b/docs/packets/incoming/items.json index 27fc35703..09bef1230 100644 --- a/docs/packets/incoming/items.json +++ b/docs/packets/incoming/items.json @@ -50,7 +50,6 @@ "size": "Varies", "variants": [ { - "version": "pre-6017", "name": "Classic", "size": 14, "fields": [ @@ -94,7 +93,6 @@ ] }, { - "version": "6017+", "name": "Container Grid Lines", "condition": "Client version \u003e= 6.0.1.7 (ContainerGridLines)", "size": 15, @@ -146,11 +144,9 @@ } ], "clientVersion": { - "classic": { - "min": "6.0.1.7" - }, + "classic": {}, "enhanced": {}, - "notes": "ContainerGridLines adds gridLocation byte" + "notes": "ContainerGridLines (6.0.1.7+) adds gridLocation byte" }, "source": { "file": "Projects/UOContent/Network/Packets/IncomingItemPackets.cs", diff --git a/docs/packets/outgoing/arrow.json b/docs/packets/outgoing/arrow.json index 9ce0d935a..ba16c5b76 100644 --- a/docs/packets/outgoing/arrow.json +++ b/docs/packets/outgoing/arrow.json @@ -11,7 +11,6 @@ "variants": [ { "name": "Pre-High Seas Set Arrow", - "version": "pre-HS", "condition": "command == 1 (Set), pre-HighSeas client", "size": 6, "fields": [ @@ -45,7 +44,6 @@ }, { "name": "Pre-High Seas Cancel Arrow", - "version": "pre-HS", "condition": "command == 0 (Cancel), pre-HighSeas client", "size": 6, "fields": [ @@ -81,7 +79,6 @@ }, { "name": "High Seas", - "version": "HS+", "condition": "HighSeas client (7.0.9.0+)", "size": 10, "fields": [ @@ -127,11 +124,9 @@ } ], "clientVersion": { - "classic": { - "min": "7.0.9.0" - }, + "classic": {}, "enhanced": {}, - "notes": "HighSeas (7.0.9.0+) adds target serial. Pre-HS clients use 6-byte variant (max 7.0.8.x), HS+ clients use 10-byte variant." + "notes": "HighSeas (7.0.9.0+) adds target serial. Pre-HS clients use 6-byte variant, HS+ clients use 10-byte variant." }, "source": { "file": "Projects/UOContent/Skills/Tracking/OutgoingArrowPackets.cs", diff --git a/docs/packets/outgoing/bulletinboard.json b/docs/packets/outgoing/bulletinboard.json index 07073b263..0059fec55 100644 --- a/docs/packets/outgoing/bulletinboard.json +++ b/docs/packets/outgoing/bulletinboard.json @@ -11,7 +11,6 @@ "variants": [ { "name": "Display Board", - "version": "0x00", "condition": "command == 0x00", "size": 38, "fields": [ @@ -52,7 +51,6 @@ }, { "name": "Message Header", - "version": "0x01", "condition": "command == 0x01", "size": "22+", "fields": [ @@ -131,7 +129,6 @@ }, { "name": "Message Content", - "version": "0x02", "condition": "command == 0x02", "size": "22+", "fields": [ diff --git a/docs/packets/outgoing/container.json b/docs/packets/outgoing/container.json index 3f8f7b9f1..f7a375753 100644 --- a/docs/packets/outgoing/container.json +++ b/docs/packets/outgoing/container.json @@ -10,7 +10,6 @@ "size": "Varies", "variants": [ { - "version": "pre-HighSeas", "name": "Classic", "size": 7, "fields": [ @@ -36,7 +35,6 @@ ] }, { - "version": "HighSeas+", "name": "High Seas Extended", "condition": "Client version \u003e= 7.0.9.0 (HighSeas)", "size": 9, @@ -71,11 +69,9 @@ } ], "clientVersion": { - "classic": { - "min": "7.0.9.0" - }, + "classic": {}, "enhanced": {}, - "notes": "HighSeas adds containerType field" + "notes": "HighSeas (7.0.9.0+) adds containerType field" }, "source": { "file": "Projects/Server/Network/Packets/OutgoingContainerPackets.cs", @@ -91,7 +87,6 @@ "size": "Varies", "variants": [ { - "version": "pre-6017", "name": "Classic", "size": 20, "fields": [ @@ -154,7 +149,6 @@ ] }, { - "version": "6017+", "name": "Container Grid Lines", "condition": "Client version \u003e= 6.0.1.7 (ContainerGridLines)", "size": 21, @@ -225,11 +219,9 @@ } ], "clientVersion": { - "classic": { - "min": "6.0.1.7" - }, + "classic": {}, "enhanced": {}, - "notes": "ContainerGridLines adds gridLocation byte" + "notes": "ContainerGridLines (6.0.1.7+) adds gridLocation byte" }, "source": { "file": "Projects/Server/Network/Packets/OutgoingContainerPackets.cs", @@ -246,7 +238,6 @@ "tags": ["Spellbook", "Corpse"], "variants": [ { - "version": "pre-6017", "name": "Classic Format", "condition": "Client version \u003c 6.0.1.7", "size": "5 + (itemCount x 19)", @@ -332,7 +323,6 @@ ] }, { - "version": "6017+ (ContainerGridLines)", "name": "Grid Location Format", "condition": "Client version \u003e= 6.0.1.7 (ContainerGridLines)", "size": "5 + (itemCount x 20)", @@ -437,9 +427,7 @@ } ], "clientVersion": { - "classic": { - "min": "6.0.1.7" - }, + "classic": {}, "enhanced": {}, "notes": "ContainerGridLines (6.0.1.7+) adds gridLocation byte per item" }, diff --git a/docs/packets/outgoing/contextmenu.json b/docs/packets/outgoing/contextmenu.json index 82456e189..6249e70da 100644 --- a/docs/packets/outgoing/contextmenu.json +++ b/docs/packets/outgoing/contextmenu.json @@ -12,7 +12,6 @@ "variants": [ { "name": "Old Format", - "version": "0x01", "condition": "command == 0x01 (pre-NewHaven)", "fields": [ { @@ -115,7 +114,6 @@ }, { "name": "New Format", - "version": "0x02", "condition": "command == 0x02 (NewHaven+)", "fields": [ { @@ -201,9 +199,7 @@ } ], "clientVersion": { - "classic": { - "min": "6.0.0.0" - }, + "classic": {}, "enhanced": {}, "notes": "NewHaven clients (6.0.0.0+) use command 0x02" }, diff --git a/docs/packets/outgoing/mobile.json b/docs/packets/outgoing/mobile.json index 581f82c1c..ea8bc6910 100644 --- a/docs/packets/outgoing/mobile.json +++ b/docs/packets/outgoing/mobile.json @@ -1104,506 +1104,474 @@ }, { "id": "0x78", - "name": "Mobile Incoming (Old)", - "description": "Full mobile information including equipped items. Sent when a mobile enters view range. Pre-Stygian Abyss version.", + "name": "Mobile Incoming", + "description": "Full mobile information including equipped items. Sent when a mobile enters view range. Structure varies by client version.", "direction": "outgoing", "isDynamic": true, "size": "23+", - "fields": [ - { - "name": "Packet ID", - "type": "byte", - "size": 1, - "value": "0x78", - "description": "Packet identifier" - }, - { - "name": "Length", - "type": "ushort", - "size": 2, - "description": "Packet length" - }, - { - "name": "Serial", - "type": "uint", - "size": 4, - "description": "Mobile serial" - }, - { - "name": "Body", - "type": "short", - "size": 2, - "description": "Body/graphic ID" - }, - { - "name": "X", - "type": "short", - "size": 2, - "description": "X coordinate" - }, - { - "name": "Y", - "type": "short", - "size": 2, - "description": "Y coordinate" - }, - { - "name": "Z", - "type": "sbyte", - "size": 1, - "description": "Z coordinate" - }, - { - "name": "Direction", - "type": "byte", - "size": 1, - "description": "Facing direction" - }, - { - "name": "Hue", - "type": "short", - "size": 2, - "description": "Hue/color" - }, - { - "name": "Flags", - "type": "byte", - "size": 1, - "description": "Packet flags" - }, - { - "name": "Notoriety", - "type": "enum", - "enumType": "sequential", - "size": 1, - "description": "Notoriety flag", - "values": [ - { - "value": 0, - "name": "Innocent", - "description": "Blue - innocent player" - }, - { - "value": 1, - "name": "Friend", - "description": "Green - ally/friend" - }, - { - "value": 2, - "name": "Attackable", - "description": "Gray - can be attacked" - }, - { - "value": 3, - "name": "Criminal", - "description": "Gray - criminal flag" - }, - { - "value": 4, - "name": "Enemy", - "description": "Orange - enemy" - }, - { - "value": 5, - "name": "Murderer", - "description": "Red - murderer" - }, - { - "value": 6, - "name": "Invulnerable", - "description": "Yellow - invulnerable" - } - ] - }, - { - "name": "Equipment", - "type": "array", - "description": "Equipped items (terminated by 0x00000000)", - "loop": { - "countField": "variable (until terminator)", - "fields": [ - { - "name": "Item Serial", - "type": "uint", - "size": 4, - "description": "Item serial (0 = end of list)" - }, - { - "name": "Item ID", - "type": "ushort", - "size": 2, - "description": "Item graphic ID (15-bit, 0x7FFF mask). Bit 0x8000 indicates hue follows." - }, - { - "name": "Layer", - "type": "byte", - "size": 1, - "description": "Equipment layer" - }, - { - "name": "Hue", - "type": "short", - "size": 2, - "description": "Item hue (only present if bit 0x8000 set on Item ID)", - "condition": "Item ID & 0x8000" - } - ] - } - }, - { - "name": "Terminator", - "type": "int", - "size": 4, - "value": "0x00000000", - "description": "Equipment list terminator" - } - ], - "clientVersion": { - "classic": { "max": "6.x.x.x" }, - "notes": "Pre-Stygian Abyss. Equipment hue only sent when non-zero (indicated by 0x8000 flag on ItemID)." - }, - "related": [ - { "id": "0x78", "relationship": "variant", "note": "Mobile Incoming (SA) for 7.0.0.0+" }, - { "id": "0x78", "relationship": "variant", "note": "Mobile Incoming (New) for 7.0.33.1+" } - ], - "source": { - "file": "Projects/Server/Network/Packets/OutgoingMobilePackets.cs", - "line": 601 - } - }, - { - "id": "0x78", - "name": "Mobile Incoming (SA)", - "description": "Full mobile information including equipped items. Sent when a mobile enters view range. Stygian Abyss version with updated packet flags.", - "direction": "outgoing", - "isDynamic": true, - "size": "23+", - "fields": [ - { - "name": "Packet ID", - "type": "byte", - "size": 1, - "value": "0x78", - "description": "Packet identifier" - }, - { - "name": "Length", - "type": "ushort", - "size": 2, - "description": "Packet length" - }, - { - "name": "Serial", - "type": "uint", - "size": 4, - "description": "Mobile serial" - }, - { - "name": "Body", - "type": "short", - "size": 2, - "description": "Body/graphic ID" - }, - { - "name": "X", - "type": "short", - "size": 2, - "description": "X coordinate" - }, - { - "name": "Y", - "type": "short", - "size": 2, - "description": "Y coordinate" - }, - { - "name": "Z", - "type": "sbyte", - "size": 1, - "description": "Z coordinate" - }, - { - "name": "Direction", - "type": "byte", - "size": 1, - "description": "Facing direction" - }, - { - "name": "Hue", - "type": "short", - "size": 2, - "description": "Hue/color" - }, - { - "name": "Flags", - "type": "byte", - "size": 1, - "description": "Packet flags" - }, - { - "name": "Notoriety", - "type": "enum", - "enumType": "sequential", - "size": 1, - "description": "Notoriety flag", - "values": [ - { - "value": 0, - "name": "Innocent", - "description": "Blue - innocent player" - }, - { - "value": 1, - "name": "Friend", - "description": "Green - ally/friend" - }, - { - "value": 2, - "name": "Attackable", - "description": "Gray - can be attacked" - }, - { - "value": 3, - "name": "Criminal", - "description": "Gray - criminal flag" - }, - { - "value": 4, - "name": "Enemy", - "description": "Orange - enemy" - }, - { - "value": 5, - "name": "Murderer", - "description": "Red - murderer" - }, - { - "value": 6, - "name": "Invulnerable", - "description": "Yellow - invulnerable" - } - ] - }, - { - "name": "Equipment", - "type": "array", - "description": "Equipped items (terminated by 0x00000000)", - "loop": { - "countField": "variable (until terminator)", - "fields": [ - { - "name": "Item Serial", - "type": "uint", - "size": 4, - "description": "Item serial (0 = end of list)" - }, - { - "name": "Item ID", - "type": "ushort", - "size": 2, - "description": "Item graphic ID (15-bit, 0x7FFF mask). Bit 0x8000 indicates hue follows." - }, - { - "name": "Layer", - "type": "byte", - "size": 1, - "description": "Equipment layer" - }, - { - "name": "Hue", - "type": "short", - "size": 2, - "description": "Item hue (only present if bit 0x8000 set on Item ID)", - "condition": "Item ID & 0x8000" - } - ] - } - }, - { - "name": "Terminator", - "type": "int", - "size": 4, - "value": "0x00000000", - "description": "Equipment list terminator" - } - ], - "clientVersion": { - "classic": { "min": "7.0.0.0", "max": "7.0.33.0" }, - "enhanced": {}, - "notes": "Stygian Abyss clients. Equipment hue only sent when non-zero (indicated by 0x8000 flag on ItemID)." - }, - "related": [ - { "id": "0x78", "relationship": "variant", "note": "Mobile Incoming (Old) for pre-7.0.0.0" }, - { "id": "0x78", "relationship": "variant", "note": "Mobile Incoming (New) for 7.0.33.1+" } - ], - "source": { - "file": "Projects/Server/Network/Packets/OutgoingMobilePackets.cs", - "line": 601 - } - }, - { - "id": "0x78", - "name": "Mobile Incoming (New)", - "description": "Full mobile information including equipped items. Sent when a mobile enters view range. NewMobileIncoming version with full 16-bit ItemID and always-present hue field.", - "direction": "outgoing", - "isDynamic": true, - "size": "23+", - "fields": [ - { - "name": "Packet ID", - "type": "byte", - "size": 1, - "value": "0x78", - "description": "Packet identifier" - }, - { - "name": "Length", - "type": "ushort", - "size": 2, - "description": "Packet length" - }, - { - "name": "Serial", - "type": "uint", - "size": 4, - "description": "Mobile serial" - }, - { - "name": "Body", - "type": "short", - "size": 2, - "description": "Body/graphic ID" - }, - { - "name": "X", - "type": "short", - "size": 2, - "description": "X coordinate" - }, - { - "name": "Y", - "type": "short", - "size": 2, - "description": "Y coordinate" - }, - { - "name": "Z", - "type": "sbyte", - "size": 1, - "description": "Z coordinate" - }, - { - "name": "Direction", - "type": "byte", - "size": 1, - "description": "Facing direction" - }, - { - "name": "Hue", - "type": "short", - "size": 2, - "description": "Hue/color" - }, - { - "name": "Flags", - "type": "byte", - "size": 1, - "description": "Packet flags" - }, - { - "name": "Notoriety", - "type": "enum", - "enumType": "sequential", - "size": 1, - "description": "Notoriety flag", - "values": [ - { - "value": 0, - "name": "Innocent", - "description": "Blue - innocent player" - }, - { - "value": 1, - "name": "Friend", - "description": "Green - ally/friend" - }, - { - "value": 2, - "name": "Attackable", - "description": "Gray - can be attacked" - }, - { - "value": 3, - "name": "Criminal", - "description": "Gray - criminal flag" - }, - { - "value": 4, - "name": "Enemy", - "description": "Orange - enemy" - }, - { - "value": 5, - "name": "Murderer", - "description": "Red - murderer" - }, - { - "value": 6, - "name": "Invulnerable", - "description": "Yellow - invulnerable" - } - ] - }, - { - "name": "Equipment", - "type": "array", - "description": "Equipped items (terminated by 0x00000000)", - "loop": { - "countField": "variable (until terminator)", - "fields": [ - { - "name": "Item Serial", - "type": "uint", - "size": 4, - "description": "Item serial (0 = end of list)" - }, - { - "name": "Item ID", - "type": "ushort", - "size": 2, - "description": "Item graphic ID (full 16-bit, 0xFFFF mask)" - }, - { - "name": "Layer", - "type": "byte", - "size": 1, - "description": "Equipment layer" - }, - { - "name": "Hue", - "type": "short", - "size": 2, - "description": "Item hue (always present)" - } - ] - } - }, - { - "name": "Terminator", - "type": "int", - "size": 4, - "value": "0x00000000", - "description": "Equipment list terminator" - } - ], - "clientVersion": { - "classic": { "min": "7.0.33.1" }, - "notes": "NewMobileIncoming clients. Equipment always includes hue field (no 0x8000 flag needed). ItemID uses full 16-bit range." - }, - "related": [ - { "id": "0x78", "relationship": "variant", "note": "Mobile Incoming (Old) for pre-7.0.0.0" }, - { "id": "0x78", "relationship": "variant", "note": "Mobile Incoming (SA) for 7.0.0.0-7.0.33.0" } - ], + "variants": [ + { + "name": "Pre-Stygian Abyss", + "condition": "Classic client < 7.0.0.0", + "size": "23+", + "fields": [ + { + "name": "Packet ID", + "type": "byte", + "size": 1, + "value": "0x78", + "description": "Packet identifier" + }, + { + "name": "Length", + "type": "ushort", + "size": 2, + "description": "Packet length" + }, + { + "name": "Serial", + "type": "uint", + "size": 4, + "description": "Mobile serial" + }, + { + "name": "Body", + "type": "short", + "size": 2, + "description": "Body/graphic ID" + }, + { + "name": "X", + "type": "short", + "size": 2, + "description": "X coordinate" + }, + { + "name": "Y", + "type": "short", + "size": 2, + "description": "Y coordinate" + }, + { + "name": "Z", + "type": "sbyte", + "size": 1, + "description": "Z coordinate" + }, + { + "name": "Direction", + "type": "byte", + "size": 1, + "description": "Facing direction" + }, + { + "name": "Hue", + "type": "short", + "size": 2, + "description": "Hue/color" + }, + { + "name": "Flags", + "type": "byte", + "size": 1, + "description": "Packet flags" + }, + { + "name": "Notoriety", + "type": "enum", + "enumType": "sequential", + "size": 1, + "description": "Notoriety flag", + "values": [ + { + "value": 0, + "name": "Innocent", + "description": "Blue - innocent player" + }, + { + "value": 1, + "name": "Friend", + "description": "Green - ally/friend" + }, + { + "value": 2, + "name": "Attackable", + "description": "Gray - can be attacked" + }, + { + "value": 3, + "name": "Criminal", + "description": "Gray - criminal flag" + }, + { + "value": 4, + "name": "Enemy", + "description": "Orange - enemy" + }, + { + "value": 5, + "name": "Murderer", + "description": "Red - murderer" + }, + { + "value": 6, + "name": "Invulnerable", + "description": "Yellow - invulnerable" + } + ] + }, + { + "name": "Equipment", + "type": "array", + "description": "Equipped items (terminated by 0x00000000)", + "loop": { + "countField": "variable (until terminator)", + "fields": [ + { + "name": "Item Serial", + "type": "uint", + "size": 4, + "description": "Item serial (0 = end of list)" + }, + { + "name": "Item ID", + "type": "ushort", + "size": 2, + "description": "Item graphic ID (15-bit, 0x7FFF mask). Bit 0x8000 indicates hue follows." + }, + { + "name": "Layer", + "type": "byte", + "size": 1, + "description": "Equipment layer" + }, + { + "name": "Hue", + "type": "short", + "size": 2, + "description": "Item hue (only present if bit 0x8000 set on Item ID)", + "condition": "Item ID & 0x8000" + } + ] + } + }, + { + "name": "Terminator", + "type": "int", + "size": 4, + "value": "0x00000000", + "description": "Equipment list terminator" + } + ] + }, + { + "name": "Stygian Abyss", + "condition": "Classic client 7.0.0.0 - 7.0.33.0, or Enhanced Client", + "size": "23+", + "fields": [ + { + "name": "Packet ID", + "type": "byte", + "size": 1, + "value": "0x78", + "description": "Packet identifier" + }, + { + "name": "Length", + "type": "ushort", + "size": 2, + "description": "Packet length" + }, + { + "name": "Serial", + "type": "uint", + "size": 4, + "description": "Mobile serial" + }, + { + "name": "Body", + "type": "short", + "size": 2, + "description": "Body/graphic ID" + }, + { + "name": "X", + "type": "short", + "size": 2, + "description": "X coordinate" + }, + { + "name": "Y", + "type": "short", + "size": 2, + "description": "Y coordinate" + }, + { + "name": "Z", + "type": "sbyte", + "size": 1, + "description": "Z coordinate" + }, + { + "name": "Direction", + "type": "byte", + "size": 1, + "description": "Facing direction" + }, + { + "name": "Hue", + "type": "short", + "size": 2, + "description": "Hue/color" + }, + { + "name": "Flags", + "type": "byte", + "size": 1, + "description": "Packet flags (SA format)" + }, + { + "name": "Notoriety", + "type": "enum", + "enumType": "sequential", + "size": 1, + "description": "Notoriety flag", + "values": [ + { + "value": 0, + "name": "Innocent", + "description": "Blue - innocent player" + }, + { + "value": 1, + "name": "Friend", + "description": "Green - ally/friend" + }, + { + "value": 2, + "name": "Attackable", + "description": "Gray - can be attacked" + }, + { + "value": 3, + "name": "Criminal", + "description": "Gray - criminal flag" + }, + { + "value": 4, + "name": "Enemy", + "description": "Orange - enemy" + }, + { + "value": 5, + "name": "Murderer", + "description": "Red - murderer" + }, + { + "value": 6, + "name": "Invulnerable", + "description": "Yellow - invulnerable" + } + ] + }, + { + "name": "Equipment", + "type": "array", + "description": "Equipped items (terminated by 0x00000000)", + "loop": { + "countField": "variable (until terminator)", + "fields": [ + { + "name": "Item Serial", + "type": "uint", + "size": 4, + "description": "Item serial (0 = end of list)" + }, + { + "name": "Item ID", + "type": "ushort", + "size": 2, + "description": "Item graphic ID (15-bit, 0x7FFF mask). Bit 0x8000 indicates hue follows." + }, + { + "name": "Layer", + "type": "byte", + "size": 1, + "description": "Equipment layer" + }, + { + "name": "Hue", + "type": "short", + "size": 2, + "description": "Item hue (only present if bit 0x8000 set on Item ID)", + "condition": "Item ID & 0x8000" + } + ] + } + }, + { + "name": "Terminator", + "type": "int", + "size": 4, + "value": "0x00000000", + "description": "Equipment list terminator" + } + ] + }, + { + "name": "NewMobileIncoming", + "condition": "Classic client >= 7.0.33.1", + "size": "23+", + "fields": [ + { + "name": "Packet ID", + "type": "byte", + "size": 1, + "value": "0x78", + "description": "Packet identifier" + }, + { + "name": "Length", + "type": "ushort", + "size": 2, + "description": "Packet length" + }, + { + "name": "Serial", + "type": "uint", + "size": 4, + "description": "Mobile serial" + }, + { + "name": "Body", + "type": "short", + "size": 2, + "description": "Body/graphic ID" + }, + { + "name": "X", + "type": "short", + "size": 2, + "description": "X coordinate" + }, + { + "name": "Y", + "type": "short", + "size": 2, + "description": "Y coordinate" + }, + { + "name": "Z", + "type": "sbyte", + "size": 1, + "description": "Z coordinate" + }, + { + "name": "Direction", + "type": "byte", + "size": 1, + "description": "Facing direction" + }, + { + "name": "Hue", + "type": "short", + "size": 2, + "description": "Hue/color" + }, + { + "name": "Flags", + "type": "byte", + "size": 1, + "description": "Packet flags (SA format)" + }, + { + "name": "Notoriety", + "type": "enum", + "enumType": "sequential", + "size": 1, + "description": "Notoriety flag", + "values": [ + { + "value": 0, + "name": "Innocent", + "description": "Blue - innocent player" + }, + { + "value": 1, + "name": "Friend", + "description": "Green - ally/friend" + }, + { + "value": 2, + "name": "Attackable", + "description": "Gray - can be attacked" + }, + { + "value": 3, + "name": "Criminal", + "description": "Gray - criminal flag" + }, + { + "value": 4, + "name": "Enemy", + "description": "Orange - enemy" + }, + { + "value": 5, + "name": "Murderer", + "description": "Red - murderer" + }, + { + "value": 6, + "name": "Invulnerable", + "description": "Yellow - invulnerable" + } + ] + }, + { + "name": "Equipment", + "type": "array", + "description": "Equipped items (terminated by 0x00000000). Always includes hue field.", + "loop": { + "countField": "variable (until terminator)", + "fields": [ + { + "name": "Item Serial", + "type": "uint", + "size": 4, + "description": "Item serial (0 = end of list)" + }, + { + "name": "Item ID", + "type": "ushort", + "size": 2, + "description": "Item graphic ID (full 16-bit, 0xFFFF mask)" + }, + { + "name": "Layer", + "type": "byte", + "size": 1, + "description": "Equipment layer" + }, + { + "name": "Hue", + "type": "short", + "size": 2, + "description": "Item hue (always present)" + } + ] + } + }, + { + "name": "Terminator", + "type": "int", + "size": 4, + "value": "0x00000000", + "description": "Equipment list terminator" + } + ] + } + ], "source": { "file": "Projects/Server/Network/Packets/OutgoingMobilePackets.cs", "line": 601 diff --git a/docs/packets/outgoing/party.json b/docs/packets/outgoing/party.json index e62878ddb..1fce9525a 100644 --- a/docs/packets/outgoing/party.json +++ b/docs/packets/outgoing/party.json @@ -12,7 +12,6 @@ "variants": [ { "name": "Member List", - "version": "0x01", "condition": "command == 0x01", "size": "7 + (memberCount x 4)", "fields": [ @@ -69,7 +68,6 @@ }, { "name": "Remove Member", - "version": "0x02", "condition": "command == 0x02", "size": "11 + (memberCount x 4)", "fields": [ @@ -132,7 +130,6 @@ }, { "name": "Private Message", - "version": "0x03", "condition": "command == 0x03", "size": "12 + (text.Length x 2)", "fields": [ @@ -178,7 +175,6 @@ }, { "name": "Public Message", - "version": "0x04", "condition": "command == 0x04", "size": "12 + (text.Length x 2)", "fields": [ @@ -224,7 +220,6 @@ }, { "name": "Party Invitation", - "version": "0x07", "condition": "command == 0x07", "size": 10, "fields": [ diff --git a/docs/packets/outgoing/targeting.json b/docs/packets/outgoing/targeting.json index e6e50fefa..c6bbabb5a 100644 --- a/docs/packets/outgoing/targeting.json +++ b/docs/packets/outgoing/targeting.json @@ -210,11 +210,9 @@ } ], "clientVersion": { - "classic": { - "min": "7.0.9.0" - }, + "classic": {}, "enhanced": {}, - "notes": "HighSeas expansion adds 4 bytes. EC always uses 30-byte variant." + "notes": "HighSeas (7.0.9.0+) adds 4 bytes. EC always uses 30-byte variant." }, "source": { "file": "Projects/Server/Network/Packets/OutgoingTargetPackets.cs",