From c9479d1c409057fc99dbc75a30f049a3458afdcb Mon Sep 17 00:00:00 2001 From: Regisle Date: Thu, 8 Aug 2024 12:09:15 +0930 Subject: [PATCH 01/10] make local tincture effect multiplicative --- src/Classes/ItemsTab.lua | 2 +- src/Modules/CalcPerform.lua | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Classes/ItemsTab.lua b/src/Classes/ItemsTab.lua index fdc24f5406..34dd0d22d0 100644 --- a/src/Classes/ItemsTab.lua +++ b/src/Classes/ItemsTab.lua @@ -3649,7 +3649,7 @@ function ItemsTabClass:AddItemTooltip(tooltip, item, slot, dbMode) if item.rarity == "MAGIC" then effectInc = effectInc + modDB:Sum("INC", { actor = "player" }, "MagicTinctureEffect") end - local effectMod = (1 + (tinctureData.effectInc + effectInc) / 100) * (1 + (item.quality or 0) / 100) + local effectMod = (1 + (effectInc) / 100) * (1 + (tinctureData.effectInc) / 100) * (1 + (item.quality or 0) / 100) if effectMod ~= 1 then t_insert(stats, s_format("^8Tincture effect modifier: ^7%+d%%", effectMod * 100 - 100)) end diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index 50abfb1cf1..819474ed7b 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -1449,11 +1449,11 @@ function calcs.perform(env, skipEHP) local tinctureBuffsPerBase = {} local function calcTinctureMods(item, baseName, buffModList, modList) - local tinctureEffectInc = effectInc + item.tinctureData.effectInc + local tinctureEffectInc = effectInc if item.rarity == "MAGIC" then tinctureEffectInc = tinctureEffectInc + effectIncMagic end - local effectMod = (1 + (tinctureEffectInc) / 100) * (1 + (item.quality or 0) / 100) + local effectMod = (1 + (tinctureEffectInc) / 100) * (1 + (item.tinctureData.effectInc) / 100) * (1 + (item.quality or 0) / 100) -- same deal as flasks, go look at the comment there if buffModList[1] then From 6d4680c49e9165b6fce175c409657ecf6fe9f935 Mon Sep 17 00:00:00 2001 From: Regisle Date: Thu, 8 Aug 2024 13:26:36 +0930 Subject: [PATCH 02/10] WIP scale explicits --- src/Classes/Item.lua | 3 +++ src/Classes/ItemsTab.lua | 2 +- src/Modules/CalcPerform.lua | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Classes/Item.lua b/src/Classes/Item.lua index 7897b9cca0..bf3ef55c91 100644 --- a/src/Classes/Item.lua +++ b/src/Classes/Item.lua @@ -1178,6 +1178,9 @@ function ItemClass:Craft() end self.requirements.level = m_max(self.requirements.level or 0, m_floor(mod.level * 0.8)) local rangeScalar = getCatalystScalar(self.catalyst, mod.modTags, self.catalystQuality) + if self.base.tincture and mod.type ~= "Prefix" then + rangeScalar = rangeScalar * (1 + (self.tinctureData.effectInc or 0) / 100) * (1 + (self.quality or 0) / 100) + end for i, line in ipairs(mod) do line = itemLib.applyRange(line, affix.range or 0.5, rangeScalar) local order = mod.statOrder[i] diff --git a/src/Classes/ItemsTab.lua b/src/Classes/ItemsTab.lua index 34dd0d22d0..d39405a0fd 100644 --- a/src/Classes/ItemsTab.lua +++ b/src/Classes/ItemsTab.lua @@ -3649,7 +3649,7 @@ function ItemsTabClass:AddItemTooltip(tooltip, item, slot, dbMode) if item.rarity == "MAGIC" then effectInc = effectInc + modDB:Sum("INC", { actor = "player" }, "MagicTinctureEffect") end - local effectMod = (1 + (effectInc) / 100) * (1 + (tinctureData.effectInc) / 100) * (1 + (item.quality or 0) / 100) + local effectMod = (1 + (effectInc) / 100) if effectMod ~= 1 then t_insert(stats, s_format("^8Tincture effect modifier: ^7%+d%%", effectMod * 100 - 100)) end diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index 819474ed7b..f87c5e8833 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -1453,7 +1453,7 @@ function calcs.perform(env, skipEHP) if item.rarity == "MAGIC" then tinctureEffectInc = tinctureEffectInc + effectIncMagic end - local effectMod = (1 + (tinctureEffectInc) / 100) * (1 + (item.tinctureData.effectInc) / 100) * (1 + (item.quality or 0) / 100) + local effectMod = (1 + (tinctureEffectInc) / 100) -- same deal as flasks, go look at the comment there if buffModList[1] then From 8c474ba2aea6416de34cb0d0a37c7869455a0d31 Mon Sep 17 00:00:00 2001 From: Regisle Date: Fri, 9 Aug 2024 14:33:14 +0930 Subject: [PATCH 03/10] change catalyst scalar into generic range scalar function --- src/Classes/Item.lua | 39 ++++++--- src/Data/Bases/tincture.lua | 18 ++--- src/Data/ModTincture.lua | 132 +++++++++++++++---------------- src/Data/Uniques/Special/New.lua | 32 ++++---- 4 files changed, 117 insertions(+), 104 deletions(-) diff --git a/src/Classes/Item.lua b/src/Classes/Item.lua index bf3ef55c91..8df48284d6 100644 --- a/src/Classes/Item.lua +++ b/src/Classes/Item.lua @@ -25,13 +25,29 @@ local catalystTags = { { "critical" }, } -local function getCatalystScalar(catalystId, tags, quality) - if not catalystId or type(catalystId) ~= "number" or not catalystTags[catalystId] or not tags or type(tags) ~= "table" or #tags == 0 then +-- Helper Function used by tinctures and catalysts +-- (can be used in future for heist enchants/jewellery) +---@param typeID type of mod, either tincture or catalystID +---@param tags list of tags on the mod +---@param quality number of quality, either item base, or catalyst +---@param extraMult any extra multipliers (eg increased effect for tinctures) +---@return multiplier value for the mod based on the tags +local function getRangeScalarFromTag(typeID, tags, quality, extraMult) + if not typeID or (typeID ~= "tincture" and (type(typeID) ~= "number" or not catalystTags[typeID])) or not tags or type(tags) ~= "table" or #tags == 0 then return 1 end if not quality then quality = 20 end + + if typeID == "tincture" then + for _, curTag in ipairs(tags) do + if curTag == "tincture" then + return (100 + (extraMult or 0)) / 100 * (100 + quality) / 100 + end + end + return 1 + end -- Create a fast lookup table for all provided tags local tagLookup = {} @@ -40,7 +56,7 @@ local function getCatalystScalar(catalystId, tags, quality) end -- Find if any of the catalyst's tags match the provided tags - for _, catalystTag in ipairs(catalystTags[catalystId]) do + for _, catalystTag in ipairs(catalystTags[typeID]) do if tagLookup[catalystTag] then return (100 + quality) / 100 end @@ -721,14 +737,14 @@ function ItemClass:ParseRaw(raw, rarity, highQuality) foundImplicit = true gameModeStage = "IMPLICIT" end - local catalystScalar = getCatalystScalar(self.catalyst, modLine.modTags, self.catalystQuality) - local rangedLine = itemLib.applyRange(line, 1, catalystScalar) + local rangeScalar = getRangeScalarFromTag(self.base.tincture and "tincture" or self.catalyst, modLine.modTags, self.quality or self.catalystQuality, self.base.tincture and 0 or 0) + local rangedLine = itemLib.applyRange(line, 1, rangeScalar) local modList, extra = modLib.parseMod(rangedLine) if (not modList or extra) and self.rawLines[l+1] then -- Try to combine it with the next line local nextLine = self.rawLines[l+1]:gsub("%b{}", ""):gsub(" ?%(%l+%)","") local combLine = line.." "..nextLine - rangedLine = itemLib.applyRange(combLine, 1, catalystScalar) + rangedLine = itemLib.applyRange(combLine, 1, rangeScalar) modList, extra = modLib.parseMod(rangedLine, true) if modList and not extra then line = line.."\n"..nextLine @@ -778,7 +794,7 @@ function ItemClass:ParseRaw(raw, rarity, highQuality) if modList then modLine.modList = modList modLine.extra = extra - modLine.valueScalar = catalystScalar + modLine.valueScalar = rangeScalar modLine.range = modLine.range or main.defaultItemAffixQuality t_insert(modLines, modLine) if mode == "GAME" then @@ -1177,10 +1193,7 @@ function ItemClass:Craft() self.nameSuffix = " " .. mod.affix end self.requirements.level = m_max(self.requirements.level or 0, m_floor(mod.level * 0.8)) - local rangeScalar = getCatalystScalar(self.catalyst, mod.modTags, self.catalystQuality) - if self.base.tincture and mod.type ~= "Prefix" then - rangeScalar = rangeScalar * (1 + (self.tinctureData.effectInc or 0) / 100) * (1 + (self.quality or 0) / 100) - end + local rangeScalar = getRangeScalarFromTag(self.base.tincture and "tincture" or self.catalyst, mod.modTags, self.quality or self.catalystQuality, self.base.tincture and self.tinctureData.effectInc) for i, line in ipairs(mod) do line = itemLib.applyRange(line, affix.range or 0.5, rangeScalar) local order = mod.statOrder[i] @@ -1584,9 +1597,9 @@ function ItemClass:BuildModList() -- Check if line actually has a range if modLine.line:find("%((%-?%d+%.?%d*)%-(%-?%d+%.?%d*)%)") then local strippedModeLine = modLine.line:gsub("\n"," ") - local catalystScalar = getCatalystScalar(self.catalyst, modLine.modTags, self.catalystQuality) + local rangeScalar = getRangeScalarFromTag(self.base.tincture and "tincture" or self.catalyst, modLine.modTags, self.quality or self.catalystQuality, self.base.tincture and self.tinctureData.effectInc) -- Put the modified value into the string - local line = itemLib.applyRange(strippedModeLine, modLine.range, catalystScalar) + local line = itemLib.applyRange(strippedModeLine, modLine.range, rangeScalar) -- Check if we can parse it before adding the mods local list, extra = modLib.parseMod(line) if list and not extra then diff --git a/src/Data/Bases/tincture.lua b/src/Data/Bases/tincture.lua index eb1a47ce96..4afd0bd5a3 100644 --- a/src/Data/Bases/tincture.lua +++ b/src/Data/Bases/tincture.lua @@ -6,7 +6,7 @@ itemBases["Prismatic Tincture"] = { type = "Tincture", tags = { tincture = true, default = true, }, implicit = "(70-100)% increased Elemental Damage with Melee Weapons", - implicitModTypes = { { "elemental_damage", "damage", "elemental", "attack" }, }, + implicitModTypes = { { "elemental_damage", "damage", "elemental", "attack", "tincture" }, }, tincture = { manaBurn = 0.7, cooldown = 8 }, req = { }, } @@ -22,7 +22,7 @@ itemBases["Ironwood Tincture"] = { type = "Tincture", tags = { tincture = true, default = true, }, implicit = "40% reduced Enemy Stun Threshold with Melee Weapons\n(15-25)% increased Stun Duration with Melee Weapons", - implicitModTypes = { { "attack" }, { "attack" }, }, + implicitModTypes = { { "attack", "tincture" }, { "attack", "tincture" }, }, tincture = { manaBurn = 0.9, cooldown = 10 }, req = { }, } @@ -30,7 +30,7 @@ itemBases["Ashbark Tincture"] = { type = "Tincture", tags = { tincture = true, default = true, }, implicit = "25% chance to Ignite with Melee Weapons\n(60-90)% increased Damage with Ignite from Melee Weapons", - implicitModTypes = { { "elemental_damage", "damage", "elemental", "fire", "attack", "ailment" }, { "elemental_damage", "damage", "elemental", "fire", "attack", "ailment" }, }, + implicitModTypes = { { "elemental_damage", "damage", "elemental", "fire", "attack", "ailment", "tincture" }, { "elemental_damage", "damage", "elemental", "fire", "attack", "ailment", "tincture" }, }, tincture = { manaBurn = 0.6, cooldown = 7 }, req = { }, } @@ -38,7 +38,7 @@ itemBases["Borealwood Tincture"] = { type = "Tincture", tags = { tincture = true, default = true, }, implicit = "25% chance to Freeze with Melee Weapons\n(25-35)% increased Effect of Chill from Melee Weapons", - implicitModTypes = { { "elemental_damage", "damage", "elemental", "cold", "attack", "ailment" }, { "elemental_damage", "damage", "elemental", "cold", "attack", "ailment" }, }, + implicitModTypes = { { "elemental_damage", "damage", "elemental", "cold", "attack", "ailment", "tincture" }, { "elemental_damage", "damage", "elemental", "cold", "attack", "ailment", "tincture" }, }, tincture = { manaBurn = 0.6, cooldown = 7 }, req = { }, } @@ -46,7 +46,7 @@ itemBases["Fulgurite Tincture"] = { type = "Tincture", tags = { tincture = true, default = true, }, implicit = "25% chance to Shock with Melee Weapons\n(25-35)% increased Effect of Shock from Melee Weapons", - implicitModTypes = { { "elemental_damage", "damage", "elemental", "lightning", "attack", "ailment" }, { "elemental_damage", "damage", "elemental", "lightning", "attack", "ailment" }, }, + implicitModTypes = { { "elemental_damage", "damage", "elemental", "lightning", "attack", "ailment", "tincture" }, { "elemental_damage", "damage", "elemental", "lightning", "attack", "ailment", "tincture" }, }, tincture = { manaBurn = 0.6, cooldown = 7 }, req = { }, } @@ -54,7 +54,7 @@ itemBases["Poisonberry Tincture"] = { type = "Tincture", tags = { tincture = true, default = true, }, implicit = "20% chance to Poison with Melee Weapons\n(60-90)% increased Damage with Poison from Melee Weapons", - implicitModTypes = { { "chaos_damage", "poison", "damage", "chaos", "attack", "ailment" }, { "chaos_damage", "poison", "damage", "chaos", "attack", "ailment" }, }, + implicitModTypes = { { "chaos_damage", "poison", "damage", "chaos", "attack", "ailment", "tincture" }, { "chaos_damage", "poison", "damage", "chaos", "attack", "ailment", "tincture" }, }, tincture = { manaBurn = 0.7, cooldown = 6 }, req = { }, } @@ -62,7 +62,7 @@ itemBases["Blood Sap Tincture"] = { type = "Tincture", tags = { tincture = true, default = true, }, implicit = "20% chance to cause Bleeding with Melee Weapons\n(60-90)% increased Damage with Bleeding from Melee Weapons", - implicitModTypes = { { "physical_damage", "bleed", "damage", "physical", "attack", "ailment" }, { "physical_damage", "bleed", "damage", "physical", "attack", "ailment" }, }, + implicitModTypes = { { "physical_damage", "bleed", "damage", "physical", "attack", "ailment", "tincture" }, { "physical_damage", "bleed", "damage", "physical", "attack", "ailment", "tincture" }, }, tincture = { manaBurn = 0.7, cooldown = 6 }, req = { }, } @@ -70,7 +70,7 @@ itemBases["Oakbranch Tincture"] = { type = "Tincture", tags = { tincture = true, default = true, }, implicit = "Gain 3 Rage on Melee Weapon Hit", - implicitModTypes = { { "attack" }, }, + implicitModTypes = { { "attack", "tincture" }, }, tincture = { manaBurn = 0.5, cooldown = 8 }, req = { }, } @@ -78,7 +78,7 @@ itemBases["Sporebloom Tincture"] = { type = "Tincture", tags = { tincture = true, default = true, }, implicit = "25% chance to Blind Enemies on Hit with Melee Weapons\n(25-35)% increased Effect of Blind from Melee Weapons", - implicitModTypes = { { "attack" }, { "attack" }, }, + implicitModTypes = { { "attack", "tincture" }, { "attack", "tincture" }, }, tincture = { manaBurn = 0.9, cooldown = 8 }, req = { }, } diff --git a/src/Data/ModTincture.lua b/src/Data/ModTincture.lua index f2d9617ab6..6d1a5e573c 100644 --- a/src/Data/ModTincture.lua +++ b/src/Data/ModTincture.lua @@ -2,70 +2,70 @@ -- Item data (c) Grinding Gear Games return { - ["TinctureEffect1"] = { type = "Prefix", affix = "Herbal", "(11-13)% increased effect", statOrderKey = "10050", statOrder = { 10050 }, level = 1, group = "TinctureEffect", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { }, }, - ["TinctureEffect2"] = { type = "Prefix", affix = "Natural", "(14-16)% increased effect", statOrderKey = "10050", statOrder = { 10050 }, level = 35, group = "TinctureEffect", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { }, }, - ["TinctureEffect3"] = { type = "Prefix", affix = "Medicinal", "(17-19)% increased effect", statOrderKey = "10050", statOrder = { 10050 }, level = 64, group = "TinctureEffect", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { }, }, - ["TinctureEffect4"] = { type = "Prefix", affix = "Horticultural", "(20-22)% increased effect", statOrderKey = "10050", statOrder = { 10050 }, level = 85, group = "TinctureEffect", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { }, }, - ["TinctureToxicityRate1"] = { type = "Prefix", affix = "Sustained", "(15-17)% reduced Mana Burn rate", statOrderKey = "10051", statOrder = { 10051 }, level = 1, group = "TinctureToxicityRate", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { }, }, - ["TinctureToxicityRate2"] = { type = "Prefix", affix = "Tenacious", "(18-20)% reduced Mana Burn rate", statOrderKey = "10051", statOrder = { 10051 }, level = 30, group = "TinctureToxicityRate", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { }, }, - ["TinctureToxicityRate3"] = { type = "Prefix", affix = "Persistent", "(21-23)% reduced Mana Burn rate", statOrderKey = "10051", statOrder = { 10051 }, level = 58, group = "TinctureToxicityRate", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { }, }, - ["TinctureToxicityRate4"] = { type = "Prefix", affix = "Persevering", "(24-26)% reduced Mana Burn rate", statOrderKey = "10051", statOrder = { 10051 }, level = 80, group = "TinctureToxicityRate", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { }, }, - ["TinctureCooldownRecovery1"] = { type = "Prefix", affix = "Lucid", "(13-17)% increased Cooldown Recovery Rate", statOrderKey = "10049", statOrder = { 10049 }, level = 1, group = "TinctureCooldownRecovery", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { }, }, - ["TinctureCooldownRecovery2"] = { type = "Prefix", affix = "Perceptive", "(18-22)% increased Cooldown Recovery Rate", statOrderKey = "10049", statOrder = { 10049 }, level = 30, group = "TinctureCooldownRecovery", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { }, }, - ["TinctureCooldownRecovery3"] = { type = "Prefix", affix = "Insightful", "(23-27)% increased Cooldown Recovery Rate", statOrderKey = "10049", statOrder = { 10049 }, level = 58, group = "TinctureCooldownRecovery", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { }, }, - ["TinctureCooldownRecovery4"] = { type = "Prefix", affix = "Astute", "(28-32)% increased Cooldown Recovery Rate", statOrderKey = "10049", statOrder = { 10049 }, level = 82, group = "TinctureCooldownRecovery", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { }, }, - ["TinctureEffectFasterToxicity1"] = { type = "Prefix", affix = "Potent", "35% increased effect", "(47-51)% increased Mana Burn rate", statOrderKey = "10050,10051", statOrder = { 10050, 10051 }, level = 1, group = "TinctureEffectFasterToxicity", weightKey = { "tincture", "default", }, weightVal = { 400, 0 }, modTags = { }, }, - ["TinctureEffectFasterToxicity2"] = { type = "Prefix", affix = "Concentrated", "35% increased effect", "(42-46)% increased Mana Burn rate", statOrderKey = "10050,10051", statOrder = { 10050, 10051 }, level = 49, group = "TinctureEffectFasterToxicity", weightKey = { "tincture", "default", }, weightVal = { 400, 0 }, modTags = { }, }, - ["TinctureEffectFasterToxicity3"] = { type = "Prefix", affix = "Enriched", "35% increased effect", "(37-41)% increased Mana Burn rate", statOrderKey = "10050,10051", statOrder = { 10050, 10051 }, level = 84, group = "TinctureEffectFasterToxicity", weightKey = { "tincture", "default", }, weightVal = { 400, 0 }, modTags = { }, }, - ["TinctureEffectSlowerToxicity1"] = { type = "Prefix", affix = "Thin", "(31-35)% reduced effect", "50% reduced Mana Burn rate", statOrderKey = "10050,10051", statOrder = { 10050, 10051 }, level = 1, group = "TinctureEffectSlowerToxicity", weightKey = { "tincture", "default", }, weightVal = { 400, 0 }, modTags = { }, }, - ["TinctureEffectSlowerToxicity2"] = { type = "Prefix", affix = "Diluted", "(26-30)% reduced effect", "50% reduced Mana Burn rate", statOrderKey = "10050,10051", statOrder = { 10050, 10051 }, level = 49, group = "TinctureEffectSlowerToxicity", weightKey = { "tincture", "default", }, weightVal = { 400, 0 }, modTags = { }, }, - ["TinctureEffectSlowerToxicity3"] = { type = "Prefix", affix = "Measured", "(21-25)% reduced effect", "50% reduced Mana Burn rate", statOrderKey = "10050,10051", statOrder = { 10050, 10051 }, level = 84, group = "TinctureEffectSlowerToxicity", weightKey = { "tincture", "default", }, weightVal = { 400, 0 }, modTags = { }, }, - ["TinctureIncreasedAilmentDuration1"] = { type = "Suffix", affix = "of the Wild", "(25-35)% increased Duration of Elemental Ailments from Melee Weapon Attacks", statOrderKey = "10070", statOrder = { 10070 }, level = 1, group = "TinctureIncreasedAilmentDuration", weightKey = { "tincture", "default", }, weightVal = { 700, 0 }, modTags = { "elemental", "attack", "ailment" }, }, - ["TinctureIncreasedAilmentDuration2"] = { type = "Suffix", affix = "of the Untamed", "(36-45)% increased Duration of Elemental Ailments from Melee Weapon Attacks", statOrderKey = "10070", statOrder = { 10070 }, level = 42, group = "TinctureIncreasedAilmentDuration", weightKey = { "tincture", "default", }, weightVal = { 700, 0 }, modTags = { "elemental", "attack", "ailment" }, }, - ["TinctureIncreasedAilmentDuration3"] = { type = "Suffix", affix = "of the Savage", "(46-55)% increased Duration of Elemental Ailments from Melee Weapon Attacks", statOrderKey = "10070", statOrder = { 10070 }, level = 60, group = "TinctureIncreasedAilmentDuration", weightKey = { "tincture", "default", }, weightVal = { 700, 0 }, modTags = { "elemental", "attack", "ailment" }, }, - ["TinctureIncreasedAilmentDuration4"] = { type = "Suffix", affix = "of the Beast", "(56-65)% increased Duration of Elemental Ailments from Melee Weapon Attacks", statOrderKey = "10070", statOrder = { 10070 }, level = 82, group = "TinctureIncreasedAilmentDuration", weightKey = { "tincture", "default", }, weightVal = { 700, 0 }, modTags = { "elemental", "attack", "ailment" }, }, - ["TinctureDamageOverTimeMultiplier1"] = { type = "Suffix", affix = "of Acrimony", "+(9-13)% to Damage over Time Multiplier with Melee Weapon Attacks", statOrderKey = "10069", statOrder = { 10069 }, level = 1, group = "TinctureDamageOverTimeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack" }, }, - ["TinctureDamageOverTimeMultiplier2"] = { type = "Suffix", affix = "of Dispersion", "+(14-18)% to Damage over Time Multiplier with Melee Weapon Attacks", statOrderKey = "10069", statOrder = { 10069 }, level = 34, group = "TinctureDamageOverTimeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack" }, }, - ["TinctureDamageOverTimeMultiplier3"] = { type = "Suffix", affix = "of Liquefaction", "+(19-23)% to Damage over Time Multiplier with Melee Weapon Attacks", statOrderKey = "10069", statOrder = { 10069 }, level = 58, group = "TinctureDamageOverTimeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack" }, }, - ["TinctureDamageOverTimeMultiplier4"] = { type = "Suffix", affix = "of Melting", "+(24-28)% to Damage over Time Multiplier with Melee Weapon Attacks", statOrderKey = "10069", statOrder = { 10069 }, level = 70, group = "TinctureDamageOverTimeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack" }, }, - ["TinctureDamageOverTimeMultiplier5"] = { type = "Suffix", affix = "of Dissolution", "+(29-33)% to Damage over Time Multiplier with Melee Weapon Attacks", statOrderKey = "10069", statOrder = { 10069 }, level = 84, group = "TinctureDamageOverTimeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack" }, }, - ["TinctureElementalPenetration1"] = { type = "Suffix", affix = "of Catalysing", "Melee Weapon Damage Penetrates (5-7)% Elemental Resistances", statOrderKey = "10075", statOrder = { 10075 }, level = 1, group = "TinctureElementalPenetration", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "elemental_damage", "damage", "elemental", "attack" }, }, - ["TinctureElementalPenetration2"] = { type = "Suffix", affix = "of Infusing", "Melee Weapon Damage Penetrates (8-10)% Elemental Resistances", statOrderKey = "10075", statOrder = { 10075 }, level = 32, group = "TinctureElementalPenetration", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "elemental_damage", "damage", "elemental", "attack" }, }, - ["TinctureElementalPenetration3"] = { type = "Suffix", affix = "of Empowering", "Melee Weapon Damage Penetrates (11-13)% Elemental Resistances", statOrderKey = "10075", statOrder = { 10075 }, level = 60, group = "TinctureElementalPenetration", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "elemental_damage", "damage", "elemental", "attack" }, }, - ["TinctureElementalPenetration4"] = { type = "Suffix", affix = "of the Unleashed", "Melee Weapon Damage Penetrates (14-16)% Elemental Resistances", statOrderKey = "10075", statOrder = { 10075 }, level = 73, group = "TinctureElementalPenetration", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "elemental_damage", "damage", "elemental", "attack" }, }, - ["TinctureElementalPenetration5"] = { type = "Suffix", affix = "of Overpowering", "Melee Weapon Damage Penetrates (17-19)% Elemental Resistances", statOrderKey = "10075", statOrder = { 10075 }, level = 85, group = "TinctureElementalPenetration", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "elemental_damage", "damage", "elemental", "attack" }, }, - ["TinctureCriticalStrikeMultiplier1"] = { type = "Suffix", affix = "of Ire", "+(9-13)% to Melee Weapon Critical Strike Multiplier", statOrderKey = "10068", statOrder = { 10068 }, level = 1, group = "TinctureCriticalStrikeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "critical" }, }, - ["TinctureCriticalStrikeMultiplier2"] = { type = "Suffix", affix = "of Anger", "+(14-18)% to Melee Weapon Critical Strike Multiplier", statOrderKey = "10068", statOrder = { 10068 }, level = 32, group = "TinctureCriticalStrikeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "critical" }, }, - ["TinctureCriticalStrikeMultiplier3"] = { type = "Suffix", affix = "of Rage", "+(19-23)% to Melee Weapon Critical Strike Multiplier", statOrderKey = "10068", statOrder = { 10068 }, level = 60, group = "TinctureCriticalStrikeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "critical" }, }, - ["TinctureCriticalStrikeMultiplier4"] = { type = "Suffix", affix = "of Fury", "+(24-28)% to Melee Weapon Critical Strike Multiplier", statOrderKey = "10068", statOrder = { 10068 }, level = 73, group = "TinctureCriticalStrikeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "critical" }, }, - ["TinctureCriticalStrikeMultiplier5"] = { type = "Suffix", affix = "of Ferocity", "+(29-33)% to Melee Weapon Critical Strike Multiplier", statOrderKey = "10068", statOrder = { 10068 }, level = 85, group = "TinctureCriticalStrikeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "critical" }, }, - ["TinctureIncreasedAttackSpeed1"] = { type = "Suffix", affix = "of Skill", "(15-19)% increased Melee Weapon Attack Speed", statOrderKey = "10066", statOrder = { 10066 }, level = 1, group = "TinctureIncreasedAttackSpeed", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { "attack", "speed" }, }, - ["TinctureIncreasedAttackSpeed2"] = { type = "Suffix", affix = "of Ease", "(20-24)% increased Melee Weapon Attack Speed", statOrderKey = "10066", statOrder = { 10066 }, level = 65, group = "TinctureIncreasedAttackSpeed", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { "attack", "speed" }, }, - ["TinctureIncreasedAttackSpeed3"] = { type = "Suffix", affix = "of Mastery", "(25-29)% increased Melee Weapon Attack Speed", statOrderKey = "10066", statOrder = { 10066 }, level = 85, group = "TinctureIncreasedAttackSpeed", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { "attack", "speed" }, }, - ["TinctureDamageAgainstLowLife1"] = { type = "Suffix", affix = "of Execution", "(40-47)% increased Melee Weapon Damage against Enemies that are on Low Life", statOrderKey = "10076", statOrder = { 10076 }, level = 1, group = "WeaponDamageVsLowLifeEnemies", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { "damage", "attack" }, }, - ["TinctureDamageAgainstLowLife2"] = { type = "Suffix", affix = "of Elimination", "(48-55)% increased Melee Weapon Damage against Enemies that are on Low Life", statOrderKey = "10076", statOrder = { 10076 }, level = 28, group = "WeaponDamageVsLowLifeEnemies", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { "damage", "attack" }, }, - ["TinctureDamageAgainstLowLife3"] = { type = "Suffix", affix = "of Termination", "(56-63)% increased Melee Weapon Damage against Enemies that are on Low Life", statOrderKey = "10076", statOrder = { 10076 }, level = 47, group = "WeaponDamageVsLowLifeEnemies", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { "damage", "attack" }, }, - ["TinctureDamageAgainstLowLife4"] = { type = "Suffix", affix = "of Extermination", "(64-71)% increased Melee Weapon Damage against Enemies that are on Low Life", statOrderKey = "10076", statOrder = { 10076 }, level = 65, group = "WeaponDamageVsLowLifeEnemies", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { "damage", "attack" }, }, - ["TinctureDamageAgainstLowLife5"] = { type = "Suffix", affix = "of Assassination", "(72-79)% increased Melee Weapon Damage against Enemies that are on Low Life", statOrderKey = "10076", statOrder = { 10076 }, level = 80, group = "WeaponDamageVsLowLifeEnemies", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { "damage", "attack" }, }, - ["TinctureLifeGainedFromEnemyDeath1"] = { type = "Suffix", affix = "of Success", "Gain (11-15) Life per Enemy Killed with Melee Weapons", statOrderKey = "10073", statOrder = { 10073 }, level = 1, group = "TinctureLifeGainedFromEnemyDeath", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { "resource", "life", "attack" }, }, - ["TinctureLifeGainedFromEnemyDeath2"] = { type = "Suffix", affix = "of Victory", "Gain (16-20) Life per Enemy Killed with Melee Weapons", statOrderKey = "10073", statOrder = { 10073 }, level = 35, group = "TinctureLifeGainedFromEnemyDeath", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { "resource", "life", "attack" }, }, - ["TinctureLifeGainedFromEnemyDeath3"] = { type = "Suffix", affix = "of Triumph", "Gain (21-25) Life per Enemy Killed with Melee Weapons", statOrderKey = "10073", statOrder = { 10073 }, level = 62, group = "TinctureLifeGainedFromEnemyDeath", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { "resource", "life", "attack" }, }, - ["TinctureLifeGainedFromEnemyDeath4"] = { type = "Suffix", affix = "of Conquest", "Gain (26-30) Life per Enemy Killed with Melee Weapons", statOrderKey = "10073", statOrder = { 10073 }, level = 80, group = "TinctureLifeGainedFromEnemyDeath", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { "resource", "life", "attack" }, }, - ["TinctureManaGainedFromEnemyDeath1"] = { type = "Suffix", affix = "of Absorption", "Gain (2-3) Mana per Enemy Killed with Melee Weapons", statOrderKey = "10067", statOrder = { 10067 }, level = 38, group = "ManaGainedOnWeaponKill", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { }, }, - ["TinctureManaGainedFromEnemyDeath2"] = { type = "Suffix", affix = "of Osmosis", "Gain (4-5) Mana per Enemy Killed with Melee Weapons", statOrderKey = "10067", statOrder = { 10067 }, level = 50, group = "ManaGainedOnWeaponKill", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { }, }, - ["TinctureManaGainedFromEnemyDeath3"] = { type = "Suffix", affix = "of Consumption", "Gain (6-8) Mana per Enemy Killed with Melee Weapons", statOrderKey = "10067", statOrder = { 10067 }, level = 68, group = "ManaGainedOnWeaponKill", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { }, }, - ["TinctureManaGainedFromEnemyDeath4"] = { type = "Suffix", affix = "of Assimilation", "Gain (9-11) Mana per Enemy Killed with Melee Weapons", statOrderKey = "10067", statOrder = { 10067 }, level = 82, group = "ManaGainedOnWeaponKill", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { }, }, - ["TinctureLifeGainPerTarget1"] = { type = "Suffix", affix = "of Rejuvenation", "Gain (2-3) Life per Enemy Hit with Melee Weapons", statOrderKey = "10072", statOrder = { 10072 }, level = 1, group = "TinctureLifeGainPerTarget", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "resource", "life", "attack" }, }, - ["TinctureLifeGainPerTarget2"] = { type = "Suffix", affix = "of Restoration", "Gain (3-4) Life per Enemy Hit with Melee Weapons", statOrderKey = "10072", statOrder = { 10072 }, level = 50, group = "TinctureLifeGainPerTarget", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "resource", "life", "attack" }, }, - ["TinctureLifeGainPerTarget3"] = { type = "Suffix", affix = "of Regrowth", "Gain (5-7) Life per Enemy Hit with Melee Weapons", statOrderKey = "10072", statOrder = { 10072 }, level = 77, group = "TinctureLifeGainPerTarget", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "resource", "life", "attack" }, }, - ["TinctureManaGainPerTarget1"] = { type = "Suffix", affix = "of Enveloping", "Gain 1 Mana per Enemy Hit with Melee Weapons", statOrderKey = "10074", statOrder = { 10074 }, level = 45, group = "TinctureManaGainPerTarget", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "resource", "mana", "attack" }, }, - ["TinctureManaGainPerTarget2"] = { type = "Suffix", affix = "of Siphoning", "Gain 2 Mana per Enemy Hit with Melee Weapons", statOrderKey = "10074", statOrder = { 10074 }, level = 68, group = "TinctureManaGainPerTarget", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "resource", "mana", "attack" }, }, - ["TinctureManaGainPerTarget3"] = { type = "Suffix", affix = "of Devouring", "Gain 3 Mana per Enemy Hit with Melee Weapons", statOrderKey = "10074", statOrder = { 10074 }, level = 84, group = "TinctureManaGainPerTarget", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "resource", "mana", "attack" }, }, - ["TinctureFlaskChargeIncrease1"] = { type = "Suffix", affix = "of Restocking", "(11-15)% increased Flask Charges gained from Kills with Melee Weapons", statOrderKey = "10071", statOrder = { 10071 }, level = 1, group = "FlaskChargesFromWeaponKills", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { }, }, - ["TinctureFlaskChargeIncrease2"] = { type = "Suffix", affix = "of Replenishing", "(16-20)% increased Flask Charges gained from Kills with Melee Weapons", statOrderKey = "10071", statOrder = { 10071 }, level = 40, group = "FlaskChargesFromWeaponKills", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { }, }, - ["TinctureFlaskChargeIncrease3"] = { type = "Suffix", affix = "of Pouring", "(21-25)% increased Flask Charges gained from Kills with Melee Weapons", statOrderKey = "10071", statOrder = { 10071 }, level = 72, group = "FlaskChargesFromWeaponKills", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { }, }, - ["TinctureFlaskChargeIncrease4"] = { type = "Suffix", affix = "of Overflowing", "(26-30)% increased Flask Charges gained from Kills with Melee Weapons", statOrderKey = "10071", statOrder = { 10071 }, level = 85, group = "FlaskChargesFromWeaponKills", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { }, }, - ["TinctureIgnorePhysDR1"] = { type = "Suffix", affix = "of Battering", "Melee Weapon Hits have (30-39)% chance to ignore Enemy Physical Damage Reduction", statOrderKey = "10037", statOrder = { 10037 }, level = 40, group = "TinctureIgnorePhysDR", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "physical_damage", "damage", "physical", "attack" }, }, - ["TinctureIgnorePhysDR2"] = { type = "Suffix", affix = "of Crushing", "Melee Weapon Hits have (40-49)% chance to ignore Enemy Physical Damage Reduction", statOrderKey = "10037", statOrder = { 10037 }, level = 62, group = "TinctureIgnorePhysDR", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "physical_damage", "damage", "physical", "attack" }, }, - ["TinctureIgnorePhysDR3"] = { type = "Suffix", affix = "of Overwhelming", "Melee Weapon Hits have (50-60)% chance to ignore Enemy Physical Damage Reduction", statOrderKey = "10037", statOrder = { 10037 }, level = 80, group = "TinctureIgnorePhysDR", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "physical_damage", "damage", "physical", "attack" }, }, + ["TinctureEffect1"] = { type = "Prefix", affix = "Herbal", "(11-13)% increased effect", statOrderKey = "10049", statOrder = { 10049 }, level = 1, group = "TinctureEffect", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { }, }, + ["TinctureEffect2"] = { type = "Prefix", affix = "Natural", "(14-16)% increased effect", statOrderKey = "10049", statOrder = { 10049 }, level = 35, group = "TinctureEffect", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { }, }, + ["TinctureEffect3"] = { type = "Prefix", affix = "Medicinal", "(17-19)% increased effect", statOrderKey = "10049", statOrder = { 10049 }, level = 64, group = "TinctureEffect", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { }, }, + ["TinctureEffect4"] = { type = "Prefix", affix = "Horticultural", "(20-22)% increased effect", statOrderKey = "10049", statOrder = { 10049 }, level = 85, group = "TinctureEffect", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { }, }, + ["TinctureToxicityRate1"] = { type = "Prefix", affix = "Sustained", "(15-17)% reduced Mana Burn rate", statOrderKey = "10050", statOrder = { 10050 }, level = 1, group = "TinctureToxicityRate", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { }, }, + ["TinctureToxicityRate2"] = { type = "Prefix", affix = "Tenacious", "(18-20)% reduced Mana Burn rate", statOrderKey = "10050", statOrder = { 10050 }, level = 30, group = "TinctureToxicityRate", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { }, }, + ["TinctureToxicityRate3"] = { type = "Prefix", affix = "Persistent", "(21-23)% reduced Mana Burn rate", statOrderKey = "10050", statOrder = { 10050 }, level = 58, group = "TinctureToxicityRate", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { }, }, + ["TinctureToxicityRate4"] = { type = "Prefix", affix = "Persevering", "(24-26)% reduced Mana Burn rate", statOrderKey = "10050", statOrder = { 10050 }, level = 80, group = "TinctureToxicityRate", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { }, }, + ["TinctureCooldownRecovery1"] = { type = "Prefix", affix = "Lucid", "(13-17)% increased Cooldown Recovery Rate", statOrderKey = "10048", statOrder = { 10048 }, level = 1, group = "TinctureCooldownRecovery", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { }, }, + ["TinctureCooldownRecovery2"] = { type = "Prefix", affix = "Perceptive", "(18-22)% increased Cooldown Recovery Rate", statOrderKey = "10048", statOrder = { 10048 }, level = 30, group = "TinctureCooldownRecovery", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { }, }, + ["TinctureCooldownRecovery3"] = { type = "Prefix", affix = "Insightful", "(23-27)% increased Cooldown Recovery Rate", statOrderKey = "10048", statOrder = { 10048 }, level = 58, group = "TinctureCooldownRecovery", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { }, }, + ["TinctureCooldownRecovery4"] = { type = "Prefix", affix = "Astute", "(28-32)% increased Cooldown Recovery Rate", statOrderKey = "10048", statOrder = { 10048 }, level = 82, group = "TinctureCooldownRecovery", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { }, }, + ["TinctureEffectFasterToxicity1"] = { type = "Prefix", affix = "Potent", "35% increased effect", "(47-51)% increased Mana Burn rate", statOrderKey = "10049,10050", statOrder = { 10049, 10050 }, level = 1, group = "TinctureEffectFasterToxicity", weightKey = { "tincture", "default", }, weightVal = { 400, 0 }, modTags = { }, }, + ["TinctureEffectFasterToxicity2"] = { type = "Prefix", affix = "Concentrated", "35% increased effect", "(42-46)% increased Mana Burn rate", statOrderKey = "10049,10050", statOrder = { 10049, 10050 }, level = 49, group = "TinctureEffectFasterToxicity", weightKey = { "tincture", "default", }, weightVal = { 400, 0 }, modTags = { }, }, + ["TinctureEffectFasterToxicity3"] = { type = "Prefix", affix = "Enriched", "35% increased effect", "(37-41)% increased Mana Burn rate", statOrderKey = "10049,10050", statOrder = { 10049, 10050 }, level = 84, group = "TinctureEffectFasterToxicity", weightKey = { "tincture", "default", }, weightVal = { 400, 0 }, modTags = { }, }, + ["TinctureEffectSlowerToxicity1"] = { type = "Prefix", affix = "Thin", "(31-35)% reduced effect", "50% reduced Mana Burn rate", statOrderKey = "10049,10050", statOrder = { 10049, 10050 }, level = 1, group = "TinctureEffectSlowerToxicity", weightKey = { "tincture", "default", }, weightVal = { 400, 0 }, modTags = { }, }, + ["TinctureEffectSlowerToxicity2"] = { type = "Prefix", affix = "Diluted", "(26-30)% reduced effect", "50% reduced Mana Burn rate", statOrderKey = "10049,10050", statOrder = { 10049, 10050 }, level = 49, group = "TinctureEffectSlowerToxicity", weightKey = { "tincture", "default", }, weightVal = { 400, 0 }, modTags = { }, }, + ["TinctureEffectSlowerToxicity3"] = { type = "Prefix", affix = "Measured", "(21-25)% reduced effect", "50% reduced Mana Burn rate", statOrderKey = "10049,10050", statOrder = { 10049, 10050 }, level = 84, group = "TinctureEffectSlowerToxicity", weightKey = { "tincture", "default", }, weightVal = { 400, 0 }, modTags = { }, }, + ["TinctureIncreasedAilmentDuration1"] = { type = "Suffix", affix = "of the Wild", "(25-35)% increased Duration of Elemental Ailments from Melee Weapon Attacks", statOrderKey = "10069", statOrder = { 10069 }, level = 1, group = "TinctureIncreasedAilmentDuration", weightKey = { "tincture", "default", }, weightVal = { 700, 0 }, modTags = { "elemental", "attack", "ailment", "tincture" }, }, + ["TinctureIncreasedAilmentDuration2"] = { type = "Suffix", affix = "of the Untamed", "(36-45)% increased Duration of Elemental Ailments from Melee Weapon Attacks", statOrderKey = "10069", statOrder = { 10069 }, level = 42, group = "TinctureIncreasedAilmentDuration", weightKey = { "tincture", "default", }, weightVal = { 700, 0 }, modTags = { "elemental", "attack", "ailment", "tincture" }, }, + ["TinctureIncreasedAilmentDuration3"] = { type = "Suffix", affix = "of the Savage", "(46-55)% increased Duration of Elemental Ailments from Melee Weapon Attacks", statOrderKey = "10069", statOrder = { 10069 }, level = 60, group = "TinctureIncreasedAilmentDuration", weightKey = { "tincture", "default", }, weightVal = { 700, 0 }, modTags = { "elemental", "attack", "ailment", "tincture" }, }, + ["TinctureIncreasedAilmentDuration4"] = { type = "Suffix", affix = "of the Beast", "(56-65)% increased Duration of Elemental Ailments from Melee Weapon Attacks", statOrderKey = "10069", statOrder = { 10069 }, level = 82, group = "TinctureIncreasedAilmentDuration", weightKey = { "tincture", "default", }, weightVal = { 700, 0 }, modTags = { "elemental", "attack", "ailment", "tincture" }, }, + ["TinctureDamageOverTimeMultiplier1"] = { type = "Suffix", affix = "of Acrimony", "+(9-13)% to Damage over Time Multiplier with Melee Weapon Attacks", statOrderKey = "10068", statOrder = { 10068 }, level = 1, group = "TinctureDamageOverTimeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "tincture" }, }, + ["TinctureDamageOverTimeMultiplier2"] = { type = "Suffix", affix = "of Dispersion", "+(14-18)% to Damage over Time Multiplier with Melee Weapon Attacks", statOrderKey = "10068", statOrder = { 10068 }, level = 34, group = "TinctureDamageOverTimeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "tincture" }, }, + ["TinctureDamageOverTimeMultiplier3"] = { type = "Suffix", affix = "of Liquefaction", "+(19-23)% to Damage over Time Multiplier with Melee Weapon Attacks", statOrderKey = "10068", statOrder = { 10068 }, level = 58, group = "TinctureDamageOverTimeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "tincture" }, }, + ["TinctureDamageOverTimeMultiplier4"] = { type = "Suffix", affix = "of Melting", "+(24-28)% to Damage over Time Multiplier with Melee Weapon Attacks", statOrderKey = "10068", statOrder = { 10068 }, level = 70, group = "TinctureDamageOverTimeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "tincture" }, }, + ["TinctureDamageOverTimeMultiplier5"] = { type = "Suffix", affix = "of Dissolution", "+(29-33)% to Damage over Time Multiplier with Melee Weapon Attacks", statOrderKey = "10068", statOrder = { 10068 }, level = 84, group = "TinctureDamageOverTimeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "tincture" }, }, + ["TinctureElementalPenetration1"] = { type = "Suffix", affix = "of Catalysing", "Melee Weapon Damage Penetrates (5-7)% Elemental Resistances", statOrderKey = "10074", statOrder = { 10074 }, level = 1, group = "TinctureElementalPenetration", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "elemental_damage", "damage", "elemental", "attack", "tincture" }, }, + ["TinctureElementalPenetration2"] = { type = "Suffix", affix = "of Infusing", "Melee Weapon Damage Penetrates (8-10)% Elemental Resistances", statOrderKey = "10074", statOrder = { 10074 }, level = 32, group = "TinctureElementalPenetration", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "elemental_damage", "damage", "elemental", "attack", "tincture" }, }, + ["TinctureElementalPenetration3"] = { type = "Suffix", affix = "of Empowering", "Melee Weapon Damage Penetrates (11-13)% Elemental Resistances", statOrderKey = "10074", statOrder = { 10074 }, level = 60, group = "TinctureElementalPenetration", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "elemental_damage", "damage", "elemental", "attack", "tincture" }, }, + ["TinctureElementalPenetration4"] = { type = "Suffix", affix = "of the Unleashed", "Melee Weapon Damage Penetrates (14-16)% Elemental Resistances", statOrderKey = "10074", statOrder = { 10074 }, level = 73, group = "TinctureElementalPenetration", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "elemental_damage", "damage", "elemental", "attack", "tincture" }, }, + ["TinctureElementalPenetration5"] = { type = "Suffix", affix = "of Overpowering", "Melee Weapon Damage Penetrates (17-19)% Elemental Resistances", statOrderKey = "10074", statOrder = { 10074 }, level = 85, group = "TinctureElementalPenetration", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "elemental_damage", "damage", "elemental", "attack", "tincture" }, }, + ["TinctureCriticalStrikeMultiplier1"] = { type = "Suffix", affix = "of Ire", "+(9-13)% to Melee Weapon Critical Strike Multiplier", statOrderKey = "10067", statOrder = { 10067 }, level = 1, group = "TinctureCriticalStrikeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "critical", "tincture" }, }, + ["TinctureCriticalStrikeMultiplier2"] = { type = "Suffix", affix = "of Anger", "+(14-18)% to Melee Weapon Critical Strike Multiplier", statOrderKey = "10067", statOrder = { 10067 }, level = 32, group = "TinctureCriticalStrikeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "critical", "tincture" }, }, + ["TinctureCriticalStrikeMultiplier3"] = { type = "Suffix", affix = "of Rage", "+(19-23)% to Melee Weapon Critical Strike Multiplier", statOrderKey = "10067", statOrder = { 10067 }, level = 60, group = "TinctureCriticalStrikeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "critical", "tincture" }, }, + ["TinctureCriticalStrikeMultiplier4"] = { type = "Suffix", affix = "of Fury", "+(24-28)% to Melee Weapon Critical Strike Multiplier", statOrderKey = "10067", statOrder = { 10067 }, level = 73, group = "TinctureCriticalStrikeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "critical", "tincture" }, }, + ["TinctureCriticalStrikeMultiplier5"] = { type = "Suffix", affix = "of Ferocity", "+(29-33)% to Melee Weapon Critical Strike Multiplier", statOrderKey = "10067", statOrder = { 10067 }, level = 85, group = "TinctureCriticalStrikeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "critical", "tincture" }, }, + ["TinctureIncreasedAttackSpeed1"] = { type = "Suffix", affix = "of Skill", "(15-19)% increased Melee Weapon Attack Speed", statOrderKey = "10065", statOrder = { 10065 }, level = 1, group = "TinctureIncreasedAttackSpeed", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { "attack", "speed", "tincture" }, }, + ["TinctureIncreasedAttackSpeed2"] = { type = "Suffix", affix = "of Ease", "(20-24)% increased Melee Weapon Attack Speed", statOrderKey = "10065", statOrder = { 10065 }, level = 65, group = "TinctureIncreasedAttackSpeed", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { "attack", "speed", "tincture" }, }, + ["TinctureIncreasedAttackSpeed3"] = { type = "Suffix", affix = "of Mastery", "(25-29)% increased Melee Weapon Attack Speed", statOrderKey = "10065", statOrder = { 10065 }, level = 85, group = "TinctureIncreasedAttackSpeed", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { "attack", "speed", "tincture" }, }, + ["TinctureDamageAgainstLowLife1"] = { type = "Suffix", affix = "of Execution", "(40-47)% increased Melee Weapon Damage against Enemies that are on Low Life", statOrderKey = "10075", statOrder = { 10075 }, level = 1, group = "WeaponDamageVsLowLifeEnemies", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { "damage", "attack", "tincture" }, }, + ["TinctureDamageAgainstLowLife2"] = { type = "Suffix", affix = "of Elimination", "(48-55)% increased Melee Weapon Damage against Enemies that are on Low Life", statOrderKey = "10075", statOrder = { 10075 }, level = 28, group = "WeaponDamageVsLowLifeEnemies", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { "damage", "attack", "tincture" }, }, + ["TinctureDamageAgainstLowLife3"] = { type = "Suffix", affix = "of Termination", "(56-63)% increased Melee Weapon Damage against Enemies that are on Low Life", statOrderKey = "10075", statOrder = { 10075 }, level = 47, group = "WeaponDamageVsLowLifeEnemies", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { "damage", "attack", "tincture" }, }, + ["TinctureDamageAgainstLowLife4"] = { type = "Suffix", affix = "of Extermination", "(64-71)% increased Melee Weapon Damage against Enemies that are on Low Life", statOrderKey = "10075", statOrder = { 10075 }, level = 65, group = "WeaponDamageVsLowLifeEnemies", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { "damage", "attack", "tincture" }, }, + ["TinctureDamageAgainstLowLife5"] = { type = "Suffix", affix = "of Assassination", "(72-79)% increased Melee Weapon Damage against Enemies that are on Low Life", statOrderKey = "10075", statOrder = { 10075 }, level = 80, group = "WeaponDamageVsLowLifeEnemies", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { "damage", "attack", "tincture" }, }, + ["TinctureLifeGainedFromEnemyDeath1"] = { type = "Suffix", affix = "of Success", "Gain (11-15) Life per Enemy Killed with Melee Weapons", statOrderKey = "10072", statOrder = { 10072 }, level = 1, group = "TinctureLifeGainedFromEnemyDeath", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { "resource", "life", "attack", "tincture" }, }, + ["TinctureLifeGainedFromEnemyDeath2"] = { type = "Suffix", affix = "of Victory", "Gain (16-20) Life per Enemy Killed with Melee Weapons", statOrderKey = "10072", statOrder = { 10072 }, level = 35, group = "TinctureLifeGainedFromEnemyDeath", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { "resource", "life", "attack", "tincture" }, }, + ["TinctureLifeGainedFromEnemyDeath3"] = { type = "Suffix", affix = "of Triumph", "Gain (21-25) Life per Enemy Killed with Melee Weapons", statOrderKey = "10072", statOrder = { 10072 }, level = 62, group = "TinctureLifeGainedFromEnemyDeath", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { "resource", "life", "attack", "tincture" }, }, + ["TinctureLifeGainedFromEnemyDeath4"] = { type = "Suffix", affix = "of Conquest", "Gain (26-30) Life per Enemy Killed with Melee Weapons", statOrderKey = "10072", statOrder = { 10072 }, level = 80, group = "TinctureLifeGainedFromEnemyDeath", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { "resource", "life", "attack", "tincture" }, }, + ["TinctureManaGainedFromEnemyDeath1"] = { type = "Suffix", affix = "of Absorption", "Gain (2-3) Mana per Enemy Killed with Melee Weapons", statOrderKey = "10066", statOrder = { 10066 }, level = 38, group = "ManaGainedOnWeaponKill", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { "tincture" }, }, + ["TinctureManaGainedFromEnemyDeath2"] = { type = "Suffix", affix = "of Osmosis", "Gain (4-5) Mana per Enemy Killed with Melee Weapons", statOrderKey = "10066", statOrder = { 10066 }, level = 50, group = "ManaGainedOnWeaponKill", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { "tincture" }, }, + ["TinctureManaGainedFromEnemyDeath3"] = { type = "Suffix", affix = "of Consumption", "Gain (6-8) Mana per Enemy Killed with Melee Weapons", statOrderKey = "10066", statOrder = { 10066 }, level = 68, group = "ManaGainedOnWeaponKill", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { "tincture" }, }, + ["TinctureManaGainedFromEnemyDeath4"] = { type = "Suffix", affix = "of Assimilation", "Gain (9-11) Mana per Enemy Killed with Melee Weapons", statOrderKey = "10066", statOrder = { 10066 }, level = 82, group = "ManaGainedOnWeaponKill", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { "tincture" }, }, + ["TinctureLifeGainPerTarget1"] = { type = "Suffix", affix = "of Rejuvenation", "Gain (2-3) Life per Enemy Hit with Melee Weapons", statOrderKey = "10071", statOrder = { 10071 }, level = 1, group = "TinctureLifeGainPerTarget", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "resource", "life", "attack", "tincture" }, }, + ["TinctureLifeGainPerTarget2"] = { type = "Suffix", affix = "of Restoration", "Gain (3-4) Life per Enemy Hit with Melee Weapons", statOrderKey = "10071", statOrder = { 10071 }, level = 50, group = "TinctureLifeGainPerTarget", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "resource", "life", "attack", "tincture" }, }, + ["TinctureLifeGainPerTarget3"] = { type = "Suffix", affix = "of Regrowth", "Gain (5-7) Life per Enemy Hit with Melee Weapons", statOrderKey = "10071", statOrder = { 10071 }, level = 77, group = "TinctureLifeGainPerTarget", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "resource", "life", "attack", "tincture" }, }, + ["TinctureManaGainPerTarget1"] = { type = "Suffix", affix = "of Enveloping", "Gain 1 Mana per Enemy Hit with Melee Weapons", statOrderKey = "10073", statOrder = { 10073 }, level = 45, group = "TinctureManaGainPerTarget", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "resource", "mana", "attack", "tincture" }, }, + ["TinctureManaGainPerTarget2"] = { type = "Suffix", affix = "of Siphoning", "Gain 2 Mana per Enemy Hit with Melee Weapons", statOrderKey = "10073", statOrder = { 10073 }, level = 68, group = "TinctureManaGainPerTarget", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "resource", "mana", "attack", "tincture" }, }, + ["TinctureManaGainPerTarget3"] = { type = "Suffix", affix = "of Devouring", "Gain 3 Mana per Enemy Hit with Melee Weapons", statOrderKey = "10073", statOrder = { 10073 }, level = 84, group = "TinctureManaGainPerTarget", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "resource", "mana", "attack", "tincture" }, }, + ["TinctureFlaskChargeIncrease1"] = { type = "Suffix", affix = "of Restocking", "(11-15)% increased Flask Charges gained from Kills with Melee Weapons", statOrderKey = "10070", statOrder = { 10070 }, level = 1, group = "FlaskChargesFromWeaponKills", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { "tincture" }, }, + ["TinctureFlaskChargeIncrease2"] = { type = "Suffix", affix = "of Replenishing", "(16-20)% increased Flask Charges gained from Kills with Melee Weapons", statOrderKey = "10070", statOrder = { 10070 }, level = 40, group = "FlaskChargesFromWeaponKills", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { "tincture" }, }, + ["TinctureFlaskChargeIncrease3"] = { type = "Suffix", affix = "of Pouring", "(21-25)% increased Flask Charges gained from Kills with Melee Weapons", statOrderKey = "10070", statOrder = { 10070 }, level = 72, group = "FlaskChargesFromWeaponKills", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { "tincture" }, }, + ["TinctureFlaskChargeIncrease4"] = { type = "Suffix", affix = "of Overflowing", "(26-30)% increased Flask Charges gained from Kills with Melee Weapons", statOrderKey = "10070", statOrder = { 10070 }, level = 85, group = "FlaskChargesFromWeaponKills", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { "tincture" }, }, + ["TinctureIgnorePhysDR1"] = { type = "Suffix", affix = "of Battering", "Melee Weapon Hits have (30-39)% chance to ignore Enemy Physical Damage Reduction", statOrderKey = "10036", statOrder = { 10036 }, level = 40, group = "TinctureIgnorePhysDR", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "physical_damage", "damage", "physical", "attack", "tincture" }, }, + ["TinctureIgnorePhysDR2"] = { type = "Suffix", affix = "of Crushing", "Melee Weapon Hits have (40-49)% chance to ignore Enemy Physical Damage Reduction", statOrderKey = "10036", statOrder = { 10036 }, level = 62, group = "TinctureIgnorePhysDR", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "physical_damage", "damage", "physical", "attack", "tincture" }, }, + ["TinctureIgnorePhysDR3"] = { type = "Suffix", affix = "of Overwhelming", "Melee Weapon Hits have (50-60)% chance to ignore Enemy Physical Damage Reduction", statOrderKey = "10036", statOrder = { 10036 }, level = 80, group = "TinctureIgnorePhysDR", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "physical_damage", "damage", "physical", "attack", "tincture" }, }, } \ No newline at end of file diff --git a/src/Data/Uniques/Special/New.lua b/src/Data/Uniques/Special/New.lua index db2d897686..27cbbe6ef4 100644 --- a/src/Data/Uniques/Special/New.lua +++ b/src/Data/Uniques/Special/New.lua @@ -113,30 +113,30 @@ Sporebloom Tincture League: Settlers of Kalguur Requires Level 52 Implicits: 2 -25% chance to Blind Enemies on Hit with Melee Weapons -(25-35)% increased Effect of Blind from Melee Weapons -Melee Weapon Hits Inflict (2-3) Withered Debuffs for 2 seconds -(20-30)% chance to inflict a Grasping Vine on Melee Weapon Hit +{tags:tincture}25% chance to Blind Enemies on Hit with Melee Weapons +{tags:tincture}(25-35)% increased Effect of Blind from Melee Weapons +{tags:tincture}Melee Weapon Hits Inflict (2-3) Withered Debuffs for 2 seconds +{tags:tincture}(20-30)% chance to inflict a Grasping Vine on Melee Weapon Hit ]],[[ Wildfire Phloem Ashbark Tincture League: Settlers of Kalguur Requires Level 32 Implicits: 2 -25% chance to Ignite with Melee Weapons -(60-90)% increased Damage with Ignite from Melee Weapons --1 Fire Damage taken from Hits per Mana Burn -(15-25)% chance to refresh Ignite Duration on Melee Weapon Hit -Cover Full Life Enemies in Ash for (4-10) seconds on Melee Weapon hit +{tags:tincture}25% chance to Ignite with Melee Weapons +{tags:tincture}(60-90)% increased Damage with Ignite from Melee Weapons +{tags:tincture}-1 Fire Damage taken from Hits per Mana Burn +{tags:tincture}(15-25)% chance to refresh Ignite Duration on Melee Weapon Hit +{tags:tincture}Cover Full Life Enemies in Ash for (4-10) seconds on Melee Weapon hit ]],[[ Mightblood Ire Ironwood Tincture League: Settlers of Kalguur Requires Level 18 Implicits: 2 -40% reduced Enemy Stun Threshold with Melee Weapons -(15-25)% increased Stun Duration with Melee Weapons -Melee Strike Skills deal Splash Damage to surrounding targets +{tags:tincture}40% reduced Enemy Stun Threshold with Melee Weapons +{tags:tincture}(15-25)% increased Stun Duration with Melee Weapons +{tags:tincture}Melee Strike Skills deal Splash Damage to surrounding targets (25-15)% reduced Mana Burn rate ]],[[ Sap of the Seasons @@ -144,8 +144,8 @@ Prismatic Tincture League: Settlers of Kalguur Requires Level 18 Implicits: 1 -(70-100)% increased Elemental Damage with Melee Weapons -Melee Weapon Damage Penetrates 1% Elemental Resistance per Mana Burn, up to a maximum of 200% +{tags:tincture}(70-100)% increased Elemental Damage with Melee Weapons +{tags:tincture}Melee Weapon Damage Penetrates 1% Elemental Resistance per Mana Burn, up to a maximum of 200% (20-40)% increased Cooldown Recovery Rate (35--35)% increased Mana Burn rate ]],[[ @@ -154,10 +154,10 @@ Oakbranch Tincture League: Settlers of Kalguur Requires Level 18 Implicits: 1 -Gain 3 Rage on Melee Weapon Hit +{tags:tincture}Gain 3 Rage on Melee Weapon Hit Does not inflict Mana Burn over time Inflicts Mana Burn on you when you Hit an Enemy with a Melee Weapon -(1-5)% increased Rarity of Items found per Mana Burn, up to a maximum of 100% +{tags:tincture}(1-5)% increased Rarity of Items found per Mana Burn, up to a maximum of 100% Melee Weapon Attacks have Culling Strike ]],[[ Admiral's Arrogance From 090822ed2d44a72802d91238960e221945d44224 Mon Sep 17 00:00:00 2001 From: Regisle Date: Sun, 11 Aug 2024 15:34:01 +0930 Subject: [PATCH 04/10] pre-process mods to get effect --- src/Classes/Item.lua | 40 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/src/Classes/Item.lua b/src/Classes/Item.lua index 8df48284d6..a740a0311d 100644 --- a/src/Classes/Item.lua +++ b/src/Classes/Item.lua @@ -43,7 +43,7 @@ local function getRangeScalarFromTag(typeID, tags, quality, extraMult) if typeID == "tincture" then for _, curTag in ipairs(tags) do if curTag == "tincture" then - return (100 + (extraMult or 0)) / 100 * (100 + quality) / 100 + return (100 + (extraMult and extraMult["localEffect"] or 0)) / 100 * (100 + quality) / 100 end end return 1 @@ -358,6 +358,13 @@ function ItemClass:ParseRaw(raw, rarity, highQuality) l = l + 1 end end + -- preprocess looking for modifer effect multipliers + local modLineMultipliers = {} + for _, line in ipairs(self.rawLines) do + if line:find("effect") then + modLineMultipliers["localEffect"] = (modLineMultipliers["localEffect"] or 0) + (line:match("^(%d+)%% increased effect") or 0) - (line:match("^(%d+)%% reduced effect") or 0) + end + end self.checkSection = false self.sockets = { } self.classRequirementModLines = { } @@ -737,7 +744,7 @@ function ItemClass:ParseRaw(raw, rarity, highQuality) foundImplicit = true gameModeStage = "IMPLICIT" end - local rangeScalar = getRangeScalarFromTag(self.base.tincture and "tincture" or self.catalyst, modLine.modTags, self.quality or self.catalystQuality, self.base.tincture and 0 or 0) + local rangeScalar = getRangeScalarFromTag(self.base.tincture and "tincture" or self.catalyst, modLine.modTags, self.quality or self.catalystQuality, modLineMultipliers) local rangedLine = itemLib.applyRange(line, 1, rangeScalar) local modList, extra = modLib.parseMod(rangedLine) if (not modList or extra) and self.rawLines[l+1] then @@ -1179,6 +1186,22 @@ function ItemClass:Craft() self.nameSuffix = "" self.requirements.level = self.base.req.level local statOrder = { } + -- preprocess looking for modifer effect multipliers + local modLineMultipliers = {} + if self.base.tincture then + for _, list in ipairs({self.prefixes,self.suffixes}) do + for _, affix in ipairs(list) do + local mod = self.affixes[affix.modId] + if mod then + for _, line in ipairs(mod) do + if line:find("effect") then + modLineMultipliers["localEffect"] = (modLineMultipliers["localEffect"] or 0) + (line:match("^(%d+)%% increased effect") or 0) - (line:match("^(%d+)%% reduced effect") or 0) + end + end + end + end + end + end for _, list in ipairs({self.prefixes,self.suffixes}) do for i = 1, self.affixLimit / 2 do local affix = list[i] @@ -1193,7 +1216,7 @@ function ItemClass:Craft() self.nameSuffix = " " .. mod.affix end self.requirements.level = m_max(self.requirements.level or 0, m_floor(mod.level * 0.8)) - local rangeScalar = getRangeScalarFromTag(self.base.tincture and "tincture" or self.catalyst, mod.modTags, self.quality or self.catalystQuality, self.base.tincture and self.tinctureData.effectInc) + local rangeScalar = getRangeScalarFromTag(self.base.tincture and "tincture" or self.catalyst, mod.modTags, self.quality or self.catalystQuality, modLineMultipliers) for i, line in ipairs(mod) do line = itemLib.applyRange(line, affix.range or 0.5, rangeScalar) local order = mod.statOrder[i] @@ -1585,6 +1608,15 @@ function ItemClass:BuildModList() end end end + -- preprocess looking for modifer effect multipliers + local modLineMultipliers = {} + if self.base.tincture then + for _, modLine in ipairs(self.explicitModLines) do + if modLine.line:find("effect") then + modLineMultipliers["localEffect"] = (modLineMultipliers["localEffect"] or 0) + (modLine.line:match("^(%d+)%% increased effect") or 0) - (modLine.line:match("^(%d+)%% reduced effect") or 0) + end + end + end local function processModLine(modLine) if self:CheckModLineVariant(modLine) then -- special section for variant over-ride of pre-modifier item parameters @@ -1597,7 +1629,7 @@ function ItemClass:BuildModList() -- Check if line actually has a range if modLine.line:find("%((%-?%d+%.?%d*)%-(%-?%d+%.?%d*)%)") then local strippedModeLine = modLine.line:gsub("\n"," ") - local rangeScalar = getRangeScalarFromTag(self.base.tincture and "tincture" or self.catalyst, modLine.modTags, self.quality or self.catalystQuality, self.base.tincture and self.tinctureData.effectInc) + local rangeScalar = getRangeScalarFromTag(self.base.tincture and "tincture" or self.catalyst, modLine.modTags, self.quality or self.catalystQuality, modLineMultipliers) -- Put the modified value into the string local line = itemLib.applyRange(strippedModeLine, modLine.range, rangeScalar) -- Check if we can parse it before adding the mods From 231a1a24ba4eb668fa4ecb4d61f6608bc1e143ef Mon Sep 17 00:00:00 2001 From: Regisle Date: Tue, 13 Aug 2024 15:10:41 +0930 Subject: [PATCH 05/10] fix spelling --- src/Classes/Item.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Classes/Item.lua b/src/Classes/Item.lua index a740a0311d..0b29d1665e 100644 --- a/src/Classes/Item.lua +++ b/src/Classes/Item.lua @@ -358,7 +358,7 @@ function ItemClass:ParseRaw(raw, rarity, highQuality) l = l + 1 end end - -- preprocess looking for modifer effect multipliers + -- preprocess looking for modifier effect multipliers local modLineMultipliers = {} for _, line in ipairs(self.rawLines) do if line:find("effect") then @@ -1186,7 +1186,7 @@ function ItemClass:Craft() self.nameSuffix = "" self.requirements.level = self.base.req.level local statOrder = { } - -- preprocess looking for modifer effect multipliers + -- preprocess looking for modifier effect multipliers local modLineMultipliers = {} if self.base.tincture then for _, list in ipairs({self.prefixes,self.suffixes}) do @@ -1608,7 +1608,7 @@ function ItemClass:BuildModList() end end end - -- preprocess looking for modifer effect multipliers + -- preprocess looking for modifier effect multipliers local modLineMultipliers = {} if self.base.tincture then for _, modLine in ipairs(self.explicitModLines) do From 89ed92909861277d8982cc53643fb74a97a26d8d Mon Sep 17 00:00:00 2001 From: Regisle Date: Tue, 20 Aug 2024 18:17:35 +0930 Subject: [PATCH 06/10] fix suffixes, making them not be needed to export --- src/Classes/Item.lua | 4 +- src/Data/ModTincture.lua | 132 +++++++++++++++++++-------------------- 2 files changed, 69 insertions(+), 67 deletions(-) diff --git a/src/Classes/Item.lua b/src/Classes/Item.lua index 0b29d1665e..87652a9ae1 100644 --- a/src/Classes/Item.lua +++ b/src/Classes/Item.lua @@ -1195,6 +1195,7 @@ function ItemClass:Craft() if mod then for _, line in ipairs(mod) do if line:find("effect") then + line = itemLib.applyRange(line, affix.range or 0.5, nil) modLineMultipliers["localEffect"] = (modLineMultipliers["localEffect"] or 0) + (line:match("^(%d+)%% increased effect") or 0) - (line:match("^(%d+)%% reduced effect") or 0) end end @@ -1202,6 +1203,7 @@ function ItemClass:Craft() end end end + ConPrintTable(modLineMultipliers) for _, list in ipairs({self.prefixes,self.suffixes}) do for i = 1, self.affixLimit / 2 do local affix = list[i] @@ -1216,7 +1218,7 @@ function ItemClass:Craft() self.nameSuffix = " " .. mod.affix end self.requirements.level = m_max(self.requirements.level or 0, m_floor(mod.level * 0.8)) - local rangeScalar = getRangeScalarFromTag(self.base.tincture and "tincture" or self.catalyst, mod.modTags, self.quality or self.catalystQuality, modLineMultipliers) + local rangeScalar = getRangeScalarFromTag(self.base.tincture and "tincture" or self.catalyst, self.base.tincture and mod.type == "Suffix" and { "tincture" } or mod.modTags, self.quality or self.catalystQuality, modLineMultipliers) for i, line in ipairs(mod) do line = itemLib.applyRange(line, affix.range or 0.5, rangeScalar) local order = mod.statOrder[i] diff --git a/src/Data/ModTincture.lua b/src/Data/ModTincture.lua index 6d1a5e573c..f2d9617ab6 100644 --- a/src/Data/ModTincture.lua +++ b/src/Data/ModTincture.lua @@ -2,70 +2,70 @@ -- Item data (c) Grinding Gear Games return { - ["TinctureEffect1"] = { type = "Prefix", affix = "Herbal", "(11-13)% increased effect", statOrderKey = "10049", statOrder = { 10049 }, level = 1, group = "TinctureEffect", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { }, }, - ["TinctureEffect2"] = { type = "Prefix", affix = "Natural", "(14-16)% increased effect", statOrderKey = "10049", statOrder = { 10049 }, level = 35, group = "TinctureEffect", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { }, }, - ["TinctureEffect3"] = { type = "Prefix", affix = "Medicinal", "(17-19)% increased effect", statOrderKey = "10049", statOrder = { 10049 }, level = 64, group = "TinctureEffect", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { }, }, - ["TinctureEffect4"] = { type = "Prefix", affix = "Horticultural", "(20-22)% increased effect", statOrderKey = "10049", statOrder = { 10049 }, level = 85, group = "TinctureEffect", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { }, }, - ["TinctureToxicityRate1"] = { type = "Prefix", affix = "Sustained", "(15-17)% reduced Mana Burn rate", statOrderKey = "10050", statOrder = { 10050 }, level = 1, group = "TinctureToxicityRate", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { }, }, - ["TinctureToxicityRate2"] = { type = "Prefix", affix = "Tenacious", "(18-20)% reduced Mana Burn rate", statOrderKey = "10050", statOrder = { 10050 }, level = 30, group = "TinctureToxicityRate", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { }, }, - ["TinctureToxicityRate3"] = { type = "Prefix", affix = "Persistent", "(21-23)% reduced Mana Burn rate", statOrderKey = "10050", statOrder = { 10050 }, level = 58, group = "TinctureToxicityRate", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { }, }, - ["TinctureToxicityRate4"] = { type = "Prefix", affix = "Persevering", "(24-26)% reduced Mana Burn rate", statOrderKey = "10050", statOrder = { 10050 }, level = 80, group = "TinctureToxicityRate", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { }, }, - ["TinctureCooldownRecovery1"] = { type = "Prefix", affix = "Lucid", "(13-17)% increased Cooldown Recovery Rate", statOrderKey = "10048", statOrder = { 10048 }, level = 1, group = "TinctureCooldownRecovery", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { }, }, - ["TinctureCooldownRecovery2"] = { type = "Prefix", affix = "Perceptive", "(18-22)% increased Cooldown Recovery Rate", statOrderKey = "10048", statOrder = { 10048 }, level = 30, group = "TinctureCooldownRecovery", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { }, }, - ["TinctureCooldownRecovery3"] = { type = "Prefix", affix = "Insightful", "(23-27)% increased Cooldown Recovery Rate", statOrderKey = "10048", statOrder = { 10048 }, level = 58, group = "TinctureCooldownRecovery", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { }, }, - ["TinctureCooldownRecovery4"] = { type = "Prefix", affix = "Astute", "(28-32)% increased Cooldown Recovery Rate", statOrderKey = "10048", statOrder = { 10048 }, level = 82, group = "TinctureCooldownRecovery", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { }, }, - ["TinctureEffectFasterToxicity1"] = { type = "Prefix", affix = "Potent", "35% increased effect", "(47-51)% increased Mana Burn rate", statOrderKey = "10049,10050", statOrder = { 10049, 10050 }, level = 1, group = "TinctureEffectFasterToxicity", weightKey = { "tincture", "default", }, weightVal = { 400, 0 }, modTags = { }, }, - ["TinctureEffectFasterToxicity2"] = { type = "Prefix", affix = "Concentrated", "35% increased effect", "(42-46)% increased Mana Burn rate", statOrderKey = "10049,10050", statOrder = { 10049, 10050 }, level = 49, group = "TinctureEffectFasterToxicity", weightKey = { "tincture", "default", }, weightVal = { 400, 0 }, modTags = { }, }, - ["TinctureEffectFasterToxicity3"] = { type = "Prefix", affix = "Enriched", "35% increased effect", "(37-41)% increased Mana Burn rate", statOrderKey = "10049,10050", statOrder = { 10049, 10050 }, level = 84, group = "TinctureEffectFasterToxicity", weightKey = { "tincture", "default", }, weightVal = { 400, 0 }, modTags = { }, }, - ["TinctureEffectSlowerToxicity1"] = { type = "Prefix", affix = "Thin", "(31-35)% reduced effect", "50% reduced Mana Burn rate", statOrderKey = "10049,10050", statOrder = { 10049, 10050 }, level = 1, group = "TinctureEffectSlowerToxicity", weightKey = { "tincture", "default", }, weightVal = { 400, 0 }, modTags = { }, }, - ["TinctureEffectSlowerToxicity2"] = { type = "Prefix", affix = "Diluted", "(26-30)% reduced effect", "50% reduced Mana Burn rate", statOrderKey = "10049,10050", statOrder = { 10049, 10050 }, level = 49, group = "TinctureEffectSlowerToxicity", weightKey = { "tincture", "default", }, weightVal = { 400, 0 }, modTags = { }, }, - ["TinctureEffectSlowerToxicity3"] = { type = "Prefix", affix = "Measured", "(21-25)% reduced effect", "50% reduced Mana Burn rate", statOrderKey = "10049,10050", statOrder = { 10049, 10050 }, level = 84, group = "TinctureEffectSlowerToxicity", weightKey = { "tincture", "default", }, weightVal = { 400, 0 }, modTags = { }, }, - ["TinctureIncreasedAilmentDuration1"] = { type = "Suffix", affix = "of the Wild", "(25-35)% increased Duration of Elemental Ailments from Melee Weapon Attacks", statOrderKey = "10069", statOrder = { 10069 }, level = 1, group = "TinctureIncreasedAilmentDuration", weightKey = { "tincture", "default", }, weightVal = { 700, 0 }, modTags = { "elemental", "attack", "ailment", "tincture" }, }, - ["TinctureIncreasedAilmentDuration2"] = { type = "Suffix", affix = "of the Untamed", "(36-45)% increased Duration of Elemental Ailments from Melee Weapon Attacks", statOrderKey = "10069", statOrder = { 10069 }, level = 42, group = "TinctureIncreasedAilmentDuration", weightKey = { "tincture", "default", }, weightVal = { 700, 0 }, modTags = { "elemental", "attack", "ailment", "tincture" }, }, - ["TinctureIncreasedAilmentDuration3"] = { type = "Suffix", affix = "of the Savage", "(46-55)% increased Duration of Elemental Ailments from Melee Weapon Attacks", statOrderKey = "10069", statOrder = { 10069 }, level = 60, group = "TinctureIncreasedAilmentDuration", weightKey = { "tincture", "default", }, weightVal = { 700, 0 }, modTags = { "elemental", "attack", "ailment", "tincture" }, }, - ["TinctureIncreasedAilmentDuration4"] = { type = "Suffix", affix = "of the Beast", "(56-65)% increased Duration of Elemental Ailments from Melee Weapon Attacks", statOrderKey = "10069", statOrder = { 10069 }, level = 82, group = "TinctureIncreasedAilmentDuration", weightKey = { "tincture", "default", }, weightVal = { 700, 0 }, modTags = { "elemental", "attack", "ailment", "tincture" }, }, - ["TinctureDamageOverTimeMultiplier1"] = { type = "Suffix", affix = "of Acrimony", "+(9-13)% to Damage over Time Multiplier with Melee Weapon Attacks", statOrderKey = "10068", statOrder = { 10068 }, level = 1, group = "TinctureDamageOverTimeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "tincture" }, }, - ["TinctureDamageOverTimeMultiplier2"] = { type = "Suffix", affix = "of Dispersion", "+(14-18)% to Damage over Time Multiplier with Melee Weapon Attacks", statOrderKey = "10068", statOrder = { 10068 }, level = 34, group = "TinctureDamageOverTimeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "tincture" }, }, - ["TinctureDamageOverTimeMultiplier3"] = { type = "Suffix", affix = "of Liquefaction", "+(19-23)% to Damage over Time Multiplier with Melee Weapon Attacks", statOrderKey = "10068", statOrder = { 10068 }, level = 58, group = "TinctureDamageOverTimeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "tincture" }, }, - ["TinctureDamageOverTimeMultiplier4"] = { type = "Suffix", affix = "of Melting", "+(24-28)% to Damage over Time Multiplier with Melee Weapon Attacks", statOrderKey = "10068", statOrder = { 10068 }, level = 70, group = "TinctureDamageOverTimeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "tincture" }, }, - ["TinctureDamageOverTimeMultiplier5"] = { type = "Suffix", affix = "of Dissolution", "+(29-33)% to Damage over Time Multiplier with Melee Weapon Attacks", statOrderKey = "10068", statOrder = { 10068 }, level = 84, group = "TinctureDamageOverTimeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "tincture" }, }, - ["TinctureElementalPenetration1"] = { type = "Suffix", affix = "of Catalysing", "Melee Weapon Damage Penetrates (5-7)% Elemental Resistances", statOrderKey = "10074", statOrder = { 10074 }, level = 1, group = "TinctureElementalPenetration", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "elemental_damage", "damage", "elemental", "attack", "tincture" }, }, - ["TinctureElementalPenetration2"] = { type = "Suffix", affix = "of Infusing", "Melee Weapon Damage Penetrates (8-10)% Elemental Resistances", statOrderKey = "10074", statOrder = { 10074 }, level = 32, group = "TinctureElementalPenetration", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "elemental_damage", "damage", "elemental", "attack", "tincture" }, }, - ["TinctureElementalPenetration3"] = { type = "Suffix", affix = "of Empowering", "Melee Weapon Damage Penetrates (11-13)% Elemental Resistances", statOrderKey = "10074", statOrder = { 10074 }, level = 60, group = "TinctureElementalPenetration", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "elemental_damage", "damage", "elemental", "attack", "tincture" }, }, - ["TinctureElementalPenetration4"] = { type = "Suffix", affix = "of the Unleashed", "Melee Weapon Damage Penetrates (14-16)% Elemental Resistances", statOrderKey = "10074", statOrder = { 10074 }, level = 73, group = "TinctureElementalPenetration", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "elemental_damage", "damage", "elemental", "attack", "tincture" }, }, - ["TinctureElementalPenetration5"] = { type = "Suffix", affix = "of Overpowering", "Melee Weapon Damage Penetrates (17-19)% Elemental Resistances", statOrderKey = "10074", statOrder = { 10074 }, level = 85, group = "TinctureElementalPenetration", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "elemental_damage", "damage", "elemental", "attack", "tincture" }, }, - ["TinctureCriticalStrikeMultiplier1"] = { type = "Suffix", affix = "of Ire", "+(9-13)% to Melee Weapon Critical Strike Multiplier", statOrderKey = "10067", statOrder = { 10067 }, level = 1, group = "TinctureCriticalStrikeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "critical", "tincture" }, }, - ["TinctureCriticalStrikeMultiplier2"] = { type = "Suffix", affix = "of Anger", "+(14-18)% to Melee Weapon Critical Strike Multiplier", statOrderKey = "10067", statOrder = { 10067 }, level = 32, group = "TinctureCriticalStrikeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "critical", "tincture" }, }, - ["TinctureCriticalStrikeMultiplier3"] = { type = "Suffix", affix = "of Rage", "+(19-23)% to Melee Weapon Critical Strike Multiplier", statOrderKey = "10067", statOrder = { 10067 }, level = 60, group = "TinctureCriticalStrikeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "critical", "tincture" }, }, - ["TinctureCriticalStrikeMultiplier4"] = { type = "Suffix", affix = "of Fury", "+(24-28)% to Melee Weapon Critical Strike Multiplier", statOrderKey = "10067", statOrder = { 10067 }, level = 73, group = "TinctureCriticalStrikeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "critical", "tincture" }, }, - ["TinctureCriticalStrikeMultiplier5"] = { type = "Suffix", affix = "of Ferocity", "+(29-33)% to Melee Weapon Critical Strike Multiplier", statOrderKey = "10067", statOrder = { 10067 }, level = 85, group = "TinctureCriticalStrikeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "critical", "tincture" }, }, - ["TinctureIncreasedAttackSpeed1"] = { type = "Suffix", affix = "of Skill", "(15-19)% increased Melee Weapon Attack Speed", statOrderKey = "10065", statOrder = { 10065 }, level = 1, group = "TinctureIncreasedAttackSpeed", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { "attack", "speed", "tincture" }, }, - ["TinctureIncreasedAttackSpeed2"] = { type = "Suffix", affix = "of Ease", "(20-24)% increased Melee Weapon Attack Speed", statOrderKey = "10065", statOrder = { 10065 }, level = 65, group = "TinctureIncreasedAttackSpeed", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { "attack", "speed", "tincture" }, }, - ["TinctureIncreasedAttackSpeed3"] = { type = "Suffix", affix = "of Mastery", "(25-29)% increased Melee Weapon Attack Speed", statOrderKey = "10065", statOrder = { 10065 }, level = 85, group = "TinctureIncreasedAttackSpeed", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { "attack", "speed", "tincture" }, }, - ["TinctureDamageAgainstLowLife1"] = { type = "Suffix", affix = "of Execution", "(40-47)% increased Melee Weapon Damage against Enemies that are on Low Life", statOrderKey = "10075", statOrder = { 10075 }, level = 1, group = "WeaponDamageVsLowLifeEnemies", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { "damage", "attack", "tincture" }, }, - ["TinctureDamageAgainstLowLife2"] = { type = "Suffix", affix = "of Elimination", "(48-55)% increased Melee Weapon Damage against Enemies that are on Low Life", statOrderKey = "10075", statOrder = { 10075 }, level = 28, group = "WeaponDamageVsLowLifeEnemies", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { "damage", "attack", "tincture" }, }, - ["TinctureDamageAgainstLowLife3"] = { type = "Suffix", affix = "of Termination", "(56-63)% increased Melee Weapon Damage against Enemies that are on Low Life", statOrderKey = "10075", statOrder = { 10075 }, level = 47, group = "WeaponDamageVsLowLifeEnemies", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { "damage", "attack", "tincture" }, }, - ["TinctureDamageAgainstLowLife4"] = { type = "Suffix", affix = "of Extermination", "(64-71)% increased Melee Weapon Damage against Enemies that are on Low Life", statOrderKey = "10075", statOrder = { 10075 }, level = 65, group = "WeaponDamageVsLowLifeEnemies", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { "damage", "attack", "tincture" }, }, - ["TinctureDamageAgainstLowLife5"] = { type = "Suffix", affix = "of Assassination", "(72-79)% increased Melee Weapon Damage against Enemies that are on Low Life", statOrderKey = "10075", statOrder = { 10075 }, level = 80, group = "WeaponDamageVsLowLifeEnemies", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { "damage", "attack", "tincture" }, }, - ["TinctureLifeGainedFromEnemyDeath1"] = { type = "Suffix", affix = "of Success", "Gain (11-15) Life per Enemy Killed with Melee Weapons", statOrderKey = "10072", statOrder = { 10072 }, level = 1, group = "TinctureLifeGainedFromEnemyDeath", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { "resource", "life", "attack", "tincture" }, }, - ["TinctureLifeGainedFromEnemyDeath2"] = { type = "Suffix", affix = "of Victory", "Gain (16-20) Life per Enemy Killed with Melee Weapons", statOrderKey = "10072", statOrder = { 10072 }, level = 35, group = "TinctureLifeGainedFromEnemyDeath", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { "resource", "life", "attack", "tincture" }, }, - ["TinctureLifeGainedFromEnemyDeath3"] = { type = "Suffix", affix = "of Triumph", "Gain (21-25) Life per Enemy Killed with Melee Weapons", statOrderKey = "10072", statOrder = { 10072 }, level = 62, group = "TinctureLifeGainedFromEnemyDeath", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { "resource", "life", "attack", "tincture" }, }, - ["TinctureLifeGainedFromEnemyDeath4"] = { type = "Suffix", affix = "of Conquest", "Gain (26-30) Life per Enemy Killed with Melee Weapons", statOrderKey = "10072", statOrder = { 10072 }, level = 80, group = "TinctureLifeGainedFromEnemyDeath", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { "resource", "life", "attack", "tincture" }, }, - ["TinctureManaGainedFromEnemyDeath1"] = { type = "Suffix", affix = "of Absorption", "Gain (2-3) Mana per Enemy Killed with Melee Weapons", statOrderKey = "10066", statOrder = { 10066 }, level = 38, group = "ManaGainedOnWeaponKill", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { "tincture" }, }, - ["TinctureManaGainedFromEnemyDeath2"] = { type = "Suffix", affix = "of Osmosis", "Gain (4-5) Mana per Enemy Killed with Melee Weapons", statOrderKey = "10066", statOrder = { 10066 }, level = 50, group = "ManaGainedOnWeaponKill", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { "tincture" }, }, - ["TinctureManaGainedFromEnemyDeath3"] = { type = "Suffix", affix = "of Consumption", "Gain (6-8) Mana per Enemy Killed with Melee Weapons", statOrderKey = "10066", statOrder = { 10066 }, level = 68, group = "ManaGainedOnWeaponKill", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { "tincture" }, }, - ["TinctureManaGainedFromEnemyDeath4"] = { type = "Suffix", affix = "of Assimilation", "Gain (9-11) Mana per Enemy Killed with Melee Weapons", statOrderKey = "10066", statOrder = { 10066 }, level = 82, group = "ManaGainedOnWeaponKill", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { "tincture" }, }, - ["TinctureLifeGainPerTarget1"] = { type = "Suffix", affix = "of Rejuvenation", "Gain (2-3) Life per Enemy Hit with Melee Weapons", statOrderKey = "10071", statOrder = { 10071 }, level = 1, group = "TinctureLifeGainPerTarget", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "resource", "life", "attack", "tincture" }, }, - ["TinctureLifeGainPerTarget2"] = { type = "Suffix", affix = "of Restoration", "Gain (3-4) Life per Enemy Hit with Melee Weapons", statOrderKey = "10071", statOrder = { 10071 }, level = 50, group = "TinctureLifeGainPerTarget", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "resource", "life", "attack", "tincture" }, }, - ["TinctureLifeGainPerTarget3"] = { type = "Suffix", affix = "of Regrowth", "Gain (5-7) Life per Enemy Hit with Melee Weapons", statOrderKey = "10071", statOrder = { 10071 }, level = 77, group = "TinctureLifeGainPerTarget", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "resource", "life", "attack", "tincture" }, }, - ["TinctureManaGainPerTarget1"] = { type = "Suffix", affix = "of Enveloping", "Gain 1 Mana per Enemy Hit with Melee Weapons", statOrderKey = "10073", statOrder = { 10073 }, level = 45, group = "TinctureManaGainPerTarget", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "resource", "mana", "attack", "tincture" }, }, - ["TinctureManaGainPerTarget2"] = { type = "Suffix", affix = "of Siphoning", "Gain 2 Mana per Enemy Hit with Melee Weapons", statOrderKey = "10073", statOrder = { 10073 }, level = 68, group = "TinctureManaGainPerTarget", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "resource", "mana", "attack", "tincture" }, }, - ["TinctureManaGainPerTarget3"] = { type = "Suffix", affix = "of Devouring", "Gain 3 Mana per Enemy Hit with Melee Weapons", statOrderKey = "10073", statOrder = { 10073 }, level = 84, group = "TinctureManaGainPerTarget", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "resource", "mana", "attack", "tincture" }, }, - ["TinctureFlaskChargeIncrease1"] = { type = "Suffix", affix = "of Restocking", "(11-15)% increased Flask Charges gained from Kills with Melee Weapons", statOrderKey = "10070", statOrder = { 10070 }, level = 1, group = "FlaskChargesFromWeaponKills", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { "tincture" }, }, - ["TinctureFlaskChargeIncrease2"] = { type = "Suffix", affix = "of Replenishing", "(16-20)% increased Flask Charges gained from Kills with Melee Weapons", statOrderKey = "10070", statOrder = { 10070 }, level = 40, group = "FlaskChargesFromWeaponKills", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { "tincture" }, }, - ["TinctureFlaskChargeIncrease3"] = { type = "Suffix", affix = "of Pouring", "(21-25)% increased Flask Charges gained from Kills with Melee Weapons", statOrderKey = "10070", statOrder = { 10070 }, level = 72, group = "FlaskChargesFromWeaponKills", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { "tincture" }, }, - ["TinctureFlaskChargeIncrease4"] = { type = "Suffix", affix = "of Overflowing", "(26-30)% increased Flask Charges gained from Kills with Melee Weapons", statOrderKey = "10070", statOrder = { 10070 }, level = 85, group = "FlaskChargesFromWeaponKills", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { "tincture" }, }, - ["TinctureIgnorePhysDR1"] = { type = "Suffix", affix = "of Battering", "Melee Weapon Hits have (30-39)% chance to ignore Enemy Physical Damage Reduction", statOrderKey = "10036", statOrder = { 10036 }, level = 40, group = "TinctureIgnorePhysDR", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "physical_damage", "damage", "physical", "attack", "tincture" }, }, - ["TinctureIgnorePhysDR2"] = { type = "Suffix", affix = "of Crushing", "Melee Weapon Hits have (40-49)% chance to ignore Enemy Physical Damage Reduction", statOrderKey = "10036", statOrder = { 10036 }, level = 62, group = "TinctureIgnorePhysDR", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "physical_damage", "damage", "physical", "attack", "tincture" }, }, - ["TinctureIgnorePhysDR3"] = { type = "Suffix", affix = "of Overwhelming", "Melee Weapon Hits have (50-60)% chance to ignore Enemy Physical Damage Reduction", statOrderKey = "10036", statOrder = { 10036 }, level = 80, group = "TinctureIgnorePhysDR", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "physical_damage", "damage", "physical", "attack", "tincture" }, }, + ["TinctureEffect1"] = { type = "Prefix", affix = "Herbal", "(11-13)% increased effect", statOrderKey = "10050", statOrder = { 10050 }, level = 1, group = "TinctureEffect", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { }, }, + ["TinctureEffect2"] = { type = "Prefix", affix = "Natural", "(14-16)% increased effect", statOrderKey = "10050", statOrder = { 10050 }, level = 35, group = "TinctureEffect", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { }, }, + ["TinctureEffect3"] = { type = "Prefix", affix = "Medicinal", "(17-19)% increased effect", statOrderKey = "10050", statOrder = { 10050 }, level = 64, group = "TinctureEffect", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { }, }, + ["TinctureEffect4"] = { type = "Prefix", affix = "Horticultural", "(20-22)% increased effect", statOrderKey = "10050", statOrder = { 10050 }, level = 85, group = "TinctureEffect", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { }, }, + ["TinctureToxicityRate1"] = { type = "Prefix", affix = "Sustained", "(15-17)% reduced Mana Burn rate", statOrderKey = "10051", statOrder = { 10051 }, level = 1, group = "TinctureToxicityRate", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { }, }, + ["TinctureToxicityRate2"] = { type = "Prefix", affix = "Tenacious", "(18-20)% reduced Mana Burn rate", statOrderKey = "10051", statOrder = { 10051 }, level = 30, group = "TinctureToxicityRate", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { }, }, + ["TinctureToxicityRate3"] = { type = "Prefix", affix = "Persistent", "(21-23)% reduced Mana Burn rate", statOrderKey = "10051", statOrder = { 10051 }, level = 58, group = "TinctureToxicityRate", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { }, }, + ["TinctureToxicityRate4"] = { type = "Prefix", affix = "Persevering", "(24-26)% reduced Mana Burn rate", statOrderKey = "10051", statOrder = { 10051 }, level = 80, group = "TinctureToxicityRate", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { }, }, + ["TinctureCooldownRecovery1"] = { type = "Prefix", affix = "Lucid", "(13-17)% increased Cooldown Recovery Rate", statOrderKey = "10049", statOrder = { 10049 }, level = 1, group = "TinctureCooldownRecovery", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { }, }, + ["TinctureCooldownRecovery2"] = { type = "Prefix", affix = "Perceptive", "(18-22)% increased Cooldown Recovery Rate", statOrderKey = "10049", statOrder = { 10049 }, level = 30, group = "TinctureCooldownRecovery", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { }, }, + ["TinctureCooldownRecovery3"] = { type = "Prefix", affix = "Insightful", "(23-27)% increased Cooldown Recovery Rate", statOrderKey = "10049", statOrder = { 10049 }, level = 58, group = "TinctureCooldownRecovery", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { }, }, + ["TinctureCooldownRecovery4"] = { type = "Prefix", affix = "Astute", "(28-32)% increased Cooldown Recovery Rate", statOrderKey = "10049", statOrder = { 10049 }, level = 82, group = "TinctureCooldownRecovery", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { }, }, + ["TinctureEffectFasterToxicity1"] = { type = "Prefix", affix = "Potent", "35% increased effect", "(47-51)% increased Mana Burn rate", statOrderKey = "10050,10051", statOrder = { 10050, 10051 }, level = 1, group = "TinctureEffectFasterToxicity", weightKey = { "tincture", "default", }, weightVal = { 400, 0 }, modTags = { }, }, + ["TinctureEffectFasterToxicity2"] = { type = "Prefix", affix = "Concentrated", "35% increased effect", "(42-46)% increased Mana Burn rate", statOrderKey = "10050,10051", statOrder = { 10050, 10051 }, level = 49, group = "TinctureEffectFasterToxicity", weightKey = { "tincture", "default", }, weightVal = { 400, 0 }, modTags = { }, }, + ["TinctureEffectFasterToxicity3"] = { type = "Prefix", affix = "Enriched", "35% increased effect", "(37-41)% increased Mana Burn rate", statOrderKey = "10050,10051", statOrder = { 10050, 10051 }, level = 84, group = "TinctureEffectFasterToxicity", weightKey = { "tincture", "default", }, weightVal = { 400, 0 }, modTags = { }, }, + ["TinctureEffectSlowerToxicity1"] = { type = "Prefix", affix = "Thin", "(31-35)% reduced effect", "50% reduced Mana Burn rate", statOrderKey = "10050,10051", statOrder = { 10050, 10051 }, level = 1, group = "TinctureEffectSlowerToxicity", weightKey = { "tincture", "default", }, weightVal = { 400, 0 }, modTags = { }, }, + ["TinctureEffectSlowerToxicity2"] = { type = "Prefix", affix = "Diluted", "(26-30)% reduced effect", "50% reduced Mana Burn rate", statOrderKey = "10050,10051", statOrder = { 10050, 10051 }, level = 49, group = "TinctureEffectSlowerToxicity", weightKey = { "tincture", "default", }, weightVal = { 400, 0 }, modTags = { }, }, + ["TinctureEffectSlowerToxicity3"] = { type = "Prefix", affix = "Measured", "(21-25)% reduced effect", "50% reduced Mana Burn rate", statOrderKey = "10050,10051", statOrder = { 10050, 10051 }, level = 84, group = "TinctureEffectSlowerToxicity", weightKey = { "tincture", "default", }, weightVal = { 400, 0 }, modTags = { }, }, + ["TinctureIncreasedAilmentDuration1"] = { type = "Suffix", affix = "of the Wild", "(25-35)% increased Duration of Elemental Ailments from Melee Weapon Attacks", statOrderKey = "10070", statOrder = { 10070 }, level = 1, group = "TinctureIncreasedAilmentDuration", weightKey = { "tincture", "default", }, weightVal = { 700, 0 }, modTags = { "elemental", "attack", "ailment" }, }, + ["TinctureIncreasedAilmentDuration2"] = { type = "Suffix", affix = "of the Untamed", "(36-45)% increased Duration of Elemental Ailments from Melee Weapon Attacks", statOrderKey = "10070", statOrder = { 10070 }, level = 42, group = "TinctureIncreasedAilmentDuration", weightKey = { "tincture", "default", }, weightVal = { 700, 0 }, modTags = { "elemental", "attack", "ailment" }, }, + ["TinctureIncreasedAilmentDuration3"] = { type = "Suffix", affix = "of the Savage", "(46-55)% increased Duration of Elemental Ailments from Melee Weapon Attacks", statOrderKey = "10070", statOrder = { 10070 }, level = 60, group = "TinctureIncreasedAilmentDuration", weightKey = { "tincture", "default", }, weightVal = { 700, 0 }, modTags = { "elemental", "attack", "ailment" }, }, + ["TinctureIncreasedAilmentDuration4"] = { type = "Suffix", affix = "of the Beast", "(56-65)% increased Duration of Elemental Ailments from Melee Weapon Attacks", statOrderKey = "10070", statOrder = { 10070 }, level = 82, group = "TinctureIncreasedAilmentDuration", weightKey = { "tincture", "default", }, weightVal = { 700, 0 }, modTags = { "elemental", "attack", "ailment" }, }, + ["TinctureDamageOverTimeMultiplier1"] = { type = "Suffix", affix = "of Acrimony", "+(9-13)% to Damage over Time Multiplier with Melee Weapon Attacks", statOrderKey = "10069", statOrder = { 10069 }, level = 1, group = "TinctureDamageOverTimeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack" }, }, + ["TinctureDamageOverTimeMultiplier2"] = { type = "Suffix", affix = "of Dispersion", "+(14-18)% to Damage over Time Multiplier with Melee Weapon Attacks", statOrderKey = "10069", statOrder = { 10069 }, level = 34, group = "TinctureDamageOverTimeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack" }, }, + ["TinctureDamageOverTimeMultiplier3"] = { type = "Suffix", affix = "of Liquefaction", "+(19-23)% to Damage over Time Multiplier with Melee Weapon Attacks", statOrderKey = "10069", statOrder = { 10069 }, level = 58, group = "TinctureDamageOverTimeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack" }, }, + ["TinctureDamageOverTimeMultiplier4"] = { type = "Suffix", affix = "of Melting", "+(24-28)% to Damage over Time Multiplier with Melee Weapon Attacks", statOrderKey = "10069", statOrder = { 10069 }, level = 70, group = "TinctureDamageOverTimeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack" }, }, + ["TinctureDamageOverTimeMultiplier5"] = { type = "Suffix", affix = "of Dissolution", "+(29-33)% to Damage over Time Multiplier with Melee Weapon Attacks", statOrderKey = "10069", statOrder = { 10069 }, level = 84, group = "TinctureDamageOverTimeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack" }, }, + ["TinctureElementalPenetration1"] = { type = "Suffix", affix = "of Catalysing", "Melee Weapon Damage Penetrates (5-7)% Elemental Resistances", statOrderKey = "10075", statOrder = { 10075 }, level = 1, group = "TinctureElementalPenetration", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "elemental_damage", "damage", "elemental", "attack" }, }, + ["TinctureElementalPenetration2"] = { type = "Suffix", affix = "of Infusing", "Melee Weapon Damage Penetrates (8-10)% Elemental Resistances", statOrderKey = "10075", statOrder = { 10075 }, level = 32, group = "TinctureElementalPenetration", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "elemental_damage", "damage", "elemental", "attack" }, }, + ["TinctureElementalPenetration3"] = { type = "Suffix", affix = "of Empowering", "Melee Weapon Damage Penetrates (11-13)% Elemental Resistances", statOrderKey = "10075", statOrder = { 10075 }, level = 60, group = "TinctureElementalPenetration", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "elemental_damage", "damage", "elemental", "attack" }, }, + ["TinctureElementalPenetration4"] = { type = "Suffix", affix = "of the Unleashed", "Melee Weapon Damage Penetrates (14-16)% Elemental Resistances", statOrderKey = "10075", statOrder = { 10075 }, level = 73, group = "TinctureElementalPenetration", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "elemental_damage", "damage", "elemental", "attack" }, }, + ["TinctureElementalPenetration5"] = { type = "Suffix", affix = "of Overpowering", "Melee Weapon Damage Penetrates (17-19)% Elemental Resistances", statOrderKey = "10075", statOrder = { 10075 }, level = 85, group = "TinctureElementalPenetration", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "elemental_damage", "damage", "elemental", "attack" }, }, + ["TinctureCriticalStrikeMultiplier1"] = { type = "Suffix", affix = "of Ire", "+(9-13)% to Melee Weapon Critical Strike Multiplier", statOrderKey = "10068", statOrder = { 10068 }, level = 1, group = "TinctureCriticalStrikeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "critical" }, }, + ["TinctureCriticalStrikeMultiplier2"] = { type = "Suffix", affix = "of Anger", "+(14-18)% to Melee Weapon Critical Strike Multiplier", statOrderKey = "10068", statOrder = { 10068 }, level = 32, group = "TinctureCriticalStrikeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "critical" }, }, + ["TinctureCriticalStrikeMultiplier3"] = { type = "Suffix", affix = "of Rage", "+(19-23)% to Melee Weapon Critical Strike Multiplier", statOrderKey = "10068", statOrder = { 10068 }, level = 60, group = "TinctureCriticalStrikeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "critical" }, }, + ["TinctureCriticalStrikeMultiplier4"] = { type = "Suffix", affix = "of Fury", "+(24-28)% to Melee Weapon Critical Strike Multiplier", statOrderKey = "10068", statOrder = { 10068 }, level = 73, group = "TinctureCriticalStrikeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "critical" }, }, + ["TinctureCriticalStrikeMultiplier5"] = { type = "Suffix", affix = "of Ferocity", "+(29-33)% to Melee Weapon Critical Strike Multiplier", statOrderKey = "10068", statOrder = { 10068 }, level = 85, group = "TinctureCriticalStrikeMultiplier", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "damage", "attack", "critical" }, }, + ["TinctureIncreasedAttackSpeed1"] = { type = "Suffix", affix = "of Skill", "(15-19)% increased Melee Weapon Attack Speed", statOrderKey = "10066", statOrder = { 10066 }, level = 1, group = "TinctureIncreasedAttackSpeed", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { "attack", "speed" }, }, + ["TinctureIncreasedAttackSpeed2"] = { type = "Suffix", affix = "of Ease", "(20-24)% increased Melee Weapon Attack Speed", statOrderKey = "10066", statOrder = { 10066 }, level = 65, group = "TinctureIncreasedAttackSpeed", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { "attack", "speed" }, }, + ["TinctureIncreasedAttackSpeed3"] = { type = "Suffix", affix = "of Mastery", "(25-29)% increased Melee Weapon Attack Speed", statOrderKey = "10066", statOrder = { 10066 }, level = 85, group = "TinctureIncreasedAttackSpeed", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { "attack", "speed" }, }, + ["TinctureDamageAgainstLowLife1"] = { type = "Suffix", affix = "of Execution", "(40-47)% increased Melee Weapon Damage against Enemies that are on Low Life", statOrderKey = "10076", statOrder = { 10076 }, level = 1, group = "WeaponDamageVsLowLifeEnemies", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { "damage", "attack" }, }, + ["TinctureDamageAgainstLowLife2"] = { type = "Suffix", affix = "of Elimination", "(48-55)% increased Melee Weapon Damage against Enemies that are on Low Life", statOrderKey = "10076", statOrder = { 10076 }, level = 28, group = "WeaponDamageVsLowLifeEnemies", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { "damage", "attack" }, }, + ["TinctureDamageAgainstLowLife3"] = { type = "Suffix", affix = "of Termination", "(56-63)% increased Melee Weapon Damage against Enemies that are on Low Life", statOrderKey = "10076", statOrder = { 10076 }, level = 47, group = "WeaponDamageVsLowLifeEnemies", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { "damage", "attack" }, }, + ["TinctureDamageAgainstLowLife4"] = { type = "Suffix", affix = "of Extermination", "(64-71)% increased Melee Weapon Damage against Enemies that are on Low Life", statOrderKey = "10076", statOrder = { 10076 }, level = 65, group = "WeaponDamageVsLowLifeEnemies", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { "damage", "attack" }, }, + ["TinctureDamageAgainstLowLife5"] = { type = "Suffix", affix = "of Assassination", "(72-79)% increased Melee Weapon Damage against Enemies that are on Low Life", statOrderKey = "10076", statOrder = { 10076 }, level = 80, group = "WeaponDamageVsLowLifeEnemies", weightKey = { "tincture", "default", }, weightVal = { 600, 0 }, modTags = { "damage", "attack" }, }, + ["TinctureLifeGainedFromEnemyDeath1"] = { type = "Suffix", affix = "of Success", "Gain (11-15) Life per Enemy Killed with Melee Weapons", statOrderKey = "10073", statOrder = { 10073 }, level = 1, group = "TinctureLifeGainedFromEnemyDeath", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { "resource", "life", "attack" }, }, + ["TinctureLifeGainedFromEnemyDeath2"] = { type = "Suffix", affix = "of Victory", "Gain (16-20) Life per Enemy Killed with Melee Weapons", statOrderKey = "10073", statOrder = { 10073 }, level = 35, group = "TinctureLifeGainedFromEnemyDeath", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { "resource", "life", "attack" }, }, + ["TinctureLifeGainedFromEnemyDeath3"] = { type = "Suffix", affix = "of Triumph", "Gain (21-25) Life per Enemy Killed with Melee Weapons", statOrderKey = "10073", statOrder = { 10073 }, level = 62, group = "TinctureLifeGainedFromEnemyDeath", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { "resource", "life", "attack" }, }, + ["TinctureLifeGainedFromEnemyDeath4"] = { type = "Suffix", affix = "of Conquest", "Gain (26-30) Life per Enemy Killed with Melee Weapons", statOrderKey = "10073", statOrder = { 10073 }, level = 80, group = "TinctureLifeGainedFromEnemyDeath", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { "resource", "life", "attack" }, }, + ["TinctureManaGainedFromEnemyDeath1"] = { type = "Suffix", affix = "of Absorption", "Gain (2-3) Mana per Enemy Killed with Melee Weapons", statOrderKey = "10067", statOrder = { 10067 }, level = 38, group = "ManaGainedOnWeaponKill", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { }, }, + ["TinctureManaGainedFromEnemyDeath2"] = { type = "Suffix", affix = "of Osmosis", "Gain (4-5) Mana per Enemy Killed with Melee Weapons", statOrderKey = "10067", statOrder = { 10067 }, level = 50, group = "ManaGainedOnWeaponKill", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { }, }, + ["TinctureManaGainedFromEnemyDeath3"] = { type = "Suffix", affix = "of Consumption", "Gain (6-8) Mana per Enemy Killed with Melee Weapons", statOrderKey = "10067", statOrder = { 10067 }, level = 68, group = "ManaGainedOnWeaponKill", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { }, }, + ["TinctureManaGainedFromEnemyDeath4"] = { type = "Suffix", affix = "of Assimilation", "Gain (9-11) Mana per Enemy Killed with Melee Weapons", statOrderKey = "10067", statOrder = { 10067 }, level = 82, group = "ManaGainedOnWeaponKill", weightKey = { "tincture", "default", }, weightVal = { 1000, 0 }, modTags = { }, }, + ["TinctureLifeGainPerTarget1"] = { type = "Suffix", affix = "of Rejuvenation", "Gain (2-3) Life per Enemy Hit with Melee Weapons", statOrderKey = "10072", statOrder = { 10072 }, level = 1, group = "TinctureLifeGainPerTarget", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "resource", "life", "attack" }, }, + ["TinctureLifeGainPerTarget2"] = { type = "Suffix", affix = "of Restoration", "Gain (3-4) Life per Enemy Hit with Melee Weapons", statOrderKey = "10072", statOrder = { 10072 }, level = 50, group = "TinctureLifeGainPerTarget", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "resource", "life", "attack" }, }, + ["TinctureLifeGainPerTarget3"] = { type = "Suffix", affix = "of Regrowth", "Gain (5-7) Life per Enemy Hit with Melee Weapons", statOrderKey = "10072", statOrder = { 10072 }, level = 77, group = "TinctureLifeGainPerTarget", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "resource", "life", "attack" }, }, + ["TinctureManaGainPerTarget1"] = { type = "Suffix", affix = "of Enveloping", "Gain 1 Mana per Enemy Hit with Melee Weapons", statOrderKey = "10074", statOrder = { 10074 }, level = 45, group = "TinctureManaGainPerTarget", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "resource", "mana", "attack" }, }, + ["TinctureManaGainPerTarget2"] = { type = "Suffix", affix = "of Siphoning", "Gain 2 Mana per Enemy Hit with Melee Weapons", statOrderKey = "10074", statOrder = { 10074 }, level = 68, group = "TinctureManaGainPerTarget", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "resource", "mana", "attack" }, }, + ["TinctureManaGainPerTarget3"] = { type = "Suffix", affix = "of Devouring", "Gain 3 Mana per Enemy Hit with Melee Weapons", statOrderKey = "10074", statOrder = { 10074 }, level = 84, group = "TinctureManaGainPerTarget", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "resource", "mana", "attack" }, }, + ["TinctureFlaskChargeIncrease1"] = { type = "Suffix", affix = "of Restocking", "(11-15)% increased Flask Charges gained from Kills with Melee Weapons", statOrderKey = "10071", statOrder = { 10071 }, level = 1, group = "FlaskChargesFromWeaponKills", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { }, }, + ["TinctureFlaskChargeIncrease2"] = { type = "Suffix", affix = "of Replenishing", "(16-20)% increased Flask Charges gained from Kills with Melee Weapons", statOrderKey = "10071", statOrder = { 10071 }, level = 40, group = "FlaskChargesFromWeaponKills", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { }, }, + ["TinctureFlaskChargeIncrease3"] = { type = "Suffix", affix = "of Pouring", "(21-25)% increased Flask Charges gained from Kills with Melee Weapons", statOrderKey = "10071", statOrder = { 10071 }, level = 72, group = "FlaskChargesFromWeaponKills", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { }, }, + ["TinctureFlaskChargeIncrease4"] = { type = "Suffix", affix = "of Overflowing", "(26-30)% increased Flask Charges gained from Kills with Melee Weapons", statOrderKey = "10071", statOrder = { 10071 }, level = 85, group = "FlaskChargesFromWeaponKills", weightKey = { "tincture", "default", }, weightVal = { 800, 0 }, modTags = { }, }, + ["TinctureIgnorePhysDR1"] = { type = "Suffix", affix = "of Battering", "Melee Weapon Hits have (30-39)% chance to ignore Enemy Physical Damage Reduction", statOrderKey = "10037", statOrder = { 10037 }, level = 40, group = "TinctureIgnorePhysDR", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "physical_damage", "damage", "physical", "attack" }, }, + ["TinctureIgnorePhysDR2"] = { type = "Suffix", affix = "of Crushing", "Melee Weapon Hits have (40-49)% chance to ignore Enemy Physical Damage Reduction", statOrderKey = "10037", statOrder = { 10037 }, level = 62, group = "TinctureIgnorePhysDR", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "physical_damage", "damage", "physical", "attack" }, }, + ["TinctureIgnorePhysDR3"] = { type = "Suffix", affix = "of Overwhelming", "Melee Weapon Hits have (50-60)% chance to ignore Enemy Physical Damage Reduction", statOrderKey = "10037", statOrder = { 10037 }, level = 80, group = "TinctureIgnorePhysDR", weightKey = { "tincture", "default", }, weightVal = { 500, 0 }, modTags = { "physical_damage", "damage", "physical", "attack" }, }, } \ No newline at end of file From 099ec7acb9c03e7a8398207ee4871c98a557b667 Mon Sep 17 00:00:00 2001 From: Regisle Date: Wed, 21 Aug 2024 20:59:00 +0930 Subject: [PATCH 07/10] fix remaining conprint --- src/Classes/Item.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Classes/Item.lua b/src/Classes/Item.lua index 87652a9ae1..1174498baf 100644 --- a/src/Classes/Item.lua +++ b/src/Classes/Item.lua @@ -1203,7 +1203,6 @@ function ItemClass:Craft() end end end - ConPrintTable(modLineMultipliers) for _, list in ipairs({self.prefixes,self.suffixes}) do for i = 1, self.affixLimit / 2 do local affix = list[i] From b4225b5525bdc7d5fac3eb2edff4cf53ee14a287 Mon Sep 17 00:00:00 2001 From: Regisle Date: Fri, 30 Aug 2024 13:31:42 +0930 Subject: [PATCH 08/10] make function more generic --- src/Classes/Item.lua | 64 ++++++++++++++++++++------------------------ 1 file changed, 29 insertions(+), 35 deletions(-) diff --git a/src/Classes/Item.lua b/src/Classes/Item.lua index 1174498baf..5d28368b97 100644 --- a/src/Classes/Item.lua +++ b/src/Classes/Item.lua @@ -13,52 +13,46 @@ local m_floor = math.floor local dmgTypeList = {"Physical", "Lightning", "Cold", "Fire", "Chaos"} local catalystList = {"Abrasive", "Accelerating", "Fertile", "Imbued", "Intrinsic", "Noxious", "Prismatic", "Tempering", "Turbulent", "Unstable"} local catalystTags = { - { "attack" }, - { "speed" }, - { "life", "mana", "resource" }, - { "caster" }, - { "jewellery_attribute", "attribute" }, - { "physical_damage", "chaos_damage" }, - { "jewellery_resistance", "resistance" }, - { "jewellery_defense", "defences" }, - { "jewellery_elemental" ,"elemental_damage" }, - { "critical" }, + { attack = true }, + { speed = true }, + { life = true, mana = true, resource = true }, + { caster = true }, + { jewellery_attribute = true, attribute = true }, + { physical_damage = true, chaos_damage = true }, + { jewellery_resistance = true, resistance = true }, + { jewellery_defense = true, defences = true }, + { jewellery_elemental = true ,elemental_damage = true }, + { critical = true }, } -- Helper Function used by tinctures and catalysts -- (can be used in future for heist enchants/jewellery) ----@param typeID type of mod, either tincture or catalystID ----@param tags list of tags on the mod +---@param typeID type of mod, either generic, tincture or catalyst +---@param modTags list of tags on the mod +---@param validTags list of tags valid for matching (or catalyst index for catalysts) ---@param quality number of quality, either item base, or catalyst ---@param extraMult any extra multipliers (eg increased effect for tinctures) ---@return multiplier value for the mod based on the tags -local function getRangeScalarFromTag(typeID, tags, quality, extraMult) - if not typeID or (typeID ~= "tincture" and (type(typeID) ~= "number" or not catalystTags[typeID])) or not tags or type(tags) ~= "table" or #tags == 0 then +local function getRangeScalarFromTag(typeID, modTags, validTags, quality, extraMult) + if typeID == "catalyst" then + if type(validTags) ~= "number" or not catalystTags[validTags] then + return 1 + end + validTags = catalystTags[validTags] + end + if not modTags or type(modTags) ~= "table" or #modTags == 0 or not validTags or type(validTags) ~= "table" then return 1 end if not quality then quality = 20 end - if typeID == "tincture" then - for _, curTag in ipairs(tags) do - if curTag == "tincture" then + for _, curTag in ipairs(modTags) do + if validTags[curTag] then + if typeID == "catalyst" or typeID == "tincture" then return (100 + (extraMult and extraMult["localEffect"] or 0)) / 100 * (100 + quality) / 100 end - end - return 1 - end - - -- Create a fast lookup table for all provided tags - local tagLookup = {} - for _, curTag in ipairs(tags) do - tagLookup[curTag] = true; - end - - -- Find if any of the catalyst's tags match the provided tags - for _, catalystTag in ipairs(catalystTags[typeID]) do - if tagLookup[catalystTag] then - return (100 + quality) / 100 + return (100 + (extraMult and extraMult["localEffect"] or 0)) / 100 end end return 1 @@ -744,7 +738,7 @@ function ItemClass:ParseRaw(raw, rarity, highQuality) foundImplicit = true gameModeStage = "IMPLICIT" end - local rangeScalar = getRangeScalarFromTag(self.base.tincture and "tincture" or self.catalyst, modLine.modTags, self.quality or self.catalystQuality, modLineMultipliers) + local rangeScalar = getRangeScalarFromTag(self.base.tincture and "tincture" or self.catalyst and "catalyst", modLine.modTags, self.base.tincture and { tincture = true } or self.catalyst, self.catalyst and self.catalystQuality or self.quality, modLineMultipliers) local rangedLine = itemLib.applyRange(line, 1, rangeScalar) local modList, extra = modLib.parseMod(rangedLine) if (not modList or extra) and self.rawLines[l+1] then @@ -1216,8 +1210,8 @@ function ItemClass:Craft() elseif mod.type == "Suffix" then self.nameSuffix = " " .. mod.affix end - self.requirements.level = m_max(self.requirements.level or 0, m_floor(mod.level * 0.8)) - local rangeScalar = getRangeScalarFromTag(self.base.tincture and "tincture" or self.catalyst, self.base.tincture and mod.type == "Suffix" and { "tincture" } or mod.modTags, self.quality or self.catalystQuality, modLineMultipliers) + self.requirements.level = m_max(self.requirements.level or 0, m_floor(mod.level * 0.8)) + local rangeScalar = getRangeScalarFromTag(self.base.tincture and "tincture" or self.catalyst and "catalyst", self.base.tincture and mod.type == "Suffix" and { "tincture" } or mod.modTags, self.base.tincture and { tincture = true } or self.catalyst, self.catalyst and self.catalystQuality or self.quality, modLineMultipliers) for i, line in ipairs(mod) do line = itemLib.applyRange(line, affix.range or 0.5, rangeScalar) local order = mod.statOrder[i] @@ -1630,7 +1624,7 @@ function ItemClass:BuildModList() -- Check if line actually has a range if modLine.line:find("%((%-?%d+%.?%d*)%-(%-?%d+%.?%d*)%)") then local strippedModeLine = modLine.line:gsub("\n"," ") - local rangeScalar = getRangeScalarFromTag(self.base.tincture and "tincture" or self.catalyst, modLine.modTags, self.quality or self.catalystQuality, modLineMultipliers) + local rangeScalar = getRangeScalarFromTag(self.base.tincture and "tincture" or self.catalyst and "catalyst", modLine.modTags, self.base.tincture and { tincture = true } or self.catalyst, self.catalyst and self.catalystQuality or self.quality, modLineMultipliers) -- Put the modified value into the string local line = itemLib.applyRange(strippedModeLine, modLine.range, rangeScalar) -- Check if we can parse it before adding the mods From 1328cc7bc1b06d194820f0bc2032deddf1f50cfa Mon Sep 17 00:00:00 2001 From: Regisle Date: Fri, 30 Aug 2024 13:52:24 +0930 Subject: [PATCH 09/10] remove function as its getting to be more effort than it helps --- src/Classes/Item.lua | 113 +++++++++++++++++++++++++++++-------------- 1 file changed, 77 insertions(+), 36 deletions(-) diff --git a/src/Classes/Item.lua b/src/Classes/Item.lua index 5d28368b97..88d76f4011 100644 --- a/src/Classes/Item.lua +++ b/src/Classes/Item.lua @@ -25,39 +25,6 @@ local catalystTags = { { critical = true }, } --- Helper Function used by tinctures and catalysts --- (can be used in future for heist enchants/jewellery) ----@param typeID type of mod, either generic, tincture or catalyst ----@param modTags list of tags on the mod ----@param validTags list of tags valid for matching (or catalyst index for catalysts) ----@param quality number of quality, either item base, or catalyst ----@param extraMult any extra multipliers (eg increased effect for tinctures) ----@return multiplier value for the mod based on the tags -local function getRangeScalarFromTag(typeID, modTags, validTags, quality, extraMult) - if typeID == "catalyst" then - if type(validTags) ~= "number" or not catalystTags[validTags] then - return 1 - end - validTags = catalystTags[validTags] - end - if not modTags or type(modTags) ~= "table" or #modTags == 0 or not validTags or type(validTags) ~= "table" then - return 1 - end - if not quality then - quality = 20 - end - - for _, curTag in ipairs(modTags) do - if validTags[curTag] then - if typeID == "catalyst" or typeID == "tincture" then - return (100 + (extraMult and extraMult["localEffect"] or 0)) / 100 * (100 + quality) / 100 - end - return (100 + (extraMult and extraMult["localEffect"] or 0)) / 100 - end - end - return 1 -end - local influenceInfo = itemLib.influenceInfo local ItemClass = newClass("Item", function(self, raw, rarity, highQuality) @@ -738,7 +705,32 @@ function ItemClass:ParseRaw(raw, rarity, highQuality) foundImplicit = true gameModeStage = "IMPLICIT" end - local rangeScalar = getRangeScalarFromTag(self.base.tincture and "tincture" or self.catalyst and "catalyst", modLine.modTags, self.base.tincture and { tincture = true } or self.catalyst, self.catalyst and self.catalystQuality or self.quality, modLineMultipliers) + local rangeScalar = 1 + if self.catalyst and catalystTags[self.catalyst] then + for _, curTag in ipairs(modLine.modTags) do + if catalystTags[self.catalyst][curTag] then + rangeScalar = (100 + self.catalystQuality) / 100 + break + end + end + elseif self.base.tincture then + for _, curTag in ipairs(modLine.modTags) do + if curTag == "tincture" then + rangeScalar = (100 + (modLineMultipliers["localEffect"] or 0)) / 100 * (100 + (self.quality or 20)) / 100 + break + end + end + end + if not self.base.tincture then + for searchTag, mult in pairs(modLineMultipliers) do + for _, curTag in ipairs(modLine.modTags) do + if curTag == searchTag then + rangeScalar = rangeScalar * mult + break + end + end + end + end local rangedLine = itemLib.applyRange(line, 1, rangeScalar) local modList, extra = modLib.parseMod(rangedLine) if (not modList or extra) and self.rawLines[l+1] then @@ -1211,7 +1203,31 @@ function ItemClass:Craft() self.nameSuffix = " " .. mod.affix end self.requirements.level = m_max(self.requirements.level or 0, m_floor(mod.level * 0.8)) - local rangeScalar = getRangeScalarFromTag(self.base.tincture and "tincture" or self.catalyst and "catalyst", self.base.tincture and mod.type == "Suffix" and { "tincture" } or mod.modTags, self.base.tincture and { tincture = true } or self.catalyst, self.catalyst and self.catalystQuality or self.quality, modLineMultipliers) + local rangeScalar = 1 + if self.catalyst and catalystTags[self.catalyst] then + for _, curTag in ipairs(mod.modTags) do + if catalystTags[self.catalyst][curTag] then + rangeScalar = (100 + self.catalystQuality) / 100 + break + end + end + elseif self.base.tincture and mod.type == "Suffix" then + rangeScalar = (100 + (modLineMultipliers["localEffect"] or 0)) / 100 * (100 + (self.quality or 20)) / 100 + end + if not self.base.tincture then + for searchTag, mult in pairs(modLineMultipliers) do + if searchTag == mod.type then + rangeScalar = rangeScalar * mult + else + for _, curTag in ipairs(modLine.modTags) do + if curTag == searchTag then + rangeScalar = rangeScalar * mult + break + end + end + end + end + end for i, line in ipairs(mod) do line = itemLib.applyRange(line, affix.range or 0.5, rangeScalar) local order = mod.statOrder[i] @@ -1624,7 +1640,32 @@ function ItemClass:BuildModList() -- Check if line actually has a range if modLine.line:find("%((%-?%d+%.?%d*)%-(%-?%d+%.?%d*)%)") then local strippedModeLine = modLine.line:gsub("\n"," ") - local rangeScalar = getRangeScalarFromTag(self.base.tincture and "tincture" or self.catalyst and "catalyst", modLine.modTags, self.base.tincture and { tincture = true } or self.catalyst, self.catalyst and self.catalystQuality or self.quality, modLineMultipliers) + local rangeScalar = 1 + if self.catalyst and catalystTags[self.catalyst] then + for _, curTag in ipairs(modLine.modTags) do + if catalystTags[self.catalyst][curTag] then + rangeScalar = (100 + self.catalystQuality) / 100 + break + end + end + elseif self.base.tincture then + for _, curTag in ipairs(modLine.modTags) do + if curTag == "tincture" then + rangeScalar = (100 + (modLineMultipliers["localEffect"] or 0)) / 100 * (100 + (self.quality or 20)) / 100 + break + end + end + end + if not self.base.tincture then + for searchTag, mult in pairs(modLineMultipliers) do + for _, curTag in ipairs(modLine.modTags) do + if curTag == searchTag then + rangeScalar = rangeScalar * mult + break + end + end + end + end -- Put the modified value into the string local line = itemLib.applyRange(strippedModeLine, modLine.range, rangeScalar) -- Check if we can parse it before adding the mods From 8d7119a3c99e1050fcc47494ca5055584d575094 Mon Sep 17 00:00:00 2001 From: Regisle Date: Fri, 30 Aug 2024 14:00:10 +0930 Subject: [PATCH 10/10] dont check for local effect on non tincture items --- src/Classes/Item.lua | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Classes/Item.lua b/src/Classes/Item.lua index 88d76f4011..0636ebea15 100644 --- a/src/Classes/Item.lua +++ b/src/Classes/Item.lua @@ -723,10 +723,12 @@ function ItemClass:ParseRaw(raw, rarity, highQuality) end if not self.base.tincture then for searchTag, mult in pairs(modLineMultipliers) do - for _, curTag in ipairs(modLine.modTags) do - if curTag == searchTag then - rangeScalar = rangeScalar * mult - break + if searchTag ~= "localEffect" then + for _, curTag in ipairs(modLine.modTags) do + if curTag == searchTag then + rangeScalar = rangeScalar * mult + break + end end end end