fix(combat): synchronize auto-target presentation

Make the retained toolbar consume retail's payload-free selection notice from canonical live state so a reentrant Auto Target replacement cannot be erased by the outer clear. Restrict automatic acquisition to the requested hostile non-player monster policy and record the intentional PK edge divergence.

Co-Authored-By: Codex <codex@openai.com>
This commit is contained in:
Erik 2026-07-12 20:26:00 +02:00
parent 8be933fc94
commit 0f2d98c501
11 changed files with 225 additions and 7 deletions

View file

@ -437,7 +437,16 @@ public sealed class SelectedObjectController : IRetainedPanelController
}
private void OnSelectionTransition(SelectionTransition transition)
=> ApplySelection(transition.SelectedObjectId);
{
// Retail's CM_UI::SendNotice_SelectionChanged (0x00479F50) carries no
// selected-id payload. gmToolbarUI::HandleSelectionChanged therefore
// reads the live ACCWeenieObject::selectedID when its notice handler
// runs. This matters when an earlier handler (ClientCombatSystem::
// AutoTarget) selects a replacement reentrantly: the outer "cleared"
// notice must render that replacement, not stale transition data.
_ = transition;
ApplySelection(_selection.SelectedObjectId);
}
public void Dispose()
{