Special case is reserved for the file called 0.txt which must exist. Some of the information there is applied to new characters.
[ENTRY] | Begins a new character entry (originally characters were all saved to a single file, so some of this coding is legacy stuff). |
[END] | Closes a character entry. Not necessary. |
[GENERAL] | Begins the general section, which holds mostly unrelated information. |
[STATS] | Begins the stats section, which holds information from the Creature Stat Set. |
[PREFS] | Begins the preferences section, which holds various client-side settings, such as quickbar hotkeys, and configurations from the options menu. |
[INV] | Begins the inventory section, which holds items from all inventory containers (equipped items, backpack inventory, buyback, vault, etc). |
[QUEST] | Begins the quest section, which holds information on active and completed quests. |
[COOLDOWN] | Begins the cooldown section, which holds ability cooldown information between sessions. |
ID | Integer | The CreatureDef ID. Must be unique among all character files. |
AccountID | Integer | The Account ID that owns this character. Doesn't have a specific purpose within the server, but is useful to have for administrative purposes to determine who owns the character. |
characterVersion | Integer | Mostly unused. Originally intended to trigger character-specific upgrades if an old character hadn't logged in a while. |
Instance | Integer | The active Instance ID that the player was last in. If the instance exists when the player logs back in, it will try to enter the player there. |
Zone | Integer | The ZoneDef ID that the player was last in. If the instance does not exist when the player logs in, a new instance will be created from that zone. |
X | Integer | X-axis coordinate in the game world (east/west). |
Y | Integer | Y-axis coordinate in the game world (elevation). |
Z | Integer | Z-axis coordinate in the game world (north/south). |
Rotation | Byte | Player direction facing. The official client does not actually recognize player facing when they first log in. Uses values of 0 to 255, which in the client is converted to 0-360 degress. |
StatusText | String | The status text that displays in the friend list. |
SecondsLogged | Unsigned Long | Total number of seconds that the character has been logged in game. |
SessionsLogged | Integer | Total number of times this character has logged in game. |
TimeLogged | String | A more human-friendly representation of how long the character was in game (hh:mm:ss format). Based off SecondsLogged. |
LastSession | String | How long the character was logged in during its previous game session (hh:mm:ss format). |
LastLogOn | String | Date and time of the last login. |
LastLogOff | String | Date and time of the last logoff. |
OriginalAppearance | String | Mostly a legacy stat from the old debug days when everyone had access to creaturetweak. There had been a backup/restore command to preserve the original apppearance. |
CurrentVaultSize | Integer | Number of slots available in the vault inventory. Each row has 8 slots. |
CreditsPurchased | Integer | Total credits purchased. Not implemented. |
CreditsSpent | Integer | Total credits spent. |
ExtraAbilityPoints | Integer | Bonus ability points in addition to the base amount granted by level. |
GroveReturn | Integer (x4) | Four values, separated by commas. These represent {X,Y,Z,ZoneID} respectively. This is the return coordinate and zone when a player leaves their grove back to the gameplay world. |
BindReturn | Integer (x4) | Four values, separated by commas. These represent {X,Y,Z,ZoneID} respectively. This is the coordinate and zone location to return when a player uses the Bind ability. |
LastWarpTime | Unsigned Long | Unused. |
UnstickCount | Integer | Total number of times the player has used the Unstick ability. |
LastUnstickTime | Unsigned Long | Server time (minutes) when the last Unstick was performed. |
hengeList | Integer (list) | Comma separated list of henges that the player has activated. Each henge is a CreatureDef ID of the associated henge interact. This property can appear on multiple lines (usually defaults to 10 values per line). The values will be merged into the list. |
Abilities | Integer (list) | Comma separated list of Ability IDs that the player has learned (passively granted by class, or purchased through the ability screen). This property can appear on multiple lines (usually defaults to 10 values per line). The values will be merged into the list. |
FriendList | Integer,String | An entry in the character's friend list. A CreatureDefID and Character Name, separated by a comma. This property can appear on multiple lines. One friend per line. |
Sidekick | Integer (x3) | Three integers, separated by a comma. Representing {CreatureDefID,summonType,summonParam}. SummonType is either {0=Generic, 1=Ability, 2=Pet}. If SummonType is for Ability, SummonParam is the Ability Group ID. Implementation of Sidekicks has faced some revision is now mostly used for pets. Other implementation is nonexistent or incomplete. This property can appear on multiple lines. One sidekick per line. |
MaxSidekicks | Integer | No longer used. In very early implementations of sidekicks during alpha testing, players could add their own sidekicks on demand, and this was the maximum limit. |
PrivateChannelName | String | If the player has entered a private chat channel, this is the channel name. |
PrivateChannelPassword | String | If the player has entered a private chat channel, this is the channel password (hashed). |
Permissions | String (list) | A comma separated list of strings. These are account permission names. Normally these permissions would appear in the account information, globally affecting all characters on the account. However, in specific administrative cases they may be applied to specific characters. See Account Permissions for available permissions. This property can appear on multiple lines (usually defaults to 10 values per line). The values will be merged into the list. |
InstanceScaler | String | If the player has chosen a dungeon scaling profile, this is the profile name. |
Most of the numeric stat properties (like strength, armor, etc) are reset and recalculated (from class, level, equipment bonuses, passive abilities, etc) when the character is reloaded, to ensure they contain proper values.
Items are not saved with extended information if Count, CustomLook, and BindStatus are all zero.
Where the above properties are the following:
ConName | String | The container name. Acceptable containers are: {inv,eq,bank,shop,buyback,trade}. Note that the only containers that are actually used in game are inv (inventory), eq (equipped), bank (vault), and buyback (vendor tab). |
Slot | Integer | The slot that the item is placed in. For the eq container, refer to Equipment Slots for information on which slots map where. For other containers (like inventory), slots are numbered beginning at the top left grid slot. Note that buyback items may be stored in reverse order. |
ID | Integer | The ItemDef ID of the item. For standard items, the ID must exist in one of the ItemDef files. For virtual (randomized) items, the ID must exist in the VirtualItems files. |
Count | Integer | For stackable items (such as consumables or reagents) this is the extra number of items present in the stack. For example, a count of 0 means 1 item, because there are no extras. A count of 4 means 5 items. |
CustomLook | Integer | For refashioned items, this is the ItemDef ID of what the refashioned item looks like. |
BindStatus | Integer | For items that have been bound to the player, this value will be 1. If not bound, it will be 0. |
The format for active quests:
active=ID,act,obj1comp,obj1count,obj2comp,obj2count,obj3comp,obj3count
ID | Integer | The QuestDef ID. |
act | Integer | The current act. This is a zero-based index, meaning the counter begins at 0 for the first act. Each act can have up to 3 distinct objectives which can be completed in any order, but the act will not finish until all objectives are complete. |
obj1comp,obj1count | Integer,Integer | Information for the first objective.
If comp is 1, the objective has been completed. Otherwise it is 0. If the objective has a counter (gather N flowers, kill N creatures) then count will be the amount finished so far. |
obj2comp,obj2count | Integer,Integer | Information for the second objective. If the act does not contain a second objective, these will be zero. |
obj3comp,obj3count | Integer,Integer | Information for the second objective. If the act does not contain a third objective, these will be zero. |
This is just a simple, comma separated list of QuestDef IDs that gets added into a list of completed quests. The server arbitrary limits to 10 IDs per line, but this is just for easier-to-read formatting. Multiple complete lines will add more IDs to the list.
The format for repeat quests:These are not for bounty-board quests that are immediately repeatable. This data is specific for quests that use the QuestDef RepeatDelay property. See there for information on what it's for.
ID | Integer | The QuestDef ID. |
startMinute | Unsigned Long | The system time (translated to minutes since epoch) that the quest was redeemed. |
waitMinutes | Unsigned Long | Number of minutes since startMinute that must pass before the ID is removed from the complete list and made available again. |
Line Format:
cooldownCategoryName=remainingTimeMS,elapsedTimeMS
cooldownCategoryName | String | Refer to the cooldown category name in the Abilities Table. |
remainingTimeMS | Integer | Time (milliseconds) that remains to pass before the ability can be used again. |
elapsedTimeMS | Integer | Time (milliseconds) that have elapsed so far. |