Skip to content

Commit

Permalink
Add support for new Uniques + fix parsing for changed mod names (#7016)
Browse files Browse the repository at this point in the history
* Update wording and mod parsing

Updates the wording + parsing for:
Bound Fate
Umbilicus Immortalis
Replica Infractem
Dead Reckoning
Storm Secret

* Update new Uniques with mod ranges

* Add parsing + support for some existing mods

* Add support for Nametaker

Adds parsing for the mods and adds a new stat for Enemy Power on enemies

* Add support for The Burden of Shadows

* Add support for The Adorned

---------

Co-authored-by: LocalIdentity <localidentity2@gmail.com>
  • Loading branch information
LocalIdentity and LocalIdentity authored Dec 12, 2023
1 parent e75a632 commit 5634e0f
Show file tree
Hide file tree
Showing 10 changed files with 95 additions and 63 deletions.
42 changes: 19 additions & 23 deletions src/Data/ModCache.lua

Large diffs are not rendered by default.

58 changes: 29 additions & 29 deletions src/Data/Uniques/Special/New.lua
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ Replica Covenant
Spidersilk Robe
League: Heist
Source: Steal from a unique{Curio Display} during a Grand Heist
Implicits: 0
Socketed Gems are Supported by Level 29 Added Cold Damage
+(20-30) to Intelligence
(210-250)% increased Energy Shield
Expand All @@ -25,9 +24,9 @@ Requires Level: 60
Implicits: 1
{tags:jewellery_attribute}+(16-24) to Dexterity and Intelligence
Your Maximum Endurance Charges is equal to your Maximum Frenzy Charges
+1 to Maximum Fortification per Endurance Charge
(7-10)% increased Cooldown Recovery of Travel Skills per Frenzy Charge
(20-25)% chance to lose a Frenzy Charge when you use a Travel Skill
(7-10)% increased Cooldown Recovery of Travel Skills per Frenzy Charge
+1 to Maximum Fortification per Endurance Charge
(20-25)% chance to lose an Endurance Charge when you gain Fortification
]],[[
Ixchel's Temptation
Expand All @@ -36,35 +35,36 @@ League: Affliction
Requires Level 20
Implicits: 1
(6-15)% increased Rarity of Items found
{tags:jewellery_attribute}+(13-13) to all Attributes
{tags:attack,chaos_damage}Adds (9-9) to (18-18) Chaos Damage to Attacks
{tags:caster,jewellery_elemental}Adds (10-10) to (20-20) Fire Damage to Spells
{tags:critical}+(17-17)% to Global Critical Strike Multiplier
{tags:jewellery_defense}+(86-86) to Armour
{tags:jewellery_defense}+(93-93) to Evasion Rating
{tags:jewellery_defense}+(34-34) to maximum Energy Shield
{tags:life}+(26-26) to maximum Life
{tags:jewellery_resistance}+(10-10)% to all Elemental Resistances
{tags:attack,caster,speed}(6-6)% increased Attack and Cast Speed
{tags:jewellery_attribute}+(10-15) to all Attributes
{tags:attack,chaos_damage}Adds (7-10) to (15-18) Chaos Damage to Attacks
{tags:caster,jewellery_elemental}Adds (9-12) to (19-22) Fire Damage to Spells
{tags:jewellery_defense}+(80-100) to Armour
{tags:jewellery_defense}+(80-100) to Evasion Rating
{tags:jewellery_defense}+(30-35) to maximum Energy Shield
{tags:life}+(25-30) to maximum Life
{tags:critical}+(15-20)% to Global Critical Strike Multiplier
{tags:mana}+(20-25) to maximum Mana
{tags:jewellery_resistance}+(8-10)% to all Elemental Resistances
{tags:attack,caster,speed}(6-8)% increased Attack and Cast Speed
Maximum Quality is 200%
Corrupted
]],[[
Gamblesprint
Hydrascale Boots
League: Affliction
Requires Level 59, 56 Str, 56 Dex
+(34-34) to Dexterity
(140-140)% increased Armour and Evasion
+(31-31)% to Lightning Resistance
+(30-40) to Dexterity
(100-150)% increased Armour and Evasion
+(20-40)% to Lightning Resistance
When Hit, gain a random Movement Speed modifier from 40% reduced to 100% increased until Hit again
]],[[
Pragmatism
Colosseum Plate
League: Affliction
Implicits: 0
Requires Level 49, 134 Str
+12 to Level of Socketed Skill Gems
(100-100)% increased Armour
+(84-84) to maximum Mana
(80-120)% increased Armour
+(60-100) to maximum Mana
-2 to Level of Socketed Skill Gems per Socketed Gem
]],[[
The Untouched Soul
Expand All @@ -73,16 +73,16 @@ League: Affliction
Requires Level 48
Implicits: 1
(12-20)% increased Rarity of Items found
+40 to maximum Life for each Empty Red Socket on any Equipped Item
+225 to Accuracy Rating for each Empty Green Socket on any Equipped Item
+40 to maximum Mana for each Empty Blue Socket on any Equipped Item
+18% to all Elemental Resistances for each Empty White Socket on any Equipped Item
{tags:life}+40 to maximum Life for each Empty Red Socket on any Equipped Item
{tags:attack}+225 to Accuracy Rating for each Empty Green Socket on any Equipped Item
{tags:mana}+40 to maximum Mana for each Empty Blue Socket on any Equipped Item
{tags:jewellery_resistance}+18% to all Elemental Resistances for each Empty White Socket on any Equipped Item
]],[[
The Trickster's Smile
Visored Sallet
League: Affliction
Implicits: 0
(75-75)% increased Armour and Evasion
Requires Level 23, 28 Str, 28 Dex
(60-100)% increased Armour and Evasion
Reflects 100 Cold Damage to Melee Attackers
Reflects 100 Fire Damage to Melee Attackers
Reflects 100 Lightning Damage to Melee Attackers
Expand Down Expand Up @@ -162,10 +162,10 @@ Replica Hinekora's Sight
Onyx Amulet
League: Heist
Source: Steal from a unique{Curio Display} during a Grand Heist
+(10–16) to all Attributes
+(600–1000) to Accuracy Rating
+(600–1000) to Armour
+1% to all maximum Elemental Resistances
{tags:jewellery_attribute}+(10–16) to all Attributes
{tags:attack}+(600–1000) to Accuracy Rating
{tags:jewellery_defense}+(600–1000) to Armour
{tags:jewellery_resistance}+1% to all maximum Elemental Resistances
You cannot be Maimed
]],[[
Replica Hyrri's Ire
Expand Down
4 changes: 2 additions & 2 deletions src/Data/Uniques/belt.lua
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ Implicits: 1
{tags:life}+(60-80) to Maximum Life
Every 5 seconds, gain one of the following for 5 seconds:
Your Hits are always Critical Strikes
Hits against you always are Critical Strikes
Hits against you are always Critical Strikes
Attacks cannot Hit you
Attacks against you always Hit
Your Damage with Hits is Lucky
Expand Down Expand Up @@ -878,7 +878,7 @@ Implicits: 1
{tags:life}(8-12)% increased maximum Life
{tags:life}Regenerate 2% of Life per second
Flasks do not apply to you
Flasks apply to your Raised Zombies and Spectres
Flasks you Use apply to your Raised Zombies and Spectres
]],[[
Wurm's Molt
Leather Belt
Expand Down
2 changes: 1 addition & 1 deletion src/Data/Uniques/bow.lua
Original file line number Diff line number Diff line change
Expand Up @@ -316,7 +316,7 @@ Adds (25-35) to (36-45) Physical Damage
+(350-400) to Accuracy Rating
Cannot Leech Mana
Projectiles from Attacks Fork
Projectiles from Attacks Fork an additional time
Projectiles from Attacks can Fork 1 additional time
]],[[
Iron Commander
Death Bow
Expand Down
2 changes: 1 addition & 1 deletion src/Data/Uniques/jewel.lua
Original file line number Diff line number Diff line change
Expand Up @@ -860,7 +860,7 @@ Radius: Medium
{variant:1}With at least 40 Intelligence in Radius, can summon up to 3 Skeleton Mages with Summon Skeletons
{variant:2}With at least 40 Intelligence in Radius, can summon up to 5 Skeleton Mages with Summon Skeletons
{variant:3}With at least 40 Intelligence in Radius, can summon up to 15 Skeleton Mages with Summon Skeletons
{variant:4}Summoned Skeletons gain Added Chaos Damage equal to (20-30)% of Maximum Energy Shield on your Equipped Shield
{variant:4}Skeletons gain Added Chaos Damage equal to (20-30)% of Maximum Energy Shield on your Equipped Shield
]],[[
Fight for Survival
Viridian Jewel
Expand Down
2 changes: 1 addition & 1 deletion src/Data/Uniques/ring.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1073,7 +1073,7 @@ Implicits: 1
{tags:jewellery_elemental}(20-30)% increased Lightning Damage
(10-15)% chance to Shock
Herald of Thunder also creates a storm when you Shock an Enemy
Herald of Thunder's Storms Hit Enemies with (30-50)% increased Frequency
Storms Hit Enemies with (30-50)% increased Frequency
{tags:jewellery_elemental}Take 250 Lightning Damage when Herald of Thunder Hits an Enemy
]],[[
The Taming
Expand Down
6 changes: 5 additions & 1 deletion src/Modules/CalcDefence.lua
Original file line number Diff line number Diff line change
Expand Up @@ -784,6 +784,10 @@ function calcs.defence(env, actor)
output.EvadeChance = 0
output.MeleeEvadeChance = 0
output.ProjectileEvadeChance = 0
elseif modDB:Flag(nil, "AlwaysEvade") then
output.EvadeChance = 100
output.MeleeEvadeChance = 100
output.ProjectileEvadeChance = 100
else
local enemyAccuracy = round(calcLib.val(enemyDB, "Accuracy"))
local evadeChance = modDB:Sum("BASE", nil, "EvadeChance")
Expand Down Expand Up @@ -1311,7 +1315,7 @@ function calcs.buildDefenceEstimations(env, actor)
},
}
end
local enemyCritChance = enemyDB:Flag(nil, "NeverCrit") and 0 or (m_max(m_min((modDB:Override(nil, "enemyCritChance") or env.configInput["enemyCritChance"] or env.configPlaceholder["enemyCritChance"] or 0) * (1 + modDB:Sum("INC", nil, "EnemyCritChance") / 100 + enemyDB:Sum("INC", nil, "CritChance") / 100) * (1 - output["ConfiguredEvadeChance"] / 100), 100), 0))
local enemyCritChance = enemyDB:Flag(nil, "NeverCrit") and 0 or enemyDB:Flag(nil, "AlwaysCrit") and 100 or (m_max(m_min((modDB:Override(nil, "enemyCritChance") or env.configInput["enemyCritChance"] or env.configPlaceholder["enemyCritChance"] or 0) * (1 + modDB:Sum("INC", nil, "EnemyCritChance") / 100 + enemyDB:Sum("INC", nil, "CritChance") / 100) * (1 - output["ConfiguredEvadeChance"] / 100), 100), 0))
local enemyCritDamage = m_max((env.configInput["enemyCritDamage"] or env.configPlaceholder["enemyCritDamage"] or 0) + enemyDB:Sum("BASE", nil, "CritMultiplier"), 0)
output["EnemyCritEffect"] = 1 + enemyCritChance / 100 * (enemyCritDamage / 100) * (1 - output.CritExtraDamageReduction / 100)
local enemyCfg = {keywordFlags = bit.bnot(KeywordFlag.MatchAll)} -- Match all keywordFlags parameter for enemy min-max damage mods
Expand Down
6 changes: 6 additions & 0 deletions src/Modules/CalcSetup.lua
Original file line number Diff line number Diff line change
Expand Up @@ -645,6 +645,9 @@ function calcs.initEnv(build, mode, override, specEnv)
if item.jewelData then
item.jewelData.limitDisabled = nil
end
if item and item.type == "Jewel" and item.name:match("The Adorned, Crimson Jewel") then
env.modDB.multipliers["CorruptedMagicJewelEffect"] = item.jewelData.corruptedMagicJewelIncEffectFromNonClusterSocket / 100
end
if item.limit and not env.configInput.ignoreJewelLimits then
local limitKey = item.base.subType == "Timeless" and "Historic" or item.title
if jewelLimits[limitKey] and jewelLimits[limitKey] >= item.limit then
Expand Down Expand Up @@ -945,6 +948,9 @@ function calcs.initEnv(build, mode, override, specEnv)
combinedList:MergeMod(mod)
end
env.itemModDB:ScaleAddList(combinedList, scale)
elseif item.type == "Jewel" and item.rarity == "MAGIC" and item.corrupted and env.modDB.multipliers["CorruptedMagicJewelEffect"] and not (item.base.subType == "Charm" or env.build.spec.nodes[tonumber(slot.nodeId)].expansionJewel) then
scale = scale + env.modDB.multipliers["CorruptedMagicJewelEffect"]
env.itemModDB:ScaleAddList(srcList, scale)
else
env.itemModDB:ScaleAddList(srcList, scale)
end
Expand Down
3 changes: 3 additions & 0 deletions src/Modules/ConfigOptions.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1725,6 +1725,7 @@ Huge sets the radius to 11.
enemyModList:NewMod("Condition:RareOrUnique", "FLAG", true, "Config", { type = "Condition", var = "Effective" })
enemyModList:NewMod("AilmentThreshold", "MORE", 488, "Boss")
modList:NewMod("WarcryPower", "BASE", 20, "Boss")
modList:NewMod("Multiplier:EnemyPower", "BASE", 20, "Boss")

local defaultEleResist = 40
build.configTab.varControls['enemyLightningResist']:SetPlaceholder(defaultEleResist, true)
Expand Down Expand Up @@ -1759,6 +1760,7 @@ Huge sets the radius to 11.
enemyModList:NewMod("Condition:PinnacleBoss", "FLAG", true, "Config", { type = "Condition", var = "Effective" })
enemyModList:NewMod("AilmentThreshold", "MORE", 404, "Boss")
modList:NewMod("WarcryPower", "BASE", 20, "Boss")
modList:NewMod("Multiplier:EnemyPower", "BASE", 20, "Boss")

local defaultEleResist = 50
build.configTab.varControls['enemyLightningResist']:SetPlaceholder(defaultEleResist, true)
Expand Down Expand Up @@ -1792,6 +1794,7 @@ Huge sets the radius to 11.
enemyModList:NewMod("DamageTaken", "MORE", -70, "Boss")
enemyModList:NewMod("AilmentThreshold", "MORE", 404, "Boss")
modList:NewMod("WarcryPower", "BASE", 20, "Boss")
modList:NewMod("Multiplier:EnemyPower", "BASE", 20, "Boss")

local defaultEleResist = 50
build.configTab.varControls['enemyLightningResist']:SetPlaceholder(defaultEleResist, true)
Expand Down
Loading

0 comments on commit 5634e0f

Please sign in to comment.