From 47efc00c461cf1aa27a3b947f57220bae85dae58 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Fri, 12 Sep 2025 19:53:18 +1000 Subject: [PATCH] Aura Magnitudes I'm not 100% certain if this is the correct way to handle them or if we should just make them additive with curse / aura effect `The Magnitudes of a Buff or Debuff are the values of the stats it applies to the target. A Buff or Debuff with higher magnitudes is more powerful. Modifiers to the Magnitude of Buffs or Debuffs come from whoever applies it and are multiplicative with modifiers to the Effect the Buff or Debuff has on the target.` This makes it sound to me that it's multiplicative with AuraEffect but all the stats internally use "curse_effect_+%" or "aura_effect_+%" so I don't really know anymore --- src/Data/ModCache.lua | 16 +++++------- src/Modules/CalcOffence.lua | 6 ++--- src/Modules/CalcPerform.lua | 50 ++++++++++++++++++------------------ src/Modules/CalcSections.lua | 2 +- src/Modules/ModParser.lua | 1 + 5 files changed, 37 insertions(+), 38 deletions(-) diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index 4d1db44f16..b4d404b895 100755 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -3065,8 +3065,8 @@ c["80% increased Critical Hit Chance"]={{[1]={flags=0,keywordFlags=0,name="CritC c["80% increased Critical Hit Chance for Spells"]={{[1]={flags=2,keywordFlags=0,name="CritChance",type="INC",value=80}},nil} c["80% increased Critical Hit Chance if you haven't dealt a Critical Hit Recently"]={{[1]={[1]={neg=true,type="Condition",var="CritRecently"},flags=0,keywordFlags=0,name="CritChance",type="INC",value=80}},nil} c["80% increased Damage with Hits against Enemies that are on Full Life"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="FullLife"},flags=0,keywordFlags=262144,name="Damage",type="INC",value=80}},nil} -c["80% increased Desecrated Modifier magnitudes"]={{}," Desecrated Modifier magnitudes "} -c["80% increased Desecrated Modifier magnitudes 120% increased Chaos Damage"]={{[1]={flags=0,keywordFlags=0,name="ChaosDamage",type="INC",value=80}}," Desecrated Modifier magnitudes 120% increased "} +c["80% increased Desecrated Modifier magnitudes"]={{[1]={flags=0,keywordFlags=0,name="Magnitude",type="INC",value=80}}," Desecrated Modifier "} +c["80% increased Desecrated Modifier magnitudes 120% increased Chaos Damage"]={{[1]={flags=0,keywordFlags=0,name="Magnitude",type="INC",value=80}}," Desecrated Modifier 120% increased Chaos Damage "} c["80% increased Elemental Damage with Attacks"]={{[1]={flags=0,keywordFlags=65536,name="ElementalDamage",type="INC",value=80}},nil} c["80% increased Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="EnergyShield",type="INC",value=80}},nil} c["80% increased Evasion Rating"]={{[1]={flags=0,keywordFlags=0,name="Evasion",type="INC",value=80}},nil} @@ -4119,13 +4119,11 @@ c["Attacks with One-Handed Weapons have 20% increased Chance to inflict Ailments c["Attacks with this Weapon gain 50% of Physical damage as Extra damage of each Element"]={{[1]={[2]={type="Condition",var="{Hand}Attack"},[3]={skillType=1,type="SkillType"},flags=0,keywordFlags=0,name="PhysicalDamageGainAsLightning",type="BASE",value=50},[2]={[2]={type="Condition",var="{Hand}Attack"},[3]={skillType=1,type="SkillType"},flags=0,keywordFlags=0,name="PhysicalDamageGainAsCold",type="BASE",value=50},[3]={[2]={type="Condition",var="{Hand}Attack"},[3]={skillType=1,type="SkillType"},flags=0,keywordFlags=0,name="PhysicalDamageGainAsFire",type="BASE",value=50}},nil} c["Attribute Requirements of Gems can be satisified by your highest Attribute"]={{[1]={flags=0,keywordFlags=0,name="GemAttributeRequirementsSatisfiedByHighestAttribute",type="FLAG",value=true}},nil} c["Aura Skills have 1% more Aura Effect per 2% of maximum Mana they Reserve"]={{[1]={[1]={skillType=39,type="SkillType"},[2]={div=2,stat="ManaReservedPercent",type="PerStat"},flags=0,keywordFlags=0,name="AuraEffect",type="MORE",value=1}},nil} -c["Aura Skills have 10% increased Magnitudes"]={{}," Magnitudes "} -c["Aura Skills have 10% increased Magnitudes +10 to Intelligence"]={{[1]={[1]={skillType=39,type="SkillType"},flags=0,keywordFlags=0,name="Int",type="INC",value=10}}," Magnitudes +10 to "} -c["Aura Skills have 12% increased Magnitudes"]={{}," Magnitudes "} -c["Aura Skills have 14% increased Magnitudes"]={{}," Magnitudes "} -c["Aura Skills have 14% increased Magnitudes Your Aura Buffs do not affect Allies"]={{}," Magnitudes Your Aura Buffs do not affect Allies "} -c["Aura Skills have 5% increased Magnitudes"]={{}," Magnitudes "} -c["Aura Skills have 6% increased Magnitudes"]={{}," Magnitudes "} +c["Aura Skills have 10% increased Magnitudes"]={{[1]={[1]={skillType=39,type="SkillType"},flags=0,keywordFlags=0,name="Magnitude",type="INC",value=10}},nil} +c["Aura Skills have 12% increased Magnitudes"]={{[1]={[1]={skillType=39,type="SkillType"},flags=0,keywordFlags=0,name="Magnitude",type="INC",value=12}},nil} +c["Aura Skills have 14% increased Magnitudes"]={{[1]={[1]={skillType=39,type="SkillType"},flags=0,keywordFlags=0,name="Magnitude",type="INC",value=14}},nil} +c["Aura Skills have 5% increased Magnitudes"]={{[1]={[1]={skillType=39,type="SkillType"},flags=0,keywordFlags=0,name="Magnitude",type="INC",value=5}},nil} +c["Aura Skills have 6% increased Magnitudes"]={{[1]={[1]={skillType=39,type="SkillType"},flags=0,keywordFlags=0,name="Magnitude",type="INC",value=6}},nil} c["Auras from your Skills can only affect you"]={{[1]={flags=0,keywordFlags=0,name="SelfAurasOnlyAffectYou",type="FLAG",value=true}},nil} c["Banner Buffs linger on you for 2 seconds after you leave the Area"]={nil,"Banner Buffs linger on you for 2 seconds after you leave the Area "} c["Banner Skills have 12% increased Aura Magnitudes"]={{[1]={[1]={skillType=88,type="SkillType"},flags=0,keywordFlags=0,name="AuraEffect",type="INC",value=12}},nil} diff --git a/src/Modules/CalcOffence.lua b/src/Modules/CalcOffence.lua index 7897b8bc06..56eda48bd9 100644 --- a/src/Modules/CalcOffence.lua +++ b/src/Modules/CalcOffence.lua @@ -1266,9 +1266,9 @@ function calcs.offence(env, actor, activeSkill) calcAreaOfEffect(skillModList, skillCfg, skillData, skillFlags, output, breakdown) end if activeSkill.skillTypes[SkillType.Aura] then - output.AuraEffectMod = calcLib.mod(skillModList, skillCfg, "AuraEffect", not skillData.auraCannotAffectSelf and "SkillAuraEffectOnSelf" or nil) + output.AuraEffectMod = calcLib.mod(skillModList, skillCfg, "AuraEffect", not skillData.auraCannotAffectSelf and "SkillAuraEffectOnSelf" or nil) * calcLib.mod(skillModList, skillCfg, "Magnitude") if breakdown then - breakdown.AuraEffectMod = breakdown.mod(skillModList, skillCfg, "AuraEffect", not skillData.auraCannotAffectSelf and "SkillAuraEffectOnSelf" or nil) + breakdown.AuraEffectMod = breakdown.mod(skillModList, skillCfg, "AuraEffect", "Magnitude", not skillData.auraCannotAffectSelf and "SkillAuraEffectOnSelf" or nil) end end if activeSkill.skillTypes[SkillType.HasReservation] and not activeSkill.skillTypes[SkillType.ReservationBecomesCost] then @@ -5295,7 +5295,7 @@ function calcs.offence(env, actor, activeSkill) end local more = skillModList:More(dotTypeCfg, "Damage", damageType.."Damage", isElemental[damageType] and "ElementalDamage" or nil) local mult = skillModList:Override(dotTypeCfg, "DotMultiplier") or skillModList:Sum("BASE", dotTypeCfg, "DotMultiplier") + skillModList:Sum("BASE", dotTypeCfg, damageType.."DotMultiplier") - local aura = activeSkill.skillTypes[SkillType.Aura] and not activeSkill.skillTypes[SkillType.RemoteMined] and calcLib.mod(skillModList, dotTypeCfg, "AuraEffect") + local aura = activeSkill.skillTypes[SkillType.Aura] and not activeSkill.skillTypes[SkillType.RemoteMined] and calcLib.mod(skillModList, dotTypeCfg, "AuraEffect") * calcLib.mod(skillModList, skillCfg, "Magnitude") local total = baseVal * (1 + inc/100) * more * (1 + mult/100) * (aura or 1) * effMult if output[damageType.."Dot"] == 0 or output[damageType.."Dot"] == nil then output[damageType.."Dot"] = total diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index b71fd7f0e5..8e79e962fc 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -1716,7 +1716,7 @@ function calcs.perform(env, skipEHP) modDB.conditions["AffectedBy"..buff.name:gsub(" ","")] = true local srcList = new("ModList") local inc = modStore:Sum("INC", skillCfg, "BuffEffect", "BuffEffectOnSelf", "BuffEffectOnPlayer") + skillModList:Sum("INC", skillCfg, buff.name:gsub(" ", "").."Effect") - local more = modStore:More(skillCfg, "BuffEffect", "BuffEffectOnSelf") + local more = modStore:More(skillCfg, "BuffEffect", "BuffEffectOnSelf") * calcLib.mod(modStore, skillCfg, "Magnitude") srcList:ScaleAddList(buff.modList, (1 + inc / 100) * more) mergeBuff(srcList, buffs, buff.name) if activeSkill.skillData.thisIsNotABuff then @@ -1728,13 +1728,13 @@ function calcs.perform(env, skipEHP) env.minion.modDB.conditions["AffectedBy"..buff.name:gsub(" ","")] = true local srcList = new("ModList") local inc = modStore:Sum("INC", skillCfg, "BuffEffect") + env.minion.modDB:Sum("INC", nil, "BuffEffectOnSelf") - local more = modStore:More(skillCfg, "BuffEffect") * env.minion.modDB:More(nil, "BuffEffectOnSelf") + local more = modStore:More(skillCfg, "BuffEffect") * env.minion.modDB:More(nil, "BuffEffectOnSelf") * calcLib.mod(modStore, skillCfg, "Magnitude") srcList:ScaleAddList(buff.modList, (1 + inc / 100) * more) mergeBuff(srcList, minionBuffs, buff.name) end if partyTabEnableExportBuffs and (buff.applyAllies or skillModList:Flag(nil, "BuffAppliesToAllies") or skillModList:Flag(nil, "BuffAppliesToPartyMembers")) then local inc = modStore:Sum("INC", skillCfg, "BuffEffect") + skillModList:Sum("INC", skillCfg, buff.name:gsub(" ", "").."Effect") - local more = modStore:More(skillCfg, "BuffEffect") + local more = modStore:More(skillCfg, "BuffEffect") * calcLib.mod(modStore, skillCfg, "Magnitude") buffExports["Aura"]["otherEffects"] = buffExports["Aura"]["otherEffects"] or { } buffExports["Aura"]["otherEffects"][buff.name] = { effectMult = (1 + inc / 100) * more, modList = buff.modList } end @@ -1747,7 +1747,7 @@ function calcs.perform(env, skipEHP) activeSkill.buffSkill = true local srcList = new("ModList") local inc = modStore:Sum("INC", skillCfg, "BuffEffect", "BuffEffectOnSelf", "BuffEffectOnPlayer") - local more = modStore:More(skillCfg, "BuffEffect", "BuffEffectOnSelf") + local more = modStore:More(skillCfg, "BuffEffect", "BuffEffectOnSelf") * calcLib.mod(modStore, skillCfg, "Magnitude") srcList:ScaleAddList(buff.modList, (1 + inc / 100) * more) mergeBuff(srcList, guards, buff.name) end @@ -1782,7 +1782,7 @@ function calcs.perform(env, skipEHP) modDB.conditions["AffectedBy"..warcryName] = true local srcList = new("ModList") local inc = modStore:Sum("INC", skillCfg, "BuffEffect", "BuffEffectOnSelf", "BuffEffectOnPlayer") - local more = modStore:More(skillCfg, "BuffEffect", "BuffEffectOnSelf") + local more = modStore:More(skillCfg, "BuffEffect", "BuffEffectOnSelf") * calcLib.mod(modStore, skillCfg, "Magnitude") for _, warcryBuff in ipairs(buff.modList) do local mult = (1 + inc / 100) * more * (warcryBuff[1].warcryPowerBonus or 1) * uptime srcList:ScaleAddList({warcryBuff}, mult) @@ -1795,7 +1795,7 @@ function calcs.perform(env, skipEHP) env.minion.modDB.conditions["AffectedBy"..warcryName] = true local srcList = new("ModList") local inc = skillModList:Sum("INC", skillCfg, "BuffEffect") + env.minion.modDB:Sum("INC", skillCfg, "BuffEffectOnSelf") - local more = skillModList:More(skillCfg, "BuffEffect") * env.minion.modDB:More(skillCfg, "BuffEffectOnSelf") + local more = skillModList:More(skillCfg, "BuffEffect") * env.minion.modDB:More(skillCfg, "BuffEffectOnSelf") * calcLib.mod(skillModList, skillCfg, "Magnitude") for _, warcryBuff in ipairs(buff.modList) do local mult = (1 + inc / 100) * more * (warcryBuff[1].warcryPowerBonus or 1) * uptime srcList:ScaleAddList({warcryBuff}, mult) @@ -1823,7 +1823,7 @@ function calcs.perform(env, skipEHP) if partyTabEnableExportBuffs then local newModList = new("ModList") local inc = skillModList:Sum("INC", skillCfg, "BuffEffect") - local more = skillModList:More(skillCfg, "BuffEffect") + local more = skillModList:More(skillCfg, "BuffEffect") * calcLib.mod(skillModList, skillCfg, "Magnitude") newModList:AddList(buff.modList) newModList:AddList(extraWarcryModList) buffExports["Warcry"][buff.name] = { effectMult = (1 + inc / 100) * more * uptime, modList = newModList } @@ -1849,7 +1849,7 @@ function calcs.perform(env, skipEHP) end if not activeSkill.skillData.auraCannotAffectSelf then local inc = skillModList:Sum("INC", skillCfg, "AuraEffect", "BuffEffect", "BuffEffectOnSelf", "AuraEffectOnSelf", "AuraBuffEffect", "SkillAuraEffectOnSelf") - local more = skillModList:More(skillCfg, "AuraEffect", "BuffEffect", "BuffEffectOnSelf", "AuraEffectOnSelf", "AuraBuffEffect", "SkillAuraEffectOnSelf") + local more = skillModList:More(skillCfg, "AuraEffect", "BuffEffect", "BuffEffectOnSelf", "AuraEffectOnSelf", "AuraBuffEffect", "SkillAuraEffectOnSelf") * calcLib.mod(skillModList, skillCfg, "Magnitude") local mult = (1 + inc / 100) * more if modDB:Flag(nil, "AlliesAurasCannotAffectSelf") or not allyBuffs["Aura"] or not allyBuffs["Aura"][buff.name] or allyBuffs["Aura"][buff.name].effectMult / 100 <= mult then activeSkill.buffSkill = true @@ -1867,7 +1867,7 @@ function calcs.perform(env, skipEHP) if not (modDB:Flag(nil, "SelfAurasCannotAffectAllies") or modDB:Flag(nil, "SelfAurasOnlyAffectYou") or modDB:Flag(nil, "SelfAuraSkillsCannotAffectAllies")) then if env.minion and not env.minion.modDB:Flag(nil, "HiddenMonster") then local inc = skillModList:Sum("INC", skillCfg, "AuraEffect", "BuffEffect") + env.minion.modDB:Sum("INC", skillCfg, "BuffEffectOnSelf", "AuraEffectOnSelf") - local more = skillModList:More(skillCfg, "AuraEffect", "BuffEffect") * env.minion.modDB:More(skillCfg, "BuffEffectOnSelf", "AuraEffectOnSelf") + local more = skillModList:More(skillCfg, "AuraEffect", "BuffEffect") * env.minion.modDB:More(skillCfg, "BuffEffectOnSelf", "AuraEffectOnSelf") * calcLib.mod(skillModList, skillCfg, "Magnitude") local mult = (1 + inc / 100) * more if not allyBuffs["Aura"] or not allyBuffs["Aura"][buff.name] or allyBuffs["Aura"][buff.name].effectMult / 100 <= mult then activeSkill.minionBuffSkill = true @@ -1880,7 +1880,7 @@ function calcs.perform(env, skipEHP) end end local inc = skillModList:Sum("INC", skillCfg, "AuraEffect", "BuffEffect") - local more = skillModList:More(skillCfg, "AuraEffect", "BuffEffect") + local more = skillModList:More(skillCfg, "AuraEffect", "BuffEffect") * calcLib.mod(skillModList, skillCfg, "Magnitude") local mult = (1 + inc / 100) * more local newModList = new("ModList") newModList:AddList(buff.modList) @@ -1903,7 +1903,7 @@ function calcs.perform(env, skipEHP) local srcList = new("ModList") local inc = skillModList:Sum("INC", skillCfg, "AuraEffect", "BuffEffect", "AuraBuffEffect") - local more = skillModList:More(skillCfg, "AuraEffect", "BuffEffect", "AuraBuffEffect") + local more = skillModList:More(skillCfg, "AuraEffect", "BuffEffect", "AuraBuffEffect") * calcLib.mod(skillModList, skillCfg, "Magnitude") local lists = {extraAuraModList, buff.modList} local scale = (1 + inc / 100) * more scale = m_max(scale, 0) @@ -1952,8 +1952,8 @@ function calcs.perform(env, skipEHP) end end local inc = skillModList:Sum("INC", skillCfg, "AuraEffect", "BuffEffect", "DebuffEffect") - local more = skillModList:More(skillCfg, "AuraEffect", "BuffEffect", "DebuffEffect") - mult = (1 + inc / 100) * more + local more = skillModList:More(skillCfg, "AuraEffect", "BuffEffect", "DebuffEffect") * calcLib.mod(skillModList, skillCfg, "Magnitude") + local mult = (1 + inc / 100) * more local newModList = new("ModList") newModList:AddList(extraAuraModList) buffExports["Aura"][buff.name..(buffExports["Aura"][buff.name] and "_Debuff" or "")] = { effectMult = mult, modList = newModList } @@ -2000,7 +2000,7 @@ function calcs.perform(env, skipEHP) mult = 0 if not modDB:Flag(nil, "SelfAurasOnlyAffectYou") then local inc = skillModList:Sum("INC", skillCfg, "AuraEffect", "BuffEffect", "DebuffEffect") - local more = skillModList:More(skillCfg, "AuraEffect", "BuffEffect", "DebuffEffect") + local more = skillModList:More(skillCfg, "AuraEffect", "BuffEffect", "DebuffEffect") * calcLib.mod(skillModList, skillCfg, "Magnitude") mult = (1 + inc / 100) * more local newModList = {} for _, mod in ipairs(buff.modList) do @@ -2021,7 +2021,7 @@ function calcs.perform(env, skipEHP) end if buff.type == "Debuff" then local inc = skillModList:Sum("INC", skillCfg, "DebuffEffect") - local more = skillModList:More(skillCfg, "DebuffEffect") + local more = skillModList:More(skillCfg, "DebuffEffect") * calcLib.mod(skillModList, skillCfg, "Magnitude") mult = (1 + inc / 100) * more end srcList:ScaleAddList(buff.modList, mult * stackCount) @@ -2047,7 +2047,7 @@ function calcs.perform(env, skipEHP) if activeSkill.skillTypes[SkillType.Aura] then inc = inc + skillModList:Sum("INC", skillCfg, "AuraEffect") end - local more = skillModList:More(skillCfg, "CurseEffect") + local more = skillModList:More(skillCfg, "CurseEffect") * calcLib.mod(skillModList, skillCfg, "Magnitude") local moreMark = more -- This is non-ideal, but the only More for enemy is the boss effect if not curse.isMark then @@ -2104,7 +2104,7 @@ function calcs.perform(env, skipEHP) end end local inc = skillModList:Sum("INC", skillCfg, "LinkEffect", "BuffEffect") - local more = skillModList:More(skillCfg, "LinkEffect", "BuffEffect") + local more = skillModList:More(skillCfg, "LinkEffect", "BuffEffect") * calcLib.mod(skillModList, skillCfg, "Magnitude") local mult = (1 + inc / 100) * more if partyTabEnableExportBuffs then local newModList = new("ModList") @@ -2163,7 +2163,7 @@ function calcs.perform(env, skipEHP) modDB.conditions["AffectedBy"..buff.name:gsub(" ","")] = true local srcList = new("ModList") local inc = modStore:Sum("INC", skillCfg, "BuffEffect", "BuffEffectOnPlayer") + modDB:Sum("INC", nil, "BuffEffectOnSelf") - local more = modStore:More(skillCfg, "BuffEffect", "BuffEffectOnPlayer") * modDB:More(nil, "BuffEffectOnSelf") + local more = modStore:More(skillCfg, "BuffEffect", "BuffEffectOnPlayer") * modDB:More(nil, "BuffEffectOnSelf") * calcLib.mod(skillModList, skillCfg, "Magnitude") srcList:ScaleAddList(buff.modList, (1 + inc / 100) * more) mergeBuff(srcList, buffs, buff.name) mergeBuff(buff.modList, buffs, buff.name) @@ -2187,7 +2187,7 @@ function calcs.perform(env, skipEHP) end local srcList = new("ModList") local inc = modStore:Sum("INC", skillCfg, "BuffEffect", (env.minion == castingMinion) and "BuffEffectOnSelf" or nil) - local more = modStore:More(skillCfg, "BuffEffect", (env.minion == castingMinion) and "BuffEffectOnSelf" or nil) + local more = modStore:More(skillCfg, "BuffEffect", (env.minion == castingMinion) and "BuffEffectOnSelf" or nil) * calcLib.mod(modStore, skillCfg, "Magnitude") srcList:ScaleAddList(buff.modList, (1 + inc / 100) * more) mergeBuff(srcList, minionBuffs, buff.name) mergeBuff(buff.modList, minionBuffs, buff.name) @@ -2216,7 +2216,7 @@ function calcs.perform(env, skipEHP) if not (activeSkill.minion.modDB:Flag(nil, "SelfAurasCannotAffectAllies") or activeSkill.minion.modDB:Flag(nil, "SelfAurasOnlyAffectYou") or activeSkill.minion.modDB:Flag(nil, "SelfAuraSkillsCannotAffectAllies")) then if not modDB:Flag(nil, "AlliesAurasCannotAffectSelf") and not modDB.conditions["AffectedBy"..buff.name:gsub(" ","")] then local inc = skillModList:Sum("INC", skillCfg, "AuraEffect", "BuffEffect", "BuffEffectOnPlayer", "AuraBuffEffect") + modDB:Sum("INC", skillCfg, "BuffEffectOnSelf", "AuraEffectOnSelf") - local more = skillModList:More(skillCfg, "AuraEffect", "BuffEffect", "AuraBuffEffect") * modDB:More(skillCfg, "BuffEffectOnSelf", "AuraEffectOnSelf") + local more = skillModList:More(skillCfg, "AuraEffect", "BuffEffect", "AuraBuffEffect") * modDB:More(skillCfg, "BuffEffectOnSelf", "AuraEffectOnSelf") * calcLib.mod(skillModList, skillCfg, "Magnitude") local mult = (1 + inc / 100) * more if not allyBuffs["Aura"] or not allyBuffs["Aura"][buff.name] or allyBuffs["Aura"][buff.name].effectMult / 100 <= mult then activeMinionSkill.buffSkill = true @@ -2233,7 +2233,7 @@ function calcs.perform(env, skipEHP) end if env.minion and not env.minion.modDB:Flag(nil, "HiddenMonster") and not env.minion.modDB.conditions["AffectedBy"..buff.name:gsub(" ","")] and (env.minion ~= activeSkill.minion or not activeSkill.skillData.auraCannotAffectSelf) then local inc = skillModList:Sum("INC", skillCfg, "AuraEffect", "BuffEffect") + env.minion.modDB:Sum("INC", skillCfg, "BuffEffectOnSelf", "AuraEffectOnSelf") - local more = skillModList:More(skillCfg, "AuraEffect", "BuffEffect") * env.minion.modDB:More(skillCfg, "BuffEffectOnSelf", "AuraEffectOnSelf") + local more = skillModList:More(skillCfg, "AuraEffect", "BuffEffect") * env.minion.modDB:More(skillCfg, "BuffEffectOnSelf", "AuraEffectOnSelf") * calcLib.mod(skillModList, skillCfg, "Magnitude") local mult = (1 + inc / 100) * more if not allyBuffs["Aura"] or not allyBuffs["Aura"][buff.name] or allyBuffs["Aura"][buff.name].effectMult / 100 <= mult then activeMinionSkill.minionBuffSkill = true @@ -2246,7 +2246,7 @@ function calcs.perform(env, skipEHP) end end local inc = skillModList:Sum("INC", skillCfg, "AuraEffect", "BuffEffect") - local more = skillModList:More(skillCfg, "AuraEffect", "BuffEffect") + local more = skillModList:More(skillCfg, "AuraEffect", "BuffEffect") * calcLib.mod(skillModList, skillCfg, "Magnitude") local mult = (1 + inc / 100) * more local newModList = new("ModList") newModList:AddList(buff.modList) @@ -2268,7 +2268,7 @@ function calcs.perform(env, skipEHP) local srcList = new("ModList") local inc = skillModList:Sum("INC", skillCfg, "AuraEffect", "BuffEffect", "AuraBuffEffect") - local more = skillModList:More(skillCfg, "AuraEffect", "BuffEffect", "AuraBuffEffect") + local more = skillModList:More(skillCfg, "AuraEffect", "BuffEffect", "AuraBuffEffect") * calcLib.mod(skillModList, skillCfg, "Magnitude") local lists = {extraAuraModList, buff.modList} local scale = (1 + inc / 100) * more scale = m_max(scale, 0) @@ -2300,7 +2300,7 @@ function calcs.perform(env, skipEHP) priority = determineCursePriority(buff.name, activeMinionSkill), } local inc = skillModList:Sum("INC", skillCfg, "CurseEffect") + enemyDB:Sum("INC", nil, "CurseEffectOnSelf") - local more = skillModList:More(skillCfg, "CurseEffect") * enemyDB:More(nil, "CurseEffectOnSelf") + local more = skillModList:More(skillCfg, "CurseEffect") * enemyDB:More(nil, "CurseEffectOnSelf") * calcLib.mod(skillModList, skillCfg, "Magnitude") curse.modList = new("ModList") curse.modList:ScaleAddList(buff.modList, (1 + inc / 100) * more) t_insert(minionCurses, curse) @@ -2325,7 +2325,7 @@ function calcs.perform(env, skipEHP) mult = 0 if not skillModList:Flag(nil, "SelfAurasOnlyAffectYou") then local inc = skillModList:Sum("INC", skillCfg, "AuraEffect", "BuffEffect", "DebuffEffect") - local more = skillModList:More(skillCfg, "AuraEffect", "BuffEffect", "DebuffEffect") + local more = skillModList:More(skillCfg, "AuraEffect", "BuffEffect", "DebuffEffect") * calcLib.mod(skillModList, skillCfg, "Magnitude") mult = (1 + inc / 100) * more if not enemyDB.conditions["AffectedBy"..buff.name:gsub(" ","")] then buffExports["Aura"][buff.name..(buffExports["Aura"][buff.name] and "_Debuff" or "")] = { effectMult = mult, modList = buff.modList } diff --git a/src/Modules/CalcSections.lua b/src/Modules/CalcSections.lua index 4a289aec71..5e835f9ba8 100644 --- a/src/Modules/CalcSections.lua +++ b/src/Modules/CalcSections.lua @@ -696,7 +696,7 @@ return { { label = "Bounces Count", flag = "bounce", { format = "{output:BounceCount}", { modName = { "BounceCount", "ProjectileCount" }, cfg = "skill" }, }, }, { label = "Aura Effect Mod", haveOutput = "AuraEffectMod", { format = "x {2:output:AuraEffectMod}", { breakdown = "AuraEffectMod" }, - { modName = { "AuraEffect", "SkillAuraEffectOnSelf" }, cfg = "skill" }, + { modName = { "AuraEffect", "SkillAuraEffectOnSelf", "Magnitude" }, cfg = "skill" }, }, }, { label = "Mana Reserve Mod", haveOutput = "ManaReservedMod", { format = "x {2:output:ManaReservedMod}", { breakdown = "ManaReservedMod" }, diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 0ae35b950d..ae59b32175 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -854,6 +854,7 @@ local modNameList = { ["effect"] = "LocalEffect", ["effect of flasks"] = "FlaskEffect", ["effect of charms"] = "CharmEffect", + ["magnitudes"] = "Magnitude", ["amount recovered"] = "FlaskRecovery", ["life recovered"] = "FlaskRecovery", ["life recovery from flasks used"] = "FlaskLifeRecovery",