Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions src/Data/ModCache.lua
Original file line number Diff line number Diff line change
Expand Up @@ -4620,8 +4620,7 @@ c["Critical Hits cannot Extract Impale 31 to 49 Physical Thorns damage"]={nil,"C
c["Critical Hits do not deal extra Damage"]={{[1]={flags=0,keywordFlags=0,name="NoCritMultiplier",type="FLAG",value=true}},nil}
c["Critical Hits ignore Enemy Monster Elemental Resistances"]={{[1]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=0,name="IgnoreElementalResistances",type="FLAG",value=true}},nil}
c["Critical Hits ignore non-negative Enemy Monster Elemental Resistances"]={{[1]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=0,name="IgnoreNonNegativeEleRes",type="FLAG",value=true}},nil}
c["Critical Hits inflict Impale"]={nil,"Critical Hits inflict Impale "}
c["Critical Hits inflict Impale Critical Hits cannot Extract Impale"]={nil,"Critical Hits inflict Impale Critical Hits cannot Extract Impale "}
c["Critical Hits inflict Impale"]={{[1]={[1]={type="Condition",var="CriticalStrike"},flags=0,keywordFlags=262144,name="ImpaleChance",type="BASE",value=100}},nil}
c["Critical Hits with Daggers have a 25% chance to Poison the Enemy"]={{[1]={[1]={type="Condition",var="CriticalStrike"},flags=524288,keywordFlags=0,name="PoisonChance",type="BASE",value=25}},nil}
c["Critical Hits with Spells apply 3 Stack of Critical Weakness"]={nil,"Critical Hits with Spells apply 3 Stack of Critical Weakness "}
c["Critical Hits with Spells apply 5 Stacks of Critical Weakness"]={nil,"Critical Hits with Spells apply 5 Stacks of Critical Weakness "}
Expand Down
6 changes: 6 additions & 0 deletions src/Data/SkillStatMap.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1575,6 +1575,12 @@ return {
mod("EnemyImpalePhysicalDamageReduction", "BASE", nil),
mult = -1,
},
["impale_magnitude_+%"] = {
mod("ImpaleEffect", "MORE", nil),
},
["active_skill_impale_magnitude_+%_final"] = {
mod("ImpaleEffect", "MORE", nil),
},
["support_brink_hit_damage_stun_multiplier_+%_final"] = {
mod("EnemyHeavyStunBuildup", "MORE", nil),
},
Expand Down
13 changes: 10 additions & 3 deletions src/Modules/CalcOffence.lua
Original file line number Diff line number Diff line change
Expand Up @@ -4448,13 +4448,20 @@ function calcs.offence(env, actor, activeSkill)
local source, output, cfg, breakdown = pass.source, pass.output, pass.cfg, pass.breakdown

-- Legacy PoE1 ailments (to be removed later): Scorched, Brittle, Sapped, Impale
output.ImpaleChance = 0
output.ImpaleChanceOnCrit = 0
output.ScorchChance = 0
output.BrittleChance = 0
output.SappedChance = 0
output.ChaosPoisonChance = 0

cfg.skillCond["CriticalStrike"] = true
if not skillFlags.hit then
output.ImpaleChanceOnCrit = 0
else
output.ImpaleChanceOnCrit = env.mode_effective and m_min(100, skillModList:Sum("BASE", cfg, "ImpaleChance")) or 0
end
cfg.skillCond["CriticalStrike"] = false
output.ImpaleChance = env.mode_effective and m_min(100, skillModList:Sum("BASE", cfg, "ImpaleChance")) or 0

-- address Weapon1H interaction with Ailment for nodes like Coated Arms (PoE1: Sleight of Hand)
-- bit.and on cfg.flags confirms if the skill has the 1H flag
-- if so, bit.or on the targetCfg (e.g. dotCfg) to guarantee for calculations like Sum("INC") and breakdown
Expand Down Expand Up @@ -5368,7 +5375,7 @@ function calcs.offence(env, actor, activeSkill)

if breakdown then
breakdown.ImpaleStoredDamage = {}
t_insert(breakdown.ImpaleStoredDamage, "10% ^8(base value)")
t_insert(breakdown.ImpaleStoredDamage, (data.misc.ImpaleStoredDamageBase * 100).."% ^8(base value)")
t_insert(breakdown.ImpaleStoredDamage, s_format("x %.2f ^8(increased effectiveness)", storedExpectedDamageModifier))
t_insert(breakdown.ImpaleStoredDamage, s_format("= %.1f%%", output.ImpaleStoredDamage))

Expand Down
2 changes: 1 addition & 1 deletion src/Modules/CalcSetup.lua
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ function calcs.initModDB(env, modDB)
modDB:NewMod("BloodChargesMax", "BASE", 5, "Base")
modDB:NewMod("MaxLifeLeechRate", "BASE", 20, "Base")
modDB:NewMod("MaxManaLeechRate", "BASE", 20, "Base")
modDB:NewMod("ImpaleStacksMax", "BASE", 5, "Base")
modDB:NewMod("ImpaleStacksMax", "BASE", 60, "Base")
modDB:NewMod("IgniteStacksMax", "BASE", 1, "Base")
modDB:NewMod("BleedStacksMax", "BASE", 1, "Base")
modDB:NewMod("PoisonStacksMax", "BASE", 1, "Base")
Expand Down
2 changes: 1 addition & 1 deletion src/Modules/ConfigOptions.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1499,7 +1499,7 @@ Huge sets the radius to 11.
{ var = "conditionImpaledRecently", type = "check", ifCond = "ImpaledRecently", label = "Impaled an enemy recently?", apply = function(val, modList, enemyModLIst)
modList:NewMod("Condition:ImpaledRecently", "FLAG", true, "Config", { type = "Condition", var = "Combat" })
end },
{ var = "multiplierImpalesOnEnemy", type = "countAllowZero", label = "# of Impales on enemy (if not maximum):", ifFlag = "impale", apply = function(val, modList, enemyModList)
{ var = "multiplierImpalesOnEnemy", type = "countAllowZero", label = "# of Impales Extracted on enemy:", ifFlag = "impale", defaultPlaceholderState = 1, apply = function(val, modList, enemyModList)
enemyModList:NewMod("Multiplier:ImpaleStacks", "BASE", val, "Config", { type = "Condition", var = "Combat" })
end },
{ var = "multiplierFragileRegrowth", type = "count", label = "# of Fragile Regrowth Stacks:", ifMult = "FragileRegrowthCount", apply = function(val, modList, enemyModList)
Expand Down
2 changes: 1 addition & 1 deletion src/Modules/Data.lua
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ data.misc = { -- magic numbers
PoisonDurationBase = data.gameConstants["BasePoisonDuration"],
IgnitePercentBase = data.gameConstants["IgniteHitDamagePercentPerMinute"] / 60 / 100,
IgniteDurationBase = data.gameConstants["BaseIgniteDuration"],
ImpaleStoredDamageBase = 0.1,
ImpaleStoredDamageBase = 0.3,
TrapTriggerRadiusBase = 10,
MineDetonationRadiusBase = 60,
MineAuraRadiusBase = 35,
Expand Down
3 changes: 3 additions & 0 deletions src/Modules/ModParser.lua
Original file line number Diff line number Diff line change
Expand Up @@ -580,7 +580,9 @@ local modNameList = {
["to impale enemies on hit"] = "ImpaleChance",
["to impale on spell hit"] = { "ImpaleChance", flags = ModFlag.Spell },
["impale effect"] = "ImpaleEffect",
["impale magnitude"] = "ImpaleEffect",
["effect of impales you inflict"] = "ImpaleEffect",
["magnitude of impales you inflict"] = "ImpaleEffect",
["effects of impale inflicted"] = "ImpaleEffect", -- typo / old wording change
["effect of impales inflicted"] = "ImpaleEffect",
["magnitude of impales inflicted"] = "ImpaleEffect",
Expand Down Expand Up @@ -3959,6 +3961,7 @@ local specialModList = {
} end,
["(%d+)%% chance for blade vortex and blade blast to impale enemies on hit"] = function(num) return { mod("ImpaleChance", "BASE", num, { type = "SkillName", skillNameList = { "Blade Vortex", "Blade Blast" }, includeTransfigured = true }) } end,
["critical hits with spells inflict impale"] = { mod("ImpaleChance", "BASE", 100, nil, ModFlag.Spell, { type = "Condition", var = "CriticalStrike" }) },
["critical hits inflict impale"] = { mod("ImpaleChance", "BASE", 100, nil, 0, KeywordFlag.Hit, { type = "Condition", var = "CriticalStrike" }) },
["(%d+)%% chance on hitting an enemy for all impales on that enemy to last for an additional hit"] = function(num) return {
mod("ImpaleAdditionalDurationChance", "BASE", num)
} end,
Expand Down
Loading