Fix "Farewell to Flesh" not applying to Agony Crawler ailment damage (#9162)

The `GetStat` code relied on using `cfg.summonSkillName` to match names for the skills but when we handle the ailments we were not including summonSkillName in the cfg so it would fail to match and not grant Ailment damage to Agony Crawler
Also added a floor to the returned value as it was a float before

Co-authored-by: LocalIdentity <localidentity2@gmail.com>
This commit is contained in:
LocalIdentity
2025-11-05 10:38:20 +11:00
committed by GitHub
parent 20018a080e
commit af39d58948
3 changed files with 8 additions and 3 deletions

View File

@@ -251,7 +251,7 @@ function ModStoreClass:GetStat(stat, cfg)
for _, activeSkill in ipairs(self.actor.activeSkillList) do
if (activeSkill.skillTypes[SkillType.HasReservation] and not activeSkill.skillFlags.disable and activeSkill.buffList and activeSkill.buffList[1] and cfg and (isNameInBuffList(activeSkill.buffList, cfg.skillName) or isNameInBuffList(activeSkill.buffList, cfg.summonSkillName)) ) then
local manaBase = activeSkill.skillData["ManaReservedBase"] or 0
reservedPercentMana = manaBase / totalMana * 100
reservedPercentMana = m_floor(manaBase / totalMana * 100)
break
end
end
@@ -265,7 +265,7 @@ function ModStoreClass:GetStat(stat, cfg)
for _, activeSkill in ipairs(self.actor.activeSkillList) do
if (activeSkill.skillTypes[SkillType.HasReservation] and not activeSkill.skillFlags.disable and activeSkill.buffList and activeSkill.buffList[1] and cfg and (isNameInBuffList(activeSkill.buffList, cfg.skillName) or isNameInBuffList(activeSkill.buffList, cfg.summonSkillName)) ) then
local lifeBase = activeSkill.skillData["LifeReservedBase"] or 0
reservedPercentLife = lifeBase / totalLife * 100
reservedPercentLife = m_floor(lifeBase / totalLife * 100)
break
end
end

View File

@@ -4003,6 +4003,7 @@ function calcs.offence(env, actor, activeSkill)
skillName = skillCfg.skillName,
skillPart = skillCfg.skillPart,
skillTypes = skillCfg.skillTypes,
summonSkillName = skillCfg.summonSkillName,
slotName = skillCfg.slotName,
flags = bor(ModFlag.Dot, ModFlag.Ailment, band(cfg.flags, ModFlag.WeaponMask), band(cfg.flags, ModFlag.Melee) ~= 0 and ModFlag.MeleeHit or 0),
keywordFlags = bor(band(cfg.keywordFlags, bnot(KeywordFlag.Hit)), KeywordFlag.Bleed, KeywordFlag.Ailment, KeywordFlag.PhysicalDot),
@@ -4275,6 +4276,7 @@ function calcs.offence(env, actor, activeSkill)
skillName = skillCfg.skillName,
skillPart = skillCfg.skillPart,
skillTypes = skillCfg.skillTypes,
summonSkillName = skillCfg.summonSkillName,
slotName = skillCfg.slotName,
flags = bor(ModFlag.Dot, ModFlag.Ailment, band(cfg.flags, ModFlag.WeaponMask), band(cfg.flags, ModFlag.Melee) ~= 0 and ModFlag.MeleeHit or 0),
keywordFlags = bor(band(cfg.keywordFlags, bnot(KeywordFlag.Hit)), KeywordFlag.Poison, KeywordFlag.Ailment, KeywordFlag.ChaosDot),
@@ -4552,6 +4554,7 @@ function calcs.offence(env, actor, activeSkill)
skillName = skillCfg.skillName,
skillPart = skillCfg.skillPart,
skillTypes = skillCfg.skillTypes,
summonSkillName = skillCfg.summonSkillName,
slotName = skillCfg.slotName,
flags = bor(ModFlag.Dot, ModFlag.Ailment, band(cfg.flags, ModFlag.WeaponMask), band(cfg.flags, ModFlag.Melee) ~= 0 and ModFlag.MeleeHit or 0),
keywordFlags = bor(band(cfg.keywordFlags, bnot(KeywordFlag.Hit)), KeywordFlag.Ignite, KeywordFlag.Ailment, KeywordFlag.FireDot),
@@ -5258,6 +5261,7 @@ function calcs.offence(env, actor, activeSkill)
skillName = skillCfg.skillName,
skillPart = skillCfg.skillPart,
skillTypes = skillCfg.skillTypes,
summonSkillName = skillCfg.summonSkillName,
slotName = skillCfg.slotName,
flags = ModFlag.Dot,
keywordFlags = bor(band(skillCfg.keywordFlags, bnot(KeywordFlag.Hit)), KeywordFlag.ChaosDot),
@@ -5328,6 +5332,7 @@ function calcs.offence(env, actor, activeSkill)
skillName = skillCfg.skillName,
skillPart = skillCfg.skillPart,
skillTypes = skillCfg.skillTypes,
summonSkillName = skillCfg.summonSkillName,
slotName = skillCfg.slotName,
flags = bor(ModFlag.Dot, skillCfg.flags),
keywordFlags = band(skillCfg.keywordFlags, bnot(KeywordFlag.Hit)),

View File

@@ -2858,7 +2858,7 @@ local specialModList = {
["herald skills and minions from herald skills deal (%d+)%% more damage for every (%d+)%% of maximum life those skills reserve"] = function(_, num1, num2) return {
mod("MinionModifier", "LIST", { mod = mod("Damage", "MORE", tonumber(num1), { type = "PerStat", stat = "LifeReservedPercent", div = tonumber(num2), actor = "parent" })}, { type = "SkillType", skillType = SkillType.Herald }),
mod("Damage", "MORE", tonumber(num1), { type = "PerStat", stat = "LifeReservedPercent", div = tonumber(num2) }, { type = "SkillType", skillType = SkillType.Herald }),
} end,
} end,
-- Oshabi Bloodline
["unsealed spells gain (%d+)%% more damage each time their effects reoccur"] = function(num) return { mod("MaxSealDamage", "MORE", num) } end,
["skills gain added chaos damage equal to (%d+)%% of life cost, if life cost is not higher than the maximum you could spend"] = function(num) return {