diff --git a/src/Modules/CalcTriggers.lua b/src/Modules/CalcTriggers.lua index f34ef94157..ae9268fc62 100644 --- a/src/Modules/CalcTriggers.lua +++ b/src/Modules/CalcTriggers.lua @@ -763,7 +763,16 @@ local function defaultTriggerHandler(env, config) end end - if trigRate ~= nil and not actor.mainSkill.skillFlags.globalTrigger and not config.ignoreSourceRate then + if env.player.mainSkill.activeEffect.grantedEffect.name == "Doom Blast" and env.build.configTab.input["doomBlastSource"] == "vixen" then + local vixens = env.data.skills["SupportUniqueCastCurseOnCurse"] + local vixensCD = vixens and vixens.levels[1].cooldown / icdr + output.EffectiveSourceRate = calcMultiSpellRotationImpact(env, {{ uuid = cacheSkillUUID(env.player.mainSkill, env), icdr = icdr}}, trigRate, vixensCD) + output.VixensTooMuchCastSpeedWarn = vixensCD > (1 / trigRate) + if breakdown then + t_insert(breakdown.EffectiveSourceRate, s_format("%.2f / %.2f = %.2f ^8(Vixen's trigger cooldown)", vixensCD * icdr, icdr, vixensCD)) + t_insert(breakdown.EffectiveSourceRate, s_format("%.2f ^8(Simulated trigger rate of a curse socketed in Vixen's given ^7%.2f ^8CD and ^7%.2f ^8source rate)", output.EffectiveSourceRate, vixensCD, trigRate)) + end + elseif trigRate ~= nil and not actor.mainSkill.skillFlags.globalTrigger and not config.ignoreSourceRate then output.EffectiveSourceRate = trigRate else output.EffectiveSourceRate = output.TriggerRateCap @@ -778,12 +787,9 @@ local function defaultTriggerHandler(env, config) --If spell count is missing the skill likely comes from a unique and /or triggers it self if output.EffectiveSourceRate ~= 0 then - if config.triggerName == "Doom Blast" and env.build.configTab.input["doomBlastSource"] == "vixen" then + if env.player.mainSkill.activeEffect.grantedEffect.name == "Doom Blast" and env.build.configTab.input["doomBlastSource"] == "vixen" then local overlaps = m_max(env.player.modDB:Sum("BASE", nil, "Multiplier:CurseOverlaps") or 1, 1) - output.SkillTriggerRate = m_min(output.EffectiveSourceRate * overlaps, output.TriggerRateCap) - local vixens = env.data.skills["SupportUniqueCastCurseOnCurse"] - local vixensCD = vixens and vixens.levels[1].cooldown - output.VixensTooMuchCastSpeedWarn = (vixensCD / icdr) > (1 / trigRate) + output.SkillTriggerRate = m_min(output.TriggerRateCap, output.EffectiveSourceRate * overlaps) if breakdown then breakdown.SkillTriggerRate = { s_format("min(%.2f, %.2f * %d)", output.TriggerRateCap, output.EffectiveSourceRate, overlaps) @@ -1203,6 +1209,7 @@ local configTable = { end, ["doom blast"] = function(env) env.player.mainSkill.skillData.ignoresTickRate = true + env.player.mainSkill.skillData.sourceRateIsFinal = true return {useCastRate = true, customTriggerName = "Doom Blast triggering Hex: ", triggerSkillCond = function(env, skill) return skill.skillTypes[SkillType.Hex] and slotMatch(env, skill) end} diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index 1308881f54..7a9278325c 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -638,7 +638,6 @@ Huge sets the radius to 11. { var = "TotalVaalRejuvenationTotemLife", type = "integer", label = "Total Vaal Rejuvenation Totem Life:", ifSkill = { "Vaal Rejuvenation Totem" }, ifMod = "takenFromVaalRejuvenationTotemsBeforeYou", tooltip = "The total life of your Vaal Rejuvenation Totems that can be taken before yours", apply = function(val, modList, enemyModList) modList:NewMod("TotalVaalRejuvenationTotemLife", "BASE", val, "Config") end }, - -- Section: Map modifiers/curses { section = "Map Modifiers and Player Debuffs", col = 2 }, { var = "multiplierSextant", type = "count", label = "# of Sextants affecting the area", ifMult = "Sextant", apply = function(val, modList, enemyModList)