Skip to content

Commit

Permalink
Merge branch 'dev'
Browse files Browse the repository at this point in the history
  • Loading branch information
LocalIdentity committed Dec 5, 2023
2 parents 597468b + 4a896e0 commit 43d2db7
Show file tree
Hide file tree
Showing 8 changed files with 103 additions and 90 deletions.
17 changes: 17 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,22 @@
# Changelog

## [v2.35.2](https://github.com/PathOfBuildingCommunity/PathOfBuilding/tree/v2.35.2) (2023/12/06)

[Full Changelog](https://github.com/PathOfBuildingCommunity/PathOfBuilding/compare/v2.35.1...v2.35.2)

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

## What's Changed
### Fixed Bugs
- Fix Blade Vortex gaining damage from Unleash [\#6921](https://github.com/PathOfBuildingCommunity/PathOfBuilding/pull/6921) ([LocalIdentity](https://github.com/LocalIdentity))
- Fix Tailwind not applying [\#6919](https://github.com/PathOfBuildingCommunity/PathOfBuilding/pull/6919) ([LocalIdentity](https://github.com/LocalIdentity))

### Accuracy Improvements
- Fix Ball Lightning quality stat [\#6923](https://github.com/PathOfBuildingCommunity/PathOfBuilding/pull/6923) ([LocalIdentity](https://github.com/LocalIdentity))
- Remove dead Divine Ire mods [\#6922](https://github.com/PathOfBuildingCommunity/PathOfBuilding/pull/6922) ([LocalIdentity](https://github.com/LocalIdentity))



## [v2.35.1](https://github.com/PathOfBuildingCommunity/PathOfBuilding/tree/v2.35.1) (2023/12/06)

[Full Changelog](https://github.com/PathOfBuildingCommunity/PathOfBuilding/compare/v2.35.0...v2.35.1)
Expand Down
11 changes: 11 additions & 0 deletions changelog.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
VERSION[2.35.2][2023/12/06]

--- Fixed Bugs ---
* Fix Blade Vortex gaining damage from Unleash (LocalIdentity)
* Fix Tailwind not applying (LocalIdentity)

--- Accuracy Improvements ---
* Fix Ball Lightning quality stat (LocalIdentity)
* Remove dead Divine Ire mods (LocalIdentity)


VERSION[2.35.1][2023/12/06]

--- Fixed Crashes ---
Expand Down
3 changes: 3 additions & 0 deletions src/Data/SkillStatMap.lua
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,9 @@ return {
skill("castTimeOverride", nil),
div = 1000,
},
["skill_cannot_gain_repeat_bonuses"] = {
flag("NoRepeatBonuses"),
},

--
-- Defensive modifiers
Expand Down
10 changes: 2 additions & 8 deletions src/Data/Skills/act_int.lua
Original file line number Diff line number Diff line change
Expand Up @@ -724,7 +724,7 @@ skills["BallLightning"] = {
},
qualityStats = {
Default = {
{ "lightning_damage_+%", 1 },
{ "active_skill_base_radius_+", 0.1 },
},
Alternate1 = {
{ "base_cast_speed_+%", 0.5 },
Expand Down Expand Up @@ -2778,9 +2778,7 @@ skills["DivineTempest"] = {
castTime = 0.22,
preDamageFunc = function(activeSkill, output)
if activeSkill.skillPart == 2 then
local skillCfg = activeSkill.skillCfg
local skillModList = activeSkill.skillModList
activeSkill.skillData.hitTimeMultiplier = math.max(skillModList:Sum("BASE", skillCfg, "Multiplier:DivineIreStage") / (1 + skillModList:Sum("BASE", skillCfg, "Multiplier:DivineIreUniqueEnemyCount") + skillModList:Sum("BASE", skillCfg, "NormalEnemyHitMultiplier") * skillModList:Sum("BASE", skillCfg, "Multiplier:DivineIreNormalEnemyCount")), 1)
activeSkill.skillData.hitTimeMultiplier = activeSkill.skillModList:Sum("BASE", activeSkill.skillCfg, "Multiplier:DivineIreStage")
end
end,
parts = {
Expand All @@ -2805,10 +2803,6 @@ skills["DivineTempest"] = {
["divine_tempest_ailment_damage_+%_final_per_stage"] = {
mod("Damage", "MORE", nil, 0, KeywordFlag.Ailment, { type = "Multiplier", var = "DivineIreStageAfterFirst" }),
},
["divine_tempest_stage_on_hitting_normal_magic_%_chance"] = {
mod("NormalEnemyHitMultiplier", "BASE", nil),
div = 100
},
},
baseFlags = {
spell = true,
Expand Down
8 changes: 1 addition & 7 deletions src/Export/Skills/act_int.txt
Original file line number Diff line number Diff line change
Expand Up @@ -632,9 +632,7 @@ local skills, mod, flag, skill = ...
#flags spell area
preDamageFunc = function(activeSkill, output)
if activeSkill.skillPart == 2 then
local skillCfg = activeSkill.skillCfg
local skillModList = activeSkill.skillModList
activeSkill.skillData.hitTimeMultiplier = math.max(skillModList:Sum("BASE", skillCfg, "Multiplier:DivineIreStage") / (1 + skillModList:Sum("BASE", skillCfg, "Multiplier:DivineIreUniqueEnemyCount") + skillModList:Sum("BASE", skillCfg, "NormalEnemyHitMultiplier") * skillModList:Sum("BASE", skillCfg, "Multiplier:DivineIreNormalEnemyCount")), 1)
activeSkill.skillData.hitTimeMultiplier = activeSkill.skillModList:Sum("BASE", activeSkill.skillCfg, "Multiplier:DivineIreStage")
end
end,
parts = {
Expand All @@ -659,10 +657,6 @@ local skills, mod, flag, skill = ...
["divine_tempest_ailment_damage_+%_final_per_stage"] = {
mod("Damage", "MORE", nil, 0, KeywordFlag.Ailment, { type = "Multiplier", var = "DivineIreStageAfterFirst" }),
},
["divine_tempest_stage_on_hitting_normal_magic_%_chance"] = {
mod("NormalEnemyHitMultiplier", "BASE", nil),
div = 100
},
},
#baseMod mod("Multiplier:DivineIreMaxStages", "BASE", 10, 0, 0, { type = "SkillPart", skillPart = 2 })
#baseMod skill("radius", 38)
Expand Down
4 changes: 2 additions & 2 deletions src/Modules/CalcOffence.lua
Original file line number Diff line number Diff line change
Expand Up @@ -807,7 +807,7 @@ function calcs.offence(env, actor, activeSkill)
end
end
end
if skillModList:Flag(nil, "HasSeals") and activeSkill.skillTypes[SkillType.CanRapidFire] then
if skillModList:Flag(nil, "HasSeals") and activeSkill.skillTypes[SkillType.CanRapidFire] and not skillModList:Flag(nil, "NoRepeatBonuses") then
-- Applies DPS multiplier based on seals count
output.SealCooldown = skillModList:Sum("BASE", skillCfg, "SealGainFrequency") / calcLib.mod(skillModList, skillCfg, "SealGainFrequency")
output.SealMax = skillModList:Sum("BASE", skillCfg, "SealCount")
Expand Down Expand Up @@ -3165,7 +3165,7 @@ function calcs.offence(env, actor, activeSkill)
end
output.AverageDamage = output.AverageHit * output.HitChance / 100
globalOutput.AverageBurstHits = output.AverageBurstHits or 1
local repeatPenalty = skillModList:Flag(nil, "HasSeals") and activeSkill.skillTypes[SkillType.CanRapidFire] and calcLib.mod(skillModList, skillCfg, "SealRepeatPenalty") or 1
local repeatPenalty = skillModList:Flag(nil, "HasSeals") and activeSkill.skillTypes[SkillType.CanRapidFire] and not skillModList:Flag(nil, "NoRepeatBonuses") and calcLib.mod(skillModList, skillCfg, "SealRepeatPenalty") or 1
globalOutput.AverageBurstDamage = output.AverageDamage + output.AverageDamage * (globalOutput.AverageBurstHits - 1) * repeatPenalty or 0
globalOutput.ShowBurst = globalOutput.AverageBurstHits > 1
output.TotalDPS = output.AverageDamage * (globalOutput.HitSpeed or globalOutput.Speed) * skillData.dpsMultiplier * quantityMultiplier
Expand Down
133 changes: 67 additions & 66 deletions src/Modules/CalcPerform.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2682,6 +2682,73 @@ function calcs.perform(env, fullDPSSkipEHP)
enemyDB:ReplaceMod("Multiplier:ImpaleStacks", "BASE", maxImpaleStacks, "Config", { type = "Condition", var = "Combat" })
end

-- Check for extra auras
buffExports["Aura"]["extraAura"] = { effectMult = 1, modList = new("ModList") }
for _, value in ipairs(modDB:List(nil, "ExtraAura")) do
local modList = { value.mod }
if not value.onlyAllies then
local inc = modDB:Sum("INC", nil, "BuffEffectOnSelf", "AuraEffectOnSelf")
local more = modDB:More(nil, "BuffEffectOnSelf", "AuraEffectOnSelf")
modDB:ScaleAddList(modList, (1 + inc / 100) * more)
if not value.notBuff then
modDB.multipliers["BuffOnSelf"] = (modDB.multipliers["BuffOnSelf"] or 0) + 1
end
end
if not modDB:Flag(nil, "SelfAurasCannotAffectAllies") then
if env.minion then
local inc = env.minion.modDB:Sum("INC", nil, "BuffEffectOnSelf", "AuraEffectOnSelf")
local more = env.minion.modDB:More(nil, "BuffEffectOnSelf", "AuraEffectOnSelf")
env.minion.modDB:ScaleAddList(modList, (1 + inc / 100) * more)
end
buffExports["Aura"]["extraAura"].modList:AddMod(value.mod)
local totemModBlacklist = value.mod.name and (value.mod.name == "Speed" or value.mod.name == "CritMultiplier" or value.mod.name == "CritChance")
if env.player.mainSkill.skillFlags.totem and not totemModBlacklist then
local totemMod = copyTable(value.mod)
local totemModName, matches = totemMod.name:gsub("Condition:", "Condition:Totem")
if matches < 1 then
totemModName = "Totem" .. totemMod.name
end
totemMod.name = totemModName
modDB:AddMod(totemMod)
end
end
end
if allyBuffs["extraAura"] then
for _, buff in pairs(allyBuffs["extraAura"]) do
local modList = buff.modList
local inc = modDB:Sum("INC", nil, "BuffEffectOnSelf", "AuraEffectOnSelf")
local more = modDB:More(nil, "BuffEffectOnSelf", "AuraEffectOnSelf")
modDB:ScaleAddList(modList, (1 + inc / 100) * more)
if env.minion then
local inc = env.minion.modDB:Sum("INC", nil, "BuffEffectOnSelf", "AuraEffectOnSelf")
local more = env.minion.modDB:More(nil, "BuffEffectOnSelf", "AuraEffectOnSelf")
env.minion.modDB:ScaleAddList(modList, (1 + inc / 100) * more)
end
end
end

-- Check for modifiers to apply to actors affected by player auras or curses
for _, value in ipairs(modDB:List(nil, "AffectedByAuraMod")) do
for actor in pairs(affectedByAura) do
actor.modDB:AddMod(value.mod)
end
end

-- Merge keystones again to catch any that were added by buffs
mergeKeystones(env)

-- Special handling for Dancing Dervish
if modDB:Flag(nil, "DisableWeapons") then
env.player.weaponData1 = copyTable(env.data.unarmedWeaponData[env.classId])
modDB.conditions["Unarmed"] = true
if not env.player.Gloves or env.player.Gloves == None then
modDB.conditions["Unencumbered"] = true
end
elseif env.weaponModList1 then
modDB:AddList(env.weaponModList1)
end

-- Process misc buffs/modifiers
doActorMisc(env, env.player)
if env.minion then
doActorMisc(env, env.minion)
Expand Down Expand Up @@ -2780,72 +2847,6 @@ function calcs.perform(env, fullDPSSkipEHP)
enemyDB:NewMod("Multiplier:ShockEffect", "BASE", output["CurrentShock"] - shockEffectMultiplier, "")
end

-- Check for extra auras
buffExports["Aura"]["extraAura"] = { effectMult = 1, modList = new("ModList") }
for _, value in ipairs(modDB:List(nil, "ExtraAura")) do
local modList = { value.mod }
if not value.onlyAllies then
local inc = modDB:Sum("INC", nil, "BuffEffectOnSelf", "AuraEffectOnSelf")
local more = modDB:More(nil, "BuffEffectOnSelf", "AuraEffectOnSelf")
modDB:ScaleAddList(modList, (1 + inc / 100) * more)
if not value.notBuff then
modDB.multipliers["BuffOnSelf"] = (modDB.multipliers["BuffOnSelf"] or 0) + 1
end
end
if not modDB:Flag(nil, "SelfAurasCannotAffectAllies") then
if env.minion then
local inc = env.minion.modDB:Sum("INC", nil, "BuffEffectOnSelf", "AuraEffectOnSelf")
local more = env.minion.modDB:More(nil, "BuffEffectOnSelf", "AuraEffectOnSelf")
env.minion.modDB:ScaleAddList(modList, (1 + inc / 100) * more)
end
buffExports["Aura"]["extraAura"].modList:AddMod(value.mod)
local totemModBlacklist = value.mod.name and (value.mod.name == "Speed" or value.mod.name == "CritMultiplier" or value.mod.name == "CritChance")
if env.player.mainSkill.skillFlags.totem and not totemModBlacklist then
local totemMod = copyTable(value.mod)
local totemModName, matches = totemMod.name:gsub("Condition:", "Condition:Totem")
if matches < 1 then
totemModName = "Totem" .. totemMod.name
end
totemMod.name = totemModName
modDB:AddMod(totemMod)
end
end
end
if allyBuffs["extraAura"] then
for _, buff in pairs(allyBuffs["extraAura"]) do
local modList = buff.modList
local inc = modDB:Sum("INC", nil, "BuffEffectOnSelf", "AuraEffectOnSelf")
local more = modDB:More(nil, "BuffEffectOnSelf", "AuraEffectOnSelf")
modDB:ScaleAddList(modList, (1 + inc / 100) * more)
if env.minion then
local inc = env.minion.modDB:Sum("INC", nil, "BuffEffectOnSelf", "AuraEffectOnSelf")
local more = env.minion.modDB:More(nil, "BuffEffectOnSelf", "AuraEffectOnSelf")
env.minion.modDB:ScaleAddList(modList, (1 + inc / 100) * more)
end
end
end

-- Check for modifiers to apply to actors affected by player auras or curses
for _, value in ipairs(modDB:List(nil, "AffectedByAuraMod")) do
for actor in pairs(affectedByAura) do
actor.modDB:AddMod(value.mod)
end
end

-- Merge keystones again to catch any that were added by buffs
mergeKeystones(env)

-- Special handling for Dancing Dervish
if modDB:Flag(nil, "DisableWeapons") then
env.player.weaponData1 = copyTable(env.data.unarmedWeaponData[env.classId])
modDB.conditions["Unarmed"] = true
if not env.player.Gloves or env.player.Gloves == None then
modDB.conditions["Unencumbered"] = true
end
elseif env.weaponModList1 then
modDB:AddList(env.weaponModList1)
end

doActorMisc(env, env.enemy)

for _, activeSkill in ipairs(env.player.activeSkillList) do
Expand Down
7 changes: 0 additions & 7 deletions src/Modules/ConfigOptions.lua
Original file line number Diff line number Diff line change
Expand Up @@ -335,13 +335,6 @@ return {
{ var = "darkPactSkeletonLife", type = "count", label = "Skeleton ^xE05030Life:", ifSkill = "Dark Pact", tooltip = "Sets the maximum ^xE05030Life ^7of the Skeleton that is being targeted.", apply = function(val, modList, enemyModList)
modList:NewMod("SkillData", "LIST", { key = "skeletonLife", value = val }, "Config", { type = "SkillName", skillName = "Dark Pact" })
end },
{ label = "Divine Ire:", ifSkill = "Divine Ire" },
{ var = "divineIreNormalEnemy", type = "count", label = "Normal Enemies in AoE:", tooltip = "# of Normal Enemies in Divine Ire's Channel radius", ifSkill = "Divine Ire", apply = function(val, modList, enemyModList)
modList:NewMod("Multiplier:DivineIreNormalEnemyCount", "BASE", val, "Config")
end },
{ var = "divineIreUniqueEnemy", type = "count", label = "Unique Enemies in AoE:", tooltip = "# of Unique Enemies in Divine Ire's Channel radius", ifSkill = "Divine Ire", apply = function(val, modList, enemyModList)
modList:NewMod("Multiplier:DivineIreUniqueEnemyCount", "BASE", val, "Config")
end },
{ label = "Doom Blast:", ifSkill = "Doom Blast" },
{ var = "doomBlastSource", type = "list", label = "Doom Blast Trigger Source:", ifSkill = "Doom Blast", list = {{val="expiration",label="Curse Expiration"},{val="replacement",label="Curse Replacement"},{val="vixen",label="Vixen's Curse"}}, defaultIndex = 3, apply = function(val, modList, enemyModList)
if val == "vixen" then
Expand Down

0 comments on commit 43d2db7

Please sign in to comment.