Skip to content

Commit

Permalink
Merge branch 'dev'
Browse files Browse the repository at this point in the history
  • Loading branch information
LocalIdentity committed Jul 29, 2024
2 parents dd1290c + 61e8edc commit 4b061c1
Show file tree
Hide file tree
Showing 11 changed files with 51 additions and 19 deletions.
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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)

<!-- Release notes generated using configuration in .github/release.yml at dev -->

## 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)
Expand Down
10 changes: 10 additions & 0 deletions changelog.txt
Original file line number Diff line number Diff line change
@@ -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 ---
Expand Down
2 changes: 1 addition & 1 deletion manifest.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?>
<PoBVersion>
<Version number="2.47.0" />
<Version number="2.47.1" />
<Source part="default" url="https://raw.githubusercontent.com/PathOfBuildingCommunity/PathOfBuilding/{branch}/" />
<Source part="runtime" platform="win32" url="https://raw.githubusercontent.com/PathOfBuildingCommunity/PathOfBuilding/{branch}/runtime/" />
<Source part="program" url="https://raw.githubusercontent.com/PathOfBuildingCommunity/PathOfBuilding/{branch}/src/" />
Expand Down
4 changes: 3 additions & 1 deletion src/Classes/Item.lua
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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
Expand Down Expand Up @@ -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 })
Expand Down
14 changes: 7 additions & 7 deletions src/Data/ModCache.lua
Original file line number Diff line number Diff line change
Expand Up @@ -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}
Expand Down Expand Up @@ -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 "}
Expand Down Expand Up @@ -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}
Expand Down Expand Up @@ -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}
Expand Down
2 changes: 1 addition & 1 deletion src/Data/Skills/other.lua
Original file line number Diff line number Diff line change
Expand Up @@ -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, }
}
}
2 changes: 1 addition & 1 deletion src/Data/Skills/sup_str.lua
Original file line number Diff line number Diff line change
Expand Up @@ -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 = {
Expand Down
2 changes: 1 addition & 1 deletion src/Export/Skills/other.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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, }
}
}
2 changes: 1 addition & 1 deletion src/Export/Skills/sup_str.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
13 changes: 8 additions & 5 deletions src/Modules/CalcOffence.lua
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion src/Modules/ModParser.lua
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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" }) },
Expand Down

0 comments on commit 4b061c1

Please sign in to comment.