You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Add support for "against enemies with fully broken armour"
* start to implement "CanBreakArmour" as pre-requisite for fully broken armour
* Make "ArmourBroken" affect physical damage reduction
* Rename "ArmourBroken" to "ArmourFullyBroken" for clarity
* Include Override check in enemyArmour calculation of CalcOffence
* Add "Armour" to Calcs section breakdown for effective DPS
* Update modCache
* Add support for partially broken armour
* Let more nodes / gems enable armour break
* Make "CanBreakArmour" global effect
* Rename "CanBreakArmour" condition to "CanArmourBreak" for consistency with existing naming on Devastate Support in sup:_str
* Improve config tooltip for armour break options
---------
Co-authored-by: majochem <majochem@users.noreply.github.com>
Co-authored-by: LocalIdentity <31035929+LocalIdentity@users.noreply.github.com>
Copy file name to clipboardExpand all lines: src/Data/ModCache.lua
+4-4Lines changed: 4 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -1249,7 +1249,7 @@ c["20% increased Critical Hit Chance if you have Killed Recently"]={{[1]={[1]={t
1249
1249
c["20% 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=20}},nil}
c["20% increased Damage against Dazed Enemies"]={{[1]={flags=0,keywordFlags=0,name="Damage",type="INC",value=20}}," against Dazed Enemies "}
1252
-
c["20% increased Damage against Enemies with Fully Broken Armour"]={{[1]={flags=0,keywordFlags=0,name="Damage",type="INC",value=20}}," against Enemies with Fully Broken Armour "}
1252
+
c["20% increased Damage against Enemies with Fully Broken Armour"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="ArmourFullyBroken"},flags=0,keywordFlags=0,name="Damage",type="INC",value=20}},nil}
1253
1253
c["20% increased Damage for each different Warcry you've used Recently"]={{[1]={flags=0,keywordFlags=4,name="Damage",type="INC",value=20}}," for each different you've used Recently "}
1254
1254
c["20% increased Damage if you've dealt a Critical Hit Recently"]={{[1]={[1]={type="Condition",var="CritRecently"},flags=0,keywordFlags=0,name="Damage",type="INC",value=20}},nil}
1255
1255
c["20% 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=20}},nil}
@@ -2090,7 +2090,7 @@ c["60% increased Armour from Equipped Body Armour"]={{[1]={[1]={slotName="Body A
2090
2090
c["60% increased Armour, Evasion and Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="Defences",type="INC",value=60}},nil}
c["60% increased Damage against Enemies with Fully Broken Armour"]={{[1]={flags=0,keywordFlags=0,name="Damage",type="INC",value=60}}," against Enemies with Fully Broken Armour "}
2093
+
c["60% increased Damage against Enemies with Fully Broken Armour"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="ArmourFullyBroken"},flags=0,keywordFlags=0,name="Damage",type="INC",value=60}},nil}
2094
2094
c["60% increased Damage with Hits against Enemies that are on Low Life"]={{[1]={[1]={actor="enemy",type="ActorCondition",var="LowLife"},flags=0,keywordFlags=262144,name="Damage",type="INC",value=60}},nil}
2095
2095
c["60% increased Effect of Poison you inflict on targets that are not Poisoned"]={{[1]={flags=0,keywordFlags=0,name="LocalEffect",type="INC",value=60}}," of Poison you inflict on targets that are not Poisoned "}
2096
2096
c["60% increased Energy Shield"]={{[1]={flags=0,keywordFlags=0,name="EnergyShield",type="INC",value=60}},nil}
@@ -2400,10 +2400,10 @@ c["Break 30% increased Armour on enemies affected by Ailments +10 to Strength"]=
2400
2400
c["Break 30% increased Armour on enemies affected by Ailments +10 to Strength 25% increased Physical Damage"]={nil,"Break 30% increased Armour on enemies affected by Ailments +10 to Strength 25% increased Physical Damage "}
c["Break 50% of Armour on Heavy Stunning an Enemy"]={nil,"Break 50% of Armour on Heavy Stunning an Enemy "}
2403
+
c["Break 50% of Armour on Heavy Stunning an Enemy"]={{[1]={[1]={effectName="ArmourBreak",effectType="Buff",type="GlobalEffect"},flags=0,keywordFlags=0,name="Condition:CanArmourBreak",type="FLAG",value=true}},nil}
c["Break 60% increased Armour 10% chance to Defend with 200% of Armour"]={nil,"Break 60% increased Armour 10% chance to Defend with 200% of Armour "}
2406
-
c["Break Armour equal to 10% of Hit Damage dealt"]={nil,"Break Armour equal to 10% of Hit Damage dealt "}
2406
+
c["Break Armour equal to 10% of Hit Damage dealt"]={{[1]={[1]={effectName="ArmourBreak",effectType="Buff",type="GlobalEffect"},flags=0,keywordFlags=0,name="Condition:CanArmourBreak",type="FLAG",value=true}},nil}
2407
2407
c["Break Armour on Critical Hit with Spells equal to 10% of Physical Damage dealt"]={nil,"Break Armour on Critical Hit with Spells equal to 10% of Physical Damage dealt "}
2408
2408
c["Break Armour on Critical Hit with Spells equal to 10% of Physical Damage dealt 10% chance to inflict Bleeding on Hit"]={nil,"Break Armour on Critical Hit with Spells equal to 10% of Physical Damage dealt 10% chance to inflict Bleeding on Hit "}
2409
2409
c["Break Armour on Critical Hit with Spells equal to 10% of Physical Damage dealt 10% chance to inflict Bleeding on Hit 20% increased Physical Damage"]={nil,"Break Armour on Critical Hit with Spells equal to 10% of Physical Damage dealt 10% chance to inflict Bleeding on Hit 20% increased Physical Damage "}
localignoreEnemyArmour=calcLib.val(enemyDB, "IgnoreArmour") -- check for mods that ignore Armour
3199
3199
ifignoreEnemyArmourand (enemyArmour>0) thenenemyArmour=m_max(enemyArmour-ignoreEnemyArmour, 0) end-- subtract ignored value up to zero, if Armour is still positive (to allow future support of negative Armour)
{ var="conditionEnemyArmourBroken", type="check", label="Is enemy Armour Broken?", ifFlag="Condition:CanArmourBreak", tooltip="Some Skills, Items, Support Gems and other effects can Break Armour, which lowers a target's Armour by a specified amount.\nIf this brings the target's Armour value to 0, their Armour is Fully Broken for 12 seconds.", apply=function(val, modList, enemyModList)
{ var="multiplierArmourBreak", type="count", label="# of Broken Armour (if not maximum):", ifOption="conditionEnemyArmourBroken", tooltip="Use this field to set a custom Armour Break value.\nIf left empty or set to 0, Fully Broken Armour will be assumed.\nArmour cannot be broken below zero by default.", apply=function(val, modList, enemyModList)
1467
+
enemyModList:NewMod("Condition:ArmourBroken", "FLAG", val>0, "Config", { type="Condition", var="Effective" }) -- only activate if value > 0 is entered
1468
+
enemyModList:ReplaceMod("Condition:ArmourFullyBroken", "FLAG", val<1, "Config", { type="Condition", var="Effective" }) -- disable FullyBrokenArmour if value >= 1 is entered
{ var="conditionEnemyCursed", type="check", label="Is the enemy Cursed?", ifEnemyCond="Cursed", tooltip="The enemy will automatically be considered to be Cursed if you have at least one curse enabled,\nbut you can use this option to force it if necessary.", apply=function(val, modList, enemyModList)
Copy file name to clipboardExpand all lines: src/Modules/ModParser.lua
+4Lines changed: 4 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -1823,6 +1823,7 @@ local modTagList = {
1823
1823
["against cursed enemies"] = { tag = { type = "ActorCondition", actor = "enemy", var = "Cursed" } },
1824
1824
["against stunned enemies"] = { tag = { type = "ActorCondition", actor = "enemy", var = "Stunned" } },
1825
1825
["against heavy stunned enemies"] = { tag = { type = "ActorCondition", actor = "enemy", var = "HeavyStunned" } },
1826
+
["against enemies with fully broken armour"] = { tag = { type = "ActorCondition", actor = "enemy", var = "ArmourFullyBroken" } },
1826
1827
["against immobilised enemies"] = { tag = { type = "ActorCondition", actor = "enemy", var = "Immobilised" } },
1827
1828
["on cursed enemies"] = { tag = { type = "ActorCondition", actor = "enemy", var = "Cursed" } },
1828
1829
["of cursed enemies'"] = { tag = { type = "ActorCondition", actor = "enemy", var = "Cursed" } },
@@ -2820,6 +2821,8 @@ local specialModList = {
2820
2821
["you are unaffected by bleeding while leeching"] = { mod("SelfBleedEffect", "MORE", -100, { type = "Condition", var = "Leeching" }) },
2821
2822
-- Warrior - Titan
2822
2823
["(%d+)%% increased effect of small passive skills"] = function(num) return { mod("SmallPassiveSkillEffect", "INC", num) } end,
2824
+
-- Warrior - Warbringer
2825
+
["break armour equal to (%d+)%% of hit damage dealt"] = { flag("Condition:CanArmourBreak", { type = "GlobalEffect", effectType = "Buff", effectName = "ArmourBreak" })}, -- 'Anvil's Weight'
2823
2826
-- Trickster
2824
2827
["(%d+)%% chance to gain (%d+)%% of non%-chaos damage with hits as extra chaos damage"] = function(num, _, perc) return { mod("NonChaosDamageGainAsChaos", "BASE", num / 100 * tonumber(perc)) } end,
["your damage with hits is lucky"] = { flag("LuckyHits") },
3626
3629
["chaos damage with hits is lucky"] = { flag("ChaosLuckyHits") },
3627
3630
["elemental damage with hits is lucky while you are shocked"] = { flag("ElementalLuckHits", { type = "Condition", var = "Shocked" }) },
3631
+
["break (%d+)%% of armour on heavy stunning an enemy"] = { flag("Condition:CanArmourBreak", { type = "GlobalEffect", effectType = "Buff", effectName = "ArmourBreak" }) },
3628
3632
["allies' aura buffs do not affect you"] = { flag("AlliesAurasCannotAffectSelf") },
3629
3633
["(%d+)%% increased effect of non%-curse auras from your skills on enemies"] = function(num) return {
0 commit comments