> For the complete documentation index, see [llms.txt](https://axiomemu.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://axiomemu.gitbook.io/docs/gameserver/character-dat.md).

# 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`     | `100`   | Reflect damage in PvM                               |

{% hint style="info" %}
Context rates stack multiplicatively with class rates and class-vs-class rates. If Duel is 60, PvP General is 100, and DW-to-DK is 100, a DW hitting a DK in the arena lands `0.6 * 1.0 * 1.0 = 60%` of the raw damage.
{% endhint %}

## 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`.

## 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).

<details>

<summary>Full 7x7 matrix</summary>

Every pair uses the same pattern: `<ATTACKER>DamageRateTo<DEFENDER> = 100`. 49 keys total.

* `DWDamageRateToDW` ... `DWDamageRateToRF`
* `DKDamageRateToDW` ... `DKDamageRateToRF`
* `FEDamageRateToDW` ... `FEDamageRateToRF`
* `MGDamageRateToDW` ... `MGDamageRateToRF`
* `DLDamageRateToDW` ... `DLDamageRateToRF`
* `SUDamageRateToDW` ... `SUDamageRateToRF`
* `RFDamageRateToDW` ... `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.

</details>

## 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`     |

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

<details>

<summary>Dark Spirit constants (15 keys)</summary>

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

</details>

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

<details>

<summary>Combo / Earthquake / Electric Spark / DL Skill / Nova</summary>

| Key                           | Default       |
| ----------------------------- | ------------- |
| `ComboDamageConstA`           | `2`           |
| `ComboDamageConstB`           | `1`           |
| `EarthquakeDamageConstA/B/C`  | `10 / 5 / 10` |
| `ElectricSparkDamageConstA/B` | `10 / 250`    |
| `DLSkillDamageConstA/B`       | `25 / 50`     |
| `NovaDamageConstA/B/C`        | `20 / 5 / 2`  |

</details>

<details>

<summary>Plasma Storm per-class constants (28 keys)</summary>

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

</details>

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

## Base Damage Constants

Min/max physical and magic damage formula constants. Drive the baseline hit range before items and skills.

<details>

<summary>Per-class damage formula constants</summary>

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

</details>

## Attack Success Rate

Hit chance formula constants (separate for PvE and PvP).

<details>

<summary>Attack success rate constants per class</summary>

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 |

</details>

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

<details>

<summary>PvE defense success rate constants</summary>

Pattern: `<CLASS>DefenseSuccessRateConstA`.

| Class | A  |
| ----- | -- |
| DW    | 3  |
| DK    | 3  |
| FE    | 4  |
| MG    | 3  |
| DL    | 7  |
| SU    | 4  |
| RF    | 10 |

</details>

<details>

<summary>PvP defense success rate constants</summary>

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  |

</details>

## 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

| Key                           | Default                                                                 | Effect                                                                                                                                          |
| ----------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `ReflectDamageCheckOwnerLive` | `0` in shipped template; loader falls back to `1` if the key is missing | `1` requires the reflect-owner to still be alive for the reflect to fire. `0` lets the reflect apply even after the owner dies in the same tick |

## Cross-File Dependencies

| Setting here                                        | Related in                                                                                                                                                                                    |
| --------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| All class-code prefixes (DW/DK/FE/MG/DL/SU/RF)      | [Common.dat](/docs/gameserver/common-dat.md) Create Character Settings and per-class LevelUpPoint, and [DefaultClassInfo.txt](/docs/data/defaultclassinfo.md) base stats and per-level curves |
| `ReflectDamageRatePvP` / `ReflectDamageRatePvM`     | Reflect Damage skill constants in [Skill.dat](/docs/gameserver/skill-dat.md#reflect-damage)                                                                                                   |
| `CastleSiegeDamageRate1/2/3`                        | Castle Siege section in [Event.dat](/docs/gameserver/event-dat.md); inert unless Common.dat `EnableCastleSiege = 1`                                                                           |
| `CustomArenaDamageRate`                             | [Custom Arena plugin](/docs/data/plugins/customarena.md)                                                                                                                                      |
| `ChaosCastleDamageRate`, `IllusionTempleDamageRate` | Matching event sections in [Event.dat](/docs/gameserver/event-dat.md)                                                                                                                         |
| Per-class damage and recovery rates                 | [Skill.txt](/docs/data/skill.md) and [SkillDamage.txt](/docs/data/skill/skilldamage.md) feed per-skill damage formulas                                                                        |

## Common Issues

* **Every player hits for zero in the arena** - `DuelDamageRate = 0` by accident
* **One class feels overpowered in PvP** - check the `<CLASS>DamageRatePvP` and `<CLASS>DamageRateTo<OTHER>` rows, not the formula constants
* **HP never regenerates for any class** - `<CLASS>HPRecoveryRate` defaults to `0` on purpose. Raise per class to enable passive regen
* **Castle Siege damage feels wrong only during CS** - `CastleSiegeDamageRate1/2/3` interact with the role you occupy (defender, attacker, neutral)
* **Reflect never fires after the owner dies** - `ReflectDamageCheckOwnerLive = 1` is the source default; set to `0` to let reflect still apply when the owner dies in the same tick
