71c9adb0e9
Lua arguments are read the way the client reads them: - numeric strings go through the VM's own number coercion instead of Rust's parse, truncating through `_ftol` where the bytes do (SetGuildRecruitmentMode `0x4a008f`, SetWorldDetail `0x488e0a`, the compare-item and model verbs) - `debugstack` takes numeric-string levels, ports the level window's wrapping arithmetic, prints `(tail call): ?` below level 0, and joins leftover arguments top-down (`0x703760`) - SendAddonMessage returns first with no player object (`0x49f94b`) - the four sell-cursor verbs gate on targeting and repair mode before their arguments (`0x4fbab7`, `0x4fbac9`) - SetPortraitTexture checks the token after blanking; 13 unit predicates take any value, and three more check the token Each fix has a test that fails without it. Fixes #2501 Fixes #2502 Fixes #2527 Fixes #2529 Fixes #2530 Fixes #2532 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>