From 7ad9eadbd891b5fc447bb17cd1b9a68245af338f Mon Sep 17 00:00:00 2001 From: ibabde Date: Tue, 17 Feb 2026 06:50:08 +0000 Subject: [PATCH 1/2] Apply changes from https://github.com/PathOfBuildingCommunity/PathOfBuilding-PoE2/pull/1761 --- src/Classes/CalcBreakdownControl.lua.rej | 10 +++++++++ src/Data/ModCache.lua.rej | 10 +++++++++ src/Modules/CalcDefence.lua.rej | 28 ++++++++++++++++++++++++ src/Modules/ModParser.lua | 1 + 4 files changed, 49 insertions(+) create mode 100644 src/Classes/CalcBreakdownControl.lua.rej create mode 100644 src/Data/ModCache.lua.rej create mode 100644 src/Modules/CalcDefence.lua.rej diff --git a/src/Classes/CalcBreakdownControl.lua.rej b/src/Classes/CalcBreakdownControl.lua.rej new file mode 100644 index 0000000000..a4cd31ec12 --- /dev/null +++ b/src/Classes/CalcBreakdownControl.lua.rej @@ -0,0 +1,10 @@ +diff a/src/Classes/CalcBreakdownControl.lua b/src/Classes/CalcBreakdownControl.lua (rejected hunks) +@@ -183,7 +183,7 @@ function CalcBreakdownClass:AddBreakdownSection(sectionData) + { label = "More/less", key = "more" }, + { label = "Inc/red", key = "inc" }, + { label = "Efficiency", key = "efficiency" }, +- { label = "Efficiency More", key = "efficiencyMore" }, ++ { label = "Efficiency More/less", key = "efficiencyMore" }, + { label = "Count", key = "count" }, + { label = "Reservation", key = "total" }, + } diff --git a/src/Data/ModCache.lua.rej b/src/Data/ModCache.lua.rej new file mode 100644 index 0000000000..7c219694fb --- /dev/null +++ b/src/Data/ModCache.lua.rej @@ -0,0 +1,10 @@ +diff a/src/Data/ModCache.lua b/src/Data/ModCache.lua (rejected hunks) +@@ -5664,7 +5664,7 @@ c["Non-Channelling Spells deal 6% increased Damage per 100 maximum Life"]={{[1]= + c["Non-Channelling Spells have 3% increased Critical Hit Chance per 100 maximum Life"]={{[1]={[1]={neg=true,skillType=48,type="SkillType"},[2]={div=100,stat="Life",type="PerStat"},flags=2,keywordFlags=0,name="CritChance",type="INC",value=3}},nil} + c["Non-Channelling Spells have 5% increased Critical Hit Chance per 100 maximum Life"]={{[1]={[1]={neg=true,skillType=48,type="SkillType"},[2]={div=100,stat="Life",type="PerStat"},flags=2,keywordFlags=0,name="CritChance",type="INC",value=5}},nil} + c["Non-Keystone Passive Skills in Medium Radius of allocated Keystone Passive Skills can be allocated without being connected to your tree"]={{[1]={flags=0,keywordFlags=0,name="AllocateFromNodeRadius",type="LIST",value={from="Keystone",radiusIndex=2,to={[1]="Notable",[2]="Normal"}}}},nil} +-c["Non-Minion Skills have 50% less Reservation Efficiency"]={nil,"Non-Minion Skills have 50% less Reservation Efficiency "} ++c["Non-Minion Skills have 50% less Reservation Efficiency"]={{[1]={[1]={neg=true,skillType=6,type="SkillType"},flags=0,keywordFlags=0,name="ReservationEfficiency",type="MORE",value=-50}},nil} + c["Non-Unique Time-Lost Jewels have 40% increased radius"]={nil,"Non-Unique Time-Lost Jewels have 40% increased radius "} + c["Offering Skills have 15% increased Buff effect"]={{[1]={[1]={skillType=154,type="SkillType"},flags=0,keywordFlags=0,name="BuffEffect",type="INC",value=15}},nil} + c["Offering Skills have 20% increased Area of Effect"]={{[1]={[1]={skillType=154,type="SkillType"},flags=0,keywordFlags=0,name="AreaOfEffect",type="INC",value=20}},nil} diff --git a/src/Modules/CalcDefence.lua.rej b/src/Modules/CalcDefence.lua.rej new file mode 100644 index 0000000000..826bfb32de --- /dev/null +++ b/src/Modules/CalcDefence.lua.rej @@ -0,0 +1,28 @@ +diff a/src/Modules/CalcDefence.lua b/src/Modules/CalcDefence.lua (rejected hunks) +@@ -242,7 +242,7 @@ function calcs.doActorLifeManaSpiritReservation(actor) + local baseFlatVal = values.baseFlat * mult + values.reservedFlat = 0 + if values.more > 0 and values.inc > -100 and baseFlatVal ~= 0 then +- values.reservedFlat = m_max(round(baseFlatVal * (100 + values.inc) / 100 * values.more / (1 + values.efficiency / 100) / (values.efficiencyMore), 0), 0) ++ values.reservedFlat = m_max(round(baseFlatVal * (100 + values.inc) / 100 * values.more / (1 + values.efficiency / 100) / values.efficiencyMore, 0), 0) + end + end + if activeSkill.skillData[name.."ReservationPercentForced"] then +@@ -251,7 +251,7 @@ function calcs.doActorLifeManaSpiritReservation(actor) + local basePercentVal = values.basePercent * mult + values.reservedPercent = 0 + if values.more > 0 and values.inc > -100 and basePercentVal ~= 0 then +- values.reservedPercent = m_max(round(basePercentVal * (100 + values.inc) / 100 * values.more / (1 + values.efficiency / 100) / (values.efficiencyMore), 2), 0) ++ values.reservedPercent = m_max(round(basePercentVal * (100 + values.inc) / 100 * values.more / (1 + values.efficiency / 100) / values.efficiencyMore, 2), 0) + end + end + if activeSkill.activeMineCount then +@@ -273,7 +273,7 @@ function calcs.doActorLifeManaSpiritReservation(actor) + + -- Extra reservation of blasphemy needs to be separated from the reservation caused by curses + local blasphemyFlat = activeSkill.skillData["blasphemyReservationFlat" .. name] +- local blasphemyEffectiveFlat = m_max(m_ceil(blasphemyFlat * mult * (100 + values.inc) / 100 * values.more / (1 + values.efficiency / 100), 0), 0) ++ local blasphemyEffectiveFlat = m_max(m_ceil(blasphemyFlat * mult * (100 + values.inc) / 100 * values.more / (1 + values.efficiency / 100) / values.efficiencyMore, 0), 0) + values.reservedFlat = values.reservedFlat + blasphemyEffectiveFlat * instances + end + -- Blood Sacrament increases reservation per stage channelled diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index efd496cbfc..5050c0422a 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -1074,6 +1074,7 @@ local preFlagList = { ["^golems [hd][ae][va][el] "] = { addToMinion = true, addToMinionTag = { type = "SkillType", skillType = SkillType.Golem } }, ["^summoned golems [hd][ae][va][el] "] = { addToMinion = true, addToMinionTag = { type = "SkillType", skillType = SkillType.Golem } }, ["^golem skills have "] = { tag = { type = "SkillType", skillType = SkillType.Golem } }, + ["^non%-minion skills have "] = { tag = { type = "SkillType", skillType = SkillType.Minion, neg = true } }, ["^zombies [hd][ae][va][el] "] = { addToMinion = true, addToMinionTag = { type = "SkillName", skillName = "Raise Zombie", includeTransfigured = true } }, ["^raised zombies [hd][ae][va][el] "] = { addToMinion = true, addToMinionTag = { type = "SkillName", skillName = "Raise Zombie", includeTransfigured = true } }, ["^skeletons [hd][ae][va][el] "] = { addToMinion = true, addToMinionTag = { type = "SkillName", skillName = "Summon Skeletons", includeTransfigured = true } }, From 50fd1f0eb99e176a0116a16e151d82c783a37d33 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Sun, 15 Mar 2026 08:36:43 +1100 Subject: [PATCH 2/2] Fix merge --- src/Classes/CalcBreakdownControl.lua | 1 + src/Classes/CalcBreakdownControl.lua.rej | 10 --------- src/Data/ModCache.lua.rej | 10 --------- src/Modules/CalcDefence.lua.rej | 28 ------------------------ src/Modules/CalcPerform.lua | 7 ++++-- 5 files changed, 6 insertions(+), 50 deletions(-) delete mode 100644 src/Classes/CalcBreakdownControl.lua.rej delete mode 100644 src/Data/ModCache.lua.rej delete mode 100644 src/Modules/CalcDefence.lua.rej diff --git a/src/Classes/CalcBreakdownControl.lua b/src/Classes/CalcBreakdownControl.lua index 7326ebf326..c93ff9f84c 100644 --- a/src/Classes/CalcBreakdownControl.lua +++ b/src/Classes/CalcBreakdownControl.lua @@ -183,6 +183,7 @@ function CalcBreakdownClass:AddBreakdownSection(sectionData) { label = "More/less", key = "more" }, { label = "Inc/red", key = "inc" }, { label = "Efficiency", key = "efficiency" }, + { label = "Efficiency More/less", key = "efficiencyMore" }, { label = "Reservation", key = "total" }, } } diff --git a/src/Classes/CalcBreakdownControl.lua.rej b/src/Classes/CalcBreakdownControl.lua.rej deleted file mode 100644 index a4cd31ec12..0000000000 --- a/src/Classes/CalcBreakdownControl.lua.rej +++ /dev/null @@ -1,10 +0,0 @@ -diff a/src/Classes/CalcBreakdownControl.lua b/src/Classes/CalcBreakdownControl.lua (rejected hunks) -@@ -183,7 +183,7 @@ function CalcBreakdownClass:AddBreakdownSection(sectionData) - { label = "More/less", key = "more" }, - { label = "Inc/red", key = "inc" }, - { label = "Efficiency", key = "efficiency" }, -- { label = "Efficiency More", key = "efficiencyMore" }, -+ { label = "Efficiency More/less", key = "efficiencyMore" }, - { label = "Count", key = "count" }, - { label = "Reservation", key = "total" }, - } diff --git a/src/Data/ModCache.lua.rej b/src/Data/ModCache.lua.rej deleted file mode 100644 index 7c219694fb..0000000000 --- a/src/Data/ModCache.lua.rej +++ /dev/null @@ -1,10 +0,0 @@ -diff a/src/Data/ModCache.lua b/src/Data/ModCache.lua (rejected hunks) -@@ -5664,7 +5664,7 @@ c["Non-Channelling Spells deal 6% increased Damage per 100 maximum Life"]={{[1]= - c["Non-Channelling Spells have 3% increased Critical Hit Chance per 100 maximum Life"]={{[1]={[1]={neg=true,skillType=48,type="SkillType"},[2]={div=100,stat="Life",type="PerStat"},flags=2,keywordFlags=0,name="CritChance",type="INC",value=3}},nil} - c["Non-Channelling Spells have 5% increased Critical Hit Chance per 100 maximum Life"]={{[1]={[1]={neg=true,skillType=48,type="SkillType"},[2]={div=100,stat="Life",type="PerStat"},flags=2,keywordFlags=0,name="CritChance",type="INC",value=5}},nil} - c["Non-Keystone Passive Skills in Medium Radius of allocated Keystone Passive Skills can be allocated without being connected to your tree"]={{[1]={flags=0,keywordFlags=0,name="AllocateFromNodeRadius",type="LIST",value={from="Keystone",radiusIndex=2,to={[1]="Notable",[2]="Normal"}}}},nil} --c["Non-Minion Skills have 50% less Reservation Efficiency"]={nil,"Non-Minion Skills have 50% less Reservation Efficiency "} -+c["Non-Minion Skills have 50% less Reservation Efficiency"]={{[1]={[1]={neg=true,skillType=6,type="SkillType"},flags=0,keywordFlags=0,name="ReservationEfficiency",type="MORE",value=-50}},nil} - c["Non-Unique Time-Lost Jewels have 40% increased radius"]={nil,"Non-Unique Time-Lost Jewels have 40% increased radius "} - c["Offering Skills have 15% increased Buff effect"]={{[1]={[1]={skillType=154,type="SkillType"},flags=0,keywordFlags=0,name="BuffEffect",type="INC",value=15}},nil} - c["Offering Skills have 20% increased Area of Effect"]={{[1]={[1]={skillType=154,type="SkillType"},flags=0,keywordFlags=0,name="AreaOfEffect",type="INC",value=20}},nil} diff --git a/src/Modules/CalcDefence.lua.rej b/src/Modules/CalcDefence.lua.rej deleted file mode 100644 index 826bfb32de..0000000000 --- a/src/Modules/CalcDefence.lua.rej +++ /dev/null @@ -1,28 +0,0 @@ -diff a/src/Modules/CalcDefence.lua b/src/Modules/CalcDefence.lua (rejected hunks) -@@ -242,7 +242,7 @@ function calcs.doActorLifeManaSpiritReservation(actor) - local baseFlatVal = values.baseFlat * mult - values.reservedFlat = 0 - if values.more > 0 and values.inc > -100 and baseFlatVal ~= 0 then -- values.reservedFlat = m_max(round(baseFlatVal * (100 + values.inc) / 100 * values.more / (1 + values.efficiency / 100) / (values.efficiencyMore), 0), 0) -+ values.reservedFlat = m_max(round(baseFlatVal * (100 + values.inc) / 100 * values.more / (1 + values.efficiency / 100) / values.efficiencyMore, 0), 0) - end - end - if activeSkill.skillData[name.."ReservationPercentForced"] then -@@ -251,7 +251,7 @@ function calcs.doActorLifeManaSpiritReservation(actor) - local basePercentVal = values.basePercent * mult - values.reservedPercent = 0 - if values.more > 0 and values.inc > -100 and basePercentVal ~= 0 then -- values.reservedPercent = m_max(round(basePercentVal * (100 + values.inc) / 100 * values.more / (1 + values.efficiency / 100) / (values.efficiencyMore), 2), 0) -+ values.reservedPercent = m_max(round(basePercentVal * (100 + values.inc) / 100 * values.more / (1 + values.efficiency / 100) / values.efficiencyMore, 2), 0) - end - end - if activeSkill.activeMineCount then -@@ -273,7 +273,7 @@ function calcs.doActorLifeManaSpiritReservation(actor) - - -- Extra reservation of blasphemy needs to be separated from the reservation caused by curses - local blasphemyFlat = activeSkill.skillData["blasphemyReservationFlat" .. name] -- local blasphemyEffectiveFlat = m_max(m_ceil(blasphemyFlat * mult * (100 + values.inc) / 100 * values.more / (1 + values.efficiency / 100), 0), 0) -+ local blasphemyEffectiveFlat = m_max(m_ceil(blasphemyFlat * mult * (100 + values.inc) / 100 * values.more / (1 + values.efficiency / 100) / values.efficiencyMore, 0), 0) - values.reservedFlat = values.reservedFlat + blasphemyEffectiveFlat * instances - end - -- Blood Sacrament increases reservation per stage channelled diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index 05b2d161b5..b32138f713 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -1800,6 +1800,7 @@ function calcs.perform(env, skipEHP) values.more = skillModList:More(skillCfg, name.."Reserved", "Reserved") values.inc = skillModList:Sum("INC", skillCfg, name.."Reserved", "Reserved") values.efficiency = m_max(skillModList:Sum("INC", skillCfg, name.."ReservationEfficiency", "ReservationEfficiency"), -100) + values.efficiencyMore = skillModList:More(skillCfg, name.."ReservationEfficiency", "ReservationEfficiency") -- used for Arcane Cloak calculations in ModStore.GetStat env.player[name.."Efficiency"] = values.efficiency if activeSkill.skillData[name.."ReservationFlatForced"] then @@ -1808,7 +1809,7 @@ function calcs.perform(env, skipEHP) local baseFlatVal = m_floor(values.baseFlat * mult) values.reservedFlat = 0 if values.more > 0 and values.inc > -100 and baseFlatVal ~= 0 then - values.reservedFlat = m_max(round(baseFlatVal * (100 + values.inc) / 100 * values.more / (1 + values.efficiency / 100), 0), 0) + values.reservedFlat = m_max(round(baseFlatVal * (100 + values.inc) / 100 * values.more / (1 + values.efficiency / 100) / values.efficiencyMore, 0), 0) end end if activeSkill.skillData[name.."ReservationPercentForced"] then @@ -1817,7 +1818,7 @@ function calcs.perform(env, skipEHP) local basePercentVal = values.basePercent * mult values.reservedPercent = 0 if values.more > 0 and values.inc > -100 and basePercentVal ~= 0 then - values.reservedPercent = m_max(round(basePercentVal * (100 + values.inc) / 100 * values.more / (1 + values.efficiency / 100), 2), 0) + values.reservedPercent = m_max(round(basePercentVal * (100 + values.inc) / 100 * values.more / (1 + values.efficiency / 100) / values.efficiencyMore, 2), 0) end end if activeSkill.activeMineCount then @@ -1840,6 +1841,7 @@ function calcs.perform(env, skipEHP) more = values.more ~= 1 and ("x "..values.more), inc = values.inc ~= 0 and ("x "..(1 + values.inc / 100)), efficiency = values.efficiency ~= 0 and ("x " .. round(100 / (100 + values.efficiency), 4)), + efficiencyMore = values.efficiencyMore ~= 1 and ("x "..values.efficiencyMore), total = values.reservedFlat, }) end @@ -1856,6 +1858,7 @@ function calcs.perform(env, skipEHP) more = values.more ~= 1 and ("x "..values.more), inc = values.inc ~= 0 and ("x "..(1 + values.inc / 100)), efficiency = values.efficiency ~= 0 and ("x " .. round(100 / (100 + values.efficiency), 4)), + efficiencyMore = values.efficiencyMore ~= 1 and ("x "..values.efficiencyMore), total = values.reservedPercent .. "%", }) end