From 9ad3e3e3e17a116cf21f112908d0c21cb90db6db Mon Sep 17 00:00:00 2001 From: Blitz54 Date: Sun, 28 Jun 2026 21:01:21 -0500 Subject: [PATCH 1/3] Remove item requirements from granted skills --- src/Classes/Item.lua | 57 ++---------------------------------- src/Data/Uniques/staff.lua | 1 + src/Export/Uniques/staff.lua | 1 + 3 files changed, 4 insertions(+), 55 deletions(-) diff --git a/src/Classes/Item.lua b/src/Classes/Item.lua index c9e091b69d..91920aef4d 100644 --- a/src/Classes/Item.lua +++ b/src/Classes/Item.lua @@ -604,10 +604,8 @@ function ItemClass:ParseRaw(raw, rarity, highQuality) end self.armourData = self.armourData or { } self.armourData[specName] = specToNumber(specVal) - elseif specName == "Requires Level" then + elseif specName == "Requires: Level" then self.requirements.level = specToNumber(specVal) - minimumReqLevel = minimumReqLevel or {} - table.insert(minimumReqLevel, { name = self.name, level = specVal }) elseif specName == "Level" then -- Requirements from imported items can't always be trusted importedLevelReq = specToNumber(specVal) @@ -1210,19 +1208,6 @@ function ItemClass:ParseRaw(raw, rarity, highQuality) self.requirements.level = self.base.req.level end end - if self.base and not self.requirements.baseLevel then - -- Add only if not already present, to prevent overwriting original value. - local exists = false - for _, entry in ipairs(minimumReqLevel) do - if entry.name == self.title then - exists = true - break - end - end - if not exists then - self.requirements.baseLevel = self.base.req.level - end - end self.affixLimit = 0 if self.crafted then if not self.affixes then @@ -1651,7 +1636,7 @@ function ItemClass:Craft() elseif mod.type == "Suffix" then self.nameSuffix = self.nameSuffix .. " " .. mod.affix end - self.requirements.level = m_max(self.requirements.level or 0, m_floor(mod.level * 0.8)) + self.requirements.level = m_max(self.requirements.level or 0, m_floor(mod.level * 0.8), self.requirements.runeLevel or 0) local rangeScalar = getCatalystScalar(self.catalyst, mod, self.catalystQuality) for i, line in ipairs(mod) do line = itemLib.applyRange(line, affix.range or 0.5, rangeScalar) @@ -2153,44 +2138,6 @@ function ItemClass:BuildModList() self.canSocketJewelBase["Ruby"] = calcLocal(baseList, "CanSocketJewelBaseRuby", "FLAG", 0) end - local reqLevel = 0 - local minReqLevel - - for _, entry in ipairs(minimumReqLevel) do - if entry.name == self.title then - minReqLevel = tonumber(entry.level) - break - end - end - - if #self.grantedSkills >= 1 then - local skillDef = data.skills[self.grantedSkills[1].skillId] - local gemId = data.gemForSkill[skillDef] - local gem = data.gems[gemId] - - local skillLevel = self.grantedSkills[1].level or #skillDef.levels - local chosenLevel = skillDef.levels[skillLevel] or skillDef.levels[#skillDef.levels] - local gemLevelReq = chosenLevel.levelRequirement - - reqLevel = m_max(gemLevelReq, minReqLevel or 0, self.requirements.runeLevel or 0, self.requirements.baseLevel or 0) - - -- Rune level and unique base level don't scale attribute requirements. Example, Cursecarver has 33 minimum required level - -- but the intelligence requirement will be 21 at level 4 skill. - local attrLevel = m_max(gemLevelReq, self.requirements.baseLevel or 0) - - if self.base.type == "Sceptre" or self.base.type == "Wand" or self.base.type == "Staff" then - self.requirements.int = calcLib.getGemStatRequirement(attrLevel, gem.reqInt) - self.requirements.dex = calcLib.getGemStatRequirement(attrLevel, gem.reqDex) - self.requirements.str = calcLib.getGemStatRequirement(attrLevel, gem.reqStr) - end - else - -- If no granted skills, we want to use the "Requires Level" from the unique instead of the base armour type level requirement. - -- Currently there are no Uniques that use a lower level than the base, but maybe in the future. - reqLevel = m_max(minReqLevel or 0, self.requirements.runeLevel or 0, self.requirements.baseLevel or 0) - end - - self.requirements.level = reqLevel - if self.name == "Tabula Rasa, Simple Robe" or self.name == "Skin of the Loyal, Simple Robe" or self.name == "Skin of the Lords, Simple Robe" or self.name == "The Apostate, Cabalist Regalia" then -- Hack to remove the energy shield and base int requirement baseList:NewMod("ArmourData", "LIST", { key = "EnergyShield", value = 0 }) diff --git a/src/Data/Uniques/staff.lua b/src/Data/Uniques/staff.lua index e31e14a144..d4276211a5 100644 --- a/src/Data/Uniques/staff.lua +++ b/src/Data/Uniques/staff.lua @@ -55,6 +55,7 @@ Trigger Spark Skill on killing a Shocked Enemy The Raven's Flock Perching Staff League: Runes of Aldur +LevelReq: 65 Implicits: 1 Grants Skill: Level (1-20) Spiraling Conspiracy (8-16)% increased Cast Speed diff --git a/src/Export/Uniques/staff.lua b/src/Export/Uniques/staff.lua index 1639401c25..de284400bc 100644 --- a/src/Export/Uniques/staff.lua +++ b/src/Export/Uniques/staff.lua @@ -54,6 +54,7 @@ UniqueTriggerSparkOnKillingShockedEnemy1 ]],[[ The Raven's Flock Perching Staff +LevelReq: 65 League: Runes of Aldur Implicits: 1 Grants Skill: Level (1-20) Spiraling Conspiracy From 18144da2ef3c6e23f3a538cf66a5afe35003e598 Mon Sep 17 00:00:00 2001 From: Blitz54 Date: Sun, 28 Jun 2026 23:08:35 -0500 Subject: [PATCH 2/3] Initial commit, level reqs fixed --- src/Classes/ImportTab.lua | 13 ++++++----- src/Classes/Item.lua | 12 +++++----- src/Data/Bases/amulet.lua | 2 +- src/Data/Bases/sceptre.lua | 40 +++++++++++++++++----------------- src/Data/Bases/staff.lua | 28 ++++++++++++------------ src/Data/Bases/wand.lua | 22 +++++++++---------- src/Data/Uniques/sceptre.lua | 1 + src/Data/Uniques/staff.lua | 1 - src/Export/Scripts/bases.lua | 5 +++-- src/Export/Uniques/sceptre.lua | 1 + src/Export/Uniques/staff.lua | 1 - 11 files changed, 66 insertions(+), 60 deletions(-) diff --git a/src/Classes/ImportTab.lua b/src/Classes/ImportTab.lua index 6fa5dc5d0e..096ec6e4df 100644 --- a/src/Classes/ImportTab.lua +++ b/src/Classes/ImportTab.lua @@ -48,7 +48,7 @@ local ImportTabClass = newClass("ImportTab", "ControlHost", "Control", function( self.controls.logoutApiButton.shown = function() return (self.charImportMode == "SELECTCHAR" or self.charImportMode == "GETACCOUNTNAME") and main.api.authToken ~= nil end - + self.controls.characterImportAnchor = new("Control", {"TOPLEFT",self.controls.sectionCharImport,"TOPLEFT"}, {6, 40, 200, 16}) self.controls.sectionCharImport.height = function() return self.charImportMode == "AUTHENTICATION" and 60 or 200 end @@ -442,7 +442,7 @@ function ImportTabClass:DownloadCharacterList() return "Standard" end end - + self.charImportMode = "DOWNLOADCHARLIST" self.charImportStatus = "Retrieving character list..." local realm = realmList[self.controls.accountRealm.selIndex] @@ -954,10 +954,10 @@ function ImportTabClass:ImportItemsAndSkills(charData) local funcGetGemInstance = function(skillData) local typeLine = sanitiseText(skillData.typeLine) .. (skillData.support and " Support" or "") local gemId = self.build.data.gemForBaseName[typeLine:lower()] - + if typeLine:match("^Spectre:") then gemId = "Metadata/Items/Gems/SkillGemSummonSpectre" - end + end if typeLine:match("^Companion:") then gemId = "Metadata/Items/Gems/SkillGemSummonBeast" end @@ -1061,7 +1061,7 @@ function ImportTabClass:ImportItemsAndSkills(charData) end for _, skillData in pairs(charData.skills) do local gemInstance = funcGetGemInstance(skillData) - + if gemInstance then local group = { label = "", enabled = true, gemList = { } } t_insert(group.gemList, gemInstance ) @@ -1291,6 +1291,9 @@ function ImportTabClass:ImportItem(itemData, slotName) end if itemData.requirements and (not itemData.socketedItems or not itemData.socketedItems[1]) then -- Requirements cannot be trusted if there are socketed gems, as they may override the item's natural requirements + -- This means some uniques will not import Level requirement properly for now. We probably need to compare the level to the equipped rune levels, + -- and only accept the imported level if it's higher than the runes. Problem with that, when we remove the runes, the required level will drop back + -- to the base item level. Which is sometimes incorrect for uniques (they can be higher than the base, like Sylvan's Effigy) item.requirements = { } for _, req in ipairs(itemData.requirements) do if req.name == "Level" then diff --git a/src/Classes/Item.lua b/src/Classes/Item.lua index 91920aef4d..ffbed18d28 100644 --- a/src/Classes/Item.lua +++ b/src/Classes/Item.lua @@ -506,6 +506,11 @@ function ItemClass:ParseRaw(raw, rarity, highQuality) end self.checkSection = false end + local levelReq = line:match("^Requires:? Level (%d+)") + if levelReq then + self.requirements.level = tonumber(levelReq) + goto continue + end local specName, specVal = line:match("^([%a %(%)]+:?): (.+)$") if specName then if specName == "Class:" then @@ -604,11 +609,11 @@ function ItemClass:ParseRaw(raw, rarity, highQuality) end self.armourData = self.armourData or { } self.armourData[specName] = specToNumber(specVal) - elseif specName == "Requires: Level" then - self.requirements.level = specToNumber(specVal) elseif specName == "Level" then -- Requirements from imported items can't always be trusted importedLevelReq = specToNumber(specVal) + elseif specName == "Requires Level" then + self.requirements.level = specToNumber(specVal) elseif specName == "LevelReq" then self.requirements.level = specToNumber(specVal) elseif specName == "Has Alt Variant" then @@ -688,9 +693,6 @@ function ItemClass:ParseRaw(raw, rarity, highQuality) self.catalystQuality = specToNumber(specVal) elseif specName == "Note" then self.note = specVal - elseif specName == "Str" or specName == "Strength" or specName == "Dex" or specName == "Dexterity" or - specName == "Int" or specName == "Intelligence" then - self.requirements[specName:sub(1,3):lower()] = specToNumber(specVal) elseif specName == "Critical Hit Range" or specName == "Attacks per Second" or specName == "Weapon Range" or specName == "Critical Hit Chance" or specName == "Physical Damage" or specName == "Elemental Damage" or specName == "Chaos Damage" or specName == "Fire Damage" or specName == "Cold Damage" or specName == "Lightning Damage" or diff --git a/src/Data/Bases/amulet.lua b/src/Data/Bases/amulet.lua index be1b2ba358..9c2a4d1446 100644 --- a/src/Data/Bases/amulet.lua +++ b/src/Data/Bases/amulet.lua @@ -133,7 +133,7 @@ itemBases["Absent Amulet"] = { variantList = { "Cast on Elemental Ailment", "Cast on Critical", "Cast on Dodge", "Rhoa Mount", "Archmage", "Trinity", "Eternal Rage", }, implicit = "-1 Prefix Modifier allowed\n-1 Suffix Modifier allowed\n{variant:1}Grants Skill: Level (1-20) Cast on Elemental Ailment\n{variant:2}Grants Skill: Level (1-20) Cast on Critical\n{variant:3}Grants Skill: Level (1-20) Cast on Dodge\n{variant:4}Grants Skill: Level (1-20) Rhoa Mount\n{variant:5}Grants Skill: Level (1-20) Archmage\n{variant:6}Grants Skill: Level (1-20) Trinity\n{variant:7}Grants Skill: Level (1-20) Eternal Rage", implicitModTypes = { { }, { }, }, - req = { level = 49, }, + req = { level = 50, }, } itemBases["Corona Amulet"] = { type = "Amulet", diff --git a/src/Data/Bases/sceptre.lua b/src/Data/Bases/sceptre.lua index bb5835a368..e8a7884bb4 100644 --- a/src/Data/Bases/sceptre.lua +++ b/src/Data/Bases/sceptre.lua @@ -20,7 +20,7 @@ itemBases["Stoic Sceptre"] = { tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Discipline", implicitModTypes = { }, - req = { int = 12, }, + req = { level = 6, int = 12, }, } itemBases["Lupine Sceptre"] = { type = "Sceptre", @@ -30,7 +30,7 @@ itemBases["Lupine Sceptre"] = { tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Skeletal Warrior Minion", implicitModTypes = { }, - req = { int = 24, }, + req = { level = 12, int = 24, }, } itemBases["Omen Sceptre"] = { type = "Sceptre", @@ -40,7 +40,7 @@ itemBases["Omen Sceptre"] = { tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Malice", implicitModTypes = { }, - req = { str = 12, int = 25, }, + req = { level = 16, str = 12, int = 25, }, } itemBases["Ochre Sceptre"] = { type = "Sceptre", @@ -50,7 +50,7 @@ itemBases["Ochre Sceptre"] = { tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Skeletal Warrior Minion", implicitModTypes = { }, - req = { int = 40, }, + req = { level = 21, int = 40, }, } itemBases["Shrine Sceptre"] = { type = "Sceptre", @@ -60,7 +60,7 @@ itemBases["Shrine Sceptre"] = { tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Purity of Fire", implicitModTypes = { }, - req = { str = 17, int = 38, }, + req = { level = 26, str = 17, int = 38, }, } itemBases["Shrine Sceptre"] = { type = "Sceptre", @@ -70,7 +70,7 @@ itemBases["Shrine Sceptre"] = { tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Purity of Ice", implicitModTypes = { }, - req = { str = 17, int = 38, }, + req = { level = 26, str = 17, int = 38, }, } itemBases["Shrine Sceptre"] = { type = "Sceptre", @@ -80,7 +80,7 @@ itemBases["Shrine Sceptre"] = { tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Purity of Lightning", implicitModTypes = { }, - req = { str = 17, int = 38, }, + req = { level = 26, str = 17, int = 38, }, } itemBases["Devouring Sceptre"] = { type = "Sceptre", @@ -90,7 +90,7 @@ itemBases["Devouring Sceptre"] = { tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Skeletal Warrior Minion", implicitModTypes = { }, - req = { int = 60, }, + req = { level = 33, int = 60, }, } itemBases["Clasped Sceptre"] = { type = "Sceptre", @@ -100,7 +100,7 @@ itemBases["Clasped Sceptre"] = { tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Heart of Ice", implicitModTypes = { }, - req = { int = 65, }, + req = { level = 36, int = 65, }, } itemBases["Devotional Sceptre"] = { type = "Sceptre", @@ -110,7 +110,7 @@ itemBases["Devotional Sceptre"] = { tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Skeletal Warrior Minion", implicitModTypes = { }, - req = { str = 26, int = 63, }, + req = { level = 45, str = 26, int = 63, }, } itemBases["Wrath Sceptre"] = { type = "Sceptre", @@ -120,7 +120,7 @@ itemBases["Wrath Sceptre"] = { tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Fulmination", implicitModTypes = { }, - req = { int = 87, }, + req = { level = 49, int = 87, }, } itemBases["Aromatic Sceptre"] = { type = "Sceptre", @@ -130,7 +130,7 @@ itemBases["Aromatic Sceptre"] = { tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Skeletal Warrior Minion", implicitModTypes = { }, - req = { int = 92, }, + req = { level = 52, int = 92, }, } itemBases["Pious Sceptre"] = { type = "Sceptre", @@ -140,7 +140,7 @@ itemBases["Pious Sceptre"] = { tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Skeletal Warrior Minion", implicitModTypes = { }, - req = { int = 102, }, + req = { level = 58, int = 102, }, } itemBases["Hallowed Sceptre"] = { type = "Sceptre", @@ -150,7 +150,7 @@ itemBases["Hallowed Sceptre"] = { tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Skeletal Warrior Minion", implicitModTypes = { }, - req = { int = 114, }, + req = { level = 65, int = 114, }, } itemBases["Shrine Sceptre"] = { @@ -162,7 +162,7 @@ itemBases["Shrine Sceptre"] = { tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Purity of Fire", implicitModTypes = { }, - req = { str = 17, int = 38, }, + req = { level = 26, str = 17, int = 38, }, } itemBases["Shrine Sceptre"] = { type = "Sceptre", @@ -173,7 +173,7 @@ itemBases["Shrine Sceptre"] = { tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Purity of Ice", implicitModTypes = { }, - req = { str = 17, int = 38, }, + req = { level = 26, str = 17, int = 38, }, } itemBases["Shrine Sceptre"] = { type = "Sceptre", @@ -184,7 +184,7 @@ itemBases["Shrine Sceptre"] = { tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Purity of Lightning", implicitModTypes = { }, - req = { str = 17, int = 38, }, + req = { level = 26, str = 17, int = 38, }, } itemBases["Shrine Sceptre (Purity of Fire)"] = { @@ -195,7 +195,7 @@ itemBases["Shrine Sceptre (Purity of Fire)"] = { tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Purity of Fire", implicitModTypes = { }, - req = { str = 17, int = 38, }, + req = { level = 26, str = 17, int = 38, }, } itemBases["Shrine Sceptre (Purity of Cold)"] = { type = "Sceptre", @@ -205,7 +205,7 @@ itemBases["Shrine Sceptre (Purity of Cold)"] = { tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Purity of Ice", implicitModTypes = { }, - req = { str = 17, int = 38, }, + req = { level = 26, str = 17, int = 38, }, } itemBases["Shrine Sceptre (Purity of Lighting)"] = { type = "Sceptre", @@ -215,5 +215,5 @@ itemBases["Shrine Sceptre (Purity of Lighting)"] = { tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Purity of Lightning", implicitModTypes = { }, - req = { str = 17, int = 38, }, + req = { level = 26, str = 17, int = 38, }, } diff --git a/src/Data/Bases/staff.lua b/src/Data/Bases/staff.lua index 9051d2f27a..724df0c379 100644 --- a/src/Data/Bases/staff.lua +++ b/src/Data/Bases/staff.lua @@ -36,7 +36,7 @@ itemBases["Spriggan Staff"] = { tags = { default = true, staff = true, twohand = true, }, implicit = "Grants Skill: Level (1-20) Firebolt", implicitModTypes = { }, - req = { int = 23, }, + req = { level = 11, int = 23, }, } itemBases["Pyrophyte Staff"] = { type = "Staff", @@ -45,7 +45,7 @@ itemBases["Pyrophyte Staff"] = { tags = { default = true, no_chaos_spell_mods = true, no_cold_spell_mods = true, no_lightning_spell_mods = true, no_physical_spell_mods = true, staff = true, twohand = true, }, implicit = "Grants Skill: Level (1-20) Solar Orb", implicitModTypes = { }, - req = { int = 31, }, + req = { level = 16, int = 31, }, } itemBases["Chiming Staff"] = { type = "Staff", @@ -54,7 +54,7 @@ itemBases["Chiming Staff"] = { tags = { default = true, staff = true, twohand = true, }, implicit = "Grants Skill: Level (1-20) Sigil of Power", implicitModTypes = { }, - req = { int = 46, }, + req = { level = 25, int = 46, }, } itemBases["Rending Staff"] = { type = "Staff", @@ -63,7 +63,7 @@ itemBases["Rending Staff"] = { tags = { default = true, no_cold_spell_mods = true, no_fire_spell_mods = true, no_lightning_spell_mods = true, no_physical_spell_mods = true, staff = true, twohand = true, }, implicit = "Grants Skill: Level (1-20) Soulrend", implicitModTypes = { }, - req = { int = 60, }, + req = { level = 33, int = 60, }, } itemBases["Reaping Staff"] = { type = "Staff", @@ -72,7 +72,7 @@ itemBases["Reaping Staff"] = { tags = { default = true, no_chaos_spell_mods = true, no_cold_spell_mods = true, no_fire_spell_mods = true, no_lightning_spell_mods = true, staff = true, twohand = true, }, implicit = "Grants Skill: Level (1-20) Reap", implicitModTypes = { }, - req = { int = 68, }, + req = { level = 38, int = 68, }, } itemBases["Icicle Staff"] = { type = "Staff", @@ -81,7 +81,7 @@ itemBases["Icicle Staff"] = { tags = { default = true, no_chaos_spell_mods = true, no_fire_spell_mods = true, no_lightning_spell_mods = true, no_physical_spell_mods = true, staff = true, twohand = true, }, implicit = "Grants Skill: Level (1-20) Firebolt", implicitModTypes = { }, - req = { int = 80, }, + req = { level = 45, int = 80, }, } itemBases["Roaring Staff"] = { type = "Staff", @@ -90,7 +90,7 @@ itemBases["Roaring Staff"] = { tags = { default = true, staff = true, twohand = true, }, implicit = "Grants Skill: Level (1-20) Unleash", implicitModTypes = { }, - req = { int = 87, }, + req = { level = 49, int = 87, }, } itemBases["Paralysing Staff"] = { type = "Staff", @@ -99,7 +99,7 @@ itemBases["Paralysing Staff"] = { tags = { default = true, no_chaos_spell_mods = true, no_cold_spell_mods = true, no_fire_spell_mods = true, no_physical_spell_mods = true, staff = true, twohand = true, }, implicit = "Grants Skill: Level (1-20) Enervating Nova", implicitModTypes = { }, - req = { int = 92, }, + req = { level = 52, int = 92, }, } itemBases["Sanctified Staff"] = { type = "Staff", @@ -108,7 +108,7 @@ itemBases["Sanctified Staff"] = { tags = { default = true, staff = true, twohand = true, }, implicit = "Grants Skill: Level (1-20) Consecrate", implicitModTypes = { }, - req = { int = 99, }, + req = { level = 56, int = 99, }, } itemBases["Dark Staff"] = { type = "Staff", @@ -117,7 +117,7 @@ itemBases["Dark Staff"] = { tags = { default = true, staff = true, twohand = true, }, implicit = "Grants Skill: Level (1-20) Dark Pact", implicitModTypes = { }, - req = { int = 114, }, + req = { level = 65, int = 114, }, } itemBases["Ravenous Staff"] = { type = "Staff", @@ -126,7 +126,7 @@ itemBases["Ravenous Staff"] = { tags = { default = true, staff = true, twohand = true, }, implicit = "Grants Skill: Level (1-20) Feast of Flesh", implicitModTypes = { }, - req = { int = 114, }, + req = { level = 65, int = 114, }, } itemBases["Permafrost Staff"] = { type = "Staff", @@ -136,7 +136,7 @@ itemBases["Permafrost Staff"] = { tags = { default = true, staff = true, twohand = true, }, implicit = "Grants Skill: Level (1-20) Heart of Ice", implicitModTypes = { }, - req = { int = 114, }, + req = { level = 75, int = 114, }, } itemBases["Reflecting Staff"] = { type = "Staff", @@ -146,7 +146,7 @@ itemBases["Reflecting Staff"] = { tags = { default = true, staff = true, twohand = true, }, implicit = "Grants Skill: Level (1-20) Mirror of Refraction", implicitModTypes = { }, - req = { int = 114, }, + req = { level = 70, int = 114, }, } itemBases["Perching Staff"] = { type = "Staff", @@ -156,7 +156,7 @@ itemBases["Perching Staff"] = { tags = { default = true, staff = true, twohand = true, }, implicit = "Grants Skill: Level (1-20) Spiraling Conspiracy", implicitModTypes = { }, - req = { int = 114, }, + req = { level = 65, int = 114, }, } itemBases["Wrapped Quarterstaff"] = { diff --git a/src/Data/Bases/wand.lua b/src/Data/Bases/wand.lua index ff7ae7a977..0895a8955e 100644 --- a/src/Data/Bases/wand.lua +++ b/src/Data/Bases/wand.lua @@ -36,7 +36,7 @@ itemBases["Siphoning Wand"] = { tags = { default = true, onehand = true, wand = true, }, implicit = "Grants Skill: Level (1-20) Power Siphon", implicitModTypes = { }, - req = { int = 23, }, + req = { level = 11, int = 23, }, } itemBases["Volatile Wand"] = { type = "Wand", @@ -45,7 +45,7 @@ itemBases["Volatile Wand"] = { tags = { default = true, no_chaos_spell_mods = true, no_cold_spell_mods = true, no_lightning_spell_mods = true, no_physical_spell_mods = true, onehand = true, wand = true, }, implicit = "Grants Skill: Level (1-20) Volatile Dead", implicitModTypes = { }, - req = { int = 31, }, + req = { level = 16, int = 31, }, } itemBases["Galvanic Wand"] = { type = "Wand", @@ -54,7 +54,7 @@ itemBases["Galvanic Wand"] = { tags = { default = true, no_chaos_spell_mods = true, no_cold_spell_mods = true, no_fire_spell_mods = true, no_physical_spell_mods = true, onehand = true, wand = true, }, implicit = "Grants Skill: Level (1-20) Galvanic Field", implicitModTypes = { }, - req = { int = 46, }, + req = { level = 25, int = 46, }, } itemBases["Acrid Wand"] = { type = "Wand", @@ -63,7 +63,7 @@ itemBases["Acrid Wand"] = { tags = { default = true, onehand = true, wand = true, }, implicit = "Grants Skill: Level (1-20) Decompose", implicitModTypes = { }, - req = { int = 60, }, + req = { level = 33, int = 60, }, } itemBases["Offering Wand"] = { type = "Wand", @@ -72,7 +72,7 @@ itemBases["Offering Wand"] = { tags = { default = true, no_chaos_spell_mods = true, no_cold_spell_mods = true, no_fire_spell_mods = true, no_lightning_spell_mods = true, onehand = true, wand = true, }, implicit = "Grants Skill: Level (1-20) Exsanguinate", implicitModTypes = { }, - req = { int = 68, }, + req = { level = 38, int = 68, }, } itemBases["Frigid Wand"] = { type = "Wand", @@ -81,7 +81,7 @@ itemBases["Frigid Wand"] = { tags = { default = true, no_chaos_spell_mods = true, no_fire_spell_mods = true, no_lightning_spell_mods = true, no_physical_spell_mods = true, onehand = true, wand = true, }, implicit = "Grants Skill: Level (1-20) Chaos Bolt", implicitModTypes = { }, - req = { int = 80, }, + req = { level = 45, int = 80, }, } itemBases["Torture Wand"] = { type = "Wand", @@ -90,7 +90,7 @@ itemBases["Torture Wand"] = { tags = { default = true, onehand = true, wand = true, }, implicit = "Grants Skill: Level (1-20) Chaos Bolt", implicitModTypes = { }, - req = { int = 87, }, + req = { level = 49, int = 87, }, } itemBases["Critical Wand"] = { type = "Wand", @@ -99,7 +99,7 @@ itemBases["Critical Wand"] = { tags = { default = true, onehand = true, wand = true, }, implicit = "Grants Skill: Level (1-20) Chaos Bolt", implicitModTypes = { }, - req = { int = 92, }, + req = { level = 52, int = 92, }, } itemBases["Primordial Wand"] = { type = "Wand", @@ -108,7 +108,7 @@ itemBases["Primordial Wand"] = { tags = { default = true, no_cold_spell_mods = true, no_fire_spell_mods = true, no_lightning_spell_mods = true, no_physical_spell_mods = true, onehand = true, wand = true, }, implicit = "Grants Skill: Level (1-20) Wither", implicitModTypes = { }, - req = { int = 99, }, + req = { level = 56, int = 99, }, } itemBases["Dueling Wand"] = { type = "Wand", @@ -117,7 +117,7 @@ itemBases["Dueling Wand"] = { tags = { default = true, onehand = true, wand = true, }, implicit = "Grants Skill: Level (1-20) Spellslinger", implicitModTypes = { }, - req = { int = 114, }, + req = { level = 65, int = 114, }, } itemBases["Twisted Wand"] = { type = "Wand", @@ -127,7 +127,7 @@ itemBases["Twisted Wand"] = { tags = { default = true, onehand = true, wand = true, }, implicit = "Grants Skill: Level (1-20) Coiling Bolts", implicitModTypes = { }, - req = { int = 114, }, + req = { level = 65, int = 114, }, } itemBases["Runic Fork"] = { type = "Wand", diff --git a/src/Data/Uniques/sceptre.lua b/src/Data/Uniques/sceptre.lua index 0c0eb3f4ac..7f6e3cab14 100644 --- a/src/Data/Uniques/sceptre.lua +++ b/src/Data/Uniques/sceptre.lua @@ -112,6 +112,7 @@ Enemies in your Presence Resist Elemental Damage based on their Lowest Resistanc Sylvan's Effigy Stoic Sceptre League: Runes of Aldur +Requires Level 62 Implicits: 2 Grants Skill: Level (1-20) Discipline Grants Skill: Level (1-20) Azmerian Wolf diff --git a/src/Data/Uniques/staff.lua b/src/Data/Uniques/staff.lua index d4276211a5..e31e14a144 100644 --- a/src/Data/Uniques/staff.lua +++ b/src/Data/Uniques/staff.lua @@ -55,7 +55,6 @@ Trigger Spark Skill on killing a Shocked Enemy The Raven's Flock Perching Staff League: Runes of Aldur -LevelReq: 65 Implicits: 1 Grants Skill: Level (1-20) Spiraling Conspiracy (8-16)% increased Cast Speed diff --git a/src/Export/Scripts/bases.lua b/src/Export/Scripts/bases.lua index ccf804458c..139768ba8b 100644 --- a/src/Export/Scripts/bases.lua +++ b/src/Export/Scripts/bases.lua @@ -333,9 +333,10 @@ directiveTable.base = function(state, args, out) out:write('},\n') end end + local inherentSkillsType = dat("ItemInherentSkills"):GetRow("BaseItemType", baseItemType) out:write('\treq = { ') local reqLevel = 1 - if weaponType or armourType then + if weaponType or armourType or inherentSkillsType then if baseItemType.DropLevel > 4 then reqLevel = baseItemType.DropLevel end @@ -364,7 +365,7 @@ directiveTable.base = function(state, args, out) end end out:write('},\n}\n') - + if not hidden then bases[state.type] = bases[state.type] or {} local subtype = state.subType and #state.subType and state.subType or "" diff --git a/src/Export/Uniques/sceptre.lua b/src/Export/Uniques/sceptre.lua index bde571b9d4..d83c921b19 100644 --- a/src/Export/Uniques/sceptre.lua +++ b/src/Export/Uniques/sceptre.lua @@ -111,6 +111,7 @@ UniqueEnemiesInPresenceLowestResistance1 Sylvan's Effigy Stoic Sceptre League: Runes of Aldur +Requires Level 62 Implicits: 2 Grants Skill: Level (1-20) Discipline Grants Skill: Level (1-20) Azmerian Wolf diff --git a/src/Export/Uniques/staff.lua b/src/Export/Uniques/staff.lua index de284400bc..1639401c25 100644 --- a/src/Export/Uniques/staff.lua +++ b/src/Export/Uniques/staff.lua @@ -54,7 +54,6 @@ UniqueTriggerSparkOnKillingShockedEnemy1 ]],[[ The Raven's Flock Perching Staff -LevelReq: 65 League: Runes of Aldur Implicits: 1 Grants Skill: Level (1-20) Spiraling Conspiracy From 0f4531db499e08b4428a1cab3340e6f758d42495 Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Wed, 8 Jul 2026 18:48:56 +1000 Subject: [PATCH 3/3] Fix unique exports The unique export now has a number of fixes and additions It now inherits the implicit mods from a item base and include skill mods in the implicit count without having to specifically state it It correctly orders implicit mods now which was not done before Bases that grant skills now use the correct level range e.g Raise Shield now doesn't show the level range of 1-20 Belt bases now have the correct implicit mods and exclude the charm mod if the base already grants it Level requirements for gear now only print the value if it exceeds the base type Many uniques have had their unique mod IDs updated to use the correct ones so the required level is correct --- spec/System/TestItemParse_spec.lua | 64 ++++- src/Classes/ImportTab.lua | 3 - src/Classes/Item.lua | 23 +- src/Data/Bases/belt.lua | 78 +++--- src/Data/Bases/helmet.lua | 4 +- src/Data/Bases/shield.lua | 400 ++++++++++++++--------------- src/Data/Uniques/amulet.lua | 6 +- src/Data/Uniques/belt.lua | 12 +- src/Data/Uniques/body.lua | 7 +- src/Data/Uniques/flask.lua | 3 +- src/Data/Uniques/gloves.lua | 1 + src/Data/Uniques/helmet.lua | 3 + src/Data/Uniques/mace.lua | 5 +- src/Data/Uniques/quiver.lua | 3 +- src/Data/Uniques/ring.lua | 1 - src/Data/Uniques/sceptre.lua | 10 +- src/Data/Uniques/shield.lua | 8 +- src/Data/Uniques/spear.lua | 3 +- src/Data/Uniques/staff.lua | 17 +- src/Data/Uniques/wand.lua | 4 +- src/Export/Classes/GGPKData.lua | 1 - src/Export/Scripts/bases.lua | 41 ++- src/Export/Scripts/uModsToText.lua | 204 ++++++++++++--- src/Export/Uniques/amulet.lua | 64 +---- src/Export/Uniques/belt.lua | 74 +----- src/Export/Uniques/body.lua | 61 ++--- src/Export/Uniques/boots.lua | 5 +- src/Export/Uniques/bow.lua | 11 +- src/Export/Uniques/crossbow.lua | 11 +- src/Export/Uniques/flask.lua | 26 -- src/Export/Uniques/gloves.lua | 11 +- src/Export/Uniques/helmet.lua | 4 +- src/Export/Uniques/mace.lua | 24 +- src/Export/Uniques/quiver.lua | 16 +- src/Export/Uniques/ring.lua | 98 +------ src/Export/Uniques/sceptre.lua | 19 +- src/Export/Uniques/shield.lua | 66 +---- src/Export/Uniques/spear.lua | 29 +-- src/Export/Uniques/staff.lua | 40 +-- src/Export/Uniques/talisman.lua | 13 +- src/Export/Uniques/wand.lua | 21 +- src/Export/spec.lua | 2 +- 42 files changed, 645 insertions(+), 851 deletions(-) diff --git a/spec/System/TestItemParse_spec.lua b/spec/System/TestItemParse_spec.lua index 55182f1749..a632912af1 100644 --- a/spec/System/TestItemParse_spec.lua +++ b/spec/System/TestItemParse_spec.lua @@ -355,13 +355,63 @@ describe("TestItemParse", function() assert.are.equals("~price 1 chaos", item.note) end) - it("Attribute Requirements", function() - local item = new("Item", raw("Dex: 100")) - assert.are.equals(100, item.requirements.dex) - item = new("Item", raw("Int: 101")) - assert.are.equals(101, item.requirements.int) - item = new("Item", raw("Str: 102")) - assert.are.equals(102, item.requirements.str) + it("Rune level requirements", function() + local item = new("Item", [[ + Test Wand + Runic Fork + Sockets: S + Rune: Perfect Storm Rune + LevelReq: 1 + Implicits: 1 + {enchant}{rune}Gain 12% of Damage as Extra Lightning Damage + ]]) + assert.are.equals(50, item.requirements.level) + end) + + it("Unique mod level requirements", function() + local foundAnvil + for _, rawUnique in ipairs(data.uniques.amulet) do + if rawUnique:match("The Anvil") then + local item = new("Item", rawUnique) + assert.are.equals(18, item.requirements.level) + assert.is_nil(rawUnique:match("Requires Level 18")) + foundAnvil = true + break + end + end + assert(foundAnvil, "The Anvil not found") + + local foundChoirOfTheStorm + for _, rawUnique in ipairs(data.uniques.amulet) do + if rawUnique:match("Choir of the Storm") then + assert(rawUnique:find("Grants Skill: Level (1-20) Lightning Bolt", 1, true)) + assert(rawUnique:find("Trigger Lightning Bolt Skill on Critical Hit", 1, true)) + foundChoirOfTheStorm = true + break + end + end + assert(foundChoirOfTheStorm, "Choir of the Storm not found") + + local foundSylvansEffigy + for _, rawUnique in ipairs(data.uniques.sceptre) do + if rawUnique:match("Sylvan's Effigy") then + local item = new("Item", rawUnique) + assert.are.equals(62, item.requirements.level) + foundSylvansEffigy = true + break + end + end + assert(foundSylvansEffigy, "Sylvan's Effigy not found") + + for _, rawUnique in ipairs(data.uniques.amulet) do + if rawUnique:match("Hinekora's Sight") then + local item = new("Item", rawUnique) + assert.are.equals(44, item.requirements.level) + assert(rawUnique:find("Grants Skill: Level (1-20) Future-Past", 1, true)) + return + end + end + assert(false, "Hinekora's Sight not found") end) it("Requires Class", function() diff --git a/src/Classes/ImportTab.lua b/src/Classes/ImportTab.lua index 096ec6e4df..5ed6d2118f 100644 --- a/src/Classes/ImportTab.lua +++ b/src/Classes/ImportTab.lua @@ -1291,9 +1291,6 @@ function ImportTabClass:ImportItem(itemData, slotName) end if itemData.requirements and (not itemData.socketedItems or not itemData.socketedItems[1]) then -- Requirements cannot be trusted if there are socketed gems, as they may override the item's natural requirements - -- This means some uniques will not import Level requirement properly for now. We probably need to compare the level to the equipped rune levels, - -- and only accept the imported level if it's higher than the runes. Problem with that, when we remove the runes, the required level will drop back - -- to the base item level. Which is sometimes incorrect for uniques (they can be higher than the base, like Sylvan's Effigy) item.requirements = { } for _, req in ipairs(itemData.requirements) do if req.name == "Level" then diff --git a/src/Classes/Item.lua b/src/Classes/Item.lua index ffbed18d28..fcd9230188 100644 --- a/src/Classes/Item.lua +++ b/src/Classes/Item.lua @@ -28,8 +28,6 @@ local catalystTags = { { "attribute" }, } -local minimumReqLevel = { } - local function getCatalystScalar(catalystId, mod, quality) if mod.unscalable then return 1 @@ -553,16 +551,6 @@ function ItemClass:ParseRaw(raw, rarity, highQuality) self.itemSocketCount = #self.sockets elseif specName == "Rune" then t_insert(self.runes, specVal) - local runeLevel = 0 - local runeData = data.itemMods.Runes[specVal] - if runeData then - for _, slotData in pairs(runeData) do - runeLevel = math.max(runeLevel, slotData.rank[1]) - end - end - if runeLevel > 0 and (not self.requirements.runeLevel or runeLevel > self.requirements.runeLevel) then - self.requirements.runeLevel = runeLevel - end elseif specName == "Radius" and self.type == "Jewel" then self.jewelRadiusLabel = specVal:match("^[%a ]+") if specVal:match("^%a+") == "Variable" then @@ -1202,6 +1190,14 @@ function ItemClass:ParseRaw(raw, rarity, highQuality) end end + for _, runeName in ipairs(self.runes) do + local runeData = data.itemMods.Runes[runeName] + if runeData then + for _, slotData in pairs(runeData) do + self.requirements.runeLevel = m_max(self.requirements.runeLevel or 0, slotData.rank[1]) + end + end + end if self.base and not self.requirements.level then if importedLevelReq and #self.sockets == 0 then -- Requirements on imported items can only be trusted for items with no sockets @@ -1210,6 +1206,9 @@ function ItemClass:ParseRaw(raw, rarity, highQuality) self.requirements.level = self.base.req.level end end + if self.base then + self.requirements.level = m_max(self.requirements.level or 0, self.requirements.runeLevel or 0) + end self.affixLimit = 0 if self.crafted then if not self.affixes then diff --git a/src/Data/Bases/belt.lua b/src/Data/Bases/belt.lua index 688b5a4714..79a520e315 100644 --- a/src/Data/Bases/belt.lua +++ b/src/Data/Bases/belt.lua @@ -6,80 +6,80 @@ itemBases["Golden Obi"] = { type = "Belt", charmLimit = 0, tags = { belt = true, default = true, demigods = true, not_for_sale = true, }, - implicit = "(20-30)% increased Rarity of Items found\nHas (1-3) Charm Slots", - implicitModTypes = { { "drop" }, }, + implicit = "(20-30)% increased Rarity of Items found\nHas (1-3) Charm Slot", + implicitModTypes = { { "drop" }, { "charm" }, }, req = { }, } itemBases["Rawhide Belt"] = { type = "Belt", charmLimit = 0, tags = { belt = true, default = true, }, - implicit = "(20-30)% increased Life Recovery from Flasks\nHas (1-3) Charm Slots", - implicitModTypes = { { "flask", "resource", "life" }, }, + implicit = "(20-30)% increased Life Recovery from Flasks\nHas (1-3) Charm Slot", + implicitModTypes = { { "flask", "resource", "life" }, { "charm" }, }, req = { }, } itemBases["Linen Belt"] = { type = "Belt", charmLimit = 0, tags = { belt = true, default = true, }, - implicit = "(20-30)% increased Mana Recovery from Flasks\nHas (1-3) Charm Slots", - implicitModTypes = { { "flask", "resource", "mana" }, }, + implicit = "(20-30)% increased Mana Recovery from Flasks\nHas (1-3) Charm Slot", + implicitModTypes = { { "flask", "resource", "mana" }, { "charm" }, }, req = { }, } itemBases["Wide Belt"] = { type = "Belt", charmLimit = 0, tags = { belt = true, default = true, }, - implicit = "(20-30)% increased Flask Charges gained\nHas (1-3) Charm Slots", - implicitModTypes = { { "flask" }, }, + implicit = "Has (1-3) Charm Slot\n(20-30)% increased Flask Charges gained", + implicitModTypes = { { "charm" }, { "flask" }, }, req = { level = 14, }, } itemBases["Long Belt"] = { type = "Belt", charmLimit = 0, tags = { belt = true, default = true, }, - implicit = "(15-20)% increased Charm Effect Duration\nHas (1-3) Charm Slots", - implicitModTypes = { { "charm" }, }, + implicit = "(15-20)% increased Charm Effect Duration\nHas (1-3) Charm Slot", + implicitModTypes = { { "charm" }, { "charm" }, }, req = { level = 20, }, } itemBases["Plate Belt"] = { type = "Belt", charmLimit = 0, tags = { belt = true, default = true, }, - implicit = "+(140-180) to Armour\nHas (1-3) Charm Slots", - implicitModTypes = { { "defences", "armour" }, }, + implicit = "+(140-180) to Armour\nHas (1-3) Charm Slot", + implicitModTypes = { { "defences", "armour" }, { "charm" }, }, req = { level = 24, }, } itemBases["Ornate Belt"] = { type = "Belt", charmLimit = 0, tags = { belt = true, default = true, }, - implicit = "(10-15)% reduced Charm Charges used\nHas (1-3) Charm Slots", - implicitModTypes = { { "charm" }, }, + implicit = "Has (1-3) Charm Slot\n(10-15)% reduced Charm Charges used", + implicitModTypes = { { "charm" }, { "charm" }, }, req = { level = 31, }, } itemBases["Mail Belt"] = { type = "Belt", charmLimit = 0, tags = { belt = true, default = true, }, - implicit = "(10-15)% reduced Flask Charges used\nHas (1-3) Charm Slots", - implicitModTypes = { { "flask" }, }, + implicit = "(10-15)% reduced Flask Charges used\nHas (1-3) Charm Slot", + implicitModTypes = { { "flask" }, { "charm" }, }, req = { level = 40, }, } itemBases["Double Belt"] = { type = "Belt", charmLimit = 0, tags = { belt = true, default = true, }, - implicit = "(20-30)% increased Charm Charges gained\nHas (1-3) Charm Slots", - implicitModTypes = { { "charm" }, }, + implicit = "Has (1-3) Charm Slot\n(20-30)% increased Charm Charges gained", + implicitModTypes = { { "charm" }, { "charm" }, }, req = { level = 44, }, } itemBases["Heavy Belt"] = { type = "Belt", charmLimit = 0, tags = { belt = true, default = true, }, - implicit = "(20-30)% increased Stun Threshold\nHas (1-3) Charm Slots", - implicitModTypes = { { }, }, + implicit = "(20-30)% increased Stun Threshold\nHas (1-3) Charm Slot", + implicitModTypes = { { }, { "charm" }, }, req = { level = 50, }, } itemBases["Runemastered Heavy Belt"] = { @@ -87,8 +87,8 @@ itemBases["Runemastered Heavy Belt"] = { charmLimit = 0, hidden = true, tags = { belt = true, default = true, runeforged = true, }, - implicit = "(20-30)% increased Stun Threshold\n(15-25)% Life Recovery from Flasks also applies to Runic Ward\nHas (1-3) Charm Slots", - implicitModTypes = { { }, { }, }, + implicit = "(20-30)% increased Stun Threshold\nHas (1-3) Charm Slot\n(15-25)% Life Recovery from Flasks also applies to Runic Ward", + implicitModTypes = { { }, { "charm" }, { }, }, req = { level = 50, }, } itemBases["Runemastered Heavy Belt"] = { @@ -96,8 +96,8 @@ itemBases["Runemastered Heavy Belt"] = { charmLimit = 0, hidden = true, tags = { belt = true, default = true, runeforged = true, }, - implicit = "(20-30)% increased Stun Threshold\n(20-40)% increased Runic Ward Regeneration Rate\nHas (1-3) Charm Slots", - implicitModTypes = { { }, { "runic_ward" }, }, + implicit = "(20-30)% increased Stun Threshold\nHas (1-3) Charm Slot\n(20-40)% increased Runic Ward Regeneration Rate", + implicitModTypes = { { }, { "charm" }, { "runic_ward" }, }, req = { level = 50, }, } itemBases["Runemastered Heavy Belt"] = { @@ -105,8 +105,8 @@ itemBases["Runemastered Heavy Belt"] = { charmLimit = 0, hidden = true, tags = { belt = true, default = true, runeforged = true, }, - implicit = "(20-30)% increased Stun Threshold\nRunic Ward recovery can can Overflow maximum Runic Ward\nHas (1-3) Charm Slots", - implicitModTypes = { { }, { }, }, + implicit = "(20-30)% increased Stun Threshold\nHas (1-3) Charm Slot\nRunic Ward recovery can can Overflow maximum Runic Ward", + implicitModTypes = { { }, { "charm" }, { }, }, req = { level = 50, }, } itemBases["Runemastered Heavy Belt"] = { @@ -114,31 +114,31 @@ itemBases["Runemastered Heavy Belt"] = { charmLimit = 0, hidden = true, tags = { belt = true, default = true, runeforged = true, }, - implicit = "(20-30)% increased Stun Threshold\nFlasks gain (0.5-1) charges per Second\nHas (1-3) Charm Slots", - implicitModTypes = { { }, { }, }, + implicit = "(20-30)% increased Stun Threshold\nHas (1-3) Charm Slot\nFlasks gain (0.5-1) charges per Second", + implicitModTypes = { { }, { "charm" }, { }, }, req = { level = 50, }, } itemBases["Utility Belt"] = { type = "Belt", charmLimit = 0, tags = { belt = true, default = true, }, - implicit = "20% of Flask Recovery applied Instantly\nHas (1-3) Charm Slots", - implicitModTypes = { { }, }, + implicit = "Has (1-3) Charm Slot\n20% of Flask Recovery applied Instantly", + implicitModTypes = { { "charm" }, { }, }, req = { level = 55, }, } itemBases["Fine Belt"] = { type = "Belt", charmLimit = 0, tags = { belt = true, default = true, }, - implicit = "Flasks gain 0.17 charges per Second\nHas (1-3) Charm Slots", - implicitModTypes = { { }, }, + implicit = "Has (1-3) Charm Slot\nFlasks gain 0.17 charges per Second", + implicitModTypes = { { "charm" }, { }, }, req = { level = 62, }, } itemBases["Stalking Belt"] = { type = "Belt", charmLimit = 0, tags = { belt = true, default = true, }, - implicit = "Has 1 Charm Slot\nThis item gains bonuses from Socketed Items as though it was Boots\nHas (1-3) Charm Slots", + implicit = "Has 1 Charm Slot\nThis item gains bonuses from Socketed Items as though it was Boots", implicitModTypes = { { "charm" }, { }, }, req = { level = 40, }, } @@ -146,23 +146,23 @@ itemBases["Invoking Belt"] = { type = "Belt", charmLimit = 0, tags = { belt = true, default = true, }, - implicit = "Has 1 Charm Slot\n(8-12)% increased Cast Speed\nHas (1-3) Charm Slots", - implicitModTypes = { { "charm" }, { "caster_speed", "caster", "speed" }, }, + implicit = "(8-12)% increased Cast Speed\nHas 1 Charm Slot", + implicitModTypes = { { "caster_speed", "caster", "speed" }, { "charm" }, }, req = { level = 32, }, } itemBases["Sinew Belt"] = { type = "Belt", charmLimit = 0, tags = { belt = true, default = true, }, - implicit = "Has 1 Charm Slot\n+(15-20) to Strength\nHas (1-3) Charm Slots", - implicitModTypes = { { "charm" }, { "attribute" }, }, + implicit = "+(15-20) to Strength\nHas 1 Charm Slot", + implicitModTypes = { { "attribute" }, { "charm" }, }, req = { level = 32, }, } itemBases["Forking Belt"] = { type = "Belt", charmLimit = 0, tags = { belt = true, default = true, }, - implicit = "Has 1 Charm Slot\nAdds 1 to (20-30) Lightning damage to Attacks\nHas (1-3) Charm Slots", - implicitModTypes = { { "charm" }, { "elemental_damage", "damage", "elemental", "lightning", "attack" }, }, + implicit = "Adds 1 to (20-30) Lightning damage to Attacks\nHas 1 Charm Slot", + implicitModTypes = { { "elemental_damage", "damage", "elemental", "lightning", "attack" }, { "charm" }, }, req = { level = 32, }, } diff --git a/src/Data/Bases/helmet.lua b/src/Data/Bases/helmet.lua index a74322f188..486ea0281e 100644 --- a/src/Data/Bases/helmet.lua +++ b/src/Data/Bases/helmet.lua @@ -2197,8 +2197,8 @@ itemBases["Runemastered Spiritbone Crown"] = { hidden = true, socketLimit = 3, tags = { armour = true, default = true, helmet = true, karui_basetype = true, runeforged = true, str_int_armour = true, }, - implicit = "(25-50)% increased Runic Ward Regeneration Rate\n+250 Intelligence Requirement\n100% reduced Duration of Curses on you", - implicitModTypes = { { "runic_ward" }, { }, { "caster", "curse" }, }, + implicit = "+250 Intelligence Requirement\n100% reduced Duration of Curses on you\n(25-50)% increased Runic Ward Regeneration Rate", + implicitModTypes = { { }, { "caster", "curse" }, { "runic_ward" }, }, armour = { Armour = 116, EnergyShield = 32, Ward = 113, }, req = { level = 65, str = 50, int = 50, }, } diff --git a/src/Data/Bases/shield.lua b/src/Data/Bases/shield.lua index f884b9d005..979171b0e5 100644 --- a/src/Data/Bases/shield.lua +++ b/src/Data/Bases/shield.lua @@ -9,7 +9,7 @@ itemBases["Splintered Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, ezomyte_basetype = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 18, MovementPenalty = 0.03, }, req = { }, @@ -20,7 +20,7 @@ itemBases["Painted Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, ezomyte_basetype = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 33, MovementPenalty = 0.03, }, req = { level = 6, str = 11, }, @@ -31,7 +31,7 @@ itemBases["Braced Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, ezomyte_basetype = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 50, MovementPenalty = 0.03, }, req = { level = 12, str = 19, }, @@ -42,7 +42,7 @@ itemBases["Barricade Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, maraketh_basetype = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 62, MovementPenalty = 0.03, }, req = { level = 16, str = 25, }, @@ -53,7 +53,7 @@ itemBases["Effigial Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, maraketh_basetype = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 76, MovementPenalty = 0.03, }, req = { level = 21, str = 32, }, @@ -64,7 +64,7 @@ itemBases["Rampart Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, maraketh_basetype = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 96, MovementPenalty = 0.03, }, req = { level = 28, str = 42, }, @@ -75,7 +75,7 @@ itemBases["Heraldric Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_armour = true, str_shield = true, vaal_basetype = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 111, MovementPenalty = 0.03, }, req = { level = 33, str = 48, }, @@ -86,7 +86,7 @@ itemBases["Stone Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_armour = true, str_shield = true, vaal_basetype = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 119, MovementPenalty = 0.03, }, req = { level = 36, str = 52, }, @@ -97,7 +97,7 @@ itemBases["Crucible Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, karui_basetype = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 145, MovementPenalty = 0.03, }, req = { level = 45, str = 64, }, @@ -108,7 +108,7 @@ itemBases["Ancestor Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, karui_basetype = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 160, MovementPenalty = 0.03, }, req = { level = 50, str = 71, }, @@ -119,7 +119,7 @@ itemBases["Phalanx Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 166, MovementPenalty = 0.03, }, req = { level = 52, str = 74, }, @@ -130,7 +130,7 @@ itemBases["Defiant Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 183, MovementPenalty = 0.03, }, req = { level = 58, str = 82, }, @@ -141,7 +141,7 @@ itemBases["Blacksteel Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 203, MovementPenalty = 0.03, }, req = { level = 65, str = 91, }, @@ -152,7 +152,7 @@ itemBases["Aged Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 145, MovementPenalty = 0.03, }, req = { level = 45, str = 64, }, @@ -163,7 +163,7 @@ itemBases["Metalworked Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 154, MovementPenalty = 0.03, }, req = { level = 48, str = 69, }, @@ -174,7 +174,7 @@ itemBases["Cultist Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 163, MovementPenalty = 0.03, }, req = { level = 51, str = 73, }, @@ -185,7 +185,7 @@ itemBases["Bulwark Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 171, MovementPenalty = 0.03, }, req = { level = 54, str = 77, }, @@ -196,7 +196,7 @@ itemBases["Noble Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 186, MovementPenalty = 0.03, }, req = { level = 59, str = 83, }, @@ -207,7 +207,7 @@ itemBases["Goldworked Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 192, MovementPenalty = 0.03, }, req = { level = 61, str = 86, }, @@ -218,7 +218,7 @@ itemBases["Royal Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 203, MovementPenalty = 0.03, }, req = { level = 65, str = 91, }, @@ -229,7 +229,7 @@ itemBases["Fortress Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 223, MovementPenalty = 0.03, }, req = { level = 70, str = 99, }, @@ -240,7 +240,7 @@ itemBases["Vaal Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 244, MovementPenalty = 0.03, }, req = { level = 75, str = 107, }, @@ -251,7 +251,7 @@ itemBases["Tawhoan Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, karui_basetype = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 264, MovementPenalty = 0.03, }, req = { level = 80, str = 115, }, @@ -262,7 +262,7 @@ itemBases["Runeforged Splintered Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, ezomyte_basetype = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 18, Ward = 12, MovementPenalty = 0.03, }, req = { }, @@ -273,7 +273,7 @@ itemBases["Runeforged Painted Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, ezomyte_basetype = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 33, Ward = 15, MovementPenalty = 0.03, }, req = { level = 6, str = 11, }, @@ -284,7 +284,7 @@ itemBases["Runeforged Braced Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, ezomyte_basetype = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 50, Ward = 18, MovementPenalty = 0.03, }, req = { level = 12, str = 19, }, @@ -295,7 +295,7 @@ itemBases["Runeforged Barricade Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, maraketh_basetype = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 62, Ward = 22, MovementPenalty = 0.03, }, req = { level = 16, str = 25, }, @@ -306,7 +306,7 @@ itemBases["Runeforged Effigial Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, maraketh_basetype = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 76, Ward = 25, MovementPenalty = 0.03, }, req = { level = 21, str = 32, }, @@ -317,7 +317,7 @@ itemBases["Runeforged Rampart Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, maraketh_basetype = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 96, Ward = 27, MovementPenalty = 0.03, }, req = { level = 28, str = 42, }, @@ -328,7 +328,7 @@ itemBases["Runeforged Heraldric Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_armour = true, str_shield = true, vaal_basetype = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 111, Ward = 30, MovementPenalty = 0.03, }, req = { level = 33, str = 48, }, @@ -339,7 +339,7 @@ itemBases["Runeforged Stone Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_armour = true, str_shield = true, vaal_basetype = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 119, Ward = 33, MovementPenalty = 0.03, }, req = { level = 36, str = 52, }, @@ -350,7 +350,7 @@ itemBases["Runeforged Crucible Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, karui_basetype = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 145, Ward = 36, MovementPenalty = 0.03, }, req = { level = 45, str = 64, }, @@ -361,7 +361,7 @@ itemBases["Runeforged Ancestor Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, karui_basetype = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Ward = 148, MovementPenalty = 0.03, }, req = { level = 50, str = 71, }, @@ -372,7 +372,7 @@ itemBases["Runeforged Phalanx Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Ward = 146, MovementPenalty = 0.03, }, req = { level = 52, str = 74, }, @@ -383,7 +383,7 @@ itemBases["Runeforged Defiant Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Ward = 160, MovementPenalty = 0.03, }, req = { level = 58, str = 82, }, @@ -394,7 +394,7 @@ itemBases["Runeforged Blacksteel Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Ward = 176, MovementPenalty = 0.03, }, req = { level = 65, str = 91, }, @@ -405,7 +405,7 @@ itemBases["Runeforged Bulwark Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 144, Ward = 53, MovementPenalty = 0.03, }, req = { level = 54, str = 77, }, @@ -416,7 +416,7 @@ itemBases["Runeforged Noble Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 171, Ward = 41, MovementPenalty = 0.03, }, req = { level = 59, str = 83, }, @@ -427,7 +427,7 @@ itemBases["Runeforged Goldworked Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 153, Ward = 58, MovementPenalty = 0.03, }, req = { level = 61, str = 86, }, @@ -438,7 +438,7 @@ itemBases["Runeforged Royal Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 193, Ward = 44, MovementPenalty = 0.03, }, req = { level = 65, str = 91, }, @@ -449,7 +449,7 @@ itemBases["Runeforged Fortress Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 156, Ward = 106, MovementPenalty = 0.03, }, req = { level = 70, str = 99, }, @@ -460,7 +460,7 @@ itemBases["Runeforged Vaal Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 221, Ward = 35, MovementPenalty = 0.03, }, req = { level = 75, str = 107, }, @@ -471,7 +471,7 @@ itemBases["Runeforged Tawhoan Tower Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, karui_basetype = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 112, Ward = 176, MovementPenalty = 0.03, }, req = { level = 80, str = 115, }, @@ -483,7 +483,7 @@ itemBases["Runemastered Splintered Tower Shield"] = { hidden = true, socketLimit = 3, tags = { armour = true, default = true, ezomyte_basetype = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 100, Ward = 23, MovementPenalty = 0.03, }, req = { level = 38, str = 54, }, @@ -495,7 +495,7 @@ itemBases["Runemastered Painted Tower Shield"] = { hidden = true, socketLimit = 3, tags = { armour = true, default = true, ezomyte_basetype = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 63, Ward = 57, MovementPenalty = 0.03, }, req = { level = 38, str = 54, }, @@ -507,7 +507,7 @@ itemBases["Runemastered Braced Tower Shield"] = { hidden = true, socketLimit = 3, tags = { armour = true, default = true, ezomyte_basetype = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 88, Ward = 34, MovementPenalty = 0.03, }, req = { level = 38, str = 54, }, @@ -519,7 +519,7 @@ itemBases["Runemastered Barricade Tower Shield"] = { hidden = true, socketLimit = 3, tags = { armour = true, default = true, maraketh_basetype = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 94, Ward = 28, MovementPenalty = 0.03, }, req = { level = 38, str = 54, }, @@ -531,7 +531,7 @@ itemBases["Runemastered Effigial Tower Shield"] = { hidden = true, socketLimit = 3, tags = { armour = true, default = true, maraketh_basetype = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Ward = 113, MovementPenalty = 0.03, }, req = { level = 38, str = 54, }, @@ -543,7 +543,7 @@ itemBases["Runemastered Rampart Tower Shield"] = { hidden = true, socketLimit = 3, tags = { armour = true, default = true, maraketh_basetype = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 98, Ward = 29, MovementPenalty = 0.03, }, req = { level = 40, str = 58, }, @@ -555,7 +555,7 @@ itemBases["Runemastered Heraldric Tower Shield"] = { hidden = true, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_armour = true, str_shield = true, vaal_basetype = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 96, Ward = 42, MovementPenalty = 0.03, }, req = { level = 50, str = 71, }, @@ -567,7 +567,7 @@ itemBases["Runemastered Crucible Tower Shield"] = { hidden = true, socketLimit = 3, tags = { armour = true, default = true, karui_basetype = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Ward = 250, MovementPenalty = 0.03, }, req = { level = 65, str = 91, }, @@ -579,7 +579,7 @@ itemBases["Runemastered Crucible Tower Shield"] = { hidden = true, socketLimit = 3, tags = { armour = true, default = true, karui_basetype = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Recover (15-25) Runic Ward when you Block\nGrants Skill: Level (1-20) Raise Shield", + implicit = "Recover (15-25) Runic Ward when you Block\nGrants Skill: Raise Shield", implicitModTypes = { { }, }, armour = { BlockChance = 26, Armour = 100, Ward = 100, MovementPenalty = 0.03, }, req = { level = 65, str = 91, }, @@ -591,7 +591,7 @@ itemBases["Runemastered Crucible Tower Shield"] = { hidden = true, socketLimit = 3, tags = { armour = true, default = true, karui_basetype = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 26, Evasion = 148, Ward = 35, MovementPenalty = 0.03, }, req = { level = 65, dex = 91, }, @@ -603,7 +603,7 @@ itemBases["Runemastered Crucible Tower Shield"] = { hidden = true, socketLimit = 3, tags = { armour = true, default = true, karui_basetype = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "(15-25)% of Damage is taken from Mana before Life\nGrants Skill: Level (1-20) Raise Shield", + implicit = "(15-25)% of Damage is taken from Mana before Life\nGrants Skill: Raise Shield", implicitModTypes = { { "resource", "life", "mana" }, }, armour = { BlockChance = 26, Armour = 162, Ward = 35, MovementPenalty = 0.03, }, req = { level = 65, str = 91, }, @@ -615,7 +615,7 @@ itemBases["Runemastered Blacksteel Tower Shield"] = { hidden = true, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 102, Ward = 88, MovementPenalty = 0.03, }, req = { level = 65, str = 91, }, @@ -627,7 +627,7 @@ itemBases["Runemastered Vaal Tower Shield"] = { hidden = true, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 203, Ward = 70, MovementPenalty = 0.03, }, req = { level = 75, str = 107, }, @@ -639,7 +639,7 @@ itemBases["Glacial Fortress"] = { hidden = true, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 223, MovementPenalty = 0.03, }, req = { level = 70, str = 99, }, @@ -651,7 +651,7 @@ itemBases["Runemastered Glacial Fortress"] = { hidden = true, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_armour = true, str_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 203, Ward = 53, MovementPenalty = 0.03, }, req = { level = 70, str = 99, }, @@ -663,7 +663,7 @@ itemBases["Leather Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, ezomyte_basetype = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 10, }, req = { }, @@ -674,7 +674,7 @@ itemBases["Wooden Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, ezomyte_basetype = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 18, }, req = { level = 5, dex = 10, }, @@ -685,7 +685,7 @@ itemBases["Plated Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, ezomyte_basetype = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 31, }, req = { level = 11, dex = 18, }, @@ -696,7 +696,7 @@ itemBases["Iron Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, maraketh_basetype = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 42, }, req = { level = 16, dex = 25, }, @@ -707,7 +707,7 @@ itemBases["Ridged Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, maraketh_basetype = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 55, }, req = { level = 22, dex = 33, }, @@ -718,7 +718,7 @@ itemBases["Spiked Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, maraketh_basetype = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 64, }, req = { level = 26, dex = 38, }, @@ -729,7 +729,7 @@ itemBases["Ringed Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, shield = true, vaal_basetype = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 79, }, req = { level = 33, dex = 48, }, @@ -740,7 +740,7 @@ itemBases["Edged Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, shield = true, vaal_basetype = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 92, }, req = { level = 39, dex = 56, }, @@ -751,7 +751,7 @@ itemBases["Laminate Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, karui_basetype = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 105, }, req = { level = 45, dex = 64, }, @@ -762,7 +762,7 @@ itemBases["Pearl Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, karui_basetype = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 116, }, req = { level = 50, dex = 71, }, @@ -773,7 +773,7 @@ itemBases["Ornate Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 120, }, req = { level = 52, dex = 74, }, @@ -784,7 +784,7 @@ itemBases["Array Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 126, }, req = { level = 55, dex = 78, }, @@ -795,7 +795,7 @@ itemBases["Aegis Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 148, }, req = { level = 65, dex = 91, }, @@ -806,7 +806,7 @@ itemBases["Oak Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 105, }, req = { level = 45, dex = 64, }, @@ -817,7 +817,7 @@ itemBases["Painted Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 111, }, req = { level = 48, dex = 69, }, @@ -828,7 +828,7 @@ itemBases["Coiled Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 118, }, req = { level = 51, dex = 73, }, @@ -839,7 +839,7 @@ itemBases["Spikeward Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 124, }, req = { level = 54, dex = 77, }, @@ -850,7 +850,7 @@ itemBases["Jingling Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 135, }, req = { level = 59, dex = 83, }, @@ -861,7 +861,7 @@ itemBases["Bladeguard Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 139, }, req = { level = 61, dex = 86, }, @@ -872,7 +872,7 @@ itemBases["Ornate Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 148, }, req = { level = 65, dex = 91, }, @@ -883,7 +883,7 @@ itemBases["Gutspike Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 163, }, req = { level = 70, dex = 99, }, @@ -894,7 +894,7 @@ itemBases["Ancient Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 178, }, req = { level = 75, dex = 107, }, @@ -905,7 +905,7 @@ itemBases["Desert Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, karui_basetype = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 192, }, req = { level = 80, dex = 115, }, @@ -916,7 +916,7 @@ itemBases["Runeforged Leather Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, ezomyte_basetype = true, runeforged = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 10, Ward = 10, }, req = { }, @@ -927,7 +927,7 @@ itemBases["Runeforged Wooden Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, ezomyte_basetype = true, runeforged = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 18, Ward = 11, }, req = { level = 5, dex = 10, }, @@ -938,7 +938,7 @@ itemBases["Runeforged Plated Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, ezomyte_basetype = true, runeforged = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 31, Ward = 14, }, req = { level = 11, dex = 18, }, @@ -949,7 +949,7 @@ itemBases["Runeforged Iron Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, maraketh_basetype = true, runeforged = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 42, Ward = 17, }, req = { level = 16, dex = 25, }, @@ -960,7 +960,7 @@ itemBases["Runeforged Ridged Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, maraketh_basetype = true, runeforged = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 55, Ward = 21, }, req = { level = 22, dex = 33, }, @@ -971,7 +971,7 @@ itemBases["Runeforged Spiked Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, maraketh_basetype = true, runeforged = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 64, Ward = 20, }, req = { level = 26, dex = 38, }, @@ -982,7 +982,7 @@ itemBases["Runeforged Ringed Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, runeforged = true, shield = true, vaal_basetype = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 79, Ward = 24, }, req = { level = 33, dex = 48, }, @@ -993,7 +993,7 @@ itemBases["Runeforged Edged Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, runeforged = true, shield = true, vaal_basetype = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 92, Ward = 28, }, req = { level = 39, dex = 56, }, @@ -1004,7 +1004,7 @@ itemBases["Runeforged Laminate Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, karui_basetype = true, runeforged = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 105, Ward = 29, }, req = { level = 45, dex = 64, }, @@ -1015,7 +1015,7 @@ itemBases["Runeforged Pearl Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, karui_basetype = true, runeforged = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 116, Ward = 29, }, req = { level = 50, dex = 71, }, @@ -1026,7 +1026,7 @@ itemBases["Runeforged Ornate Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, runeforged = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Ward = 117, }, req = { level = 52, dex = 74, }, @@ -1037,7 +1037,7 @@ itemBases["Runeforged Array Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, runeforged = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Ward = 122, }, req = { level = 55, dex = 78, }, @@ -1048,7 +1048,7 @@ itemBases["Runeforged Aegis Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, runeforged = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Ward = 141, }, req = { level = 65, dex = 91, }, @@ -1059,7 +1059,7 @@ itemBases["Runeforged Spikeward Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, runeforged = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 104, Ward = 42, }, req = { level = 54, dex = 77, }, @@ -1070,7 +1070,7 @@ itemBases["Runeforged Jingling Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, runeforged = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 124, Ward = 32, }, req = { level = 59, dex = 83, }, @@ -1081,7 +1081,7 @@ itemBases["Runeforged Bladeguard Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, runeforged = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 111, Ward = 47, }, req = { level = 61, dex = 86, }, @@ -1092,7 +1092,7 @@ itemBases["Runeforged Ornate Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, runeforged = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 141, Ward = 35, }, req = { level = 65, dex = 91, }, @@ -1103,7 +1103,7 @@ itemBases["Runeforged Gutspike Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, runeforged = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 114, Ward = 85, }, req = { level = 70, dex = 99, }, @@ -1114,7 +1114,7 @@ itemBases["Runeforged Ancient Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, runeforged = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 155, Ward = 35, }, req = { level = 75, dex = 107, }, @@ -1125,7 +1125,7 @@ itemBases["Runeforged Desert Buckler"] = { quality = 20, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, karui_basetype = true, runeforged = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 87, Ward = 134, }, req = { level = 80, dex = 115, }, @@ -1137,7 +1137,7 @@ itemBases["Runemastered Leather Buckler"] = { hidden = true, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, ezomyte_basetype = true, runeforged = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 108, Ward = 36, }, req = { level = 38, dex = 54, }, @@ -1149,7 +1149,7 @@ itemBases["Runemastered Wooden Buckler"] = { hidden = true, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, ezomyte_basetype = true, runeforged = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 90, Ward = 18, }, req = { level = 38, dex = 54, }, @@ -1161,7 +1161,7 @@ itemBases["Runemastered Plated Buckler"] = { hidden = true, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, ezomyte_basetype = true, runeforged = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 67, Ward = 23, }, req = { level = 38, dex = 54, }, @@ -1173,7 +1173,7 @@ itemBases["Runemastered Iron Buckler"] = { hidden = true, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, maraketh_basetype = true, runeforged = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 45, Ward = 45, }, req = { level = 38, dex = 54, }, @@ -1185,7 +1185,7 @@ itemBases["Runemastered Ridged Buckler"] = { hidden = true, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, maraketh_basetype = true, runeforged = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 66, Ward = 28, }, req = { level = 40, dex = 58, }, @@ -1197,7 +1197,7 @@ itemBases["Runemastered Spiked Buckler"] = { hidden = true, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, maraketh_basetype = true, runeforged = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 61, Ward = 33, }, req = { level = 40, dex = 58, }, @@ -1209,7 +1209,7 @@ itemBases["Runemastered Ornate Buckler"] = { hidden = true, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, runeforged = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 114, Ward = 12, }, req = { level = 55, dex = 78, }, @@ -1221,7 +1221,7 @@ itemBases["Runemastered Array Buckler"] = { hidden = true, socketLimit = 3, tags = { armour = true, buckler = true, default = true, dex_armour = true, dex_shield = true, runeforged = true, shield = true, }, - implicit = "Grants Skill: Level (1-20) Parry", + implicit = "Grants Skill: Parry", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 103, Ward = 33, }, req = { level = 60, dex = 85, }, @@ -1233,7 +1233,7 @@ itemBases["Hardwood Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, ezomyte_basetype = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 10, Evasion = 7, MovementPenalty = 0.015, }, req = { }, @@ -1244,7 +1244,7 @@ itemBases["Pelage Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, ezomyte_basetype = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 21, Evasion = 17, MovementPenalty = 0.015, }, req = { level = 8, str = 9, dex = 9, }, @@ -1255,7 +1255,7 @@ itemBases["Studded Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, maraketh_basetype = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 34, Evasion = 29, MovementPenalty = 0.015, }, req = { level = 16, str = 15, dex = 15, }, @@ -1266,7 +1266,7 @@ itemBases["Crescent Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, maraketh_basetype = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 50, Evasion = 44, MovementPenalty = 0.015, }, req = { level = 26, str = 22, dex = 22, }, @@ -1277,7 +1277,7 @@ itemBases["Chiseled Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_dex_armour = true, str_dex_shield = true, vaal_basetype = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 61, Evasion = 54, MovementPenalty = 0.015, }, req = { level = 33, str = 27, dex = 27, }, @@ -1288,7 +1288,7 @@ itemBases["Feathered Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_dex_armour = true, str_dex_shield = true, vaal_basetype = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 67, Evasion = 60, MovementPenalty = 0.015, }, req = { level = 37, str = 30, dex = 30, }, @@ -1299,7 +1299,7 @@ itemBases["Stratified Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 82, Evasion = 74, MovementPenalty = 0.015, }, req = { level = 46, str = 37, dex = 37, }, @@ -1310,7 +1310,7 @@ itemBases["Carved Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 89, Evasion = 81, MovementPenalty = 0.015, }, req = { level = 51, str = 40, dex = 40, }, @@ -1321,7 +1321,7 @@ itemBases["Mosaic Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, karui_basetype = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 91, Evasion = 82, MovementPenalty = 0.015, }, req = { level = 52, str = 41, dex = 41, }, @@ -1332,7 +1332,7 @@ itemBases["Aureate Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, karui_basetype = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 99, Evasion = 90, MovementPenalty = 0.015, }, req = { level = 57, str = 45, dex = 45, }, @@ -1343,7 +1343,7 @@ itemBases["Grand Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 112, Evasion = 102, MovementPenalty = 0.015, }, req = { level = 65, str = 50, dex = 50, }, @@ -1354,7 +1354,7 @@ itemBases["Ironwood Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 80, Evasion = 72, MovementPenalty = 0.015, }, req = { level = 45, str = 36, dex = 36, }, @@ -1365,7 +1365,7 @@ itemBases["Fur-lined Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 85, Evasion = 76, MovementPenalty = 0.015, }, req = { level = 48, str = 38, dex = 38, }, @@ -1376,7 +1376,7 @@ itemBases["Mercenary Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 89, Evasion = 81, MovementPenalty = 0.015, }, req = { level = 51, str = 40, dex = 40, }, @@ -1387,7 +1387,7 @@ itemBases["Polished Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 94, Evasion = 85, MovementPenalty = 0.015, }, req = { level = 54, str = 42, dex = 42, }, @@ -1398,7 +1398,7 @@ itemBases["Stone Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 102, Evasion = 93, MovementPenalty = 0.015, }, req = { level = 59, str = 46, dex = 46, }, @@ -1409,7 +1409,7 @@ itemBases["Avian Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 107, Evasion = 97, MovementPenalty = 0.015, }, req = { level = 62, str = 48, dex = 48, }, @@ -1420,7 +1420,7 @@ itemBases["Mammoth Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 112, Evasion = 102, MovementPenalty = 0.015, }, req = { level = 65, str = 50, dex = 50, }, @@ -1431,7 +1431,7 @@ itemBases["Baroque Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 123, Evasion = 112, MovementPenalty = 0.015, }, req = { level = 70, str = 54, dex = 54, }, @@ -1442,7 +1442,7 @@ itemBases["Soaring Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 134, Evasion = 122, MovementPenalty = 0.015, }, req = { level = 75, str = 59, dex = 59, }, @@ -1453,7 +1453,7 @@ itemBases["Golden Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, karui_basetype = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 145, Evasion = 132, MovementPenalty = 0.015, }, req = { level = 80, str = 63, dex = 63, }, @@ -1464,7 +1464,7 @@ itemBases["Runeforged Hardwood Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, ezomyte_basetype = true, runeforged = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 10, Evasion = 7, Ward = 12, MovementPenalty = 0.015, }, req = { }, @@ -1475,7 +1475,7 @@ itemBases["Runeforged Pelage Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, ezomyte_basetype = true, runeforged = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 21, Evasion = 17, Ward = 17, MovementPenalty = 0.015, }, req = { level = 8, str = 9, dex = 9, }, @@ -1486,7 +1486,7 @@ itemBases["Runeforged Studded Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, maraketh_basetype = true, runeforged = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 34, Evasion = 29, Ward = 22, MovementPenalty = 0.015, }, req = { level = 16, str = 15, dex = 15, }, @@ -1497,7 +1497,7 @@ itemBases["Runeforged Crescent Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, maraketh_basetype = true, runeforged = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 50, Evasion = 44, Ward = 30, MovementPenalty = 0.015, }, req = { level = 26, str = 22, dex = 22, }, @@ -1508,7 +1508,7 @@ itemBases["Runeforged Chiseled Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_dex_armour = true, str_dex_shield = true, vaal_basetype = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 61, Evasion = 54, Ward = 33, MovementPenalty = 0.015, }, req = { level = 33, str = 27, dex = 27, }, @@ -1519,7 +1519,7 @@ itemBases["Runeforged Feathered Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_dex_armour = true, str_dex_shield = true, vaal_basetype = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 67, Evasion = 60, Ward = 34, MovementPenalty = 0.015, }, req = { level = 37, str = 30, dex = 30, }, @@ -1530,7 +1530,7 @@ itemBases["Runeforged Stratified Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 82, Evasion = 74, Ward = 38, MovementPenalty = 0.015, }, req = { level = 46, str = 37, dex = 37, }, @@ -1541,7 +1541,7 @@ itemBases["Runeforged Carved Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 89, Evasion = 81, Ward = 40, MovementPenalty = 0.015, }, req = { level = 51, str = 40, dex = 40, }, @@ -1552,7 +1552,7 @@ itemBases["Runeforged Mosaic Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, karui_basetype = true, runeforged = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Ward = 146, MovementPenalty = 0.015, }, req = { level = 52, str = 41, dex = 41, }, @@ -1563,7 +1563,7 @@ itemBases["Runeforged Aureate Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, karui_basetype = true, runeforged = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Ward = 157, MovementPenalty = 0.015, }, req = { level = 57, str = 45, dex = 45, }, @@ -1574,7 +1574,7 @@ itemBases["Runeforged Grand Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Ward = 176, MovementPenalty = 0.015, }, req = { level = 65, str = 50, dex = 50, }, @@ -1585,7 +1585,7 @@ itemBases["Runeforged Polished Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 79, Evasion = 72, Ward = 53, MovementPenalty = 0.015, }, req = { level = 54, str = 42, dex = 42, }, @@ -1596,7 +1596,7 @@ itemBases["Runeforged Stone Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 94, Evasion = 85, Ward = 41, MovementPenalty = 0.015, }, req = { level = 59, str = 46, dex = 46, }, @@ -1607,7 +1607,7 @@ itemBases["Runeforged Avian Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 86, Evasion = 78, Ward = 59, MovementPenalty = 0.015, }, req = { level = 62, str = 48, dex = 48, }, @@ -1618,7 +1618,7 @@ itemBases["Runeforged Mammoth Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 106, Evasion = 97, Ward = 44, MovementPenalty = 0.015, }, req = { level = 65, str = 50, dex = 50, }, @@ -1629,7 +1629,7 @@ itemBases["Runeforged Baroque Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 86, Evasion = 78, Ward = 106, MovementPenalty = 0.015, }, req = { level = 70, str = 54, dex = 54, }, @@ -1640,7 +1640,7 @@ itemBases["Runeforged Soaring Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 113, Evasion = 103, Ward = 53, MovementPenalty = 0.015, }, req = { level = 75, str = 59, dex = 59, }, @@ -1651,7 +1651,7 @@ itemBases["Runeforged Golden Targe"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, karui_basetype = true, runeforged = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 57, Evasion = 52, Ward = 185, MovementPenalty = 0.015, }, req = { level = 80, str = 63, dex = 63, }, @@ -1663,7 +1663,7 @@ itemBases["Runemastered Hardwood Targe"] = { hidden = true, socketLimit = 3, tags = { armour = true, default = true, ezomyte_basetype = true, runeforged = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 55, Evasion = 49, Ward = 23, MovementPenalty = 0.015, }, req = { level = 38, str = 31, dex = 31, }, @@ -1675,7 +1675,7 @@ itemBases["Runemastered Crescent Targe"] = { hidden = true, socketLimit = 3, tags = { armour = true, default = true, maraketh_basetype = true, runeforged = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 52, Evasion = 46, Ward = 28, MovementPenalty = 0.015, }, req = { level = 38, str = 31, dex = 31, }, @@ -1687,7 +1687,7 @@ itemBases["Venerable Defender"] = { hidden = true, socketLimit = 3, tags = { armour = true, default = true, karui_basetype = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 28, Armour = 107, Evasion = 97, MovementPenalty = 0.015, }, req = { level = 62, str = 64, dex = 64, }, @@ -1699,7 +1699,7 @@ itemBases["Runemastered Venerable Defender"] = { hidden = true, socketLimit = 3, tags = { armour = true, default = true, karui_basetype = true, runeforged = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 26, Armour = 203, Ward = 53, MovementPenalty = 0.03, }, req = { level = 65, str = 107, }, @@ -1711,7 +1711,7 @@ itemBases["Runemastered Venerable Defender"] = { hidden = true, socketLimit = 3, tags = { armour = true, default = true, karui_basetype = true, runeforged = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, EnergyShield = 135, Ward = 53, }, req = { level = 65, int = 107, }, @@ -1723,7 +1723,7 @@ itemBases["Runemastered Venerable Defender"] = { hidden = true, socketLimit = 3, tags = { armour = true, buckler = true, default = true, karui_basetype = true, runeforged = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 20, Evasion = 148, Ward = 42, }, req = { level = 65, dex = 107, }, @@ -1735,7 +1735,7 @@ itemBases["Runemastered Venerable Defender"] = { hidden = true, socketLimit = 3, tags = { armour = true, default = true, karui_basetype = true, runeforged = true, shield = true, str_dex_armour = true, str_dex_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 112, Evasion = 102, Ward = 53, MovementPenalty = 0.015, }, req = { level = 65, str = 67, dex = 67, }, @@ -1747,7 +1747,7 @@ itemBases["Blazon Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, ezomyte_basetype = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 10, EnergyShield = 6, MovementPenalty = 0.015, }, req = { }, @@ -1758,7 +1758,7 @@ itemBases["Sigil Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, ezomyte_basetype = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 20, EnergyShield = 9, MovementPenalty = 0.015, }, req = { level = 7, str = 8, int = 8, }, @@ -1769,7 +1769,7 @@ itemBases["Emblem Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, maraketh_basetype = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 34, EnergyShield = 12, MovementPenalty = 0.015, }, req = { level = 16, str = 15, int = 15, }, @@ -1780,7 +1780,7 @@ itemBases["Jingling Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, maraketh_basetype = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 53, EnergyShield = 17, MovementPenalty = 0.015, }, req = { level = 28, str = 23, int = 23, }, @@ -1791,7 +1791,7 @@ itemBases["Sectarian Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_int_armour = true, str_int_shield = true, vaal_basetype = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 61, EnergyShield = 19, MovementPenalty = 0.015, }, req = { level = 33, str = 27, int = 27, }, @@ -1802,7 +1802,7 @@ itemBases["Omen Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_int_armour = true, str_int_shield = true, vaal_basetype = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 66, EnergyShield = 20, MovementPenalty = 0.015, }, req = { level = 36, str = 30, int = 30, }, @@ -1813,7 +1813,7 @@ itemBases["Wayward Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, karui_basetype = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 80, EnergyShield = 23, MovementPenalty = 0.015, }, req = { level = 45, str = 36, int = 36, }, @@ -1824,7 +1824,7 @@ itemBases["Seer Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, karui_basetype = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 88, EnergyShield = 25, MovementPenalty = 0.015, }, req = { level = 50, str = 39, int = 39, }, @@ -1835,7 +1835,7 @@ itemBases["Stoic Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 91, EnergyShield = 26, MovementPenalty = 0.015, }, req = { level = 52, str = 41, int = 41, }, @@ -1846,7 +1846,7 @@ itemBases["Empyreal Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 99, EnergyShield = 28, MovementPenalty = 0.015, }, req = { level = 57, str = 45, int = 45, }, @@ -1857,7 +1857,7 @@ itemBases["Deified Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 112, EnergyShield = 31, MovementPenalty = 0.015, }, req = { level = 65, str = 50, int = 50, }, @@ -1868,7 +1868,7 @@ itemBases["Painted Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 80, EnergyShield = 23, MovementPenalty = 0.015, }, req = { level = 45, str = 36, int = 36, }, @@ -1879,7 +1879,7 @@ itemBases["Engraved Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 85, EnergyShield = 24, MovementPenalty = 0.015, }, req = { level = 48, str = 38, int = 38, }, @@ -1890,7 +1890,7 @@ itemBases["Descry Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 89, EnergyShield = 26, MovementPenalty = 0.015, }, req = { level = 51, str = 40, int = 40, }, @@ -1901,7 +1901,7 @@ itemBases["Dekharan Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 94, EnergyShield = 27, MovementPenalty = 0.015, }, req = { level = 54, str = 42, int = 42, }, @@ -1912,7 +1912,7 @@ itemBases["Quartered Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 102, EnergyShield = 29, MovementPenalty = 0.015, }, req = { level = 59, str = 46, int = 46, }, @@ -1923,7 +1923,7 @@ itemBases["Glowering Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 107, EnergyShield = 30, MovementPenalty = 0.015, }, req = { level = 62, str = 48, int = 48, }, @@ -1934,7 +1934,7 @@ itemBases["Intricate Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 112, EnergyShield = 31, MovementPenalty = 0.015, }, req = { level = 65, str = 50, int = 50, }, @@ -1945,7 +1945,7 @@ itemBases["Sekheman Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 123, EnergyShield = 34, MovementPenalty = 0.015, }, req = { level = 70, str = 54, int = 54, }, @@ -1956,7 +1956,7 @@ itemBases["Vaal Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 134, EnergyShield = 37, MovementPenalty = 0.015, }, req = { level = 75, str = 59, int = 59, }, @@ -1967,7 +1967,7 @@ itemBases["Blacksteel Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, karui_basetype = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 145, EnergyShield = 40, MovementPenalty = 0.015, }, req = { level = 80, str = 63, int = 63, }, @@ -1978,7 +1978,7 @@ itemBases["Runeforged Blazon Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, ezomyte_basetype = true, runeforged = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 10, EnergyShield = 6, Ward = 12, MovementPenalty = 0.015, }, req = { }, @@ -1989,7 +1989,7 @@ itemBases["Runeforged Sigil Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, ezomyte_basetype = true, runeforged = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 20, EnergyShield = 9, Ward = 16, MovementPenalty = 0.015, }, req = { level = 7, str = 8, int = 8, }, @@ -2000,7 +2000,7 @@ itemBases["Runeforged Emblem Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, maraketh_basetype = true, runeforged = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 34, EnergyShield = 12, Ward = 22, MovementPenalty = 0.015, }, req = { level = 16, str = 15, int = 15, }, @@ -2011,7 +2011,7 @@ itemBases["Runeforged Jingling Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, maraketh_basetype = true, runeforged = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 53, EnergyShield = 17, Ward = 31, MovementPenalty = 0.015, }, req = { level = 28, str = 23, int = 23, }, @@ -2022,7 +2022,7 @@ itemBases["Runeforged Sectarian Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_int_armour = true, str_int_shield = true, vaal_basetype = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 61, EnergyShield = 19, Ward = 33, MovementPenalty = 0.015, }, req = { level = 33, str = 27, int = 27, }, @@ -2033,7 +2033,7 @@ itemBases["Runeforged Omen Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_int_armour = true, str_int_shield = true, vaal_basetype = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 66, EnergyShield = 20, Ward = 34, MovementPenalty = 0.015, }, req = { level = 36, str = 30, int = 30, }, @@ -2044,7 +2044,7 @@ itemBases["Runeforged Wayward Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, karui_basetype = true, runeforged = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 80, EnergyShield = 23, Ward = 38, MovementPenalty = 0.015, }, req = { level = 45, str = 36, int = 36, }, @@ -2055,7 +2055,7 @@ itemBases["Runeforged Seer Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, karui_basetype = true, runeforged = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 88, EnergyShield = 25, Ward = 40, MovementPenalty = 0.015, }, req = { level = 50, str = 39, int = 39, }, @@ -2066,7 +2066,7 @@ itemBases["Runeforged Stoic Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Ward = 146, MovementPenalty = 0.015, }, req = { level = 52, str = 41, int = 41, }, @@ -2077,7 +2077,7 @@ itemBases["Runeforged Empyreal Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Ward = 157, MovementPenalty = 0.015, }, req = { level = 57, str = 45, int = 45, }, @@ -2088,7 +2088,7 @@ itemBases["Runeforged Deified Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Ward = 176, MovementPenalty = 0.015, }, req = { level = 65, str = 50, int = 50, }, @@ -2099,7 +2099,7 @@ itemBases["Runeforged Dekharan Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 79, EnergyShield = 22, Ward = 53, MovementPenalty = 0.015, }, req = { level = 54, str = 42, int = 42, }, @@ -2110,7 +2110,7 @@ itemBases["Runeforged Quartered Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 94, EnergyShield = 26, Ward = 41, MovementPenalty = 0.015, }, req = { level = 59, str = 46, int = 46, }, @@ -2121,7 +2121,7 @@ itemBases["Runeforged Glowering Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 86, EnergyShield = 24, Ward = 59, MovementPenalty = 0.015, }, req = { level = 62, str = 48, int = 48, }, @@ -2132,7 +2132,7 @@ itemBases["Runeforged Intricate Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 106, EnergyShield = 29, Ward = 44, MovementPenalty = 0.015, }, req = { level = 65, str = 50, int = 50, }, @@ -2143,7 +2143,7 @@ itemBases["Runeforged Sekheman Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 86, EnergyShield = 24, Ward = 106, MovementPenalty = 0.015, }, req = { level = 70, str = 54, int = 54, }, @@ -2154,7 +2154,7 @@ itemBases["Runeforged Vaal Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 126, EnergyShield = 35, Ward = 26, MovementPenalty = 0.015, }, req = { level = 75, str = 59, int = 59, }, @@ -2165,7 +2165,7 @@ itemBases["Runeforged Blacksteel Crest Shield"] = { quality = 20, socketLimit = 3, tags = { armour = true, default = true, karui_basetype = true, runeforged = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 52, EnergyShield = 15, Ward = 194, MovementPenalty = 0.015, }, req = { level = 80, str = 63, int = 63, }, @@ -2177,7 +2177,7 @@ itemBases["Runemastered Blazon Crest Shield"] = { hidden = true, socketLimit = 3, tags = { armour = true, default = true, ezomyte_basetype = true, runeforged = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 43, EnergyShield = 13, Ward = 47, MovementPenalty = 0.015, }, req = { level = 40, str = 32, int = 32, }, @@ -2189,7 +2189,7 @@ itemBases["Runemastered Sigil Crest Shield"] = { hidden = true, socketLimit = 3, tags = { armour = true, default = true, ezomyte_basetype = true, runeforged = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 65, EnergyShield = 19, Ward = 12, MovementPenalty = 0.015, }, req = { level = 40, str = 32, int = 32, }, @@ -2201,7 +2201,7 @@ itemBases["Runemastered Emblem Crest Shield"] = { hidden = true, socketLimit = 3, tags = { armour = true, default = true, maraketh_basetype = true, runeforged = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 48, EnergyShield = 14, Ward = 34, MovementPenalty = 0.015, }, req = { level = 38, str = 31, int = 31, }, @@ -2213,7 +2213,7 @@ itemBases["Runemastered Jingling Crest Shield"] = { hidden = true, socketLimit = 3, tags = { armour = true, default = true, maraketh_basetype = true, runeforged = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 41, EnergyShield = 12, Ward = 45, MovementPenalty = 0.015, }, req = { level = 38, str = 31, int = 31, }, @@ -2225,7 +2225,7 @@ itemBases["Runemastered Omen Crest Shield"] = { hidden = true, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_int_armour = true, str_int_shield = true, vaal_basetype = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 42, EnergyShield = 12, Ward = 82, MovementPenalty = 0.015, }, req = { level = 48, str = 38, int = 38, }, @@ -2237,7 +2237,7 @@ itemBases["Runemastered Intricate Crest Shield"] = { hidden = true, socketLimit = 3, tags = { armour = true, default = true, runeforged = true, shield = true, str_int_armour = true, str_int_shield = true, }, - implicit = "Grants Skill: Level (1-20) Raise Shield", + implicit = "Grants Skill: Raise Shield", implicitModTypes = { }, armour = { BlockChance = 25, Armour = 78, EnergyShield = 22, Ward = 62, MovementPenalty = 0.015, }, req = { level = 65, str = 50, int = 50, }, diff --git a/src/Data/Uniques/amulet.lua b/src/Data/Uniques/amulet.lua index a87cc29279..7b010d7359 100644 --- a/src/Data/Uniques/amulet.lua +++ b/src/Data/Uniques/amulet.lua @@ -56,6 +56,7 @@ Jade Amulet Source: Drops from unique{Xesht, We That Are One} in normal{Twisted Domain} Variant: Pre 0.4.0 Variant: Current +Requires Level 55 Implicits: 2 Grants Skill: Level (1-20) Lightning Bolt {tags:attribute}+(10-15) to Dexterity @@ -96,6 +97,7 @@ Implicits: 1 Eventide Petals Veridical Chain League: Runes of Aldur +Requires Level 55 Implicits: 2 Grants Skill: Level (1-20) Midnight Zenith +(30-40) to maximum Runic Ward @@ -141,8 +143,8 @@ Allies in your Presence have (30-50)% increased Critical Damage Bonus ]],[[ Hinekora's Sight Stellar Amulet -Requires Level 44 League: Rise of the Abyssal +Requires Level 44 Implicits: 2 Grants Skill: Level (1-20) Future-Past {tags:attribute}+(5-7) to all Attributes @@ -252,6 +254,7 @@ Strugglescream Stellar Amulet Variant: Pre 0.4.0 Variant: Current +Requires Level 52 Implicits: 1 {tags:attribute}+(5-7) to all Attributes {variant:1}Can have 2 additional Instilled Modifiers @@ -277,6 +280,7 @@ Variant: Pre 0.3.0 Variant: Pre 0.4.0 Variant: Current Source: Drops from unique{Xesht, We That Are One} in normal{Twisted Domain} +Requires Level 52 Implicits: 1 {tags:attribute}+(10-15) to Strength {tags:life}(10-20)% increased maximum Life diff --git a/src/Data/Uniques/belt.lua b/src/Data/Uniques/belt.lua index cb7b88f03d..0c4514b2eb 100644 --- a/src/Data/Uniques/belt.lua +++ b/src/Data/Uniques/belt.lua @@ -6,9 +6,11 @@ return { Bijouborne Double Belt League: Dawn of the Hunt -Implicits: 2 -+(50-100) to maximum Mana +Implicits: 3 +Grants Skill: Level (1-20) Cast on Charm Use Has (1-3) Charm Slot +(20-30)% increased Charm Charges gained ++(50-100) to maximum Mana (10-50)% reduced Charm Effect Duration +2 Charm Slots +(15-25) to Dexterity @@ -185,9 +187,6 @@ Variant: Legacy of Stibnite Variant: Legacy of Sulphur Variant: Legacy of Topaz League: Runes of Aldur -Implicits: 2 -Has (1-3) Charm Slot -20% of Flask Recovery applied Instantly {variant:1}Legacy of Amethyst {variant:2}Legacy of Basalt {variant:3}Legacy of Bismuth @@ -202,6 +201,9 @@ Has (1-3) Charm Slot {variant:12}Legacy of Stibnite {variant:13}Legacy of Sulphur {variant:14}Legacy of Topaz +Implicits: 2 +Has (1-3) Charm Slot +20% of Flask Recovery applied Instantly All Mage's Legacies have (25-50)% increased effect per duplicate Mage's Legacy you have ]],[[ Meginord's Girdle diff --git a/src/Data/Uniques/body.lua b/src/Data/Uniques/body.lua index 0c52fa0fd2..c7761179e6 100644 --- a/src/Data/Uniques/body.lua +++ b/src/Data/Uniques/body.lua @@ -335,7 +335,8 @@ The Covenant Altar Robe Variant: Pre 0.4.0 Variant: Current -{variant:2}Grants Skill: Level 14 Life Remnants +Implicits: 1 +{variant:2}Grants Skill: Level (1-20) Life Remnants (100-150)% increased Energy Shield +(100-150) to maximum Life {variant:1}5% of Spell Damage Leeched as Life @@ -402,6 +403,7 @@ Silk Robe Source: Drops from unique{Zarokh, the Temporal} Variant: Pre 0.2.0 Variant: Current +Requires Level 64 +(100-150) to maximum Energy Shield +(10-20)% to all Elemental Resistances (5-30)% of Damage taken Recouped as Life @@ -544,6 +546,7 @@ Enemies in your Presence are Intimidated Pragmatism Explorer Armour Source: Drops from unique{The King in the Mists} in normal{Crux of Nothingness} +Requires Level 52 (200-300)% increased Armour and Evasion +(10-20)% to all Elemental Resistances -17% to Chaos Resistance @@ -612,7 +615,7 @@ Implicits: 1 (100-150)% increased Armour and Energy Shield -10% to Fire Resistance {variant:1}+(13-17)% to Chaos Resistance -{variant:2,3}+(13-17)% to Chaos Resistance +{variant:2,3}+(17-23)% to Chaos Resistance {variant:1}(25-50)% increased Flask Charges gained {variant:2}(20-30)% increased Flask Charges gained {variant:1,2}50% less Flask Charges used diff --git a/src/Data/Uniques/flask.lua b/src/Data/Uniques/flask.lua index d26d8f060e..1e5847608c 100644 --- a/src/Data/Uniques/flask.lua +++ b/src/Data/Uniques/flask.lua @@ -38,8 +38,8 @@ Skills have (80-120)% longer Perfect Timing window during effect [[ Lavianga's Spirits Gargantuan Mana Flask -Requires Level 49 League: Fate of the Vaal +Requires Level 49 This Flask cannot be Used but applies its Effect constantly (70-80)% reduced Amount Recovered ]],[[ @@ -149,7 +149,6 @@ Variant: Wolf Variant: Stag Variant: Cat Implicits: 1 -15% increased Rarity of Items found Used when you kill a Rare or Unique enemy {variant:4}Possessed by Spirit Of The Bear for (10-20) seconds on use {variant:5}Possessed by Spirit Of The Boar for (10-20) seconds on use diff --git a/src/Data/Uniques/gloves.lua b/src/Data/Uniques/gloves.lua index 13e4433edd..57fc891aea 100644 --- a/src/Data/Uniques/gloves.lua +++ b/src/Data/Uniques/gloves.lua @@ -334,6 +334,7 @@ Curses you inflict are reflected back to you Blessed Bonds Linen Wraps Source: Drops from unique{Zarokh, the Temporal} +Requires Level 56 +(60-100) to Evasion Rating +(30-50) to maximum Energy Shield Gain (25-35) Mana per enemy killed diff --git a/src/Data/Uniques/helmet.lua b/src/Data/Uniques/helmet.lua index b5bac5752c..2d06e2d8bc 100644 --- a/src/Data/Uniques/helmet.lua +++ b/src/Data/Uniques/helmet.lua @@ -247,6 +247,7 @@ Source: Drops from unique{Zarokh, the Temporal} Variant: Pre 0.2.0 Variant: Pre 0.4.0 Variant: Current +Requires Level 52 +(80-120) to maximum Energy Shield +(20-30) to Dexterity Enemies in your Presence are Blinded @@ -440,6 +441,7 @@ Source: Drops from unique{Olroth, Origin of the Fall} Variant: Pre 0.4.0 Variant: Pre 0.5.0 Variant: Current +Requires Level 62 {variant:1}(100-150)% increased Armour and Energy Shield {variant:2}(150-250)% increased Armour and Energy Shield {variant:3}(240-340)% increased Armour and Energy Shield @@ -484,6 +486,7 @@ Critical Hits Poison the enemy Glimpse of Chaos Tribal Mask Source: Drops from unique{Trialmaster} in normal{The Trial of Chaos} +Requires Level 52 Can be modified while Corrupted +(50-150) to maximum Life +(50-150) to maximum Mana diff --git a/src/Data/Uniques/mace.lua b/src/Data/Uniques/mace.lua index 7e42fbf3f2..c113b86379 100644 --- a/src/Data/Uniques/mace.lua +++ b/src/Data/Uniques/mace.lua @@ -41,6 +41,7 @@ Culling Strike against Frozen Enemies Marohi Erqi Totemic Greatclub League: Rise of the Abyssal +Requires Level 60 Implicits: 1 Crushes Enemies on Hit +150 Strength Requirement @@ -103,8 +104,8 @@ Variant: Pre 0.3.0 Variant: Current League: Dawn of the Hunt Implicits: 2 -{variant:1}+(10-15)% to Critical Damage Bonus {variant:2}+(5-10)% to Critical Damage Bonus +{variant:1}+(10-15)% to Critical Damage Bonus Adds (21-26) to (25-31) Physical Damage (10-15)% increased Attack Speed Breaks Armour equal to 40% of damage from Hits with this weapon @@ -275,6 +276,8 @@ Trephina Forge Maul Variant: Pre 0.1.1 Variant: Current +Implicits: 1 +Crushes Enemies on Hit {variant:1}Adds (7-10) to (12-18) Physical Damage {variant:2}Adds (12-15) to (22-25) Physical Damage (10-15)% increased Attack Speed diff --git a/src/Data/Uniques/quiver.lua b/src/Data/Uniques/quiver.lua index c9c5f0ff52..88f3fcaf4c 100644 --- a/src/Data/Uniques/quiver.lua +++ b/src/Data/Uniques/quiver.lua @@ -40,6 +40,7 @@ Projectiles Pierce all Ignited enemies Cadiro's Gambit Primed Quiver League: Dawn of the Hunt +Requires Level 66 Implicits: 1 (7-10)% increased Attack Speed Each Arrow fired is a Crescendo, Splinter, Reversing, Diamond, Covetous, or Blunt Arrow @@ -88,8 +89,8 @@ Variant: Pre 0.3.0 Variant: Current League: Dawn of the Hunt Implicits: 2 -{variant:1}(20-30)% increased Stun Buildup {variant:2}(25-40)% increased Stun Buildup +{variant:1}(20-30)% increased Stun Buildup Adds (7-11) to (14-20) Physical Damage to Attacks +(150-200) to Armour (20-30)% increased Projectile Speed diff --git a/src/Data/Uniques/ring.lua b/src/Data/Uniques/ring.lua index 9352de997c..2b84f93ef0 100644 --- a/src/Data/Uniques/ring.lua +++ b/src/Data/Uniques/ring.lua @@ -395,7 +395,6 @@ Implicits: 1 Vigilant View Emerald Ring League: Dawn of the Hunt -Requires Level 26 Implicits: 1 {tags:attack}+(120-160) to Accuracy Rating {tags:attack}+(100-150) to Accuracy Rating diff --git a/src/Data/Uniques/sceptre.lua b/src/Data/Uniques/sceptre.lua index 7f6e3cab14..ad646cc65f 100644 --- a/src/Data/Uniques/sceptre.lua +++ b/src/Data/Uniques/sceptre.lua @@ -33,6 +33,7 @@ Variant: Lightning (Pre 0.2.1 ) Variant: Fire Variant: Cold Variant: Lightning +Requires Level 65 Implicits: 3 {variant:1,4}Grants Skill: Level (1-20) Purity of Fire {variant:2,5}Grants Skill: Level (1-20) Purity of Ice @@ -49,8 +50,8 @@ Implicits: 3 ]],[[ Guiding Palm of the Eye Shrine Sceptre -Requires Level 65 League: Dawn of the Hunt +Requires Level 65 Implicits: 1 Grants Skill: Level (1-20) Purity of Ice Gain 25% of Damage as Extra Cold Damage @@ -62,8 +63,8 @@ Grants effect of Guided Freezing Shrine ]],[[ Guiding Palm of the Heart Shrine Sceptre -Requires Level 65 League: Dawn of the Hunt +Requires Level 65 Implicits: 1 Grants Skill: Level (1-20) Purity of Fire Gain 25% of Damage as Extra Fire Damage @@ -75,8 +76,8 @@ Grants effect of Guided Meteoric Shrine ]],[[ Guiding Palm of the Mind Shrine Sceptre -Requires Level 65 League: Dawn of the Hunt +Requires Level 65 Implicits: 1 Grants Skill: Level (1-20) Purity of Lightning Gain 25% of Damage as Extra Lightning Damage @@ -88,8 +89,8 @@ Grants effect of Guided Tempest Shrine ]],[[ Palm of the Dreamer Shrine Sceptre -Requires Level 65 League: Dawn of the Hunt +Requires Level 65 Implicits: 1 Grants Skill: Level (1-20) Impurity Allies in your Presence deal (13-17) to (25-37) added Attack Chaos Damage @@ -102,6 +103,7 @@ Grants effect of Dreaming Gloom Shrine Sacred Flame Shrine Sceptre Source: Drops from unique{Arbiter of Ash} in normal{The Burning Monolith} +Requires Level 55 Implicits: 1 Grants Skill: Level (1-20) Purity of Fire Gain (40-60)% of Damage as Extra Fire Damage diff --git a/src/Data/Uniques/shield.lua b/src/Data/Uniques/shield.lua index 788de0393e..6eff804d90 100644 --- a/src/Data/Uniques/shield.lua +++ b/src/Data/Uniques/shield.lua @@ -87,8 +87,6 @@ The Surrender {variant:2}Vaal Tower Shield Variant: Pre 0.4.0 Variant: Current -Implicits: 1 -Grants Skill: Raise Shield (40-60)% increased Block chance (150-200)% increased Armour +(150-200) to Stun Threshold @@ -101,9 +99,10 @@ Variant: Pre 0.4.0 Variant: Pre 0.5.0 Variant: Current Source: Drops from unique{Olroth, Origin of the Fall} +Requires Level 60 Implicits: 2 Grants Skill: Raise Shield -Grants Skill: Cast on Block +Grants Skill: Level (1-20) Cast on Block {variant:4}+(50-100) to maximum Runic Ward {variant:1}(100-150)% increased Armour {variant:2}(150-200)% increased Armour @@ -373,6 +372,7 @@ Variant: Pre 0.2.0 Variant: Pre 0.4.0 Variant: Current Source: Drops from unique{Trialmaster} in normal{The Trial of Chaos} +Requires Level 48 Implicits: 1 Grants Skill: Raise Shield {variant:1}(333-666)% increased effect of Socketed Soul Cores @@ -397,7 +397,6 @@ Grants Skill: Raise Shield ]],[[ Prism Guardian Sectarian Crest Shield -Requires Level 65 League: Dawn of the Hunt Variant: Pre 0.2.1 Variant: Pre 0.4.0 @@ -424,7 +423,6 @@ Regenerate 3% of maximum Life per second while on Low Life ]],[[ Saffell's Frame Emblem Crest Shield -Requires Level 16 Implicits: 1 Grants Skill: Raise Shield +(15-25)% to Fire Resistance diff --git a/src/Data/Uniques/spear.lua b/src/Data/Uniques/spear.lua index f351a0e79d..0720ba8228 100644 --- a/src/Data/Uniques/spear.lua +++ b/src/Data/Uniques/spear.lua @@ -57,8 +57,9 @@ Create a Fragment of Divinity in your Presence every 4 seconds Saitha's Spear Barbed Spear League: Dawn of the Hunt -Implicits: 1 +Implicits: 2 Grants Skill: Spear Throw +Bleeding you inflict deals Damage (10-20)% faster Adds (14-26) to (27-32) Physical Damage Adds (33-41) to (47-53) Fire Damage (15-25)% chance to cause Bleeding on Hit diff --git a/src/Data/Uniques/staff.lua b/src/Data/Uniques/staff.lua index e31e14a144..6b63446938 100644 --- a/src/Data/Uniques/staff.lua +++ b/src/Data/Uniques/staff.lua @@ -18,6 +18,7 @@ Spells which cost Life Gain (80-120)% of Damage as Extra Physical Damage The Burden of Shadows Chiming Staff Source: Drops from unique{The King in the Mists} in normal{Crux of Nothingness} +Requires Level 56 Implicits: 1 Grants Skill: Level (1-20) Sigil of Power (20-30)% increased Cast Speed @@ -68,7 +69,7 @@ Pyrophyte Staff Variant: Pre 0.4.0 Variant: Current Implicits: 1 -Grants Skill: Level (1-20) Living Bomb +Grants Skill: Level (1-20) Solar Orb (80-120)% increased Fire Damage (10-20)% increased Cast Speed 100% increased Flammability Magnitude @@ -219,8 +220,14 @@ Variant: Chaos Damage and Curse Variant: Spell Physical Damage and Bleed Chance Variant: Chaos Damage and Explode Variant: Unholy Might -Implicits: 1 +Implicits: 7 Grants Skill: Level (1-20) Feast of Flesh +{variant:1}Grants Skill: Level (1-20) His Dark Horizon +{variant:2}Grants Skill: Level (1-20) His Foul Emergence +{variant:3}Grants Skill: Level (1-20) His Grave Command +{variant:4}Grants Skill: Level (1-20) His Scattering Calamity +{variant:5}Grants Skill: Level (1-20) His Vile Intrusion +{variant:6}Grants Skill: Level (1-20) His Winnowing Flame (60-80)% increased Desecrated Modifier magnitudes {variant:9}(100-160)% increased Chaos Damage {variant:11}(100-160)% increased Chaos Damage @@ -234,11 +241,5 @@ Grants Skill: Level (1-20) Feast of Flesh {variant:8}(6-10)% increased Spirit Reservation Efficiency {variant:12}(28-56)% increased Magnitude of Unholy Might buffs you grant {variant:12}You have Unholy Might -{variant:1}Grants Skill: Level (1-20) His Dark Horizon -{variant:2}Grants Skill: Level (1-20) His Foul Emergence -{variant:3}Grants Skill: Level (1-20) His Grave Command -{variant:4}Grants Skill: Level (1-20) His Scattering Calamity -{variant:5}Grants Skill: Level (1-20) His Vile Intrusion -{variant:6}Grants Skill: Level (1-20) His Winnowing Flame ]], } diff --git a/src/Data/Uniques/wand.lua b/src/Data/Uniques/wand.lua index ab8c86d6bb..232ac25f2c 100644 --- a/src/Data/Uniques/wand.lua +++ b/src/Data/Uniques/wand.lua @@ -9,7 +9,7 @@ League: Dawn of the Hunt Requires Level 65 Implicits: 2 Grants Skill: Level (1-20) Power Siphon -Grants Skill: Level 20 Pinnacle of Power +Grants Skill: Pinnacle of Power +(100-150) to maximum Mana +3 to Level of all Spell Skills (15-30)% increased Cast Speed @@ -18,7 +18,6 @@ Grants Skill: Level 20 Pinnacle of Power ]],[[ Cursecarver Acrid Wand -Requires Level 33 League: Dawn of the Hunt Variant: Elemental Weakness Variant: Vulnerability @@ -71,6 +70,7 @@ Runeseeker's Call Runic Fork League: Runes of Aldur Sockets: S S S S S +Requires Level 64 Implicits: 1 Grants Skill: Level (1-20) The Stars Answer Only Runes can be Socketed in this item diff --git a/src/Export/Classes/GGPKData.lua b/src/Export/Classes/GGPKData.lua index 278e4b3c64..88236939ea 100644 --- a/src/Export/Classes/GGPKData.lua +++ b/src/Export/Classes/GGPKData.lua @@ -262,7 +262,6 @@ function GGPKClass:GetNeededFiles() "Data/Balance/InfluenceTags.dat", "Data/Balance/AttributeRequirements.dat", "Data/Balance/GrantedEffectLabels.dat", - "Data/Balance/ItemInherentSkills.dat", "Data/Balance/KeywordPopups.dat", "Data/Balance/SoulCores.dat", "Data/Balance/SoulCoreStats.dat", diff --git a/src/Export/Scripts/bases.lua b/src/Export/Scripts/bases.lua index 139768ba8b..a2d8060e3b 100644 --- a/src/Export/Scripts/bases.lua +++ b/src/Export/Scripts/bases.lua @@ -136,7 +136,25 @@ directiveTable.base = function(state, args, out) local implicitLines = { } local implicitModTypes = { } local variantList = { } + local implicitMods = { } + local hasCharmSlots for _, mod in ipairs(baseItemType.ImplicitMods) do + table.insert(implicitMods, mod) + if mod.Type and mod.Type.Id == "CharmSlots" then + hasCharmSlots = true + end + end + if state.type == "Belt" then + if not hasCharmSlots then + table.insert(implicitMods, dat("Mods"):GetRow("Id", "BeltImplicitCharmSlots3")) + end + end + table.sort(implicitMods, function(a, b) + local _, aOrder = describeMod(a) + local _, bOrder = describeMod(b) + return (aOrder[1] or 0) < (bOrder[1] or 0) + end) + for _, mod in ipairs(implicitMods) do local modDesc = describeMod(mod) for _, line in ipairs(modDesc) do table.insert(implicitLines, line) @@ -146,23 +164,20 @@ directiveTable.base = function(state, args, out) table.insert(implicitLines, "Grants Skill: Spear Throw") end end - if state.type == "Belt" then - table.insert(implicitLines, "Has (1-3) Charm Slots") - end local inherentSkillType = dat("ItemInherentSkills"):GetRow("BaseItemType", baseItemType) if inherentSkillType then - if #inherentSkillType.Skill > 1 then - for index, skill in ipairs(inherentSkillType.Skill) do - local skillGem = dat("SkillGems"):GetRow("BaseItemType", skill.BaseItemType) - local gemEffect = dat("GemEffects"):GetRow("GrantedEffect", skillGem.GemEffects[1].GrantedEffect) - local skillName = gemEffect.GrantedEffect.ActiveSkill.DisplayName + local hasVariants = #inherentSkillType.Skill > 1 + for index, skill in ipairs(inherentSkillType.Skill) do + local skillGem = dat("SkillGems"):GetRow("BaseItemType", skill.BaseItemType) + local skillName = skillGem.GemEffects[1].GrantedEffect.ActiveSkill.DisplayName + local naturalMaxLevel = skillGem.IsSupport and 1 or #dat("ItemExperiencePerLevel"):GetRowList("ItemExperienceType", skillGem.GemLevelProgression) + naturalMaxLevel = naturalMaxLevel > 0 and naturalMaxLevel or 1 + local implicitLine = "Grants Skill: " .. (naturalMaxLevel == 1 and "" or "Level (1-" .. naturalMaxLevel .. ") ") .. skillName + if hasVariants then table.insert(variantList, skillName) - table.insert(implicitLines, "{variant:" .. index .. "}Grants Skill: Level (1-20) " .. skillName) + implicitLine = "{variant:" .. index .. "}" .. implicitLine end - else - local skillGem = dat("SkillGems"):GetRow("BaseItemType", inherentSkillType.Skill[1].BaseItemType) - local gemEffect = dat("GemEffects"):GetRow("GrantedEffect", skillGem.GemEffects[1].GrantedEffect) - table.insert(implicitLines, "Grants Skill: Level (1-20) " .. gemEffect.GrantedEffect.ActiveSkill.DisplayName) + table.insert(implicitLines, implicitLine) end end if #variantList > 0 then diff --git a/src/Export/Scripts/uModsToText.lua b/src/Export/Scripts/uModsToText.lua index db2eafd6c2..d529d06ca6 100644 --- a/src/Export/Scripts/uModsToText.lua +++ b/src/Export/Scripts/uModsToText.lua @@ -46,7 +46,7 @@ local itemTypes = { "soulcore", "incursionlimb", } -local function writeMods(out, statOrder) +local function appendMods(lines, statOrder) local orders = { } for order, _ in pairs(statOrder) do table.insert(orders, order) @@ -54,47 +54,145 @@ local function writeMods(out, statOrder) table.sort(orders) for _, order in pairs(orders) do for _, line in ipairs(statOrder[order]) do - out:write(line, "\n") + table.insert(lines, line) end end end +local function stripLineTags(line) + return (line:gsub("^({[^}]+})+", "")) +end + +local function isGrantedSkillLine(line) + return stripLineTags(line):match("^Grants Skill") +end + +local function writeLines(out, lines) + for _, line in ipairs(lines) do + out:write(line, "\n") + end +end + +local itemBases = { } +for _, name in ipairs(itemTypes) do + local baseFileName = "../Data/Bases/"..name..".lua" + local baseFile = io.open(baseFileName, "r") + if baseFile then + baseFile:close() + LoadModule(baseFileName, itemBases) + end +end + local uniqueMods = LoadModule("../Data/ModItemExclusive.lua") local modVeiled = LoadModule("../Data/ModVeiled.lua") for _, name in ipairs(itemTypes) do local out = io.open("../Data/Uniques/"..name..".lua", "w") + local useCatalystTags = name == "amulet" or name == "ring" + local lines = { } + local implicitLines = { } + local grantedSkillLines = { } local statOrder = {} local postModLines = {} + local variantBaseImplicitLines = { } local modLines = 0 - local implicits + local sourceImplicitLines + local headerLineCount = 0 + local baseName + local includeBaseImplicits = true + local uniqueReqLevel = 0 for line in io.lines("Uniques/"..name..".lua") do - if implicits then -- remove 1 downs to 0 - implicits = implicits - 1 - end local specName, specVal = line:match("^([%a ]+): (.+)$") if line:match("]],") then -- start new unique - writeMods(out, statOrder) + local base = baseName and itemBases[baseName] + local baseReqLevel = base and base.req.level or 0 + if uniqueReqLevel > baseReqLevel then + table.insert(lines, "Requires Level "..uniqueReqLevel) + end + local baseImplicitLines = { } + local finalImplicitLines = { } + if includeBaseImplicits and base and base.implicit then + local implicitIndex = 0 + for baseLine in base.implicit:gmatch("[^\n]+") do + implicitIndex = implicitIndex + 1 + local prefix = "" + if useCatalystTags then + local tags = { } + for _, tag in ipairs(base.implicitModTypes and base.implicitModTypes[implicitIndex] or { }) do + if catalystTags[tag] then + table.insert(tags, tag) + end + end + if tags[1] then + prefix = "{tags:"..table.concat(tags, ",").."}" + end + end + for _, implicitLine in ipairs(variantBaseImplicitLines[stripLineTags(baseLine)] or { prefix..baseLine }) do + if isGrantedSkillLine(implicitLine) then + table.insert(finalImplicitLines, implicitLine) + else + table.insert(baseImplicitLines, implicitLine) + end + end + end + end + for _, implicitLine in ipairs(grantedSkillLines) do + table.insert(finalImplicitLines, implicitLine) + end + for _, implicitLine in ipairs(baseImplicitLines) do + table.insert(finalImplicitLines, implicitLine) + end + for _, implicitLine in ipairs(implicitLines) do + table.insert(finalImplicitLines, implicitLine) + end + if finalImplicitLines[1] then + table.insert(lines, "Implicits: "..#finalImplicitLines) + for _, implicitLine in ipairs(finalImplicitLines) do + table.insert(lines, implicitLine) + end + end + appendMods(lines, statOrder) for _, line in ipairs(postModLines) do - out:write(line, "\n") + table.insert(lines, line) end - out:write(line, "\n") + table.insert(lines, line) + writeLines(out, lines) + lines = { } + implicitLines = { } + grantedSkillLines = { } statOrder = { } postModLines = { } + variantBaseImplicitLines = { } modLines = 0 - elseif not specName then + sourceImplicitLines = nil + headerLineCount = 0 + baseName = nil + includeBaseImplicits = true + uniqueReqLevel = 0 + elseif not specName or (sourceImplicitLines and sourceImplicitLines > 0) then local prefix = "" local variantString = line:match("({variant:[%d,]+})") local fractured = line:match("({fractured})") or "" local modName, legacy = line:gsub("{.+}", ""):match("^([%a%d_]+)([%[%]-,%d]*)") local mod = uniqueMods[modName] or modVeiled[modName] + local rawMod = modName and dat("Mods"):GetRow("Id", modName) + local grantedSkill = rawMod and dat("ModGrantedSkills"):GetRow("Mod", rawMod) + local grantedSkillLine + if grantedSkill then + local skillName = grantedSkill.SkillGem.GemEffects[1].GrantedEffect.ActiveSkill.DisplayName + local naturalMaxLevel = grantedSkill.SkillGem.IsSupport and 1 or #dat("ItemExperiencePerLevel"):GetRowList("ItemExperienceType", grantedSkill.SkillGem.GemLevelProgression) + naturalMaxLevel = naturalMaxLevel > 0 and naturalMaxLevel or 1 + grantedSkillLine = "Grants Skill: "..(naturalMaxLevel == 1 and "" or "Level (1-"..naturalMaxLevel..") ")..skillName + end + local isSourceImplicit = sourceImplicitLines and sourceImplicitLines > 0 + if variantString then + prefix = prefix ..variantString + end if mod then modLines = modLines + 1 - if variantString then - prefix = prefix ..variantString - end + uniqueReqLevel = math.max(uniqueReqLevel, math.floor((mod.level or 0) * 0.8)) local tags = {} - if isValueInArray({"amulet", "ring"}, name) then + if useCatalystTags then for _, tag in ipairs(mod.modTags) do if catalystTags[tag] then table.insert(tags, tag) @@ -126,32 +224,80 @@ for _, name in ipairs(itemTypes) do end for i, line in ipairs(legacyMod or mod) do local order = math.floor(mod.statOrder[i]) - if statOrder[order] then - table.insert(statOrder[order], prefix..line) - else - statOrder[order] = { prefix..line } + local baseImplicitLine + if variantString then + local base = baseName and itemBases[baseName] + if base and base.implicit then + for baseLine in base.implicit:gmatch("[^\n]+") do + if stripLineTags(baseLine) == stripLineTags(line) then + baseImplicitLine = stripLineTags(baseLine) + variantBaseImplicitLines[baseImplicitLine] = variantBaseImplicitLines[baseImplicitLine] or { } + table.insert(variantBaseImplicitLines[baseImplicitLine], prefix..line) + break + end + end + end end + if not baseImplicitLine then + if isSourceImplicit then + if isGrantedSkillLine(line) then + table.insert(grantedSkillLines, prefix..line) + else + table.insert(implicitLines, prefix..line) + end + elseif statOrder[order] then + table.insert(statOrder[order], prefix..line) + else + statOrder[order] = { prefix..line } + end + end + end + if grantedSkillLine then + uniqueReqLevel = math.max(uniqueReqLevel, math.floor((rawMod.Level or 0) * 0.8)) + table.insert(grantedSkillLines, prefix..grantedSkillLine) end + elseif grantedSkillLine then + modLines = modLines + 1 + uniqueReqLevel = math.max(uniqueReqLevel, math.floor((rawMod.Level or 0) * 0.8)) + table.insert(grantedSkillLines, prefix..grantedSkillLine) else if modLines > 0 then -- treat as post line e.g. mirrored table.insert(postModLines, line) - else - out:write(line, "\n") + elseif isSourceImplicit then + if isGrantedSkillLine(line) then + table.insert(grantedSkillLines, line) + else + table.insert(implicitLines, line) + end + elseif not line:match("^Requires:? Level") then + table.insert(lines, line) + if line:match("%[%[") then + headerLineCount = 0 + baseName = nil + else + headerLineCount = headerLineCount + 1 + if headerLineCount == 2 then + baseName = line + end + end end end + if sourceImplicitLines and sourceImplicitLines > 0 then + sourceImplicitLines = sourceImplicitLines - 1 + end else - if specName == "Implicits" then - implicits = tonumber(specVal) + if specName == "Requires Level" then + -- Requirement levels are derived from the base type and unique mod levels. + elseif specName == "Base Implicits" then + includeBaseImplicits = specVal ~= "false" + elseif specName == "Implicits" then + sourceImplicitLines = tonumber(specVal) + else + table.insert(lines, line) end - out:write(line, "\n") - end - if implicits and implicits == 0 then - writeMods(out, statOrder) - implicits = nil - statOrder = { } - modLines = 0 end end + writeLines(out, lines) out:close() end diff --git a/src/Export/Uniques/amulet.lua b/src/Export/Uniques/amulet.lua index 64e33ab456..38d3422e54 100644 --- a/src/Export/Uniques/amulet.lua +++ b/src/Export/Uniques/amulet.lua @@ -8,8 +8,6 @@ Bloodstone Amulet Variant: Pre 0.2.0 Variant: Pre 0.4.0 Variant: Current -Implicits: 1 -AmuletImplicitIncreasedLife1 UniqueMovementVelocity6 UniqueIncreasedSkillSpeed2 UniqueIncreasedPhysicalDamageReductionRatingPercent1 @@ -22,16 +20,12 @@ Astramentis Stellar Amulet Variant: Pre 0.2.0 Variant: Current -Implicits: 1 -AmuletImplicitAllAttributes1 {variant:1}UniqueAllAttributes3[80,100] {variant:2}UniqueAllAttributes3 UniquePhysicalAttackDamageTaken2 ]],[[ Beacon of Azis Solar Amulet -Implicits: 1 -AmuletImplicitBaseSpirit1 UniqueIncreasedMana12 UniqueIncreasedSpirit5 UniqueLightRadius7 @@ -42,8 +36,6 @@ Amber Amulet Variant: Pre 0.4.0 Variant: Pre 0.5.0 Variant: Current -Implicits: 1 -AmuletImplicitStrength1 UniqueMaximumLifeIncrease3 UniqueAllAttributes1 UniqueAllResistances6 @@ -56,9 +48,6 @@ Jade Amulet Source: Drops from unique{Xesht, We That Are One} in normal{Twisted Domain} Variant: Pre 0.4.0 Variant: Current -Implicits: 2 -AmuletImplicitDexterity1 -Grants Skill: Level (1-20) Lightning Bolt {variant:1}UniqueLightningResist19[20,30] {variant:2}UniqueLightningResist19 UniqueCriticalStrikesIgnoreLightningResistance1 @@ -70,9 +59,6 @@ Variant: Pre 0.1.1 Variant: Pre 0.2.1 Variant: Pre 0.4.0 Variant: Current -Requires Level 56 -Implicits: 1 -AmuletImplicitDexterity1 UniqueMaximumLifeIncrease6 UniqueStrength2 UniqueManaRegeneration13 @@ -85,8 +71,6 @@ The Everlasting Gaze Azure Amulet Variant: Pre 0.2.0 Variant: Current -Implicits: 1 -AmuletImplicitManaRegeneration1 {variant:1}UniqueIncreasedMana32[50,50] {variant:2}UniqueIncreasedMana32 UniqueManaRegeneration29 @@ -96,9 +80,7 @@ UniqueManaRegeneration29 Eventide Petals Veridical Chain League: Runes of Aldur -Implicits: 2 -Grants Skill: Level (1-20) Midnight Zenith -AmuletImplicitRunicWard1 +UniqueMidnightStarSkill1 UniqueCriticalStrikeChance16 UniqueIntelligence50 UniqueLightRadius21 @@ -108,8 +90,6 @@ Eye of Chayula Gold Amulet Variant: Pre 0.2.0 Variant: Current -Implicits: 1 -AmuletImplicitItemFoundRarityIncrease1 UniqueMaximumLifeIncrease1 UniqueAllAttributes7 {variant:1}UniqueStunThreshold13 @@ -119,9 +99,6 @@ Fireflower Solar Amulet Variant: Pre 0.2.0 Variant: Current -Requires Level 52 -Implicits: 1 -AmuletImplicitBaseSpirit1 {variant:1}UniqueItemFoundRarityIncrease2[10,20] {variant:2}UniqueItemFoundRarityIncrease2 UniqueManaRegeneration7 @@ -130,8 +107,6 @@ UniqueGlobalFireGemLevel1 ]],[[ Fixation of Yix Stellar Amulet -Implicits: 1 -AmuletImplicitAllAttributes1 UniqueIncreasedLife35 UniqueNearbyAlliesCriticalStrikeChance2 UniqueNearbyAlliesCriticalMultiplier1 @@ -141,28 +116,20 @@ UniquePresenceRadius1 ]],[[ Hinekora's Sight Stellar Amulet -Requires Level 44 League: Rise of the Abyssal -Implicits: 2 -Grants Skill: Level (1-20) Future-Past -AmuletImplicitAllAttributes1 +ForesightUnique__1 UniqueIncreasedAccuracy13 UniqueIncreasedEvasionRating5 BlindImmunityUnique__1 ]],[[ Idol of Uldurn Crimson Amulet -Requires Level 24 -Implicits: 1 -AmuletImplicitLifeRegeneration1 UniqueIncreasedLife14 UniqueDexterity2 UniqueBaseLimit1 ]],[[ Igniferis Crimson Amulet -Implicits: 1 -AmuletImplicitLifeRegeneration1 UniqueFireResist23 UniqueManaRegeneration6 UniqueLightRadius1 @@ -172,8 +139,6 @@ UniqueRecoverLifeBasedOnRegen1 Immaculate Adherence Solar Amulet League: Runes of Aldur -Implicits: 1 -AmuletImplicitBaseSpirit1 UniqueDamageRemovedFromManaBeforeLife3 UniqueCannotHaveEnergyShield1 UniqueEnergyShieldConvertedToDivinity1 @@ -183,9 +148,6 @@ UniqueSkillAndLifeCostsConvertedToDivinity1 ]],[[ Ligurium Talisman Lapis Amulet -Requires Level 35 -Implicits: 1 -AmuletImplicitIntelligence1 UniqueIncreasedEnergyShield3 UniqueIncreasedSpirit6 UniqueIntelligence9 @@ -196,9 +158,6 @@ Lapis Amulet Source: Drops from unique{Xesht, We That Are One} in normal{Twisted Domain} Variant: Pre 0.4.0 Variant: Current -Requires Level 52 -Implicits: 1 -AmuletImplicitIntelligence1 {variant:1}UniqueColdResist21[20,30] {variant:2}UniqueColdResist21 UniqueColdResistancePenetration1 @@ -206,16 +165,12 @@ UniqueOnHitBlindChilledEnemies1 ]],[[ Revered Resin Amber Amulet -Implicits: 1 -AmuletImplicitStrength1 UniqueIncreasedLife3 UniqueFlaskLifeRecoveryRate5 UniqueLifeFlaskChargeGeneration2 ]],[[ Rondel of Fragility Lunar Amulet -Implicits: 1 -AmuletImplicitEnergyShield1 UniqueIncreasedSkillSpeed4 UniqueCriticalStrikeChance1 UniqueAllResistances11 @@ -223,8 +178,6 @@ UniqueAllDamage2 ]],[[ Serpent's Egg Gold Amulet -Implicits: 1 -AmuletImplicitItemFoundRarityIncrease1 UniqueAllAttributes1 UniqueChaosResist1 UniqueManaRegeneration6 @@ -233,16 +186,12 @@ UniqueAdditionalChargeGeneration1 Stone of Lazhwar Lapis Amulet League: Dawn of the Hunt -Implicits: 1 -AmuletImplicitIntelligence1 UniqueIncreasedMana3 UniqueIncreasedCastSpeed3 UniqueBlockPercentWithFocus1 ]],[[ Surefooted Sigil Jade Amulet -Implicits: 1 -AmuletImplicitDexterity1 UniqueIncreasedLife3 UniqueDexterity28 UniqueDodgeRollDistance1 @@ -252,8 +201,6 @@ Strugglescream Stellar Amulet Variant: Pre 0.4.0 Variant: Current -Implicits: 1 -AmuletImplicitAllAttributes1 {variant:1}UniqueMultipleAnointments1[2,2] {variant:2}UniqueMultipleAnointments1 ]],[[ @@ -261,9 +208,6 @@ Ungil's Harmony Azure Amulet Variant: Pre 0.1.1 Variant: Current -Requires Level 25 -Implicits: 1 -AmuletImplicitManaRegeneration1 UniqueIncreasedLife5 UniqueIncreasedMana5 {variant:1}UniqueCriticalStrikeChance9[100,100] @@ -277,8 +221,6 @@ Variant: Pre 0.3.0 Variant: Pre 0.4.0 Variant: Current Source: Drops from unique{Xesht, We That Are One} in normal{Twisted Domain} -Implicits: 1 -AmuletImplicitStrength1 UniqueMaximumLifeIncrease7 {variant:1,2}UniqueFireResist12[30,40] {variant:3}UniqueFireResist12 @@ -291,8 +233,6 @@ Bloodstone Amulet League: Dawn of the Hunt Variant: Pre 0.2.1 Variant: Current -Implicits: 1 -AmuletImplicitIncreasedLife1 UniqueAllResistances19 UniqueElementalDamagePercent1 {variant:1}UniqueEnemiesTakeIncreasedDamagePerAilmentType1[5,10] diff --git a/src/Export/Uniques/belt.lua b/src/Export/Uniques/belt.lua index d443ad8b62..697cda991b 100644 --- a/src/Export/Uniques/belt.lua +++ b/src/Export/Uniques/belt.lua @@ -6,22 +6,18 @@ return { Bijouborne Double Belt League: Dawn of the Hunt -Implicits: 2 -BeltImplicitCharmSlots3 +UniqueGrantsCastOnCharmUseSkill1 UniqueIncreasedMana51 UniqueGlobalCharmIncreasedDuration1 UniqueAdditionalCharm3 UniqueDexterity41 -UniqueIncreasedCharmChargesGained2 +BeltImplicitIncreasedCharmChargesGained1 ]],[[ Birthright Buckle Wide Belt -Implicits: 2 -BeltImplicitCharmSlots3 -BeltImplicitIncreasedFlaskChargesGained1 UniqueIncreasedPhysicalDamageReductionRating1 UniqueReducedFlaskChargesUsed3 -UniqueIncreasedFlaskChargesGained2 +UniqueIncreasedFlaskChargesGained3 UniqueInstantLifeFlaskOnLowLife1 UniqueInstantManaFlaskOnLowMana1 ]],[[ @@ -29,9 +25,6 @@ Byrnabas Wide Belt Variant: Pre 0.1.1 Variant: Current -Implicits: 2 -BeltImplicitCharmSlots3 -BeltImplicitIncreasedFlaskChargesGained1 UniqueIncreasedMana7 {variant:1}UniqueLightningResist7[20,30] {variant:2}UniqueLightningResist7 @@ -41,9 +34,6 @@ Cannot be Shocked Cat O' Nine Tails Utility Belt League: Runes of Aldur -Implicits: 2 -BeltImplicitInstantFlaskRecoveryPercent1 -BeltImplicitCharmSlots3 UniqueIncreasedLife51 UniqueRegeneratePercentLifeIfHitRecently1 UniqueLifeRecoveryRate1 @@ -52,9 +42,6 @@ UniqueGainPercentLifeAsThorns1 ]],[[ Coward's Legacy Mail Belt -Implicits: 2 -BeltImplicitCharmSlots3 -BeltImplicitReducedFlaskChargesUsed1 UniqueStrength4 UniqueDexterity3 UniqueBeltFlaskRecoveryRate1 @@ -68,9 +55,6 @@ Variant: Body Armour Variant: Gloves Variant: Boots Variant: Shield -Implicits: 2 -BeltImplicitCharmSlots3 -BeltImplicitFlaskPassiveChargeGain1 {variant:1}LocalItemBenefitSocketableAsIfHelmetUnique__1 {variant:2}LocalItemBenefitSocketableAsIfBodyArmourUnique__1 {variant:3}LocalItemBenefitSocketableAsIfGlovesUnique__1 @@ -81,10 +65,6 @@ LocalSocketItemsEffectUnique__1 The Gnashing Sash Wide Belt League: Dawn of the Hunt -Requires Level 60 -Implicits: 2 -BeltImplicitCharmSlots3 -UniqueIncreasedFlaskChargesGained4 UniqueFlaskLifeRecoveryRate7 UniqueChaosResist14 UniqueLifeDegenerationPercentGracePeriod2 @@ -95,20 +75,15 @@ Plate Belt League: Dawn of the Hunt Variant: Pre 0.5.0 Variant: Current -Implicits: 2 -BeltImplicitCharmSlots3 {variant:2}BeltImplicitPhysicalDamageReductionRating1 {variant:1}BeltImplicitPhysicalDamageReductionRating1[100,140] -UniqueStrength10 +UniqueStrength33 UniqueLifeRegeneration17 UniqueDoubleArmourEffect1 UniqueMaximumPhysicalReductionOverride1 ]],[[ Headhunter Heavy Belt -Implicits: 2 -BeltImplicitCharmSlots3 -BeltImplicitIncreasedStunThreshold1 UniqueIncreasedLife3 UniqueStrength7 UniqueDexterity5 @@ -120,8 +95,6 @@ Source: No longer obtainable Variant: Pre 0.1.1 Variant: Pre 0.5.0 Variant: Current -Implicits: 2 -BeltImplicitCharmSlots3 {variant:3}BeltImplicitPhysicalDamageReductionRating1 {variant:1,2}BeltImplicitPhysicalDamageReductionRating1[100,140] UniqueIncreasedPhysicalDamageReductionRating1 @@ -136,9 +109,6 @@ Source: Drops from unique{The King in the Mists} in normal{Crux of Nothingness} Variant: Pre 0.2.0 Variant: Pre 0.2.0F Variant: Current -Implicits: 2 -BeltImplicitCharmSlots3 -BeltImplicitInstantFlaskRecoveryPercent1 {variant:2}UniqueAdditionalCharm2 {variant:2,3}UniqueIncreasedCharmChargesGained1 {variant:2,3}UniqueReducedCharmChargesUsed2 @@ -150,9 +120,6 @@ Keelhaul Linen Belt Variant: Pre 0.1.1 Variant: Current -Implicits: 2 -BeltImplicitCharmSlots3 -BeltImplicitFlaskManaRecovery1 UniqueFlaskLifeRecoveryRate4 UniqueFlaskManaRecoveryRate2 {variant:1}UniqueLifeFlaskChargeGeneration1[0,15] @@ -185,9 +152,6 @@ Variant: Legacy of Stibnite Variant: Legacy of Sulphur Variant: Legacy of Topaz League: Runes of Aldur -Implicits: 2 -BeltImplicitCharmSlots3 -BeltImplicitInstantFlaskRecoveryPercent1 {variant:1}Legacy of Amethyst {variant:2}Legacy of Basalt {variant:3}Legacy of Bismuth @@ -206,9 +170,6 @@ UniqueIncreasedMagesLegacyEffectPerDuplicateMagesLegacy ]],[[ Meginord's Girdle Rawhide Belt -Implicits: 2 -BeltImplicitCharmSlots3 -BeltImplicitFlaskLifeRecovery1 UniqueStrength6 UniqueColdResist12 UniqueReducedFlaskChargesUsed2 @@ -216,18 +177,12 @@ UniqueIncreasedFlaskChargesGained1 ]],[[ Midnight Braid Rawhide Belt -Implicits: 2 -BeltImplicitCharmSlots3 -BeltImplicitFlaskLifeRecovery1 UniqueIncreasedMana5 UniqueAllResistances8 UniqueDamageTakenGoesToMana1 ]],[[ Ryslatha's Coil Ornate Belt -Implicits: 2 -BeltImplicitCharmSlots3 -BeltImplicitReducedCharmChargesUsed1 UniqueIncreasedLife7 UniqueFlaskLifeRecoveryRate1 UniquePhysicalMaximumDamageModifier1 @@ -235,19 +190,13 @@ UniquePhysicalMinimumDamageModifier1 ]],[[ Shavronne's Satchel Fine Belt -Implicits: 2 -BeltImplicitCharmSlots3 -BeltImplicitFlaskPassiveChargeGain1 UniqueFlaskLifeRecoveryRate3 UniqueIntelligence9 -BeltImplicitIncreasedFlaskChargesGained1 +UniqueIncreasedFlaskChargesGained2 UniqueFlaskLifeRecoveryEnergyShield1 ]],[[ Soul Tether Long Belt -Implicits: 2 -BeltImplicitCharmSlots3 -BeltImplicitIncreasedCharmDuration1 UniqueIncreasedEnergyShield2 UniqueIntelligence9 UniqueLoseEnergyShieldPerSecond1 @@ -256,12 +205,8 @@ UniqueLifeLeechExcessToEnergyShield1 Umbilicus Immortalis Linen Belt League: Rise of the Abyssal -Requires Level 24 -Implicits: 2 -BeltImplicitCharmSlots3 -BeltImplicitFlaskManaRecovery1 UniqueBeltFlaskDuration1 -UniqueIntelligence42 +UniqueIntelligence36 UniqueMinionLife6 UniqueLifeFlasksApplyToMinions1 MinionsCannotDieWhileAffectedByYourLifeFlasks1 @@ -270,9 +215,6 @@ UniqueIncreasedFlaskChargesGained4 Waistgate Heavy Belt Heavy Belt League: Dawn of the Hunt -Implicits: 2 -BeltImplicitCharmSlots3 -BeltImplicitIncreasedStunThreshold1 UniqueIncreasedLife45 UniqueIncreasedMana50 UniqueFlaskLifeRecoveryRate6 @@ -285,10 +227,6 @@ Variant: Pre 0.2.0f Variant: Pre 0.5.0 Variant: Current Source: Drops from unique{Trialmaster} in normal{The Trial of Chaos} -Requires Level 56 -Implicits: 2 -BeltImplicitCharmSlots3 -BeltImplicitIncreasedStunThreshold1 {variant:1}UniqueAdditionalCharm1 UniqueStrength28 UniqueCorruptedBloodImmunity1 diff --git a/src/Export/Uniques/body.lua b/src/Export/Uniques/body.lua index b58079b199..caf373ae64 100644 --- a/src/Export/Uniques/body.lua +++ b/src/Export/Uniques/body.lua @@ -12,8 +12,6 @@ Variant: Gloves Variant: Boots Variant: Shield Sockets: S S S S S S -Implicits: 1 -BodyArmourImplicitLevelOfAllCorruptedSkillGems1 UniqueOnlySocketSoulCores1 UniqueLocalNoAttributeRequirements2 UniqueAtziriSplendourArmourEvasionAndEnergyShield1 @@ -76,8 +74,6 @@ UniqueAttackerTakesDamage3 Geofri's Sanctuary Revered Vestments League: Runes of Aldur -Implicits: 1 -BodyArmourImplicitMaximumElementalResistance1 UniqueLocalIncreasedPhysicalDamageReductionRatingPercent32 UniqueAllResistances28 UniqueMaximumEnergyShieldIsPercentOfStrength1 @@ -110,8 +106,6 @@ Kaom's Heart Conqueror Plate Variant: Pre 0.2.1 Variant: Current -Implicits: 1 -BodyArmourImplicitIncreasedStunThreshold1 {variant:1}UniqueIncreasedLife2[1000,1000] {variant:2}UniqueIncreasedLife2 UniqueRemoveSpirit1 @@ -162,8 +156,7 @@ UniquePhysicalAttackDamageTaken1 The Auspex Exquisite Vest League: Runes of Aldur -Implicits: 1 -Grants Skill: Level (1-20) Mist Raven +UniqueMistRavenCompanionSkill1 UniqueLocalIncreasedEvasionRatingPercent35 UniqueIncreasedLife57 UniqueReducedLocalAttributeRequirements6 @@ -213,8 +206,6 @@ Variant: Pre 0.4.0 Variant: Pre 0.5.0 Variant: Current League: Dawn of the Hunt -Implicits: 1 -BodyArmourImplicitIncreasedAilmentThreshold1 {variant:1}UniqueLocalIncreasedEvasionRatingPercent33[100,130] {variant:2}UniqueLocalIncreasedEvasionRatingPercent33[200,250] {variant:3}UniqueLocalIncreasedEvasionRatingPercent33 @@ -262,12 +253,11 @@ UniqueFireDamageTakenAsPhysical1 Sands of Silk Shrouded Vest League: Dawn of the Hunt -Implicits: 1 -Grants Skill: Level (1-20) Blink +UniqueGrantsBlinkSand1 UniqueLocalIncreasedEvasionRatingPercent20 -UniqueIncreasedMana38 -UniqueDexterity2 -UniqueIntelligence6 +UniqueIncreasedMana50 +UniqueDexterity25 +UniqueIntelligence28 UniqueFireResist34 GlobalCooldownRecoveryUnique__2 ]],[[ @@ -327,7 +317,7 @@ The Covenant Altar Robe Variant: Pre 0.4.0 Variant: Current -{variant:2}Grants Skill: Level 14 Life Remnants +{variant:2}UniqueGrantsLifeRemnants1 UniqueLocalIncreasedEnergyShieldPercent11 UniqueIncreasedLife25 {variant:1}UniqueSpellDamageLifeLeech1[500,500] @@ -380,8 +370,6 @@ Enlightened Robe League: Dawn of the Hunt Variant: Pre 0.4.0 Variant: Current -Implicits: 1 -BodyArmourImplicitManaRegeneration1 {variant:2}UniqueLocalIncreasedEnergyShieldPercent27 UniqueIncreasedSpirit11 UniqueIntelligence39 @@ -453,19 +441,17 @@ Heroic Armour League: Dawn of the Hunt Variant: Pre 0.4.0 Variant: Current -Implicits: 4 -Grants Skill: Level (1-20) Herald of Ash -Grants Skill: Level (1-20) Herald of Ice -Grants Skill: Level (1-20) Herald of Thunder -BodyArmourImplicitIncreasedLife1 +UniqueGrantsHeraldOfAsh1 +UniqueGrantsHeraldOfIce1 +UniqueGrantsHeraldOfThunder1 UniqueAllResistances20 UniqueEnemiesInPresenceNoElementalResist1 {variant:2}UniqueHeraldDamage1 ]],[[ Doryani's Prototype Scale Mail -UniqueLocalIncreasedArmourAndEvasion6 -BodyArmourImplicitIncreasedLife1 +UniqueLocalIncreasedArmourAndEvasion13 +UniqueIncreasedLife29 UniqueArmourAppliesToLightningDamage1 UniqueNearbyEnemyLightningResistanceEqual1 UniqueLightningResistNoReduction1 @@ -496,11 +482,10 @@ Ancestral Mail League: Rise of the Abyssal Variant: Pre 0.4.0 Variant: Current -Implicits: 1 -Grants Skill: Level (1-20) Valako's Charge +ValakosLuckUnique__1 UniqueLocalIncreasedArmourAndEvasion14 UniqueIncreasedLife30 -UniqueDexterity44 +UniqueDexterity43 UniqueLightningResist13 {variant:1}UniquePhysicalDamageTakenAsLightningPercent1[20,40] {variant:2}UniquePhysicalDamageTakenAsLightningPercent1 @@ -597,12 +582,11 @@ Shaman Mantle Variant: Pre 0.1.1 Variant: 0.5.0 Variant: Current -Implicits: 1 -{variant:3}Grants Skill: Level (1-20) Rite of Restoration +{variant:3}UniqueSigilOfLifeSkill1 UniqueLocalIncreasedArmourAndEnergyShield7 UniqueFireResist9 -{variant:1}UniqueChaosResist2[13,17] -{variant:2,3}UniqueChaosResist2 +{variant:1}UniqueChaosResist7[13,17] +{variant:2,3}UniqueChaosResist7 {variant:1}UniqueReducedFlaskChargesUsed1[25,50] {variant:2}UniqueReducedFlaskChargesUsed1 {variant:1,2}UniqueFlaskChanceToNotConsume1 @@ -631,8 +615,6 @@ Corvus Mantle League: Dawn of the Hunt Variant: Pre 0.4.0 Variant: Current -Implicits: 1 -BodyArmourImplicitIncreasedSpirit1 UniqueLocalIncreasedArmourAndEnergyShield23 UniqueStrength33 UniqueIntelligence33 @@ -657,8 +639,6 @@ UniqueRandomlyCursedWhenTotemsDie1 The Unleashed Revered Vestments League: Runes of Aldur -Implicits: 1 -BodyArmourImplicitMaximumElementalResistance1 UniqueLocalIncreasedArmourAndEnergyShield26 UniqueStrengthAndIntelligence1 UniqueHitDamageBypassesEnergyShieldWhileBelowHalfEnergyShield1 @@ -698,11 +678,9 @@ UniqueBleedsAlwaysAggravated1 Cospri's Will Assassin Garb League: Rise of the Abyssal -Implicits: 2 -Grants Skill: Level (1-20) Withering Presence -BodyArmourImplicitMovementVelocity1 +UniqueGrantsWitheringPresence1 UniqueLocalIncreasedEvasionAndEnergyShield18 -UniqueChaosResist32 +UniqueChaosResist30 UniqueCursesNeverExpire1 UniqueIgnoreHexproof1 UniqueWitherNeverExpires1 @@ -720,8 +698,7 @@ UniqueIncreasedEvasionIfHitRecently1 Forgotten Warden Primal Markings League: Runes of Aldur -Implicits: 1 -Grants Skill: Level (1-20) Spirit Vessel +UniqueSpiritVesselSkill1 UniqueDeflectionRatingPerMissingEnergyShield1 UniqueLocalIncreasedEvasionAndEnergyShield20 UniqueDexterity46 diff --git a/src/Export/Uniques/boots.lua b/src/Export/Uniques/boots.lua index b2e15741e4..16fde5242d 100644 --- a/src/Export/Uniques/boots.lua +++ b/src/Export/Uniques/boots.lua @@ -27,8 +27,6 @@ UniqueBurningGroundWhileMovingMaximumLife1 ]],[[ Corpsewade Iron Greaves -Implicits: 1 -Grants Skill: Level (1-20) Decompose UniqueMovementVelocity1 UniqueLocalIncreasedPhysicalDamageReductionRatingPercent9 UniqueStrength11 @@ -200,8 +198,7 @@ UniqueReducedShockDuration1 Shankgonne Covered Sabatons League: Rise of the Abyssal -Implicits: 1 -Grants Skill: Level (1-20) Black Powder Blitz +BlackPowderBlitzUnique__1 UniqueLocalIncreasedArmourAndEvasion31 UniqueItemFoundRarityIncrease23 UniqueFireResist35 diff --git a/src/Export/Uniques/bow.lua b/src/Export/Uniques/bow.lua index 4b54cb01df..445cb1cb94 100644 --- a/src/Export/Uniques/bow.lua +++ b/src/Export/Uniques/bow.lua @@ -9,8 +9,6 @@ Variant: 0.2.0 Variant: 0.3.0 Variant: 0.5.0 Variant: Current -Implicits: 1 -BowImplicitAdditionalArrows1 {variant:1}UniqueLocalCriticalMultiplier1[50,70] {variant:2}UniqueLocalCriticalMultiplier1[30,40] {variant:3,4}UniqueLocalCriticalMultiplier1 @@ -33,9 +31,7 @@ UniqueManaRegeneration3 Fairgraves' Curse Artillery Bow League: Rise of the Abyssal -Implicits: 2 -Grants Skill: Level (1-20) Phantasmal Arrow -BowImplicitProjectileAttackRange1 +GhostfuseArrowUnique_1 UniqueLocalAddedFireDamage5 UniqueIgniteChanceIncrease4 UniqueIgniteEffect3 @@ -46,8 +42,6 @@ GhostflameOnHitUnique__1 Ironbound Warden Bow League: Runes of Aldur -Implicits: 1 -BowImplicitLocalChanceToChain1 UniqueLocalIncreasedPhysicalDamageReductionRating6 UniqueLocalIncreasedAttackSpeed31 UniqueBlockPercent3 @@ -58,8 +52,7 @@ UniqueProjectilesReturnIfPiercedArmourBroken1 Periphery Heartwood Shortbow League: Runes of Aldur -Implicits: 1 -Grants Skill: Level (1-20) Azmerian Swarms +UniqueAzmerianSwarmSkill1 UniqueLocalAddedFireDamage9 UniqueLocalAddedColdDamage8 UniqueLocalAddedLightningDamage12 diff --git a/src/Export/Uniques/crossbow.lua b/src/Export/Uniques/crossbow.lua index ad21465d6f..04c33d5c66 100644 --- a/src/Export/Uniques/crossbow.lua +++ b/src/Export/Uniques/crossbow.lua @@ -6,9 +6,7 @@ return { Double Vision Dyad Crossbow League: Rise of the Abyssal -Implicits: 2 -Grants Skill: Level (1-20) Gemini Surge -CrossbowImplicitAdditionalAmmo1 +UniqueTriggerInfusionOnReload UniqueLocalAddedPhysicalDamage24 UniqueLocalCriticalStrikeChance7 UniqueColdFireSurgeOnReload @@ -17,8 +15,7 @@ UniqueReloadSpeed2 The Last Lament Desolate Crossbow League: Dawn of the Hunt -Implicits: 1 -Grants Skill: Level (1-20) Compose Requiem +UniqueGrantsRequiemSkill UniqueLocalIncreasedPhysicalDamagePercent15 UniqueIncreasedAttackSpeed12 UniqueLifeLeechLocal4 @@ -40,8 +37,6 @@ UniqueFreezeDamageIncrease3 ]],[[ Rampart Raptor Tense Crossbow -Implicits: 1 -CrossbowImplicitBoltSpeed1 UniqueLocalIncreasedPhysicalDamagePercent7 UniqueLocalIncreasedAttackSpeed8 UniqueChanceForNoBoltReload1 @@ -50,8 +45,6 @@ UniqueLocalReloadSpeed1 Redemption Trarthan Cannon League: Runes of Aldur -Implicits: 1 -CannonBowImplicitCannotUseAmmoSkills1 UniqueLocalIncreasedPhysicalDamagePercent24 UniqueLocalNoCriticalStrikeMultiplier2 UniqueGlobalCooldownRecovery2 diff --git a/src/Export/Uniques/flask.lua b/src/Export/Uniques/flask.lua index 9d3fa2aff8..1d76f516c6 100644 --- a/src/Export/Uniques/flask.lua +++ b/src/Export/Uniques/flask.lua @@ -36,7 +36,6 @@ UniqueFlaskChargesUsed3 [[ Lavianga's Spirits Gargantuan Mana Flask -Requires Level 49 League: Fate of the Vaal UniqueAlwaysDrinkingFlask1 UniqueFlaskRecoveryAmount1 @@ -67,69 +66,51 @@ UniqueManaFlaskRecoveryCanOverflowManaDuringEffect1 Arakaali's Gift Antidote Charm League: Dawn of the Hunt -Implicits: 1 -CharmImplicitUseOnPoison1 UniqueCharmRecoverLifeBasedOnManaFlask1 UniqueCharmRecoverManaBasedOnLifeFlask1 ]],[[ Beira's Anguish Dousing Charm League: Dawn of the Hunt -Implicits: 1 -CharmImplicitUseOnIgnite1 UniqueFlaskChanceRechargeOnKill2 UniqueCharmIgniteEnemiesInPresence1 ]],[[ The Black Cat Grounding Charm League: Dawn of the Hunt -Implicits: 1 -CharmImplicitUseOnShock1 UniqueCharmIncreasedDuration2 UniqueCharmEnemyExtraLightningDamageRoll1 ]],[[ Breath of the Mountains Sapphire Charm League: Dawn of the Hunt -Implicits: 1 -CharmImplicitUseOnColdDamage1 UniqueFlaskChargesUsed2 UniqueCharmGrantsPowerCharge1 ]],[[ The Fall of the Axe Silver Charm League: Dawn of the Hunt -Implicits: 1 -CharmImplicitUseOnSlow1 UniqueCharmOnslaughtDuringEffect1 ]],[[ For Utopia Stone Charm -Implicits: 1 -CharmImplicitUseOnStun1 UniqueCharmDoubleArmourEffect1 ]],[[ Forsaken Bangle Amethyst Charm League: Dawn of the Hunt -Implicits: 1 -CharmImplicitUseOnChaosDamage1 UniqueCharmIncreasedDuration1 UniqueCharmRecoupChaosDamagePrevented1 ]],[[ Nascent Hope Thawing Charm League: Dawn of the Hunt -Implicits: 1 -CharmImplicitUseOnFreeze1 UniqueFlaskChanceRechargeOnKill1 UniqueCharmStartEnergyShieldRecharge1 ]],[[ Ngamahu's Chosen Ruby Charm League: Dawn of the Hunt -Implicits: 1 -CharmImplicitUseOnFireDamage1 UniqueFlaskExtraCharges1 UniqueCharmGrantsMaximumRage1 ]],[[ @@ -145,9 +126,6 @@ Variant: Ox Variant: Wolf Variant: Stag Variant: Cat -Implicits: 1 -15% increased Rarity of Items found -CharmImplicitUseOnRareUniqueKill1 {variant:1}UniqueCharmOwlPossess1 {variant:2}UniqueCharmSerpentPossess1 {variant:3}UniqueCharmPrimatePossess1 @@ -161,16 +139,12 @@ CharmImplicitUseOnRareUniqueKill1 Sanguis Heroum Staunching Charm League: Dawn of the Hunt -Implicits: 1 -CharmImplicitUseOnBleed1 UniqueCharmCreateConsecratedGround1 UniqueFlaskFillChargesPerMinute1 ]],[[ Valako's Roar Topaz Charm League: Dawn of the Hunt -Implicits: 1 -CharmImplicitUseOnLightningDamage1 UniqueFlaskChargesAddedPercent1 UniqueCharmGrantsFrenzyCharge1 ]], diff --git a/src/Export/Uniques/gloves.lua b/src/Export/Uniques/gloves.lua index 8a697bbf31..87e1aa609c 100644 --- a/src/Export/Uniques/gloves.lua +++ b/src/Export/Uniques/gloves.lua @@ -8,8 +8,7 @@ Moulded Mitts Variant: Pre 0.1.1 Variant: Pre 0.5.0 Variant: Current -Implicits: 1 -{variant:3}Grants Skill: Level (1-20) Herald of the Royal Queen +{variant:3}UniqueAtziriHeraldSkill1 {variant:1,2}UniqueLocalIncreasedPhysicalDamageReductionRatingPercent11[80,100] {variant:3}UniqueLocalIncreasedPhysicalDamageReductionRatingPercent11 {variant:3}UniqueIncreasedLife58 @@ -98,8 +97,7 @@ UniqueChillEffect1 Horror's Flight Engraved Bracers League: Runes of Aldur -Implicits: 1 -Grants Skill: Level (1-20) Crushing Fear +UniqueCrushingFearSkill1 UniqueLocalIncreasedEvasionRatingPercent36 UniqueIncreasedAttackSpeed16 UniqueDexterity45 @@ -178,7 +176,7 @@ Variant: Current {variant:2}UniqueLocalIncreasedEnergyShield12 UniqueSpellDamage1 UniqueIncreasedCastSpeed6 -AmuletImplicitIntelligence1 +UniqueIntelligence18 ]],[[ Essentia Sanguis Furtive Wraps @@ -374,8 +372,7 @@ UniqueAllDamageCanPoison1 Thunderfist Utility Wraps League: Rise of the Abyssal -Implicits: 1 -Grants Skill: Level (1-20) Crackling Palm +ThunderfistUnique__1 UniqueLocalIncreasedEvasionAndEnergyShield19 UniqueIncreasedAttackSpeed13 UniqueLightningResist29 diff --git a/src/Export/Uniques/helmet.lua b/src/Export/Uniques/helmet.lua index 243f64c597..4afcf839f5 100644 --- a/src/Export/Uniques/helmet.lua +++ b/src/Export/Uniques/helmet.lua @@ -25,9 +25,9 @@ Warrior Greathelm Variant: Pre 0.1.1 Variant: Current UniqueIncreasedAccuracy5 -UniqueIncreasedLife14 +UniqueIncreasedLife27 {variant:2}UniqueFireResist28 -UniqueLightRadius9 +UniqueLightRadius11 UniqueLifeLeechToAllies1 ]],[[ Deidbell diff --git a/src/Export/Uniques/mace.lua b/src/Export/Uniques/mace.lua index f395612e52..30db2147c2 100644 --- a/src/Export/Uniques/mace.lua +++ b/src/Export/Uniques/mace.lua @@ -6,8 +6,6 @@ return { Brutus' Lead Sprinkler Morning Star League: Runes of Aldur -Implicits: 1 -Grants Skill: Level (1-20) Molten Shower UniqueMoltenShowerSkill1 UniqueLocalIncreasedPhysicalDamagePercent26 UniqueLocalIncreasedAttackSpeed33 @@ -41,6 +39,7 @@ UniqueLocalCullingStrikeFrozenEnemies1 Marohi Erqi Totemic Greatclub League: Rise of the Abyssal +Base Implicits: false Implicits: 1 MaceImplicitLocalCrushOnHit1 UniqueStrengthRequirements3 @@ -55,13 +54,12 @@ Torment Club League: Dawn of the Hunt Variant: Pre 0.2.1 Variant: Current -Implicits: 1 -Grants Skill: Level (1-20) Thundergod's Wrath +UniqueGrantsCastLightningSpellOnHit1 UniqueIntelligenceRequirements2 UniqueStrengthRequirements2 {variant:1}UniqueLocalIncreasedPhysicalDamagePercent11[150,200] {variant:2}UniqueLocalIncreasedPhysicalDamagePercent11 -UniqueLocalIncreasedAttackSpeed20 +UniqueLocalIncreasedAttackSpeed19 {variant:1}UniqueGlobalLightningGemLevel1 {variant:2}UniqueGlobalLightningGemLevel2 ]],[[ @@ -88,8 +86,7 @@ UniqueMaximumLightningDamagePerPower1 Sadist's Mercy Flanged Mace League: Runes of Aldur -Implicits: 1 -Grants Skill: Level (1-20) Harbinger of Madness +UniqueHarbingerOfMadnessSkill1 UniqueLocalIncreasedPhysicalDamagePercent27 UniqueLocalCriticalStrikeChance11 UniqueLocalIncreasedAttackSpeed28 @@ -180,8 +177,6 @@ UniqueMinionDamageAffectsYou1 The Empty Roar Cultist Greathammer League: Dawn of the Hunt -Implicits: 1 -MaceImplicitSplashDamage1 UniqueLocalAddedPhysicalDamage15 UniqueLifeLeechLocal2 UniqueLocalChanceToBleed1 @@ -217,8 +212,6 @@ Hrimnor's Hymn Oak Greathammer Variant: Pre 0.1.1 Variant: Current -Implicits: 1 -MaceImplicitStunDamageIncrease1 {variant:1}UniqueLocalIncreasedPhysicalDamagePercent6[60,80] {variant:2}UniqueLocalIncreasedPhysicalDamagePercent6 UniqueStrength3 @@ -227,8 +220,6 @@ UniqueAftershockChance1 ]],[[ Quecholli Crumbling Maul -Implicits: 1 -MaceImplicitEnemiesExplodeOnCrit1 UniqueLocalIncreasedPhysicalDamagePercent4 UniqueAllAttributes7 UniqueLifeGainedFromEnemyDeath8 @@ -239,9 +230,7 @@ Serle's Grit Kalguuran Forgehammer League: Runes of Aldur Sockets: S S S -Implicits: 2 -Grants Skill: Level (1-20) Runic Tempering -MaceImplicitHasXSockets +RunicTemperingUnique__1 UniqueMaximumQualityOverride2 UniqueLocalAddedPhysicalDamage25 UniqueStrength44 @@ -260,8 +249,7 @@ UniqueLocalAllDamageCanChill1 Twisted Empyrean Aberrant Sledge League: Runes of Aldur -Implicits: 1 -Grants Skill: Level (1-20) Starborn Onslaught +UniqueStarbornOnslaughtSkill1 UniqueLocalIncreasedPhysicalDamagePercent22 UniqueLocalAddedColdDamage9 UniqueIncreasedMana53 diff --git a/src/Export/Uniques/quiver.lua b/src/Export/Uniques/quiver.lua index 0825fc4d89..d0d8d42a31 100644 --- a/src/Export/Uniques/quiver.lua +++ b/src/Export/Uniques/quiver.lua @@ -7,8 +7,6 @@ Asphyxia's Wrath Broadhead Quiver Variant: Pre 0.1.1 Variant: Current -Implicits: 1 -QuiverImplicitPhysicalDamage1 {variant:2}UniqueAddedColdDamage2 UniqueIncreasedAttackSpeed4 UniqueColdResist4 @@ -18,8 +16,6 @@ UniqueDamageAddedAsColdAttacks1 Beyond Reach Visceral Quiver Source: Drops from unique{Xesht, We That Are One} in normal{Twisted Domain} -Implicits: 1 -QuiverImplicitCriticalStrikeChance1 UniqueIncreasedAttackSpeed6 UniqueChaosDamageCanFreeze1 UniqueChaosDamageCanElectrocute1 @@ -29,8 +25,6 @@ Blackgleam Fire Quiver Variant: Pre 0.1.1 Variant: Current -Implicits: 1 -QuiverImplicitFireDamage1 {variant:2}UniqueAddedFireDamage1 UniqueIncreasedMana5 UniqueIgniteChanceIncrease3 @@ -40,16 +34,12 @@ UniqueDamageAddedAsFireAttacks1 Cadiro's Gambit Primed Quiver League: Dawn of the Hunt -Implicits: 1 -QuiverImplicitIncreasedAttackSpeed1 UniquePerandusArrows1 ]],[[ Drillneck Penetrating Quiver Source: Drops from unique{Atziri's Vault} in normal{Vaal Temple} League: Fate of the Vaal -Implicits: 1 -QuiverImplicitArrowAdditionalPierce1 UniqueIncreasedLife56 UniqueIncreasedAttackSpeed15 UniqueEvasionAppliesToDeflection5 @@ -62,8 +52,6 @@ Sacral Quiver League: Dawn of the Hunt Variant: Pre 0.4.0 Variant: Current -Implicits: 1 -QuiverImplicitLifeGainPerTarget1 UniqueIncreasedAttackSpeed5 UniqueLifeGainPerTarget2 UniqueArrowPierceChance1 @@ -73,9 +61,7 @@ UniqueArrowPierceChance1 Murkshaft Toxic Quiver League: Dawn of the Hunt -Implicits: 2 -Grants Skill: Level (1-20) Bursting Fen Toad -QuiverImplicitChanceToPoison1 +UniqueTriggerPoisonToadOnKill UniqueAddedPhysicalDamage6 UniqueManaGainedFromEnemyDeath11 UniquePoisonDuration1 diff --git a/src/Export/Uniques/ring.lua b/src/Export/Uniques/ring.lua index 33d22ef28d..3537d9ad10 100644 --- a/src/Export/Uniques/ring.lua +++ b/src/Export/Uniques/ring.lua @@ -5,8 +5,6 @@ return { [[ Andvarius Gold Ring -Implicits: 1 -RingImplicitItemFoundRarityIncrease1 UniqueItemFoundRarityIncrease5 UniqueDexterity4 UniqueAllResistances3 @@ -14,7 +12,7 @@ UniqueAllResistances3 Berek's Grip Two-Stone Ring League: Runes of Aldur -Requires Level 42 +Base Implicits: false Implicits: 1 RingImplicitColdLightningResistance UniqueDexterityAndIntelligence1 @@ -25,7 +23,7 @@ UniqueWindSkillsBoostedByShockedGround1 Berek's Pass Two-Stone Ring League: Runes of Aldur -Requires Level 42 +Base Implicits: false Implicits: 1 RingImplicitFireColdResistance UniqueStrengthAndIntelligence4 @@ -36,7 +34,7 @@ UniqueWindSkillsBoostedByChilledGround1 Berek's Respite Two-Stone Ring League: Runes of Aldur -Requires Level 42 +Base Implicits: false Implicits: 1 RingImplicitFireLightningResistance UniqueStrengthAndDexterity1 @@ -48,8 +46,6 @@ Blackflame Amethyst Ring Variant: Pre 0.5.0 Variant: Current -Implicits: 1 -BodyArmourImplicitChaosResistance1 UniqueManaRegeneration2 {variant:1}UniqueIgniteEffect1[50,50] {variant:2}UniqueIgniteEffect1 @@ -63,8 +59,6 @@ Blackheart Iron Ring Variant: Pre 0.1.1 Variant: Current -Implicits: 1 -RingImplicitPhysicalDamage1 UniqueLifeRegeneration4 {variant:1}UniqueAddedChaosDamage1[2,3][4,5] {variant:2}UniqueAddedChaosDamage1 @@ -74,8 +68,6 @@ Blistering Bond Ruby Ring Variant: Pre 0.5.0 Variant: Current -Implicits: 1 -RingImplicitFireResistance1 UniqueIncreasedLife3 UniqueFireResist18 UniqueColdResist22 @@ -87,8 +79,6 @@ The Burrower Topaz Ring Variant: Pre 0.1.1 Variant: Current -Implicits: 1 -RingImplicitLightningResistance1 {variant:1}UniqueColdResist23[-15,-10] {variant:2}UniqueColdResist23 UniqueLightningResist4 @@ -99,9 +89,6 @@ UniqueEnemyExtraDamageRollsWithLightningDamage1 Bursting Decay Unset Ring League: Dawn of the Hunt -Requires Level 60 -Implicits: 1 -RingImplicitAdditionalSkillSlots1 UniqueItemFoundRarityIncrease22 UniqueChaosResist34 UniqueLifeDegenerationPercentGracePeriod3 @@ -109,9 +96,6 @@ UniquePhysicalDamageMaximumLife1 ]],[[ Call of the Brotherhood Topaz Ring -Requires Level 32 -Implicits: 1 -RingImplicitLightningResistance1 UniqueIntelligence6 UniqueManaRegeneration18 UniqueFreezeDamageIncrease4 @@ -119,8 +103,6 @@ UniqueLightningDamageConvertToCold1 ]],[[ Cracklecreep Ruby Ring -Implicits: 1 -RingImplicitFireResistance1 UniqueFireDamagePercent1 UniqueLifeRegeneration9 UniqueManaRegeneration6 @@ -128,8 +110,6 @@ UniqueRingIgniteProliferation1 ]],[[ Death Rush Emerald Ring -Implicits: 1 -RingImplicitIncreasedAccuracy1 UniqueIncreasedAccuracy7 UniqueIncreasedEvasionRating1 UniqueLifeLeech1 @@ -137,8 +117,6 @@ UniqueOnslaughtBuffOnKill1 ]],[[ Doedre's Damning Lazuli Ring -Implicits: 1 -RingImplicitIncreasedMana1 UniqueAllResistances2 UniqueManaGainedFromEnemyDeath2 UniqueAdditionalCurseOnEnemies1 @@ -148,8 +126,6 @@ Sapphire Ring Variant: Pre 0.2.0 Variant: Pre 0.4.0 Variant: Current -Implicits: 1 -RingImplicitColdResistance1 {variant:1}UniqueMaximumManaIncrease1[20,20] {variant:2}UniqueMaximumManaIncrease1[10,10] {variant:3}UniqueMaximumManaIncrease1 @@ -162,18 +138,15 @@ Sockets: J Source: Drops from unique{Zarokh, the Temporal} Variant: Pre 0.5.0 Variant: Current -Requires Level 40 UniqueOnlySocketSapphireJewel1 -UniqueItemFoundRarityIncrease20 -UniqueAllAttributes1 +UniqueItemFoundRarityIncrease15 +UniqueAllAttributes9 {variant:1}UniqueColdResistanceNoPenalty1 {variant:2}UniqueFireAndColdResPerLightningResItem1 ]],[[ Evergrasping Ring Pearl Ring League: Dawn of the Hunt -Implicits: 1 -RingImplicitIncreasedCastSpeed1 UniqueIncreasedMana12 UniqueAlliesInPresenceGainedAsChaos1 UniqueEnemiesInPresenceGainedAsChaos1 @@ -181,8 +154,6 @@ UniqueEnemiesInPresenceGainedAsChaos1 Gifts from Above Prismatic Ring League: Dawn of the Hunt -Implicits: 1 -RingImplicitAllResistances1 UniqueCriticalStrikeChance12 UniqueLightRadius16 UniqueKilledMonsterItemRarityOnCrit1 @@ -192,8 +163,6 @@ Glowswarm Lazuli Ring Variant: Pre 0.5.0 Variant: Current -Implicits: 1 -RingImplicitIncreasedMana1 UniqueIncreasedMana7 UniqueFlaskManaRecoveryRate3 UniqueManaFlaskChargeGeneration2 @@ -201,8 +170,6 @@ UniqueManaFlaskChargeGeneration2 ]],[[ Heartbound Loop Pearl Ring -Implicits: 1 -RingImplicitIncreasedCastSpeed1 UniqueMinionLife3 UniqueLifeRegeneration3 UniqueManaRegeneration11 @@ -212,9 +179,6 @@ UniqueMinionReviveSpeed2 Icefang Orbit Iron Ring League: Dawn of the Hunt -Requires Level 36 -Implicits: 1 -RingImplicitPhysicalDamage1 UniqueAddedPhysicalDamage7 UniqueDexterity37 UniqueBaseChanceToPoison3 @@ -231,8 +195,6 @@ Levinstone Topaz Ring Variant: Pre 0.5.0 Variant: Current -Implicits: 1 -RingImplicitLightningResistance1 UniqueIncreasedMana7 UniqueShockChanceIncrease2 {variant:1}UniqueGlobalLightningGemLevel1 @@ -241,8 +203,6 @@ UniqueShockChanceIncrease2 ]],[[ Ming's Heart Amethyst Ring -Implicits: 1 -BodyArmourImplicitChaosResistance1 UniqueMaximumLifeIncrease3 UniqueDamageAddedAsChaos1 UniqueAllDefences1 @@ -251,24 +211,18 @@ Original Sin Amethyst Ring Variant: Pre 0.1.1 Variant: Current -Implicits: 1 -BodyArmourImplicitChaosResistance1 {variant:2}UniqueChaosResist21 UniqueElementalDamageConvertToChaos1 {variant:1}UniqueChaosResistanceIsZero1 ]],[[ Perandus Seal Gold Ring -Implicits: 1 -RingImplicitItemFoundRarityIncrease1 UniqueIncreasedMana5 UniqueAllAttributes2 UniqueGoldFoundIncrease1 ]],[[ Polcirkeln Sapphire Ring -Implicits: 1 -RingImplicitColdResistance1 UniqueColdDamagePercent1 UniqueIncreasedMana7 UniqueStrength3 @@ -279,9 +233,6 @@ Iron Ring Variant: Pre 0.5.0 Variant: Current League: Dawn of the Hunt -Requires Level 48 -Implicits: 1 -RingImplicitPhysicalDamage1 UniqueStrength41 UniqueLifeCostAsManaCost2 {variant:1}UniqueThornsDamageOnStun1 @@ -294,10 +245,9 @@ Sockets: J Source: Drops from unique{Zarokh, the Temporal} Variant: Pre 0.5.0 Variant: Current -Requires Level 40 UniqueOnlySocketRubyJewel1 -UniqueItemFoundRarityIncrease20 -UniqueAllAttributes1 +UniqueItemFoundRarityIncrease15 +UniqueAllAttributes9 {variant:1}UniqueFireResistanceNoPenalty1 {variant:2}UniqueColdAndLightningResPerFireResItem1 ]],[[ @@ -305,8 +255,6 @@ Seed of Cataclysm Lazuli Ring Variant: Pre 0.5.0 Variant: Current -Implicits: 1 -RingImplicitIncreasedMana1 UniqueSpellCriticalStrikeChance2 {variant:1}UniqueSpellCriticalStrikeMultiplier1 UniqueChaosResist2 @@ -316,8 +264,6 @@ UniqueManaCostReduction2 ]],[[ Snakepit Pearl Ring -Implicits: 1 -RingImplicitIncreasedCastSpeed1 UniqueSpellDamage2 UniqueIncreasedCastSpeed9 UniqueLeftRingSpellProjectilesCannotChain1 @@ -329,17 +275,12 @@ UniqueSpellsCannotPierce1 The Taming Prismatic Ring League: Runes of Aldur -Requires Level 42 -Implicits: 1 -RingImplicitAllResistances1 UniqueAllResistances29 UniqueDamagePerElementalAilment1 UniqueWindSkillsBoostedByAllElementalGrounds1 ]],[[ Thief's Torment Emerald Ring -Implicits: 1 -RingImplicitIncreasedAccuracy1 UniqueItemFoundRarityIncrease16 UniqueAllResistances14 UniqueLifeGainPerTarget1 @@ -350,8 +291,6 @@ UniqueSelfCurseDuration1 Veilpiercer Amethyst Ring League: Runes of Aldur -Implicits: 1 -RingImplicitChaosResistance1 UniqueIncreasedMana54 UniqueIntelligence48 UniqueIgnoreHexproof2 @@ -362,9 +301,6 @@ UniqueHitDamageAgainstEnemiesInPresence1 Venopuncture Iron Ring League: Dawn of the Hunt -Requires Level 36 -Implicits: 1 -RingImplicitPhysicalDamage1 UniqueAddedPhysicalDamage8 UniqueStrength41 UniqueChilledWhileBleeding1 @@ -376,9 +312,6 @@ Ventor's Gamble Gold Ring Variant: Pre 0.2.0 Variant: Current -Requires Level 64 -Implicits: 1 -RingImplicitItemFoundRarityIncrease1 UniqueIncreasedLife39 UniqueIncreasedSpirit7 {variant:1}UniqueItemFoundRarityIncrease17[-40,40] @@ -390,23 +323,17 @@ UniqueLightningResist18 Vigilant View Emerald Ring League: Dawn of the Hunt -Requires Level 26 -Implicits: 1 -RingImplicitIncreasedAccuracy1 UniqueIncreasedAccuracy12 UniqueIncreasedEvasionRating3 -UniqueItemFoundRarityIncrease20 -UniqueDexterity37 +UniqueItemFoundRarityIncrease19 +UniqueDexterity33 UniqueEnemyAccuracyDistanceFalloff1 UniqueMaximumEvadeChanceOverride1 ]],[[ Whisper of the Brotherhood Sapphire Ring -Requires Level 32 -Implicits: 1 -RingImplicitColdResistance1 UniqueIncreasedSkillSpeed3 -UniqueDexterity2 +UniqueDexterity27 UniqueManaRegeneration18 UniqueColdDamageConvertToLightning1 ]],[[ @@ -416,10 +343,9 @@ Sockets: J Source: Drops from unique{Zarokh, the Temporal} Variant: Pre 0.5.0 Variant: Current -Requires Level 40 UniqueOnlySocketEmeraldJewel1 -UniqueItemFoundRarityIncrease20 -UniqueAllAttributes1 +UniqueItemFoundRarityIncrease15 +UniqueAllAttributes9 {variant:1}UniqueLightningResistanceNoPenalty1 {variant:2}UniqueFireAndLightningRestPerColdResItem1 ]], diff --git a/src/Export/Uniques/sceptre.lua b/src/Export/Uniques/sceptre.lua index d83c921b19..7a0a6a882f 100644 --- a/src/Export/Uniques/sceptre.lua +++ b/src/Export/Uniques/sceptre.lua @@ -7,8 +7,6 @@ The Dark Defiler Rattling Sceptre Variant: Pre 0.1.1 Variant: Current -Implicits: 1 -Grants Skill: Level (1-20) Skeletal Warrior Minion UniqueIncreasedMana2 UniqueIntelligence3 UniqueManaRegeneration1 @@ -17,8 +15,6 @@ UniqueManaRegeneration1 ]],[[ Font of Power Omen Sceptre -Implicits: 1 -Grants Skill: Level (1-20) Malice UniqueLocalIncreasedSpiritPercent1 UniqueIncreasedMana7 UniqueManaRegeneration6 @@ -32,6 +28,7 @@ Variant: Lightning (Pre 0.2.1 ) Variant: Fire Variant: Cold Variant: Lightning +Base Implicits: false Implicits: 3 {variant:1,4}Grants Skill: Level (1-20) Purity of Fire {variant:2,5}Grants Skill: Level (1-20) Purity of Ice @@ -48,8 +45,8 @@ UniqueBaseLifeRegenToAllies1 ]],[[ Guiding Palm of the Eye Shrine Sceptre -Requires Level 65 League: Dawn of the Hunt +Base Implicits: false Implicits: 1 Grants Skill: Level (1-20) Purity of Ice UniqueDamageGainedAsCold1 @@ -61,8 +58,8 @@ UniqueColdShrine1 ]],[[ Guiding Palm of the Heart Shrine Sceptre -Requires Level 65 League: Dawn of the Hunt +Base Implicits: false Implicits: 1 Grants Skill: Level (1-20) Purity of Fire UniqueDamageGainedAsFire2 @@ -74,8 +71,8 @@ UniqueFireShrine1 ]],[[ Guiding Palm of the Mind Shrine Sceptre -Requires Level 65 League: Dawn of the Hunt +Base Implicits: false Implicits: 1 Grants Skill: Level (1-20) Purity of Lightning UniqueDamageGainedAsLightning1 @@ -87,8 +84,8 @@ UniqueLightningShrine1 ]],[[ Palm of the Dreamer Shrine Sceptre -Requires Level 65 League: Dawn of the Hunt +Base Implicits: false Implicits: 1 Grants Skill: Level (1-20) Impurity UniqueNearbyAlliesAddedChaosDamage1 @@ -101,6 +98,7 @@ UniqueChaosShrine1 Sacred Flame Shrine Sceptre Source: Drops from unique{Arbiter of Ash} in normal{The Burning Monolith} +Base Implicits: false Implicits: 1 Grants Skill: Level (1-20) Purity of Fire UniqueDamageGainedAsFire1 @@ -111,10 +109,7 @@ UniqueEnemiesInPresenceLowestResistance1 Sylvan's Effigy Stoic Sceptre League: Runes of Aldur -Requires Level 62 -Implicits: 2 -Grants Skill: Level (1-20) Discipline -Grants Skill: Level (1-20) Azmerian Wolf +UniquePackleaderCompanion_1 UniqueLocalIncreasedSpiritPercent4 UniqueNearbyAlliesLifeRegeneration1 UniqueAllAttributes19 diff --git a/src/Export/Uniques/shield.lua b/src/Export/Uniques/shield.lua index 54bbb58d6d..8c38c058c7 100644 --- a/src/Export/Uniques/shield.lua +++ b/src/Export/Uniques/shield.lua @@ -6,8 +6,6 @@ return { Chernobog's Pillar Blacksteel Tower Shield League: Dawn of the Hunt -Implicits: 1 -Grants Skill: Raise Shield UniqueLocalIncreasedPhysicalDamageReductionRatingPercent28 UniqueFireResist8 UniqueChaosResist32 @@ -18,8 +16,6 @@ Dionadair Splintered Tower Shield Variant: Pre 0.1.1 Variant: Current -Implicits: 1 -Grants Skill: Raise Shield UniqueLocalIncreasedPhysicalDamageReductionRatingPercent17 UniqueStrength3 {variant:2}UniqueLifeRegeneration15 @@ -32,8 +28,6 @@ Braced Tower Shield Variant: Pre 0.1.1 Variant: Pre 0.3.0 Variant: Current -Implicits: 1 -Grants Skill: Raise Shield {variant:1,2}UniqueLocalBlockChance2[80,80] {variant:3}UniqueLocalBlockChance2 UniqueLocalIncreasedPhysicalDamageReductionRatingPercent2 @@ -47,8 +41,6 @@ Rampart Tower Shield Variant: Pre 0.1.1 Variant: Pre 0.3.0 Variant: Current -Implicits: 1 -Grants Skill: Raise Shield {variant:1,2}UniqueLocalBlockChance1[30,40] {variant:3}UniqueLocalBlockChance1 UniqueLocalIncreasedPhysicalDamageReductionRatingPercent1 @@ -59,8 +51,6 @@ UniqueDoubleAccuracyRating1 Nightfall Fortress Tower Shield League: Runes of Aldur -Implicits: 1 -Grants Skill: Raise Shield UniqueStrengthRequirements5 UniqueLocalBlockChance15 UniqueLocalIncreasedPhysicalDamageReductionRatingPercent31 @@ -73,8 +63,6 @@ Heraldric Tower Shield Variant: Pre 0.3.0 Variant: Current League: Dawn of the Hunt -Implicits: 1 -Grants Skill: Raise Shield {variant:1}UniqueLocalBlockChance14[20,30] {variant:2}UniqueLocalBlockChance14 UniqueLocalIncreasedPhysicalDamageReductionRatingPercent27 @@ -87,8 +75,6 @@ The Surrender {variant:2}Vaal Tower Shield Variant: Pre 0.4.0 Variant: Current -Implicits: 1 -Grants Skill: Raise Shield UniqueLocalBlockChance7 UniqueLocalIncreasedPhysicalDamageReductionRatingPercent20 UniqueStunThreshold12 @@ -101,9 +87,7 @@ Variant: Pre 0.4.0 Variant: Pre 0.5.0 Variant: Current Source: Drops from unique{Olroth, Origin of the Fall} -Implicits: 2 -Grants Skill: Raise Shield -Grants Skill: Cast on Block +UniqueGrantsCastOnBlock1 {variant:1}UniqueLocalIncreasedPhysicalDamageReductionRatingPercent24[100,150] {variant:2}UniqueLocalIncreasedPhysicalDamageReductionRatingPercent24[150,200] {variant:3,4}UniqueLocalIncreasedPhysicalDamageReductionRatingPercent24 @@ -116,8 +100,6 @@ UniqueLuckyBlockChance1 The Wailing Wall Effigial Tower Shield Source: No longer obtainable -Implicits: 1 -Grants Skill: Raise Shield UniqueMovementVelocity6 UniqueLocalIncreasedPhysicalDamageReductionRatingPercent2 UniqueStunThreshold9 @@ -126,8 +108,6 @@ UniqueDisableShieldSkills1 Window to Paradise Barricade Tower Shield League: Dawn of the Hunt -Implicits: 1 -Grants Skill: Raise Shield UniqueLocalIncreasedPhysicalDamageReductionRatingPercent25 UniqueIncreasedMana47 UniqueAllResistances24 @@ -135,8 +115,6 @@ UniqueRaiseShieldApplyExposure1 ]],[[ Wulfsbane Painted Tower Shield -Implicits: 1 -Grants Skill: Raise Shield UniqueIncreasedLife3 UniqueStrength3 UniqueStunThreshold7 @@ -149,8 +127,6 @@ Iron Buckler Variant: Pre 0.3.0 Variant: Current League: Dawn of the Hunt -Implicits: 1 -Grants Skill: Parry {variant:1}UniqueLocalBlockChance14[20,30] {variant:2}UniqueLocalBlockChance14 UniqueChaosResist31 @@ -160,8 +136,6 @@ UniqueApplyCorruptedBloodOnBlock1 Calgyra's Arc Ornate Buckler League: Dawn of the Hunt -Implicits: 1 -Grants Skill: Parry UniqueLocalIncreasedEvasionRatingPercent28 UniqueIncreasedMana12 UniqueIntelligence6 @@ -173,8 +147,6 @@ Leather Buckler Variant: Pre 0.3.0 Variant: Current League: Dawn of the Hunt -Implicits: 1 -Grants Skill: Parry {variant:1}UniqueLocalBlockChance10[30,50] {variant:2}UniqueLocalBlockChance10 UniqueLocalIncreasedEvasionRating6 @@ -184,8 +156,6 @@ UniqueParriedDebuffMagnitude1 Kaltenhalt Ridged Buckler League: Rise of the Abyssal -Implicits: 1 -Grants Skill: Parry UniqueLocalIncreasedEvasionRatingPercent15 MaximumColdResistUniqueShieldDex1 UniqueColdResist15 @@ -196,8 +166,6 @@ UniqueAttackerTakesColdDamage1 Nocturne Wooden Buckler League: Dawn of the Hunt -Implicits: 1 -Grants Skill: Parry UniqueIncreasedMana44 UniqueAllResistances25 UniqueIncreasedAccuracyPercent1 @@ -207,8 +175,6 @@ UniqueParriedDebuffDuration2 Rondel de Ezo Plated Buckler League: Dawn of the Hunt -Implicits: 1 -Grants Skill: Parry UniqueLocalIncreasedEvasionRatingPercent27 UniqueDexterity2 UniqueLifeRegeneration24 @@ -218,8 +184,6 @@ UniqueEnfeebleOnBlockChance1 Silverthorne Spiked Buckler League: Dawn of the Hunt -Implicits: 1 -Grants Skill: Parry UniqueLocalIncreasedEvasionRatingPercent29 UniqueAllResistances19 UniqueCriticalWeaknessOnParry1 @@ -243,8 +207,6 @@ Variant: Level: 1 Cold, 2 Fire, 3 Lightning Variant: Level: 3 Cold, 2 Fire, 1 Lightning Variant: Level: 1 Cold, 3 Fire, 2 Lightning Variant: Level: 2 Cold, 3 Fire, 1 Lightning -Implicits: 1 -Grants Skill: Parry UniqueLocalIncreasedEvasionRatingPercent25 {variant:1}UniqueMaximumElementalResistances1 {variant:2}UniqueMaximumElementalResistances2 @@ -267,8 +229,6 @@ Arvil's Wheel Hardwood Targe Variant: Pre 0.1.1 Variant: Current -Implicits: 1 -Grants Skill: Raise Shield {variant:1}UniqueLocalBlockChance8 UniqueLocalIncreasedArmourAndEvasion2 {variant:2}UniqueIncreasedLife43 @@ -280,8 +240,6 @@ UniqueSkillEffectDuration1 Eyes of the Runefather Venerable Defender League: Runes of Aldur -Implicits: 1 -Grants Skill: Raise Shield UniqueLocalIncreasedArmourAndEvasion32 UniqueColdResist36 UniqueAncientsChallengeOnOffHandDamage1 @@ -291,8 +249,6 @@ Feathered Fortress Crescent Targe Variant: Pre 0.1.1 Variant: Current -Implicits: 1 -Grants Skill: Raise Shield {variant:1}UniqueStrength18[10,20] {variant:2}UniqueStrength18 {variant:1}UniqueDexterity18[10,20] @@ -307,8 +263,6 @@ Merit of Service Pelage Targe Variant: Pre 0.3.0 Variant: Current -Implicits: 1 -Grants Skill: Raise Shield {variant:1}UniqueLocalBlockChance4[30,50] {variant:2}UniqueLocalBlockChance4 UniqueLocalIncreasedArmourAndEvasion11 @@ -322,8 +276,6 @@ Blazon Crest Shield Variant: Pre 0.1.1 Variant: Pre 0.3.0 Variant: Current -Implicits: 1 -Grants Skill: Raise Shield {variant:1,2}UniqueLocalBlockChance1[30,40] {variant:3}UniqueLocalBlockChance1 UniqueLocalIncreasedArmourAndEnergyShield2 @@ -333,8 +285,6 @@ UniqueDamageBlockedRecoupedAsMana1 ]],[[ Crest of Ardura Jingling Crest Shield -Implicits: 1 -Grants Skill: Raise Shield UniqueLocalIncreasedArmourAndEnergyShield14 UniqueIntelligence6 UniqueManaRegeneration3 @@ -346,8 +296,6 @@ Variant: Pre 0.2.0 Variant: Pre 0.4.0 Variant: Current Source: Drops from unique{Trialmaster} in normal{The Trial of Chaos} -Implicits: 1 -Grants Skill: Raise Shield UniqueLocalIncreasedArmourAndEnergyShield16 {variant:1}UniqueLocalSoulCoreEffect1[333,666] {variant:2}UniqueLocalSoulCoreEffect1[100,100] @@ -359,8 +307,6 @@ Variant: Pre 0.2.0 Variant: Pre 0.3.0 Variant: Current Sigil Crest Shield -Implicits: 1 -Grants Skill: Raise Shield {variant:1,2}UniqueLocalBlockChance5[40,60] {variant:3}UniqueLocalBlockChance5 UniqueLocalIncreasedArmourAndEnergyShield10 @@ -370,25 +316,20 @@ UniqueChaosResist1 ]],[[ Prism Guardian Sectarian Crest Shield -Requires Level 65 League: Dawn of the Hunt Variant: Pre 0.2.1 Variant: Pre 0.4.0 Variant: Current -Implicits: 1 -Grants Skill: Raise Shield UniqueLocalIncreasedArmourAndEnergyShield22 {variant:3}UniqueIncreasedSpirit14 UniqueDexterity37 -UniqueAllResistances26 +UniqueAllResistances23 {variant:1}UniqueSpiritPerMaximumLife1[50,50] {variant:2}UniqueSpiritPerMaximumLife1[25,25] {variant:3}UniqueBuffSkillSpiritEfficiencyPerMaximumLife1 ]],[[ Rise of the Phoenix Omen Crest Shield -Implicits: 1 -Grants Skill: Raise Shield UniqueMaximumFireResist2 UniqueFireResist16 UniqueFireResistOnLowLife1 @@ -397,9 +338,6 @@ UniqueLifeRegenerationPercentOnLowLife1 ]],[[ Saffell's Frame Emblem Crest Shield -Requires Level 16 -Implicits: 1 -Grants Skill: Raise Shield UniqueFireResist6 UniqueColdResist5 UniqueLightningResist2 diff --git a/src/Export/Uniques/spear.lua b/src/Export/Uniques/spear.lua index ece47ca8e1..593ab1665a 100644 --- a/src/Export/Uniques/spear.lua +++ b/src/Export/Uniques/spear.lua @@ -7,9 +7,7 @@ Atziri's Contempt Pronged Spear Source: Drops from unique{Atziri's Vault} in normal{Vaal Temple} League: Fate of the Vaal -Implicits: 2 -Grants Skill: Spear Throw -Grants Skill: Level (1-20) Shattering Spite +UniqueShatteringSpiteSkill1 UniqueLocalIncreasedPhysicalDamagePercent20 UniqueLocalAddedFireDamage8 UniqueLocalAddedLightningDamage8 @@ -20,9 +18,6 @@ UniqueSpearsInflictBloodstoneLanceOnHit1 Chainsting Hunting Spear League: Dawn of the Hunt -Implicits: 2 -Grants Skill: Spear Throw -SpearImplicitLocalChanceToMaim1 UniqueLocalAddedPhysicalDamage19 UniqueLocalIncreasedAccuracy7 UniqueLocalIncreasedAttackSpeed1 @@ -32,9 +27,6 @@ UniqueLocalIncreasedProjectileSpeed1 Daevata's Wind War Spear League: Dawn of the Hunt -Implicits: 2 -Grants Skill: Spear Throw -SpearImplicitLocalProjectileSpeed1 UniqueLocalAddedPhysicalDamage22 UniqueIncreasedEvasionRating4 UniqueLocalIncreasedAttackSpeed20 @@ -44,10 +36,7 @@ UniqueProjectileDamageIfMeleeHitRecently1 The Ordained Grand Spear League: Runes of Aldur -Implicits: 3 -Grants Skill: Spear Throw -Grants Skill: Level (1-20) Righteous Descent -SpearImplicitWeaponRange1 +UniqueRighteousDescentSkill1 UniqueLocalIncreasedPhysicalDamagePercent21 UniqueLocalAddedLightningDamage11 UniqueLocalCriticalStrikeChance10 @@ -57,8 +46,6 @@ UniqueDivineFragments1 Saitha's Spear Barbed Spear League: Dawn of the Hunt -Implicits: 1 -Grants Skill: Spear Throw UniqueLocalAddedPhysicalDamage20 UniqueLocalAddedFireDamage1 UniqueLocalChanceToBleed2 @@ -70,8 +57,6 @@ Hardwood Spear League: Dawn of the Hunt Variant: Pre 0.3.0 Variant: Current -Implicits: 1 -Grants Skill: Spear Throw UniqueLocalAddedPhysicalDamage3 {variant:2}DealNoElementalDamageUnique__3 UniqueLocalWeaponRangeIncrease1 @@ -81,8 +66,6 @@ UniqueLocalPoisonOnHit1 Skysliver Winged Spear League: Dawn of the Hunt -Implicits: 1 -Grants Skill: Spear Throw UniqueLocalNoWeaponPhysicalDamage1 UniqueLocalAddedLightningDamage1 UniqueLocalIncreasedAttackSpeed3 @@ -94,9 +77,7 @@ Helix Spear League: Dawn of the Hunt Variant: Pre 0.2.1 Variant: Current -Implicits: 2 -Grants Skill: Spear Throw -Grants Skill: Level (1-20) Chaotic Surge +UniqueGrantsChaosInfusion1 UniqueLocalIncreasedAttackSpeed21 {variant:1}UniqueLifeLeechLocal3[6,10] {variant:2}UniqueLifeLeechLocal3 @@ -110,8 +91,6 @@ Forked Spear Variant: Pre 0.3.0 Variant: Current League: Dawn of the Hunt -Implicits: 1 -Grants Skill: Spear Throw UniqueLocalAddedPhysicalDamage21 {variant:1}UniqueLocalCriticalStrikeChance8[1000,2000] {variant:2}UniqueLocalCriticalStrikeChance8 @@ -122,8 +101,6 @@ UniqueLifeCost2 Tyranny's Grip Ironhead Spear League: Dawn of the Hunt -Implicits: 1 -Grants Skill: Spear Throw UniqueLocalIncreasedPhysicalDamagePercent12 UniqueLocalIncreasedAttackSpeed16 UniqueStrength38 diff --git a/src/Export/Uniques/staff.lua b/src/Export/Uniques/staff.lua index 1639401c25..75496c767a 100644 --- a/src/Export/Uniques/staff.lua +++ b/src/Export/Uniques/staff.lua @@ -7,8 +7,6 @@ Atziri's Rule Reflecting Staff Source: Drops from unique{Atziri's Vault} in normal{Vaal Temple} League: Fate of the Vaal -Implicits: 1 -Grants Skill: Level (1-20) Mirror of Refraction UniqueMaximumLifeIncrease8 UniqueGlobalCorruptedSpellSkillLevel1 UniqueIncreasedCastSpeed20 @@ -18,8 +16,6 @@ UniqueSpellsThatCostLifeGainDamageAsExtraPhys1 The Burden of Shadows Chiming Staff Source: Drops from unique{The King in the Mists} in normal{Crux of Nothingness} -Implicits: 1 -Grants Skill: Level (1-20) Sigil of Power UniqueIncreasedCastSpeed11 UniqueLifeCost1 UniqueDamageGainedAsChaosPerCost1 @@ -28,9 +24,6 @@ Dusk Vigil Ashen Staff Variant: Pre 0.4.0 Variant: Current -Implicits: 2 -Grants Skill: Level (1-20) Firebolt -Grants Skill: Level (1-20) Ember Fusillade {variant:2}UniqueDamageGainedAsFire3 {variant:1}UniqueSpellDamageOnWeapon3[60,80] {variant:2}UniqueSpellDamageOnWeapon3 @@ -42,9 +35,6 @@ Earthbound Voltaic Staff Variant: Pre 0.4.0 Variant: Current -Implicits: 2 -Grants Skill: Level (1-20) Lightning Bolt -Grants Skill: Level (1-20) Spark {variant:1}UniqueLightningDamageOnWeapon1 {variant:2}UniqueSpellDamageOnWeapon11 UniqueIncreasedCastSpeed4 @@ -55,8 +45,6 @@ UniqueTriggerSparkOnKillingShockedEnemy1 The Raven's Flock Perching Staff League: Runes of Aldur -Implicits: 1 -Grants Skill: Level (1-20) Spiraling Conspiracy UniqueIncreasedCastSpeed22 UniqueIntelligence47 UniqueMinionDamage3 @@ -67,8 +55,6 @@ The Searing Touch Pyrophyte Staff Variant: Pre 0.4.0 Variant: Current -Implicits: 1 -Grants Skill: Level (1-20) Living Bomb UniqueFireDamageOnWeapon1 UniqueIncreasedCastSpeed4 UniqueIgniteChanceIncrease1 @@ -78,8 +64,6 @@ UniqueIgniteEffect2 Sire of Shards Chiming Staff League: Dawn of the Hunt -Implicits: 1 -Grants Skill: Level (1-20) Sigil of Power UniqueSpellDamageOnWeapon7 UniqueIncreasedCastSpeed4 UniqueAllResistances22 @@ -90,8 +74,6 @@ Taryn's Shiver Gelid Staff Variant: Pre 0.4.0 Variant: Current -Implicits: 1 -Grants Skill: Level (1-20) Freezing Shards {variant:1}UniqueColdDamageOnWeapon1 {variant:2}UniqueSpellDamageOnWeapon10 UniqueIncreasedCastSpeed4 @@ -105,9 +87,7 @@ Permafrost Staff League: Dawn of the Hunt Variant: Pre 0.4.0 Variant: Current -Implicits: 2 -Grants Skill: Level (1-20) Heart of Ice -Grants Skill: Level (1-20) Icestorm +UniqueGrantsIcestormSkill {variant:1}UniqueGlobalColdSpellGemsLevel1[2,4] {variant:2}UniqueGlobalColdSpellGemsLevel1 UniqueIncreasedCastSpeed16 @@ -141,8 +121,6 @@ UniqueTriggersRefundEnergySpent1 Duality Warding Quarterstaff League: Runes of Aldur -Implicits: 1 -QuarterstaffImplicitRunicWard1 UniqueLocalIncreasedPhysicalDamagePercent25 UniqueLocalCriticalMultiplier3 UniqueLocalIncreasedAttackSpeed32 @@ -176,8 +154,6 @@ Pillar of the Caged God Variant: Pre 0.2.0 Variant: Current Long Quarterstaff -Implicits: 1 -QuarterstaffWeaponRange1 {variant:1}UniqueAttackAreaOfEffectPerIntelligence1[2,2] {variant:2}UniqueAttackAreaOfEffectPerIntelligence1 {variant:1}UniqueAttackSpeedPerDexterity1[2,2] @@ -218,15 +194,13 @@ Variant: Chaos Damage and Curse Variant: Spell Physical Damage and Bleed Chance Variant: Chaos Damage and Explode Variant: Unholy Might -Implicits: 1 -Grants Skill: Level (1-20) Feast of Flesh UniqueDesecratedModEffect1 -{variant:1}Grants Skill: Level (1-20) His Dark Horizon -{variant:2}Grants Skill: Level (1-20) His Foul Emergence -{variant:3}Grants Skill: Level (1-20) His Grave Command -{variant:4}Grants Skill: Level (1-20) His Scattering Calamity -{variant:5}Grants Skill: Level (1-20) His Vile Intrusion -{variant:6}Grants Skill: Level (1-20) His Winnowing Flame +{variant:1}UniqueKulemakHisDarkHorizon_1 +{variant:2}UniqueKulemakHisFoulEmergence_1 +{variant:3}UniqueKulemakHisGraveCommand_1 +{variant:4}UniqueKulemakHisScatteringCalamity_1 +{variant:5}UniqueKulemakHisVileIntrusion_1 +{variant:6}UniqueKulemakHisWinnowingFlame_1 {variant:7}UniqueKulemakElementalDamageEleAilmentDuration_1 {variant:8}UniqueKulemakSpiritAndSpiritReservationEfficiency_1 {variant:9}UniqueKulemakChaosDamageCurseLowersChaosRes_1 diff --git a/src/Export/Uniques/talisman.lua b/src/Export/Uniques/talisman.lua index bb08740121..116b84850b 100644 --- a/src/Export/Uniques/talisman.lua +++ b/src/Export/Uniques/talisman.lua @@ -24,9 +24,7 @@ UniqueGainAModifierFromEachEnemyInPresenceOnShapeshift1 Fury of the King Ashbark Talisman League: Fate of the Vaal -Implicits: 2 -Grants Skill: Level (1-20) Molten Crash -TalismanImplicitFireDamageAndFlammability1 +UniqueVesselOfWrathSkill1 UniqueLocalAddedFireDamage7 UniqueLocalIncreasedAttackSpeed26 UniqueStrength46 @@ -37,20 +35,17 @@ UniqueEnemiesInPresenceHaveFireExposure1 Hysseg's Claw Familial Talisman League: Fate of the Vaal -Implicits: 2 -Grants Skill: Level (1-20) Cackling Companions -TalismanImplicitMinionDamage1 +UniqueCacklingCompanionSkill1 UniqueLocalIncreasedPhysicalDamagePercent17 UniqueMovementVelocity26 UniqueStrength40 -UniqueIntelligence45 +UniqueIntelligence44 UniqueDamagePerMinion1 ]],[[ Spiteful Floret Nettle Talisman League: Runes of Aldur -Implicits: 1 -Grants Skill: Level (1-20) Sanguine Revelry +UniqueSanguineRevelrySkill1 UniqueLocalIncreasedPhysicalDamagePercent23 UniqueLocalIncreasedAttackSpeed29 UniqueStrength48 diff --git a/src/Export/Uniques/wand.lua b/src/Export/Uniques/wand.lua index af32b3496f..fdf8ec86fb 100644 --- a/src/Export/Uniques/wand.lua +++ b/src/Export/Uniques/wand.lua @@ -6,10 +6,7 @@ return { Adonia's Ego Siphoning Wand League: Dawn of the Hunt -Requires Level 65 -Implicits: 2 -Grants Skill: Level (1-20) Power Siphon -Grants Skill: Level 20 Pinnacle of Power +UniqueGrantsElementalPowerSkill UniqueIncreasedMana52 UniqueGlobalSpellGemsLevel2 UniqueIncreasedCastSpeed17 @@ -18,15 +15,12 @@ UniqueMaximumPowerChargesWand_1 ]],[[ Cursecarver Acrid Wand -Requires Level 33 League: Dawn of the Hunt Variant: Elemental Weakness Variant: Vulnerability Variant: Despair Variant: Enfeeble Variant: Temporal Chains -Implicits: 1 -Grants Skill: Level (1-20) Decompose UniqueSpellDamageOnWeapon8 UniqueIncreasedCastSpeed15 UniqueManaRegeneration30 @@ -39,8 +33,6 @@ UniqueLifeGainedFromEnemyDeath10 ]],[[ Enezun's Charge Volatile Wand -Implicits: 1 -Grants Skill: Level (1-20) Volatile Dead UniqueSpellDamageOnWeapon2 UniqueSpellCriticalStrikeChance2 UniqueManaGainedFromEnemyDeath9 @@ -48,8 +40,6 @@ UniqueChanceToNotConsumeCorpse1 ]],[[ Lifesprig Attuned Wand -Implicits: 1 -Grants Skill: Level (1-20) Mana Drain UniqueIncreasedMana1 UniqueGlobalSpellGemsLevel1 UniqueIncreasedCastSpeed1 @@ -58,8 +48,6 @@ UniqueLeechLifeOnSpellCast1 Liminal Coil Twisted Wand League: Runes of Aldur -Implicits: 1 -Grants Skill: Level (1-20) Coiling Bolts UniqueSpellDamageOnWeapon12 UniqueIncreasedCastSpeed21 UniqueCurseMagnitudeIsZero1 @@ -71,15 +59,12 @@ Runeseeker's Call Runic Fork League: Runes of Aldur Sockets: S S S S S -Implicits: 1 -Grants Skill: Level (1-20) The Stars Answer +UniqueTheStarsAnswerSkill1 UniqueOnlySocketRunes1 UniqueLocalIncreasedRuneEffect1 ]],[[ Sanguine Diviner Bone Wand -Implicits: 1 -Grants Skill: Level (1-20) Bone Blast UniqueSpellDamageOnWeapon2 UniqueLifeGainedFromEnemyDeath7 UniqueGlobalChanceToBleed3 @@ -88,8 +73,6 @@ UniqueSpellLifeCostPercent1 The Wicked Quill Withered Wand League: Dawn of the Hunt -Implicits: 1 -Grants Skill: Level (1-20) Chaos Bolt UniqueSpellDamageOnWeapon6 UniqueIncreasedMana12 UniqueChaosResist29 diff --git a/src/Export/spec.lua b/src/Export/spec.lua index f67bae34a3..da12e46dc8 100644 --- a/src/Export/spec.lua +++ b/src/Export/spec.lua @@ -40589,7 +40589,7 @@ return { }, [2]={ list=false, - name="Skill Gem", + name="SkillGem", refTo="SkillGems", type="Key", width=400