ModernUO/Distribution/Data/packets/PACKET_TRACKING.md
Kamron Batman f0b65fecb7
feat: Add interactive packet documentation system
- Create JSON-based packet documentation for 145 packets (66 incoming, 79 outgoing)
- Add HTML template with search, filtering, and navigation
- Support enum/bitfield field display with values and descriptions
- Support packet variants for version-specific structures
- Include 0xBF extended command subpackets documentation
- Add PowerShell build script to generate final HTML

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 11:47:31 -08:00

505 lines
15 KiB
Markdown

# Packet Documentation Tracking
## Protocol Version Reference
### Client Version → ProtocolChanges Mapping
| Version | Flag | Description |
|---------|------|-------------|
| 5.0.0a | NewSpellbook | AOS spellbook format (0xBF/0x1B) |
| 5.0.0a | DamagePacket | Damage packet (0x0B) |
| 5.0.2b | BuffIcon | Buff/debuff icons |
| 6.0.0.0 | NewHaven | New Haven starting city |
| **6.0.1.7** | **ContainerGridLines** | Container item grid positions (+1 byte per item) |
| 6.0.14.2 | ExtendedSupportedFeatures | 0xB9 uses 4 bytes instead of 2 |
| 7.0.0.0 | StygianAbyss | SA client features, 0xF3 world entity |
| 7.0.9.0 | HighSeas | HS features, extended 0xF3 |
| 7.0.13.0 | NewCharacterList | Extended city info in 0xA9 |
| 7.0.16.0 | NewCharacterCreation | 4th skill slot |
| 7.0.30.0 | ExtendedStatus | Mobile status version 6 |
| 7.0.33.1 | NewMobileIncoming | 0x78 always includes hue |
| 7.0.45.65 | NewSecureTrading | New secure trade format |
| 7.0.50.0 | UltimaStore | Ultima Store packets |
| 7.0.61.0 | EndlessJourney | EJ features |
### Mobile Status Versions (Expansion-based)
| Version | Expansion | Size | Description |
|---------|-----------|------|-------------|
| 0 | Any | 43 | Compact (viewing others) |
| 3 | Pre-AOS | 70 | Basic stats |
| 4 | AOS | 88 | Resistances, luck, damage |
| 5 | ML | 91 | Weight, race |
| 6 | HS | 121 | Extended AOS status |
---
## Incoming Packets Tracking
### Account (IncomingAccountPackets.cs)
- [x] 0x00 - Create Character (Old, 104 bytes)
- [x] 0x5D - Play Character
- [x] 0x80 - Account Login
- [x] 0x83 - Delete Character
- [x] 0x91 - Game Login
- [x] 0xA0 - Play Server
- [x] 0xBD - Client Version (response)
- [x] 0xE1 - Client Type
- [x] 0xEF - Login Server Seed
- [x] 0xF8 - Create Character (New, 106 bytes)
### Movement (IncomingMovementPackets.cs)
- [x] 0x02 - Movement Request
### Entity (IncomingEntityPackets.cs)
- [x] 0x06 - Use Request (Double-Click)
- [x] 0x09 - Look Request (Single-Click)
- [x] 0xB6 - Object Help Request
- [x] 0xD6 - Batch Query Properties
### Item (IncomingItemPackets.cs)
- [ ] 0x07 - Lift Request
- [ ] 0x08 - Drop Request (VERSION: 6017 adds grid location byte)
- [ ] 0x13 - Equip Request
- [ ] 0xEC - Equip Macro
- [ ] 0xED - Unequip Macro
### Mobile (IncomingMobilePackets.cs)
- [ ] 0x6F - Secure Trade
- [ ] 0x75 - Rename Request
- [ ] 0x98 - Mobile Name Request (incoming)
### Player (IncomingPlayerPackets.cs)
- [ ] 0x01 - Disconnect
- [ ] 0x05 - Attack Request
- [ ] 0x12 - Text Command (skills, cast)
- [ ] 0x22 - Resynchronize
- [ ] 0x2C - Death Status Response
- [ ] 0x34 - Mobile Query
- [ ] 0x3A - Change Skill Lock
- [ ] 0x72 - Set War Mode
- [ ] 0x73 - Ping Request
- [ ] 0x7D - Menu Response
- [ ] 0x95 - Hue Picker Response
- [ ] 0x9A - ASCII Prompt Response
- [ ] 0x9B - Help Request
- [ ] 0xA4 - System Info
- [ ] 0xA7 - Request Scroll Window
- [ ] 0xC2 - Unicode Prompt Response
- [ ] 0xC8 - Set Update Range
- [ ] 0xD0 - Configuration File
- [ ] 0xD1 - Logout Request
- [ ] 0xD7 - Encoded Command (wrapper)
- [ ] 0xF4 - Crash Report
### Message (IncomingMessagePackets.cs)
- [ ] 0x03 - ASCII Speech
- [ ] 0xAD - Unicode Speech
### Vendor (IncomingVendorPackets.cs)
- [ ] 0x3B - Vendor Buy Reply
- [ ] 0x9F - Vendor Sell Reply
### Targeting (IncomingTargetingPackets.cs)
- [ ] 0x6C - Target Response
### House (IncomingHousePackets.cs)
- [ ] 0xFB - Show Public House Content
### Extended Commands (IncomingExtendedCommandPackets.cs) - 0xBF subpackets
- [ ] 0xBF/0x05 - Screen Size
- [ ] 0xBF/0x06 - Party Message
- [ ] 0xBF/0x09 - Disarm Request
- [ ] 0xBF/0x0A - Stun Request
- [ ] 0xBF/0x0B - Language
- [ ] 0xBF/0x0C - Close Status
- [ ] 0xBF/0x0E - Animate
- [ ] 0xBF/0x0F - Empty (unused)
- [ ] 0xBF/0x10 - Query Properties
- [ ] 0xBF/0x13 - Context Menu Request
- [ ] 0xBF/0x15 - Context Menu Response
- [ ] 0xBF/0x1A - Stat Lock Change
- [ ] 0xBF/0x1C - Cast Spell
- [ ] 0xBF/0x1E - Query Design Details
- [ ] 0xBF/0x24 - Unhandled BF
- [ ] 0xBF/0x2A - Race Change Reply
- [ ] 0xBF/0x2C - Bandage Target
- [ ] 0xBF/0x2D - Targeted Spell
- [ ] 0xBF/0x2E - Targeted Skill Use
- [ ] 0xBF/0x30 - Target By Resource Macro
- [ ] 0xBF/0x32 - Toggle Flying
### Encoded Commands (0xD7 subpackets)
- [ ] 0xD7/0x02 - House Designer Backup
- [ ] 0xD7/0x03 - House Designer Restore
- [ ] 0xD7/0x04 - House Designer Commit
- [ ] 0xD7/0x05 - House Designer Delete
- [ ] 0xD7/0x06 - House Designer Build
- [ ] 0xD7/0x0C - House Designer Close
- [ ] 0xD7/0x0D - House Designer Stairs
- [ ] 0xD7/0x0E - House Designer Sync
- [ ] 0xD7/0x10 - House Designer Clear
- [ ] 0xD7/0x12 - House Designer Level
- [ ] 0xD7/0x13 - House Designer Roof
- [ ] 0xD7/0x14 - House Designer Roof Delete
- [ ] 0xD7/0x19 - Set Ability
- [ ] 0xD7/0x1A - House Designer Revert
- [ ] 0xD7/0x28 - Guild Gump Request
- [ ] 0xD7/0x32 - Quest Gump Request
### Gumps (GumpSystem.cs)
- [ ] 0xB1 - Display Gump Response
### Books (BookPackets.cs)
- [ ] 0x66 - Book Content Change
- [ ] 0x93 - Old Book Header Change
- [ ] 0xD4 - Book Header Change
### Bulletin Boards (BulletinBoardPackets.cs)
- [ ] 0x71 - Bulletin Board Request
### Maps (MapItemPackets.cs)
- [ ] 0x56 - Map Command
### Mahjong (MahjongPackets.cs)
- [ ] 0xDA - Mahjong (with subcommands)
### Chat (ChatPackets.cs)
- [ ] 0xB3 - Chat Action
- [ ] 0xB5 - Open Chat Window Request
### Ultima Store (UltimaStorePackets.cs)
- [ ] 0xFA - Ultima Store Open Request
### Hardware Info (HardwareInfo.cs)
- [ ] 0xD9 - Hardware Info
### Assistants (AssistantHandler.cs)
- [ ] 0xBE - Assistant Version
### Tracking (Tracking.cs)
- [ ] 0xBF/0x07 - Quest Arrow Click
---
## Outgoing Packets Tracking
### Account (OutgoingAccountPackets.cs)
- [x] 0x1B - Login Confirmation
- [x] 0x53 - Popup Message
- [x] 0x55 - Login Complete
- [x] 0x81 - Change Character
- [x] 0x82 - Account Login Rejected
- [x] 0x85 - Character Delete Result
- [x] 0x86 - Character List Update
- [x] 0x8C - Play Server Ack
- [x] 0xA8 - Account Login Ack (Server List)
- [x] 0xA9 - Character List (VERSION: 7.0.13.0 extended cities)
- [x] 0xB9 - Supported Features (VERSION: 6.0.14.2 extended to 4 bytes)
- [x] 0xBD - Client Version Request
### Movement (OutgoingMovementPackets.cs)
- [x] 0x21 - Movement Rejection
- [x] 0x22 - Movement Acknowledgment
- [x] 0x97 - Move Player
- [x] 0xBF/0x26 - Speed Control
- [x] 0xF2 - Time Sync Response
### Entity (OutgoingEntityPackets.cs)
- [x] 0x1D - Remove Entity
- [x] 0xDC - OPL Info
- [x] 0xF3 - World Entity (VERSION: 7.0.0.0 SA, 7.0.9.0 HS adds 2 bytes)
### Mobile (OutgoingMobilePackets.cs)
- [x] 0x11 - Mobile Status (VERSION: Multiple versions 0-6 based on expansion)
- [x] 0x17 - Mobile Healthbar
- [x] 0x20 - Mobile Update
- [x] 0x2D - Mobile Attributes
- [x] 0x6E - Mobile Animation
- [x] 0x77 - Mobile Moving
- [x] 0x78 - Mobile Incoming (VERSION: 7.0.33.1 always includes hue)
- [x] 0x98 - Mobile Name
- [x] 0xA1 - Mobile Hits
- [x] 0xA2 - Mobile Mana
- [x] 0xA3 - Mobile Stamina
- [x] 0xAF - Death Animation
- [x] 0xBF/0x19 - Bonded Status
- [x] 0xE2 - New Mobile Animation
### Item (OutgoingItemPackets.cs)
- [ ] 0x1A - World Item (pre-SA)
### Container (OutgoingContainerPackets.cs)
- [ ] 0x24 - Display Container (VERSION: 6017 adds gump type)
- [ ] 0x25 - Container Content Update (VERSION: 6017 adds grid location)
- [ ] 0x3C - Container Content (VERSION: 6017 adds grid location per item)
- [ ] 0xBF/0x1B - New Spellbook Content (AOS)
### Message (OutgoingMessagePackets.cs)
- [ ] 0x15 - Follow Message
- [ ] 0x1C - ASCII Message
- [ ] 0xAE - Unicode Message
- [ ] 0xB7 - Help Response
- [ ] 0xC1 - Localized Message
- [ ] 0xC2 - Prompt (outgoing)
- [ ] 0xCC - Localized Message Affix
### Player (OutgoingPlayerPackets.cs)
- [ ] 0x23 - Drag Effect
- [ ] 0x27 - Lift Reject
- [ ] 0x2C - Death Status
- [ ] 0x38 - Pathfind Message
- [ ] 0x3A - Skills Update
- [ ] 0x5B - Current Time
- [ ] 0x65 - Weather
- [ ] 0x6D - Play Music
- [ ] 0x73 - Ping Ack
- [ ] 0x76 - Server Change
- [ ] 0x7B - Sequence
- [ ] 0x88 - Display Paperdoll
- [ ] 0x95 - Display Hue Picker
- [ ] 0xA5 - Launch Browser
- [ ] 0xA6 - Scroll Message
- [ ] 0xBC - Season Change
- [ ] 0xBF/0x19 - Stat Lock Info
- [ ] 0xC8 - Change Update Range
- [ ] 0xD1 - Logout Ack
### Combat (OutgoingCombatPackets.cs)
- [ ] 0x2F - Swing
- [ ] 0x72 - Set War Mode
- [ ] 0xAA - Change Combatant
### Damage (OutgoingDamagePackets.cs)
- [ ] 0x0B - Damage (VERSION: 5.0.0a, or 0xBF/0x22 for older)
### Light (OutgoingLightPackets.cs)
- [ ] 0x4E - Personal Light Level
- [ ] 0x4F - Global Light Level
### Effects (OutgoingEffectPackets.cs)
- [ ] 0x54 - Sound Effect
- [ ] 0x70 - Screen Effect
- [ ] 0xC0 - Hued Effect
- [ ] 0xC7 - Particle Effect
### Target (OutgoingTargetPackets.cs)
- [ ] 0x6C - Target Request/Cancel (VERSION: HS adds 4 bytes to multi target)
- [ ] 0x99 - Multi Target Request
### Equipment (OutgoingEquipmentPackets.cs)
- [ ] 0x2E - Equip Update
- [ ] 0xBF/0x10 - Display Equipment Info
### Vendor (OutgoingVendorBuyPackets.cs, OutgoingVendorSellPackets.cs)
- [ ] 0x3B - End Vendor Buy
- [ ] 0x74 - Vendor Buy List
- [ ] 0x9E - Vendor Sell List
### Map (OutgoingMapPackets.cs)
- [ ] 0xBF/0x08 - Map Change
- [ ] 0xBF/0x18 - Map Patches
- [ ] 0xC6 - Invalid Map
### Menu (OutgoingMenuPackets.cs)
- [ ] 0x7C - Display Item List Menu
### Secure Trade (OutgoingSecureTradePackets.cs)
- [ ] 0x6F - Secure Trade (VERSION: 7.0.45.65 new format)
### Gumps (OutgoingGumpPackets.cs)
- [ ] 0x8B - Display Sign Gump
- [ ] 0xBF/0x04 - Close Gump
### Party (PartyPackets.cs)
- [ ] 0xBF/0x06 - Party packets (multiple sub-types)
### Buff Icons (BuffIconPackets.cs)
- [ ] 0xDF - Buff/Debuff System
### Books (BookPackets.cs)
- [ ] 0x66 - Book Content
- [ ] 0x93 - Book Header (old)
- [ ] 0xD4 - Book Header (new)
### Bulletin Boards (BulletinBoardPackets.cs)
- [ ] 0x71 - Bulletin Board Content
### Maps (MapItemPackets.cs)
- [ ] 0x56 - Map Details
- [ ] 0x90 - Map Display
- [ ] 0xF5 - New Map Display
### Chat (ChatPackets.cs)
- [ ] 0xB2 - Chat Message
- [ ] 0xB5 - Open Chat Window
### Context Menus (ContextMenuSystem.cs)
- [ ] 0xBF/0x14 - Display Context Menu
### Corpse (CorpsePackets.cs)
- [ ] 0x3C - Corpse Content
### House (HousePackets.cs)
- [ ] House Design packets (multiple)
### Boats (BoatPackets.cs)
- [ ] 0xF6 - Move Boat HS
### Quest (MLQuestPackets.cs)
- [ ] Quest-related packets
### Tracking (OutgoingArrowPackets.cs)
- [ ] 0xBA - Quest Arrow
### Character Statue (CharacterStatuePackets.cs)
- [ ] 0xBF/0x20 - Custom House Info
### Weapon Abilities (WeaponAbilityPackets.cs)
- [ ] 0xBF/0x21 - Clear Weapon Ability
- [ ] 0xBF/0x25 - Toggle Special Ability
### Mahjong (MahjongPackets.cs)
- [ ] 0xDA - Mahjong game packets
---
## Questions for Clarification
### Version/Protocol Questions
1. **Drop Request (0x08)**: The code shows `ContainerGridPacketHandler` - is this the 6017 version that adds the grid byte? What was the original format?
2. **Container Content Update (0x25)**: I see the size varies by `ContainerGridLines`. Is it 20 bytes pre-6017 and 21 bytes post-6017?
3. **Container Content (0x3C)**: Same question - does each item entry gain 1 byte for grid position?
4. **Display Container (0x24)**: The code shows 7 or 9 bytes. What's the difference and which version introduced the extra 2 bytes?
5. **Secure Trade (0x6F)**: What fields changed in 7.0.45.65 (NewSecureTrading)?
6. **Multi Target (0x99)**: You mentioned HS adds bytes - is it 26 pre-HS and 30 post-HS?
7. **Damage Packet**: Pre-5.0.0a clients use 0xBF/0x22, post-5.0.0a use 0x0B. Is this correct?
### Enum/Flag Questions
8. **ALRReason (Account Login Rejection)**: Is this a sequential enum (0-3, 254, 255)?
9. **PMMessage (Popup Message)**: Sequential enum (0-7)?
10. **DeleteResultType**: Sequential enum (0-5)?
11. **Direction**: Sequential 0-7 plus 0x80 running flag - should this be documented as enum + bitflag?
12. **Notoriety**: Sequential 0-7?
13. **Mobile Packet Flags**: This appears to be a bitfield (Hidden=0x80, Poisoned=0x04, etc.) - can you confirm all flag values?
14. **FeatureFlags (0xB9)**: This is a bitfield - should we document all the flag values?
15. **CharacterListFlags (0xA9)**: Also a bitfield?
16. **ClientFlags**: Also a bitfield?
### Packet Structure Questions
17. **Book packets (0x66, 0x93, 0xD4)**: These use UTF-8. Is the string format length-prefixed or null-terminated?
18. **Speech packets (0x03, 0xAD, 0x1C, 0xAE)**: What determines ASCII vs Unicode? Is 0x03/0x1C always ASCII and 0xAD/0xAE always Unicode?
19. **Localized Message (0xC1, 0xCC)**: The arguments field - is it Unicode LE with tab separators?
20. **Extended Packet (0xBF)**: Some subpackets like 0x06 (Party) have further sub-types. Should we nest these or list each as separate packets?
21. **Mobile Status (0x11)**: The version is determined by:
- Version 0 = always used when viewing OTHER mobiles (compact)
- Versions 3-6 = used when viewing SELF, based on ExpansionInfo.MobileStatusVersion
Is this correct?
22. **Mobile Incoming (0x78)**: The equipment list - for pre-NewMobileIncoming clients, the hue field is only included if itemId has bit 0x8000 set. For NewMobileIncoming clients, hue is always included. Is this correct?
---
## Schema Updates Needed
### 1. Enum Field Support
```json
{
"name": "reason",
"type": "enum",
"enumType": "sequential",
"size": 1,
"values": [
{ "value": 0, "name": "Invalid" },
{ "value": 1, "name": "InUse" },
{ "value": 2, "name": "Blocked" },
{ "value": 3, "name": "BadPass" },
{ "value": 254, "name": "Idle" },
{ "value": 255, "name": "BadComm" }
]
}
```
### 2. Bitfield Support
```json
{
"name": "flags",
"type": "bitfield",
"size": 1,
"flags": [
{ "bit": 0x80, "name": "Hidden" },
{ "bit": 0x40, "name": "Warmode" },
{ "bit": 0x08, "name": "Blessed" },
{ "bit": 0x04, "name": "Poisoned" },
{ "bit": 0x02, "name": "Female" }
]
}
```
### 3. Packet Variants Support
```json
{
"id": "0x11",
"name": "Mobile Status",
"variants": [
{
"version": "0",
"name": "Compact (Other Mobile)",
"condition": "Viewing other mobile",
"size": 43,
"fields": [...]
},
{
"version": "3",
"name": "Basic (Pre-AOS)",
"condition": "Self, Expansion < AOS",
"size": 70,
"fields": [...]
}
]
}
```
---
## Progress Summary
- **Incoming Packets**: 66 documented (including 16 extended 0xBF subpackets)
- **Outgoing Packets**: 79 documented
- **Total**: 145 packets
## Recently Added Files
- `incoming/extended.json` - 0xBF extended command subpackets (16 packets)
- `incoming/items.json` - Lift, Drop, Equip packets
- `incoming/player.json` - Attack, TextCommand, Skills, War mode, etc.
- `incoming/message.json` - ASCII/Unicode speech packets
- `incoming/mobile.json` - Secure trade, rename, profile
- `incoming/vendor.json` - Buy/sell responses
- `incoming/targeting.json` - Target response
- `outgoing/message.json` - ASCII/Unicode messages, localized messages
- `outgoing/player.json` - Stats, skills, weather, music, paperdoll
- `outgoing/container.json` - Container display, content, spellbook
- `outgoing/combat.json` - Swing, war mode, combatant
- `outgoing/effects.json` - Sound, particle effects, screen effects
- `outgoing/targeting.json` - Target request, multi target
- `outgoing/items.json` - World item (pre-SA)
- `outgoing/light.json` - Global/personal light levels
- `outgoing/damage.json` - Damage packets (new and old formats)