Converted the skill database to YAML (#4531)

* Combines skill_cast_db, skill_castnodex_db, skill_copyable_db, skill_nonearnpc_db, skill_require_db, and skill_unit_db into skill_db.
* Introduces a cached YAML class for quicker lookups.
* General cleanups and optimizations.
* Includes CSV2YAML conversion tool.
Thanks to @Lemongrass3110!
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
This commit is contained in:
Aleos
2020-01-31 14:14:08 -05:00
committed by GitHub
parent de9f667d2f
commit dca3797d44
51 changed files with 74122 additions and 12272 deletions

836
doc/skill_db.txt Normal file
View File

@@ -0,0 +1,836 @@
//===== rAthena Documentation ================================
//= Skill Database Structure
//===== By: ==================================================
//= rAthena Dev Team
//===== Last Updated: ========================================
//= 20191220
//===== Description: =========================================
//= Explanation of the skill_db.yml file and structure.
//============================================================
---------------------------------------
Id: Unique skill ID.
---------------------------------------
Name: Skill Aegis name.
---------------------------------------
Description: Skill description.
---------------------------------------
MaxLevel: Max skill level.
---------------------------------------
Type: Skill type.
None - No specific type. (Default)
Weapon - Weapon type damage.
Magic - Magic type damage.
Misc - Misc type damage.
---------------------------------------
TargetType: Skill target type.
Passive - Passive skill. (Default)
Attack - Damage enemies.
Ground - Ground placement skill.
Self - Self cast skill.
Support - Friendly cast skill.
Trap - Trap cast skill.
---------------------------------------
DamageFlags: Skill damage properties.
NoDamage - No damage skill. (Default)
Splash - Has splash area.
SplashSplit - Damage should be split among targets.
IgnoreAtkCard - Skill ignores caster's % damage cards (Misc type always ignores).
IgnoreElement - Skill ignores elemental adjustments.
IgnoreDefense - Skill ignores target's defense (Misc type always ignores).
IgnoreFlee - Skill ignores target's flee (Magic type always ignores)
IgnoreDefCard - Skill ignores target's defense cards.
Critical - Skill can critical.
---------------------------------------
Flags: Skill information flags.
IsQuest - Quest skill.
IsNpc - NPC skill.
IsWedding - Wedding skill.
IsSpirit - Spirit skill.
IsGuild - Guild skill.
IsSong - Song/Dance skill.
IsEnsemble - Ensemble skill.
IsTrap - Trap skill.
TargetSelf - Damages/targets self.
NoTargetSelf - Cannot target self. If TargetType is Self_Skill, changes to Attack_Skill.
PartyOnly - Usable on party (and enemies if offensive).
GuildOnly - Usable on guild (and enemies if offensive).
NoTargetEnemy - Disable on enemies (for non-offensive).
IsShadowSpell - Make skill available for SC_AUTOSHADOWSPELL.
IsChorus - Chorus skill.
IgnoreBgReduction - Ignore Battleground reduction.
IgnoreGvgReduction - Ignore GvG reduction.
DisableNearNpc - Disable self/ground skills near NPC. In tandem with NoNearNpc node.
TargetTrap - Damage traps. If TargetType is Trap.
IgnoreLandProtector - Ignore SA_LANDPROTECTOR.
AllowWhenHidden - Usable while hiding.
AllowWhenPerforming - Usable while in dancing state.
TargetEmperium - Damages/targets Emperium.
IgnoreStasis - Ignore SC_STASIS.
IgnoreKagehumi - Ignore KG_KAGEHUMI.
AlterRangeVulture - Skill range affected by AC_VULTURE.
AlterRangeSnakeEye - Skill range affected by GS_SNAKEEYE.
AlterRangeShadowJump - Skill range affected by NJ_SHADOWJUMP.
AlterRangeRadius - Skill range affected by WL_RADIUS.
AlterRangeResearchTrap - Skill range affected by RA_RESEARCHTRAP.
IgnoreHovering - Ignore SC_HOVERING.
AllowOnWarg - Usable while riding Warg.
AllowOnMado - Usable while on Madogear.
TargetManHole - Target enemy with SC__MANHOLE.
TargetHidden - Target enemy with OPTION_HIDE.
IncreaseGloomyDayDamage - Increase SC_GLOOMYDAY_SK damage.
IncreaseDanceWithWugDamage - Increase SC_DANCEWITHWUG damage.
IgnoreWugBite - Ignore RA_WUGBITE.
IgnoreAutoGuard - Not blocked by SC_AUTOGUARD (Weapon_Skill only).
IgnoreCicada - Not blocked by SC_UTSUSEMI or SC_BUNSINJYUTSU (Weapon_Skill only).
---------------------------------------
Range: Skill range. Combo skills do not check for range when used. If range is < 5 the skill is considered melee-range.
Can be defined in scalar form or sequence map form:
Scalar Form
Range: 1
Sequence Map Form
Range:
- Level: 1
Size: 1
- Level: 2
Size: 1
- Level: 3
Size: 2
- Level: 4
Size: 2
- Level: 5
Size: 3
---------------------------------------
Hit: Skill hit type.
Normal - Passive/No damage skill. (Default)
Single - Single hit.
Repeat - Multiple hits.
---------------------------------------
HitCount: Skill hit count. When positive the damage is increased by hits. Negative values the number of hits without increasing the total damage.
Can be defined in scalar form or sequence map form:
Scalar Form
HitCount: 1
Sequence Map Form
HitCount:
- Level: 1
Count: 2
- Level: 2
Count: 4
- Level: 3
Count: 6
- Level: 4
Count: 8
- Level: 5
Count: 10
---------------------------------------
Element: Skill element.
Neutral (Default)
Water
Earth
Fire
Wind
Poison
Holy
Dark
Ghost
Undead
Weapon - Uses weapon element.
Endowed - Uses endowed element.
Random - Uses random element.
Can be defined in scalar form or sequence map form:
Scalar Form
Element: Fire
Sequence Map Form
Element:
- Level: 1
Element: Neutral
- Level: 2
Element: Neutral
- Level: 3
Element: Poison
- Level: 4
Element: Poison
- Level: 5
Element: Poison
---------------------------------------
SplashArea: Skill splash area of effect.
-1 - Screen-wide.
0 - No splash.
All other values follow the formula: value * 2 + 1
1 - 3x3
2 - 5x5
3 - 7x7
4 - 9x9
5 - 11x11
6 - 13x13
7 - 15x15
8 - 17x17
9 - 19x19
10 - 21x21
11 - 23x32
12 - 25x25
13 - 27x27
14 - 29x29
15 - 31x31
Can be defined in scalar form or sequence map form:
Scalar Form
SplashArea: 1
Sequence Map Form
SplashArea:
- Level: 1
Area: 1
- Level: 2
Area: 1
- Level: 3
Area: 2
- Level: 4
Area: 2
- Level: 5
Area: 3
---------------------------------------
ActiveInstance: Maximum amount of active skill instances that can be on the ground.
Can be defined in scalar form or sequence map form:
Scalar Form
ActiveInstance: 1
Sequence Map Form
ActiveInstance:
- Level: 1
Max: 1
- Level: 2
Max: 1
- Level: 3
Max: 2
- Level: 4
Max: 2
- Level: 5
Max: 3
---------------------------------------
Knockback: Amount of tiles the skill knockbacks.
Can be defined in scalar form or sequence map form:
Scalar Form
Knockback: 1
Sequence Map Form
Range:
- Level: 1
Amount: 1
- Level: 2
Amount: 1
- Level: 3
Amount: 2
- Level: 4
Amount: 2
- Level: 5
Amount: 3
---------------------------------------
CopyFlags: Determines if the skill is copyable.
Skill - Type of skill that can copy.
Plagiarism
Reproduce
RemoveRequirement - Ability to remove skill cast requirement.
HpCost
SpCost
HpRateCost
SpRateCost
MaxHpTrigger
ZenyCost
Weapon
Ammo
State
Status
SpiritSphereCost
ItemCost
Equipment
---------------------------------------
NoNearNPC: Determines if the skill can be used near a NPC.
AdditionalRange - Number of cells from an NPC where the skill can be cast.
If zero this will read the splash range value.
If that is also zero then Unit Range + Unit Layout Range will be used.
Type - Type of NPC that will block the skill.
WarpPortal
Shop
Npc
Tomb
---------------------------------------
CastCancel: Cancel cast when hit.
---------------------------------------
CastDefenseReduction: Defense reduction rate during skill cast.
---------------------------------------
CastTime: Time to cast the skill in milliseconds.
Can be defined in scalar form or sequence map form:
Scalar Form
CastTime: 1000
Sequence Map Form
CastTime:
- Level: 1
Time: 1000
- Level: 2
Time: 2000
- Level: 3
Time: 3000
- Level: 4
Time: 4000
- Level: 5
Time: 5000
---------------------------------------
AfterCastActDelay: Time the character cannot use skills in milliseconds.
Can be defined in scalar form or sequence map form:
Scalar Form
AfterCastActDelay: 1000
Sequence Map Form
AfterCastActDelay:
- Level: 1
Time: 1000
- Level: 2
Time: 2000
- Level: 3
Time: 3000
- Level: 4
Time: 4000
- Level: 5
Time: 5000
---------------------------------------
AfterCastWalkDelay: Time before the character can move again in milliseconds.
Can be defined in scalar form or sequence map form:
Scalar Form
AfterCastWalkDelay: 1000
Sequence Map Form
AfterCastWalkDelay:
- Level: 1
Time: 1000
- Level: 2
Time: 2000
- Level: 3
Time: 3000
- Level: 4
Time: 4000
- Level: 5
Time: 5000
---------------------------------------
Duration1: Duration of the skill in milliseconds.
Can be defined in scalar form or sequence map form:
Scalar Form
Duration1: 1000
Sequence Map Form
Duration1:
- Level: 1
Time: 1000
- Level: 2
Time: 2000
- Level: 3
Time: 3000
- Level: 4
Time: 4000
- Level: 5
Time: 5000
---------------------------------------
Duration2: Duration of the skill in milliseconds.
Can be defined in scalar form or sequence map form:
Scalar Form
Duration2: 1000
Sequence Map Form
Duration2:
- Level: 1
Time: 1000
- Level: 2
Time: 2000
- Level: 3
Time: 3000
- Level: 4
Time: 4000
- Level: 5
Time: 5000
---------------------------------------
Cooldown: Time before the character can use the same skill again in milliseconds.
Can be defined in scalar form or sequence map form:
Scalar Form
Cooldown: 1000
Sequence Map Form
Cooldown:
- Level: 1
Time: 1000
- Level: 2
Time: 2000
- Level: 3
Time: 3000
- Level: 4
Time: 4000
- Level: 5
Time: 5000
---------------------------------------
FixedCastTime: Time that is fixed during cast of the skill in milliseconds.
Can be defined in scalar form or sequence map form:
Scalar Form
FixedCastTime: 1000
Sequence Map Form
FixedCastTime:
- Level: 1
Time: 1000
- Level: 2
Time: 2000
- Level: 3
Time: 3000
- Level: 4
Time: 4000
- Level: 5
Time: 5000
---------------------------------------
CastTimeFlags: Effects of the skill's cast time.
IgnoreDex - Cast time not affected by DEX.
IgnoreStatus - Cast time not affected by statuses (Suffragium, etc).
IgnoreItemBonus - Cast time not affected by item bonuses.
---------------------------------------
CastDelayFlags: Effects of the skill's delay.
IgnoreDex - Delay not affected by DEX.
IgnoreStatus - Delay not affected by statuses (Suffragium, etc).
IgnoreItemBonus - Delay not affected by item bonuses.
IgnoreDex only makes sense when battle_config::delay_dependon_dex is enabled.
---------------------------------------
Requires: List of requirements to cast the skill.
HpCost: HP required to cast.
Can be defined in scalar form or sequence map form:
Scalar Form
HpCost: 10
Sequence Map Form
HpCost:
- Level: 1
Amount: 10
- Level: 2
Amount: 20
- Level: 3
Amount: 30
- Level: 4
Amount: 40
- Level: 5
Amount: 50
------------------
SpCost: SP required to cast.
Can be defined in scalar form or sequence map form:
Scalar Form
SpCost: 10
Sequence Map Form
SpCost:
- Level: 1
Amount: 10
- Level: 2
Amount: 20
- Level: 3
Amount: 30
- Level: 4
Amount: 40
- Level: 5
Amount: 50
------------------
HpRateCost: HP rate required to cast. If positive, uses current HP, else uses Max HP.
Can be defined in scalar form or sequence map form:
Scalar Form
HpRateCost: 10
Sequence Map Form
HpRateCost:
- Level: 1
Amount: 10
- Level: 2
Amount: 20
- Level: 3
Amount: 30
- Level: 4
Amount: 40
- Level: 5
Amount: 50
------------------
SpRateCost: SP rate required to cast. If positive, uses current SP, else uses Max SP.
Can be defined in scalar form or sequence map form:
Scalar Form
SpRateCost: 10
Sequence Map Form
SpRateCost:
- Level: 1
Amount: 10
- Level: 2
Amount: 20
- Level: 3
Amount: 30
- Level: 4
Amount: 40
- Level: 5
Amount: 50
------------------
MaxHpTrigger: Maximum amount of HP to cast the skill.
Can be defined in scalar form or sequence map form:
Scalar Form
MaxHpTrigger: 10
Sequence Map Form
MaxHpTrigger:
- Level: 1
Amount: 10
- Level: 2
Amount: 20
- Level: 3
Amount: 30
- Level: 4
Amount: 40
- Level: 5
Amount: 50
------------------
ZenyCost: Zeny required to cast.
Can be defined in scalar form or sequence map form:
Scalar Form
ZenyCost: 10
Sequence Map Form
ZenyCost:
- Level: 1
Amount: 10
- Level: 2
Amount: 20
- Level: 3
Amount: 30
- Level: 4
Amount: 40
- Level: 5
Amount: 50
------------------
Weapon: Weapon required to cast.
All (Default)
Fist
Dagger
1hSword
2hSword
1hSpear
2hSpear
1hAxe
2hAxe
Mace
2hMace
Staff
Bow
Knuckle
Musical
Whip
Book
Katar
Revolver
Rifle
Gatling
Shotgun
Grenade
Huuma
2hStaff
------------------
Ammo: Ammo required to cast.
None (Default)
Arrow
Dagger
Bullet
Shell
Grenade
Shuriken
Kunai
Cannonball
Throwweapon
------------------
AmmoAmount: Ammo amount required to cast.
Can be defined in scalar form or sequence map form:
Scalar Form
AmmoAmount: 10
Sequence Map Form
AmmoAmount:
- Level: 1
Amount: 1
- Level: 2
Amount: 2
- Level: 3
Amount: 3
- Level: 4
Amount: 4
- Level: 5
Amount: 5
------------------
State: Special state required to cast.
None - No special state required.
Hidden - Requires OPTION_HIDE, OPTION_CLOAK, or OPTION_CHASEWALK.
Riding - Requires OPTION_RIDING or OPTION_DRAGON.
Falcon - Requires OPTION_FALCON.
Cart - Requires OPTION_CART for pre-renewal or SC_PUSH_CART for renewal.
Shield - Requires a shield to be equipped.
Recover_Weight_Rate - Requires weight to be less than 50% for pre-renewal or 70% for renewal.
Move_Enable - Requires to be able to move.
Water - Requires to be standing in water.
RidingDragon - Requires OPTION_DRAGON.
Wug - Requires OPTION_WUG.
RidingWug - Requires OPTION_WUGRIDER.
Mado - Requires OPTION_MADOGEAR.
ElementalSpirit - Requires an Elemental Spirit to be summoned.
ElementalSpirit2 - Requires an Elemental Spirit to be summoned and will be removed after.
Peco - Requires OPTION_RIDING.
------------------
Status: Status change required to cast.
For a full list, see src/map/status.hpp::sc_type.
------------------
SphereCost: Spirit sphere required to cast.
Can be defined in scalar form or sequence map form:
Scalar Form
SphereCost: 10
Sequence Map Form
SphereCost:
- Level: 1
Amount: 1
- Level: 2
Amount: 2
- Level: 3
Amount: 3
- Level: 4
Amount: 4
- Level: 5
Amount: 5
------------------
ItemCost: Item required to cast.
------------------
Equipment: Equipped item required to cast.
---------------------------------------
Unit: Skill unit values.
Id: Skill unit ID.
For a full list, see src/map/skill.hpp::e_skill_unit_id.
------------------
AlternateId: Alternate skill unit ID.
For a full list, see src/map/skill.hpp::e_skill_unit_id.
------------------
Layout: Skill unit layout.
-1 - Screen-wide.
0 - No splash.
All other values follow the formula: value * 2 + 1
1 - 3x3
2 - 5x5
3 - 7x7
4 - 9x9
5 - 11x11
Can be defined in scalar form or sequence map form:
Scalar Form
Layout: 10
Sequence Map Form
Layout:
- Level: 1
Size: 1
- Level: 2
Size: 2
- Level: 3
Size: 3
- Level: 4
Size: 4
- Level: 5
Size: 5
------------------
Range: Skill unit range.
Can be defined in scalar form or sequence map form:
Scalar Form
Range: 10
Sequence Map Form
Range:
- Level: 1
Size: 1
- Level: 2
Size: 2
- Level: 3
Size: 3
- Level: 4
Size: 4
- Level: 5
Size: 5
------------------
Interval: Skill unit interval in milliseconds.
------------------
Target: Skill unit target type.
Friend - Targets Party, Guild, Guild Allies, and neutral players.
Party - Targets Party.
Ally - Targets Party and Guild and Guild Allies.
Guild - Targets Guild and Guild Allies.
All - Targets all. (Default)
Enemy - Targets enemy.
Self - Targets self.
SameGuild - Targets Guild but not Guild Allies.
------------------
Flag: Skill unit flags.
None - No flags.
NoEnemy - If battle_config::defunit_not_enemy is enabled, the Target is changed to Friend.
NoReiteration - Spell cannot be stacked.
NoFootSet - Spell cannot be cast near/on targets.
NoOverlap - Spell effects do not overlap.
PathCheck - Only cells with a shootable path will be placed.
NoPc - Spell cannot affect players.
NoMob - Spell cannot affect mobs.
Skill - Spell can affect skills.
Dance - Dance unit.
Ensemble - Duet unit.
Song - Song unit.
DualMode - Spell has effects both at an interval and when you step in/out.
NoKnockback - Cannot be knocked back (only unit that can be damaged).
RangedSingleUnit - Layout hack, use layout range property but only display center.
CrazyWeedImmune - Immune to GN_CRAZYWEED.
RemovedByFireRain - Removed by RL_FIRE_RAIN.
KnockbackGroup - Knock back a whole skill group (by default, skill unit is knocked back by each unit).
HiddenTrap - Hidden trap. See battle_config::traps_setting to enable this flag.

View File

@@ -1,163 +0,0 @@
//===== rAthena Documentation ================================
//= rAthena Skill Requirement Reference
//===== By: ==================================================
//= rAthena Dev Team
//===== Last Updated: ========================================
//= 20140831
//===== Description: =========================================
//= Explanation of the skill_require_db.txt file and structure.
//============================================================
Structure:
SkillID,HPCost,MaxHPTrigger,SPCost,HPRateCost,SPRateCost,ZenyCost,RequiredWeapons,RequiredAmmoTypes,RequiredAmmoAmount,RequiredState,RequiredStatuses,SpiritSphereCost,RequiredItemID1,RequiredItemAmount1,RequiredItemID2,RequiredItemAmount2,RequiredItemID3,RequiredItemAmount3,RequiredItemID4,RequiredItemAmount4,RequiredItemID5,RequiredItemAmount5,RequiredItemID6,RequiredItemAmount6,RequiredItemID7,RequiredItemAmount7,RequiredItemID8,RequiredItemAmount8,RequiredItemID9,RequiredItemAmount9,RequiredItemID10,RequiredItemAmount10,RequiredEquipment
---------------------------------------
SkillID: The ID of the skill.
See 'db\(pre-)re\skill_db.txt' for more details.
---------------------------------------
HPCost: Amount of HP needed to use the skill.
---------------------------------------
MaxHPTrigger: Player's HP must be below this % of Max HP in order to use the skill.
---------------------------------------
SPCost: Amount of SP needed to use the skill.
---------------------------------------
HPRateCost: If more than 0, the percentage of the player's current HP.
If less than 0, the percentage of the player's Max HP.
---------------------------------------
SPRateCost: If more than 0, the percentage of the player's current SP.
If less than 0, the percentage of the player's Max SP.
---------------------------------------
ZenyCost: Amount of Zeny needed to use the skill.
---------------------------------------
RequiredWeapons: Weapon type needed to use the skill.
0: bare fist
1: Daggers
2: One-handed swords
3: Two-handed swords
4: One-handed spears
5: Two-handed spears
6: One-handed axes
7: Two-handed axes
8: Maces
9: Unused
10: Staves
11: Bows
12: Knuckles
13: Musical Instruments
14: Whips
15: Books
16: Katars
17: Revolvers
18: Rifles
19: Gatling guns
20: Shotguns
21: Grenade launchers
22: Fuuma Shurikens
23: Two-handed staves
24: Max Type
25: Dual-wield Daggers
26: Dual-wield Swords
27: Dual-wield Axes
28: Dagger + Sword
29: Dagger + Axe
30: Sword + Axe
Up to 30 ':'-separated values can be used, e.g.
type1:type2:type3
---------------------------------------
RequiredAmmoTypes: Ammo type needed to use the skill.
1: Arrows
2: Throwable daggers
3: Bullets
4: Shells
5: Grenades
6: Shuriken
7: Kunai
8: Cannonballs
9: Throwable Items (Sling Item)
Up to 9 ':'-separated values can be used, e.g.
type1:type2:type3
---------------------------------------
RequiredAmmoAmount: Amount of ammo needed to use the skill.
---------------------------------------
RequiredState: The active 'State' needed to use the skill.
none = Nothing.
hidden = Requires hidden status by using Hiding, Cloaking, or Chasewalk.
riding = Requires the player to ride either a Peco or a Dragon.
falcon = Requires a Falcon.
cart = Requires a Pushcart.
For renewal, this state can be replaced by SC_PUSH_CART in 'RequiredStatuses' field.
shield = Requires an equipped shield.
recover_weight_rate = Requires to be less than 50% weight.
move_enable = Requires to be able to move.
water = Requires to be standing on a water cell.
dragon = Requires to ride a Dragon.
warg = Requires a Warg.
ridingwarg = Requires to ride a Warg.
mado = Requires to have an active Mado.
elementalspirit = Requires to have an Elemental Spirit summoned.
peco = Requires riding a Peco.
---------------------------------------
RequiredStatuses: The active statuses needed to use the skill.
Up to 3 ':'-separated values can be used, e.g.
SC_STATUS1:SC_STATUS2:SC_STATUS3
See MAX_SKILL_STATUS_REQUIRE in 'src/map/skill.hpp' to modify the max number
of possible values, and 'src/map/script_constants.hpp' for a list of status constants.
Use any number or SC_ALL to disable status requirements.
---------------------------------------
SpiritSphereCost: Amount of Spirit Sphere needed to use the skill.
---------------------------------------
RequiredItemID1..10: Items to be consumed when the skill is used (max 10).
---------------------------------------
RequiredItemAmount1..10: Amount of each item consumed when the skill is used.
If 0, the item is required to be in the inventory but won't be consumed.
---------------------------------------
RequiredEquipment: Specific equipment IDs needed to use the skill.
Up to 10 ':'-separated values can be used, e.g.
item1:item2:item3
See MAX_SKILL_EQUIP_REQUIRE in 'src/map/skill.hpp' to modify the max number
of possible values.
---------------------------------------
NOTE: On some fields, the ':' delimiter means for each skill level, but there
are some level dependent checks. See 'skill_get_requirement()' in
'src/map/skill.cpp'.

111
doc/yaml/db/skill_db.yml Normal file
View File

@@ -0,0 +1,111 @@
###########################################################################
# Skill Database
###########################################################################
#
# Skill Settings
#
###########################################################################
# - Id Unique skill ID.
# Name Skill Aegis name.
# Description Skill description.
# MaxLevel Max skill level.
# Type Skill type. (Default: None)
# TargetType Skill target type. (Default: Passive_Skill)
# DamageFlags: Skill damage properties.
# Flags: Skill information flags.
# Range: Skill range. (Default: 0)
# - Level Skill level.
# Size Range at specific skill level.
# Hit Skill hit type. (Default: Normal)
# HitCount: Skill hit count. (Default: 0)
# - Level Skill level.
# Count Number of hits at specific skill level.
# Element: Skill element. (Default: Neutral)
# - Level Skill level.
# Element Element at specific skill level.
# SplashArea: Skill splash area of effect. (Default: 0)
# - Level Skill level.
# Area Splash area at specific skill level.
# ActiveInstance: Maximum amount of active skill instances that can be on the ground. (Default: 0)
# - Level Skill level.
# Max Active instances at specific skill level.
# Knockback: Amount of tiles the skill knockbacks. (Default: 0)
# - Level Skill level.
# Amount Knockback count at specific skill level.
# CopyFlags: Determines if the skill is copyable. (Optional)
# Skill: Type of skill that can copy.
# RemoveRequirement: Remove a requirement type. (Optional)
# NoNearNPC: Determines if the skill can be used near a NPC. (Optional)
# AdditionalRange Number of cells from an NPC where the skill can be cast. (Optional)
# Type: Type of NPC.
# CastCancel Cancel cast when hit. (Default: true)
# CastDefenseReduction Defense reduction rate during skill cast. (Default: 0)
# CastTime: Time to cast the skill in milliseconds. (Default: 0)
# - Level Skill level.
# Time Cast time at specific skill level in milliseconds.
# AfterCastActDelay: Time the character cannot use skills in milliseconds. (Default: 0)
# - Level Skill level.
# Time After cast action delay at specific skill level in milliseconds.
# AfterCastWalkDelay: Time before the character can move again in milliseconds. (Default: 0)
# - Level Skill level.
# Time After cast walk delay at specific skill level in milliseconds.
# Duration1: Duration of the skill in milliseconds. (Default: 0)
# - Level Skill level.
# Time Skill duration at specific skill level in milliseconds.
# Duration2: Duration of the skill in milliseconds. (Default: 0)
# - Level Skill level.
# Time Skill duration at specific skill level in milliseconds.
# Cooldown: Time before the character can use the same skill again in milliseconds. (Default: 0)
# - Level Skill level.
# Time Cooldown at specific skill level in milliseconds.
# FixedCastTime: Time that is fixed during cast of the skill in milliseconds. (Default: 0)
# - Level Skill level.
# Time After cast action delay at specific skill level in milliseconds.
# CastTimeFlags: Effects of the skill's cast time. (Optional)
# CastDelayFlags: Effects of the skill's delay. (Optional)
# Requires: List of requirements to cast the skill. (Optional)
# HpCost: HP required to cast. (Default: 0)
# - Level Skill level.
# Amount HP required at specific skill level.
# SpCost: SP required to cast. (Default: 0)
# - Level Skill level.
# Amount SP required at specific skill level.
# HpRateCost: HP rate required to cast. If positive, uses current HP, else uses Max HP. (Default: 0)
# - Level Skill level.
# Amount HP rate required at specific skill level.
# SpRateCost: SP rate required to cast. If positive, uses current SP, else uses Max SP. (Default: 0)
# - Level Skill level.
# Amount SP rate required at specific skill level.
# MaxHpTrigger: Maximum amount of HP to cast the skill. (Default: 0)
# - Level Skill level.
# Amount Maximum HP trigger required at specific skill level.
# ZenyCost: Zeny required to cast. (Default: 0)
# - Level Skill level.
# Amount Zeny required at specific skill level.
# Weapon: Weapon required to cast. (Default: All)
# Ammo: Ammo required to cast. (Default: None)
# AmmoAmount: Ammo amount required to cast. (Default: 0)
# - Level Skill level.
# Amount Ammo amount required at specific skill level.
# State Special state required to cast. (Default: None)
# Status: Status change required to cast. (Default: nullptr)
# SphereCost: Spirit sphere required to cast. (Default: 0)
# - Level Skill level.
# Amount Spirit sphere required at specific skill level.
# ItemCost: Item required to cast. (Default: 0)
# - Item Item name.
# Amount Item amount.
# Equipment: Equipped item required to cast. (Default: nullptr)
# Unit: Skill unit values. (Optional)
# Id Skill unit ID.
# AlternateId: Alternate skill unit ID. (Default: 0)
# Layout: Skill unit layout. (Default: 0)
# - Level Skill level.
# Size Unit layout at specific skill level.
# Range: Skill unit range. (Default: 0)
# - Level Skill level.
# Size Unit range at specific skill level.
# Interval Skill unit interval in milliseconds. (Default: 0)
# Target Skill unit target type. (Default: All)
# Flag: Skill unit flags. (Default: None)
###########################################################################