|
From: <xer...@us...> - 2026-07-16 19:05:25
|
Revision: 1665
http://sourceforge.net/p/seq/svn/1665
Author: xerxes00
Date: 2026-07-16 19:05:22 +0000 (Thu, 16 Jul 2026)
Log Message:
-----------
Update opcode maps for the July 14 EQLegends patch.
r1662 shipped the 7/7 maps by mistake (code was current, maps were
not). zoneopcodes.xml: all zone ids re-verified on the 7/14 rotation,
now with priority/priorityNote annotations for patch-day triage
(ignored by ShowEQ; scheme documented in the file header and README).
worldopcodes.xml: the ids needed for world-session tracking are
re-verified on 7/14; entries still dated 07/07/26 have not been
re-checked since that patch. DTD updated for the new attributes.
Modified Paths:
--------------
showeq/branches/showeqlegends/README
showeq/branches/showeqlegends/conf/seqopcodes.dtd
showeq/branches/showeqlegends/conf/worldopcodes.xml
showeq/branches/showeqlegends/conf/zoneopcodes.xml
Modified: showeq/branches/showeqlegends/README
===================================================================
--- showeq/branches/showeqlegends/README 2026-07-16 11:02:58 UTC (rev 1664)
+++ showeq/branches/showeqlegends/README 2026-07-16 19:05:22 UTC (rev 1665)
@@ -15,6 +15,24 @@
Please read the ChangeLog and NEWS files for more information.
+EQ LEGENDS OPCODE MAP
+---------------------
+On this branch, conf/zoneopcodes.xml and conf/worldopcodes.xml are the
+EQ Legends opcode maps; server patches rotate the ids, so these files
+are what changes on patch day. Each zone opcode carries a hunt-priority
+annotation (ignored by ShowEQ at runtime):
+
+ priority="-1" dead - never hunt (no handler in the code, packet
+ proven absent/superseded on Legends, or an unmapped
+ catalog name inherited from live)
+ priority="0" mapped and harmless but nothing consumes it
+ priority="1"-"10" how important the opcode is to re-find after a
+ patch (10 = ShowEQ is broken without it)
+
+A <priorityNote> element (sibling of <comment>) holds the reason or
+status behind the priority; <comment> holds wire format knowledge.
+See the header comment in conf/zoneopcodes.xml.
+
INSTALLATION
------------
See the file 'INSTALL' for installation and configuration information.
Modified: showeq/branches/showeqlegends/conf/seqopcodes.dtd
===================================================================
--- showeq/branches/showeqlegends/conf/seqopcodes.dtd 2026-07-16 11:02:58 UTC (rev 1664)
+++ showeq/branches/showeqlegends/conf/seqopcodes.dtd 2026-07-16 19:05:22 UTC (rev 1665)
@@ -2,14 +2,18 @@
<!ATTLIST seqopcodes
version CDATA #IMPLIED>
-<!ELEMENT opcode (comment|payload)* >
+<!ELEMENT opcode (comment|priorityNote|payload)* >
<!ATTLIST opcode
id CDATA #REQUIRED
name CDATA ""
+ priority CDATA ""
+ implicitlen CDATA ""
updated CDATA "">
<!ELEMENT comment (#PCDATA)>
+<!ELEMENT priorityNote (#PCDATA)>
+
<!ELEMENT payload EMPTY>
<!ATTLIST payload
dir CDATA "both"
Modified: showeq/branches/showeqlegends/conf/worldopcodes.xml
===================================================================
--- showeq/branches/showeqlegends/conf/worldopcodes.xml 2026-07-16 11:02:58 UTC (rev 1664)
+++ showeq/branches/showeqlegends/conf/worldopcodes.xml 2026-07-16 19:05:22 UTC (rev 1665)
@@ -11,7 +11,7 @@
</opcode>
-->
- <opcode id="bc01" name="OP_GuildList" updated="07/07/26">
+ <opcode id="2efb" name="OP_GuildList" updated="07/14/26">
<comment>old GuildListCode</comment>
<payload dir="server" typename="worldGuildListStruct" sizechecktype="none"/>
</opcode>
@@ -21,7 +21,7 @@
</opcode>
<!-- Not necessary for SEQ to run but here to name packets in logs -->
- <opcode id="7b6a" name="OP_SendLoginInfo" updated="07/07/26">
+ <opcode id="204f" name="OP_SendLoginInfo" updated="07/14/26">
<comment>Client starting world session by asking for login information</comment>
</opcode>
<opcode id="b537" name="OP_LogServer" updated="07/07/26">
@@ -30,13 +30,13 @@
<opcode id="b8cc" name="OP_ApproveWorld" updated="07/07/26">
<comment></comment>
</opcode>
- <opcode id="26bf" name="OP_EnterWorld" updated="07/07/26">
+ <opcode id="0935" name="OP_EnterWorld" updated="07/14/26">
<comment>Server approval for client to enter world</comment>
</opcode>
<opcode id="6bcf" name="OP_ExpansionInfo" updated="07/07/26">
<comment>Which expansions user has</comment>
</opcode>
- <opcode id="84f6" name="OP_SendCharInfo" updated="07/07/26">
+ <opcode id="7fc9" name="OP_SendCharInfo" updated="07/14/26">
<comment>Send all chars visible @ char select</comment>
</opcode>
<opcode id="2de1" name="OP_SendSpellChecksum" updated="07/07/26">
@@ -51,13 +51,13 @@
<opcode id="a958" name="OP_SendSkillCapsChecksum" updated="07/07/26">
<comment>Third client verification packet</comment>
</opcode>
- <opcode id="bb67" name="OP_SetChatServer" updated="07/07/26">
+ <opcode id="8eaa" name="OP_SetChatServer" updated="07/14/26">
<comment>Chatserver? IP,Port,servername.Charname,password(?)</comment>
</opcode>
<opcode id="f22b" name="OP_SetChatServer2" updated="07/07/26">
<comment>Chatserver? IP,Port,servername.Charname,password(?)</comment>
</opcode>
- <opcode id="35d4" name="OP_ZoneServerInfo" updated="07/07/26">
+ <opcode id="0861" name="OP_ZoneServerInfo" updated="07/14/26">
<comment>old ZoneServerInfo</comment>
</opcode>
<opcode id="fc46" name="OP_WorldComplete" updated="07/07/26">
@@ -66,8 +66,9 @@
<opcode id="48f9" name="OP_DeleteCharacter" updated="07/07/26">
<comment>Delete character @ char select</comment>
</opcode>
- <opcode id="0634" name="OP_CharacterCreate" updated="07/07/26">
- <comment>Create character @ char select</comment>
+ <opcode id="08d0" name="OP_CharacterCreate" updated="07/14/26">
+ <comment>07/14 rotation; char name + appearance</comment>
+ <payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="a24a" name="OP_ApproveName" updated="07/07/26">
<comment>Approving new character name @ char creation</comment>
Modified: showeq/branches/showeqlegends/conf/zoneopcodes.xml
===================================================================
--- showeq/branches/showeqlegends/conf/zoneopcodes.xml 2026-07-16 11:02:58 UTC (rev 1664)
+++ showeq/branches/showeqlegends/conf/zoneopcodes.xml 2026-07-16 19:05:22 UTC (rev 1665)
@@ -2,1044 +2,1248 @@
<!DOCTYPE seqopcodes SYSTEM "seqopcodes.dtd">
<seqopcodes>
+ <!-- priority / priorityNote are ignored by ShowEQ at load; they exist
+ for patch-day tooling and humans.
+ priority -1 dead - never hunt (no handler, or proven absent /
+ superseded on Legends, or an unmapped catalog name
+ inherited from live)
+ priority 0 mapped and harmless but nothing consumes it
+ priority 1..10 hunt priority after a patch rotates ids
+ (10 = ShowEQ is broken without it)
+ priorityNote holds a short status/reason; the comment holds only
+ the wire format (size / offsets). Decoder wiring and verification
+ detail live in the source, not here.
+ -->
+
<!-- Critical opcodes used directly by ShowEQ -->
- <opcode id="62f0" name="OP_PlayerProfile" updated="07/07/26">
- <comment>07/07/26 rotation, wire-verified 42485B</comment>
+ <opcode id="6a88" name="OP_PlayerProfile" priority="10" updated="07/14/26">
+ <comment>CharProfileCode</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="4606" name="OP_ZoneEntry" updated="07/07/26">
- <comment>07/07/26 rotation, wire-verified both dirs, c2s 92B</comment>
+ <opcode id="144f" name="OP_ZoneEntry" priority="10" updated="07/14/26">
+ <comment>ZoneEntryCode</comment>
<payload dir="client" typename="ClientZoneEntryStruct" sizechecktype="match"/>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="34c7" name="OP_TimeOfDay" updated="07/07/26">
- <comment>07/07 rotation; 8B, stock layout byte-identical (u16 year 3172 + u16 pad); wire-verified across 6 sessions, advances at EQ game rate with correct day rollover</comment>
+ <opcode id="0b7f" name="OP_TimeOfDay" priority="3" updated="07/14/26">
+ <comment>TimeOfDayCode</comment>
<payload dir="server" typename="timeOfDayStruct" sizechecktype="match"/>
</opcode>
- <opcode id="1dbf" name="OP_NewZone" updated="07/07/26">
- <comment>07/07/26 rotation, wire-verified 336B</comment>
+ <opcode id="65dd" name="OP_NewZone" priority="10" updated="07/14/26">
+ <comment>NewZoneCode</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="71ca" name="OP_SpawnDoor" updated="07/07/26">
- <comment>07/07/26 rotation, wire-verified door defs; payload matched to code registration (modulus) to clear connect2 warning</comment>
+ <opcode id="75dd" name="OP_SpawnDoor" priority="9" updated="07/14/26">
+ <comment>DoorSpawnsCode</comment>
<payload dir="server" typename="doorStruct" sizechecktype="modulus"/>
</opcode>
- <opcode id="0def" name="OP_GroundSpawn" updated="07/07/26">
- <comment>07/07/26 rotation, wire-verified IT defs</comment>
+ <opcode id="7e02" name="OP_GroundSpawn" priority="9" updated="07/14/26">
+ <comment>MakeDropCode</comment>
<payload dir="server" typename="makeDropStruct" sizechecktype="none"/>
</opcode>
- <opcode id="069f" name="OP_SendZonePoints" updated="07/07/26">
- <comment>07/07 rotation; u32 count + count*32B rows (stock 24B zonePoint fields + 8 zero bytes) + 32B ff trailer; wire-verified befallen/felwithea vs known zone lines and neighbor zone ids</comment>
+ <opcode id="5926" name="OP_SendZonePoints" priority="5" updated="07/14/26">
+ <comment>Coords in a zone that will port you to another zone</comment>
<payload dir="server" typename="zonePointsStruct" sizechecktype="none"/>
</opcode>
- <opcode id="42d1" name="OP_AAExpUpdate" updated="07/07/26">
- <comment>EQL 12B: u32 AA per-point progress permille*1000 (in-game-calibrated against the AA bar), u32 unassigned AA, u32 varying suffix. Was cross-wired to 6801 (which is regular exp)</comment>
+ <opcode id="7830" name="OP_AAExpUpdate" priority="4" updated="07/14/26">
+ <comment>Receiving AA experience. Also when percent to AA changes.</comment>
<payload dir="server" typename="altExpUpdateStruct" sizechecktype="match"/>
</opcode>
- <opcode id="6801" name="OP_ExpUpdate" updated="07/07/26">
- <comment>EQL 16B: u32 exp permille*1000 (in-game-calibrated against the exp bar), u32 0, u32 unassigned AA, u32 0. Was cross-wired to 42d1 (which is the AA bar)</comment>
+ <opcode id="53b7" name="OP_ExpUpdate" priority="4" updated="07/14/26">
+ <comment>ExpUpdateCode</comment>
<payload dir="server" typename="expUpdateStruct" sizechecktype="match"/>
</opcode>
- <opcode id="46df" name="OP_GuildMOTD" updated="07/07/26">
- <comment>07/07 rotation; stock guildMOTDStruct byte-perfect (target@8, sender@72, message@140; 656B = header + msg buffer); wire-verified vs known MOTD text at zone-in</comment>
+ <opcode id="5924" name="OP_GuildMOTD" priority="2" updated="07/14/26">
+ <comment>GuildMOTD</comment>
<payload dir="server" typename="guildMOTDStruct" sizechecktype="none"/>
</opcode>
- <opcode id="7171" name="OP_ClientUpdate" updated="07/07/26">
- <comment>07/08/26 server payload sizecheck none->match to satisfy connect2 (playerPosUpdate was unwired; other PCs stuck at safe point)</comment>
+ <opcode id="5188" name="OP_ClientUpdate" priority="10" updated="07/14/26">
+ <comment>Position updates</comment>
+ <payload dir="server" typename="uint8_t" sizechecktype="none"/>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
- <payload dir="server" typename="playerPosUpdateEQLStruct" sizechecktype="match"/>
</opcode>
- <opcode id="67e0" name="OP_MobUpdate" updated="07/07/26">
- <comment>07/07/26 rotation, wire-verified 14B</comment>
+ <opcode id="3348" name="OP_MobUpdate" priority="10" updated="07/14/26">
+ <comment>MobUpdateCode</comment>
<payload dir="both" typename="spawnPositionUpdate" sizechecktype="none"/>
</opcode>
- <opcode id="59a1" name="OP_DeleteSpawn" updated="07/07/26">
- <comment>07/07/26 rotation, wire-verified 4B, death trio</comment>
+ <opcode id="0e2c" name="OP_DeleteSpawn" priority="10" updated="07/14/26">
+ <comment>DeleteSpawnCode</comment>
<payload dir="both" typename="deleteSpawnStruct" sizechecktype="match"/>
</opcode>
- <opcode id="71ad" name="OP_RemoveSpawn" updated="07/07/26">
- <comment>07/07/26 rotation, wire-verified 5B s2c + 4B c2s</comment>
+ <opcode id="483c" name="OP_RemoveSpawn" priority="10" updated="07/14/26">
+ <comment>Remove spawn from zone</comment>
<payload dir="both" typename="removeSpawnStruct" sizechecktype="none"/>
</opcode>
- <opcode id="5c62" name="OP_WearChange" updated="07/07/26">
- <comment>07/09/26 EQL wire-verified via marked equip/unequip capture: 32B {u32 spawnId, u32 wearSlot(7=pri,8=sec), u32 material, 20B zero}; client-sent for self, server-broadcast for others, preceded by 2575/2a0a value-0x40 trigger. Stock handler is a wear no-op (subcommand 17 HP only) so the 27B match never firing = stock-equivalent; id mapped for log identification</comment>
+ <opcode id="2874" name="OP_WearChange" priority="2" updated="07/14/26">
+ <priorityNote>stock handler no-op; id mapped for log id only</priorityNote>
+ <comment>SpawnUpdateCode</comment>
<payload dir="both" typename="SpawnUpdateStruct" sizechecktype="match"/>
</opcode>
- <opcode id="1bdc" name="OP_SpawnAppearance" updated="07/07/26">
- <comment>EQL u32-widened stock struct, fixed 24B (3748/3748 pcap-library packets); type 6=position (110 sit/100 stand/111 duck), 13=anon, 36=LFG, 22=tick; decoded by SpawnShell::spawnEventEQL</comment>
+ <opcode id="4170" name="OP_SpawnAppearance" priority="10" updated="07/14/26">
+ <comment>SpawnAppearanceCode</comment>
<payload dir="both" typename="spawnEventEQLStruct" sizechecktype="match"/>
</opcode>
- <opcode id="ffff" name="OP_Stamina" updated="07/19/23">
+ <opcode id="3b0c" name="OP_Stamina" priority="4" updated="07/14/26">
<comment>Server updating on hunger/thirst</comment>
<payload dir="server" typename="staminaStruct" sizechecktype="match"/>
</opcode>
- <opcode id="2735" name="OP_HPUpdate" updated="07/07/26">
- <comment>EQL stat-sync channel, fully decoded: u32 spawnId, u8 flags (bit0 wide-i64/narrow-percent, bit1 HP, bit2 mana, bit3 endurance, bits4-5 reason), per-stat {i64 cur,max} or u8 percent, optional trailing u32; flags 0x31 = 6s keepalive. Decoder SpawnShell::spawnStatEQL feeds spawn HP cur/max and player mana (stock manaChanged); endurance consumed (no stock display); food/water never ride this channel</comment>
+ <opcode id="a5c0" name="OP_HPUpdate" priority="10" updated="07/14/26">
+ <comment>NpcHpUpdateCode Update HP % of a PC or NPC</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="51ed" name="OP_GuildMemberUpdate" updated="07/07/26">
- <comment>07/07 rotation; stock struct + u32 rank inserted @8 (name->12, 88B total unchanged); wire-verified across 6 promote/demote clicks (rank 7..2)</comment>
+ <opcode id="0717" name="OP_GuildMemberUpdate" priority="3" updated="07/14/26">
+ <comment>Info regarding guild members</comment>
<payload dir="server" typename="GuildMemberUpdate" sizechecktype="match"/>
</opcode>
- <opcode id="04d1" name="OP_ClickObject" updated="07/07/26">
- <comment>07/07 rotation; stock remDropStruct byte-perfect (u16 dropId matches ground spawn id, u16 spawnId=player); wire-verified drop+pickup</comment>
- <payload dir="both" typename="remDropStruct" sizechecktype="match"/>
+ <opcode id="597e" name="OP_ClickObject" priority="9" updated="07/14/26">
+ <comment>Items dropped on the ground</comment>
+ <payload dir="server" typename="remDropStruct" sizechecktype="match"/>
</opcode>
- <opcode id="73de" name="OP_Action" updated="07/07/26">
- <comment>EQL 0x73de = stock actionStruct (64B; spell@4 verified vs known cast 434, type@56=231 spell-action on all 1040 corpus records); 88B alt form = actionAltStruct</comment>
+ <opcode id="76e5" name="OP_Action" priority="7" updated="07/14/26">
+ <comment>Spells cast etc</comment>
<payload dir="both" typename="actionStruct" sizechecktype="match"/>
<payload dir="both" typename="actionAltStruct" sizechecktype="match"/>
</opcode>
- <opcode id="1734" name="OP_Action2" updated="07/07/26">
- <comment>EQL per-hit combat: tgt u16, src u16, dmg@8, spell@20 (ffffffff=melee), type u32@24; wire-verified vs 8 known hits + Envenomed Breath 434</comment>
+ <opcode id="5446" name="OP_Action2" priority="7" updated="07/14/26">
+ <comment>Combat actions i.e. bash, kick etc</comment>
<payload dir="both" typename="action2Struct" sizechecktype="match"/>
</opcode>
- <opcode id="4212" name="OP_Consider" updated="07/07/26">
- <comment>fixed 24B both dirs (98/98 pcap-library packets); response: selfId, targetId, faction, level; struct trimmed 32->24 to restore size check</comment>
+ <opcode id="1f81" name="OP_Consider" priority="9" updated="07/14/26">
+ <comment>ConsiderCode</comment>
<payload dir="both" typename="considerStruct" sizechecktype="match"/>
</opcode>
- <opcode id="2867" name="OP_TargetMouse" updated="07/07/26">
- <comment>07/07/26 rotation, wire-verified 4B</comment>
+ <opcode id="3ef7" name="OP_TargetMouse" priority="9" updated="07/14/26">
+ <comment>Targeting a person - old ClientTargetCode</comment>
<payload dir="both" typename="clientTargetStruct" sizechecktype="match"/>
</opcode>
- <opcode id="ffff" name="OP_SpawnRename" updated="07/19/23">
+ <opcode id="ffff" name="OP_SpawnRename" priority="6" updated="07/19/23">
<comment>Spawns getting renamed after initial NewSpawn</comment>
<payload dir="server" typename="spawnRenameStruct" sizechecktype="match"/>
</opcode>
- <opcode id="ffff" name="OP_Illusion" updated="07/19/23">
+ <opcode id="2e7d" name="OP_Illusion" priority="8" updated="07/14/26">
<comment>Spawn being illusioned (changing forms)</comment>
<payload dir="both" typename="spawnIllusionStruct" sizechecktype="match"/>
</opcode>
- <opcode id="ffff" name="OP_Shroud" updated="07/19/23">
- <comment>Server putting players into shroud form</comment>
- <payload dir="server" typename="spawnShroudSelf" sizechecktype="none"/>
- </opcode>
- <opcode id="76d3" name="OP_ZoneChange" updated="07/07/26">
- <comment>EQL c2s zone-change request, fixed 484B (32/32 pcap-library packets), carries position but no zone id; server never sends it (zone change = session teardown + new session). Handler only sets m_zoning</comment>
+ <opcode id="4ca8" name="OP_ZoneChange" priority="10" updated="07/14/26">
+ <priorityNote>server never sends it; handler only sets m_zoning</priorityNote>
+ <comment>old ZoneChangeCode</comment>
<payload dir="both" typename="zoneChangeEQLStruct" sizechecktype="match"/>
</opcode>
- <opcode id="6e69" name="OP_GroupInvite" updated="07/07/26">
- <comment>EQL group invite: fixed 168B (invitee@0, inviter@64); struct padded 152->168 to restore size check; wire-verified /say-marked invite</comment>
+ <opcode id="7869" name="OP_GroupInvite" priority="4" updated="07/14/26">
+ <comment>You invite someone while ungrouped or get invited by someone ungrouped</comment>
<payload dir="both" typename="groupInviteStruct" sizechecktype="match"/>
</opcode>
- <opcode id="ffff" name="OP_GroupInvite2" updated="02/17/21">
- <payload dir="both" typename="groupInviteStruct" sizechecktype="none"/>
- <comment>You're inviting someone and you are grouped or get invited by a group</comment>
- </opcode>
- <opcode id="ffff" name="OP_GroupCancelInvite" updated="02/17/21">
- <payload dir="both" typename="groupDeclineStruct" sizechecktype="match"/>
+ <opcode id="0ff2" name="OP_GroupCancelInvite" priority="4" updated="07/14/26">
+ <priorityNote>single sample; reason byte unverified</priorityNote>
<comment>Declining to join a group</comment>
+ <payload dir="both" typename="groupDeclineStruct" sizechecktype="none"/>
</opcode>
- <opcode id="1512" name="OP_GroupFollow" updated="07/07/26">
- <comment>EQL group member-add: invitee name@64 matches stock groupFollowStruct; fixed 168B (8/8 pcap-library packets), struct padded 152->168; stock addGroupMember + groupFollow</comment>
+ <opcode id="41d7" name="OP_GroupFollow" priority="4" updated="07/14/26">
+ <comment>You join a group or player joins group</comment>
<payload dir="server" typename="groupFollowStruct" sizechecktype="match"/>
</opcode>
- <opcode id="ffff" name="OP_GroupFollow2" updated="02/17/21">
- <payload dir="server" typename="groupFollowStruct" sizechecktype="match"/>
- <comment>Player joins your group</comment>
- </opcode>
- <opcode id="397d" name="OP_GroupUpdate" updated="07/07/26">
- <comment>EQL full group roster: u32 groupId, u32 count, leader name@8, then count 44B member records from @18 (name NUL-term); resent at zone-in; count=1=solo; decoded by GroupMgr::groupRosterEQL</comment>
+ <opcode id="d305" name="OP_GroupUpdate" priority="6" updated="07/14/26">
+ <comment>Group updates</comment>
+ <comment>168B group roster refresh (fires at join/disband, member name@64)</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="09aa" name="OP_GroupDisband" updated="07/07/26">
- <comment>EQL group member-remove/leave: membername@64 matches stock groupDisbandStruct; fixed 168B (4/4 pcap-library packets), struct padded 152->168; stock removeGroupMember + groupDisband</comment>
+ <opcode id="227d" name="OP_GroupDisband" priority="4" updated="07/14/26">
+ <comment>You disband from group</comment>
<payload dir="server" typename="groupDisbandStruct" sizechecktype="match"/>
</opcode>
- <opcode id="ffff" name="OP_GroupDisband2" updated="02/17/21">
- <comment>Other disbands from group</comment>
- <payload dir="server" typename="groupDisbandStruct" sizechecktype="match"/>
- </opcode>
- <opcode id="ffff" name="OP_GroupLeader" updated="02/17/21">
+ <opcode id="4546" name="OP_GroupLeader" priority="4" updated="07/14/26">
+ <priorityNote>single sample; unconfirmed on /makeleader</priorityNote>
<comment>Group leader change</comment>
- <payload dir="server" typename="groupLeaderChangeStruct" sizechecktype="match"/>
+ <payload dir="server" typename="groupLeaderChangeStruct" sizechecktype="none"/>
</opcode>
- <opcode id="3ada" name="OP_Buff" updated="07/07/26">
- <comment>compact buff apply/fade record; decoded by SpellShell::buffChange.
- No size check: the shared handler takes both the 16B (live) and 24B
- (Legends, this id) forms, so there is no single size to match. Not the
- stock 168B buffStruct.</comment>
+ <opcode id="6c3c" name="OP_Buff" priority="6" updated="07/14/26">
+ <priorityNote>client dir = memorize/forget, consumed silently</priorityNote>
+ <comment>old BuffDropCode</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
+ <payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="5591" name="OP_BeginCast" updated="07/07/26">
- <comment>07/07 rotation; stock beginCastStruct (spellId u16@0, spawnId u16@4=caster); 19B EQL vs 11B stock; wire-verified vs known casts</comment>
+ <opcode id="6cbd" name="OP_BeginCast" priority="5" updated="07/14/26">
+ <comment>BeginCastCode</comment>
<payload dir="both" typename="beginCastStruct" sizechecktype="none"/>
</opcode>
- <opcode id="10b5" name="OP_CastSpell" updated="07/07/26">
- <comment>07/07 rotation; stock startCastStruct (slot@0, spellId@4, targetId@18) padded 39->40 to the fixed EQL size (76/76 pcap-library packets)</comment>
+ <opcode id="7a2f" name="OP_CastSpell" priority="5" updated="07/14/26">
+ <comment>StartCastCode</comment>
<payload dir="both" typename="startCastStruct" sizechecktype="match"/>
</opcode>
- <opcode id="0fa0" name="OP_SwapSpell" updated="07/07/26">
- <comment>EQL 07/07 rotation; stock tradeSpellBookSlotsStruct (slot1 u32@0, slot2 u32@4) 8B exact; wire-verified swapping spellbook slots 6/7</comment>
+ <opcode id="6f46" name="OP_SwapSpell" priority="3" updated="07/14/26">
+ <comment>TradeSpellBookSlotsCode</comment>
<payload dir="both" typename="tradeSpellBookSlotsStruct" sizechecktype="match"/>
</opcode>
- <opcode id="ffff" name="OP_MemorizeSpell" updated="07/19/23">
- <comment>MemSpellCode</comment>
- <payload dir="both" typename="memSpellStruct" sizechecktype="match"/>
- </opcode>
- <opcode id="17af" name="OP_InspectAnswer" updated="07/07/26">
- <comment>07/07 rotation; stock inspectDataStruct byte-perfect incl. 1956B total size (3/3 captured inspects); size check restored</comment>
+ <opcode id="6a04" name="OP_InspectAnswer" priority="3" updated="07/14/26">
+ <comment>InspectDataCode</comment>
<payload dir="server" typename="inspectDataStruct" sizechecktype="match"/>
</opcode>
- <opcode id="1cde" name="OP_Emote" updated="07/07/26">
- <comment>07/09/26 EQL: wire-verified via marked capture; 4B header + emote text, 1028B fixed buffer so SZC_None</comment>
+ <opcode id="61a5" name="OP_Emote" priority="4" updated="07/14/26">
+ <comment>EmoteTextCode</comment>
<payload dir="both" typename="emoteTextStruct" sizechecktype="none"/>
</opcode>
- <opcode id="50a7" name="OP_SimpleMessage" updated="07/07/26">
- <comment>07/12/26 rotation, wire-verified</comment>
+ <opcode id="7b92" name="OP_SimpleMessage" priority="4" updated="07/14/26">
+ <comment>SimpleMessageCode</comment>
<payload dir="server" typename="simpleMessageStruct" sizechecktype="match"/>
</opcode>
- <opcode id="3c0a" name="OP_FormattedMessage" updated="07/07/26">
- <comment>07/07/26 rotation, wire-verified caret args</comment>
+ <opcode id="15d0" name="OP_FormattedMessage" priority="4" updated="07/14/26">
+ <comment>FormattedMessageCode i.e. pet dismissed etc</comment>
<payload dir="server" typename="formattedMessageStruct" sizechecktype="none"/>
</opcode>
- <opcode id="55eb" name="OP_CommonMessage" updated="07/07/26">
- <comment>07/07/26 rotation, wire-verified /say both dirs</comment>
+ <opcode id="7015" name="OP_CommonMessage" priority="9" updated="07/14/26">
+ <comment>ChannelMessageCode i.e. /tell /ooc /shout etc</comment>
<payload dir="both" typename="channelMessageStruct" sizechecktype="none"/>
</opcode>
- <opcode id="22e1" name="OP_SpecialMesg" updated="07/07/26">
- <comment>07/07/26 rotation, wire-verified NPC speech</comment>
+ <opcode id="2189" name="OP_SpecialMesg" priority="4" updated="07/14/26">
+ <comment>Communicate textual info to client including hail responses etc</comment>
<payload dir="server" typename="specialMessageStruct" sizechecktype="none"/>
</opcode>
- <opcode id="08cb" name="OP_RandomReq" updated="07/07/26">
- <comment>EQL 07/07 rotation; stock randomReqStruct with 8B AND 9B wire forms observed (trailing byte optional) so no size check; wire-verified /random</comment>
+ <opcode id="5e9e" name="OP_RandomReq" priority="2" updated="07/14/26">
+ <comment>RandomReqCode</comment>
<payload dir="client" typename="randomReqStruct" sizechecktype="none"/>
</opcode>
- <opcode id="6589" name="OP_RandomReply" updated="07/07/26">
- <comment>EQL 07/07 rotation; stock randomStruct (bottom,top,result,name[64]) 76B exact; wire-verified /random 1 100 = 63</comment>
+ <opcode id="77bd" name="OP_RandomReply" priority="2" updated="07/14/26">
+ <comment>RandomCode</comment>
<payload dir="server" typename="randomStruct" sizechecktype="match"/>
</opcode>
- <opcode id="ffff" name="OP_ConsentResponse" updated="02/17/21">
+ <opcode id="2265" name="OP_ConsentResponse" priority="3" updated="07/14/26">
<comment>Server replying with consent information after /consent</comment>
<payload dir="server" typename="consentResponseStruct" sizechecktype="match"/>
</opcode>
- <opcode id="ffff" name="OP_DenyResponse" updated="02/17/21">
+ <opcode id="05fc" name="OP_DenyResponse" priority="3" updated="07/14/26">
<comment>Server replying with deny information after /deny</comment>
<payload dir="server" typename="consentResponseStruct" sizechecktype="match"/>
</opcode>
- <opcode id="ffff" name="OP_ManaChange" updated="07/19/23">
+ <opcode id="2255" name="OP_ManaChange" priority="5" updated="07/14/26">
<comment>Mana change. Bards send this up with no size. Casters receive this for mana updates.</comment>
<payload dir="server" typename="manaDecrementStruct" sizechecktype="match"/>
- <payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_BazaarSearchRequest" updated="07/19/23">
- <comment>Bazaar search request </comment>
- <payload dir="client" typename="bazaarSearchQueryStruct" sizechecktype="none"/>
- </opcode>
- <opcode id="ffff" name="OP_BazaarSearchResponse" updated="07/19/23">
- <comment>Bazaar search Response - Struct incorrect </comment>
- <payload dir="server" typename="bazaarSearchResponseStruct" sizechecktype="modulus"/>
- </opcode>
- <opcode id="ffff" name="OP_MoneyOnCorpse" updated="07/19/23">
+ <opcode id="ffff" name="OP_MoneyOnCorpse" priority="4" updated="07/19/23">
<comment>MoneyOnCorpseCode</comment>
<payload dir="server" typename="moneyOnCorpseStruct" sizechecktype="match"/>
</opcode>
- <opcode id="6982" name="OP_SkillUpdate" updated="07/07/26">
- <comment>07/07 rotation; stock skillIncStruct byte-perfect (12B: skillId u32, value i32, +4); wire-verified Abjuration(4)=150</comment>
+ <opcode id="3873" name="OP_SkillUpdate" priority="5" updated="07/14/26">
+ <priorityNote>prior id 0dc7 was the zone-in bulk dump (OOB crash); bounds guard kept</priorityNote>
+ <comment>Skill up code</comment>
<payload dir="server" typename="skillIncStruct" sizechecktype="match"/>
</opcode>
- <opcode id="ffff" name="OP_LevelUpdate" updated="07/19/23">
+ <opcode id="0d68" name="OP_LevelUpdate" priority="8" updated="07/14/26">
+ <priorityNote>single sample</priorityNote>
<comment>LevelUpUpdateCode</comment>
- <payload dir="server" typename="levelUpUpdateStruct" sizechecktype="match"/>
+ <payload dir="server" typename="levelUpUpdateStruct" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_DzSwitchInfo" updated="07/19/23">
- <comment>Expedition compass etc</comment>
- <payload dir="server" typename="dzSwitchInfo" sizechecktype="none"/>
+ <opcode id="ffff" name="OP_CorpseLocResponse" priority="2" updated="12/12/12">
+ <comment>old CorpseLocCode:</comment>
+ <payload dir="server" typename="corpseLocStruct" sizechecktype="match"/>
</opcode>
- <opcode id="ffff" name="OP_DzInfo" updated="07/19/23">
- <comment>Expedition Information</comment>
- <payload dir="server" typename="dzInfo" sizechecktype="match"/>
+
+ <!-- Not necessary for SEQ to run but here to name packets in logs. -->
+ <opcode id="2ac8" name="OP_Logout" priority="3" updated="07/14/26">
+ <priorityNote>handler wired DIR_Client only</priorityNote>
+ <comment>Camp/logout handshake</comment>
+ <payload dir="both" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_EnvDamage" updated="02/17/21">
+ <opcode id="729e" name="OP_ExpandedGuildInfo" priority="0" updated="07/14/26">
+ <priorityNote>noHandler</priorityNote>
+ <comment>Guild ranks and other misc guild data - Variable length</comment>
+ <payload dir="server" typename="uint8_t" sizechecktype="none"/>
+ </opcode>
+ <opcode id="4ecf" name="OP_Animation" priority="0" updated="07/14/26">
+ <priorityNote>noHandler</priorityNote>
+ <comment>Combat animation, emote animations etc - 4 bytes</comment>
+ <payload dir="both" typename="uint8_t" sizechecktype="none"/>
+ </opcode>
+ <opcode id="0cdf" name="OP_InspectRequest" priority="0" updated="07/14/26">
+ <priorityNote>noHandler</priorityNote>
+ <comment>InspectRequestCode - 8 bytes</comment>
+ <payload dir="client" typename="uint8_t" sizechecktype="none"/>
+ </opcode>
+ <opcode id="7d46" name="OP_LootMessageEQL" priority="4" updated="07/14/26">
+ <comment>Loot-and-sell message</comment>
+ <payload dir="server" typename="uint8_t" sizechecktype="none"/>
+ </opcode>
+ <opcode id="4d77" name="OP_MoneyUpdateEQL" priority="4" updated="07/14/26">
+ <comment>Money totals</comment>
+ <payload dir="server" typename="uint8_t" sizechecktype="none"/>
+ </opcode>
+ <opcode id="3959" name="OP_GuildsInZoneList" priority="8" updated="07/14/26">
+ <comment>Listing of guild names present in the current zone. Generally seen on zoning</comment>
+ <payload dir="server" typename="guildsInZoneListStruct" sizechecktype="none"/>
+ </opcode>
+ <opcode id="6c4c" name="OP_NewGuildInZone" priority="8" updated="07/14/26">
+ <comment>An additional guild name has appeared in the current zone. Seen when a guilded player enters the current zone</comment>
+ <payload dir="server" typename="newGuildInZoneStruct" sizechecktype="none"/>
+ </opcode>
+ <opcode id="1a0b" name="OP_Find" priority="0" updated="07/14/26">
+ <priorityNote>noHandler</priorityNote>
+ <comment>Find window data - variable length, 24 min</comment>
+ <payload dir="server" typename="uint8_t" sizechecktype="none"/>
+ </opcode>
+
+ <!-- Below are used to help make sense of the logs when searching for opcodes
+ Using these marks unknown opcodes in logs for easier reading -->
+
+ <!-- Below are unverified -->
+ <opcode id="31ae" name="OP_SendAATable" priority="5" updated="07/14/26">
+ <comment>AA definition table</comment>
+ <payload dir="server" typename="uint8_t" sizechecktype="none"/>
+ </opcode>
+
+ <opcode id="1ce7" name="OP_HideCorpse" priority="0" updated="07/14/26">
+ <priorityNote>noHandler</priorityNote>
+ <comment>/hidecorpse request</comment>
+ <payload dir="client" typename="uint8_t" sizechecktype="none"/>
+ </opcode>
+ <opcode id="4fb6" name="OP_SelfPosEQL" priority="10" updated="07/14/26">
+ <comment>Client self-position</comment>
+ <payload dir="client" typename="uint8_t" sizechecktype="none"/>
+ </opcode>
+ <opcode id="021e" name="OP_NpcMoveUpdate" priority="10" updated="07/14/26">
+ <comment>Position updates</comment>
+ <payload dir="server" typename="uint8_t" sizechecktype="none"/>
+ </opcode>
+ <opcode id="36bf" name="OP_Death" priority="7" updated="07/14/26">
+ <priorityNote>also fires on corpse decay</priorityNote>
+ <comment>old NewCorpseCode</comment>
+ <payload dir="server" typename="newCorpseStruct" sizechecktype="match"/>
+ </opcode>
+ <opcode id="7d1c" name="OP_DeathEQL" priority="9" updated="07/14/26">
+ <comment>Death/combat subcode channel</comment>
+ <payload dir="both" typename="deathRecordEQLStruct" sizechecktype="none"/>
+ </opcode>
+ <opcode id="591d" name="OP_GuildMemberList" priority="3" updated="07/14/26">
+ <comment>List of guild members - Variable length</comment>
+ <payload dir="server" typename="uint8_t" sizechecktype="none"/>
+ </opcode>
+ <opcode id="73e2" name="OP_BuffList" priority="6" updated="07/14/26">
+ <comment>Per-spawn buff list</comment>
+ <payload dir="server" typename="uint8_t" sizechecktype="none"/>
+ </opcode>
+ <opcode id="631c" name="OP_LoadoutSwapEQL" priority="3" updated="07/14/26">
+ <comment>Loadout-swap self refresh</comment>
+ <payload dir="server" typename="uint8_t" sizechecktype="none"/>
+ </opcode>
+ <opcode id="6768" name="OP_LootDrops" priority="4" updated="07/14/26">
+ <comment>Personal loot list</comment>
+ <payload dir="server" typename="uint8_t" sizechecktype="none"/>
+ </opcode>
+ <opcode id="713a" name="OP_BuffList2" priority="6" updated="07/14/26">
+ <comment>Per-spawn buff list (channel 2)</comment>
+ <payload dir="server" typename="uint8_t" sizechecktype="none"/>
+ </opcode>
+ <opcode id="5c47" name="OP_BuffList3" priority="6" updated="07/14/26">
+ <comment>Per-spawn buff list (channel 3)</comment>
+ <payload dir="server" typename="uint8_t" sizechecktype="none"/>
+ </opcode>
+ <opcode id="18ba" name="OP_DzSwitchInfoEQL" priority="3" updated="07/14/26">
+ <priorityNote>wired but untested on Legends</priorityNote>
+ <comment>Dynamic-zone switch info</comment>
+ <payload dir="server" typename="uint8_t" sizechecktype="none"/>
+ </opcode>
+
+ <!-- ==================================================================
+ priority="-1" TIER: dead entries - never hunt these on patch day.
+ Unmapped catalog names inherited from live (id ffff, no handler),
+ opcodes proven absent or superseded on Legends (see priorityNote),
+ and the pre-2005 historical catalog. Kept for name/reference value.
+ ================================================================== -->
+ <opcode id="ffff" name="OP_BazaarSearchRequest" priority="-1" updated="07/19/23">
+ <priorityNote>noHandler</priorityNote>
+ <comment>Bazaar search request</comment>
+ <payload dir="client" typename="bazaarSearchQueryStruct" sizechecktype="none"/>
+ </opcode>
+ <opcode id="ffff" name="OP_BazaarSearchResponse" priority="-1" updated="07/19/23">
+ <priorityNote>noHandler</priorityNote>
+ <comment>Bazaar search Response - Struct incorrect</comment>
+ <payload dir="server" typename="bazaarSearchResponseStruct" sizechecktype="modulus"/>
+ </opcode>
+ <opcode id="ffff" name="OP_EnvDamage" priority="-1" updated="02/17/21">
+ <priorityNote>noHandler</priorityNote>
<comment>Environmental Damage</comment>
<payload dir="client" typename="environmentDamageStruct" sizechecktype="match"/>
</opcode>
- <opcode id="ffff" name="OP_SetRunMode" updated="07/19/23">
+ <opcode id="ffff" name="OP_SetRunMode" priority="-1" updated="07/19/23">
+ <priorityNote>noHandler</priorityNote>
<comment>old cRunToggleCode</comment>
<payload dir="client" typename="cRunToggleStruct" sizechecktype="match"/>
</opcode>
- <opcode id="ffff" name="OP_Trader" updated="07/19/23">
+ <opcode id="ffff" name="OP_Trader" priority="-1" updated="07/19/23">
+ <priorityNote>noHandler</priorityNote>
<comment>PC's turning trader on and off</comment>
<payload dir="server" typename="bazaarTraderRequest" sizechecktype="match"/>
</opcode>
- <opcode id="ffff" name="OP_ItemLinkResponse" updated="06/19/19">
+ <opcode id="ffff" name="OP_ItemLinkResponse" priority="-1" updated="06/19/19">
+ <priorityNote>noHandler</priorityNote>
<comment>ItemInfoCode</comment>
<payload dir="server" typename="itemInfoStruct" sizechecktype="none"/>
<payload dir="client" typename="itemInfoReqStruct" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_BuffFadeMsg" updated="11/20/15">
- <comment>SpellFadeCode</comment>
- <payload dir="both" typename="spellFadedStruct" sizechecktype="none"/>
- </opcode>
- <opcode id="ffff" name="OP_CorpseLocResponse" updated="12/12/12">
- <comment>old CorpseLocCode:</comment>
- <payload dir="server" typename="corpseLocStruct" sizechecktype="match"/>
- </opcode>
- <opcode id="ffff" name="OP_ItemPacket" updated="11/28/12">
+ <opcode id="ffff" name="OP_ItemPacket" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>ItemCode</comment>
<payload dir="server" typename="itemPacketStruct" sizechecktype="none"/>
</opcode>
-
- <!-- Not necessary for SEQ to run but here to name packets in logs. -->
- <opcode id="ffff" name="OP_LeaderExpUpdate" updated="12/11/13">
+ <opcode id="ffff" name="OP_LeaderExpUpdate" priority="-1" updated="12/11/13">
+ <priorityNote>noHandler</priorityNote>
<comment>Leadership AA Exp Update</comment>
<payload dir="server" typename="leadExpUpdateStruct" sizechecktype="match"/>
</opcode>
- <opcode id="ffff" name="OP_MovementHistory" updated="06/18/14">
+ <opcode id="ffff" name="OP_MovementHistory" priority="-1" updated="06/18/14">
+ <priorityNote>noHandler</priorityNote>
<comment>Movement history for speed/movement hack detection</comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_Logout" updated="12/12/12">
- <comment></comment>
- <payload dir="server" typename="uint8_t" sizechecktype="match"/>
- </opcode>
- <opcode id="ffff" name="OP_UIUpdate" updated="05/21/14">
+ <opcode id="ffff" name="OP_UIUpdate" priority="-1" updated="05/21/14">
+ <priorityNote>noHandler</priorityNote>
<comment>Seems to be sent to handle a variety of UI updates - Variable length</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_GroupMemberList" updated="01/16/13">
+ <opcode id="ffff" name="OP_GroupMemberList" priority="-1" updated="01/16/13">
+ <priorityNote>noHandler</priorityNote>
<comment>List of group members - Variable length</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_ManaUpdate" updated="07/19/23">
+ <opcode id="ffff" name="OP_ManaUpdate" priority="-1" updated="07/19/23">
+ <priorityNote>noHandler</priorityNote>
<comment>Mana Update opcode - 10 bytes</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_EndUpdate" updated="07/19/23">
+ <opcode id="ffff" name="OP_EndUpdate" priority="-1" updated="07/19/23">
+ <priorityNote>noHandler</priorityNote>
<comment>Endurance Update opcode - 10 bytes</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_Marketplace" updated="11/28/12">
+ <opcode id="ffff" name="OP_Marketplace" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>Marketplace data - Guessing variable length 11444 bytes as of 11/28/12</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_MarketplaceSelect" updated="11/28/12">
+ <opcode id="ffff" name="OP_MarketplaceSelect" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>Sent when highlighting an item in Marketplace - 80 bytes</comment>
<payload dir="both" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_DzMembers" updated="11/28/12">
+ <opcode id="ffff" name="OP_DzMembers" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>Expedition Members - Variable length</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_Campfire" updated="11/28/12">
+ <opcode id="ffff" name="OP_Campfire" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>Fellowship campfire information - 1076 bytes</comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_SelectCampfire" updated="01/16/13">
+ <opcode id="ffff" name="OP_SelectCampfire" priority="-1" updated="01/16/13">
+ <priorityNote>noHandler</priorityNote>
<comment>Fellowship campfire Choices - Guessing variable length</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_Claims" updated="11/28/12">
+ <opcode id="ffff" name="OP_Claims" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>Contents of claims window. /claim then refresh to capture packet - Guessing variable length</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_VoiceChat" updated="11/20/15">
+ <opcode id="ffff" name="OP_VoiceChat" priority="-1" updated="11/20/15">
+ <priorityNote>noHandler</priorityNote>
<comment>Voice chat server info - Variable length (Data sent when joining group,raid etc)</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_PollQuestions" updated="11/20/15">
+ <opcode id="ffff" name="OP_PollQuestions" priority="-1" updated="11/20/15">
+ <priorityNote>noHandler</priorityNote>
<comment>SOE in-game player poll questions - Variable length</comment>
<payload dir="both" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_PollResponses" updated="11/20/15">
+ <opcode id="ffff" name="OP_PollResponses" priority="-1" updated="11/20/15">
+ <priorityNote>noHandler</priorityNote>
<comment>Poll response choices - Variable length</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_ShroudProgression" updated="11/20/15">
+ <opcode id="ffff" name="OP_ShroudProgression" priority="-1" updated="11/20/15">
+ <priorityNote>noHandler</priorityNote>
<comment>Unlocked shrouds - 293 bytes</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_ShroudTemplates" updated="10/23/12">
+ <opcode id="ffff" name="OP_ShroudTemplates" priority="-1" updated="10/23/12">
+ <priorityNote>noHandler</priorityNote>
<comment>Shroud templates to choose from on shroud NPC - 18983 bytes</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_Fellowship" updated="03/13/19">
+ <opcode id="ffff" name="OP_Fellowship" priority="-1" updated="03/13/19">
+ <priorityNote>noHandler</priorityNote>
<comment>Fellowship information - 2576 bytes</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="3aac" name="OP_ExpandedGuildInfo" updated="07/07/26">
- <comment>07/07 rotation; guild ranks/misc data channel (subtyped: 192B self-status w/ rank title + MOTD, 104/352/4184B rank-and-permission blobs at zone-in); not consumed</comment>
- <payload dir="server" typename="uint8_t" sizechecktype="none"/>
- </opcode>
- <opcode id="ffff" name="OP_GuildBank" updated="11/20/15">
+ <opcode id="ffff" name="OP_GuildBank" priority="-1" updated="11/20/15">
+ <priorityNote>noHandler</priorityNote>
<comment>Guild bank contents - Variable length</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_OpenTradeskillContainer" updated="11/28/12">
+ <opcode id="ffff" name="OP_OpenTradeskillContainer" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>Opens forge, kiln etc - 92 Bytes</comment>
<payload dir="both" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_TradeskillRecipes" updated="11/28/12">
+ <opcode id="ffff" name="OP_TradeskillRecipes" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>Learned recipes - 84 Bytes</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_TradeSkillCombine" updated="11/28/12">
+ <opcode id="ffff" name="OP_TradeSkillCombine" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>Tradeskill combine using new tradeskill window - 40 Bytes</comment>
<payload dir="both" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_TradeSkillResult" updated="11/28/12">
+ <opcode id="ffff" name="OP_TradeSkillResult" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>Packets sent when tradeskill combine successful equals # of ingredients used in combine?- 12 Bytes</comment>
<payload dir="both" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_TradeSkillCombineOld" updated="11/28/12">
+ <opcode id="ffff" name="OP_TradeSkillCombineOld" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>Tradeskill combine using old tradeskill window - 24 Bytes</comment>
<payload dir="both" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_ItemPlayerPacket" updated="11/20/15">
+ <opcode id="ffff" name="OP_ItemPlayerPacket" priority="-1" updated="11/20/15">
+ <priorityNote>noHandler</priorityNote>
<comment>Inventory/bank items coming over during zone - Variable length</comment>
<payload dir="both" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_TaskDescription" updated="11/20/15">
+ <opcode id="ffff" name="OP_TaskDescription" priority="-1" updated="11/20/15">
+ <priorityNote>noHandler</priorityNote>
<comment>Task descriptions coming down for task window - Variable length</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_TaskActivity" updated="11/20/15">
+ <opcode id="ffff" name="OP_TaskActivity" priority="-1" updated="11/20/15">
+ <priorityNote>noHandler</priorityNote>
<comment>Task activity descriptions coming down for task window - Variable length</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_CompletedTasks" updated="11/20/15">
+ <opcode id="ffff" name="OP_CompletedTasks" priority="-1" updated="11/20/15">
+ <priorityNote>noHandler</priorityNote>
<comment>Task history for task window - Variable length</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_CustomTitles" updated="11/20/15">
+ <opcode id="ffff" name="OP_CustomTitles" priority="-1" updated="11/20/15">
+ <priorityNote>noHandler</priorityNote>
<comment>List of available titles - 1520 bytes</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="1293" name="OP_Animation" updated="07/07/26">
- <comment>EQL 0x1293 4B combat/emote animation tick (u16 spawnId + u8 + u8); community-corroborated</comment>
- <payload dir="both" typename="uint8_t" sizechecktype="none"/>
- </opcode>
- <opcode id="ffff" name="OP_WhoAllRequest" updated="11/28/12">
+ <opcode id="ffff" name="OP_WhoAllRequest" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>WhoAllReqCode - 156 bytes</comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_WhoAllResponse" updated="11/28/12">
+ <opcode id="ffff" name="OP_WhoAllResponse" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>WhoAllOutputCode - Variable length</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="2cc0" name="OP_InspectRequest" updated="07/07/26">
- <comment>07/09/26 EQL wire-verified via marked inspects: 8B {u32 targetId, u32 selfId}; no stock consumer - identification-only</comment>
- <payload dir="client" typename="uint8_t" sizechecktype="none"/>
- </opcode>
- <opcode id="ffff" name="OP_GetGuildMOTD" updated="11/28/12">
+ <opcode id="ffff" name="OP_GetGuildMOTD" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>Request guildMOTD - 648 Bytes</comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_TradeRequest" updated="11/28/12">
+ <opcode id="ffff" name="OP_TradeRequest" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>You request trade session - 8 bytes</comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_TradeDeny" updated="11/28/12">
+ <opcode id="ffff" name="OP_TradeDeny" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>Target not ready to trade - 12 bytes</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_TradeRequestAck" updated="11/28/12">
+ <opcode id="ffff" name="OP_TradeRequestAck" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>Trade request recipient is acknowledging they are able to trade - 8 bytes</comment>
<payload dir="both" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_CancelTrade" updated="11/28/12">
+ <opcode id="ffff" name="OP_CancelTrade" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>Cancel a trade window - 8 bytes</comment>
<payload dir="both" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_FinishTrade" updated="11/28/12">
+ <opcode id="ffff" name="OP_FinishTrade" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>Trade is over - 12 bytes</comment>
<payload dir="both" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_TradeCoins" updated="11/28/12">
+ <opcode id="ffff" name="OP_TradeCoins" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>You put coins put in a trade window - 20 bytes</comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_TradeCoins2" updated="11/28/12">
+ <opcode id="ffff" name="OP_TradeCoins2" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>Someone else puts coins put in your trade window - 12 bytes</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_TradeAcceptClick" updated="11/28/12">
+ <opcode id="ffff" name="OP_TradeAcceptClick" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>One side clicks Accept on the trade 8 bytes</comment>
<payload dir="both" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_ItemLinkClick" updated="11/28/12">
+ <opcode id="ffff" name="OP_ItemLinkClick" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>Click on itemlinks - 52 bytes</comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_LootRequest" updated="11/28/12">
+ <opcode id="ffff" name="OP_LootRequest" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>LootCorpseCode - 4 bytes</comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="32f7" name="OP_LootMessageEQL" updated="07/07/26">
- <comment>EQL loot-and-sell notification: u32 formatId (286) + preformatted text with inline item link; wire-verified</comment>
- <payload dir="server" typename="uint8_t" sizechecktype="none"/>
- </opcode>
- <opcode id="5a29" name="OP_LootDrops" updated="07/07/26">
- <comment>EQL personal loot list: [hdr][u32 corpseId@6][u32 count@10][corpse name NUL][per-item fields + clean NUL item names]; wire-verified</comment>
- <payload dir="server" typename="uint8_t" sizechecktype="none"/>
- </opcode>
- <opcode id="5203" name="OP_MoneyUpdateEQL" updated="07/07/26">
- <comment>EQL live money totals: 16B [u32 plat][u32 gold][u32 silver][u32 copper]; wire-verified</comment>
- <payload dir="server" typename="uint8_t" sizechecktype="none"/>
- </opcode>
- <opcode id="ffff" name="OP_LootItem" updated="11/28/12">
+ <opcode id="ffff" name="OP_LootItem" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>Loot item from corpse - 20 bytes</comment>
<payload dir="both" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_EndLootRequest" updated="11/28/12">
+ <opcode id="ffff" name="OP_EndLootRequest" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>DoneLootingCode - 4 bytes</comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_Track" updated="11/28/12">
+ <opcode id="ffff" name="OP_Track" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>Tracking data - Variable length</comment>
<payload dir="both" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_AutoAttack" updated="11/28/12">
+ <opcode id="ffff" name="OP_AutoAttack" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>Attack on/off - 4 bytes</comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_AutoAttack2" updated="11/28/12">
+ <opcode id="ffff" name="OP_AutoAttack2" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>Attack on/off appears to be same as OP_AutoAttack - 4 bytes</comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="ffff" name="OP_ClickDoor" updated="11/28/12">
+ <opcode id="ffff" name="OP_ClickDoor" priority="-1" updated="11/28/12">
+ <priorityNote>noHandler</priorityNote>
<comment>DoorOpenCode click request from ...
[truncated message content] |