WorldData
Version support
Section titled “Version support”| Version | Status |
|---|---|
| v92 | Full |
| v90 | - |
| v86 | - |
WorldData is a singleton configuration file — unlike entity catalogs (Items, NPCs, Skills), there are no entity IDs. Instead, the file contains 5 domain sections that control global game parameters: combat formulas, stat tables, economy rules, class balance multipliers, and level-dependent adjustment curves. Each section maps to a separate DSL section and entity handler. All data resides in a single WorldData.xml.
DSL sections
Section titled “DSL sections”| Section | Purpose | Operations | Reference |
|---|---|---|---|
combatConfig | Combat formulas: aggro, critical, attack/defense adjustments, super armor, reaction | update | Combat Config |
statConfig | Attack speed per class, stat-by-level tables, NPC impact/balance | update, CRUD | Stat Config |
economyConfig | Tax, trade broker, dropped items, death penalties, revival, movement | update, CRUD | Economy Config |
classConfig | Heal/drain/defense multipliers per class, HP/MP/ST bonuses, party EXP, damage distribution | update, CRUD | Class Config |
levelAdjust | Level-based damage/critical curves, EXP scaling, per-class balance, skill advantage | update, CRUD | Level Adjust |
File organization: SingleFile — all entities share WorldData.xml
Quick recipes
Section titled “Quick recipes”Update combat parameters
Section titled “Update combat parameters”combatConfig: aggro: returnDistance: 1200 targetChangeAggroGap: 1.2 critical: damageRate: 2.0Add stat-by-level entry
Section titled “Add stat-by-level entry”statConfig: statByLevel: create: - level: 70 expNeeded: 999999999 antiReactionAdjForGrade: 53Configure death penalties
Section titled “Configure death penalties”economyConfig: death: delRateCustomizeItem: 0.1 conditionPenalty: create: - pcLevelOver: 11 pcLevelUnder: 65 conditionPenalty: 100Adjust class balance
Section titled “Adjust class balance”classConfig: healAdjust: warrior: 1.0 priest: 1.5 damageAdjust: create: - targetCount: 1 normalAtk: 1.0 pierceAtk: 1.0XML structure
Section titled “XML structure”WorldData.xml└── WorldData (root) ├── Aggro ← combatConfig ├── Critical ├── Atk ├── Def ├── PhysicalAttack ├── MagicalAttack ├── PhysicalDefence ├── MagicalDefence ├── DamageFormula ├── SuperArmor ├── SkillDamageTypeConstant ├── CostDefence ├── ReactionAdjust ├── UserCombatStatus ├── UserLevelLimit ← statConfig ├── StandardAttackSpeed ├── StatByLevel │ └── Stat [multiple] ├── NpcImpact │ └── Impact [multiple] ├── NpcBalance │ └── Balance [multiple] ├── Tax ← economyConfig ├── TradeBroker ├── DroppedItem │ └── Exception [multiple] ├── Death │ └── ConditionPenalty [multiple] ├── Revival ├── MoveConfig ├── HealAdjust ← classConfig ├── MagicalHealAdjust ├── DrainMpSpread ├── DefenceDamageAdjust ├── HpBonusAdjust ├── MpBonusAdjust ├── StBonusAdjust ├── BonusExp │ └── BonusExpEntry [multiple] ├── DamageAdjust │ └── DamageAdjustEntry [multiple] ├── Damage ← levelAdjust │ ├── StrongEnemy │ ├── StrongEnemyLightParty │ ├── StrongEnemySolo │ └── WeakEnemy ├── Critical (level) │ ├── StrongEnemy │ ├── StrongEnemyLightParty │ ├── StrongEnemySolo │ └── WeakEnemy ├── LevelBalanceAdjust │ └── {Class} [per class] │ └── Adjust [multiple] ├── Exp │ └── WeakEnemy [multiple] ├── ExpParty │ ├── WeakEnemy [multiple] │ └── HighestPartyMember [multiple] ├── ExpLevelPenalty │ └── Penalty [multiple] └── MaxSkillAtkAdvantageCommon pitfalls
Section titled “Common pitfalls”-
Singleton file, no entity IDs: WorldData has no
idattribute on any root element. All 5 DSL sections modify the sameWorldData.xml. You cannot create or delete top-level sections — only update flat properties and create/update/delete child entries within CRUD sub-sections. -
Dual semantics — update vs. CRUD: Root-level sections (e.g.,
aggro,tax,moveConfig) use flatupdatesemantics. Sub-sections with child entries (e.g.,statByLevel,conditionPenalty,damageAdjust) use standardcreate/update/deleteoperations on keyed entries. -
Composite keys on CRUD entries: Several CRUD tables use composite keys:
conditionPenalty(pcLevelOver + pcLevelUnder),levelBalanceAdjust(class + minLevel + maxLevel),expLevelPenalty(pcLowLevel + pcHighLevel + enemyLowLevel + enemyHighLevel). Deletes must specify all key fields. -
Class-keyed dictionary:
levelBalanceAdjustis keyed by class name string (e.g.,warrior,priest). Each class has its own independent CRUD section.