Skip to content
Merged
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 @@ -4147,8 +4147,7 @@ c["Base Maximum Darkness is 100"]={{[1]={flags=0,keywordFlags=0,name="PlayerHasD
c["Become Ignited when you deal a Critical Hit, taking 15% of your maximum Life and Energy Shield as Fire Damage per second"]={nil,"Become Ignited when you deal a Critical Hit, taking 15% of your maximum Life and Energy Shield as Fire Damage per second "}
c["Become Ignited when you deal a Critical Hit, taking 15% of your maximum Life and Energy Shield as Fire Damage per second 50% more Critical Damage Bonus"]={nil,"Become Ignited when you deal a Critical Hit, taking 15% of your maximum Life and Energy Shield as Fire Damage per second 50% more Critical Damage Bonus "}
c["Benefits from consuming Frenzy Charges for your Skills have 50% chance to be doubled"]={{[1]={[1]={globalLimit=100,globalLimitKey="FlaskChargesDoubledLimit",type="Multiplier",var="FlaskChargesDoubled"},flags=0,keywordFlags=0,name="FlaskCharges",type="MORE",value=100},[2]={flags=0,keywordFlags=0,name="Multiplier:FlaskChargesDoubled",type="OVERRIDE",value=1}},"Benefits from consuming Frenzy for your Skills have 50% chance to be d "}
c["Bifurcates Critical Hits"]={nil,"Bifurcates Critical Hits "}
c["Bifurcates Critical Hits 10% of Skill Mana Costs Converted to Life Costs"]={nil,"Bifurcates Critical Hits 10% of Skill Mana Costs Converted to Life Costs "}
c["Bifurcates Critical Hits"]={{[1]={flags=0,keywordFlags=0,name="BifurcateCrit",type="FLAG",value=true}},nil}
c["Bleeding you inflict deals Damage 10% faster"]={{[1]={flags=0,keywordFlags=0,name="BleedFaster",type="INC",value=10}},nil}
c["Bleeding you inflict is Aggravated"]={{[1]={flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={flags=0,keywordFlags=0,name="Condition:BleedAggravated",type="FLAG",value=true}}}},nil}
c["Bleeding you inflict on Cursed targets is Aggravated"]={{[1]={flags=0,keywordFlags=0,name="EnemyModifier",type="LIST",value={mod={[1]={type="Condition",var="Cursed"},flags=0,keywordFlags=0,name="Condition:BleedAggravated",type="FLAG",value=true}}}},nil}
Expand Down
2 changes: 1 addition & 1 deletion src/Modules/BuildDisplayStats.lua
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ local displayStats = {
{ stat = "ReloadTime", label = "Reload Time", fmt = ".2fs", compPercent = true, lowerIsBetter = true, condFunc = function(v,o) return o.ReloadTime end },
{ stat = "PreEffectiveCritChance", label = "Crit Chance", fmt = ".2f%%", flag = "hit" },
{ stat = "CritChance", label = "Effective Crit Chance", fmt = ".2f%%", flag = "hit", condFunc = function(v,o) return v ~= o.PreEffectiveCritChance end },
{ stat = "CritForks", label = "Crit Forks Chance", fmt = ".2f%%", flag = "hit", condFunc = function(v,o) return (o.CritForks or 0) > 0 end },
{ stat = "CritBifurcates", label = "Crit Bifurcate Chance", fmt = ".2f%%", flag = "hit", condFunc = function(v,o) return (o.CritForks or 0) > 0 end },
{ stat = "CritMultiplier", label = "Crit Multiplier", fmt = "d%%", pc = true, condFunc = function(v,o) return (o.CritChance or 0) > 0 end },
{ stat = "HitChance", label = "Hit Chance", fmt = ".0f%%", flag = "attack" },
{ stat = "HitChance", label = "Hit Chance", fmt = ".0f%%", condFunc = function(v,o) return o.enemyHasSpellBlock end },
Expand Down
38 changes: 19 additions & 19 deletions src/Modules/CalcOffence.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3279,7 +3279,7 @@ function calcs.offence(env, actor, activeSkill)

if critOverride == 100 then
output.PreEffectiveCritChance = 100
output.PreForkCritChance = 100
output.PreBifurcateCritChance = 100
output.CritChance = 100
else
local base = 0
Expand All @@ -3305,9 +3305,9 @@ function calcs.offence(env, actor, activeSkill)
if env.mode_effective and skillModList:Flag(cfg, "CritChanceLucky") then
output.CritChance = (1 - (1 - output.CritChance / 100) ^ 2) * 100
end
output.PreForkCritChance = output.CritChance
local preForkCritChance = output.CritChance
if env.mode_effective and skillModList:Flag(cfg, "ForkCrit") then
output.PreBifurcateCritChance = output.CritChance
local preBifurcateCritChance = output.CritChance
if env.mode_effective and skillModList:Flag(cfg, "BifurcateCrit") then
output.CritChance = (1 - (1 - output.CritChance / 100) ^ 2) * 100
end
if breakdown and output.CritChance ~= baseCrit then
Expand Down Expand Up @@ -3339,11 +3339,11 @@ function calcs.offence(env, actor, activeSkill)
if env.mode_effective and skillModList:Flag(cfg, "CritChanceLucky") then
t_insert(breakdown.CritChance, "Crit Chance is Lucky:")
t_insert(breakdown.CritChance, s_format("1 - (1 - %.4f) x (1 - %.4f)", preLuckyCritChance / 100, preLuckyCritChance / 100))
t_insert(breakdown.CritChance, s_format("= %.2f%%", preForkCritChance))
t_insert(breakdown.CritChance, s_format("= %.2f%%", preBifurcateCritChance))
end
if env.mode_effective and skillModList:Flag(cfg, "ForkCrit") then
t_insert(breakdown.CritChance, "Critical Strike Forks:")
t_insert(breakdown.CritChance, s_format("1 - (1 - %.4f) x (1 - %.4f)", preForkCritChance / 100, preForkCritChance / 100))
if env.mode_effective and skillModList:Flag(cfg, "BifurcateCrit") then
t_insert(breakdown.CritChance, "Critical Strike Bifurcates:")
t_insert(breakdown.CritChance, s_format("1 - (1 - %.4f) x (1 - %.4f)", preBifurcateCritChance / 100, preBifurcateCritChance / 100))
t_insert(breakdown.CritChance, s_format("= %.2f%%", output.CritChance))
end
end
Expand All @@ -3363,23 +3363,23 @@ function calcs.offence(env, actor, activeSkill)
end

output.PreEffectiveCritMultiplier = 1 + extraDamage
-- if crit forks are enabled, roll for crit twice and add multiplier for each
if env.mode_effective and skillModList:Flag(cfg, "ForkCrit") then
-- if crit bifurcates are enabled, roll for crit twice and add multiplier for each
if env.mode_effective and skillModList:Flag(cfg, "BifurcateCrit") then
-- get crit chance and calculate odds of critting twice
local critChancePercentage = output.PreForkCritChance
local forkMultiChance = (critChancePercentage ^ 2) / 100
output.CritForks = forkMultiChance
local critChancePercentage = output.PreBifurcateCritChance
local bifurcateMultiChance = (critChancePercentage ^ 2) / 100
output.CritBifurcates = bifurcateMultiChance
local damageBonus = extraDamage
local forkedBonus = forkMultiChance * extraDamage / 100
local bifurcatedBonus = bifurcateMultiChance * extraDamage / 100
if breakdown and enemyInc ~= 1 then
breakdown.CritForks = {
breakdown.CritBifurcates = {
s_format("%.2f%% ^8(effective crit chance)", critChancePercentage),
s_format("x %.2f%%", critChancePercentage),
s_format("= %.2f%% ^8(crit forks chance)", forkMultiChance),
s_format("= %.2f%% ^8(crit Bifurcates chance)", bifurcateMultiChance),
}
end
extraDamage = damageBonus + forkedBonus
skillModList:NewMod("CritMultiplier", "MORE", floor(forkMultiChance, 2), "Forked Crit Damage Bonus")
extraDamage = damageBonus + bifurcatedBonus
skillModList:NewMod("CritMultiplier", "MORE", floor(bifurcateMultiChance, 2), "Bifurcated Crit Damage Bonus")
end

if env.mode_effective then
Expand Down Expand Up @@ -4064,7 +4064,7 @@ function calcs.offence(env, actor, activeSkill)
combineStat("CritChance", "AVERAGE")
combineStat("PreEffectiveCritMultiplier", "AVERAGE")
combineStat("CritMultiplier", "AVERAGE")
combineStat("CritForks", "AVERAGE")
combineStat("CritBifurcates", "AVERAGE")
combineStat("AverageDamage", "DPS")
combineStat("PvpAverageDamage", "DPS")
combineStat("TotalDPS", "DPS")
Expand Down
12 changes: 6 additions & 6 deletions src/Modules/CalcSections.lua
Original file line number Diff line number Diff line change
Expand Up @@ -546,9 +546,9 @@ return {
{ label = "Player modifiers", modName = { "CritChance", "WeaponBaseCritChance", "MainHandCritIsEqualToParent", "MainHandCritIsEqualToPartyMember", "AttackCritIsEqualToParentMainHand" }, cfg = "weapon1" },
{ label = "Enemy modifiers", modName = "SelfCritChance", enemy = true },
}, },
{ label = "MH Crit Forks", bgCol = colorCodes.MAINHANDBG, haveOutput = "MainHand.CritForks", flag = "weapon1Attack", { format = "{2:output:MainHand.CritForks}%",
{ breakdown = "MainHand.CritForks" },
{ label = "Player modifiers", modName = "ForkCrit", cfg = "weapon1" },
{ label = "MH Crit Bifurcates", bgCol = colorCodes.MAINHANDBG, haveOutput = "MainHand.CritBifurcates", flag = "weapon1Attack", { format = "{2:output:MainHand.CritBifurcates}%",
{ breakdown = "MainHand.CritBifurcates" },
{ label = "Player modifiers", modName = "BifurcateCrit", cfg = "weapon1" },
}, },
{ label = "MH Crit Multiplier", bgCol = colorCodes.MAINHANDBG, flag = "weapon1Attack", { format = "x {2:output:MainHand.CritMultiplier}",
{ breakdown = "MainHand.CritMultiplier" },
Expand All @@ -566,9 +566,9 @@ return {
{ label = "Player modifiers", modName = { "CritChance", "WeaponBaseCritChance", "AttackCritIsEqualToParentMainHand" }, cfg = "weapon2" },
{ label = "Enemy modifiers", modName = "SelfCritChance", enemy = true },
}, },
{ label = "OH Crit Forks", bgCol = colorCodes.OFFHANDBG, haveOutput = "OffHand.CritForks", flag = "weapon2Attack", { format = "{2:output:OffHand.CritForks}%",
{ breakdown = "OffHand.CritForks" },
{ label = "Player modifiers", modName = "ForkCrit", cfg = "weapon2" },
{ label = "OH Crit Bifurcates", bgCol = colorCodes.OFFHANDBG, haveOutput = "OffHand.CritBifurcates", flag = "weapon2Attack", { format = "{2:output:OffHand.CritBifurcates}%",
{ breakdown = "OffHand.CritBifurcates" },
{ label = "Player modifiers", modName = "BifurcateCrit", cfg = "weapon2" },
}, },
{ label = "OH Crit Multiplier", bgCol = colorCodes.OFFHANDBG, flag = "weapon2Attack", { format = "x {2:output:OffHand.CritMultiplier}",
{ breakdown = "OffHand.CritMultiplier" },
Expand Down
3 changes: 2 additions & 1 deletion src/Modules/ModParser.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3439,7 +3439,8 @@ local specialModList = {
["minion critical hits do not deal extra damage"] = { mod("MinionModifier", "LIST", { mod = flag("NoCritMultiplier") }) },
["lightning damage with non%-critical hits is lucky"] = { flag("LightningNoCritLucky") },
["your damage with critical hits is lucky"] = { flag("CritLucky") },
["forks critical hits"] = { flag("ForkCrit") },
["forks critical hits"] = { flag("BifurcateCrit") },
["bifurcates critical hits"] = { flag("BifurcateCrit") },
["critical hits deal no damage"] = { mod("Damage", "MORE", -100, { type = "Condition", var = "CriticalStrike" }) },
["critical hit chance is increased by uncapped lightning resistance"] = { flag("CritChanceIncreasedByUncappedLightningRes") },
["critical hit chance is increased by lightning resistance"] = { flag("CritChanceIncreasedByLightningRes") },
Expand Down