diff --git a/src/Data/Skills/act_dex.lua b/src/Data/Skills/act_dex.lua index 45de635fab..4d6629cec2 100644 --- a/src/Data/Skills/act_dex.lua +++ b/src/Data/Skills/act_dex.lua @@ -2127,14 +2127,28 @@ skills["VaalBladeFlurry"] = { castTime = 1, statMap = { ["vaal_charged_attack_damage_taken_+%_final"] = { - mod("DamageTaken", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), + mod("DamageTaken", "MORE", nil, 0, 0, { type = "Condition", var = "ChannellingVaalBladeFlurry"}, { type = "GlobalEffect", effectType = "Buff", unscalable = true }), + }, + ["vaal_charged_attack_radius_+_per_stage"] = { + mod("AreaOfEffect", "BASE", nil, 0, 0, { type = "Multiplier", var = "VaalBladeFlurryStage" }), + }, + ["charged_attack_damage_per_stack_+%_final"] = { + mod("Damage", "MORE", nil, 0, bit.bor(KeywordFlag.Hit, KeywordFlag.Ailment), { type = "Multiplier", var = "VaalBladeFlurryStage" }), }, }, +--huge/inf used for now, max stages are when aoe reaches 9m. 89% INC AoE made my max stages 11/12 in game +--secondary radius around enemy unknown, set to 1m for now baseFlags = { attack = true, melee = true, area = true, }, + baseMods = { + skill("numStages", 1, { type = "Multiplier", var = "VaalBladeFlurryStage" }), + mod("Multiplier:VaalBladeFlurryMaxStages", "BASE", math.huge ), + skill("radius", 10), + skill("radiusSecondary", 10), + }, qualityStats = { Default = { { "charged_attack_damage_per_stack_+%_final", 0.25 }, @@ -2196,6 +2210,7 @@ skills["VaalBladeFlurry"] = { [40] = { 108, attackSpeedMultiplier = 220, baseMultiplier = 10.859, soulPreventionDuration = 3, storedUses = 1, damageEffectiveness = 10.859, vaalStoredUses = 1, cooldown = 0.5, levelRequirement = 100, statInterpolation = { 1, }, cost = { Soul = 30, }, }, }, } + skills["BladeVortex"] = { name = "Blade Vortex", baseTypeName = "Blade Vortex", @@ -12152,7 +12167,7 @@ skills["Reave"] = { }, ["reave_additional_max_stacks"] = { mod("Multiplier:ReaveMaxStages", "BASE", nil), - } + }, }, baseFlags = { attack = true, @@ -12325,10 +12340,10 @@ skills["VaalReave"] = { castTime = 1, statMap = { ["reave_area_of_effect_+%_final_per_stage"] = { - mod("AreaOfEffect", "MORE", nil, 0, 0, { type = "Multiplier", var = "ReaveStage" }), + mod("AreaOfEffect", "MORE", nil, 0, 0, { type = "Multiplier", var = "VaalReaveStage" }), }, ["reave_additional_max_stacks"] = { - mod("Multiplier:ReaveMaxStages", "BASE", nil), + mod("Multiplier:VaalReaveMaxStages", "BASE", nil), }, }, baseFlags = { @@ -12339,7 +12354,7 @@ skills["VaalReave"] = { }, baseMods = { skill("radius", 12), - mod("Multiplier:ReaveMaxStages", "BASE", 4), + mod("Multiplier:VaalReaveMaxStages", "BASE", 4), }, qualityStats = { Default = { diff --git a/src/Data/Skills/act_int.lua b/src/Data/Skills/act_int.lua index e8812f7a29..270f5d423c 100644 --- a/src/Data/Skills/act_int.lua +++ b/src/Data/Skills/act_int.lua @@ -2261,13 +2261,23 @@ skills["VaalBlight"] = { skillTypes = { [SkillType.Spell] = true, [SkillType.Chaos] = true, [SkillType.Area] = true, [SkillType.Totemable] = true, [SkillType.Duration] = true, [SkillType.DamageOverTime] = true, [SkillType.DegenOnlySpellDamage] = true, [SkillType.Vaal] = true, [SkillType.AreaSpell] = true, [SkillType.Nova] = true, }, statDescriptionScope = "debuff_skill_stat_descriptions", castTime = 0.6, + parts = { + { + name = "Manual Stacks", + stages = true, + }, + { + name = "Maximum Sustainable Stacks", + }, + }, statMap = { + ["display_max_blight_stacks"] = { + mod("Multiplier:VaalBlightMaxStages", "BASE", nil, 0, 0, { type = "SkillPart", skillPart = 1 }), + mod("BlightBaseMaxStages", "BASE", nil, 0, 0, { type = "SkillPart", skillPart = 2 }), + }, ["hinder_enemy_chaos_damage_taken_+%"] = { mod("ChaosDamageTaken", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Debuff", effectName = "Hinder" }), }, - ["display_max_blight_stacks"] = { - mod("Multiplier:BlightMaxStages", "BASE", nil, 0, 0, { type = "SkillPart", skillPart = 1 }), - }, }, baseFlags = { spell = true, @@ -2275,6 +2285,9 @@ skills["VaalBlight"] = { area = true, }, baseMods = { + mod("Damage", "MORE", 100, 0, 0, { type = "Multiplier", var = "VaalBlightStageAfterFirst" }), + skill("debuff", true), + skill("debuffSecondary", true), skill("radius", 20), }, qualityStats = { @@ -6870,7 +6883,7 @@ skills["VaalFlameblast"] = { mod("Damage", "MORE", nil, 0, KeywordFlag.Ailment, { type = "Multiplier", var = "VaalFlameblastStage" }), }, ["vaal_flameblast_radius_+_per_stage"] = { - mod("AreaOfEffect", "BASE", nil, 0, 0, { type = "Multiplier", var = "FlameblastStageAfterFirst" }), + mod("AreaOfEffect", "BASE", nil, 0, 0, { type = "Multiplier", var = "VaalFlameblastStageAfterFirst" }), }, }, baseFlags = { diff --git a/src/Export/Skills/act_dex.txt b/src/Export/Skills/act_dex.txt index 9098f37122..93df43778d 100644 --- a/src/Export/Skills/act_dex.txt +++ b/src/Export/Skills/act_dex.txt @@ -394,9 +394,22 @@ local skills, mod, flag, skill = ... ["vaal_charged_attack_damage_taken_+%_final"] = { mod("DamageTaken", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff" }), }, + ["vaal_charged_attack_radius_+_per_stage"] = { + mod("AreaOfEffect", "BASE", nil, 0, 0, { type = "Multiplier", var = "VaalBladeFlurryStage" }), + }, + ["charged_attack_damage_per_stack_+%_final"] = { + mod("Damage", "MORE", nil, 0, 0, { type = "Multiplier", var = "VaalBladeFlurryStage" }), + }, }, +--huge/inf used for now, max stages are when aoe reaches 9m. 89% INC AoE made my max stages 11/12 in game +--secondary radius around enemy unknown, set to 1m for now +#baseMod skill("numStages", 1, { type = "Multiplier", var = "VaalBladeFlurryStage" }) +#baseMod mod("Multiplier:VaalBladeFlurryMaxStages", "BASE", math.huge ) +#baseMod skill("radius", 10) +#baseMod skill("radiusSecondary", 10) #mods + #skill BladeVortex #flags spell area duration preDamageFunc = function(activeSkill, output) @@ -2346,7 +2359,7 @@ local skills, mod, flag, skill = ... }, ["reave_additional_max_stacks"] = { mod("Multiplier:ReaveMaxStages", "BASE", nil), - } + }, }, #baseMod skill("radius", 20) #baseMod mod("Multiplier:ReaveMaxStages", "BASE", 8) @@ -2370,14 +2383,14 @@ local skills, mod, flag, skill = ... #flags attack melee area vaal statMap = { ["reave_area_of_effect_+%_final_per_stage"] = { - mod("AreaOfEffect", "MORE", nil, 0, 0, { type = "Multiplier", var = "ReaveStage" }), + mod("AreaOfEffect", "MORE", nil, 0, 0, { type = "Multiplier", var = "VaalReaveStage" }), }, ["reave_additional_max_stacks"] = { - mod("Multiplier:ReaveMaxStages", "BASE", nil), + mod("Multiplier:VaalReaveMaxStages", "BASE", nil), }, }, #baseMod skill("radius", 12) -#baseMod mod("Multiplier:ReaveMaxStages", "BASE", 4) +#baseMod mod("Multiplier:VaalReaveMaxStages", "BASE", 4) #mods #skill ScourgeArrow diff --git a/src/Export/Skills/act_int.txt b/src/Export/Skills/act_int.txt index 9b31989971..ae56f2b170 100644 --- a/src/Export/Skills/act_int.txt +++ b/src/Export/Skills/act_int.txt @@ -505,14 +505,27 @@ local skills, mod, flag, skill = ... #skill VaalBlight #flags spell duration area + parts = { + { + name = "Manual Stacks", + stages = true, + }, + { + name = "Maximum Sustainable Stacks", + }, + }, statMap = { + ["display_max_blight_stacks"] = { + mod("Multiplier:VaalBlightMaxStages", "BASE", nil, 0, 0, { type = "SkillPart", skillPart = 1 }), + mod("BlightBaseMaxStages", "BASE", nil, 0, 0, { type = "SkillPart", skillPart = 2 }), + }, ["hinder_enemy_chaos_damage_taken_+%"] = { mod("ChaosDamageTaken", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Debuff", effectName = "Hinder" }), }, - ["display_max_blight_stacks"] = { - mod("Multiplier:BlightMaxStages", "BASE", nil, 0, 0, { type = "SkillPart", skillPart = 1 }), - }, }, +#baseMod mod("Damage", "MORE", 100, 0, 0, { type = "Multiplier", var = "VaalBlightStageAfterFirst" }) +#baseMod skill("debuff", true) +#baseMod skill("debuffSecondary", true) #baseMod skill("radius", 20) #mods @@ -1345,7 +1358,7 @@ local skills, mod, flag, skill = ... mod("Damage", "MORE", nil, 0, KeywordFlag.Ailment, { type = "Multiplier", var = "VaalFlameblastStage" }), }, ["vaal_flameblast_radius_+_per_stage"] = { - mod("AreaOfEffect", "BASE", nil, 0, 0, { type = "Multiplier", var = "FlameblastStageAfterFirst" }), + mod("AreaOfEffect", "BASE", nil, 0, 0, { type = "Multiplier", var = "VaalFlameblastStageAfterFirst" }), }, }, #baseMod mod("Multiplier:VaalFlameblastMaxStages", "BASE", 15) diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index 2929c8feb1..f31d0ae63e 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -1867,7 +1867,7 @@ function calcs.perform(env, skipEHP) -- See: https://github.com/PathOfBuildingCommunity/PathOfBuilding/pull/5164 for _, activeSkill in ipairs(env.player.activeSkillList) do if not activeSkill.skillFlags.disable and not (env.limitedSkills and env.limitedSkills[cacheSkillUUID(activeSkill, env)]) then - if (activeSkill.activeEffect.grantedEffect.name == "Blight" or activeSkill.activeEffect.grantedEffect.name == "Blight of Contagion" or activeSkill.activeEffect.grantedEffect.name == "Blight of Atrophy") and activeSkill.skillPart == 2 then + if (activeSkill.activeEffect.grantedEffect.name == "Blight" or activeSkill.activeEffect.grantedEffect.name == "Vaal Blight" or activeSkill.activeEffect.grantedEffect.name == "Blight of Contagion" or activeSkill.activeEffect.grantedEffect.name == "Blight of Atrophy") and activeSkill.skillPart == 2 then local rate, duration = getCachedOutputValue(env, activeSkill, "Speed", "Duration") local baseMaxStages = activeSkill.skillModList:Sum("BASE", env.player.mainSkill.skillCfg, "BlightBaseMaxStages") local maximum = m_min((m_floor(rate * duration) - 1), baseMaxStages - 1) diff --git a/src/Modules/ConfigOptions.lua b/src/Modules/ConfigOptions.lua index e732a359fb..932c028fd8 100644 --- a/src/Modules/ConfigOptions.lua +++ b/src/Modules/ConfigOptions.lua @@ -659,6 +659,10 @@ return { { var = "absolutionSkillDamageCountedOnce", type = "check", label = "Absolution: Count skill damage once", ifSkill = "Absolution", includeTransfigured = true, tooltip = "Your Absolution Skill Damage will not be scaled with Count setting.\nBy default it multiplies both minion count and skill hit count which leads to incorrect\nTotal DPS calculation since Absolution cannot inherently shotgun.\nDo not enable if you use Spell Totem support, Spell Cascade support or similar supports", apply = function(val, modList, enemyModList) modList:NewMod("Condition:AbsolutionSkillDamageCountedOnce", "FLAG", true, "Config", { type = "Condition", var = "Combat" }) end }, + { label = "Vaal Blade Flurry", ifSkill = "Vaal Blade Flurry" }, + { var = "channellingVaalBladeFlurryCheck", type = "check", label = "Are you Channelling Vaal Blade Flurry?", ifSkill = "Vaal Blade Flurry", includeTransfigured = true, apply = function(val, modList, enemyModList) + modList:NewMod("Condition:ChannellingVaalBladeFlurry", "FLAG", true, "Config") + end }, { label = "Molten Shell:", ifSkill = "Molten Shell" }, { var = "MoltenShellDamageMitigated", type = "count", label = "Damage mitigated:", tooltip = "Molten Shell reflects damage to the enemy,\nbased on the amount of damage it has mitigated.", ifSkill = "Molten Shell", apply = function(val, modList, enemyModList) modList:NewMod("SkillData", "LIST", { key = "MoltenShellDamageMitigated", value = val }, "Config", { type = "SkillName", skillName = "Molten Shell" })