Character.dat
Per-class combat tuning. Damage rates against contexts (duel, events, PvP, PvM), class-vs-class damage modifiers, skill-specific damage formulas, HP/MP/BP/SD recovery rates, and the constants that feed every hit/defense calculation.
File Location#
GameServer/Data/GameServerInfo - Character.dat
All keys live under [GameServerInfo]. Changes require a GameServer restart.
Class Codes#
Every per-class key uses one of these two-letter prefixes.
| Code | Class |
|---|---|
DW | Dark Wizard |
DK | Dark Knight |
FE | Fairy Elf |
MG | Magic Gladiator |
DL | Dark Lord |
SU | Summoner |
RF | Rage Fighter |
Damage Rates by Context#
Percent of base damage applied in each game mode. 100 = no change, 50 = half damage, 0 = zero damage dealt.
| Key | Default | Effect |
|---|---|---|
DuelDamageRate | 60 | Damage scaling inside the duel arena |
GensDamageRate | 60 | Damage scaling between Gens factions in PvP |
CustomArenaDamageRate | 50 | Damage scaling in the Custom Arena plugin map |
ChaosCastleDamageRate | 50 | Damage scaling in Chaos Castle |
IllusionTempleDamageRate | 50 | Damage scaling in Illusion Temple |
CastleSiegeDamageRate1 | 40 | Damage on defenders during CS |
CastleSiegeDamageRate2 | 0 | Damage on attackers during CS |
CastleSiegeDamageRate3 | 5 | Damage on castle-neutral targets |
GeneralDamageRatePvP | 100 | Baseline PvP damage anywhere without a special rate |
GeneralDamageRatePvM | 100 | Baseline PvM damage |
ReflectDamageRatePvP | 100 | Reflect damage in PvP |
ReflectDamageRatePvM | 1000 | Reflect damage in PvM (%). PvM reflect uses the monster's full hit (before your defense/absorb), takes your reflect % of it, then applies this rate. 1000 = x10. Regular (percent) reflect only. Missing line = 0 = reflect does no damage to monsters |
FullReflectDamageRatePvM | 100 | Full damage reflect proc in PvM (%). Separate from ReflectDamageRatePvM. Also uses the monster's full hit before your defense. 100 = monster takes its own raw hit back |
Character Max Rates#
Hard caps on a player's total rate from all sources (items, options, buffs, master tree, sets). Players only, monsters are not capped. 0 or missing line = no cap.
| Key | Default | Effect |
|---|---|---|
MaxReflectRate | 65 | Max total damage reflect %. Full damage reflect proc is not capped |
MaxDamageReductionRate | 70 | Max total damage cut % from all damage reduction sources (item/option reduction, buff reduction, shield Defense skill). Wing and pet absorb apply after and are not counted |
MaxCriticalDamageRate | 90 | Max critical damage chance % (before target's resist) |
MaxExcellentDamageRate | 90 | Max excellent damage chance % (before target's resist) |
MaxDoubleDamageRate | 20 | Max double damage chance % (before target's resist) |
MaxTripleDamageRate | 15 | Max triple damage chance % |
The C panel shows the capped value.
Class Damage Rates#
Per-class multipliers for PvP and PvM. All default to 100.
| Pattern | Meaning |
|---|---|
<CLASS>DamageRatePvP | This class's damage output in any PvP context |
<CLASS>DamageRatePvM | This class's damage output against monsters |
Seven classes × two contexts = 14 keys, all default 100.
Elemental damage rates (inert in this build)#
Class-vs-Class Damage Rates#
Square matrix of multipliers. <A>DamageRateTo<B> = damage from class A when hitting class B. All default to 100 (no change).
Full 7x7 matrix
Every pair uses the same pattern: <ATTACKER>DamageRateTo<DEFENDER> = 100. 49 keys total.
DWDamageRateToDW...DWDamageRateToRFDKDamageRateToDW...DKDamageRateToRFFEDamageRateToDW...FEDamageRateToRFMGDamageRateToDW...MGDamageRateToRFDLDamageRateToDW...DLDamageRateToRFSUDamageRateToDW...SUDamageRateToRFRFDamageRateToDW...RFDamageRateToRF
Raise a row to buff one class's damage against another; lower it to nerf. Typical server balance tweaks live here, not in the context or class rates above.
Monster Damage to Players#
How hard monsters hit players. The PvM keys above only scale damage players deal to monsters; these scale the other direction. Player summons are not affected.
| Key | Default | Effect |
|---|---|---|
MonsterDamageRateToDW ... MonsterDamageRateToRF | 100 | % of monster damage taken by that class. 80 = that class takes 20% less from monsters |
PlayerDefenseRateVsMonster | 50 | % of a player's defense used when a monster hits them. Vanilla hardcoded 50 |
PlayerDefenseRateVsPlayer | 50 | % of a player's defense used when another player hits them. Vanilla hardcoded 50 |
A per-map rate stacks on top: MonsterDamageRate in MapManager.xml. Monster affix blasts and other preset monster hits are scaled too.
Raising PlayerDefenseRateVsMonster makes defense stronger against every monster at once; the per-class rates are better for balancing one class.
Element Weakness and Strength#
Monsters can be weak or strong against one element. A player skill whose element (the Type column in Skill.txt) matches deals more or less damage to that monster. Normal attacks have no element.
| Key | Default | Effect |
|---|---|---|
ElementWeakBonus | 20 | +% damage when the skill's element is the monster's weakness |
ElementStrongPenalty | 20 | -% damage when the skill's element is the monster's strength |
Set the elements per monster with Weak / Strong in Monster.xml (Weak="Fire"), or per map with ElementWeak / ElementStrong in MapManager.xml for monsters that have none of their own. Players see them as badges beside the monster's HP bar: weakness on the left (green rim, up arrow), strength on the right (red rim, down arrow), with a hover tooltip.
Damage Stuck Rate#
Chance of a "stuck" animation triggering on hit for each class. 0 disables. Value is a percentage.
| Key | Default |
|---|---|
DWDamageStuckRate | 0 |
DKDamageStuckRate | 0 |
FEDamageStuckRate | 0 |
MGDamageStuckRate | 0 |
DLDamageStuckRate | 0 |
SUDamageStuckRate | 0 |
RFDamageStuckRate | 0 |
Mount Stuck Rate#
Flinch chance while riding a mount. Historically mounted characters never flinched; these keys make it configurable per mount. 0 keeps the classic no-flinch behavior.
| Key | Default |
|---|---|
UniriaDamageStuckRate | 0 |
DinorantDamageStuckRate | 0 |
DarkHorseDamageStuckRate | 0 |
FenrirDamageStuckRate | 0 |
Custom plugin mounts are configured separately: set StuckRate="N" on the <Mount> entry in Data\Plugins\Items\CustomPets.xml (default 0).
Damage Multiplier Constants#
Per-class passive damage boost formula constants. Not commonly edited.
| Key | Default | Applies to |
|---|---|---|
DKDamageMultiplierConstA | 10 | Dark Knight Energy divisor (rate = 200 + Energy/A) |
DLDamageMultiplierConstA | 20 | Dark Lord Energy divisor (rate = 200 + Energy/A) |
RFDamageMultiplierConstA | 8 | Rage Fighter Dexterity divisor used in attack-stance rate |
RFDamageMultiplierConstB | 10 | Rage Fighter Vitality divisor used in defense-stance rate |
RFDamageMultiplierConstC | 10 | Rage Fighter Energy divisor used in both attack and defense rates |
DKDamageMultiplierMaxRate | 500 | DK multiplier cap |
DLDamageMultiplierMaxRate | 500 | DL multiplier cap |
RFDamageMultiplierMaxRate | 500 | RF multiplier cap (applied to each of the three RF stances) |
Dark Spirit Settings#
Tunes the Dark Lord's Dark Spirit pet.
Dark Spirit constants (15 keys)
| Key | Default | Effect |
|---|---|---|
DarkSpiritRangeAttackRate | 30 | Chance % the spirit performs a ranged attack |
DarkSpiritCriticalDamageRate | 30 | Crit rate % |
DarkSpiritExcellentDamageRate | 0 | Excellent rate % |
DarkSpiritAttackDamageMinConstA/B/C | 180 / 15 / 8 | Min damage formula |
DarkSpiritAttackDamageMaxConstA/B/C | 200 / 15 / 4 | Max damage formula |
DarkSpiritAttackSpeedConstA/B/C/D | 20 / 4 / 5 / 50 | Attack speed formula |
DarkSpiritAttackSuccessRateConstA/B/C | 1000 / 16 / 1 | Hit rate formula |
Guardian Items (Dec Damage)#
Constants for items that reduce incoming damage while equipped.
| Key | Default | Effect |
|---|---|---|
DinorantDecDamageConstB | 5 | Dinorant damage-reduction constant |
DarkHorseDecDamageConstA | 30 | Dark Horse damage-reduction linear term |
DarkHorseDecDamageConstB | 2 | Dark Horse damage-reduction scaling term |
Skill Damage Formulas#
Constants feeding specific-skill damage calculations. Leave at defaults unless rebalancing a skill specifically.
Combo / Earthquake / Electric Spark / DL Skill / Nova
| Key | Default |
|---|---|
ComboDamageConstA | 2 |
ComboDamageConstB | 1 |
ComboDamageConstA/B only apply to classes without a <ClassScaling> row in CustomCombo.xml.
| EarthquakeDamageConstA/B/C | 10 / 5 / 10 |
| ElectricSparkDamageConstA/B | 10 / 250 |
| DLSkillDamageConstA/B | 25 / 50 |
| NovaDamageConstA/B/C | 20 / 5 / 2 |
Plasma Storm per-class constants (28 keys)
Four constants per class (A/B/C/D, plus E for Dark Lord):
| Class | A | B | C | D | E |
|---|---|---|---|---|---|
| DW | 5 | 5 | 7 | 3 | - |
| DK | 3 | 5 | 5 | 7 | - |
| FE | 5 | 3 | 7 | 5 | - |
| MG | 3 | 5 | 5 | 7 | - |
| DL | 5 | 5 | 7 | 3 | 3 |
| SU | 5 | 5 | 7 | 3 | - |
| RF | 5 | 5 | 3 | 7 | - |
Pool Recovery Rates#
Percent of max pool recovered per recovery tick.
| Pool | Default per class | Notes |
|---|---|---|
HP (<CLASS>HPRecoveryRate) | 0 for every class | Disabled by default; raise to grant passive HP regen |
MP (<CLASS>MPRecoveryRate) | 4 for every class | |
BP (<CLASS>BPRecoveryRate) | 3 for every class except DK (5) | BP = stamina for combos and Rage Fighter |
SD (<CLASS>SDRecoveryRate) | 4 for every class | SD = Shield Defense |
Seven classes × four pools = 28 keys, all following the same <CLASS><POOL>RecoveryRate pattern. Four further keys, below, layer on top of them.
No-damage recuperation bonus#
Added in v1.0.7. A flat extra percentage applied on top of the recovery rate above, granted only when the pool has not been spent or hit for more than 5 seconds - the classic "regenerate while standing still" behaviour.
| Key | Default | Pool |
|---|---|---|
HPNoDamageRecoveryBonus | 5 | Life |
SDNoDamageRecoveryBonus | 5 | Shield Defense |
MPNoDamageRecoveryBonus | 3 | Mana |
BPNoDamageRecoveryBonus | 3 | Stamina |
Set a key to 0 to remove the idle bonus for that pool entirely. These are server-wide, not per-class. The defaults match the vanilla WebZen values.
Base Damage Constants#
Min/max physical and magic damage formula constants. Drive the baseline hit range before items and skills.
Per-class damage formula constants
Pattern: <CLASS>PhysiDamageMin/MaxConstA/B, <CLASS>MagicDamageMin/MaxConstA. Fairy Elf has extra Bow variants for ranged weapons.
| Class | Physi Min A | Physi Min B | Physi Max A | Physi Max B | Magic Min A | Magic Max A |
|---|---|---|---|---|---|---|
| DW | 6 | - | 4 | - | 9 | 4 |
| DK | 8 | - | 4 | - | 9 | 4 |
| FE | 7 | - | 4 | - | 9 | 4 |
| MG | 6 | 12 | 4 | 8 | 9 | 4 |
| DL | 7 | 14 | 5 | 10 | 9 | 4 |
| SU | 8 | - | 4 | - | 9 | 4 |
| RF | 7 | 15 | 5 | 12 | 9 | 4 |
FE bow-specific: FEPhysiDamageMinBowConstA/B = 14/7, FEPhysiDamageMaxBowConstA/B = 8/4.
Attack Success Rate#
Hit chance formula constants (separate for PvE and PvP).
Attack success rate constants per class
PvE pattern: <CLASS>AttackSuccessRateConstA/B/C/D. Dark Lord has an additional E. Rage Fighter has higher defaults to compensate for higher base damage.
| Class | A | B | C | D | E |
|---|---|---|---|---|---|
| DW | 5 | 3 | 2 | 4 | - |
| DK | 5 | 3 | 2 | 4 | - |
| FE | 5 | 3 | 2 | 4 | - |
| MG | 5 | 3 | 2 | 4 | - |
| DL | 5 | 6 | 2 | 4 | 10 |
| SU | 5 | 3 | 2 | 4 | - |
| RF | 3 | 5 | 4 | 6 | - |
PvP pattern: <CLASS>AttackSuccessRatePvPConstA/B/C/D.
| Class | A | B | C | D |
|---|---|---|---|---|
| DW | 3 | 1 | 4 | 1 |
| DK | 3 | 1 | 45 | 10 |
| FE | 3 | 1 | 6 | 10 |
| MG | 3 | 1 | 35 | 10 |
| DL | 3 | 1 | 4 | 1 |
| SU | 3 | 1 | 35 | 10 |
| RF | 26 | 10 | 36 | 10 |
Attack Speed Constants#
Physical and magic attack speed formula constants.
| Key | Default | Effect |
|---|---|---|
DWPhysiSpeedConstA | 20 | DW physical attack speed |
DWMagicSpeedConstA | 10 | DW magic attack speed |
DKPhysiSpeedConstA | 15 | |
DKMagicSpeedConstA | 20 | |
FEPhysiSpeedConstA | 50 | |
FEMagicSpeedConstA | 50 | |
MGPhysiSpeedConstA | 15 | |
MGMagicSpeedConstA | 20 | |
DLPhysiSpeedConstA | 10 | |
DLMagicSpeedConstA | 10 | |
SUPhysiSpeedConstA | 20 | |
SUMagicSpeedConstA | 20 | |
RFPhysiSpeedConstA | 10 | |
RFMagicSpeedConstA | 10 |
Defense Success Rate#
Dodge/block chance formula constants.
PvE defense success rate constants
Pattern: <CLASS>DefenseSuccessRateConstA.
| Class | A |
|---|---|
| DW | 3 |
| DK | 3 |
| FE | 4 |
| MG | 3 |
| DL | 7 |
| SU | 4 |
| RF | 10 |
PvP defense success rate constants
Pattern: <CLASS>DefenseSuccessRatePvPConstA/B/C. Rage Fighter has higher defaults.
| Class | A | B | C |
|---|---|---|---|
| DW | 2 | 1 | 4 |
| DK | 2 | 1 | 2 |
| FE | 2 | 1 | 10 |
| MG | 2 | 1 | 4 |
| DL | 2 | 1 | 2 |
| SU | 2 | 1 | 2 |
| RF | 15 | 10 | 5 |
Defense Constants#
Per-class defense formula constants. Raises the baseline defense scaling for that class.
| Key | Default |
|---|---|
DWDefenseConstA | 4 |
DKDefenseConstA | 3 |
FEDefenseConstA | 10 |
MGDefenseConstA | 4 |
DLDefenseConstA | 7 |
SUDefenseConstA | 3 |
RFDefenseConstA | 8 |
Reflect Settings#
ReflectDamageCheckOwnerLive moved to Data/Plugins/World/Downgrade.xml, as <Combat ReflectDamageCheckOwnerLive="..." /> - see Downgrade. The leftover key in the shipped Character.dat template is ignored.
Cross-File Dependencies#
| Setting here | Related in |
|---|---|
| All class-code prefixes (DW/DK/FE/MG/DL/SU/RF) | Common.dat Create Character Settings and per-class LevelUpPoint, and DefaultClassInfo.txt base stats and per-level curves |
ReflectDamageRatePvP / ReflectDamageRatePvM | Reflect Damage skill constants in Skill.dat |
CastleSiegeDamageRate1/2/3 | Castle Siege section in Event.dat; inert unless Common.dat EnableCastleSiege = 1 |
CustomArenaDamageRate | Custom Arena plugin |
ChaosCastleDamageRate, IllusionTempleDamageRate | Matching event sections in Event.dat |
| Per-class damage and recovery rates | Skill.txt and SkillDamage.txt feed per-skill damage formulas |
Common Issues#
- Every player hits for zero in the arena -
DuelDamageRate = 0by accident - One class feels overpowered in PvP - check the
<CLASS>DamageRatePvPand<CLASS>DamageRateTo<OTHER>rows, not the formula constants - HP never regenerates for any class -
<CLASS>HPRecoveryRatedefaults to0on purpose. Raise per class to enable passive regen - Castle Siege damage feels wrong only during CS -
CastleSiegeDamageRate1/2/3interact with the role you occupy (defender, attacker, neutral) - Reflect never fires after the owner dies -
ReflectDamageCheckOwnerLivedefaults to1; set it to0in Downgrade.xml, not in this file, to let reflect still apply when the owner dies in the same tick