From c9bd3b1eb1f78a8529a68a1806a501f92973175a Mon Sep 17 00:00:00 2001 From: sruon Date: Mon, 2 Feb 2026 19:46:08 -0700 Subject: [PATCH 1/2] Dont trigger resonance on blinked WS --- scripts/globals/weaponskills.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/globals/weaponskills.lua b/scripts/globals/weaponskills.lua index 526846341fb..716a3aafd9f 100644 --- a/scripts/globals/weaponskills.lua +++ b/scripts/globals/weaponskills.lua @@ -942,6 +942,7 @@ xi.weaponskills.takeWeaponskillDamage = function(defender, attacker, wsParams, p elseif wsResults.shadowsAbsorbed > 0 then action:messageID(defender:getID(), xi.msg.basic.SHADOW_ABSORB) action:param(defender:getID(), wsResults.shadowsAbsorbed) + action:resolution(defender:getID(), xi.action.resolution.MISS) else if primaryMsg then action:messageID(defender:getID(), xi.msg.basic.SKILL_MISS) From 445a1935335641891953a8d93279e54b78aeed77 Mon Sep 17 00:00:00 2001 From: sruon Date: Mon, 2 Feb 2026 20:18:54 -0700 Subject: [PATCH 2/2] Account for shadows before returning pet damage --- scripts/globals/mobskills.lua | 5 +++-- scripts/globals/summon.lua | 9 ++++++++- scripts/utils/combat_utils.lua | 13 ++++++++----- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/scripts/globals/mobskills.lua b/scripts/globals/mobskills.lua index 1861776d1e0..f74e1864f6b 100644 --- a/scripts/globals/mobskills.lua +++ b/scripts/globals/mobskills.lua @@ -530,13 +530,14 @@ xi.mobskills.mobFinalAdjustments = function(damage, mob, skill, target, attackTy end -- Remove shadows - damage = utils.takeShadows(target, damage, shadowsToRemove) + local shadowsUsed = 0 + damage, shadowsUsed = utils.takeShadows(target, damage, shadowsToRemove) -- Dealt zero damage, so shadows took all hits. if damage == 0 then skill:setMsg(xi.msg.basic.SHADOW_ABSORB) - return 0 + return shadowsUsed end elseif shadowsToRemove == xi.mobskills.shadowBehavior.WIPE_SHADOWS then -- Remove all shadows diff --git a/scripts/globals/summon.lua b/scripts/globals/summon.lua index 4b378a0d111..160808b4094 100644 --- a/scripts/globals/summon.lua +++ b/scripts/globals/summon.lua @@ -275,7 +275,14 @@ xi.summon.avatarFinalAdjustments = function(dmg, mob, skill, target, skilltype, end -- Handle shadows depending on shadow behavior / skilltype - dmg = utils.takeShadows(target, dmg, shadowbehav) + local preShadowDmg = dmg + local shadowsUsed = 0 + dmg, shadowsUsed = utils.takeShadows(target, dmg, shadowbehav) + + if preShadowDmg > 0 and dmg == 0 then + skill:setMsg(xi.msg.basic.SHADOW_ABSORB) + return shadowsUsed + end -- handle Third Eye using shadowbehav as a guide local teye = target:getStatusEffect(xi.effect.THIRD_EYE) diff --git a/scripts/utils/combat_utils.lua b/scripts/utils/combat_utils.lua index 03096ad5bf8..9e49bd3da88 100644 --- a/scripts/utils/combat_utils.lua +++ b/scripts/utils/combat_utils.lua @@ -28,7 +28,8 @@ end ---@param actor CBaseEntity ---@param damage integer ---@param shadowsToRemove integer? ----@return integer +---@return integer damage +---@return integer shadowsUsed function utils.takeShadows(actor, damage, shadowsToRemove) shadowsToRemove = shadowsToRemove or 1 @@ -43,7 +44,7 @@ function utils.takeShadows(actor, damage, shadowsToRemove) -- No shadows, return full damage if shadowPower == 0 then - return damage + return damage, 0 end local shadowsRemaining = shadowPower @@ -67,7 +68,8 @@ function utils.takeShadows(actor, damage, shadowsToRemove) -- Handle Utsusemi removal if shadowPower >= shadowsToRemove then shadowsRemaining = shadowPower - shadowsToRemove - damage = 0 + shadowsUsed = shadowsToRemove + damage = 0 -- Update remaining Copy Image icon if shadowsRemaining > 0 then @@ -86,7 +88,8 @@ function utils.takeShadows(actor, damage, shadowsToRemove) end else -- Partial shadow consumption, take damage. - damage = damage * ((shadowsToRemove - shadowPower) / shadowsToRemove) + shadowsUsed = shadowPower + damage = damage * ((shadowsToRemove - shadowPower) / shadowsToRemove) shadowsRemaining = 0 end end @@ -98,7 +101,7 @@ function utils.takeShadows(actor, damage, shadowsToRemove) actor:delStatusEffect(xi.effect.BLINK) end - return damage + return damage, shadowsUsed end -- Calculates Phalanx damage reduction.