diff --git a/CHANGELOG.md b/CHANGELOG.md index 775a817657..63062aa1de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Changelog +## [v2.47.1](https://github.com/PathOfBuildingCommunity/PathOfBuilding/tree/v2.47.1) (2024/07/29) + +[Full Changelog](https://github.com/PathOfBuildingCommunity/PathOfBuilding/compare/v2.47.0...v2.47.1) + + + +## What's Changed +### Fixed Calculations +- Fix Added Damage not applying to Monster Explosions [\#8008](https://github.com/PathOfBuildingCommunity/PathOfBuilding/pull/8008) ([LocalIdentity](https://github.com/LocalIdentity)) +- Fix Poison stacks applying twice to Poison DPS [\#8007](https://github.com/PathOfBuildingCommunity/PathOfBuilding/pull/8007) ([LocalIdentity](https://github.com/LocalIdentity)) +- Fix damage calculation when using both Autoexertion and Echoes of Creation [\#8006](https://github.com/PathOfBuildingCommunity/PathOfBuilding/pull/8006) ([LocalIdentity](https://github.com/LocalIdentity)) +### Fixed Behaviours +- Fix increased Chance to Block mod on Shields not working [\#8010](https://github.com/PathOfBuildingCommunity/PathOfBuilding/pull/8010) ([LocalIdentity](https://github.com/LocalIdentity)) + + + ## [v2.47.0](https://github.com/PathOfBuildingCommunity/PathOfBuilding/tree/v2.47.0) (2024/07/29) [Full Changelog](https://github.com/PathOfBuildingCommunity/PathOfBuilding/compare/v2.46.0...v2.47.0) diff --git a/changelog.txt b/changelog.txt index b21dab8b00..c51888b1e7 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,13 @@ +VERSION[2.47.1][2024/07/29] + +--- Fixed Calculations --- +* Fix Added Damage not applying to Monster Explosions (LocalIdentity) +* Fix Poison stacks applying twice to Poison DPS (LocalIdentity) +* Fix damage calculation when using both Autoexertion and Echoes of Creation (LocalIdentity) + +--- Fixed Behaviours --- +- Fix increased Chance to Block mod on Shields not working (LocalIdentity) + VERSION[2.47.0][2024/07/29] --- New to Path of Building --- diff --git a/manifest.xml b/manifest.xml index de295cabec..81461c57ac 100644 --- a/manifest.xml +++ b/manifest.xml @@ -1,6 +1,6 @@ - + diff --git a/src/Classes/Item.lua b/src/Classes/Item.lua index 0171692431..c13ff579ba 100644 --- a/src/Classes/Item.lua +++ b/src/Classes/Item.lua @@ -1385,6 +1385,7 @@ function ItemClass:BuildModListForSlotNum(baseList, slotNum) local energyShieldVariance = (self.base.armour.EnergyShieldBaseMax or 0) - (self.base.armour.EnergyShieldBaseMin or 0) local armourEnergyShieldBase = calcLocal(modList, "ArmourAndEnergyShield", "BASE", 0) local wardBase = calcLocal(modList, "Ward", "BASE", 0) + (self.base.armour.WardBaseMin or 0) + local blockBase = calcLocal(modList, "BlockChance", "BASE", 0) local wardVariance = (self.base.armour.WardBaseMax or 0) - (self.base.armour.WardBaseMin or 0) local armourInc = calcLocal(modList, "Armour", "INC", 0) local armourEvasionInc = calcLocal(modList, "ArmourAndEvasion", "INC", 0) @@ -1393,6 +1394,7 @@ function ItemClass:BuildModListForSlotNum(baseList, slotNum) local energyShieldInc = calcLocal(modList, "EnergyShield", "INC", 0) local wardInc = calcLocal(modList, "Ward", "INC", 0) local armourEnergyShieldInc = calcLocal(modList, "ArmourAndEnergyShield", "INC", 0) + local blockInc = calcLocal(modList, "BlockChance", "INC", 0) local defencesInc = calcLocal(modList, "Defences", "INC", 0) local qualityScalar = self.quality if calcLocal(modList, "AlternateQualityArmour", "BASE", 0) > 0 then @@ -1435,7 +1437,7 @@ function ItemClass:BuildModListForSlotNum(baseList, slotNum) end if self.base.armour.BlockChance then - armourData.BlockChance = self.base.armour.BlockChance + calcLocal(modList, "BlockChance", "BASE", 0) + armourData.BlockChance = m_floor((self.base.armour.BlockChance + blockBase) * (1 + blockInc / 100)) end if self.base.armour.MovementPenalty then modList:NewMod("MovementSpeed", "INC", -self.base.armour.MovementPenalty, self.modSource, { type = "Condition", var = "IgnoreMovementPenalties", neg = true }) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index b32142b6f0..fcb1e2ef4a 100755 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -2368,7 +2368,7 @@ c["10% reduced maximum Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="Energ c["10% reduced maximum Life"]={{[1]={flags=0,keywordFlags=0,name="Life",type="INC",value=-10}},nil} c["10.5% increased Movement Speed"]={{[1]={flags=0,keywordFlags=0,name="MovementSpeed",type="BASE",value=10}},".5% increased "} c["100% Chance to Cause Monster to Flee on Block"]={{}," to Cause Monster to Flee on Block "} -c["100% Chance to Cause Monster to Flee on Block +20% Chance to Block Attack Damage from Cursed Enemies"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Cursed"},flags=0,keywordFlags=0,name="BlockChance",type="BASE",value=100}}," to Cause Monster to Flee on Block +20% Chance "} +c["100% Chance to Cause Monster to Flee on Block +20% Chance to Block Attack Damage from Cursed Enemies"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Cursed"},flags=0,keywordFlags=0,name="BlockChance",type="BASE",value=100}}," to Cause Monster to Flee on Block +20% Attack Damage "} c["100% Increased Armour"]={{[1]={flags=0,keywordFlags=0,name="Armour",type="INC",value=100}},nil} c["100% Increased Armour and Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="ArmourAndEnergyShield",type="INC",value=100}},nil} c["100% Increased Evasion Rating"]={{[1]={flags=0,keywordFlags=0,name="Evasion",type="INC",value=100}},nil} @@ -3392,7 +3392,7 @@ c["20% chance to Blind Enemies on Hit with Attacks 20% increased Blind Effect"]= c["20% chance to Blind Enemies on Hit with Attacks 40% increased Damage with Hits and Ailments against Blinded Enemies"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="Blinded"},flags=4,keywordFlags=0,name="Damage",type="BASE",value=20}}," to Blind Enemies with Attacks 40% increased with Hits and Ailments "} c["20% chance to Blind Enemies with Off Hand Hits"]={{}," to Blind Enemies Hits "} c["20% chance to Cover Rare or Unique Enemies in Ash for 10 Seconds on Hit"]={{}," to Cover Rare or Unique Enemies in Ash "} -c["20% chance to Cover Rare or Unique Enemies in Ash for 10 Seconds on Hit +6% Chance to Block Attack Damage"]={{[1]={flags=4,keywordFlags=0,name="BlockChance",type="BASE",value=20}}," to Cover Rare or Unique Enemies in Ash +6% Chance "} +c["20% chance to Cover Rare or Unique Enemies in Ash for 10 Seconds on Hit +6% Chance to Block Attack Damage"]={{[1]={flags=4,keywordFlags=0,name="BlockChance",type="BASE",value=20}}," to Cover Rare or Unique Enemies in Ash +6% Attack Damage "} c["20% chance to Cover Rare or Unique Enemies in Ash for 10 Seconds on Hit Unaffected by Ignite"]={{}," to Cover Rare or Unique Enemies in Ash Unaffected by Ignite "} c["20% chance to Cover Rare or Unique Enemies in Ash for 10 Seconds on Hit Unaffected by Ignite 20% increased Warcry Buff Effect"]={{[1]={flags=4,keywordFlags=0,name="BuffEffect",type="BASE",value=20}}," to Cover Rare or Unique Enemies in Ash Unaffected by Ignite 20% increased Warcry "} c["20% chance to Cover Rare or Unique Enemies in Ash for 10 Seconds on Hit Unaffected by Ignite 20% increased Warcry Buff Effect 10% increased Strength"]={{[1]={flags=4,keywordFlags=0,name="BuffEffect",type="BASE",value=20}}," to Cover Rare or Unique Enemies in Ash Unaffected by Ignite 20% increased Warcry 10% increased Strength "} @@ -3892,9 +3892,9 @@ c["25% chance that if you would gain Power Charges, you instead gain up to"]={{} c["25% chance that if you would gain Power Charges, you instead gain up to your maximum number of Power Charges"]={{}," that if you would gain Power Charges, you instead gain up to your maximum number of Power Charges "} c["25% chance to Aggravate Bleeding on targets you Critically Strike with Attacks"]={{}," to Aggravate Bleeding on targets you Critically Strike "} c["25% chance to Aggravate Bleeding on targets you Hit with Attacks"]={{}," to Aggravate Bleeding on targets you Hit "} -c["25% chance to Aggravate Bleeding on targets you Hit with Attacks Gain 50% Chance to Block from Equipped Shield instead of the Shield's value"]={{[1]={flags=0,keywordFlags=65536,name="BlockChance",type="BASE",value=25}}," to Aggravate Bleeding on targets you Hit Gain 50% Chance from Equipped Shield instead of the Shield's value "} -c["25% chance to Aggravate Bleeding on targets you Hit with Attacks Gain 50% Chance to Block from Equipped Shield instead of the Shield's value Inherent Bonuses from Dual Wielding are doubled"]={{[1]={flags=0,keywordFlags=65536,name="BlockChance",type="BASE",value=25}}," to Aggravate Bleeding on targets you Hit Gain 50% Chance from Equipped Shield instead of the Shield's value Inherent Bonuses from Dual Wielding are doubled "} -c["25% chance to Aggravate Bleeding on targets you Hit with Attacks Gain 50% Chance to Block from Equipped Shield instead of the Shield's value Inherent Bonuses from Dual Wielding are doubled Deal 1% more Damage with Hits and Ailments to Rare and Unique Enemies for every 2 seconds they've ever been in your Presence, up to a maximum of 50%"]={{[1]={flags=0,keywordFlags=65536,name="BlockChance",type="BASE",value=25}}," to Aggravate Bleeding on targets you Hit Gain 50% Chance from Equipped Shield instead of the Shield's value Inherent Bonuses from Dual Wielding are doubled Deal 1% more Damage with Hits and Ailments to Rare and Unique Enemies for every 2 seconds they've ever been in your Presence, up to a maximum of 50% "} +c["25% chance to Aggravate Bleeding on targets you Hit with Attacks Gain 50% Chance to Block from Equipped Shield instead of the Shield's value"]={{[1]={flags=0,keywordFlags=65536,name="BlockChance",type="BASE",value=25}}," to Aggravate Bleeding on targets you Hit Gain 50% from Equipped Shield instead of the Shield's value "} +c["25% chance to Aggravate Bleeding on targets you Hit with Attacks Gain 50% Chance to Block from Equipped Shield instead of the Shield's value Inherent Bonuses from Dual Wielding are doubled"]={{[1]={flags=0,keywordFlags=65536,name="BlockChance",type="BASE",value=25}}," to Aggravate Bleeding on targets you Hit Gain 50% from Equipped Shield instead of the Shield's value Inherent Bonuses from Dual Wielding are doubled "} +c["25% chance to Aggravate Bleeding on targets you Hit with Attacks Gain 50% Chance to Block from Equipped Shield instead of the Shield's value Inherent Bonuses from Dual Wielding are doubled Deal 1% more Damage with Hits and Ailments to Rare and Unique Enemies for every 2 seconds they've ever been in your Presence, up to a maximum of 50%"]={{[1]={flags=0,keywordFlags=65536,name="BlockChance",type="BASE",value=25}}," to Aggravate Bleeding on targets you Hit Gain 50% from Equipped Shield instead of the Shield's value Inherent Bonuses from Dual Wielding are doubled Deal 1% more Damage with Hits and Ailments to Rare and Unique Enemies for every 2 seconds they've ever been in your Presence, up to a maximum of 50% "} c["25% chance to Aggravate Bleeding on targets you Hit with Exerted Attacks"]={{}," to Aggravate Bleeding on targets you Hit with Exerted Attacks "} c["25% chance to Avoid Elemental Ailments"]={{[1]={flags=0,keywordFlags=0,name="AvoidElementalAilments",type="BASE",value=25}},nil} c["25% chance to Avoid Elemental Ailments while Phasing"]={{[1]={[1]={type="Condition",var="Phasing"},flags=0,keywordFlags=0,name="AvoidElementalAilments",type="BASE",value=25}},nil} @@ -10484,8 +10484,8 @@ c["Skills Supported by Nightblade have 40% increased Effect of Elusive"]={{[1]={ c["Skills Supported by Unleash have 30% increased Seal gain frequency"]={{[1]={flags=0,keywordFlags=0,name="SealGainFrequency",type="INC",value=30}},nil} c["Skills Supported by Unleash have 40% increased Seal gain frequency"]={{[1]={flags=0,keywordFlags=0,name="SealGainFrequency",type="INC",value=40}},nil} c["Skills Supported by Unleash have 50% increased Seal gain frequency"]={{[1]={flags=0,keywordFlags=0,name="SealGainFrequency",type="INC",value=50}},nil} -c["Skills deal 13% more Damage for each Warcry Exerting them"]={{[1]={flags=0,keywordFlags=0,name="ExertAverageIncrease",type="MORE",value=13}},nil} -c["Skills deal 15% more Damage for each Warcry Exerting them"]={{[1]={flags=0,keywordFlags=0,name="ExertAverageIncrease",type="MORE",value=15}},nil} +c["Skills deal 13% more Damage for each Warcry Exerting them"]={{[1]={flags=0,keywordFlags=0,name="EchoesExertAverageIncrease",type="MORE",value=13}},nil} +c["Skills deal 15% more Damage for each Warcry Exerting them"]={{[1]={flags=0,keywordFlags=0,name="EchoesExertAverageIncrease",type="MORE",value=15}},nil} c["Skills fire 2 additional Projectiles"]={{[1]={flags=0,keywordFlags=0,name="ProjectileCount",type="BASE",value=2}},nil} c["Skills fire 2 additional Projectiles during Effect"]={{[1]={[1]={type="Condition",var="UsingFlask"},flags=0,keywordFlags=0,name="ProjectileCount",type="BASE",value=2}},nil} c["Skills fire 2 additional Projectiles if you've been Hit Recently"]={{[1]={[1]={type="Condition",var="BeenHitRecently"},flags=0,keywordFlags=0,name="ProjectileCount",type="BASE",value=2}},nil} diff --git a/src/Data/Skills/other.lua b/src/Data/Skills/other.lua index 6fd003afec..7a44f899be 100644 --- a/src/Data/Skills/other.lua +++ b/src/Data/Skills/other.lua @@ -3941,6 +3941,6 @@ skills["EnemyExplode"] = { "skill_can_add_multiple_charges_per_action", }, levels = { - [1] = { damageEffectiveness = 0, baseMultiplier = 1, levelRequirement = 1, } + [1] = { damageEffectiveness = 1, baseMultiplier = 1, levelRequirement = 1, } } } diff --git a/src/Data/Skills/sup_str.lua b/src/Data/Skills/sup_str.lua index c1a1148337..b4403dd43d 100644 --- a/src/Data/Skills/sup_str.lua +++ b/src/Data/Skills/sup_str.lua @@ -4496,7 +4496,7 @@ skills["SupportOverexertion"] = { mod("ExertIncrease", "INC", nil) }, ["support_overexertion_damage_+%_final_per_warcry_exerting_action"] = { - mod("ExertAverageIncrease", "MORE", nil) + mod("AutoexertionExertAverageIncrease", "MORE", nil) }, }, qualityStats = { diff --git a/src/Export/Skills/other.txt b/src/Export/Skills/other.txt index 9ced8889b6..ce71a86798 100644 --- a/src/Export/Skills/other.txt +++ b/src/Export/Skills/other.txt @@ -1129,6 +1129,6 @@ skills["EnemyExplode"] = { "skill_can_add_multiple_charges_per_action", }, levels = { - [1] = { damageEffectiveness = 0, baseMultiplier = 1, levelRequirement = 1, } + [1] = { damageEffectiveness = 1, baseMultiplier = 1, levelRequirement = 1, } } } diff --git a/src/Export/Skills/sup_str.txt b/src/Export/Skills/sup_str.txt index 071eef361e..0ad9d7304e 100644 --- a/src/Export/Skills/sup_str.txt +++ b/src/Export/Skills/sup_str.txt @@ -632,7 +632,7 @@ local skills, mod, flag, skill = ... mod("ExertIncrease", "INC", nil) }, ["support_overexertion_damage_+%_final_per_warcry_exerting_action"] = { - mod("ExertAverageIncrease", "MORE", nil) + mod("AutoexertionExertAverageIncrease", "MORE", nil) }, }, #mods \ No newline at end of file diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index 109770587a..f5a26ca96b 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -2585,20 +2585,23 @@ function calcs.offence(env, actor, activeSkill) local incExertedAttacks = skillModList:Sum("INC", cfg, "ExertIncrease") local moreExertedAttacks = skillModList:Sum("MORE", cfg, "ExertIncrease") local moreExertedAttackDamage = skillModList:Sum("MORE", cfg, "ExertAttackIncrease") - local moreAverageExertedDamage = skillModList:Sum("MORE", cfg, "ExertAverageIncrease") + local autoExertionExertedDamage = skillModList:Sum("MORE", cfg, "AutoexertionExertAverageIncrease") + local echoesOfCreationExertedDamage = skillModList:Sum("MORE", cfg, "EchoesExertAverageIncrease") if activeSkill.skillModList:Flag(nil, "Condition:WarcryMaxHit") then skillModList:NewMod("Damage", "INC", incExertedAttacks, "Exerted Attacks") skillModList:NewMod("Damage", "MORE", moreExertedAttacks, "Exerted Attacks") skillModList:NewMod("Damage", "MORE", moreExertedAttackDamage, "Exerted Attack Damage", ModFlag.Attack) - skillModList:NewMod("Damage", "MORE", moreAverageExertedDamage * warcryCount, "# Warcry Exerting Damage") + skillModList:NewMod("Damage", "MORE", autoExertionExertedDamage * warcryCount, "Max Autoexertion Support") + skillModList:NewMod("Damage", "MORE", echoesOfCreationExertedDamage * warcryCount, "Max Echoes of Creation") else skillModList:NewMod("Damage", "INC", incExertedAttacks * globalOutput.ExertedAttackUptimeRatio / 100, "Uptime Scaled Exerted Attacks") skillModList:NewMod("Damage", "MORE", moreExertedAttacks * globalOutput.ExertedAttackUptimeRatio / 100, "Uptime Scaled Exerted Attacks") skillModList:NewMod("Damage", "MORE", moreExertedAttackDamage * globalOutput.ExertedAttackUptimeRatio / 100, "Uptime Scaled Exerted Attack Damage", ModFlag.Attack) - skillModList:NewMod("Damage", "MORE", moreAverageExertedDamage * globalOutput.GlobalWarcryUptimeRatio / 100, "Uptime Scaled # Warcry Exerting Damage") + skillModList:NewMod("Damage", "MORE", autoExertionExertedDamage * globalOutput.GlobalWarcryUptimeRatio / 100, "Uptime Scaled Autoexertion Support") + skillModList:NewMod("Damage", "MORE", echoesOfCreationExertedDamage * globalOutput.GlobalWarcryUptimeRatio / 100, "Uptime Scaled Echoes of Creation") end globalOutput.ExertedAttackAvgDmg = calcLib.mod(skillModList, skillCfg, "ExertIncrease") - globalOutput.ExertedAttackAvgDmg = globalOutput.ExertedAttackAvgDmg * calcLib.mod(skillModList, skillCfg, "ExertAttackIncrease", "ExertAverageIncrease") + globalOutput.ExertedAttackAvgDmg = globalOutput.ExertedAttackAvgDmg * calcLib.mod(skillModList, skillCfg, "ExertAttackIncrease", "AutoexertionExertAverageIncrease", "EchoesExertAverageIncrease") globalOutput.ExertedAttackHitEffect = globalOutput.ExertedAttackAvgDmg * globalOutput.ExertedAttackUptimeRatio / 100 globalOutput.ExertedAttackMaxHitEffect = globalOutput.ExertedAttackAvgDmg if globalBreakdown then @@ -4274,7 +4277,7 @@ function calcs.offence(env, actor, activeSkill) output.TotalPoisonAverageDamage = output.PoisonDamage output.TotalPoisonDPS = output.PoisonDPS else - output.TotalPoisonDPS = m_min(PoisonDPSCapped * output.TotalPoisonStacks, data.misc.DotDpsCap) + output.TotalPoisonDPS = m_min(PoisonDPSCapped, data.misc.DotDpsCap) end if breakdown then if output.CritPoisonDotMulti and (output.CritPoisonDotMulti ~= output.PoisonDotMulti) then diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index abb7e7c9fa..5f4c7a4769 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -320,6 +320,7 @@ local modNameList = { ["to block attacks"] = "BlockChance", ["to block attack damage"] = "BlockChance", ["block chance"] = "BlockChance", + ["chance to block"] = "BlockChance", ["block chance with staves"] = { "BlockChance", tag = { type = "Condition", var = "UsingStaff" } }, ["to block with staves"] = { "BlockChance", tag = { type = "Condition", var = "UsingStaff" } }, ["block chance against projectiles"] = "ProjectileBlockChance", @@ -4569,7 +4570,7 @@ local specialModList = { ["cannot recover energy shield to above evasion rating"] = { flag("EvasionESRecoveryCap") }, ["warcries exert (%d+) additional attacks?"] = function(num) return { mod("ExtraExertedAttacks", "BASE", num) } end, ["warcries have (%d+)%% chance to exert (%d+) additional attacks?"] = function(num, _, var) return { mod("ExtraExertedAttacks", "BASE", (num*var/100)) } end, - ["skills deal (%d+)%% more damage for each warcry exerting them"] = function(num) return { mod("ExertAverageIncrease", "MORE", num, nil) } end, + ["skills deal (%d+)%% more damage for each warcry exerting them"] = function(num) return { mod("EchoesExertAverageIncrease", "MORE", num, nil) } end, ["iron will"] = { flag("IronWill") }, ["iron reflexes while stationary"] = { mod("Keystone", "LIST", "Iron Reflexes", { type = "Condition", var = "Stationary" }) }, ["you have iron reflexes while at maximum frenzy charges"] = { mod("Keystone", "LIST", "Iron Reflexes", { type = "StatThreshold", stat = "FrenzyCharges", thresholdStat = "FrenzyChargesMax" }) },