Reference: Characters (Folder Index)

Purpose

Contains all character files. Every character has its own file. The files are titled with the corresponding CreatureDef IDs.

Special case is reserved for the file called 0.txt which must exist. Some of the information there is applied to new characters.

File Format

Crude INI format. This is one of the oldest systems in the server and also probably the most disorganized. Lines are mostly considered as key=value pairs, but are divided into a few main sections. Specific lines within those sections may also be interpreted differently.
Comment character: semicolon (;)
Has section headers.

Section Tags

See further below for more precise information on the data formats used by each section.

[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.

[ENTRY] or [GENERAL] : General Section

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.

[STATS] : Creature Stats Section

This section is a list of key=value pairs. Refer to Creature Stats for a list of available stats and what they do.

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.

[PREFS] : Preferences Section

This section is a list of key=value pairs. These properties are usually set to certain defaults for new players. Otherwise they are entirely managed by the client. Their effect is strictly client-side. They often contain settings that the player has chosen: display settings, quickbar assignments, etc.

[INV] : Inventory Section

Each line describes a single inventory object. The line will have either of the following formats:
ConName=Slot,ID ConName=Slot,ID,Count,CustomLook,BindStatus

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.

[QUEST] : Quest Section

Describes all quest information. These lines appear in one of three formats: active=ID,act,obj1comp,obj1count,obj2comp,obj2count,obj3comp,obj3count complete=ID,ID,ID... repeat=ID,startMinute,waitMinutes

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.
The format for complete quests:
complete=ID,ID,ID...

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:
repeat=ID,startMinute,waitMinutes

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.

[COOLDOWN] : Cooldown Section

Describes which ability cooldown categories are still waiting on cooldowns.

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.