SkillSpeedScale
Per-skill attack speed scaling configuration for balancing multi-hit and channeled abilities
The SkillSpeedScale plugin allows fine-tuning how attack speed affects individual skills, enabling precise balance control for multi-hit abilities that become overpowered at high attack speeds.
File Location
GameServer/Data/Plugins/SkillSpeedScale.xmlDependencies
GameServerInfo - Common.dat
Uses global timing values from [SkillTiming] section: MaxAttackSpeed, BaseSkillDelay, MinSkillDelay, SpeedDelayMultiplierX10
Skill.txt
References skill IDs (Index) from the skill database. Skills with Delay > 0 in Skill.txt use fixed cooldowns and ignore speed scaling.
Configuration Structure
<SkillSpeedScale>
<Skill Index="238" Name="Chaotic Diseier" SpeedScale="0.55" MinDelay="200" />
<Skill Index="9" Name="Evil Spirit" SpeedScale="1.0" MinDelay="50" />
</SkillSpeedScale>Each <Skill> entry overrides the default speed scaling behavior for a specific skill.
Attributes
Index
int
Required
0-299
Skill ID from Skill.txt
Name
string
Optional
-
Skill name for readability (not used by server, documentation only)
SpeedScale
float
1.0
0.0-3.0
How much attack speed affects this skill's delay (see below)
MinDelay
int
0
0+
Per-skill minimum delay in milliseconds (0 = use global MinSkillDelay)
MaxDelay
int
0
0+
Per-skill maximum delay cap in milliseconds (0 = no cap)
SpeedScale Values Explained
The SpeedScale attribute controls how much the character's attack speed stat affects the skill's casting delay:
0.0
Speed has NO effect (fixed delay)
Utility skills like Teleport that shouldn't be spammable
0.5
Speed has HALF effect (nerfed)
Multi-hit skills that become overpowered at high speed
1.0
Normal speed scaling (default)
Balanced single-hit skills
1.5
Speed has 150% effect (buffed)
Underpowered skills that need speed scaling boost
2.0
Speed has DOUBLE effect (heavily buffed)
Skills that should benefit greatly from attack speed investment
Skills NOT listed in this config file default to SpeedScale="1.0" (normal speed scaling).
Timing Formula
The plugin modifies the skill delay calculation formula used by the server:
Step-by-Step Calculation
Default Global Values
These are configured in GameServerInfo - Common.dat under the [SkillTiming] section:
MaxAttackSpeed
270
Maximum effective speed before formula (0 = no cap)
BaseSkillDelay
1500 ms
Starting delay before speed reduction
SpeedDelayMultiplierX10
50 (= 5.0)
Delay reduction per speed point (stored as x10 for precision)
MinSkillDelay
50 ms
Absolute minimum delay floor
The actual values in your server's config file may differ. These are the hardcoded defaults used when the config file doesn't specify values.
Formula Example
Chaotic Diseier with SpeedScale="0.55", MinDelay="200":
Low-speed character (speed = 200):
High-speed character (speed = 270, capped):
Compare to normal scaling (SpeedScale="1.0"):
By reducing SpeedScale to 0.55, the skill casts at 757ms instead of 150ms at max speed—preventing spam of this powerful multi-hit AoE.
Important Behavior
Skills with Fixed Delay: If a skill has a non-zero Delay value in Skill.txt, that delay is used as a fixed cooldown and attack speed scaling is completely ignored. Only skills with Delay=0 in Skill.txt are affected by the speed scaling formula and this plugin.
Per-Skill Overrides: The MinDelay attribute in this config overrides the global MinSkillDelay from GameServerInfo - Common.dat for the specified skill only.
Clamping: Invalid SpeedScale values are automatically clamped:
Values below 0.0 → clamped to 0.0
Values above 3.0 → clamped to 3.0
Physical vs Magic Skills: Physical skills (melee attacks, bow skills) use PhysiSpeed for timing calculations, while magic skills use MagicSpeed. This means the same character may have different casting speeds for different skill types based on their equipment and stats.
Reload Support: Configuration can be reloaded at runtime using the /reload plugins GM command without restarting the server.
Negative Values Ignored: Negative values for MinDelay or MaxDelay are treated as 0 (use global/no cap).
Common Use Cases
Multi-Hit Skills - Nerf Speed Scaling
Multi-target or multi-hit skills become overpowered when spammed at high attack speed:
By reducing SpeedScale below 1.0, these skills remain powerful but can't be spammed continuously.
Channeled Skills - Heavy Nerf
Skills with continuous or hold effects should be heavily rate-limited:
A very low SpeedScale (0.2) combined with high MinDelay (600ms) ensures this utility skill cannot be spammed.
Utility Skills - Fixed Delay
Teleport and buff skills should have fixed delays regardless of attack speed:
Setting SpeedScale="0.0" makes attack speed completely ineffective, using only the MinDelay value.
Single-Hit Burst Skills - Buff Speed Scaling
Underpowered single-hit skills can benefit MORE from attack speed:
A SpeedScale above 1.0 makes attack speed investment more rewarding for this skill.
Examples
Common Issues
Skills Still Too Fast: If a skill is still being spammed at high speed, check:
Is the skill's
Indexcorrect? Verify against Skill.txtIs the config file loaded? Check server logs for "SkillSpeedScale" entries
Try increasing
MinDelayor decreasingSpeedScalefurther
Skills Too Slow: If a skill feels unresponsive:
Increase
SpeedScalevalue (closer to 1.0)Decrease
MinDelayvalueCheck that global
MaxAttackSpeedisn't too restrictive
Config Not Reloading: Use /reload plugins command. If issues persist, restart the GameServer. Check logs for XML parsing errors.
Testing Changes: Use characters with different attack speed values to verify the scaling behaves as expected:
Low speed (~100): Tests base delay
Medium speed (~200): Tests scaling curve
High speed (~270): Tests minimum delay floor
Finding Skill IDs
Skill IDs (Index attribute) come from GameServer/Data/Skill.txt. Each line represents a skill:
Alternatively, check in-game or in the client's Skill.txt data file.
Related Configurations
GameServerInfo - Common.dat (
[SkillTiming]section): Global attack speed settings (MaxAttackSpeed,BaseSkillDelay,MinSkillDelay,SpeedDelayMultiplierX10)Skill.txt: Base skill definitions, IDs, and fixed delays (Delay column)
SkillManager.cpp: Server-side skill validation and timing enforcement (implements the speed scaling formula)
Reload Command
This command reloads all plugin configurations including SkillSpeedScale.xml without restarting the server.
Last updated