From 3bd97fcd309c4a23cac8fcaca5d29802e86f8a73 Mon Sep 17 00:00:00 2001 From: WinterSolstice8 <60417494+wintersolstice8@users.noreply.github.com> Date: Tue, 31 Mar 2026 07:52:20 -0600 Subject: [PATCH] [lua] Fix edge cases that report incorrect misses for mob/weaponskill --- scripts/globals/mobskills.lua | 4 ++-- scripts/globals/weaponskills.lua | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/scripts/globals/mobskills.lua b/scripts/globals/mobskills.lua index 4478a32cea6..926b1e3eaab 100644 --- a/scripts/globals/mobskills.lua +++ b/scripts/globals/mobskills.lua @@ -317,12 +317,12 @@ xi.mobskills.mobPhysicalMove = function(mob, target, skill, numHits, accMod, ftp end -- all hits missed - if hitslanded == 0 or finaldmg == 0 then + if hitslanded == 0 then finaldmg = 0 hitslanded = 0 skill:setMsg(xi.msg.basic.SKILL_MISS) -- calculate tp return of mob skill and add if hit primary target - elseif skill:getPrimaryTargetID() == target:getID() then + elseif skill:getPrimaryTargetID() == target:getID() and finaldmg > 0 then local tpReturn = xi.combat.tp.getSingleMeleeHitTPReturn(mob, false) tpReturn = tpReturn + 10 * (hitslanded - 1) -- extra hits give 10 TP each mob:addTP(tpReturn) diff --git a/scripts/globals/weaponskills.lua b/scripts/globals/weaponskills.lua index 99e9961e7ed..ca0373a59c8 100644 --- a/scripts/globals/weaponskills.lua +++ b/scripts/globals/weaponskills.lua @@ -554,7 +554,6 @@ xi.weaponskills.calculateRawWSDmg = function(attacker, target, wsID, tp, action, -- Do the extra hit for our offhand if applicable if calcParams.extraOffhandHit and hitsDone < 8 and finaldmg < targetHp then - calcParams.hitsLanded = 0 local offhandDmg = calcParams.weaponDamage[2] + calcParams.fSTR + wsc * alpha hitdmg, calcParams = getSingleHitDamage(attacker, target, offhandDmg, ftp, wsParams, calcParams) @@ -590,7 +589,6 @@ xi.weaponskills.calculateRawWSDmg = function(attacker, target, wsID, tp, action, while hitsDone < 8 and offhandMultiHitsDone < numOffhandMultis and finaldmg < targetHp do local offhandDmg = calcParams.weaponDamage[2] + calcParams.fSTR + wsc * alpha - calcParams.hitsLanded = 0 hitdmg, calcParams = getSingleHitDamage(attacker, target, offhandDmg, ftp, wsParams, calcParams) if calcParams.melee then @@ -920,7 +918,7 @@ end xi.weaponskills.takeWeaponskillDamage = function(defender, attacker, wsParams, primaryMsg, attack, wsResults, action) local finaldmg = wsResults.finalDmg - if wsResults.tpHitsLanded + wsResults.extraHitsLanded > 0 then + if wsResults.hitsLanded > 0 then if finaldmg >= 0 then if primaryMsg then action:messageID(defender:getID(), xi.msg.basic.DAMAGE)