Skill
Master skill database - damage, costs, range, requirements, effects for every skill
Single source of truth for every skill's base data: damage, mana/AG cost, range, cooldown, damage type, status effect, level and stat requirements. Sent to the client at login via Game Data Sync, replacing the need for client-side Skill_*.bmd files.
File Location
Data/Skill/Skill.txtLoaded once at GameServer startup. Changes require a restart.
Format
Tab or space-delimited, 32 columns per row. First lines are comments; each row is one skill entry. Terminated by end.
Columns
0
Index
Skill ID. Must match the skill enum shared with the client
1
Name
Display name, max 32 chars. Quote if it contains spaces
2
Damage
Base damage value. Multiplied by level/formula
3
Mana
Mana cost per use
4
BP
Ability Gauge cost per use
5
Range
Attack range in tiles (magic skills usually 6, melee 2-3)
6
Radio
AoE radius in tiles. 0 = single target
7
Delay
Cooldown in milliseconds
8
Type
Damage type / element. 0 = Ice, 1 = Poison, 2 = Lightning, 3 = Fire, 4 = Earth, 5 = Wind, 6 = Water, 255 = none. The token * in the file is parsed as 255
10
RequireLevel
Minimum character level to learn
11
RequireEnergy
Minimum energy stat to cast
12
RequireLeadership
Minimum command/leadership (Dark Lord)
13
RequireKillCount
Monster kills required to unlock
14
RequireGuildStatus
Required guild rank bitmask. 0x80 = Guild Master, 0x40 = Sub/Office Master, 0x20 = Battle Master. Values may be OR'd together. Server uses this for validation; client receives the expanded DutyClass flags during sync
15-21
RequireClass (DW, DK, FE, MG, DL, SU, RF)
One column per class; 1 = class can use this skill, 0 = cannot. Column 15 is Dark Wizard, column 21 is Rage Fighter, matching the class order used elsewhere in the server
22
RequireStrength
Minimum strength stat to cast
23
RequireDexterity
Minimum dexterity stat to cast
24
MasteryType
Master skill tree category (1-6, 255 = none)
25
SkillUseType
How the skill is activated (0 = normal attack, 1 = buff, 2 = passive, etc.)
26
SkillBrand
Visual effect category identifier used by client effect selection
27
SkillRank
Skill tier within its mastery tree
28
MagicIcon
Client-side icon index shown on the skill bar
29
ItemSkill
1 if the skill is granted by an equipped item, 0 if learned. Currently 0 for all shipped rows; item-granted skills are still resolved in game logic, not via this column
30
IsDamage
1 if the skill deals damage, 0 if utility/buff/debuff. Affects client damage-number display
31
SkillCategory
Client TypeSkill. 0 = CommonAttack (damage/attack), 1 = Buff (self/party), 2 = DeBuff (enemy), 3 = FriendlySkill (ally-targeting, e.g. Heal)
Client sync: Radio and RequireGuildStatus are server-only. RequireGuildStatus is expanded into three DutyClass flags on the wire. Every other column is sent to the client at login through Game Data Sync. Per-skill speed scaling from SkillSpeedScale.xml is layered in at the same time. Editing this file and restarting the GameServer is enough; no client-side BMD needs to be rebuilt.
Relationship to Other Skill Files
MasterSkillTree.txt - master skill prerequisites and tree-progression values per master level
SkillDamage.txt - optional per-skill damage overrides vs users and monsters
Skill.dat - global formula constants (ManaShield, Greater Defense, etc.) that layer on top of the base Damage from this file
SkillSpeedScale.xml - per-skill delay scaling and minimum-delay floor, also synced to client alongside this file
CustomCombo.xml - primary and secondary skill lists for the cross-class combo system, referencing
Indexfrom this fileCharacter.dat - class/global damage rate multipliers applied on top of this file's
DamageSkillElect.hitin this folder is a binary client asset; do not edit on the server side
Common Issues
Skill shown but does no damage -
Damageis0, or the class'sRequireClasscolumn is0Skill won't learn -
RequireLevel/RequireEnergy/RequireLeadership/RequireKillCount/RequireStrength/RequireDexteritygate not metRange feels off vs client - the client's view comes from the synced value of
Range; server value is authoritativeSkill cooldown too short / long -
Delaycolumn; combined with per-skill override in SkillSpeedScale.xmlEffect type wrong -
Typecolumn maps to elemental resistances via Monster.xml; wrong type bypasses the wrong resistanceChange not applying - clients already logged in keep the old skill data; reconnect or restart
Last updated