From 18f3937799ec6a0bab59da946c50b366e646fe71 Mon Sep 17 00:00:00 2001 From: Skold <113406182+Skold177@users.noreply.github.com> Date: Sat, 25 Apr 2026 12:33:00 -0400 Subject: [PATCH] [lua] [sql] Scythe Mobskills --- scripts/actions/mobskills/catastrophe.lua | 15 ++++-- scripts/actions/mobskills/cross_reaper.lua | 34 +++++++++++++ scripts/actions/mobskills/dark_harvest.lua | 37 ++++++++++++++ scripts/actions/mobskills/entropy.lua | 34 +++++++++++++ scripts/actions/mobskills/guillotine.lua | 8 ++-- scripts/actions/mobskills/infernal_scythe.lua | 36 ++++++++++++++ scripts/actions/mobskills/insurgency.lua | 34 +++++++++++++ .../actions/mobskills/nightmare_scythe.lua | 36 ++++++++++++++ scripts/actions/mobskills/origin.lua | 48 +++++++++++++++++++ scripts/actions/mobskills/quietus.lua | 35 ++++++++++++++ scripts/actions/mobskills/shadow_of_death.lua | 37 ++++++++++++++ scripts/actions/mobskills/slice.lua | 33 +++++++++++++ scripts/actions/mobskills/spinning_scythe.lua | 10 ++-- scripts/actions/mobskills/spiral_hell.lua | 8 ++-- scripts/actions/mobskills/vorpal_scythe.lua | 7 +-- sql/mob_skills.sql | 29 +++++------ 16 files changed, 410 insertions(+), 31 deletions(-) create mode 100644 scripts/actions/mobskills/cross_reaper.lua create mode 100644 scripts/actions/mobskills/dark_harvest.lua create mode 100644 scripts/actions/mobskills/entropy.lua create mode 100644 scripts/actions/mobskills/infernal_scythe.lua create mode 100644 scripts/actions/mobskills/insurgency.lua create mode 100644 scripts/actions/mobskills/nightmare_scythe.lua create mode 100644 scripts/actions/mobskills/origin.lua create mode 100644 scripts/actions/mobskills/quietus.lua create mode 100644 scripts/actions/mobskills/shadow_of_death.lua create mode 100644 scripts/actions/mobskills/slice.lua diff --git a/scripts/actions/mobskills/catastrophe.lua b/scripts/actions/mobskills/catastrophe.lua index 0261ebb0510..bdeea18b1a1 100644 --- a/scripts/actions/mobskills/catastrophe.lua +++ b/scripts/actions/mobskills/catastrophe.lua @@ -1,7 +1,7 @@ ----------------------------------- -- Catastrophe -- Family: Humanoid Scythe Weaponskill --- Description: Deals damage to a target. Additional Effect: HP Drain +-- Description: Converts damage dealt into own HP. ----------------------------------- ---@type TMobSkill local mobskillObject = {} @@ -12,10 +12,13 @@ end mobskillObject.onMobWeaponSkill = function(mob, target, skill, action) local params = {} + local targetHP = target:getHP() params.baseDamage = mob:getWeaponDmg() params.numHits = 1 - params.fTP = { 2.5, 2.5, 2.5 } + params.fTP = { 2.75, 2.75, 2.75 } + -- params.agi_wSC = 0.4 -- TODO: Capture if mobskill weaponskills have wSC. + -- params.int_wSC = 0.4 -- TODO: Capture if mobskill weaponskills have wSC. params.attackType = xi.attackType.PHYSICAL params.damageType = xi.damageType.SLASHING params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_1 @@ -23,7 +26,13 @@ mobskillObject.onMobWeaponSkill = function(mob, target, skill, action) local info = xi.mobskills.mobPhysicalMove(mob, target, skill, action, params) if xi.mobskills.processDamage(mob, target, skill, action, info) then - skill:setMsg(xi.mobskills.mobDrainMove(mob, target, xi.mobskills.drainType.HP, info.damage)) + target:takeDamage(info.damage, mob, info.attackType, info.damageType) + + if not target:isUndead() then + local drain = math.floor(info.damage * math.random(30, 70) / 100) + + mob:addHP(utils.clamp(drain, 0, targetHP)) + end end return info.damage diff --git a/scripts/actions/mobskills/cross_reaper.lua b/scripts/actions/mobskills/cross_reaper.lua new file mode 100644 index 00000000000..22fbd430964 --- /dev/null +++ b/scripts/actions/mobskills/cross_reaper.lua @@ -0,0 +1,34 @@ +----------------------------------- +-- Cross Reaper +-- Family: Humanoid Scythe 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 = { 2.0, 2.25, 2.5 } + -- params.str_wSC = 0.3 -- TODO: Capture if mobskill weaponskills have wSC. + -- params.mnd_wSC = 0.3 -- TODO: Capture if mobskill weaponskills have wSC. + params.attackType = xi.attackType.PHYSICAL + params.damageType = xi.damageType.SLASHING + params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_2 + + local info = xi.mobskills.mobPhysicalMove(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/dark_harvest.lua b/scripts/actions/mobskills/dark_harvest.lua new file mode 100644 index 00000000000..16d0377f4a4 --- /dev/null +++ b/scripts/actions/mobskills/dark_harvest.lua @@ -0,0 +1,37 @@ +----------------------------------- +-- Dark Harvest +-- Family: Humanoid Scythe Weaponskill +-- Description: Deals darkness 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:getMainLvl() + 2 + params.fTP = { 1.0, 2.0, 2.5 } + -- params.str_wSC = 0.2 -- TODO: Capture if mobskill weaponskills have wSC. + -- params.int_wSC = 0.2 -- TODO: Capture if mobskill weaponskills have wSC. + params.element = xi.element.DARK + params.attackType = xi.attackType.MAGICAL + params.damageType = xi.damageType.DARK + params.shadowBehavior = xi.mobskills.shadowBehavior.IGNORE_SHADOWS + params.dStatMultiplier = 1 + params.dStatAttackerMod = xi.mod.INT + params.dStatDefenderMod = xi.mod.INT + + local info = xi.mobskills.mobMagicalMove(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/entropy.lua b/scripts/actions/mobskills/entropy.lua new file mode 100644 index 00000000000..a95cb0a6e3c --- /dev/null +++ b/scripts/actions/mobskills/entropy.lua @@ -0,0 +1,34 @@ +----------------------------------- +-- Entropy +-- Family: Humanoid Scythe Weaponskill +-- Description: Delivers a fourfold attack that converts damage dealt into own MP. 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 = 4 + params.fTP = { 0.75, 1.25, 2.0 } + -- params.int_wSC = 0.85 -- TODO: Capture if mobskill weaponskills have wSC. + params.attackType = xi.attackType.PHYSICAL + params.damageType = xi.damageType.SLASHING + params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_4 + + local info = xi.mobskills.mobPhysicalMove(mob, target, skill, action, params) + + if xi.mobskills.processDamage(mob, target, skill, action, info) then + target:takeDamage(info.damage, mob, info.attackType, info.damageType) + mob:addMP(math.floor(info.damage * 0.2)) + end + + return info.damage +end + +return mobskillObject diff --git a/scripts/actions/mobskills/guillotine.lua b/scripts/actions/mobskills/guillotine.lua index 07c9781d38e..601d4389e31 100644 --- a/scripts/actions/mobskills/guillotine.lua +++ b/scripts/actions/mobskills/guillotine.lua @@ -1,7 +1,7 @@ ----------------------------------- -- Guillotine -- Family: Humanoid Scythe Weaponskill --- Description: Delivers a four-hit attack. Additional Effect: Silence +-- Description: Delivers a fourfold attack that silences target. Duration of silence varies with TP. ----------------------------------- ---@type TMobSkill local mobskillObject = {} @@ -15,7 +15,9 @@ mobskillObject.onMobWeaponSkill = function(mob, target, skill, action) params.baseDamage = mob:getWeaponDmg() params.numHits = 4 - params.fTP = { 0.8, 0.8, 0.8 } -- TODO: Capture fTPs + params.fTP = { 0.875, 0.875, 0.875 } + -- params.str_wSC = 0.25 -- TODO: Capture if mobskill weaponskills have wSC. + -- params.mnd_wSC = 0.25 -- TODO: Capture if mobskill weaponskills have wSC. params.attackType = xi.attackType.PHYSICAL params.damageType = xi.damageType.SLASHING params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_4 @@ -25,7 +27,7 @@ mobskillObject.onMobWeaponSkill = function(mob, target, skill, action) 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.SILENCE, 1, 0, (skill:getTP() * 30 / 1000) + 30) + xi.mobskills.mobStatusEffectMove(mob, target, xi.effect.SILENCE, 1, 0, math.floor(30 + 3 * skill:getTP() / 100)) end return info.damage diff --git a/scripts/actions/mobskills/infernal_scythe.lua b/scripts/actions/mobskills/infernal_scythe.lua new file mode 100644 index 00000000000..825d6c5cdd7 --- /dev/null +++ b/scripts/actions/mobskills/infernal_scythe.lua @@ -0,0 +1,36 @@ +----------------------------------- +-- Infernal Scythe +-- Family: Humanoid Scythe Weaponskill +-- Description: Deals darkness elemental damage. Additional effect: Lowers target's attack. Duration of effect 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:getMainLvl() + 2 + params.fTP = { 3.5, 3.5, 3.5 } + -- params.str_wSC = 0.3 -- TODO: Capture if mobskill weaponskills have wSC. + -- params.int_wSC = 0.3 -- TODO: Capture if mobskill weaponskills have wSC. + params.element = xi.element.DARK + params.attackType = xi.attackType.MAGICAL + params.damageType = xi.damageType.DARK + params.shadowBehavior = xi.mobskills.shadowBehavior.IGNORE_SHADOWS + + local info = xi.mobskills.mobMagicalMove(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.ATTACK_DOWN, 25, 0, math.floor(18 * skill:getTP() / 100)) + end + + return info.damage +end + +return mobskillObject diff --git a/scripts/actions/mobskills/insurgency.lua b/scripts/actions/mobskills/insurgency.lua new file mode 100644 index 00000000000..265602cbaf0 --- /dev/null +++ b/scripts/actions/mobskills/insurgency.lua @@ -0,0 +1,34 @@ +----------------------------------- +-- Insurgency +-- Family: Humanoid Scythe Weaponskill +-- Description: Delivers a fourfold 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 = 4 + params.fTP = { 0.5, 0.75, 1.0 } + -- params.str_wSC = 0.2 -- TODO: Capture if mobskill weaponskills have wSC. + -- params.int_wSC = 0.2 -- TODO: Capture if mobskill weaponskills have wSC. + params.attackType = xi.attackType.PHYSICAL + params.damageType = xi.damageType.SLASHING + params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_4 + + local info = xi.mobskills.mobPhysicalMove(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/nightmare_scythe.lua b/scripts/actions/mobskills/nightmare_scythe.lua new file mode 100644 index 00000000000..569576ba603 --- /dev/null +++ b/scripts/actions/mobskills/nightmare_scythe.lua @@ -0,0 +1,36 @@ +----------------------------------- +-- Nightmare Scythe +-- Family: Humanoid Scythe Weaponskill +-- Description: Blinds enemy. Duration of blindness 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.3 -- TODO: Capture if mobskill weaponskills have wSC. + -- params.mnd_wSC = 0.3 -- TODO: Capture if mobskill weaponskills have wSC. + params.attackType = xi.attackType.PHYSICAL + params.damageType = xi.damageType.SLASHING + params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_1 + + local info = xi.mobskills.mobPhysicalMove(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.BLINDNESS, 20, 0, math.floor(6 * skill:getTP() / 100)) + end + + return info.damage +end + +return mobskillObject diff --git a/scripts/actions/mobskills/origin.lua b/scripts/actions/mobskills/origin.lua new file mode 100644 index 00000000000..9f444b6e991 --- /dev/null +++ b/scripts/actions/mobskills/origin.lua @@ -0,0 +1,48 @@ +----------------------------------- +-- Origin +-- Family: Humanoid Scythe Weaponskill +-- Description: Absorbs HP and MP. Damage varies with TP. +-- TODO: Range like Catastrophe? Is HP/MP Drain 1:1? BG Wiki claims it is clamped by current HP/MP. +----------------------------------- +---@type TMobSkill +local mobskillObject = {} + +mobskillObject.onMobSkillCheck = function(target, mob, skill) + return 0 +end + +mobskillObject.onMobWeaponSkill = function(mob, target, skill, action) + local params = {} + local targetHP = target:getHP() + local targetMP = target:getMP() + + params.baseDamage = mob:getWeaponDmg() + params.numHits = 1 + params.fTP = { 3.0, 6.0, 9.0 } + -- params.str_wSC = 0.6 -- TODO: Capture if mobskill weaponskills have wSC. + -- params.int_wSC = 0.6 -- TODO: Capture if mobskill weaponskills have wSC. + params.attackType = xi.attackType.PHYSICAL + params.damageType = xi.damageType.SLASHING + params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_1 + + local info = xi.mobskills.mobPhysicalMove(mob, target, skill, action, params) + + if xi.mobskills.processDamage(mob, target, skill, action, info) then + target:takeDamage(info.damage, mob, info.attackType, info.damageType) + + if not target:isUndead() then + mob:addHP(utils.clamp(info.damage, 0, targetHP)) + end + + if targetMP > 0 then + local mpDrain = utils.clamp(info.damage, 0, targetMP) + + target:delMP(mpDrain) + mob:addMP(mpDrain) + end + end + + return info.damage +end + +return mobskillObject diff --git a/scripts/actions/mobskills/quietus.lua b/scripts/actions/mobskills/quietus.lua new file mode 100644 index 00000000000..e67e944de74 --- /dev/null +++ b/scripts/actions/mobskills/quietus.lua @@ -0,0 +1,35 @@ +----------------------------------- +-- Quietus +-- Family: Humanoid Scythe Weaponskill +-- Description: Delivers a triple damage attack that ignores target'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.str_wSC = 0.4 -- TODO: Capture if mobskill weaponskills have wSC. + -- params.mnd_wSC = 0.4 -- TODO: Capture if mobskill weaponskills have wSC. + params.ignoreDefense = { 0.1, 0.3, 0.5 } + params.attackType = xi.attackType.PHYSICAL + params.damageType = xi.damageType.SLASHING + params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_1 + + local info = xi.mobskills.mobPhysicalMove(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/shadow_of_death.lua b/scripts/actions/mobskills/shadow_of_death.lua new file mode 100644 index 00000000000..0f862a7bcf3 --- /dev/null +++ b/scripts/actions/mobskills/shadow_of_death.lua @@ -0,0 +1,37 @@ +----------------------------------- +-- Shadow of Death +-- Family: Humanoid Scythe Weaponskill +-- Description: Deals darkness 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:getMainLvl() + 2 + params.fTP = { 1.0, 2.5, 3.0 } + -- params.str_wSC = 0.3 -- TODO: Capture if mobskill weaponskills have wSC. + -- params.int_wSC = 0.3 -- TODO: Capture if mobskill weaponskills have wSC. + params.element = xi.element.DARK + params.attackType = xi.attackType.MAGICAL + params.damageType = xi.damageType.DARK + params.shadowBehavior = xi.mobskills.shadowBehavior.IGNORE_SHADOWS + params.dStatMultiplier = 1 + params.dStatAttackerMod = xi.mod.INT + params.dStatDefenderMod = xi.mod.INT + + local info = xi.mobskills.mobMagicalMove(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/slice.lua b/scripts/actions/mobskills/slice.lua new file mode 100644 index 00000000000..9f0cad8e7ae --- /dev/null +++ b/scripts/actions/mobskills/slice.lua @@ -0,0 +1,33 @@ +----------------------------------- +-- Slice +-- Family: Humanoid Scythe 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 = { 1.5, 1.75, 2.0 } + -- params.str_wSC = 0.3 -- TODO: Capture if mobskill weaponskills have wSC. + params.attackType = xi.attackType.PHYSICAL + params.damageType = xi.damageType.SLASHING + params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_1 + + local info = xi.mobskills.mobPhysicalMove(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/spinning_scythe.lua b/scripts/actions/mobskills/spinning_scythe.lua index ee7280d070d..5813398048c 100644 --- a/scripts/actions/mobskills/spinning_scythe.lua +++ b/scripts/actions/mobskills/spinning_scythe.lua @@ -1,13 +1,12 @@ ----------------------------------- --- Spinning Scythe +-- Spinning Scythe -- Family: Humanoid Scythe Weaponskill --- Description: Delivers an area of effect attack. Attack radius varies with TP. +-- Description: Delivers an area attack. TODO: Radius varies with TP. ----------------------------------- ---@type TMobSkill local mobskillObject = {} mobskillObject.onMobSkillCheck = function(target, mob, skill) - mob:messageBasic(xi.msg.basic.READIES_WS, 0, 688 + 256) return 0 end @@ -16,10 +15,11 @@ mobskillObject.onMobWeaponSkill = function(mob, target, skill, action) params.baseDamage = mob:getWeaponDmg() params.numHits = 1 - params.fTP = { 2.0, 2.0, 2.0 } -- TODO: Capture fTPs + params.fTP = { 1.0, 1.0, 1.0 } + -- params.str_wSC = 0.3 -- TODO: Capture if mobskill weaponskills have wSC. params.attackType = xi.attackType.PHYSICAL params.damageType = xi.damageType.SLASHING - params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_3 -- TODO: Capture shadowBehavior + params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_1 local info = xi.mobskills.mobPhysicalMove(mob, target, skill, action, params) diff --git a/scripts/actions/mobskills/spiral_hell.lua b/scripts/actions/mobskills/spiral_hell.lua index 51f9e50b15c..5ab6d01f798 100644 --- a/scripts/actions/mobskills/spiral_hell.lua +++ b/scripts/actions/mobskills/spiral_hell.lua @@ -1,7 +1,7 @@ ----------------------------------- -- Spiral Hell -- Family: Humanoid Scythe Weaponskill --- Description: Delivers a single-hit attack +-- Description: Damage varies with TP. ----------------------------------- ---@type TMobSkill local mobskillObject = {} @@ -15,9 +15,11 @@ mobskillObject.onMobWeaponSkill = function(mob, target, skill, action) params.baseDamage = mob:getWeaponDmg() params.numHits = 1 - params.fTP = { 1.25, 1.25, 1.25 } -- TODO: Capture fTPs + params.fTP = { 1.375, 1.875, 3.625 } + -- params.str_wSC = 0.5 -- TODO: Capture if mobskill weaponskills have wSC. + -- params.int_wSC = 0.5 -- TODO: Capture if mobskill weaponskills have wSC. params.attackType = xi.attackType.PHYSICAL - params.damageType = xi.damageType.BLUNT + params.damageType = xi.damageType.SLASHING params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_1 local info = xi.mobskills.mobPhysicalMove(mob, target, skill, action, params) diff --git a/scripts/actions/mobskills/vorpal_scythe.lua b/scripts/actions/mobskills/vorpal_scythe.lua index 51a4f8c3301..9548a5e2284 100644 --- a/scripts/actions/mobskills/vorpal_scythe.lua +++ b/scripts/actions/mobskills/vorpal_scythe.lua @@ -1,7 +1,7 @@ ----------------------------------- -- Vorpal Scythe -- Family: Humanoid Scythe Weaponskill --- Description: Delivers a single-hit attack +-- Description: Deals critical damage. Chance of critical hit varies with TP. ----------------------------------- ---@type TMobSkill local mobskillObject = {} @@ -15,12 +15,13 @@ mobskillObject.onMobWeaponSkill = function(mob, target, skill, action) params.baseDamage = mob:getWeaponDmg() params.numHits = 1 - params.fTP = { 1.0, 1.0, 1.0 } -- TODO: Capture fTPs + params.fTP = { 1.0, 1.0, 1.0 } + -- params.str_wSC = 0.35 -- TODO: Capture if mobskill weaponskills have wSC. params.attackType = xi.attackType.PHYSICAL params.damageType = xi.damageType.SLASHING params.shadowBehavior = xi.mobskills.shadowBehavior.NUMSHADOWS_1 params.canCrit = true - params.criticalChance = { 0.10, 0.20, 0.25 } -- TODO: Capture crit rate + params.criticalChance = { 0.3, 0.6, 0.9 } local info = xi.mobskills.mobPhysicalMove(mob, target, skill, action, params) diff --git a/sql/mob_skills.sql b/sql/mob_skills.sql index 487572c7ff8..cf6bc277c67 100644 --- a/sql/mob_skills.sql +++ b/sql/mob_skills.sql @@ -135,20 +135,21 @@ INSERT INTO `mob_skills` VALUES (91,102,'fell_cleave',2,4.0,7.0,2000,0,4,0,0,0,4 INSERT INTO `mob_skills` VALUES (92,103,'ukkos_fury',0,0.0,7.0,2000,0,4,0,0,0,13,12,0); INSERT INTO `mob_skills` VALUES (93,104,'upheaval',0,0.0,7.0,2000,0,4,0,0,0,11,2,0); INSERT INTO `mob_skills` VALUES (94,100,'disaster',0,0.0,7.0,2000,0,4,0,0,0,9,4,1); --- INSERT INTO `mob_skills` VALUES (96,??,'slice' --- INSERT INTO `mob_skills` VALUES (97,??,'dark_harvest' --- INSERT INTO `mob_skills` VALUES (98,??,'shadow_of_death' --- INSERT INTO `mob_skills` VALUES (99,??,'nightmare_scythe' --- INSERT INTO `mob_skills` VALUES (100,??,'spinning_scythe' -INSERT INTO `mob_skills` VALUES (101,66,'vorpal_scythe',0,0.0,7.0,2000,900,4,0,0,0,1,4,0); -INSERT INTO `mob_skills` VALUES (102,67,'guillotine',0,0.0,7.0,2000,900,4,0,0,0,7,0,0); -INSERT INTO `mob_skills` VALUES (104,69,'spiral_hell',0,0.0,7.0,2000,900,4,0,0,0,10,4,0); --- INSERT INTO `mob_skills` VALUES (105,??,'catastrophe' --- INSERT INTO `mob_skills` VALUES (106,??,'insurgency' --- INSERT INTO `mob_skills` VALUES (107,??,'infernal_scythe' --- INSERT INTO `mob_skills` VALUES (108,??,'quietus' --- INSERT INTO `mob_skills` VALUES (109,??,'entropy' --- INSERT INTO `mob_skills` VALUES (110,??,'origin' +INSERT INTO `mob_skills` VALUES (96,61,'slice',0,0.0,7.0,2000,0,4,0,0,0,4,0,0); +INSERT INTO `mob_skills` VALUES (97,62,'dark_harvest',0,0.0,7.0,2000,0,4,0,0,0,5,0,0); +INSERT INTO `mob_skills` VALUES (98,63,'shadow_of_death',0,0.0,7.0,2000,0,4,0,0,0,7,5,0); +INSERT INTO `mob_skills` VALUES (99,64,'nightmare_scythe',0,0.0,7.0,2000,0,4,0,0,0,2,4,0); +INSERT INTO `mob_skills` VALUES (100,65,'spinning_scythe',2,4.0,7.0,2000,0,4,0,0,0,5,4,0); +INSERT INTO `mob_skills` VALUES (101,66,'vorpal_scythe',0,0.0,7.0,2000,0,4,0,0,0,1,4,0); +INSERT INTO `mob_skills` VALUES (102,67,'guillotine',0,0.0,7.0,2000,0,4,0,0,0,7,0,0); +INSERT INTO `mob_skills` VALUES (103,68,'cross_reaper',0,0.0,7.0,2000,0,4,0,0,0,10,0,0); +INSERT INTO `mob_skills` VALUES (104,69,'spiral_hell',0,0.0,7.0,2000,0,4,0,0,0,10,4,0); +INSERT INTO `mob_skills` VALUES (105,70,'catastrophe',0,0.0,7.0,2000,0,4,0,0,0,14,9,0); +INSERT INTO `mob_skills` VALUES (106,71,'insurgency',0,0.0,7.0,2000,0,4,0,0,0,11,2,0); +INSERT INTO `mob_skills` VALUES (107,72,'infernal_scythe',0,0.0,7.0,2000,0,4,0,0,0,2,5,0); +INSERT INTO `mob_skills` VALUES (108,73,'quietus',0,0.0,7.0,2000,0,4,0,0,0,14,10,0); +INSERT INTO `mob_skills` VALUES (109,74,'entropy',0,0.0,7.0,2000,0,4,0,0,0,9,5,0); +INSERT INTO `mob_skills` VALUES (110,70,'origin',0,0.0,7.0,2000,0,4,0,0,0,11,7,5); -- INSERT INTO `mob_skills` VALUES (112,??,'double_thrust' -- INSERT INTO `mob_skills` VALUES (113,??,'thunder_thrust' INSERT INTO `mob_skills` VALUES (114,123,'raiden_thrust',0,0.0,7.0,2000,0,4,0,0,0,1,8,0);