1.12.1's RepairAllItems (0x4fbfe0) calls 0x4fadb0, which resolves the open merchant's guid
(0xbddfa0) to its unit and tests UNIT_NPC_FLAGS bit 14, and returns at 0x4fbff0 before the purse
test when the bit is clear. The binding now queues the repair-all only when the merchant state's
can_repair is set, the value CanMerchantRepair reads, so a macro or addon at an ordinary vendor
sends no CMSG_REPAIR_ITEM and shows no "You don't have enough money.".
Verified live on the local LyraCore server (macOS build): at Brother Danil (npc_flags 4) main
sends 0x02a8 CMSG_REPAIR_ITEM and the server refuses it, or shows the purse refusal with an empty
purse; with this change neither happens (out trace live to 30 s). At Dermot Johns (0x4004) the
repair-all still goes out and repairs, and an empty purse still refuses. scripts/check.sh green
(benilla, benilla-app, benilla-ui); the new tests fail with the check removed.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>