Merge remote-tracking branch 'Pegoth/master'

This commit is contained in:
Jack Lockwood
2020-02-10 10:57:45 +11:00
6 changed files with 14 additions and 1 deletions

View File

@@ -260,6 +260,7 @@ function buildMode:Init(dbFileName, buildName, buildXML, targetVersion)
{ stat = "WithImpaleDPS", label = "Damage inc. Impale", fmt = ".1f", compPercent = true, flag = "impale", flag = "showAverage" },
{ stat = "ImpaleDPS", label = "Impale DPS", fmt = ".1f", compPercent = true, flag = "impale", flag = "notAverage" },
{ stat = "WithImpaleDPS", label = "Total DPS inc. Impale", fmt = ".1f", compPercent = true, flag = "impale", flag = "notAverage" },
{ stat = "CombinedDPS", label = "Combined DPS", fmt = ".1f", compPercent = true },
{ stat = "Cooldown", label = "Skill Cooldown", fmt = ".2fs", lowerIsBetter = true },
{ stat = "AreaOfEffectRadius", label = "AoE Radius", fmt = "d" },
{ stat = "ManaCost", label = "Mana Cost", fmt = "d", compPercent = true, lowerIsBetter = true, condFunc = function() return true end },

View File

@@ -1700,7 +1700,10 @@ function calcs.offence(env, actor, activeSkill)
local mult = skillModList:Sum("BASE", dotCfg, "PhysicalDotMultiplier", "BleedMultiplier")
local effectMod = calcLib.mod(skillModList, dotCfg, "AilmentEffect")
local rateMod = calcLib.mod(skillModList, cfg, "BleedFaster")
output.BleedDPS = baseVal * effectMod * rateMod * effMult
local maxStacks = skillModList:Override(cfg, "BleedStacksMax") or skillModList:Sum("BASE", cfg, "BleedStacksMax")
local configStacks = enemyDB:Sum("BASE", nil, "Multiplier:BleedStacks")
local bleedStacks = configStacks > 0 and m_min(configStacks, maxStacks) or maxStacks
output.BleedDPS = (baseVal * effectMod * rateMod * effMult) * bleedStacks
local durationBase
if skillData.bleedDurationIsSkillDuration then
durationBase = skillData.duration
@@ -1709,6 +1712,8 @@ function calcs.offence(env, actor, activeSkill)
end
local durationMod = calcLib.mod(skillModList, dotCfg, "EnemyBleedDuration", "SkillAndDamagingAilmentDuration", skillData.bleedIsSkillEffect and "Duration" or nil) * calcLib.mod(enemyDB, nil, "SelfBleedDuration")
globalOutput.BleedDuration = durationBase * durationMod / rateMod * debuffDurationMult
globalOutput.BleedStacksMax = maxStacks
globalOutput.BleedStacks = bleedStacks
if breakdown then
t_insert(breakdown.BleedDPS, s_format("x %.2f ^8(bleed deals %d%% per second)", basePercent/100, basePercent))
if effectMod ~= 1 then

View File

@@ -526,6 +526,8 @@ return {
{ 1, "Bleed", 1, "Bleed", colorCodes.OFFENCE, {
extra = "{0:output:BleedChance}% {1:output:BleedDPS} {2:output:BleedDuration}s",
flag = "bleed",
{ label = "Max Bleed Stacks", { format = "{0:output:BleedStacksMax}", { modName = "BleedStacksMax" } }, },
{ label = "Stacks on Enemy", { format = "{0:output:BleedStacks}" }},
{ label = "Chance to Bleed", { format = "{0:output:BleedChance}%",
{ breakdown = "MainHand.BleedChance" },
{ breakdown = "OffHand.BleedChance" },

View File

@@ -29,6 +29,7 @@ function calcs.initModDB(env, modDB)
modDB:NewMod("MaxLifeLeechRate", "BASE", 20, "Base")
modDB:NewMod("MaxManaLeechRate", "BASE", 20, "Base")
modDB:NewMod("ImpaleStacksMax", "BASE", 5, "Base")
modDB:NewMod("BleedStacksMax", "BASE", 1, "Base")
if env.build.targetVersion ~= "2_6" then
modDB:NewMod("MaxEnergyShieldLeechRate", "BASE", 10, "Base")
modDB:NewMod("MaxLifeLeechInstance", "BASE", 10, "Base")

View File

@@ -708,6 +708,9 @@ return {
{ var = "multiplierImpalesOnEnemy", type = "count", label = "# of Impales on Enemy (if not maximum):", ifFlag = "impale", tooltip = "Set number of Impales if using Champions Master of Metal node", apply = function(val, modList, enemyModList)
enemyModList:NewMod("Multiplier:ImpaleStacks", "BASE", m_min(val, 9), "Config", { type = "Condition", var = "Combat" })
end },
{ var = "multiplierBleedsOnEnemy", type = "count", label = "# of Bleeds on Enemy (if not maximum):", ifFlag = "bleed", tooltip = "Set number of Bleeds if using Crimson Dance node", apply = function(val, modList, enemyModList)
enemyModList:NewMod("Multiplier:BleedStacks", "BASE", val, "Config", { type = "Condition", var = "Combat" })
end },
{ var = "conditionKilledUniqueEnemy", type = "check", ifVer = "3_0", label = "Killed Rare or Unique Enemy Recently?", ifNode = 3184, apply = function(val, modList, enemyModList)
modList:NewMod("Condition:KilledUniqueEnemy", "FLAG", true, "Config", { type = "Condition", var = "Combat" })
end },

View File

@@ -1087,6 +1087,7 @@ local specialModList = {
["energy shield protects mana instead of life"] = { flag("EnergyShieldProtectsMana") },
["modifiers to critical strike multiplier also apply to damage over time multiplier for ailments from critical strikes at (%d+)%% of their value"] = function(num) return { mod("CritMultiplierAppliesToDegen", "BASE", num) } end,
["your bleeding does not deal extra damage while the enemy is moving"] = { flag("Condition:NoExtraBleedDamageToMovingEnemy") },
["you can inflict bleeding on an enemy up to (%d+) times?"] = function(num) return { mod("BleedStacksMax", "OVERRIDE", num) } end,
-- Ascendant
["grants (%d+) passive skill points?"] = function(num) return { mod("ExtraPoints", "BASE", num) } end,
["can allocate passives from the %a+'s starting point"] = { },