From 08cdd8234dc9e60137a4d9368c73c7aea86fca22 Mon Sep 17 00:00:00 2001 From: dannuic Date: Sat, 18 Apr 2026 00:08:18 -0600 Subject: [PATCH] Validated to OP_CastSpell -- still causes a spell to unmem after cast --- common/patches/tob.cpp | 3 +++ tob/opcodes.md | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/common/patches/tob.cpp b/common/patches/tob.cpp index 6522b2952..4b2a3dd1d 100644 --- a/common/patches/tob.cpp +++ b/common/patches/tob.cpp @@ -352,6 +352,7 @@ namespace TOB ENCODE(OP_CastSpell) { + // I don't think the client handles this at all, it only sends the cast packet ENCODE_LENGTH_EXACT(CastSpell_Struct); SETUP_DIRECT_ENCODE(CastSpell_Struct, structs::CastSpell_Struct); @@ -363,6 +364,7 @@ namespace TOB //OUT(inventoryslot); OUT(target_id); + LogNetcode("S->C OP_CastSpell {}", DumpPacketToString(__packet)); FINISH_ENCODE(); } @@ -3648,6 +3650,7 @@ namespace TOB IN(y_pos); IN(x_pos); IN(z_pos); + LogNetcode("C->S OP_CastSpell {}", DumpPacketToString(__packet)); FINISH_DIRECT_DECODE(); } diff --git a/tob/opcodes.md b/tob/opcodes.md index 3dbee363b..7e451637a 100644 --- a/tob/opcodes.md +++ b/tob/opcodes.md @@ -330,7 +330,7 @@ Below is a status list for the 450 opcodes we currently use on the server for th | `OP_LFPCommand` | 🔴 Not-Set | | | | `OP_LFPGetMatchesRequest` | 🔴 Not-Set | | | | `OP_LFPGetMatchesResponse` | 🔴 Not-Set | | | -| `OP_LinkedReuse` | 🟡 Unverified | | | +| `OP_LinkedReuse` | 🟢 Verified | | | | `OP_LoadSpellSet` | 🔴 Not-Set | | | | `OP_LocInfo` | 🔴 Not-Set | | | | `OP_LockoutTimerInfo` | 🔴 Not-Set | | | @@ -549,7 +549,7 @@ Below is a status list for the 450 opcodes we currently use on the server for th | `OP_Stamina` | 🟢 Verified | These values are 0-32k instead of 0-127 | | | `OP_Stun` | 🟡 Unverified | | | | `OP_Surname` | 🔴 Not-Set | | | -| `OP_SwapSpell` | 🟡 Unverified | | | +| `OP_SwapSpell` | 🟢 Verified | | | | `OP_SystemFingerprint` | 🔴 Not-Set | | | | `OP_TargetBuffs` | 🔴 Not-Set | | | | `OP_TargetCommand` | 🟡 Unverified | | |