From 8497ed7c9cb02d727dac24179301b659b783765e Mon Sep 17 00:00:00 2001 From: Jonathan Dang <77904634+Jonathan-Dang@users.noreply.github.com> Date: Sun, 19 Jan 2025 14:40:51 -0800 Subject: [PATCH 1/6] Fixed interaction between block replacement effect from ascendancy with Necromantic Aegis Fixes interaction between Block Replacement effect granted from Gladiator's "Determined Survivor" ascendency with Necromantic Aegis. --- src/Modules/CalcDefence.lua | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Modules/CalcDefence.lua b/src/Modules/CalcDefence.lua index 19c733eaea..9cd12847d1 100644 --- a/src/Modules/CalcDefence.lua +++ b/src/Modules/CalcDefence.lua @@ -516,12 +516,19 @@ function calcs.defence(env, actor) local baseBlockChance = 0 if actor.itemList["Weapon 2"] and actor.itemList["Weapon 2"].armourData then baseBlockChance = baseBlockChance + actor.itemList["Weapon 2"].armourData.BlockChance + end if actor.itemList["Weapon 3"] and actor.itemList["Weapon 3"].armourData then baseBlockChance = baseBlockChance + actor.itemList["Weapon 3"].armourData.BlockChance - end + end output.ShieldBlockChance = baseBlockChance + -- Override from Ascendancy or other sources baseBlockChance = modDB:Override(nil, "ReplaceShieldBlock") or baseBlockChance + -- Bandage fix for interaction of block replacement effects with Necromantic Aegis + if actor == env.minion and env.player.modDB:Override(nil, "ReplaceShieldBlock") and env.allocNodes[45175] then + baseBlockChance = env.player.modDB:Override(nil, "ReplaceShieldBlock") + end + if modDB:Flag(nil, "BlockAttackChanceIsEqualToParent") then output.BlockChance = m_min(actor.parent.output.BlockChance, output.BlockChanceMax) elseif modDB:Flag(nil, "BlockAttackChanceIsEqualToPartyMember") then @@ -533,6 +540,7 @@ function calcs.defence(env, actor) output.BlockChance = m_min(totalBlockChance, output.BlockChanceMax) output.BlockChanceOverCap = m_max(0, totalBlockChance - output.BlockChanceMax) end + output.ProjectileBlockChance = m_min(output.BlockChance + modDB:Sum("BASE", nil, "ProjectileBlockChance") * calcLib.mod(modDB, nil, "BlockChance"), output.BlockChanceMax) if modDB:Flag(nil, "SpellBlockChanceMaxIsBlockChanceMax") then output.SpellBlockChanceMax = output.BlockChanceMax From abb03b4aff8b94c79d580248e9f9663de1191b2d Mon Sep 17 00:00:00 2001 From: Jonathan Dang <77904634+Jonathan-Dang@users.noreply.github.com> Date: Sun, 19 Jan 2025 15:27:11 -0800 Subject: [PATCH 2/6] Improved Changed to allow for more flexibility. Co-authored-by: Paliak <91493239+Paliak@users.noreply.github.com> --- src/Modules/CalcDefence.lua | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/Modules/CalcDefence.lua b/src/Modules/CalcDefence.lua index 9cd12847d1..6127fc571c 100644 --- a/src/Modules/CalcDefence.lua +++ b/src/Modules/CalcDefence.lua @@ -520,14 +520,11 @@ function calcs.defence(env, actor) end if actor.itemList["Weapon 3"] and actor.itemList["Weapon 3"].armourData then baseBlockChance = baseBlockChance + actor.itemList["Weapon 3"].armourData.BlockChance - end - output.ShieldBlockChance = baseBlockChance - -- Override from Ascendancy or other sources - baseBlockChance = modDB:Override(nil, "ReplaceShieldBlock") or baseBlockChance - -- Bandage fix for interaction of block replacement effects with Necromantic Aegis - if actor == env.minion and env.player.modDB:Override(nil, "ReplaceShieldBlock") and env.allocNodes[45175] then - baseBlockChance = env.player.modDB:Override(nil, "ReplaceShieldBlock") end + output.ShieldBlockChance = modDB:Override(nil, "ReplaceShieldBlock") or baseBlockChance + + -- Apply player block overrides if Necromantic Aegis allocated + output.ShieldBlockChance = actor == env.minion and env.keystonesAdded["Necromantic Aegis"] and env.player.modDB:Override(nil, "ReplaceShieldBlock") or output.ShieldBlockChance if modDB:Flag(nil, "BlockAttackChanceIsEqualToParent") then output.BlockChance = m_min(actor.parent.output.BlockChance, output.BlockChanceMax) From 156357cb1762e4a80631c7cb6b4c93c93d825810 Mon Sep 17 00:00:00 2001 From: Jonathan Dang <77904634+Jonathan-Dang@users.noreply.github.com> Date: Sun, 19 Jan 2025 15:29:47 -0800 Subject: [PATCH 3/6] Wrong Variable Needs to be baseBlockChance or else it doesn't have the complete 50% block chance granted from Ascendency. --- src/Modules/CalcDefence.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Modules/CalcDefence.lua b/src/Modules/CalcDefence.lua index 6127fc571c..95951181b0 100644 --- a/src/Modules/CalcDefence.lua +++ b/src/Modules/CalcDefence.lua @@ -524,7 +524,7 @@ function calcs.defence(env, actor) output.ShieldBlockChance = modDB:Override(nil, "ReplaceShieldBlock") or baseBlockChance -- Apply player block overrides if Necromantic Aegis allocated - output.ShieldBlockChance = actor == env.minion and env.keystonesAdded["Necromantic Aegis"] and env.player.modDB:Override(nil, "ReplaceShieldBlock") or output.ShieldBlockChance + baseBlockChance = actor == env.minion and env.keystonesAdded["Necromantic Aegis"] and env.player.modDB:Override(nil, "ReplaceShieldBlock") or output.ShieldBlockChance if modDB:Flag(nil, "BlockAttackChanceIsEqualToParent") then output.BlockChance = m_min(actor.parent.output.BlockChance, output.BlockChanceMax) From 47df2305e0cb6bfde16a9eaa108fe8029d105f0b Mon Sep 17 00:00:00 2001 From: Jonathan Dang <77904634+Jonathan-Dang@users.noreply.github.com> Date: Sun, 19 Jan 2025 15:33:57 -0800 Subject: [PATCH 4/6] Update CalcDefence.lua --- src/Modules/CalcDefence.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Modules/CalcDefence.lua b/src/Modules/CalcDefence.lua index 95951181b0..0e5ad3b643 100644 --- a/src/Modules/CalcDefence.lua +++ b/src/Modules/CalcDefence.lua @@ -521,7 +521,7 @@ function calcs.defence(env, actor) if actor.itemList["Weapon 3"] and actor.itemList["Weapon 3"].armourData then baseBlockChance = baseBlockChance + actor.itemList["Weapon 3"].armourData.BlockChance end - output.ShieldBlockChance = modDB:Override(nil, "ReplaceShieldBlock") or baseBlockChance + baseBlockChance = modDB:Override(nil, "ReplaceShieldBlock") or baseBlockChance -- Apply player block overrides if Necromantic Aegis allocated baseBlockChance = actor == env.minion and env.keystonesAdded["Necromantic Aegis"] and env.player.modDB:Override(nil, "ReplaceShieldBlock") or output.ShieldBlockChance From eb1379c1d422b5ad81ad9ceed3fc4f7984023e7c Mon Sep 17 00:00:00 2001 From: Jonathan Dang <77904634+Jonathan-Dang@users.noreply.github.com> Date: Sun, 19 Jan 2025 15:50:53 -0800 Subject: [PATCH 5/6] Corrected Affected Variables. --- src/Modules/CalcDefence.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Modules/CalcDefence.lua b/src/Modules/CalcDefence.lua index 0e5ad3b643..a5040ec918 100644 --- a/src/Modules/CalcDefence.lua +++ b/src/Modules/CalcDefence.lua @@ -524,7 +524,7 @@ function calcs.defence(env, actor) baseBlockChance = modDB:Override(nil, "ReplaceShieldBlock") or baseBlockChance -- Apply player block overrides if Necromantic Aegis allocated - baseBlockChance = actor == env.minion and env.keystonesAdded["Necromantic Aegis"] and env.player.modDB:Override(nil, "ReplaceShieldBlock") or output.ShieldBlockChance + baseBlockChance = actor == env.minion and env.keystonesAdded["Necromantic Aegis"] and env.player.modDB:Override(nil, "ReplaceShieldBlock") or baseBlockChance if modDB:Flag(nil, "BlockAttackChanceIsEqualToParent") then output.BlockChance = m_min(actor.parent.output.BlockChance, output.BlockChanceMax) From b4f89da583232630eb00c3ce7edd9c9cd49a0eb3 Mon Sep 17 00:00:00 2001 From: Jonathan Dang <77904634+Jonathan-Dang@users.noreply.github.com> Date: Sun, 19 Jan 2025 16:29:53 -0800 Subject: [PATCH 6/6] Last Fix --- src/Modules/CalcDefence.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Modules/CalcDefence.lua b/src/Modules/CalcDefence.lua index a5040ec918..ec95ca2fdd 100644 --- a/src/Modules/CalcDefence.lua +++ b/src/Modules/CalcDefence.lua @@ -521,6 +521,7 @@ function calcs.defence(env, actor) if actor.itemList["Weapon 3"] and actor.itemList["Weapon 3"].armourData then baseBlockChance = baseBlockChance + actor.itemList["Weapon 3"].armourData.BlockChance end + output.ShieldBlockChance = baseBlockChance baseBlockChance = modDB:Override(nil, "ReplaceShieldBlock") or baseBlockChance -- Apply player block overrides if Necromantic Aegis allocated