Character Management

After successful authentication, validation and admission to the game, players will gain access to the character management scene.

WizardCharacterCreationInfo

WizardCharacterCreationInfo is a PropertyClass used to represent character data throughout early character selection.

As explained in the ObjectProperty chapter, readers should use wizwalker to obtain a dump of all types (including this one).

m_schoolOfFocus is a string ID of the school's literal name and m_nameIndices is a concatenations of three bytes for each index with the MSB always being 0. Everything else is self-explanatory.

It is serialized with no serializer configuration flags (value 0) and a property mask of 0x18.

Requesting the List

The Character List must be directly requested from the server when initially entering the game but also when altering it, e.g. creating new characters.

The client sends the empty MSG_REQUESTCHARACTERLIST for that.

The server then follows up with MSG_STARTCHARACTERLIST holding a human-readable name of the Login Server instance and the number of additionally purchased character slots (to the default 6).

Next, MSG_CHARACTERINFO will be sent a finite number of times for each character there is to this account. It carries a serialized WizardCharacterCreationInfo object.

Finally, the sequence will be terminated with MSG_CHARACTERLIST holding an error code of 0 (empty string id). This message may be sent prematurely if an error occurs while still trying to stream the Character List.

Creating new Characters

The client sends MSG_CREATE_CHARACTER with the serialized WizardCharacterCreationInfo object.

The server then responds with MSG_CREATE_CHARACTER_RESPONSE, potentially holding an error or empty string ID on success.

Errors may occur when the creation info object is malformed or the character limit for the account is exhausted.

TODO: Brute force string for 1745079928.

Creation Logs

The client logs various stages of the character creation in MSG_LOGIN_LOG_CHARACTER_CREATION. The following explains the Stages and Parameters in use there.

StageDescriptionParameter
0Prologue0 (nothing)
1Consulting Book of Secrets0 (nothing)
2School chosen arbitrarilySchool ID
3School assigned by BookSchool ID
4Default appearance takenTemplate ID
5Custom appearance chosenTemplate ID
6Choosing a name0 (nothing)

School ID

ValueSchool
0Fire
1Ice
2Storm
3Myth
4Life
5Death
6Balance

Deleting a Character

The client sends MSG_DELETE_CHARACTER with the unique CharID of the character.

The server is expected to respond with MSG_DELETE_CHARACTER_RESPONSE, potentially holding an error or empty string ID on success.

Errors may occur when CharID does not exist or references a character that does not belong to the currently authenticated account.

Entering the Game

When the player selected its character of choice and hits Play, the client will send MSG_SELECTCHARACTER with the selected character ID.

The server will then confirm the selection with MSG_CHARACTERSELECTED with IP and port of the Game Server, a random Key that will be sent back for validation later, player and char IDs, the current zone and position, and a potential error.

New Wizards start at WizardCity/Tutorial_Exterior, with zone ID 191965934121493239 and location "START".

From this point onwards, the Login Server connection is closed and all client communication will happen through the Game Server.