Kelsi
7b03d5363b
feat: profession crafting improvements and combat sound fixes
...
- Suppress spell sounds for profession/tradeskill spells (crafting is silent)
- Add craft quantity UI to profession trainer: recipe selector, quantity
input, Create button, and Stop button for active queue
- Known recipes show Create button to cast directly from trainer window
- Craft queue auto-recasts on CREATE_ITEM completion, cancels on failure
- Fix missing combat sounds: player spell impacts on enemies, enemy spell
cast sounds targeting player, instant melee ability weapon sounds
2026-03-17 10:12:49 -07:00
Kelsi
8378eb9232
fix: correct sync Warden MODULE check returning 0x01 instead of 0x00
...
The sync path's MODULE handler was returning 0x01 (module found) for
unwanted cheat DLLs (WPESPY, TAMIA, PRXDRVPE, etc.) instead of 0x00
(not found). Since VMaNGOS compares the result as a boolean, returning
any non-zero value for a cheat module tells the server "this cheat DLL
is loaded," triggering Warden penalties that accumulate into a kick
after ~3-5 minutes.
Also adds ±4KB hint window search to searchCodePattern for faster
PAGE_A resolution without full brute-force, and restores the turtle
PAGE_A fallback (confirmed patterns are runtime-patched offsets not
present in the on-disk PE).
2026-03-17 07:19:37 -07:00
Kelsi
ad511dad5e
fix: correct KUSER_SHARED_DATA field offsets for Warden anticheat
...
Build / Build (arm64) (push) Waiting to run
Build / Build (x86-64) (push) Waiting to run
Build / Build (macOS arm64) (push) Waiting to run
Build / Build (windows-arm64) (push) Waiting to run
Build / Build (windows-x86-64) (push) Waiting to run
Security / CodeQL (C/C++) (push) Waiting to run
Security / Semgrep (push) Waiting to run
Security / Sanitizer Build (ASan/UBSan) (push) Waiting to run
Multiple fields were at wrong offsets causing MEM_CHECK comparison
failures against expected Windows 7 SP1 values. Key fixes:
- LargePageMinimum: 0x248→0x244
- NtProductType at 0x264 was 0, now 1 (VER_NT_WORKSTATION)
- ProductTypeIsValid at 0x268 was missing
- ProcessorFeatures at 0x274 was clobbered by misplaced NtProductType
- NumberOfPhysicalPages: 0x300→0x2E8
- ActiveConsoleId at 0x2D8 was 4, now 1
- Added SuiteMask, NXSupportPolicy, and other missing fields
2026-03-16 20:55:30 -07:00
Kelsi
6fd32ecdc6
fix: skip Warden HASH_RESULT on strict servers when no CR match
...
Sending a wrong hash to AzerothCore/WotLK servers triggers an
account ban. When no pre-computed challenge-response entry matches
the server seed, skip the response entirely so the server times out
with a kick (recoverable) instead of verifying a bad hash and
banning (unrecoverable). Turtle/Classic servers remain unchanged
as they only log Warden failures.
Also adds RX silence detection and fixes Turtle isTurtle flag
propagation in MEM_CHECK path.
2026-03-16 17:38:25 -07:00
Kelsi
a3279ea1ad
fix: async Warden PAGE_A/PAGE_B checks to prevent main-loop stalls
...
Move 5-second brute-force HMAC-SHA1 code pattern searches to a
background thread via std::async. The main loop now detects PAGE_A/B
checks, launches the response builder async, and drains the result
in update() — encrypting and sending on the main thread to keep
wardenCrypto_ RC4 state thread-safe.
Also adds Turtle WoW PE binary support (isTurtle flag, dedicated exe
search, runtime patches), searchCodePattern with result caching,
writeLE32 public API, and Warden scan entry verification.
2026-03-16 16:46:29 -07:00
Kelsi
f0a515ff9c
fix: stabilize classic/turtle world session handling
Build / Build (arm64) (push) Has been cancelled
Build / Build (x86-64) (push) Has been cancelled
Build / Build (macOS arm64) (push) Has been cancelled
Build / Build (windows-arm64) (push) Has been cancelled
Build / Build (windows-x86-64) (push) Has been cancelled
Security / CodeQL (C/C++) (push) Has been cancelled
Security / Semgrep (push) Has been cancelled
Security / Sanitizer Build (ASan/UBSan) (push) Has been cancelled
2026-03-15 06:13:36 -07:00
Kelsi
43ebae217c
fix: align turtle world packet parsing
Build / Build (arm64) (push) Waiting to run
Build / Build (x86-64) (push) Waiting to run
Build / Build (macOS arm64) (push) Waiting to run
Build / Build (windows-arm64) (push) Waiting to run
Build / Build (windows-x86-64) (push) Waiting to run
Security / CodeQL (C/C++) (push) Waiting to run
Security / Semgrep (push) Waiting to run
Security / Sanitizer Build (ASan/UBSan) (push) Waiting to run
2026-03-15 03:40:58 -07:00
Kelsi
6ede9a2968
refactor: derive turtle opcodes from classic
2026-03-15 02:55:05 -07:00
Kelsi
b0fafe5efa
fix: stabilize turtle world entry session handling
2026-03-15 01:21:23 -07:00
Kelsi
4dba20b757
fix: avoid unsigned subtraction checks in packet bounds
2026-03-14 22:27:42 -07:00
Kelsi
eea3784976
fix: harden turtle movement parsing and warden fallback
2026-03-14 22:18:28 -07:00
Kelsi
f44ef7b9ea
fix: optimize turtle monster move wrapped parsing
2026-03-14 22:01:26 -07:00
Kelsi
f07b730473
fix(combatlog): reject truncated resist logs
2026-03-14 21:52:03 -07:00
Kelsi
385ac1e66c
fix(combatlog): reject truncated instakill logs without spell id
2026-03-14 21:52:03 -07:00
Kelsi
90bc9118f9
fix(combatlog): validate packed GUID bounds in spell energize log
2026-03-14 21:52:03 -07:00
Kelsi
b24da8463c
fix(combatlog): avoid partial spell miss log entries on truncation
2026-03-14 21:52:03 -07:00
Kelsi
c90c8fb8cf
fix(combatlog): parse full spell miss target lists
2026-03-14 21:52:03 -07:00
Kelsi
a962422b12
fix(combatlog): map alternate immune2 spell miss value
2026-03-14 21:52:03 -07:00
Kelsi
753f4ef1be
fix(combatlog): map immune2 spell miss results correctly
2026-03-14 21:52:03 -07:00
Kelsi
5911b8eb01
fix(combatlog): show resisted amount from resist log packets
2026-03-14 21:52:03 -07:00
Kelsi
5575fc6f28
fix(combatlog): preserve unknown source for environmental entries
2026-03-14 21:52:03 -07:00
Kelsi
38210ec186
fix(gameplay): keep timeout animation stable on repeated presses and harden M2 elevator sync
2026-03-14 09:02:20 -07:00
Kelsi
2c32b72f95
feat(ui): show keyring in inventory
2026-03-14 08:42:25 -07:00
Kelsi
cebca9a882
fix(gameplay): stabilize run animation and clean ghost/death visuals
2026-03-14 08:27:32 -07:00
Kelsi
9cd52c4dd7
fix(loot): gate auto-loot sends per loot session
2026-03-14 07:31:15 -07:00
Kelsi
5fa5020af5
fix(mail): use attachment item guid for WotLK take item
2026-03-14 07:11:18 -07:00
Kelsi
5a10ae9df0
fix(trade): allow accept after peer accepts first
2026-03-14 07:02:52 -07:00
Kelsi
5b195781ad
fix(death): restore corpse reclaim and enforce ghost grayscale
2026-03-14 06:43:49 -07:00
Kelsi
a2f9ccc9b9
fix(vendor): detect repair NPC flag correctly
2026-03-14 05:39:00 -07:00
Kelsi
7e7ad325dc
fix(vendor): request list inventory for repair gossip
2026-03-14 05:31:17 -07:00
Kelsi
251ed7733b
fix(loot): send GAMEOBJ_REPORT_USE when supported
Build / Build (arm64) (push) Waiting to run
Build / Build (x86-64) (push) Waiting to run
Build / Build (macOS arm64) (push) Waiting to run
Build / Build (windows-arm64) (push) Waiting to run
Build / Build (windows-x86-64) (push) Waiting to run
Security / CodeQL (C/C++) (push) Waiting to run
Security / Semgrep (push) Waiting to run
Security / Sanitizer Build (ASan/UBSan) (push) Waiting to run
2026-03-14 04:47:34 -07:00
Kelsi
5a63d3799c
fix(loot): retry delayed loot for gameobject use
2026-03-14 04:41:46 -07:00
Kelsi
011a148105
fix(combatlog): validate packed damage shield GUIDs
2026-03-14 02:01:07 -07:00
Kelsi
f6d8c01779
fix(combatlog): validate packed spell miss GUIDs
2026-03-14 01:54:01 -07:00
Kelsi
b059bbcf89
fix(combatlog): parse classic spell damage shield GUIDs as packed
2026-03-14 01:47:06 -07:00
Kelsi
468880e2c8
fix(combatlog): validate packed resist log GUIDs
2026-03-14 01:39:53 -07:00
Kelsi
0968a11234
fix(combatlog): validate packed instakill GUIDs
2026-03-14 01:32:45 -07:00
Kelsi
a48f6d1044
fix(combatlog): parse classic immune log GUIDs as packed
2026-03-14 01:25:47 -07:00
Kelsi
0fc887a3d2
fix(combatlog): validate packed proc log GUIDs
2026-03-14 01:18:28 -07:00
Kelsi
dbdc45a8a9
fix(combatlog): validate packed dispel-family GUIDs
2026-03-14 01:10:43 -07:00
Kelsi
bd8c46fa49
fix(combatlog): parse classic dispel failed GUIDs as packed
2026-03-14 01:00:56 -07:00
Kelsi
1fa2cbc64e
fix(combatlog): parse classic dispel and spellsteal GUIDs as packed
2026-03-14 00:53:42 -07:00
Kelsi
fd8ea4e69e
fix(combatlog): parse classic proc log GUIDs as packed
2026-03-14 00:45:50 -07:00
Kelsi
8ba5ca5337
fix(combatlog): parse classic instakill log GUIDs as packed
2026-03-14 00:38:22 -07:00
Kelsi
9c3b5d17cf
fix(combatlog): parse classic resist log GUIDs as packed
2026-03-14 00:31:35 -07:00
Kelsi
ed5134d601
fix(combatlog): parse classic spelllogexecute GUIDs as packed
2026-03-14 00:24:21 -07:00
Kelsi
a147347393
fix(combattext): honor health leech multipliers
2026-03-14 00:16:28 -07:00
Kelsi
209f8db382
fix(combattext): honor power drain multipliers
2026-03-14 00:06:05 -07:00
Kelsi
64483a31d5
fix(combattext): show power drain separately from damage
2026-03-13 23:56:44 -07:00
Kelsi
e9d2c43191
fix(combatlog): validate classic spelllogexecute packed GUIDs
2026-03-13 23:47:57 -07:00