From 518b4b389999a3feee779af20155d239b2378990 Mon Sep 17 00:00:00 2001 From: Peechey <92683202+Peechey@users.noreply.github.com> Date: Fri, 21 Nov 2025 19:59:51 -0600 Subject: [PATCH 1/3] Fix Wings of Entropy not working with Chain Hook, Lacerate and of Haemo, Swordstorm Fix Wings working with Laacerate of Butchery when it shouldn't, keep Ice Crash of Cadence working even with its weird 2H weaponTypes --- src/Modules/CalcActiveSkill.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Modules/CalcActiveSkill.lua b/src/Modules/CalcActiveSkill.lua index fe355de914..553c55230b 100644 --- a/src/Modules/CalcActiveSkill.lua +++ b/src/Modules/CalcActiveSkill.lua @@ -209,15 +209,15 @@ function calcs.copyActiveSkill(env, mode, skill) end -- Get weapon flags and info for given weapon -local function getWeaponFlags(env, weaponData, weaponTypes) +local function getWeaponFlags(env, weaponData, weaponTypes, skillTypeDualWieldOnly) local info = env.data.weaponTypeInfo[weaponData.type] if not info then return end if weaponTypes then for _, types in ipairs(weaponTypes) do - if not types[weaponData.type] and - (not weaponData.countsAsAll1H or not (types["Claw"] or types["Dagger"] or types["One Handed Axe"] or types["One Handed Mace"] or types["One Handed Sword"])) then + if (not types[weaponData.type] and (not weaponData.countsAsAll1H or not (types["Claw"] or types["Dagger"] or types["One Handed Axe"] or types["One Handed Mace"] or types["One Handed Sword"])) and not weaponData.countsAsDualWielding) or + (weaponData.countsAsDualWielding and (not (types["One Handed Axe"] or types["One Handed Sword"]) and not skillTypeDualWieldOnly)) then -- Wings of Entropy special case return nil, info end end @@ -304,7 +304,7 @@ function calcs.buildActiveSkillModList(env, activeSkill) t_insert(weaponTypes, skillEffect.grantedEffect.weaponTypes) end end - local weapon1Flags, weapon1Info = getWeaponFlags(env, activeSkill.actor.weaponData1, weaponTypes) + local weapon1Flags, weapon1Info = getWeaponFlags(env, activeSkill.actor.weaponData1, weaponTypes, skillTypes[SkillType.DualWieldOnly]) if not weapon1Flags and activeSkill.summonSkill then -- Minion skills seem to ignore weapon types weapon1Flags, weapon1Info = ModFlag[env.data.weaponTypeInfo["None"].flag], env.data.weaponTypeInfo["None"] @@ -325,7 +325,7 @@ function calcs.buildActiveSkillModList(env, activeSkill) activeSkill.disableReason = "Main Hand weapon is not usable with this skill" end if not skillTypes[SkillType.MainHandOnly] and not skillFlags.forceMainHand then - local weapon2Flags, weapon2Info = getWeaponFlags(env, activeSkill.actor.weaponData2, weaponTypes) + local weapon2Flags, weapon2Info = getWeaponFlags(env, activeSkill.actor.weaponData2, weaponTypes, skillTypes[SkillType.DualWieldOnly]) if weapon2Flags then if skillTypes[SkillType.DualWieldRequiresDifferentTypes] and (activeSkill.actor.weaponData1.type == activeSkill.actor.weaponData2.type) then -- Skill requires a different compatible off hand weapon to main hand weapon From 514228e4120cd94916395c782930785657de47fa Mon Sep 17 00:00:00 2001 From: Peechey <92683202+Peechey@users.noreply.github.com> Date: Sat, 22 Nov 2025 03:09:12 -0600 Subject: [PATCH 2/3] logic fix, formatting for visibity --- src/Modules/CalcActiveSkill.lua | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Modules/CalcActiveSkill.lua b/src/Modules/CalcActiveSkill.lua index 553c55230b..41c8b39109 100644 --- a/src/Modules/CalcActiveSkill.lua +++ b/src/Modules/CalcActiveSkill.lua @@ -216,8 +216,12 @@ local function getWeaponFlags(env, weaponData, weaponTypes, skillTypeDualWieldOn end if weaponTypes then for _, types in ipairs(weaponTypes) do - if (not types[weaponData.type] and (not weaponData.countsAsAll1H or not (types["Claw"] or types["Dagger"] or types["One Handed Axe"] or types["One Handed Mace"] or types["One Handed Sword"])) and not weaponData.countsAsDualWielding) or - (weaponData.countsAsDualWielding and (not (types["One Handed Axe"] or types["One Handed Sword"]) and not skillTypeDualWieldOnly)) then -- Wings of Entropy special case + if (not skillTypeDualWieldOnly and (not types[weaponData.type] or ((weaponData.countsAsDualWielding and not types["One Handed "..info.flag]) or (not weaponData.countsAsDualWielding and not (types["Two Handed Axe"] or types["Two Handed Sword"] or types["Two Handed Mace"] or types["Staff"]))))) + and + (not weaponData.countsAsAll1H or not (types["Claw"] or types["Dagger"] or types["One Handed Axe"] or types["One Handed Mace"] or types["One Handed Sword"])) + and + ((weaponData.countsAsDualWielding and (not types["One Handed "..info.flag])) or (not weaponData.countsAsDualWielding and not (not weaponData.countsAsAll1H and (types["Two Handed Axe"] or types["Two Handed Sword"] or types["Two Handed Mace"] or types["Staff"])))) + then return nil, info end end From 8217546a00f9c39fe58905566287b7282cd11a0b Mon Sep 17 00:00:00 2001 From: Peechey <92683202+Peechey@users.noreply.github.com> Date: Sat, 22 Nov 2025 20:09:48 -0600 Subject: [PATCH 3/3] cleaner logic, fix for trigger/mirage --- src/Modules/CalcActiveSkill.lua | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/Modules/CalcActiveSkill.lua b/src/Modules/CalcActiveSkill.lua index 41c8b39109..0b15493fbe 100644 --- a/src/Modules/CalcActiveSkill.lua +++ b/src/Modules/CalcActiveSkill.lua @@ -216,11 +216,8 @@ local function getWeaponFlags(env, weaponData, weaponTypes, skillTypeDualWieldOn end if weaponTypes then for _, types in ipairs(weaponTypes) do - if (not skillTypeDualWieldOnly and (not types[weaponData.type] or ((weaponData.countsAsDualWielding and not types["One Handed "..info.flag]) or (not weaponData.countsAsDualWielding and not (types["Two Handed Axe"] or types["Two Handed Sword"] or types["Two Handed Mace"] or types["Staff"]))))) - and - (not weaponData.countsAsAll1H or not (types["Claw"] or types["Dagger"] or types["One Handed Axe"] or types["One Handed Mace"] or types["One Handed Sword"])) - and - ((weaponData.countsAsDualWielding and (not types["One Handed "..info.flag])) or (not weaponData.countsAsDualWielding and not (not weaponData.countsAsAll1H and (types["Two Handed Axe"] or types["Two Handed Sword"] or types["Two Handed Mace"] or types["Staff"])))) + if weaponData.countsAsDualWielding and ((not skillTypeDualWieldOnly and (not types[weaponData.type] or not types["One Handed "..info.flag])) and (not types["One Handed "..info.flag])) -- Wings of Entropy + or (not weaponData.countsAsDualWielding and not types[weaponData.type] and (not weaponData.countsAsAll1H or not (types["Claw"] or types["Dagger"] or types["One Handed Axe"] or types["One Handed Mace"] or types["One Handed Sword"]))) then return nil, info end