From 4651a61ae92e56b1e98333ab8bedd7d40991da53 Mon Sep 17 00:00:00 2001 From: Blitz54 Date: Wed, 23 Apr 2025 13:41:26 -0500 Subject: [PATCH] Add support for Voltaic Mark shock effect --- src/Data/Skills/act_dex.lua | 5 ++++- src/Export/Skills/act_dex.txt | 5 ++++- src/Modules/CalcOffence.lua | 6 +++--- src/Modules/CalcPerform.lua | 4 ++-- src/Modules/CalcSections.lua | 2 +- 5 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/Data/Skills/act_dex.lua b/src/Data/Skills/act_dex.lua index c9877de2e..cbde4d980 100644 --- a/src/Data/Skills/act_dex.lua +++ b/src/Data/Skills/act_dex.lua @@ -9121,7 +9121,10 @@ skills["VoltaicMarkPlayer"] = { statDescriptionScope = "thaumaturgist_mark", statMap = { ["thaumaturgist_mark_enemies_shocked_chance_+%_final"] = { - mod("EnemyShockChance", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), + mod("SelfShockChance", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), + }, + ["thaumaturgist_mark_enemy_shock_effect_+%_taken"] = { + mod("SelfShockMagnitude", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), }, }, baseFlags = { diff --git a/src/Export/Skills/act_dex.txt b/src/Export/Skills/act_dex.txt index d811cbf6b..a547a6b47 100644 --- a/src/Export/Skills/act_dex.txt +++ b/src/Export/Skills/act_dex.txt @@ -609,7 +609,10 @@ statMap = { #flags spell statMap = { ["thaumaturgist_mark_enemies_shocked_chance_+%_final"] = { - mod("EnemyShockChance", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), + mod("SelfShockChance", "MORE", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), + }, + ["thaumaturgist_mark_enemy_shock_effect_+%_taken"] = { + mod("SelfShockMagnitude", "INC", nil, 0, 0, { type = "GlobalEffect", effectType = "Curse" }), }, }, #mods diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index 42a348a89..b66367171 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -4640,8 +4640,8 @@ function calcs.offence(env, actor, activeSkill) local hitAvg = hitMin + (hitMax - hitMin) / 2 local critAvg = critMin + (critMax - critMin) / 2 local base = skillModList:Sum("BASE", cfg, "Enemy"..ailment.."Chance", "AilmentChance") + enemyDB:Sum("BASE", nil, "Self"..ailment.."Chance") - local inc = skillModList:Sum("INC", cfg, "Enemy"..ailment.."Chance", "AilmentChance") - local more = skillModList:More(cfg, "Enemy"..ailment.."Chance", "AilmentChance") + local inc = skillModList:Sum("INC", cfg, "Enemy"..ailment.."Chance", "AilmentChance") + enemyDB:Sum("INC", nil, "Self"..ailment.."Chance") + local more = skillModList:More(cfg, "Enemy"..ailment.."Chance", "AilmentChance") * enemyDB:More(nil, "Self"..ailment.."Chance") local hitElementalAilmentChance = hitAvg / enemyThreshold * data.gameConstants[ailment .. "ChanceMultiplier"] hitElementalAilmentChance = (hitElementalAilmentChance + base) * (1 + inc / 100) * more local critElementalAilmentChance = critAvg / enemyThreshold * data.gameConstants[ailment .. "ChanceMultiplier"] @@ -4742,7 +4742,7 @@ function calcs.offence(env, actor, activeSkill) local incDur = skillModList:Sum("INC", cfg, "Enemy"..ailment.."Duration", "EnemyElementalAilmentDuration", "EnemyAilmentDuration") + enemyDB:Sum("INC", nil, "Self"..ailment.."Duration", "SelfElementalAilmentDuration", "SelfAilmentDuration") local moreDur = skillModList:More(cfg, "Enemy"..ailment.."Duration", "EnemyElementalAilmentDuration", "EnemyAilmentDuration") * enemyDB:More(nil, "Self"..ailment.."Duration", "SelfElementalAilmentDuration", "SelfAilmentDuration") output[ailment.."Duration"] = ailmentData[ailment].duration * (1 + incDur / 100) * moreDur * debuffDurationMult - output[ailment.."EffectMod"] = calcLib.mod(skillModList, cfg, "Enemy"..ailment.."Magnitude", "AilmentMagnitude") + output[ailment.."EffectMod"] = calcLib.mod(skillModList, cfg, "Enemy"..ailment.."Magnitude", "AilmentMagnitude") * calcLib.mod(enemyDB, cfg, "Self"..ailment.."Magnitude", "AilmentMagnitude") if breakdown then local maximum = globalOutput["Maximum"..ailment] or ailmentData[ailment].max local current = m_max(m_min(globalOutput["Current"..ailment] or 0, maximum), 0) diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index 1252ffe8c..55a1416ea 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -2813,9 +2813,9 @@ function calcs.perform(env, skipEHP) -- if not, use the generic modifiers -- Scorch/Sap/Brittle do not have guaranteed sources from hits, and therefore will only end up in this bit of code if it's not supposed to apply the skillModList, which is bad if ailment ~= "Scorch" and ailment ~= "Sap" and ailment ~= "Brittle" and not env.player.mainSkill.skillModList:Flag(nil, "Cannot"..ailment) and hitFlag and modDB:Flag(nil, "ChecksHighestDamage") then - effect = effect * calcLib.mod(env.player.mainSkill.skillModList, env.player.mainSkill.skillModList.skillCfg, "Enemy"..ailment.."Magnitude", "AilmentMagnitude") + effect = effect * calcLib.mod(env.player.mainSkill.skillModList, env.player.mainSkill.skillModList.skillCfg, "Enemy"..ailment.."Magnitude", "AilmentMagnitude") * calcLib.mod(enemyDB, nil, "Self"..ailment.."Magnitude", "AilmentMagnitude") else - effect = effect * calcLib.mod(env.player.mainSkill.skillModList, env.player.mainSkill.skillModList.skillCfg, "Enemy"..ailment.."Magnitude", "AilmentMagnitude") + effect = effect * calcLib.mod(env.player.mainSkill.skillModList, env.player.mainSkill.skillModList.skillCfg, "Enemy"..ailment.."Magnitude", "AilmentMagnitude") * calcLib.mod(enemyDB, nil, "Self"..ailment.."Magnitude", "AilmentMagnitude") end modDB:NewMod(ailment.."Override", "BASE", effect, mod.source, mod.flags, mod.keywordFlags, unpack(mod)) if mod.name == ailment.."Minimum" then diff --git a/src/Modules/CalcSections.lua b/src/Modules/CalcSections.lua index 5073da58e..4fc51f7ba 100644 --- a/src/Modules/CalcSections.lua +++ b/src/Modules/CalcSections.lua @@ -1289,7 +1289,7 @@ return { { label = "Player modifiers", notFlag = "attack", modName = { "EnemyShockMagnitude", "AilmentMagnitude", "ShockAsThoughDealing" }, cfg = "skill" }, { label = "Main hand modifiers", flag = "weapon1Attack", modName = { "EnemyShockMagnitude", "AilmentMagnitude", "ShockAsThoughDealing" }, cfg = "weapon1" }, { label = "Off hand modifiers", flag = "weapon2Attack", modName = { "EnemyShockMagnitude", "AilmentMagnitude", "ShockAsThoughDealing" }, cfg = "weapon2" }, - { label = "Enemy modifiers", modName = "SelfShockEffect", enemy = true }, + { label = "Enemy modifiers", modName = "SelfShockMagnitude", enemy = true }, }, }, { label = "Chance to Shock", bgCol = colorCodes.SHOCKBG, flag = "shock", { format = "{0:output:ShockChance}%", { breakdown = "MainHand.ShockChance" },