From 3f24e94cabab49254e997daa705ef760b6b84551 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Tue, 10 Mar 2026 09:11:22 +1100 Subject: [PATCH 1/3] Fix Ynda's Stand and Olroth Bloodline not working correctly The Ynda's stand belt is meant to convert the armour and evasion on the body armour to war which can then be scaled by mods like increased Defences / Ward from Body Armour --- src/Modules/CalcPerform.lua | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index 584235561d..e055ba7cc3 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -1406,14 +1406,10 @@ function calcs.perform(env, skipEHP) end if modDB:Flag(nil, "ConvertBodyArmourArmourEvasionToWard") then - local ward local armourData = env.player.itemList["Body Armour"] and env.player.itemList["Body Armour"].armourData + local wardMult = ((modDB:Sum("BASE", nil,"BodyArmourArmourEvasionToWardPercent") or 0) / 100) if armourData then - ward = armourData.Evasion + armourData.Armour - if ward > 0 then - local wardMult = ((modDB:Sum("BASE", nil,"BodyArmourArmourEvasionToWardPercent") or 0) / 100) - modDB:NewMod("Ward", "BASE", ward * wardMult , "Body Armour Armour And Evasion Rating to Ward Conversion") - end + armourData.Ward = armourData.Ward + m_floor((armourData.Evasion + armourData.Armour) * wardMult) end end From 6e9bb0bad34948aad4af4554cf443fd22b6a7f6b Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Tue, 10 Mar 2026 09:13:14 +1100 Subject: [PATCH 2/3] Fix issue --- src/Modules/CalcPerform.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index e055ba7cc3..c61adf92de 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -1409,7 +1409,7 @@ function calcs.perform(env, skipEHP) local armourData = env.player.itemList["Body Armour"] and env.player.itemList["Body Armour"].armourData local wardMult = ((modDB:Sum("BASE", nil,"BodyArmourArmourEvasionToWardPercent") or 0) / 100) if armourData then - armourData.Ward = armourData.Ward + m_floor((armourData.Evasion + armourData.Armour) * wardMult) + armourData.Ward = m_floor((armourData.Evasion + armourData.Armour) * wardMult) end end From 018ad8e8eb4159b2f413f956985191956b53f008 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Tue, 10 Mar 2026 21:12:43 +1100 Subject: [PATCH 3/3] Better fix Was improperly modifying the armourData instead of just adding to the Body Armour slot --- src/Modules/CalcDefence.lua | 20 +++++++++++--------- src/Modules/CalcPerform.lua | 8 -------- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/src/Modules/CalcDefence.lua b/src/Modules/CalcDefence.lua index de34350342..c143608c6c 100644 --- a/src/Modules/CalcDefence.lua +++ b/src/Modules/CalcDefence.lua @@ -839,7 +839,18 @@ function calcs.defence(env, actor) local armourData = actor.itemList[slot] and actor.itemList[slot].armourData if armourData then slotCfg.slotName = slot + energyShieldBase = not modDB:Flag(nil, "GainNoEnergyShieldFrom" .. slot) and armourData.EnergyShield or 0 + armourBase = not modDB:Flag(nil, "GainNoArmourFrom" .. slot) and armourData.Armour or 0 + evasionBase = not modDB:Flag(nil, "GainNoEvasionFrom" .. slot) and armourData.Evasion or 0 wardBase = not modDB:Flag(nil, "GainNoWardFrom" .. slot) and armourData.Ward or 0 + if slot == "Body Armour" and modDB:Flag(nil, "ConvertBodyArmourArmourEvasionToWard") then + local conversion = m_min(modDB:Sum("BASE", nil, "BodyArmourArmourEvasionToWardPercent") / 100, 1) + local convertedArmour = armourBase * conversion + local convertedEvasion = evasionBase * conversion + armourBase = armourBase - convertedArmour + evasionBase = evasionBase - convertedEvasion + wardBase = wardBase + (convertedEvasion + convertedArmour) + end if wardBase > 0 then if modDB:Flag(nil, "EnergyShieldToWard") then local inc = modDB:Sum("INC", slotCfg, "Ward", "Defences", "EnergyShield") @@ -864,7 +875,6 @@ function calcs.defence(env, actor) end end end - energyShieldBase = not modDB:Flag(nil, "GainNoEnergyShieldFrom" .. slot) and armourData.EnergyShield or 0 if energyShieldBase > 0 then if modDB:Flag(nil, "EnergyShieldToWard") then local more = modDB:More(slotCfg, "EnergyShield", "Defences") @@ -887,22 +897,14 @@ function calcs.defence(env, actor) end end end - armourBase = not modDB:Flag(nil, "GainNoArmourFrom" .. slot) and armourData.Armour or 0 if armourBase > 0 then - if slot == "Body Armour" and modDB:Flag(nil, "ConvertBodyArmourArmourEvasionToWard")then - armourBase = armourBase * (1 - ((m_min(modDB:Sum("BASE", nil, "BodyArmourArmourEvasionToWardPercent"), 100) or 0) / 100)) - end armour = armour + armourBase * calcLib.mod(modDB, slotCfg, "Armour", "ArmourAndEvasion", "Defences", slot.."ESAndArmour") gearArmour = gearArmour + armourBase if breakdown then breakdown.slot(slot, nil, slotCfg, armourBase, nil, "Armour", "ArmourAndEvasion", "Defences", slot.."ESAndArmour") end end - evasionBase = not modDB:Flag(nil, "GainNoEvasionFrom" .. slot) and armourData.Evasion or 0 if evasionBase > 0 then - if slot == "Body Armour" and modDB:Flag(nil, "ConvertBodyArmourArmourEvasionToWard")then - evasionBase = evasionBase * (1 - ((m_min(modDB:Sum("BASE", nil, "BodyArmourArmourEvasionToWardPercent"), 100) or 0) / 100)) - end gearEvasion = gearEvasion + evasionBase if breakdown then breakdown.slot(slot, nil, slotCfg, evasionBase, nil, "Evasion", "ArmourAndEvasion", "Defences") diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index c61adf92de..ec8a798e15 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -1405,14 +1405,6 @@ function calcs.perform(env, skipEHP) end end - if modDB:Flag(nil, "ConvertBodyArmourArmourEvasionToWard") then - local armourData = env.player.itemList["Body Armour"] and env.player.itemList["Body Armour"].armourData - local wardMult = ((modDB:Sum("BASE", nil,"BodyArmourArmourEvasionToWardPercent") or 0) / 100) - if armourData then - armourData.Ward = m_floor((armourData.Evasion + armourData.Armour) * wardMult) - end - end - -- Special handling of Mageblood local maxLeftActiveMagicUtilityCount = modDB:Sum("BASE", nil, "LeftActiveMagicUtilityFlasks") local maxRightActiveMagicUtilityCount = modDB:Sum("BASE", nil, "RightActiveMagicUtilityFlasks")