> 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/skill-dat.md).

# Skill.dat

Tuning constants for passive and buff skills cast from Skill.txt entries: how strong the effect is, how long it lasts, and per-class multipliers that scale strength on player targets. Skill handlers read these values at cast time and pass them to the effect manager.

This file does NOT define the per-skill cost, range, target type, AOE shape, or master-tree wiring of each skill. Those columns live in [Skill.txt](/docs/data/skill.md) (cost, distance, target filter, base damage range) and [MasterSkillTree.txt](/docs/data/skill/masterskilltree.md) (master-skill add-on bonuses that the formulas below sum into the same value).

## File Location

```
GameServer/Data/GameServerInfo - Skill.dat
```

All keys live under `[GameServerInfo]`. Changes require a GameServer restart.

## Key Patterns

Most skill blocks follow one of a few shapes. Once you know the pattern, reading any block is easy.

| Suffix                | Meaning                                                                                                                                                                                                                                                                                                                                                                                          |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `<Skill>ConstA/B/C/D` | Effect-strength formula terms. Common shapes are `ConstA + stat/ConstB + stat2/ConstC` (additive base plus stat-divided ramps), `stat/ConstA` (pure divisor), and a paired `apply-rate` plus `effect-strength` form (`ConstA + Energy/ConstB` for chance, `ConstC + Energy/ConstD` for strength). B, C, D are divisors, not multipliers. Smaller divisors mean more contribution per stat point. |
| `<Skill>Rate<CLASS>`  | Per-class multiplier applied to the effect strength, expressed as percent. `100` = no change. Applied as `value * Rate / 100` only when the target is a player. Class codes: `DW`, `DK`, `FE`, `MG`, `DL`, `SU`, `RF`. The `RF` slot is read only for season 5+ builds; the others are always read.                                                                                              |
| `<Skill>TimeConstA/B` | Duration in seconds. Usually `TimeConstA + Energy/TimeConstB` (A = base seconds, B = divisor for the stat-driven bonus). Some skills use `TimeConstA` alone for a fixed duration.                                                                                                                                                                                                                |
| `<Skill>MaxRate`      | Hard cap on the effect strength. Applied after the ConstA/B/C/D math and after master-skill bonuses, before the per-class rate scales the result.                                                                                                                                                                                                                                                |
| `<Skill>MaxTime`      | Hard cap on effect duration in seconds.                                                                                                                                                                                                                                                                                                                                                          |

When in doubt, raise `ConstA` to make an effect stronger. Raise `TimeConstA` to make it last longer. Leave `Rate<CLASS>` at `100` unless balancing one class. A divisor key set to `0` will integer divide-by-zero and crash the calling thread - always keep divisors above `0`.

Master-tree add-ons from [MasterSkillTree.txt](/docs/data/skill/masterskilltree.md) sum into the same `value` after the base formula and before the `MaxRate` cap. The master tree can also extend the duration of several buffs (Greater Defense, Greater Damage, Mana Shield) by adding seconds to the count.

## Mana Shield

| Key                     | Default    |
| ----------------------- | ---------- |
| `ManaShieldConstA`      | `10`       |
| `ManaShieldConstB`      | `50`       |
| `ManaShieldConstC`      | `200`      |
| `ManaShieldRate<CLASS>` | `100` each |
| `ManaShieldTimeConstA`  | `60`       |
| `ManaShieldTimeConstB`  | `40`       |
| `ManaShieldMaxRate`     | `50`       |

Absorption percent = `ConstA + Dex/ConstB + Energy/ConstC`, plus the master-tree Mana Shield Improved bonus, capped at `MaxRate`, then scaled by the per-class `Rate` for the target. Duration seconds = `TimeConstA + Energy/TimeConstB`, with the master-tree Mana Shield Enhanced bonus added to the count. Default `MaxRate = 50` caps absorption at 50% of incoming damage.

## Defense (passive shield block)

| Key                 | Default |
| ------------------- | ------- |
| `DefenseConstA`     | `50`    |
| `DefenseTimeConstA` | `4`     |

This is the shield-equipped passive damage reduction, not a cast buff. `DefenseConstA` is the percent of damage absorbed by the shield while the reduction window is active. `DefenseTimeConstA` is the window length in seconds: after a successful block the reduction stays armed for that many seconds before the player must trigger it again. The shield slot must hold a real shield with at least one option for the reduction to apply.

## Heal

| Key          | Default |
| ------------ | ------- |
| `HealConstA` | `5`     |
| `HealConstB` | `5`     |

HP restored = `ConstA + Energy/ConstB`, then scaled up by the master-tree Heal Improved percent. Target may be self, a party member, or an owned summon. Result is clamped to the target's max HP.

## Greater Defense

| Key                         | Default    |
| --------------------------- | ---------- |
| `GreaterDefenseConstA`      | `2`        |
| `GreaterDefenseConstB`      | `8`        |
| `GreaterDefenseRate<CLASS>` | `100` each |
| `GreaterDefenseTimeConstA`  | `60`       |

Defense bonus = `ConstA + Energy/ConstB`, then increased by the master-tree Greater Defense Improved and Enhanced percents, then scaled by the per-class `Rate`. The number stored on the buff is `value * 2`. Duration seconds = `TimeConstA`, with extra seconds added per master-tree Greater Defense Enhanced level.

## Greater Damage

| Key                        | Default    |
| -------------------------- | ---------- |
| `GreaterDamageConstA`      | `3`        |
| `GreaterDamageConstB`      | `7`        |
| `GreaterDamageRate<CLASS>` | `100` each |
| `GreaterDamageTimeConstA`  | `60`       |

Damage bonus = `ConstA + Energy/ConstB`, increased by master-tree Greater Damage Improved and Enhanced percents, then scaled by the per-class `Rate`. Duration seconds = `TimeConstA`, plus seconds per master-tree Greater Damage Enhanced level.

## Summon Monster

Maps the 8 summon slots to monster indices. Change these to summon different monsters from each slot.

| Key              | Default | Slot |
| ---------------- | ------- | ---- |
| `SummonMonster1` | `26`    | 1    |
| `SummonMonster2` | `32`    | 2    |
| `SummonMonster3` | `21`    | 3    |
| `SummonMonster4` | `20`    | 4    |
| `SummonMonster5` | `10`    | 5    |
| `SummonMonster6` | `150`   | 6    |
| `SummonMonster7` | `151`   | 7    |
| `SummonMonster8` | `353`   | 8    |

`SummonMonster8` is read only on season 7+ builds (not the current EX603 build). Monster indices must exist in `Data/Monster/Monster.xml`.

## Greater Life (Swell Life)

| Key                      | Default    |
| ------------------------ | ---------- |
| `GreaterLifeConstA`      | `12`       |
| `GreaterLifeConstB`      | `100`      |
| `GreaterLifeConstC`      | `20`       |
| `GreaterLifeRate<CLASS>` | `100` each |
| `GreaterLifeTimeConstA`  | `60`       |
| `GreaterLifeTimeConstB`  | `10`       |
| `GreaterLifeMaxRate`     | `100`      |

Max-HP bonus percent = `ConstA + Vitality/ConstB + Energy/ConstC`, plus the master-tree Greater Life Improved bonus, capped at `MaxRate`, then scaled by each target's per-class `Rate`. Casting in a party applies to every party member in radius. Duration seconds = `TimeConstA + Energy/TimeConstB`.

## Fire Slash

| Key                   | Default |
| --------------------- | ------- |
| `FireSlashConstA`     | `10`    |
| `FireSlashConstB`     | `50`    |
| `FireSlashTimeConstA` | `10`    |
| `FireSlashMaxRate`    | `30`    |

Damage-over-time strength = `ConstA + Strength/ConstB`, plus the master-tree Fire Slash Enhanced bonus, capped at `MaxRate`. The DoT runs for `TimeConstA` seconds. The stat is Strength, not Energy.

## Greater Critical Damage

| Key                               | Default |
| --------------------------------- | ------- |
| `GreaterCriticalDamageConstA`     | `25`    |
| `GreaterCriticalDamageConstB`     | `30`    |
| `GreaterCriticalDamageTimeConstA` | `60`    |
| `GreaterCriticalDamageTimeConstB` | `10`    |

Critical-damage rate gained = `Energy/ConstA + Leadership/ConstB`. `ConstA` and `ConstB` are pure divisors here, not a base + ramp pair. Duration seconds = `TimeConstA + Energy/TimeConstB`.

## Stern (chain stun)

| Key               | Default |
| ----------------- | ------- |
| `SternTimeConstA` | `10`    |

Stun duration in seconds applied to each target hit by the chain stun follow-up of certain skills. There is no chance roll here; the chance is decided by the calling skill or master tree.

## Greater Mana

| Key                     | Default |
| ----------------------- | ------- |
| `GreaterManaConstA`     | `50`    |
| `GreaterManaTimeConstA` | `60`    |

`GreaterManaConstA` is stored directly as the buff strength (it is not divided by any stat). `TimeConstA` is the duration in seconds. The downstream effect handler decides what the strength means (commonly bonus max mana percent or mana regen rate).

## Invisibility

| Key                      | Default |
| ------------------------ | ------- |
| `InvisibilityTimeConstA` | `60`    |

Duration seconds. No strength term.

## Brand

| Key               | Default |
| ----------------- | ------- |
| `BrandTimeConstA` | `10`    |

Duration seconds for the guild brand state. No strength term.

## Infinity Arrow

| Key                       | Default |
| ------------------------- | ------- |
| `InfinityArrowTimeConstA` | `1800`  |

Duration seconds. No strength term.

## Magic Damage Immunity

| Key                             | Default |
| ------------------------------- | ------- |
| `MagicDamageImmunityTimeConstA` | `10`    |

Duration seconds. No strength term.

## Physi Damage Immunity

| Key                             | Default |
| ------------------------------- | ------- |
| `PhysiDamageImmunityTimeConstA` | `10`    |

Duration seconds. No strength term.

## Drain Life

| Key               | Default |
| ----------------- | ------- |
| `DrainLifeConstA` | `10`    |
| `DrainLifeConstB` | `23`    |

HP drained on hit = `damage * ConstA / 100 + Energy / ConstB`. `ConstA` is a percent of the outgoing damage, `ConstB` is a stat divisor that adds a flat bonus on top.

## Reflect Damage

Stacks with the Character.dat reflect rates.

| Key                        | Default    |
| -------------------------- | ---------- |
| `ReflectDamageConstA`      | `30`       |
| `ReflectDamageConstB`      | `42`       |
| `ReflectDamageRate<CLASS>` | `100` each |
| `ReflectDamageTimeConstA`  | `30`       |
| `ReflectDamageTimeConstB`  | `25`       |
| `ReflectDamageMaxRate`     | `50`       |

Reflect percent = `ConstA + Energy/ConstB`, capped at `MaxRate`, then scaled by the per-class `Rate` for the target. Duration seconds = `TimeConstA + Energy/TimeConstB`.

## Sword Power

| Key                    | Default |
| ---------------------- | ------- |
| `SwordPowerConstA`     | `30`    |
| `SwordPowerConstB`     | `60`    |
| `SwordPowerTimeConstA` | `30`    |
| `SwordPowerTimeConstB` | `20`    |
| `SwordPowerMaxRate`    | `100`   |

Damage bonus rate = `Energy/ConstA`, capped at `MaxRate`, applied to both the physical and magical damage adders. Defense bonus rate = `max(10, 40 - Energy/ConstB)`, applied to the shield defense reduction. Duration seconds = `TimeConstA + Energy/TimeConstB`.

## Sleep

| Key               | Default |
| ----------------- | ------- |
| `SleepConstA`     | `15`    |
| `SleepConstB`     | `37`    |
| `SleepTimeConstA` | `1`     |
| `SleepTimeConstB` | `250`   |
| `SleepMaxTime`    | `5`     |

Apply chance percent = `ConstA + Energy/ConstB`. Duration seconds = `TimeConstA + Energy/TimeConstB`, hard-capped at `MaxTime`. Default `SleepMaxTime = 5` caps sleep duration at 5 seconds regardless of formula output.

## Lesser Defense (debuff)

| Key                       | Default |
| ------------------------- | ------- |
| `LesserDefenseConstA`     | `32`    |
| `LesserDefenseConstB`     | `50`    |
| `LesserDefenseConstC`     | `12`    |
| `LesserDefenseConstD`     | `110`   |
| `LesserDefenseTimeConstA` | `5`     |
| `LesserDefenseTimeConstB` | `300`   |
| `LesserDefenseMaxRate`    | `40`    |

Apply chance percent = `ConstA + Energy/ConstB`. Defense penalty applied to the target = `ConstC + Energy/ConstD`, capped at `MaxRate`. Duration seconds = `TimeConstA + Energy/TimeConstB`.

## Lesser Damage (debuff)

| Key                      | Default |
| ------------------------ | ------- |
| `LesserDamageConstA`     | `32`    |
| `LesserDamageConstB`     | `50`    |
| `LesserDamageConstC`     | `3`     |
| `LesserDamageConstD`     | `93`    |
| `LesserDamageTimeConstA` | `5`     |
| `LesserDamageTimeConstB` | `300`   |
| `LesserDamageMaxRate`    | `40`    |

Apply chance percent = `ConstA + Energy/ConstB`. Damage penalty applied to the target = `ConstC + Energy/ConstD`, capped at `MaxRate`. Duration seconds = `TimeConstA + Energy/TimeConstB`.

## Sahamutt

| Key              | Default |
| ---------------- | ------- |
| `SahamuttConstA` | `60`    |

Final damage = `raw_damage * ConstA / 100`, then increased by the master-tree Sahamutt Enhanced percent. Shipped default scales Sahamutt to 60% of the base hit damage.

## Neil

| Key          | Default |
| ------------ | ------- |
| `NeilConstA` | `60`    |

Final damage = `raw_damage * ConstA / 100`. Shipped default scales Neil to 60% of the base hit damage. The master-tree Neil Enhanced bonus controls the chance of the stun side effect, not the damage scale.

## Magic Circle (Expansion of Wizardry)

| Key                     | Default |
| ----------------------- | ------- |
| `MagicCircleConstA`     | `20`    |
| `MagicCircleTimeConstA` | `1800`  |

Damage bonus value = `(Energy / DWMagicDamageMinConstA) * MagicCircleConstA / 100`. The Dark Wizard magic damage divisor lives in [Character.dat](/docs/gameserver/character-dat.md). Duration seconds = `TimeConstA`. Self-only buff.

## Shield Recover

| Key                   | Default |
| --------------------- | ------- |
| `ShieldRecoverConstA` | `2`     |
| `ShieldRecoverConstB` | `6`     |

SD restored = `(SkillLevel + 1) * ConstA + Energy / ConstB`. Result is clamped to the target's max SD. Increases monster aggro by `value / 40` against viewport mobs.

## Dragon Slayer

| Key                   | Default |
| --------------------- | ------- |
| `DragonSlayerConstA`  | `10`    |
| `DragonSlayerConstB`  | `100`   |
| `DragonSlayerConstC`  | `10`    |
| `DragonSlayerConstD`  | `30`    |
| `DragonSlayerMaxRate` | `50`    |

Apply chance percent = `ConstA + Energy/ConstB`. Effect strength = `ConstC + Energy/ConstD`, capped at `MaxRate`.

## Greater Ignore Defense Rate

| Key                                  | Default |
| ------------------------------------ | ------- |
| `GreaterIgnoreDefenseRateConstA`     | `0`     |
| `GreaterIgnoreDefenseRateConstB`     | `100`   |
| `GreaterIgnoreDefenseRateTimeConstA` | `60`    |
| `GreaterIgnoreDefenseRateTimeConstB` | `10`    |

Ignore-defense percent gained = `ConstA + Energy/ConstB`. Duration seconds = `TimeConstA + Energy/TimeConstB`. Self-only buff. Season 5+ only.

## Fitness (Increase Health)

| Key                 | Default |
| ------------------- | ------- |
| `FitnessConstA`     | `16`    |
| `FitnessConstB`     | `10`    |
| `FitnessTimeConstA` | `60`    |
| `FitnessTimeConstB` | `10`    |

HP bonus = `ConstA + Energy/ConstB`, plus the master-tree Fitness Improved bonus. Duration seconds = `TimeConstA + Energy/TimeConstB`. Affects the caster alone when solo, or every party member in radius when in a party. Season 5+ only.

## Greater Defense Success Rate (Increase Block)

| Key                                   | Default |
| ------------------------------------- | ------- |
| `GreaterDefenseSuccessRateConstA`     | `2`     |
| `GreaterDefenseSuccessRateConstB`     | `10`    |
| `GreaterDefenseSuccessRateTimeConstA` | `60`    |
| `GreaterDefenseSuccessRateTimeConstB` | `10`    |

Block-rate bonus = `ConstA + Energy/ConstB`, plus master-tree Greater Defense Success Rate Improved. Duration seconds = `TimeConstA + Energy/TimeConstB`. Solo or party-radius like Fitness. Season 5+ only.

## Attack Speed Layering

The global attack-speed formula in Common.dat produces a base delay for every skill. The SkillSpeedScale plugin then layers per-skill adjustments on top:

* `SpeedScale` (float) multiplies the base delay
* `MinDelay` clamps the result to at least this many ms
* `MaxDelay` clamps the result to at most this many ms

Skills not listed in `Data/Plugins/Characters/SkillSpeedScale.xml` use the raw Common.dat formula output with `SpeedScale = 1.0` and no extra clamps. The plugin does **not** shadow Skill.dat constants; it is strictly a per-skill delay tuner applied after the duration and effect values on this page are computed. See [SkillSpeedScale](/docs/data/plugins/skillspeedscale.md).

## Cross-File Dependencies

| Setting here                                                     | Related in                                                                                                                                                        |
| ---------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Per-skill cost, distance, target type, base damage range         | [Skill.txt](/docs/data/skill.md)                                                                                                                                  |
| Master-tree add-on bonuses summed into the formulas above        | [MasterSkillTree.txt](/docs/data/skill/masterskilltree.md)                                                                                                        |
| Per-skill base damage tables                                     | [SkillDamage.txt](/docs/data/skill/skilldamage.md)                                                                                                                |
| `ReflectDamageRate<CLASS>` and `ReflectDamageMaxRate`            | Stack with [Character.dat](/docs/gameserver/character-dat.md) `ReflectDamageRatePvP` / `ReflectDamageRatePvM`                                                     |
| `MagicCircleConstA` formula divisor `DWMagicDamageMinConstA`     | [Character.dat](/docs/gameserver/character-dat.md)                                                                                                                |
| `SummonMonster1-8`                                               | Monster index definitions in `Data/Monster/Monster.xml`                                                                                                           |
| All `<Skill>Rate<CLASS>` entries                                 | Class codes mirror [Character.dat](/docs/gameserver/character-dat.md) damage rates                                                                                |
| Skill handler attack speed and cooldown                          | Common.dat global attack-speed formula (`MaxAttackSpeed`, `BaseSkillDelay`, `SpeedGrowthFactor`, `MinSkillDelay`) in [Common.dat](/docs/gameserver/common-dat.md) |
| Per-skill delay overrides                                        | [SkillSpeedScale](/docs/data/plugins/skillspeedscale.md) plugin. Layers on top, does not replace                                                                  |
| Reset-related stat caps that feed Energy into these formulas     | [Reset System](/docs/data/plugins/resetsystem.md)                                                                                                                 |
| Combo skill payload that triggers Sword Power and similar skills | [CustomCombo](/docs/data/plugins/customcombo.md)                                                                                                                  |

## Common Issues

* **Buff feels weaker than expected on one class** - check the `<Skill>Rate<CLASS>` entry; it might be below `100`
* **Buff lasts forever** - very large `TimeConstA` value, or a master-tree count bonus stacking unexpectedly; verify with a fresh cast after restart
* **Summoned monster is missing or wrong** - `SummonMonsterN` points to an index that is not in `Monster.xml`, or the index defines a non-summon-friendly monster
* **Reflect never fires** - Character.dat `ReflectDamageRatePvP` / `ReflectDamageRatePvM` set to `0`, or `ReflectDamageMaxRate` set to `0` here
* **Mana Shield absorbs nothing** - `ManaShieldMaxRate = 0`; shipped default is `50`
* **Sleep lasts longer than the cap** - shipped cap `SleepMaxTime = 5`; lower to shorten
* **Fire Slash damage scales with Energy in tests** - it does not; the stat is Strength. If players see no scaling from Strength, check that `FireSlashConstB` is non-zero
* **Defense buff "does nothing"** - the Defense block is the passive shield-block reduction, not a cast buff; the player must equip a real shield with at least one option for `DefenseConstA` to apply
