From 85e587657b18adbb31f282fbac2e0bbd638519df Mon Sep 17 00:00:00 2001 From: Skold <113406182+Skold177@users.noreply.github.com> Date: Sat, 25 Apr 2026 16:35:56 -0400 Subject: [PATCH] [lua] [sql] Archery Mobskills Implements Archery Mobskills --- scripts/actions/mobskills/apex_arrow.lua | 37 ++++++++++++++ scripts/actions/mobskills/arching_arrow.lua | 16 +++--- scripts/actions/mobskills/blast_arrow.lua | 38 ++++++++++++++ scripts/actions/mobskills/dulling_arrow.lua | 40 +++++++++++++++ scripts/actions/mobskills/empyreal_arrow.lua | 39 +++++++++++++++ scripts/actions/mobskills/flaming_arrow.lua | 50 +++++++++++++++++++ .../actions/mobskills/jishnus_radiance.lua | 37 ++++++++++++++ scripts/actions/mobskills/namas_arrow.lua | 23 +++++---- scripts/actions/mobskills/piercing_arrow.lua | 39 +++++++++++++++ scripts/actions/mobskills/refulgent_arrow.lua | 36 +++++++++++++ scripts/actions/mobskills/sarv.lua | 37 ++++++++++++++ scripts/actions/mobskills/sidewinder.lua | 25 ++++++---- sql/mob_skills.sql | 24 ++++----- 13 files changed, 402 insertions(+), 39 deletions(-) create mode 100644 scripts/actions/mobskills/apex_arrow.lua create mode 100644 scripts/actions/mobskills/blast_arrow.lua create mode 100644 scripts/actions/mobskills/dulling_arrow.lua create mode 100644 scripts/actions/mobskills/empyreal_arrow.lua create mode 100644 scripts/actions/mobskills/flaming_arrow.lua create mode 100644 scripts/actions/mobskills/jishnus_radiance.lua create mode 100644 scripts/actions/mobskills/piercing_arrow.lua create mode 100644 scripts/actions/mobskills/refulgent_arrow.lua create mode 100644 scripts/actions/mobskills/sarv.lua diff --git a/scripts/actions/mobskills/apex_arrow.lua b/scripts/actions/mobskills/apex_arrow.lua new file mode 100644 index 00000000000..5866633d559 --- /dev/null +++ b/scripts/actions/mobskills/apex_arrow.lua @@ -0,0 +1,37 @@ +----------------------------------- +-- Apex Arrow +-- Family: Humanoid Archery Weaponskill +-- Description: Ignores enemy's defense. Amount ignored varies with TP. +----------------------------------- +---@type TMobSkill +local mobskillObject = {} + +mobskillObject.onMobSkillCheck = function(target, mob, skill) + return 0 +end + +mobskillObject.onMobWeaponSkill = function(mob, target, skill, action) + local params = {} + + params.baseDamage = mob:getWeaponDmg() + params.numHits = 1 + params.fTP = { 3.0, 3.0, 3.0 } + -- params.agi_wSC = 0.85 -- TODO: Capture if mobskill weaponskills have wSC. + params.skipParry = true + params.skipGuard = true + params.skipBlock = true + params.ignoreDefense = { 0.15, 0.35, 0.5 } + params.attackType = xi.attackType.RANGED + params.damageType = xi.damageType.PIERCING + params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_1 + + local info = xi.mobskills.mobRangedMove(mob, target, skill, action, params) + + if xi.mobskills.processDamage(mob, target, skill, action, info) then + target:takeDamage(info.damage, mob, info.attackType, info.damageType) + end + + return info.damage +end + +return mobskillObject diff --git a/scripts/actions/mobskills/arching_arrow.lua b/scripts/actions/mobskills/arching_arrow.lua index 780b991b052..a317780a3d6 100644 --- a/scripts/actions/mobskills/arching_arrow.lua +++ b/scripts/actions/mobskills/arching_arrow.lua @@ -2,9 +2,8 @@ -- Arching Arrow -- Family: Humanoid Archery Weaponskill -- Description: Delivers a single-hit attack. Chance of critical varies with TP. --- Modifiers: STR:20%; AGI:50% --- Darkness/Gravitation skillchain properties, AoE damage --- Notes: Used by Trust: Semih Lafihna +-- Darkness/Gravitation skillchain properties. +-- NOTES: Used by Semih Lafihna ----------------------------------- ---@type TMobSkill local mobskillObject = {} @@ -18,13 +17,16 @@ mobskillObject.onMobWeaponSkill = function(mob, target, skill, action) params.baseDamage = mob:getWeaponDmg() params.numHits = 1 - params.fTP = { 3.5, 3.5, 3.5 } -- TODO: Capture fTPs - params.attackType = xi.attackType.PHYSICAL - params.damageType = xi.damageType.PIERCING - params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_1 -- TODO: Capture shadowBehavior + params.fTP = { 3.5, 3.5, 3.5 } + -- params.str_wSC = 0.16 -- TODO: Capture if mobskill weaponskills have wSC. + -- params.agi_wSC = 0.25 -- TODO: Capture if mobskill weaponskills have wSC. params.skipParry = true params.skipGuard = true params.skipBlock = true + params.criticalChance = { 0.1, 0.3, 0.5 } + params.attackType = xi.attackType.RANGED + params.damageType = xi.damageType.PIERCING + params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_1 local info = xi.mobskills.mobRangedMove(mob, target, skill, action, params) diff --git a/scripts/actions/mobskills/blast_arrow.lua b/scripts/actions/mobskills/blast_arrow.lua new file mode 100644 index 00000000000..699bf74cee9 --- /dev/null +++ b/scripts/actions/mobskills/blast_arrow.lua @@ -0,0 +1,38 @@ +----------------------------------- +-- Blast Arrow +-- Family: Humanoid Archery Weaponskill +-- Description: Delivers a melee-distance ranged attack. Accuracy varies with TP. +----------------------------------- +---@type TMobSkill +local mobskillObject = {} + +mobskillObject.onMobSkillCheck = function(target, mob, skill) + return 0 +end + +mobskillObject.onMobWeaponSkill = function(mob, target, skill, action) + local params = {} + + params.baseDamage = mob:getWeaponDmg() + params.numHits = 1 + params.fTP = { 2.0, 2.0, 2.0 } + -- params.str_wSC = 0.16 -- TODO: Capture if mobskill weaponskills have wSC. + -- params.agi_wSC = 0.25 -- TODO: Capture if mobskill weaponskills have wSC. + params.skipParry = true + params.skipGuard = true + params.skipBlock = true + params.accuracyModifier = { 0, 30, 60 } + params.attackType = xi.attackType.RANGED + params.damageType = xi.damageType.PIERCING + params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_1 + + local info = xi.mobskills.mobRangedMove(mob, target, skill, action, params) + + if xi.mobskills.processDamage(mob, target, skill, action, info) then + target:takeDamage(info.damage, mob, info.attackType, info.damageType) + end + + return info.damage +end + +return mobskillObject diff --git a/scripts/actions/mobskills/dulling_arrow.lua b/scripts/actions/mobskills/dulling_arrow.lua new file mode 100644 index 00000000000..a67d00aefbf --- /dev/null +++ b/scripts/actions/mobskills/dulling_arrow.lua @@ -0,0 +1,40 @@ +----------------------------------- +-- Dulling Arrow +-- Family: Humanoid Archery Weaponskill +-- Description: Lowers enemy's INT. Chance of critical varies with TP. +----------------------------------- +---@type TMobSkill +local mobskillObject = {} + +mobskillObject.onMobSkillCheck = function(target, mob, skill) + return 0 +end + +mobskillObject.onMobWeaponSkill = function(mob, target, skill, action) + local params = {} + + params.baseDamage = mob:getWeaponDmg() + params.numHits = 1 + params.fTP = { 1.0, 1.0, 1.0 } + -- params.str_wSC = 0.16 -- TODO: Capture if mobskill weaponskills have wSC. + -- params.agi_wSC = 0.25 -- TODO: Capture if mobskill weaponskills have wSC. + params.skipParry = true + params.skipGuard = true + params.skipBlock = true + params.criticalChance = { 0.1, 0.3, 0.5 } + params.attackType = xi.attackType.RANGED + params.damageType = xi.damageType.PIERCING + params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_1 + + local info = xi.mobskills.mobRangedMove(mob, target, skill, action, params) + + if xi.mobskills.processDamage(mob, target, skill, action, info) then + target:takeDamage(info.damage, mob, info.attackType, info.damageType) + + xi.mobskills.mobStatusEffectMove(mob, target, xi.effect.INT_DOWN, 10, 0, 120) + end + + return info.damage +end + +return mobskillObject diff --git a/scripts/actions/mobskills/empyreal_arrow.lua b/scripts/actions/mobskills/empyreal_arrow.lua new file mode 100644 index 00000000000..d9eb00d8f5b --- /dev/null +++ b/scripts/actions/mobskills/empyreal_arrow.lua @@ -0,0 +1,39 @@ +----------------------------------- +-- Empyreal Arrow +-- Family: Humanoid Archery Weaponskill +-- Description: Delivers a single-hit attack. Damage varies with TP. +----------------------------------- +---@type TMobSkill +local mobskillObject = {} + +mobskillObject.onMobSkillCheck = function(target, mob, skill) + return 0 +end + +mobskillObject.onMobWeaponSkill = function(mob, target, skill, action) + local params = {} + + params.baseDamage = mob:getWeaponDmg() + params.numHits = 1 + params.fTP = { 2.0, 2.75, 3.0 } + params.attackMultiplier = { 2.0, 2.0, 2.0 } + -- params.str_wSC = 0.16 -- TODO: Capture if mobskill weaponskills have wSC. + -- params.agi_wSC = 0.25 -- TODO: Capture if mobskill weaponskills have wSC. + params.skipParry = true + params.skipGuard = true + params.skipBlock = true + params.accuracyModifier = { 100, 100, 100 } + params.attackType = xi.attackType.RANGED + params.damageType = xi.damageType.PIERCING + params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_1 + + local info = xi.mobskills.mobRangedMove(mob, target, skill, action, params) + + if xi.mobskills.processDamage(mob, target, skill, action, info) then + target:takeDamage(info.damage, mob, info.attackType, info.damageType) + end + + return info.damage +end + +return mobskillObject diff --git a/scripts/actions/mobskills/flaming_arrow.lua b/scripts/actions/mobskills/flaming_arrow.lua new file mode 100644 index 00000000000..cb2db83e623 --- /dev/null +++ b/scripts/actions/mobskills/flaming_arrow.lua @@ -0,0 +1,50 @@ +----------------------------------- +-- Flaming Arrow +-- Family: Humanoid Archery Weaponskill +-- Description: Deals fire elemental damage. Damage varies with TP. +----------------------------------- +---@type TMobSkill +local mobskillObject = {} + +mobskillObject.onMobSkillCheck = function(target, mob, skill) + return 0 +end + +mobskillObject.onMobWeaponSkill = function(mob, target, skill, action) + local params = {} + + params.baseDamage = mob:getWeaponDmg() + params.numHits = 1 + params.fTP = { 1.0, 1.0, 1.0 } + -- params.str_wSC = 0.16 -- TODO: Capture if mobskill weaponskills have wSC. + -- params.agi_wSC = 0.25 -- TODO: Capture if mobskill weaponskills have wSC. + params.skipParry = true + params.skipGuard = true + params.skipBlock = true + params.attackType = xi.attackType.RANGED + params.damageType = xi.damageType.PIERCING + params.hybridSkill = true + params.hybridSkillElement = xi.element.FIRE + params.hybridAttackType = xi.attackType.MAGICAL + params.hybridDamageType = xi.damageType.FIRE + params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_1 + + local info = xi.mobskills.mobRangedMove(mob, target, skill, action, params) + local totalDamage = 0 + + if xi.mobskills.processDamage(mob, target, skill, action, info) then + if info.damage > 0 then + target:takeDamage(info.damage, mob, info.attackType, info.damageType) + totalDamage = totalDamage + info.damage + end + + if info.hybridDamage > 0 and target:getHP() > 0 then + target:takeDamage(info.hybridDamage, mob, info.hybridAttackType, info.hybridDamageType) + totalDamage = totalDamage + info.hybridDamage + end + end + + return totalDamage +end + +return mobskillObject diff --git a/scripts/actions/mobskills/jishnus_radiance.lua b/scripts/actions/mobskills/jishnus_radiance.lua new file mode 100644 index 00000000000..ebe18c0bce5 --- /dev/null +++ b/scripts/actions/mobskills/jishnus_radiance.lua @@ -0,0 +1,37 @@ +----------------------------------- +-- Jishnu's Radiance +-- Family: Humanoid Archery Weaponskill +-- Description: Delivers a threefold attack. Chance of critical hit varies with TP. +----------------------------------- +---@type TMobSkill +local mobskillObject = {} + +mobskillObject.onMobSkillCheck = function(target, mob, skill) + return 0 +end + +mobskillObject.onMobWeaponSkill = function(mob, target, skill, action) + local params = {} + + params.baseDamage = mob:getWeaponDmg() + params.numHits = 3 + params.fTP = { 1.75, 1.75, 1.75 } + -- params.dex_wSC = 0.6 -- TODO: Capture if mobskill weaponskills have wSC. + params.skipParry = true + params.skipGuard = true + params.skipBlock = true + params.criticalChance = { 0.15, 0.2, 0.25 } + params.attackType = xi.attackType.RANGED + params.damageType = xi.damageType.PIERCING + params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_3 + + local info = xi.mobskills.mobRangedMove(mob, target, skill, action, params) + + if xi.mobskills.processDamage(mob, target, skill, action, info) then + target:takeDamage(info.damage, mob, info.attackType, info.damageType) + end + + return info.damage +end + +return mobskillObject diff --git a/scripts/actions/mobskills/namas_arrow.lua b/scripts/actions/mobskills/namas_arrow.lua index b5150bb50d9..5103f12e2fc 100644 --- a/scripts/actions/mobskills/namas_arrow.lua +++ b/scripts/actions/mobskills/namas_arrow.lua @@ -1,7 +1,7 @@ ----------------------------------- -- Namas Arrow -- Family: Humanoid Archery Weaponskill --- Description: Yoichinoyumi/Futatokoroto: Temporarily improves Ranged Accuracy +-- Description: Delivers a single-hit attack. ----------------------------------- ---@type TMobSkill local mobskillObject = {} @@ -13,15 +13,18 @@ end mobskillObject.onMobWeaponSkill = function(mob, target, skill, action) local params = {} - params.baseDamage = mob:getWeaponDmg() - params.numHits = 1 - params.fTP = { 2.5, 2.5, 2.5 } -- TODO: Capture fTPs - params.attackType = xi.attackType.PHYSICAL - params.damageType = xi.damageType.PIERCING - params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_1 - params.skipParry = true - params.skipGuard = true - params.skipBlock = true + params.baseDamage = mob:getWeaponDmg() + params.numHits = 1 + params.fTP = { 2.75, 2.75, 2.75 } + -- params.str_wSC = 0.4 -- TODO: Capture if mobskill weaponskills have wSC. + -- params.agi_wSC = 0.4 -- TODO: Capture if mobskill weaponskills have wSC. + params.skipParry = true + params.skipGuard = true + params.skipBlock = true + params.accuracyModifier = { 100, 100, 100 } + params.attackType = xi.attackType.RANGED + params.damageType = xi.damageType.PIERCING + params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_1 local info = xi.mobskills.mobRangedMove(mob, target, skill, action, params) diff --git a/scripts/actions/mobskills/piercing_arrow.lua b/scripts/actions/mobskills/piercing_arrow.lua new file mode 100644 index 00000000000..1a8864a219a --- /dev/null +++ b/scripts/actions/mobskills/piercing_arrow.lua @@ -0,0 +1,39 @@ +----------------------------------- +-- Piercing Arrow +-- Family: Humanoid Archery Weaponskill +-- Description: Ignores enemy's defense. Amount ignored varies with TP. +----------------------------------- +---@type TMobSkill +local mobskillObject = {} + +mobskillObject.onMobSkillCheck = function(target, mob, skill) + return 0 +end + +mobskillObject.onMobWeaponSkill = function(mob, target, skill, action) + local params = {} + + params.baseDamage = mob:getWeaponDmg() + params.numHits = 1 + params.fTP = { 1.0, 1.0, 1.0 } + -- params.str_wSC = 0.16 -- TODO: Capture if mobskill weaponskills have wSC. + -- params.agi_wSC = 0.25 -- TODO: Capture if mobskill weaponskills have wSC. + params.skipParry = true + params.skipGuard = true + params.skipBlock = true + params.accuracyModifier = { 30, 30, 30 } + params.ignoreDefense = { 0.0, 0.35, 0.5 } + params.attackType = xi.attackType.RANGED + params.damageType = xi.damageType.PIERCING + params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_1 + + local info = xi.mobskills.mobRangedMove(mob, target, skill, action, params) + + if xi.mobskills.processDamage(mob, target, skill, action, info) then + target:takeDamage(info.damage, mob, info.attackType, info.damageType) + end + + return info.damage +end + +return mobskillObject diff --git a/scripts/actions/mobskills/refulgent_arrow.lua b/scripts/actions/mobskills/refulgent_arrow.lua new file mode 100644 index 00000000000..e03ef393a88 --- /dev/null +++ b/scripts/actions/mobskills/refulgent_arrow.lua @@ -0,0 +1,36 @@ +----------------------------------- +-- Refulgent Arrow +-- Family: Humanoid Archery Weaponskill +-- Description: Delivers a twofold attack. Damage varies with TP. +----------------------------------- +---@type TMobSkill +local mobskillObject = {} + +mobskillObject.onMobSkillCheck = function(target, mob, skill) + return 0 +end + +mobskillObject.onMobWeaponSkill = function(mob, target, skill, action) + local params = {} + + params.baseDamage = mob:getWeaponDmg() + params.numHits = 2 + params.fTP = { 3.0, 4.25, 5.0 } + -- params.str_wSC = 0.16 -- TODO: Capture if mobskill weaponskills have wSC. + params.skipParry = true + params.skipGuard = true + params.skipBlock = true + params.attackType = xi.attackType.RANGED + params.damageType = xi.damageType.PIERCING + params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_2 + + local info = xi.mobskills.mobRangedMove(mob, target, skill, action, params) + + if xi.mobskills.processDamage(mob, target, skill, action, info) then + target:takeDamage(info.damage, mob, info.attackType, info.damageType) + end + + return info.damage +end + +return mobskillObject diff --git a/scripts/actions/mobskills/sarv.lua b/scripts/actions/mobskills/sarv.lua new file mode 100644 index 00000000000..5d4b8f9c159 --- /dev/null +++ b/scripts/actions/mobskills/sarv.lua @@ -0,0 +1,37 @@ +----------------------------------- +-- Sarv +-- Family: Humanoid Archery Weaponskill +-- Description: Damage varies with TP. +----------------------------------- +---@type TMobSkill +local mobskillObject = {} + +mobskillObject.onMobSkillCheck = function(target, mob, skill) + return 0 +end + +mobskillObject.onMobWeaponSkill = function(mob, target, skill, action) + local params = {} + + params.baseDamage = mob:getWeaponDmg() + params.numHits = 1 + params.fTP = { 2.75, 5.5, 8.25 } + -- params.str_wSC = 0.65 -- TODO: Capture if mobskill weaponskills have wSC. + -- params.agi_wSC = 0.65 -- TODO: Capture if mobskill weaponskills have wSC. + params.skipParry = true + params.skipGuard = true + params.skipBlock = true + params.attackType = xi.attackType.RANGED + params.damageType = xi.damageType.PIERCING + params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_1 + + local info = xi.mobskills.mobRangedMove(mob, target, skill, action, params) + + if xi.mobskills.processDamage(mob, target, skill, action, info) then + target:takeDamage(info.damage, mob, info.attackType, info.damageType) + end + + return info.damage +end + +return mobskillObject diff --git a/scripts/actions/mobskills/sidewinder.lua b/scripts/actions/mobskills/sidewinder.lua index 8e2fe29f48b..72226401c88 100644 --- a/scripts/actions/mobskills/sidewinder.lua +++ b/scripts/actions/mobskills/sidewinder.lua @@ -1,9 +1,9 @@ ----------------------------------- -- Sidewinder -- Family: Humanoid Archery Weaponskill --- Delivers an inaccurate attack that deals quintuple damage. Accuracy varies with TP. +-- Description: Delivers an inaccurate attack that deals quintuple damage. Accuracy varies with TP. -- Reverberation/Transfixtion/Detonation skillchain properties --- Notes: Used by Semih Lafihna +-- NOTES: Used by Semih Lafihna ----------------------------------- ---@type TMobSkill local mobskillObject = {} @@ -15,15 +15,20 @@ end mobskillObject.onMobWeaponSkill = function(mob, target, skill, action) local params = {} - params.baseDamage = mob:getWeaponDmg() - params.numHits = 1 - params.fTP = { 5.0, 5.0, 5.0 } - params.attackType = xi.attackType.PHYSICAL - params.damageType = xi.damageType.PIERCING - params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_1 - -- TODO: Accuracy modifier + params.baseDamage = mob:getWeaponDmg() + params.numHits = 1 + params.fTP = { 5.0, 5.0, 5.0 } + -- params.str_wSC = 0.16 -- TODO: Capture if mobskill weaponskills have wSC. + -- params.agi_wSC = 0.25 -- TODO: Capture if mobskill weaponskills have wSC. + params.skipParry = true + params.skipGuard = true + params.skipBlock = true + params.accuracyModifier = { -50, 0, 0 } + params.attackType = xi.attackType.RANGED + params.damageType = xi.damageType.PIERCING + params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_1 - local info = xi.mobskills.mobPhysicalMove(mob, target, skill, action, params) + local info = xi.mobskills.mobRangedMove(mob, target, skill, action, params) if xi.mobskills.processDamage(mob, target, skill, action, info) then target:takeDamage(info.damage, mob, info.attackType, info.damageType) diff --git a/sql/mob_skills.sql b/sql/mob_skills.sql index 2de2fabfb53..6fbc164e443 100644 --- a/sql/mob_skills.sql +++ b/sql/mob_skills.sql @@ -228,18 +228,18 @@ INSERT INTO `mob_skills` VALUES (170,86,'randgrith',0,0.0,7.0,2000,0,4,0,0,0,13, -- INSERT INTO `mob_skills` VALUES (189,??,'cataclysm' -- INSERT INTO `mob_skills` VALUES (190,??,'myrkr' -- INSERT INTO `mob_skills` VALUES (191,??,'shattersoul' --- INSERT INTO `mob_skills` VALUES (192,??,'flaming_arrow' --- INSERT INTO `mob_skills` VALUES (193,??,'piercing_arrow' --- INSERT INTO `mob_skills` VALUES (194,??,'dulling_arrow' --- INSERT INTO `mob_skills` VALUES (196,??,'sidewinder' --- INSERT INTO `mob_skills` VALUES (197,??,'blast_arrow' --- INSERT INTO `mob_skills` VALUES (198,??,'arching_arrow' --- INSERT INTO `mob_skills` VALUES (199,??,'empyreal_arrow' --- INSERT INTO `mob_skills` VALUES (200,??,'namas_arrow' --- INSERT INTO `mob_skills` VALUES (201,??,'refulgent_arrow' --- INSERT INTO `mob_skills` VALUES (202,??,'jishnus_radiance' --- INSERT INTO `mob_skills` VALUES (203,??,'apex_arrow' --- INSERT INTO `mob_skills` VALUES (204,??,'sarv' +INSERT INTO `mob_skills` VALUES (192,191,'flaming_arrow',0,0.0,15.0,2000,0,4,0,0,0,3,1,0); +INSERT INTO `mob_skills` VALUES (193,192,'piercing_arrow',0,0.0,15.0,2000,0,4,0,0,0,5,1,0); +INSERT INTO `mob_skills` VALUES (194,193,'dulling_arrow',0,0.0,15.0,2000,0,4,0,0,0,3,1,0); +INSERT INTO `mob_skills` VALUES (196,195,'sidewinder',0,0.0,15.0,2000,0,4,0,0,0,5,1,6); +INSERT INTO `mob_skills` VALUES (197,219,'blast_arrow',0,0.0,5.0,2000,0,4,0,0,0,7,1,0); +INSERT INTO `mob_skills` VALUES (198,220,'arching_arrow',0,0.0,15.0,2000,0,4,0,0,0,11,0,0); +INSERT INTO `mob_skills` VALUES (199,221,'empyreal_arrow',0,0.0,15.0,2000,0,4,0,0,0,11,1,0); +INSERT INTO `mob_skills` VALUES (200,225,'namas_arrow',0,0.0,15.0,2000,0,4,0,0,0,13,10,0); +INSERT INTO `mob_skills` VALUES (201,232,'refulgent_arrow',0,0.0,15.0,2000,0,4,0,0,0,5,1,0); +INSERT INTO `mob_skills` VALUES (202,234,'jishnus_radiance',0,0.0,15.0,2000,0,4,0,0,0,13,11,0); +INSERT INTO `mob_skills` VALUES (203,240,'apex_arrow',0,0.0,15.0,2000,0,4,0,0,0,12,1,0); +INSERT INTO `mob_skills` VALUES (204,225,'sarv',0,0.0,15.0,2000,0,4,0,0,0,9,4,1); INSERT INTO `mob_skills` VALUES (208,196,'hot_shot',0,0.0,15.0,2000,0,4,0,0,0,3,1,0); INSERT INTO `mob_skills` VALUES (209,197,'split_shot',0,0.0,15.0,2000,0,4,0,0,0,5,1,0); INSERT INTO `mob_skills` VALUES (210,198,'sniper_shot',0,0.0,15.0,2000,0,4,0,0,0,3,1,0);