diff --git a/src/Classes/ModStore.lua b/src/Classes/ModStore.lua index 7347ba6473..5fefda41eb 100644 --- a/src/Classes/ModStore.lua +++ b/src/Classes/ModStore.lua @@ -363,6 +363,14 @@ function ModStoreClass:EvalMod(mod, cfg) end elseif tag.type == "MultiplierThreshold" then local target = self + local thresholdTarget = self + if tag.thresholdActor then + if self.actor[tag.thresholdActor] then + thresholdTarget = self.actor[tag.thresholdActor].modDB + else + return + end + end if tag.actor then if self.actor[tag.actor] then target = self.actor[tag.actor].modDB @@ -378,7 +386,7 @@ function ModStoreClass:EvalMod(mod, cfg) else mult = target:GetMultiplier(tag.var, cfg) end - local threshold = tag.threshold or target:GetMultiplier(tag.thresholdVar, cfg) + local threshold = tag.threshold or thresholdTarget:GetMultiplier(tag.thresholdVar, cfg) if (tag.upper and mult > threshold) or (not tag.upper and mult < threshold) then return end diff --git a/src/Data/Skills/act_str.lua b/src/Data/Skills/act_str.lua index 3c1911bffe..3e9e13d329 100644 --- a/src/Data/Skills/act_str.lua +++ b/src/Data/Skills/act_str.lua @@ -762,6 +762,19 @@ skills["AttritionPlayer"] = { label = "Attrition", incrementalEffectiveness = 0.054999999701977, statDescriptionScope = "attrition", + statMap = { + ["skill_attrition_presence_max_seconds"] = { + mod("Multiplier:AttritionMaxDamage", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff"}), + }, + ["skill_attrition_culling_strike_at_x_or_more_stacks"] = { + mod("Multiplier:AttritionCullSeconds", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff"}), + }, + ["skill_attrition_hit_damage_+%_final_vs_rare_or_unique_enemy_per_second_ever_in_presence_up_to_max"] = { + {mod("Damage", "MORE", nil, 0, KeywordFlag.Hit, { type = "GlobalEffect", effectType = "Buff"}, { type = "Multiplier", var = "EnemyPresenceSeconds", actor = "enemy", limitVar = "AttritionMaxDamage", div = 2, limitTotal = true }, { type = "ActorCondition", actor = "enemy", var = "RareOrUnique" })}, + {mod("CullPercent", "MAX", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff"}, { type = "MultiplierThreshold", var = "EnemyPresenceSeconds", actor = "enemy", thresholdVar = "AttritionCullSeconds"}, { type = "ActorCondition", actor = "enemy", var = "RareOrUnique" }), + value = 10,} + }, + }, baseFlags = { }, constantStats = { diff --git a/src/Export/Skills/act_str.txt b/src/Export/Skills/act_str.txt index 536f23972c..9869b9696e 100644 --- a/src/Export/Skills/act_str.txt +++ b/src/Export/Skills/act_str.txt @@ -41,6 +41,20 @@ local skills, mod, flag, skill = ... #skill AttritionPlayer #set AttritionPlayer #flags +statMap = { +statMap = { + ["skill_attrition_presence_max_seconds"] = { + mod("Multiplier:AttritionMaxDamage", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff"}), + }, + ["skill_attrition_culling_strike_at_x_or_more_stacks"] = { + mod("Multiplier:AttritionCullSeconds", "BASE", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff"}), + }, + ["skill_attrition_hit_damage_+%_final_vs_rare_or_unique_enemy_per_second_ever_in_presence_up_to_max"] = { + {mod("Damage", "MORE", nil, 0, KeywordFlag.Hit, { type = "GlobalEffect", effectType = "Buff"}, { type = "Multiplier", var = "EnemyPresenceSeconds", actor = "enemy", limitVar = "AttritionMaxDamage", div = 2, limitTotal = true }, { type = "ActorCondition", actor = "enemy", var = "RareOrUnique" })}, + {mod("CullPercent", "MAX", nil, 0, 0, { type = "GlobalEffect", effectType = "Buff"}, { type = "MultiplierThreshold", var = "EnemyPresenceSeconds", actor = "enemy", thresholdVar = "AttritionCullSeconds"}, { type = "ActorCondition", actor = "enemy", var = "RareOrUnique" }), + value = 10,} + }, +}, #mods #skillEnd