sql/. Each table has its own .sql file. The schema uses utf8mb4 / utf8mb4_general_ci throughout.
There are roughly 130 tables, organized into the functional groups below.
Accounts
Accounts
Tables that store player account data, authentication, and session state.
Characters
Characters
Tables that store everything about a player character. These are the “protected” tables that
dbtool.py never overwrites during updates.Items
Items
Static game data tables describing all item types. These are imported from source SQL and are not player data.
Mobs and NPCs
Mobs and NPCs
Tables that define monsters, NPCs, and their behaviors.
Zones
Zones
Tables that define world geography, routing, and zone configuration.
Spells and abilities
Spells and abilities
Tables covering magic, abilities, and job-specific systems.
Economy and crafting
Economy and crafting
Tables for the auction house, shops, and crafting systems.
Server state and audit
Server state and audit
Tables for server-wide state, economy control, and GM audit logging.
Experience and progression
Experience and progression
Tables for leveling, skill progression, and experience tables.
Fishing
Fishing
Tables for the fishing system.
Protected tables
The following tables contain player data and are never overwritten bydbtool.py update. They are only imported during a fresh database setup (when the table doesn’t yet exist):
accounts, accounts_banned, accounts_totp, auction_house, auction_house_items, audit_bazaar, audit_dbox, audit_trade, audit_vendor, char_blacklist, char_chocobos, char_effects, char_equip, char_equip_saved, char_exp, char_fishing_contest_history, char_flags, char_history, char_inventory, char_jobs, char_job_points, char_look, char_merit, char_monstrosity, char_pet, char_points, char_profile, char_skills, char_spells, char_stats, char_storage, char_style, char_unlocks, char_vars, chars, conquest_system, delivery_box, fishing_contest, fishing_contest_entries, help_desk, ip_exceptions, linkshells, server_variables, unity_system.