Skip to content

Prevent blocked distance checks in reopened party and raid menus - #1982

Merged
EllesmereGaming merged 1 commit into
EllesmereGaming:mainfrom
dfrisone:fix/party-unitpopup-interact-taint
Sep 7, 2026
Merged

Prevent blocked distance checks in reopened party and raid menus#1982
EllesmereGaming merged 1 commit into
EllesmereGaming:mainfrom
dfrisone:fix/party-unitpopup-interact-taint

Conversation

@dfrisone

@dfrisone dfrisone commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

What does this PR do?

Prevents the remaining range-gated entries in EUI's reopened party/raid player menu from evaluating CheckInteractDistance under tainted execution.

The classifier fallback can reopen a player menu from addon Lua. Blizzard's enabled predicates for Trade, Duel, Pet Battle Duel, and Compare Achievements call CheckInteractDistance, which can produce ADDON_ACTION_BLOCKED. Extend the existing disabled-entry list to grey out those four actions only in that fallback menu, replacing their enabled predicates before menu initialization. Ordinary menus retain their actions and distance checks.

This addresses a menu-error path consistent with NameeR's v9.0.7 report. The separate symptom of remaining stuck in a raid after leaving has not been reproduced or established as caused by this error; this PR does not claim to fix that state.

How was it tested?

  • Reviewed Blizzard's current unit-menu entry definitions, enabled predicate, menu modifier ordering, and boolean SetEnabled handling in the local interface export.
  • Local Lua harness using the actual EUI modifier and Blizzard enabled predicate reproduced a blocked distance call before the change and passed afterward. The harness simulates the protected-call failure; it does not reproduce WoW's taint engine.
  • Verified fallback behavior, ordinary menus, nonmatching units, localized labels, and missing context. Ordinary menus retain all five distance checks; matching fallback menus execute none.
  • EUI diff-scoped and staged style checks, syntax check, and git diff --check pass. Syntax checked with available Lua 5.4 luac; the added code uses only Lua 5.1 syntax.
  • PR author reports completing in-game testing. Specific test outcomes, exact client build, and screenshots were not recorded.

Reproduction/regression checklist (individual outcomes not separately recorded): trigger the fallback for a party/raid player in another zone and verify the menu opens without the blocked call; verify normal nearby-player interactions remain available; separately verify leaving a raid clears the roster display, including after /reload.

Screenshots

Before/after screenshots are not available. The visible change is four additional greyed-out entries in the reopened fallback menu only.

Checklist

  • New settings default OFF (no behavior change without opt-in) - N/A: focused bug fix; no new settings.
  • Zero cost while disabled: no events registered, no polling, no hooks doing work, no frames built - existing early returns skip the added work outside the matching fallback menu; no new registrations, hooks, or frames.
  • Cheap while enabled: event-driven (no polling, no timer-based logic, no per-frame allocations) - four label comparisons in the existing menu loop; no timers or per-frame work.
  • No writes onto Blizzard-owned frames (weak-table pattern used); HookScript/hooksecurefunc only, never SetScript on Blizzard frames - only the existing supported menu-description SetEnabled(false) customization is extended; no frame writes added.
  • Tested in-game on live; no version gates or pre-Midnight APIs added - PR author reports in-game testing on the retail installation; exact client build and individual outcomes not recorded. No version gates or APIs added.

Cat gives a thumbs up

@EllesmereGaming
EllesmereGaming merged commit 5dd65a9 into EllesmereGaming:main Sep 7, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants