Commit Graph
3195 Commits
Author SHA1 Message Date
luis 888a881d4d Core/PacketIO: Use std::span instead of pointer to vector in SMSG_MOVE_UPDATE_TELEPORT
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
2026-08-18 00:20:32 -03:00
luis 048df54b78 Core/PacketIO: Fix packet structure for SMSG_AUCTION_LIST_ITEMS_RESULT and SMSG_PARTY_UPDATE 2026-08-17 23:31:38 -03:00
luis 38ca44b243 Core/PacketIO: Rename a few unknown fields 2026-08-17 23:30:13 -03:00
luis f9a7d81fe9 fix build 2026-08-17 23:15:54 -03:00
luis 251ddc579d shop fixes 2026-08-17 23:13:44 -03:00
luis 95e7640d5e more spell work
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
2026-08-17 20:47:44 -03:00
luis c216caa636 spell fixes 2026-08-17 20:42:23 -03:00
luis 304d37542a fix spell 2026-08-17 20:36:07 -03:00
luis eb35e36089 Core/Misc: Minor formatting fixes 2026-08-17 20:26:16 -03:00
luis ec0dc6149d Core/AuctionHouse: Implement some missing packet fields 2026-08-17 19:44:20 -03:00
luis 4e54de694c fix spells 2026-08-17 19:38:22 -03:00
luis 25ae3d89e0 update spells 2026-08-17 17:58:34 -03:00
luis 27c39ed576 typo 2026-08-17 16:19:53 -03:00
luis fea6fdb31d prev 2026-08-17 15:39:13 -03:00
luis 335c7bb8e5 Core/Players: Remove ForceDontShowChoicesAsList from playerchoice table (not a static value) and rename it in packets 2026-08-17 15:21:44 -03:00
luis 871e5d1afe spell fix 2026-08-17 00:30:25 -03:00
Céfiro_Caecias bca391a273 DB/Hotfixes: Item Sparse Rework With Thordekk Tool 2026-08-16 19:17:17 -03:00
Céfiro_Caecias a3c1ee2b6d DB/Hotfixes: Item Sparse Clean 2026-08-16 14:05:49 -03:00
luis eca25b0284 typo 2026-08-16 05:57:03 -03:00
luis b845948c2f fix spell for 12.0.7
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
2026-08-16 02:45:17 -03:00
luis bc288d6b89 ManagedWorldStateBuff.db2 2026-08-16 02:24:53 -03:00
luis 66dde1cab3 core warn fix 2026-08-16 02:04:08 -03:00
luis 1a82c1f5e4 great-vault: write WeeklyRewardsPeriodSinceOrigin (was never set)
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
2026-08-15 22:18:14 -03:00
luis ab6ee82524 Shop: do not lose a class trial to the race it is created in 2026-08-15 22:14:23 -03:00
luis 74702df0c0 Commerce: let the glue screen reach the checkout and the token answers 2026-08-15 22:10:51 -03:00
luis c818475b79 Core/Chat: Extend ChatFlags to uint32 2026-08-15 21:48:38 -03:00
luis ca109b9fe1 Core/PacketIO: Added util to skip packet fields 2026-08-15 21:46:53 -03:00
luis fe0028d0d2 Shop: spend a boost entitlement on a character from the selection screen 2026-08-15 21:38:14 -03:00
luis f212322bce Shop: give a boosted character its level, its kit and its glue-screen look 2026-08-15 20:23:20 -03:00
Thordekk 1637e21d6f Add character boost configuration options 2026-08-15 20:20:47 -03:00
luis 73c23cf760 Shop: the wire for a character boost 2026-08-15 20:16:11 -03:00
luis b2e314be66 Shop: tell the client when a purchase has actually been delivered
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s
2026-08-15 19:55:16 -03:00
luis cc01605138 typo 2026-08-15 19:43:27 -03:00
Thordekk 842380ce75 Shop: default the purchase confirmation ON, because the client cannot finish a purchase without it 2026-08-15 19:43:06 -03:00
luis d705354a51 Commerce: tell the client which shop products this account already owns 2026-08-15 19:41:43 -03:00
luis f8a8de3b61 ll of this existed ONLY on integration/all-systems, which is a test assembly, not storage - it is
rebuilt from the feature branches, so anything living there alone is effectively unsaved. This puts
the work on the golden source where it belongs.

What lands here:

1. THE 94-RECORD CATALOG WRITER. The writer parsed only the first 9 product records; it now decodes
   the whole message - 94 products, 116 deliverables, 21 groups, 97 shop entries, 0 bytes remainder -
   with a byte-exact round trip verified over 12 captures across 3 client builds, plus a mutation
   test (fields rewritten to DIFFERENT lengths) and a splice test. The old ceiling was
   FRAME_AFTER_BLOCKA = 18 standing in for DisplayInfo presence bits; product 9 (Argi, id 108) is the
   first with hasFileDataID = 0, which shifts everything by 4 bytes.
   It also corrects three field mappings that were reading the wrong data entirely: ProductID at
   record+81 is really DisplayInfo.fileDataID (card artwork), Flags at record+85 is
   DisplayInfo.modelSceneID, and the header is 24 bytes / 6 u32, not 28 / 7.

2. THE PURCHASE FIX. SMSG_BATTLE_PAY_PURCHASE_UPDATE has no leading Result field; we were writing
   one, so the client read our always-zero Result as the record count and parsed ZERO purchase
   records. That silently broke every purchase: with confirmation on, the status-9 record never
   reached the client so no prompt appeared and nothing was charged; with it off, the goods arrived
   but the UI hung on "Connecting". Its sibling GET_PURCHASE_LIST_RESPONSE genuinely does have a
   leading Result - the two share a record type but not a header.

3. THE OWNERSHIP FIX. The catalog blob is a capture from a real retail account and carried that
   account's ownership state, which we shipped back verbatim: Product.Eligibility == 2 (Owned) and
   Deliverable.AlreadyOwns == 1 on 21 deliverables, affecting 12 products. Both are now cleared -
   clearing only Eligibility restores the Buy button but PurchaseProduct still never sends the CMSG.

4. NOT overwriting Product.Flags with our admin DisplayFlags. Product.Flags is a separate unreflected
   enum whose bits 1/3 drive buyableHere; writing our value (0 for all 66 rows) over it would have
   made every slot-pinned product unpurchasable. Display flags go to DisplayInfo.Flags, which is what
   sharedData.flags actually reads.
   Enum.BattlepayDisplayFlags is now fully recovered (12 values, registrar RVA 0x13EF840).

5. VAS status queries - CMSG_UPDATE_VAS_PURCHASE_STATES and CMSG_VAS_GET_SERVICE_STATUS, which every
   client sends at character select and which were dropped by STATUS_IGNORED without even a log line.
2026-08-15 18:48:26 -03:00
Thordekk 6118bb9e19 Define Shop.PlaceholderName in configuration
Add placeholder name for unavailable shop products
2026-08-15 18:34:04 -03:00
luis 02497014a9 feat(token): config-gated deferral of the token trade market (TK-7) 2026-08-15 18:19:32 -03:00
Thordekk 3504d603ad Add WoWToken.Market.Enabled configuration
Added configuration for WoW Token market enabling.
2026-08-15 18:11:56 -03:00
luis 46f35b9d31 WowToken: answer the commerce/token queries with real account state (P0) 2026-08-15 17:54:37 -03:00
luis e60c5d5e99 World States: put the realm's rotating world states on the wire 2026-08-15 16:59:58 -03:00
luis 1108dcb0a8 fix(garrison): read four CMSG bodies the way the 68275 client writes them 2026-08-15 16:22:15 -03:00
luis 7b980bd61d fix(garrison): correct two wire layouts a field-list audit could not catch 2026-08-15 16:20:45 -03:00
luis f12a3314d6 fix packets and add new commands 2026-08-15 16:18:38 -03:00
luis 9f6d0832a4 feat(garrison): sniff-confirmed login prologue, and five SMSG wire corrections 2026-08-15 16:04:19 -03:00
luis 60c1733832 Garrison: keep spell-driven vitality restore free (SRV-G2 follow-up) 2026-08-15 16:00:59 -03:00
luis 1a4cb00fae Garrison: make mission reward grant idempotent across a crash (SRV-G4) 2026-08-15 15:58:02 -03:00
luis b148727ee4 Garrison: fix offered-mission StartTime sentinel (SNF-G-C) 2026-08-15 15:56:24 -03:00
luis 1c9f0f12cd Garrison: force-complete must pin a guaranteed success (SRV-G5) 2026-08-15 15:54:50 -03:00
luis 7b23d1d580 Garrison: charge currency for follower rush-heal (SRV-G2) 2026-08-15 15:54:08 -03:00