WorldData: Level Adjust
Part of WorldData. This page covers level-based adjustments: damage and critical scaling curves, EXP adjustments for weak enemies, party EXP distribution, EXP level penalties, per-class balance ratios, and skill attack advantage caps.
Damage
Section titled “Damage”Section: levelAdjust.damage
Operations: update
Level-gap damage scaling curves. Each sub-section (strongEnemy, strongEnemyLightParty, strongEnemySolo, weakEnemy) has the same 4 properties.
Sub-sections
Section titled “Sub-sections”Each of the 4 sub-sections has:
| Property | Type | Since | Description |
|---|---|---|---|
pve | decimal | v92 | PvE damage adjust per level gap |
pveMax | decimal | v92 | Maximum PvE damage adjust |
pvp | decimal | v92 | PvP damage adjust per level gap |
pvpMax | decimal | v92 | Maximum PvP damage adjust |
Example
Section titled “Example”levelAdjust: damage: strongEnemy: pve: 0.03 pveMax: 0.5 pvp: 0.04 pvpMax: 0.6 weakEnemy: pve: 0.02 pveMax: 0.3Critical
Section titled “Critical”Section: levelAdjust.critical
Operations: update
Level-gap critical rate scaling curves. Same structure as Damage — 4 sub-sections (strongEnemy, strongEnemyLightParty, strongEnemySolo, weakEnemy), each with pve, pveMax, pvp, pvpMax.
Example
Section titled “Example”levelAdjust: critical: strongEnemy: pve: 0.02 pveMax: 0.4 strongEnemySolo: pvp: 0.03 pvpMax: 0.5LevelBalanceAdjust
Section titled “LevelBalanceAdjust”Section: levelAdjust.levelBalanceAdjust.{className}
Operations: create, update, delete
Per-class level-range balance ratios. The levelBalanceAdjust section is a dictionary keyed by class name string. Each class has its own independent CRUD table.
| Property | Type | Since | Description |
|---|---|---|---|
minLevel | int | v92 | Minimum level of range (composite key) |
maxLevel | int | v92 | Maximum level of range (composite key) |
atkRatio | decimal | v92 | Attack ratio adjustment |
defRatio | decimal | v92 | Defense ratio adjustment |
hpRatio | decimal | v92 | HP ratio adjustment |
Example
Section titled “Example”levelAdjust: levelBalanceAdjust: warrior: create: - minLevel: 1 maxLevel: 20 atkRatio: 1.1 update: - minLevel: 21 maxLevel: 40 changes: atkRatio: 1.05 berserker: create: - minLevel: 1 maxLevel: 20 atkRatio: 1.15 defRatio: 0.95 priest: delete: - minLevel: 61 maxLevel: 65Section: levelAdjust.exp
Operations: update (underLevelGap), create/update/delete (weakEnemy)
EXP adjustments for killing weaker enemies. Has one flat property and a CRUD table.
Flat properties
Section titled “Flat properties”| Property | Type | Since | Description |
|---|---|---|---|
underLevelGap | int | v92 | Maximum level gap before EXP drops to zero |
WeakEnemy entries (CRUD)
Section titled “WeakEnemy entries (CRUD)”| Property | Type | Since | Description |
|---|---|---|---|
levelGap | int | v92 | Level gap value (key) |
expAdjust | decimal | v92 | EXP multiplier at this gap |
goldBagAdjust | decimal | v92 | Gold bag drop multiplier at this gap |
itemBagAdjust | decimal | v92 | Item bag drop multiplier at this gap |
Example
Section titled “Example”levelAdjust: exp: underLevelGap: 10 weakEnemy: create: - levelGap: 5 expAdjust: 0.5 goldBagAdjust: 0.5 itemBagAdjust: 0.7 delete: - levelGap: 15ExpParty
Section titled “ExpParty”Section: levelAdjust.expParty
Operations: create, update, delete
Party EXP distribution adjustments. Two independent CRUD sub-sections: weakEnemy and highestPartyMember.
WeakEnemy / HighestPartyMember entries
Section titled “WeakEnemy / HighestPartyMember entries”Both sub-sections share the same entry structure:
| Property | Type | Since | Description |
|---|---|---|---|
levelGap | int | v92 | Level gap value (key) |
expAdjust | decimal | v92 | EXP multiplier at this gap |
goldBagAdjust | decimal | v92 | Gold bag drop multiplier at this gap |
itemBagAdjust | decimal | v92 | Item bag drop multiplier at this gap |
Example
Section titled “Example”levelAdjust: expParty: weakEnemy: create: - levelGap: 5 expAdjust: 0.6 goldBagAdjust: 0.6 itemBagAdjust: 0.8 highestPartyMember: update: - levelGap: 10 changes: expAdjust: 0.3ExpLevelPenalty
Section titled “ExpLevelPenalty”Section: levelAdjust.expLevelPenalty
Operations: create, update, delete
EXP penalty table based on player and enemy level ranges.
| Property | Type | Since | Description |
|---|---|---|---|
pcLowLevel | int | v92 | Player minimum level (composite key) |
pcHighLevel | int | v92 | Player maximum level (composite key) |
enemyLowLevel | int | v92 | Enemy minimum level (composite key) |
enemyHighLevel | int | v92 | Enemy maximum level (composite key) |
expAdjust | decimal | v92 | EXP multiplier |
goldBagAdjust | decimal | v92 | Gold bag drop multiplier |
itemBagAdjust | decimal | v92 | Item bag drop multiplier |
Example
Section titled “Example”levelAdjust: expLevelPenalty: create: - pcLowLevel: 60 pcHighLevel: 65 enemyLowLevel: 1 enemyHighLevel: 50 expAdjust: 0.1 goldBagAdjust: 0.1 itemBagAdjust: 0.2 delete: - pcLowLevel: 66 pcHighLevel: 70 enemyLowLevel: 1 enemyHighLevel: 50MaxSkillAtkAdvantage
Section titled “MaxSkillAtkAdvantage”Section: levelAdjust.maxSkillAtkAdvantage
Operations: update
Caps the skill attack advantage formula.
| Property | Type | Since | Description |
|---|---|---|---|
applyLevel | int | v92 | Level cap for the (currentLevel - skillLearnLevel) * 1.03 formula |
levelAdjust: maxSkillAtkAdvantage: applyLevel: 65