Skip to content

Commit 592a89c

Browse files
authored
Add support for multiple Foulborn Uniques (#9265)
* add support for multiple foulborn uniques * wrong impl for Voll's Vision * whitespace * add choir of the storm
1 parent dd2816f commit 592a89c

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

src/Modules/ModParser.lua

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1806,6 +1806,7 @@ local modTagList = {
18061806
["if you've shattered an enemy recently"] = { tag = { type = "Condition", var = "ShatteredEnemyRecently" } },
18071807
-- Enemy status conditions
18081808
["at close range"] = { tag = { type = "Condition", var = "AtCloseRange" } },
1809+
["not at close range"] = { tag = { type = "Condition", var = "AtCloseRange", neg = true } },
18091810
["against rare and unique enemies"] = { tag = { type = "ActorCondition", actor = "enemy", var = "RareOrUnique" } },
18101811
["by s?l?a?i?n? rare [ao][nr]d? unique enemies"] = { tag = { type = "ActorCondition", actor = "enemy", var = "RareOrUnique" } },
18111812
["against unique enemies"] = { tag = { type = "ActorCondition", actor = "enemy", var = "RareOrUnique" } },
@@ -2051,6 +2052,7 @@ local specialModList = {
20512052
["dexterity provides no inherent bonus to evasion rating"] = { flag("NoDexBonusToEvasion") },
20522053
["strength's damage bonus applies to all spell damage as well"] = { flag("IronWill") },
20532054
["your hits can't be evaded"] = { flag("CannotBeEvaded") },
2055+
["your melee hits can't be evaded while wielding a sword"] = { flag("CannotBeEvaded", nil, bor(ModFlag.Melee, ModFlag.Hit), { type = "Condition", var = "UsingSword" }) },
20542056
["minion hits can't be evaded"] = { mod("MinionModifier", "LIST", { mod = flag("CannotBeEvaded") }) },
20552057
["never deal critical strikes"] = { flag("NeverCrit"), flag("Condition:NeverCrit") },
20562058
["minions never deal critical strikes"] = { mod("MinionModifier", "LIST", { mod = flag("NeverCrit") }), mod("MinionModifier", "LIST", { mod = flag("Condition:NeverCrit") }) },
@@ -3004,6 +3006,7 @@ local specialModList = {
30043006
["%+(%d+)%% to lightning resistance when socketed with a blue gem"] = function(num) return { mod("SocketProperty", "LIST", { value = mod("LightningResist", "BASE", num) }, { type = "SocketedIn", slotName = "{SlotName}", keyword = "intelligence", sockets = {1} }) } end,
30053007
--Doomsower, Lion Sword
30063008
["attack skills gain (%d+)%% of physical damage as extra fire damage per socketed red gem"] = function(num) return { mod("SocketProperty", "LIST", { value = mod("PhysicalDamageGainAsFire", "BASE", num, nil, ModFlag.Attack) }, { type = "SocketedIn", slotName = "{SlotName}", keyword = "strength", sockets = {1,2,3,4,5,6} }) } end,
3009+
["(%d+)%% of damage taken recouped as life per socketed red gem"] = function(num) return { mod("SocketProperty", "LIST", { value = mod("LifeRecoup", "BASE", num) }, { type = "SocketedIn", slotName = "{SlotName}", keyword = "strength", sockets = {1,2,3,4,5,6} }) } end,
30073010
["you have vaal pact while all socketed gems are red"] = { mod("GroupProperty", "LIST", { value = mod("Keystone", "LIST", "Vaal Pact") }, { type = "SocketedIn", slotName = "{SlotName}", socketColor = "R", sockets = "all" }) },
30083011
-- Mahuxotl's Machination Steel Kite Shield
30093012
["everlasting sacrifice"] = {
@@ -3627,6 +3630,9 @@ local specialModList = {
36273630
["prevent %+(%d+)%% of suppressed spell damage per hit suppressed recently"] = function(num) return {
36283631
mod("SpellSuppressionEffect", "BASE", num, { type = "Multiplier", var = "HitsSuppressedRecently" })
36293632
} end,
3633+
["prevent %+(%d+)%% of suppressed spell damage if you have not suppressed spell damage recently"] = function(num) return {
3634+
mod("SpellSuppressionEffect", "BASE", num, { type = "Condition", var = "SuppressedRecently", neg = true })
3635+
} end,
36303636
["inflict fire, cold and lightning exposure on enemies when you suppress their spell damage"] = {
36313637
mod("EnemyModifier", "LIST", { mod = mod("FireExposure", "BASE", -10) }, { type = "Condition", var = "Effective" }, { type = "Condition", var = "SuppressedRecently" }),
36323638
mod("EnemyModifier", "LIST", { mod = mod("ColdExposure", "BASE", -10) }, { type = "Condition", var = "Effective" }, { type = "Condition", var = "SuppressedRecently" }),
@@ -4457,6 +4463,7 @@ local specialModList = {
44574463
["armour is increased by uncapped fire resistance"] = { flag( "ArmourIncreasedByUncappedFireRes") },
44584464
["armour is increased by overcapped fire resistance"] = { flag( "ArmourIncreasedByOvercappedFireRes") },
44594465
["minion life is increased by t?h?e?i?r? ?overcapped fire resistance"] = { mod("MinionModifier", "LIST", { mod = mod("Life", "INC", 1, { type = "PerStat", stat = "FireResistOverCap", div = 1 }) }) },
4466+
["totem life is increased by t?h?e?i?r? ?overcapped fire resistance"] = { mod("TotemLife", "INC", 1, { type = "PerStat", stat = "TotemFireResistOverCap", div = 1 }) },
44604467
["evasion rating is increased by uncapped cold resistance"] = { flag( "EvasionRatingIncreasedByUncappedColdRes") },
44614468
["evasion rating is increased by overcapped cold resistance"] = { flag( "EvasionRatingIncreasedByOvercappedColdRes") },
44624469
["reflects (%d+) physical damage to melee attackers"] = { },
@@ -4939,6 +4946,7 @@ local specialModList = {
49394946
flag("DisableSkill", { type = "SkillType", skillType = SkillType.Spell }),
49404947
flag("ForceEnableCurseApplication")
49414948
},
4949+
["your warcries are disabled"] = { flag("DisableSkill", { type = "SkillType", skillType = SkillType.Warcry }) },
49424950
["your travel skills are disabled"] = { flag("DisableSkill", { type = "SkillType", skillType = SkillType.Travel }) },
49434951
["aura skills other than ([%a%s]+) are disabled"] = function(_, name) return {
49444952
flag("DisableSkill", { type = "SkillType", skillType = SkillType.Aura }, { type = "SkillType", skillType = SkillType.RemoteMined, neg = true }),
@@ -5411,6 +5419,14 @@ local specialModList = {
54115419
["nearby allies have (%d+)%% chance to block attack damage per (%d+) strength you have"] = function(block, _, str) return {
54125420
mod("ExtraAura", "LIST", { onlyAllies = true, mod = mod("BlockChance", "BASE", block) }, { type = "PerStat", stat = "Str", div = tonumber(str) }),
54135421
} end,
5422+
["physical skills have (%d+)%% increased duration per (%d+) intelligence"] = function(num1, _, num2)
5423+
return { mod("Duration", "INC", num1, nil, nil, KeywordFlag.Physical, { type = "PerStat", stat = "Int", div = tonumber(num2) }) }
5424+
end,
5425+
["y?o?u?r? ?maximum energy shield is equal to (%d+)%% of y?o?u?r? ?maximum life"] = function(num)
5426+
return { mod("EnergyShield", "OVERRIDE", 1, { type = "PercentStat", stat = "Life", percent = num }) }
5427+
end,
5428+
["immun[ei]t?y? to elemental ailments while bleeding"] = { flag("ElementalAilmentImmune", { type = "Condition", var = "Bleeding" }) },
5429+
["mana is increased by (%d+)%% of overcapped lightning resistance"] = function(num) return { mod("Mana", "INC", num/100, { type = "PerStat", stat = "LightningResistOverCap" }) } end,
54145430
}
54155431
for _, name in pairs(data.keystones) do
54165432
specialModList[name:lower()] = { mod("Keystone", "LIST", name) }

0 commit comments

Comments
 (0)