Handle SMSG_CHARACTER_LOGIN_FAILED (0x041) for AzerothCore/Playerbot compatibility

Previously this opcode was unrecognised and silently dropped, leaving the
client stuck in ENTERING_WORLD with no feedback when the server rejected a
login (duplicate session, world down, disabled race/class, etc.). Now we
decode the LoginFailureReason byte, reset state to CHAR_LIST_RECEIVED so
the player can retry, and surface a red error message on the character screen
via the new CharLoginFailCallback. Also adds isError colour support to
CharacterScreen::setStatus so failures show in red and successes in green.
This commit is contained in:
Kelsi 2026-02-17 13:59:29 -08:00
parent 36fc1df706
commit 7cf060a9f6
11 changed files with 61 additions and 4 deletions

View file

@ -58,6 +58,7 @@ public:
restoredLastCharacter = false;
newlyCreatedCharacterName.clear();
statusMessage.clear();
statusIsError = false;
deleteConfirmStage = 0;
previewInitialized_ = false;
previewGuid_ = 0;
@ -80,7 +81,7 @@ public:
/**
* Update status message
*/
void setStatus(const std::string& message);
void setStatus(const std::string& message, bool isError = false);
/**
* Select character by name (used after character creation)
@ -97,6 +98,7 @@ private:
// Status
std::string statusMessage;
bool statusIsError = false;
// Callbacks
std::function<void(uint64_t)> onCharacterSelected;