Changed bleed stacks (Crimson Dance) to be like impale, with the ability to set how much bleed the enemy has in the ConfigOptions.

This commit is contained in:
BlackSun
2020-01-12 02:26:02 +01:00
parent 7de0ee612c
commit 7365936662
5 changed files with 13 additions and 3 deletions

View File

@@ -1648,7 +1648,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) * skillModList:Sum("BASE", cfg, "BleedCount")
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
@@ -1657,6 +1660,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

@@ -516,6 +516,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")
@@ -239,7 +240,6 @@ function calcs.initEnv(build, mode, override)
modDB:NewMod("Damage", "MORE", 200, "Base", 0, KeywordFlag.Bleed, { type = "ActorCondition", actor = "enemy", var = "Moving" }, { type = "Condition", var = "NoExtraBleedDamageToMovingEnemy", neg = true })
end
modDB:NewMod("Condition:BloodStance", "FLAG", true, "Base", { type = "Condition", var = "SandStance", neg = true })
modDB:NewMod("BleedCount", "BASE", 1, "Base")
-- Add bandit mods
if build.targetVersion == "2_6" then

View File

@@ -705,6 +705,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,7 +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("BleedCount", "BASE", num) } end,
["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"] = { },