diff --git a/src/Data/SkillStatMap.lua b/src/Data/SkillStatMap.lua index 9be94c5416..7152969bd2 100644 --- a/src/Data/SkillStatMap.lua +++ b/src/Data/SkillStatMap.lua @@ -290,6 +290,9 @@ return { skill("castTimeOverride", nil), div = 1000, }, +["skill_cannot_gain_repeat_bonuses"] = { + flag("NoRepeatBonuses"), +}, -- -- Defensive modifiers diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index 9e0d452ae2..3b52609de5 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -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") @@ -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