Commit graph

631 commits

Author SHA1 Message Date
Kelsi
9aac975adb Fix vanilla Warden PAGE_B check size (29 bytes, not 24)
PAGE_A uses 24 bytes in vanilla (no addr+len), but PAGE_B always uses
29 bytes (with addr+len) regardless of expansion. Splitting the cases
fixes remaining unknown check type errors on Turtle WoW.
2026-02-14 01:43:40 -08:00
Kelsi
b003634564 Fix vanilla Warden check parsing and crypto reset
Vanilla PAGE_A/B checks are 24 bytes (no addr+len), PROC checks are
25 bytes (no second strIdx+offset), unlike WotLK's 29/30. Wrong sizes
caused incomplete responses with bad checksums, silently blocking
character creation on Turtle WoW.
2026-02-14 01:26:26 -08:00
Kelsi
c4962400c0 Fix character creation for expansion-filtered servers (Turtle WoW)
Filter races/classes in character creation screen by expansion profile
constraints, add 10s server response timeout, and reset Warden crypto
state on disconnect so reconnections use the correct session key.
2026-02-14 00:57:33 -08:00
Kelsi
7d115aaa70 Add per-expansion asset overlay system and fix CharSections DBC layout
Expansion overlays allow each expansion to supplement the base asset data
via an assetManifest field in expansion.json, loaded at priority 50 (below
HD packs). The asset extractor gains --reference-manifest for delta-only
extraction. Also fixes CharSections field indices (VariationIndex=4,
ColorIndex=5, Texture1=6) across all DBC layout references.
2026-02-14 00:00:26 -08:00
Kelsi
a618827925 Add separate draggable bag windows, fix dismount and player equipment
Bags are now individual draggable ImGui windows (backpack + each equipped
bag) with per-bag toggle from the bag bar. B key opens/closes all. A
settings toggle under Gameplay lets users switch back to the original
aggregate single-window mode. Window width adapts to bag item name length.

Fix dismount by clearing local mount state immediately (optimistic) instead
of waiting for server confirmation, and allow buff bar right-click dismount
regardless of the aura's buff flag.

Fix other players appearing naked by queuing them for auto-inspect when
the visible item field layout hasn't been detected yet.
2026-02-13 22:51:49 -08:00
Kelsi
e168a7cdd1 Fix vanilla spell casting and bag contents
Vanilla CMSG_CAST_SPELL target mask is uint16 (not uint32 like WotLK),
the extra 2 bytes were corrupting packets. Also implement full bag
content tracking: extract container slot GUIDs from CONTAINER update
objects, set proper bag sizes, and populate bag items in inventory
rebuild.
2026-02-13 22:14:34 -08:00
Kelsi
9f19b39451 Fix vanilla M2 walk animation timestamp normalization
Vanilla M2 tracks store absolute timestamps in the flat array (e.g.
1000-2000ms) but the renderer plays animTime from 0 to duration.
Normalize timestamps to 0-relative after slicing per-sequence ranges
so findKeyframeIndex matches correctly.
2026-02-13 21:43:14 -08:00
Kelsi
6fac60641b Fix vanilla M2 animations, movement packets, and DBC locale
- Parse vanilla M2 animation tracks (flat arrays with M2Range indices)
  instead of skipping them, fixing T-pose on all vanilla models
- Use C4Quaternion (float[4]) for vanilla bone rotations instead of
  CompressedQuat (int16[4]) which produced garbage transforms
- Fix vanilla M2 attachment struct size (48 bytes, not 40) so weapons
  attach to correct bones instead of model origin
- Route movement packets through expansion-specific packet parsers
  instead of hardcoded WotLK format, fixing server-side position sync
- Fix Spell.dbc field indices for classic/turtle (Name=120, Rank=129,
  IconID=117) - were pointing to Portuguese locale column (+7 offset)
- Change guild roster keybind from J to O (WoW default)
- Add guild opcodes for all expansions
2026-02-13 21:39:48 -08:00
Kelsi
9376fea2e6 Fix weapon attachments and inspect fallback 2026-02-13 20:26:55 -08:00
Kelsi
1119f48409 Fix movement animations and NPC baked textures 2026-02-13 20:19:33 -08:00
Kelsi
ba4b503269 Fix visible equipment item queries 2026-02-13 20:13:37 -08:00
Kelsi
506f64ad07 Show online player equipment 2026-02-13 20:10:19 -08:00
Kelsi
733f82c55d Fix name query parsing for Classic/TBC 2026-02-13 19:52:49 -08:00
Kelsi
b9911fbcac Auto-detect coinage and inventory fields 2026-02-13 19:47:49 -08:00
Kelsi
e4cd7433d7 Fix chat sender names via name queries 2026-02-13 19:42:42 -08:00
Kelsi
bcfc075e1e Fix Turtle/Classic parsing and online player textures 2026-02-13 19:40:54 -08:00
Kelsi
010243bbd9 add guild related opcodes 2026-02-13 19:17:24 -08:00
Kelsi
d9cbf1ffc8 Vanilla/Turtle WoW compatibility: fix UPDATE_OBJECT, chat, equipment, creatures
- Route SMSG_UPDATE_OBJECT through polymorphic parsers for correct
  vanilla format (uint8 updateFlags, 6 speeds vs WotLK uint16/9)
- Fix SMSG_DESTROY_OBJECT for vanilla (8 bytes, no isDeath field)
- Add MSG_MOVE_* handlers for other player movement relay
- Add ClassicPacketParsers::parseMessageChat with targetGuid read
  and monster-type name handling
- Resolve chat sender names from player name cache before display
- Fix CSV DBC field 0 always treated as numeric ID (fixes 16+ garbled
  Turtle CSVs including Map, AreaTable, Spell, CreatureDisplayInfo)
- Add CSV DBC validation: reject garbled CSVs (>80% zero IDs) and
  fall back to binary DBC files
- Fix ItemDisplayInfo texture component field index (14+ not 15+)
  for binary DBC with gender-aware suffix resolution
- Spawn other players as visible M2 models via creature callback
- Map name cache dedup prevents overwrites from duplicate CSV records
2026-02-13 18:59:09 -08:00
Kelsi
f136de101e Vanilla/Turtle WoW support: M2 loading, bone parsing, textures, auth
- Vanilla M2 bone struct (108 bytes) with 28-byte animation tracks
- Version-aware bone parsing (vanilla vs WotLK format detection)
- Fix CharSections.dbc field layout for vanilla (variation/color at 4-5)
- Remove broken CharSections.csv files (all fields marked as strings)
- Expansion data reload on profile switch (DBC cache clear, layout reload)
- Vanilla packet encryption (VanillaCrypt XOR-based header crypt)
- Extended character preview geoset range (0-99) for vanilla models
- DBC cache clear support in AssetManager
2026-02-13 16:53:28 -08:00
Kelsi
fb513f81a1 World auth: default WotLK region/battlegroup ids to 1 2026-02-13 01:57:03 -08:00
Kelsi
a05a5e39ff Auth: de-spam realm list requests in UI-driven flow 2026-02-13 01:54:15 -08:00
Kelsi
0086bd4c40 World auth: include realmId in AUTH_SESSION 2026-02-13 01:51:49 -08:00
Kelsi
4a30b450fb WorldSocket: parse buffered packets before handling FIN close 2026-02-13 01:47:56 -08:00
Kelsi
a9e2cee78c Auth: include CRC in legacy proof; extend Turtle integrity set 2026-02-13 01:41:59 -08:00
Kelsi
fb580f2a5a Add integrity hash support and SRP tuning options 2026-02-13 01:32:15 -08:00
Kelsi
3d29065046 Fail fast when auth TCP disconnects during authentication 2026-02-13 01:14:33 -08:00
Kelsi
c1b977f1c7 Drain auth socket reads to avoid dropping partial packets on close 2026-02-13 01:12:59 -08:00
Kelsi
07ef2543eb Use legacy LOGON_PROOF format for auth protocol < 8 2026-02-13 01:10:02 -08:00
Kelsi
231c8a2980 Handle short vanilla LOGON_PROOF success responses 2026-02-13 01:03:54 -08:00
Kelsi
d87ba314c1 Add authenticator opcode support + auth_probe tool 2026-02-13 00:55:36 -08:00
Kelsi
3a84fece7a Allow per-expansion login header fields + fix challenge FourCC encoding 2026-02-13 00:48:56 -08:00
Kelsi
113c3c4c96 Use SRP auth protocol v8 for classic/tbc/turtle servers 2026-02-13 00:45:56 -08:00
Kelsi
d2a2f82542 Restore legacy FourCC reversal in LOGON_CHALLENGE 2026-02-13 00:43:22 -08:00
Kelsi
dc21b08eff Fix PIN grid remap bitmask (support digits 8/9) 2026-02-13 00:41:02 -08:00
Kelsi
cf2b3e06b9 Fix LOGON_CHALLENGE FourCC fields (no byte-reversal) 2026-02-13 00:38:37 -08:00
Kelsi
eeb909e360 Fix expansion auth protocol versions + improve version mismatch errors 2026-02-13 00:36:46 -08:00
Kelsi
04d4b8e4a9 Improve 2FA/PIN flow: prefill + clearer failure 2026-02-13 00:33:03 -08:00
Kelsi
7c3a6ca40b Support PIN-required auth servers 2026-02-13 00:22:01 -08:00
Kelsi
203664af43 Add expansion DBC CSVs, Turtle support, and server-specific login 2026-02-13 00:10:01 -08:00
Kelsi
90a1aa8a92 Add multi-expansion support with data-driven protocol layer
Replace hardcoded WotLK protocol constants with a data-driven architecture
supporting Classic 1.12.1, TBC 2.4.3, and WotLK 3.3.5a. Each expansion
has JSON profiles for opcodes, update fields, and DBC layouts, plus C++
polymorphic packet parsers for binary format differences (movement flags,
speed fields, transport data, spline format, char enum layout).

Key components:
- ExpansionRegistry: scans Data/expansions/*/expansion.json at startup
- OpcodeTable: logical enum <-> wire values loaded from JSON
- UpdateFieldTable: field indices loaded from JSON per expansion
- DBCLayout: schema-driven DBC field lookups replacing magic numbers
- PacketParsers: WotLK/TBC/Classic parsers with correct flag positions
- Multi-manifest AssetManager: layered manifests with priority ordering
- HDPackManager: overlay texture packs with expansion compatibility
- Auth screen expansion picker replacing hardcoded version dropdown
2026-02-12 22:56:36 -08:00
Kelsi
4b24736113 Replace MPQ runtime with loose file asset system
Extract assets from MPQ archives into organized loose files indexed by
manifest.json, enabling fully parallel reads without StormLib serialization.
Add asset_extract and blp_convert tools, PNG texture override support.
2026-02-12 20:32:14 -08:00
Kelsi
5eb40e455d Bound MPQ archive lookup cache; remove always-on composite dumps; track texture cache entries 2026-02-12 16:29:36 -08:00
Kelsi
8cbbd3c6be Normalize texture cache keys to prevent duplicate GPU textures 2026-02-12 16:15:25 -08:00
Kelsi
6e033d72f1 Raise default AssetManager file cache cap to 32GB 2026-02-12 16:13:32 -08:00
Kelsi
245192f238 Clamp AssetManager file cache budget to avoid huge RAM usage 2026-02-12 16:12:10 -08:00
Kelsi
a911f00c08 Allow disabling lettered/numeric patch MPQs via env flags 2026-02-12 15:58:42 -08:00
Kelsi
3f789bda62 Cache MPQ file->archive lookups to prevent character select stalls 2026-02-12 15:51:17 -08:00
Kelsi
7d27719f29 Always notify TransportManager for server-marked transports 2026-02-12 15:45:53 -08:00
Kelsi
2859adcbd2 Load Patch-A..Z mpqs in MPQ manager 2026-02-12 15:44:11 -08:00
Kelsi
fd41989738 Infer and animate elevator transport paths 2026-02-12 15:38:39 -08:00