Skill.dat
Numerical parameters for buff and utility skills (duration, strength, per-class scaling)
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 (cost, distance, target filter, base damage range) and MasterSkillTree.txt (master-skill add-on bonuses that the formulas below sum into the same value).
File Location
GameServer/Data/GameServerInfo - Skill.datAll 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.
<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 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
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)
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
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
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
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.
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)
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
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
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)
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
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
InvisibilityTimeConstA
60
Duration seconds. No strength term.
Brand
BrandTimeConstA
10
Duration seconds for the guild brand state. No strength term.
Infinity Arrow
InfinityArrowTimeConstA
1800
Duration seconds. No strength term.
Magic Damage Immunity
MagicDamageImmunityTimeConstA
10
Duration seconds. No strength term.
Physi Damage Immunity
PhysiDamageImmunityTimeConstA
10
Duration seconds. No strength term.
Drain Life
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.
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
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
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)
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)
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
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
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)
MagicCircleConstA
20
MagicCircleTimeConstA
1800
Damage bonus value = (Energy / DWMagicDamageMinConstA) * MagicCircleConstA / 100. The Dark Wizard magic damage divisor lives in Character.dat. Duration seconds = TimeConstA. Self-only buff.
Shield Recover
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
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
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)
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)
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 delayMinDelayclamps the result to at least this many msMaxDelayclamps 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.
Cross-File Dependencies
Per-skill cost, distance, target type, base damage range
Master-tree add-on bonuses summed into the formulas above
Per-skill base damage tables
ReflectDamageRate<CLASS> and ReflectDamageMaxRate
Stack with Character.dat ReflectDamageRatePvP / ReflectDamageRatePvM
MagicCircleConstA formula divisor DWMagicDamageMinConstA
SummonMonster1-8
Monster index definitions in Data/Monster/Monster.xml
All <Skill>Rate<CLASS> entries
Class codes mirror Character.dat damage rates
Skill handler attack speed and cooldown
Common.dat global attack-speed formula (MaxAttackSpeed, BaseSkillDelay, SpeedGrowthFactor, MinSkillDelay) in Common.dat
Per-skill delay overrides
SkillSpeedScale plugin. Layers on top, does not replace
Reset-related stat caps that feed Energy into these formulas
Combo skill payload that triggers Sword Power and similar skills
Common Issues
Buff feels weaker than expected on one class - check the
<Skill>Rate<CLASS>entry; it might be below100Buff lasts forever - very large
TimeConstAvalue, or a master-tree count bonus stacking unexpectedly; verify with a fresh cast after restartSummoned monster is missing or wrong -
SummonMonsterNpoints to an index that is not inMonster.xml, or the index defines a non-summon-friendly monsterReflect never fires - Character.dat
ReflectDamageRatePvP/ReflectDamageRatePvMset to0, orReflectDamageMaxRateset to0hereMana Shield absorbs nothing -
ManaShieldMaxRate = 0; shipped default is50Sleep lasts longer than the cap - shipped cap
SleepMaxTime = 5; lower to shortenFire Slash damage scales with Energy in tests - it does not; the stat is Strength. If players see no scaling from Strength, check that
FireSlashConstBis non-zeroDefense 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
DefenseConstAto apply
Last updated