Skip to content

Commit d44e59e

Browse files
authored
Add support for "chance for flasks you use to not consume charges" (#4766)
* Add support for "chance for flasks to not consume charges" * Add chance to not consume to flask stat breakdown * Revert ModCache.lua
1 parent 3be12a6 commit d44e59e

File tree

2 files changed

+12
-5
lines changed

2 files changed

+12
-5
lines changed

src/Classes/ItemsTab.lua

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3120,6 +3120,11 @@ function ItemsTabClass:AddItemTooltip(tooltip, item, slot, dbMode)
31203120
t_insert(stats, s_format("^8Charges generated: ^7%.2f^8 per second", totalChargesGenerated))
31213121
end
31223122

3123+
local chanceToNotConsumeCharges = m_min(modDB:Sum("BASE", nil, "FlaskChanceNotConsumeCharges"), 100)
3124+
if chanceToNotConsumeCharges ~= 0 then
3125+
t_insert(stats, s_format("^8Chance to not consume charges: ^7%d%%", chanceToNotConsumeCharges))
3126+
end
3127+
31233128
-- flask uptime
31243129
if not item.base.flask.life and not item.base.flask.mana then
31253130
local flaskChargesUsed = flaskData.chargesUsed * (1 + usedInc / 100)
@@ -3128,10 +3133,11 @@ function ItemsTabClass:AddItemTooltip(tooltip, item, slot, dbMode)
31283133
local per3Duration = flaskDuration - (flaskDuration % 3)
31293134
local per5Duration = flaskDuration - (flaskDuration % 5)
31303135
local minimumChargesGenerated = per3Duration * chargesGenerated + per5Duration * chargesGeneratedPerFlask
3131-
local percentageMin = math.min(minimumChargesGenerated / flaskChargesUsed * 100, 100)
3132-
if percentageMin < 100 then
3136+
local percentageMin = m_min(minimumChargesGenerated / flaskChargesUsed * 100, 100)
3137+
if percentageMin < 100 and chanceToNotConsumeCharges < 100 then
31333138
local averageChargesGenerated = (chargesGenerated + chargesGeneratedPerFlask) * flaskDuration
3134-
local percentageAvg = math.min(averageChargesGenerated / flaskChargesUsed * 100, 100)
3139+
local averageChargesUsed = flaskChargesUsed * (100 - chanceToNotConsumeCharges) / 100
3140+
local percentageAvg = m_min(averageChargesGenerated / averageChargesUsed * 100, 100)
31353141
t_insert(stats, s_format("^8Flask uptime: ^7%d%%^8 average, ^7%d%%^8 minimum", percentageAvg, percentageMin))
31363142
else
31373143
t_insert(stats, s_format("^8Flask uptime: ^7100%%^8"))

src/Modules/ModParser.lua

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -665,6 +665,7 @@ local modNameList = {
665665
["flask charges used"] = "FlaskChargesUsed",
666666
["flask charges gained"] = "FlaskChargesGained",
667667
["charge recovery"] = "FlaskChargeRecovery",
668+
["for flasks you use to not consume charges"] = "FlaskChanceNotConsumeCharges",
668669
["impales you inflict last"] = "ImpaleStacksMax",
669670
-- Buffs
670671
["adrenaline"] = "Condition:Adrenaline",
@@ -1557,7 +1558,7 @@ local specialModList = {
15571558
} end,
15581559
["(%w+) recovery from regeneration is not applied"] = function(_, type) return { flag("UnaffectedBy" .. firstToUpper(type) .. "Regen") } end,
15591560
["(%d+)%% less damage taken for every (%d+)%% life recovery per second from leech"] = function(num, _, div)
1560-
return { mod("DamageTaken", "MORE", -num, { type = "PerStat", stat = "MaxLifeLeechRatePercent", div = tonumber(div) }) }
1561+
return { mod("DamageTaken", "MORE", -num, { type = "PerStat", stat = "MaxLifeLeechRatePercent", div = tonumber(div) }) }
15611562
end,
15621563
["modifiers to chance to suppress spell damage instead apply to chance to dodge spell hits at 50%% of their value"] = {
15631564
flag("ConvertSpellSuppressionToSpellDodge"),
@@ -3284,7 +3285,7 @@ local specialModList = {
32843285
flag("Condition:CanHaveAlchemistGenius"),
32853286
},
32863287
["(%d+)%% less flask charges gained from kills"] = function(num) return {
3287-
mod("FlaskChargesGained", "MORE", -num,"from Kills")
3288+
mod("FlaskChargesGained", "MORE", -num, "from Kills")
32883289
} end,
32893290
["flasks gain (%d+) charges? every (%d+) seconds"] = function(num, _, div) return {
32903291
mod("FlaskChargesGenerated", "BASE", num / div)

0 commit comments

Comments
 (0)