From 437a4ef56189cc7241e6cdad9b01db54d63ad83f Mon Sep 17 00:00:00 2001 From: paste Date: Mon, 6 Jul 2026 17:54:54 -0500 Subject: [PATCH] fixed wrong character being selected upon logout --- CharacterSelect.lua | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/CharacterSelect.lua b/CharacterSelect.lua index 5ca7035..6eb20a6 100644 --- a/CharacterSelect.lua +++ b/CharacterSelect.lua @@ -203,17 +203,23 @@ function CharacterSelect_OnEvent() elseif ( event == "CHARACTER_LIST_UPDATE" ) then CharacterSelect_RebuildTranslationTable(); CharacterOrder_Apply(); + if ( this.pendingSelectedCharID ) then + this.selectedIndex = GetIndexFromCharID(this.pendingSelectedCharID); + this.pendingSelectedCharID = nil; + end UpdateCharacterList(); CharSelectCharacterName:SetText(GetCharacterInfo(GetCharIDFromIndex(this.selectedIndex))); Autologin_OnCharactersLoad(); elseif ( event == "UPDATE_SELECTED_CHARACTER" ) then - -- arg1 is a server-assigned charID; translate to a display index - -- so `selectedIndex` always means "position in the displayed list". if ( arg1 == 0 ) then CharSelectCharacterName:SetText(""); else CharSelectCharacterName:SetText(GetCharacterInfo(arg1)); - this.selectedIndex = GetIndexFromCharID(arg1); + if ( table.getn(this.translationTable) == 0 ) then + this.pendingSelectedCharID = arg1; + else + this.selectedIndex = GetIndexFromCharID(arg1); + end end UpdateCharacterSelection(); elseif ( event == "SELECT_LAST_CHARACTER" ) then