fix(ui): night-round review — F2 HouseQuery fires at login, not tab-open
CM_House::Event_QueryHouse @0x006aaa00 (opcode 0x21e) tail-calls
unconditionally from the end of CPlayerSystem::InitializePlayer
@0x00563570 — the same once-per-session function
AttemptSendLoginCompleteNotification lives in (both guarded by the
player_initialized flag), right after that notification. Retail never
sends it from gmHouseUI::PostInit or gmMapUI::PostInit on House-tab
activation.
Moved WorldSession.SendHouseQuery() to the direct (non-portal)
first-entry completion edges — the same places acdream already sends
the analogous "initial session bootstrap" LoginComplete:
- graphical: LiveSessionRuntimeFactory's RuntimeFirstEntryDriveController
localPlayerCompleted callback
- headless: HeadlessSessionHost's equivalent callback
- headless content-less direct host: RuntimeLiveEntitySessionController.OnSpawned
Portal-space re-entries (LocalPlayerTeleportController's F751 path,
RuntimeLiveEntitySessionController.TryAdvancePortalCompletion) do NOT
resend it, matching retail's single-shot guard.
Removed the invented House-tab-open -> SendHouseQuery trigger
(InteractionRetainedUiComposition's HouseShown binding) and retired
register row AD-107, which had documented that adaptation.
Updated RuntimeLiveEntitySessionControllerTests' exact game-action
assertions for the content-less path, which now also captures the
HouseQuery send alongside LoginComplete.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
6ee3d88863
commit
353ae3bb0c
8 changed files with 89 additions and 35 deletions
|
|
@ -1266,6 +1266,14 @@ internal sealed class HeadlessSessionHost : IDisposable
|
|||
// RuntimeLiveEntitySessionController's onLoginCompleteSent
|
||||
// doc for the other two.
|
||||
_optionsSeeder?.NoteLoginCompleteSent();
|
||||
// Night-round review F2: CM_House::Event_QueryHouse
|
||||
// @0x006aaa00 tail-calls unconditionally from the end of
|
||||
// CPlayerSystem::InitializePlayer — the same once-per-session
|
||||
// function AttemptSendLoginCompleteNotification lives in
|
||||
// (guarded by player_initialized) — right after that
|
||||
// notification. This is the headless direct (non-portal)
|
||||
// first-entry completion edge.
|
||||
session.SendHouseQuery();
|
||||
},
|
||||
_acceptedPositionDrive);
|
||||
_eventRoute = eventRoute;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue