diff --git a/src/Data/ModCache.lua b/src/Data/ModCache.lua index 4a9f761e..406eef3f 100755 --- a/src/Data/ModCache.lua +++ b/src/Data/ModCache.lua @@ -1245,6 +1245,7 @@ c["23% increased Mana Regeneration Rate"]={{[1]={flags=0,keywordFlags=0,name="Ma c["23% increased Movement Speed"]={{[1]={flags=0,keywordFlags=0,name="MovementSpeed",type="INC",value=23}},nil} c["23% increased Skill Speed"]={{[1]={flags=0,keywordFlags=0,name="Speed",type="INC",value=23},[2]={flags=0,keywordFlags=0,name="WarcrySpeed",type="INC",value=23}},nil} c["23% increased Strength"]={{[1]={flags=0,keywordFlags=0,name="Str",type="INC",value=23}},nil} +c["23% of Damage taken bypasses Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="PhysicalEnergyShieldBypass",type="OVERRIDE",value=23},[2]={flags=0,keywordFlags=0,name="LightningEnergyShieldBypass",type="OVERRIDE",value=23},[3]={flags=0,keywordFlags=0,name="ColdEnergyShieldBypass",type="OVERRIDE",value=23},[4]={flags=0,keywordFlags=0,name="FireEnergyShieldBypass",type="OVERRIDE",value=23},[5]={flags=0,keywordFlags=0,name="ChaosEnergyShieldBypass",type="OVERRIDE",value=23}},nil} c["23% reduced Light Radius"]={{[1]={flags=0,keywordFlags=0,name="LightRadius",type="INC",value=-23}},nil} c["24% increased Attack Damage"]={{[1]={flags=1,keywordFlags=0,name="Damage",type="INC",value=24}},nil} c["24% increased Damage with Hits against Enemies affected by Elemental Ailments"]={{[1]={[1]={actor="enemy",type="ActorCondition",varList={[1]="Frozen",[2]="Chilled",[3]="Shocked",[4]="Ignited",[5]="Scorched",[6]="Brittle",[7]="Sapped"}},flags=0,keywordFlags=262144,name="Damage",type="INC",value=24}},nil} @@ -1377,8 +1378,7 @@ c["25% less Magnitude of Chill you inflict"]={{[1]={flags=0,keywordFlags=0,name= c["25% more Skill Speed while Off Hand is empty and you have"]={{[1]={[1]={type="Condition",var="OffHandAttack"},[2]={skillType=1,type="SkillType"},flags=0,keywordFlags=0,name="Speed",type="MORE",value=25},[2]={[1]={type="Condition",var="OffHandAttack"},[2]={skillType=1,type="SkillType"},flags=0,keywordFlags=0,name="WarcrySpeed",type="MORE",value=25}}," while is empty and you have "} c["25% more Skill Speed while Off Hand is empty and you have a One-Handed Martial Weapon equipped in your Main Hand"]={{[1]={[1]={type="Condition",var="OffHandAttack"},[2]={skillType=1,type="SkillType"},[3]={type="Condition",var="MainHandAttack"},[4]={skillType=1,type="SkillType"},flags=8192,keywordFlags=0,name="Speed",type="MORE",value=25},[2]={[1]={type="Condition",var="OffHandAttack"},[2]={skillType=1,type="SkillType"},[3]={type="Condition",var="MainHandAttack"},[4]={skillType=1,type="SkillType"},flags=8192,keywordFlags=0,name="WarcrySpeed",type="MORE",value=25}}," while is empty and you have a One-Handed Martial equipped in your "} c["25% of Armour also applies to Fire Damage taken from Hits"]={{[1]={flags=0,keywordFlags=0,name="ArmourAppliesToFireDamageTaken",type="BASE",value=25}},nil} -c["25% of Damage taken bypasses Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="DamageTaken",type="BASE",value=25}}," bypasses Energy Shield "} -c["25% of Damage taken bypasses Energy Shield Gain 30% of Maximum Life as Extra Maximum Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="DamageTakenGainAsEnergyShield",type="BASE",value=25}}," bypasses Energy Shield Gain 30% of Maximum Life "} +c["25% of Damage taken bypasses Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="PhysicalEnergyShieldBypass",type="OVERRIDE",value=25},[2]={flags=0,keywordFlags=0,name="LightningEnergyShieldBypass",type="OVERRIDE",value=25},[3]={flags=0,keywordFlags=0,name="ColdEnergyShieldBypass",type="OVERRIDE",value=25},[4]={flags=0,keywordFlags=0,name="FireEnergyShieldBypass",type="OVERRIDE",value=25},[5]={flags=0,keywordFlags=0,name="ChaosEnergyShieldBypass",type="OVERRIDE",value=25}},nil} c["25% of Life Loss from Hits is prevented, then that much Life is lost over 4 seconds instead"]={{[1]={flags=0,keywordFlags=0,name="LifeLossPrevented",type="BASE",value=25}},nil} c["25% of Spell Mana Cost Converted to Life Cost"]={{[1]={flags=2,keywordFlags=0,name="ManaCost",type="BASE",value=25}}," Converted to Life Cost "} c["25% reduced Attribute Requirements"]={{[1]={flags=0,keywordFlags=0,name="StrRequirement",type="INC",value=-25},[2]={flags=0,keywordFlags=0,name="DexRequirement",type="INC",value=-25},[3]={flags=0,keywordFlags=0,name="IntRequirement",type="INC",value=-25}},nil} diff --git a/src/Modules/CalcDefence.lua b/src/Modules/CalcDefence.lua index 840ff28b..6a672344 100644 --- a/src/Modules/CalcDefence.lua +++ b/src/Modules/CalcDefence.lua @@ -449,15 +449,17 @@ function calcs.reducePoolsByDamage(poolTable, damageTable, actor) end local esBypass = output[damageType.."EnergyShieldBypass"] or 0 if energyShield > 0 and (not modDB:Flag(nil, "EnergyShieldProtectsMana")) and (esBypass) < 100 then - local tempDamage = m_min(damageRemainder * (1 - esBypass / 100), energyShield) - energyShield = energyShield - tempDamage + local esDamageTypeMultiplier = damageType == "Chaos" and 2 or 1 + local tempDamage = m_min(damageRemainder * (1 - esBypass / 100), energyShield / esDamageTypeMultiplier) + energyShield = energyShield - tempDamage * esDamageTypeMultiplier damageRemainder = damageRemainder - tempDamage end if (output.sharedMindOverMatter + output[damageType.."MindOverMatter"]) > 0 then local MoMDamage = damageRemainder * m_min(output.sharedMindOverMatter + output[damageType.."MindOverMatter"], 100) / 100 if modDB:Flag(nil, "EnergyShieldProtectsMana") and energyShield > 0 and esBypass < 100 then - local tempDamage = m_min(MoMDamage * (1 - esBypass / 100), energyShield) - energyShield = energyShield - tempDamage + local esDamageTypeMultiplier = damageType == "Chaos" and 2 or 1 + local tempDamage = m_min(MoMDamage * (1 - esBypass / 100), energyShield / esDamageTypeMultiplier) + energyShield = energyShield - tempDamage * esDamageTypeMultiplier MoMDamage = MoMDamage - tempDamage local tempDamage2 = m_min(MoMDamage, mana) mana = mana - tempDamage2 @@ -2308,13 +2310,6 @@ function calcs.buildDefenceEstimations(env, actor) if output[damageType.."EnergyShieldBypass"] ~= 0 then output.AnyBypass = true end - if damageType == "Chaos" then - if not modDB:Flag(nil, "ChaosNotBypassEnergyShield") then - output[damageType.."EnergyShieldBypass"] = output[damageType.."EnergyShieldBypass"] + 100 - else - output.AnyBypass = true - end - end end output[damageType.."EnergyShieldBypass"] = m_max(m_min(output[damageType.."EnergyShieldBypass"], 100), 0) output.MinimumBypass = m_min(output.MinimumBypass, output[damageType.."EnergyShieldBypass"]) @@ -2546,13 +2541,14 @@ function calcs.buildDefenceEstimations(env, actor) if modDB:Flag(nil, "EnergyShieldProtectsMana") then manatext = manatext.." and non-bypassed Energy Shield" else + local chaosESMultiplier = damageType == "Chaos" and 2 or 1 if output[damageType.."EnergyShieldBypass"] > 0 then - local poolProtected = output.EnergyShieldRecoveryCap / (1 - output[damageType.."EnergyShieldBypass"] / 100) * (output[damageType.."EnergyShieldBypass"] / 100) + local poolProtected = output.EnergyShieldRecoveryCap / (1 - output[damageType.."EnergyShieldBypass"] / 100) * (output[damageType.."EnergyShieldBypass"] / 100 / chaosESMultiplier) output[damageType.."TotalPool"] = m_max(output[damageType.."TotalPool"] - poolProtected, 0) + m_min(output[damageType.."TotalPool"], poolProtected) / (output[damageType.."EnergyShieldBypass"] / 100) output[damageType.."TotalHitPool"] = m_max(output[damageType.."TotalHitPool"] - poolProtected, 0) + m_min(output[damageType.."TotalHitPool"], poolProtected) / (output[damageType.."EnergyShieldBypass"] / 100) else - output[damageType.."TotalPool"] = output[damageType.."TotalPool"] + output.EnergyShieldRecoveryCap - output[damageType.."TotalHitPool"] = output[damageType.."TotalHitPool"] + output.EnergyShieldRecoveryCap + output[damageType.."TotalPool"] = output[damageType.."TotalPool"] + output.EnergyShieldRecoveryCap / chaosESMultiplier + output[damageType.."TotalHitPool"] = output[damageType.."TotalHitPool"] + output.EnergyShieldRecoveryCap / chaosESMultiplier end end end diff --git a/src/Modules/ModParser.lua b/src/Modules/ModParser.lua index 5ab56133..be78edc9 100644 --- a/src/Modules/ModParser.lua +++ b/src/Modules/ModParser.lua @@ -2178,6 +2178,13 @@ local specialModList = { ["physical damage taken bypasses energy shield"] = { mod("PhysicalEnergyShieldBypass", "BASE", 100), }, + ["(%d+)%% of damage taken bypasses energy shield"] = function(num) return { + mod("PhysicalEnergyShieldBypass", "OVERRIDE", num), + mod("LightningEnergyShieldBypass", "OVERRIDE", num), + mod("ColdEnergyShieldBypass", "OVERRIDE", num), + mod("FireEnergyShieldBypass", "OVERRIDE", num), + mod("ChaosEnergyShieldBypass", "OVERRIDE", num), + } end, ["auras from your skills do not affect allies"] = { flag("SelfAuraSkillsCannotAffectAllies") }, ["auras from your skills have (%d+)%% more effect on you"] = function(num) return { mod("SkillAuraEffectOnSelf", "MORE", num) } end, ["auras from your skills have (%d+)%% increased effect on you"] = function(num) return { mod("SkillAuraEffectOnSelf", "INC", num) } end,