diff --git a/src/Classes/Item.lua b/src/Classes/Item.lua index 03a32ab63f..ba068320de 100644 --- a/src/Classes/Item.lua +++ b/src/Classes/Item.lua @@ -791,7 +791,7 @@ function ItemClass:ParseRaw(raw, rarity, highQuality) end -- this will need more advanced logic for jewel sockets in items to work properly but could just be removed as items like this was only introduced during development. if self.base then - if self.base.weapon or self.base.armour then + if self.base.weapon or self.base.armour or self.base.tags.wand or self.base.tags.staff then local shouldFixRunesOnItem = #self.runes == 0 -- Form a key value table with the following format @@ -799,18 +799,20 @@ function ItemClass:ParseRaw(raw, rarity, highQuality) -- This will be used to more easily grab the relevant runes that combinations will need to be of. -- This could be refactored to only needs to be called once. local statGroupedRunes = { } - local type = self.base.weapon and "weapon" or "armour" -- minor optimisation + local type = self.base.weapon and "weapon" or (self.base.tags.wand or self.base.tags.staff ) and "caster" or "armour" -- minor optimisation for runeName, runeMods in pairs(data.itemMods.Runes) do - -- gets the first value in the mod and its stripped line. - local runeValue - local runeStrippedModeLine = runeMods[type][1]:gsub("(%d%.?%d*)", function(val) - runeValue = val - return "#" - end) - if statGroupedRunes[runeStrippedModeLine] == nil then - statGroupedRunes[runeStrippedModeLine] = { } + if runeMods[type] then -- Check to make sure rune mod exists for base type + -- gets the first value in the mod and its stripped line. + local runeValue + local runeStrippedModeLine = runeMods[type][1]:gsub("(%d%.?%d*)", function(val) + runeValue = val + return "#" + end) + if statGroupedRunes[runeStrippedModeLine] == nil then + statGroupedRunes[runeStrippedModeLine] = { } + end + t_insert(statGroupedRunes[runeStrippedModeLine], { runeName, runeValue }); end - t_insert(statGroupedRunes[runeStrippedModeLine], { runeName, runeValue }); end -- Sort table to ensure first entries are always largest. @@ -1192,7 +1194,7 @@ function ItemClass:BuildRaw() if self.quality then t_insert(rawLines, "Quality: " .. self.quality) end - if self.itemSocketCount and self.itemSocketCount > 0 and (self.base.weapon or self.base.armour) then + if self.itemSocketCount and self.itemSocketCount > 0 and (self.base.weapon or self.base.armour or self.base.tags.wand or self.base.tags.staff) then local socketString = "" for _ = 1, self.itemSocketCount do socketString = socketString .. "S " @@ -1252,7 +1254,7 @@ function ItemClass:UpdateRunes() for i = 1, self.itemSocketCount do local name = self.runes[i] if name and name ~= "None" then - local mod = self.base.weapon and data.itemMods.Runes[name].weapon or self.base.armour and data.itemMods.Runes[name].armour or { } + local mod = self.base.weapon and data.itemMods.Runes[name].weapon or self.base.armour and data.itemMods.Runes[name].armour or (item.base.tags.wand or item.base.tags.staff) and data.itemMods.Runes[name].caster or { } for i, line in ipairs(mod) do local order = mod.statOrder[i] if statOrder[order] then diff --git a/src/Classes/ItemsTab.lua b/src/Classes/ItemsTab.lua index 7f007ede4f..1b7f0d55b7 100644 --- a/src/Classes/ItemsTab.lua +++ b/src/Classes/ItemsTab.lua @@ -366,11 +366,11 @@ holding Shift will put it in the second.]]) -- Section: Sockets and Links self.controls.displayItemSectionSockets = new("Control", {"TOPLEFT",self.controls.displayItemSectionVariant,"BOTTOMLEFT"}, {0, 0, 0, function() - return self.displayItem and (self.displayItem.base.weapon or self.displayItem.base.armour) and 28 or 0 + return self.displayItem and (self.displayItem.base.weapon or self.displayItem.base.armour or self.displayItem.base.tags.wand or self.displayItem.base.tags.staff) and 28 or 0 end}) self.controls.displayItemSocketRune = new("LabelControl", {"TOPLEFT",self.controls.displayItemSectionSockets,"TOPLEFT"}, {0, 0, 36, 20}, "^x7F7F7FS") self.controls.displayItemSocketRune.shown = function() - return self.displayItem.base.weapon or self.displayItem.base.armour + return self.displayItem.base.weapon or self.displayItem.base.armour or self.displayItem.base.tags.wand or self.displayItem.base.tags.staff end self.controls.displayItemSocketRuneEdit = new("EditControl", {"LEFT",self.controls.displayItemSocketRune,"RIGHT"}, {2, 0, 50, 20}, nil, nil, "%D", 1, function(buf) if tonumber(buf) > 6 then @@ -501,7 +501,7 @@ holding Shift will put it in the second.]]) -- Section: Rune Selection self.controls.displayItemSectionRune = new("Control", {"TOPLEFT",self.controls.displayItemSectionClusterJewel,"BOTTOMLEFT"}, {0, 0, 0, function() - if not self.displayItem or self.displayItem.itemSocketCount == 0 or not (self.displayItem.base.weapon or self.displayItem.base.armour) then + if not self.displayItem or self.displayItem.itemSocketCount == 0 or not (self.displayItem.base.weapon or self.displayItem.base.armour or self.displayItem.base.tags.wand or self.displayItem.base.tags.staff) then return 0 end local h = 6 @@ -534,7 +534,7 @@ holding Shift will put it in the second.]]) end end drop.shown = function() - return self.displayItem and i <= self.displayItem.itemSocketCount and (self.displayItem.base.weapon or self.displayItem.base.armour) + return self.displayItem and i <= self.displayItem.itemSocketCount and (self.displayItem.base.weapon or self.displayItem.base.armour or self.displayItem.base.tags.wand or self.displayItem.base.tags.staff) end self.controls["displayItemRune"..i] = drop @@ -1563,9 +1563,13 @@ end -- build rune mod list for armour and weapons local runeArmourModLines = { { name = "None", label = "None", order = -1 } } local runeWeaponModLines = { { name = "None", label = "None", order = -1 } } +local runeCasterModLines = { { name = "None", label = "None", order = -1 } } for name, modLines in pairs(data.itemMods.Runes) do t_insert(runeArmourModLines, { name = name, label = modLines.armour[1], order = modLines.armour.statOrder[1]}) t_insert(runeWeaponModLines, { name = name, label = modLines.weapon[1], order = modLines.weapon.statOrder[1]}) + if modLines.caster then + t_insert(runeCasterModLines, { name = name, label = modLines.caster[1], order = modLines.caster.statOrder[1]}) + end end table.sort(runeArmourModLines, function(a, b) return a.order < b.order @@ -1573,6 +1577,9 @@ end) table.sort(runeWeaponModLines, function(a, b) return a.order < b.order end) +table.sort(runeCasterModLines, function(a, b) + return a.order < b.order +end) -- Update rune selection controls function ItemsTabClass:UpdateRuneControls() local item = self.displayItem @@ -1581,6 +1588,8 @@ function ItemsTabClass:UpdateRuneControls() self.controls["displayItemRune"..i].list = runeArmourModLines elseif item.base.weapon then self.controls["displayItemRune"..i].list = runeWeaponModLines + elseif item.base.tags.wand or item.base.tags.staff then + self.controls["displayItemRune"..i].list = runeCasterModLines end if item.runes[i] then for j, modLine in ipairs(self.controls["displayItemRune"..i].list) do @@ -1902,7 +1911,7 @@ function ItemsTabClass:CraftItem() else item.quality = nil end - if base.base.socketLimit and (base.base.weapon or base.base.armour) then -- must be a martial weapon/armour + if base.base.socketLimit and (base.base.weapon or base.base.armour or base.base.tags.wand or base.base.tags.staff) then -- must be a martial weapon/armour if #item.sockets == 0 then for i = 1, base.base.socketLimit do t_insert(item.sockets, { group = 0 }) diff --git a/src/Classes/TradeQueryGenerator.lua b/src/Classes/TradeQueryGenerator.lua index e22ea861da..a4e3f0b2a4 100644 --- a/src/Classes/TradeQueryGenerator.lua +++ b/src/Classes/TradeQueryGenerator.lua @@ -419,6 +419,7 @@ function TradeQueryGeneratorClass:InitMods() for name, modLines in pairs(data.itemMods.Runes) do self:ProcessMod(modLines.armour, tradeQueryStatsParsed, regularItemMask, { ["Shield"] = true, ["Chest"] = true, ["Helmet"] = true, ["Gloves"] = true, ["Boots"] = true, ["Focus"] = true }) self:ProcessMod(modLines.weapon, tradeQueryStatsParsed, regularItemMask, { ["1HWeapon"] = true, ["2HWeapon"] = true, ["1HMace"] = true, ["Claw"] = true, ["Quarterstaff"] = true, ["Bow"] = true, ["2HMace"] = true, ["Crossbow"] = true, ["Spear"] = true, ["Flail"] = true }) + self:ProcessMod(modLines.caster, tradeQueryStatsParsed, regularItemMask, { ["Wand"] = true, ["Staff"] = true }) end local queryModsFile = io.open(queryModFilePath, 'w') diff --git a/src/Data/Bases/sceptre.lua b/src/Data/Bases/sceptre.lua index ed6946f47d..2e1c7118ef 100644 --- a/src/Data/Bases/sceptre.lua +++ b/src/Data/Bases/sceptre.lua @@ -6,6 +6,7 @@ itemBases["Rattling Sceptre"] = { type = "Sceptre", quality = 20, spirit = 100, + socketLimit = 2, tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Skeletal Warrior Minion", implicitModTypes = { }, @@ -15,6 +16,7 @@ itemBases["Stoic Sceptre"] = { type = "Sceptre", quality = 20, spirit = 100, + socketLimit = 2, tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Discipline", implicitModTypes = { }, @@ -24,6 +26,7 @@ itemBases["Lupine Sceptre"] = { type = "Sceptre", quality = 20, spirit = 100, + socketLimit = 2, tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Skeletal Warrior Minion", implicitModTypes = { }, @@ -33,6 +36,7 @@ itemBases["Omen Sceptre"] = { type = "Sceptre", quality = 20, spirit = 100, + socketLimit = 2, tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Malice", implicitModTypes = { }, @@ -42,6 +46,7 @@ itemBases["Ochre Sceptre"] = { type = "Sceptre", quality = 20, spirit = 100, + socketLimit = 2, tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Skeletal Warrior Minion", implicitModTypes = { }, @@ -51,6 +56,7 @@ itemBases["Shrine Sceptre"] = { type = "Sceptre", quality = 20, spirit = 100, + socketLimit = 2, tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Purity of Fire", implicitModTypes = { }, @@ -60,6 +66,7 @@ itemBases["Shrine Sceptre"] = { type = "Sceptre", quality = 20, spirit = 100, + socketLimit = 2, tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Purity of Ice", implicitModTypes = { }, @@ -69,6 +76,7 @@ itemBases["Shrine Sceptre"] = { type = "Sceptre", quality = 20, spirit = 100, + socketLimit = 2, tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Purity of Lightning", implicitModTypes = { }, @@ -78,6 +86,7 @@ itemBases["Devouring Sceptre"] = { type = "Sceptre", quality = 20, spirit = 100, + socketLimit = 2, tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Skeletal Warrior Minion", implicitModTypes = { }, @@ -87,6 +96,7 @@ itemBases["Clasped Sceptre"] = { type = "Sceptre", quality = 20, spirit = 100, + socketLimit = 2, tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Skeletal Warrior Minion", implicitModTypes = { }, @@ -96,6 +106,7 @@ itemBases["Devotional Sceptre"] = { type = "Sceptre", quality = 20, spirit = 100, + socketLimit = 2, tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Skeletal Warrior Minion", implicitModTypes = { }, @@ -105,6 +116,7 @@ itemBases["Wrath Sceptre"] = { type = "Sceptre", quality = 20, spirit = 100, + socketLimit = 2, tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Skeletal Warrior Minion", implicitModTypes = { }, @@ -114,6 +126,7 @@ itemBases["Aromatic Sceptre"] = { type = "Sceptre", quality = 20, spirit = 100, + socketLimit = 2, tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Skeletal Warrior Minion", implicitModTypes = { }, @@ -123,6 +136,7 @@ itemBases["Pious Sceptre"] = { type = "Sceptre", quality = 20, spirit = 100, + socketLimit = 2, tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Skeletal Warrior Minion", implicitModTypes = { }, @@ -132,6 +146,7 @@ itemBases["Hallowed Sceptre"] = { type = "Sceptre", quality = 20, spirit = 100, + socketLimit = 2, tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Skeletal Warrior Minion", implicitModTypes = { }, @@ -143,6 +158,7 @@ itemBases["Shrine Sceptre"] = { quality = 20, spirit = 100, hidden = true, + socketLimit = 2, tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Purity of Fire", implicitModTypes = { }, @@ -153,6 +169,7 @@ itemBases["Shrine Sceptre"] = { quality = 20, spirit = 100, hidden = true, + socketLimit = 2, tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Purity of Ice", implicitModTypes = { }, @@ -163,6 +180,7 @@ itemBases["Shrine Sceptre"] = { quality = 20, spirit = 100, hidden = true, + socketLimit = 2, tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Purity of Lightning", implicitModTypes = { }, @@ -173,6 +191,7 @@ itemBases["Shrine Sceptre (Purity of Fire)"] = { type = "Sceptre", quality = 20, spirit = 100, + socketLimit = 2, tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Purity of Fire", implicitModTypes = { }, @@ -182,6 +201,7 @@ itemBases["Shrine Sceptre (Purity of Cold)"] = { type = "Sceptre", quality = 20, spirit = 100, + socketLimit = 2, tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Purity of Ice", implicitModTypes = { }, @@ -191,6 +211,7 @@ itemBases["Shrine Sceptre (Purity of Lighting)"] = { type = "Sceptre", quality = 20, spirit = 100, + socketLimit = 2, tags = { default = true, onehand = true, sceptre = true, }, implicit = "Grants Skill: Level (1-20) Purity of Lightning", implicitModTypes = { }, diff --git a/src/Data/Bases/soulcore.lua b/src/Data/Bases/soulcore.lua index 6ae4987823..87dc62b375 100644 --- a/src/Data/Bases/soulcore.lua +++ b/src/Data/Bases/soulcore.lua @@ -128,7 +128,7 @@ itemBases["Desert Rune"] = { hidden = true, tags = { rune_normal = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: Adds 7 to 11 Fire Damage\nArmour: +12% to Fire Resistance", + implicit = "Martial Weapons: Adds 7 to 11 Fire Damage\nArmour: +12% to Fire Resistance\nCaster: Gain 10% of Damage as Extra Fire Damage", req = { level = 31, }, } itemBases["Glacial Rune"] = { @@ -136,7 +136,7 @@ itemBases["Glacial Rune"] = { hidden = true, tags = { rune_normal = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: Adds 6 to 10 Cold Damage\nArmour: +12% to Cold Resistance", + implicit = "Martial Weapons: Adds 6 to 10 Cold Damage\nArmour: +12% to Cold Resistance\nCaster: Gain 10% of Damage as Extra Cold Damage", req = { level = 31, }, } itemBases["Storm Rune"] = { @@ -144,7 +144,7 @@ itemBases["Storm Rune"] = { hidden = true, tags = { rune_normal = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: Adds 1 to 20 Lightning Damage\nArmour: +12% to Lightning Resistance", + implicit = "Martial Weapons: Adds 1 to 20 Lightning Damage\nArmour: +12% to Lightning Resistance\nCaster: Gain 10% of Damage as Extra Lightning Damage", req = { level = 31, }, } itemBases["Iron Rune"] = { @@ -152,7 +152,7 @@ itemBases["Iron Rune"] = { hidden = true, tags = { rune_normal = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: 20% increased Physical Damage\nArmour: 20% increased Armour, Evasion and Energy Shield", + implicit = "Martial Weapons: 20% increased Physical Damage\nArmour: 20% increased Armour, Evasion and Energy Shield\nCaster: 25% increased Spell Damage", req = { level = 31, }, } itemBases["Body Rune"] = { @@ -160,7 +160,7 @@ itemBases["Body Rune"] = { hidden = true, tags = { rune_normal = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: Leeches 2.5% of Physical Damage as Life\nArmour: +30 to maximum Life", + implicit = "Martial Weapons: Leeches 2.5% of Physical Damage as Life\nArmour: +30 to maximum Life\nCaster: +30 to maximum Energy Shield", req = { level = 37, }, } itemBases["Mind Rune"] = { @@ -168,7 +168,7 @@ itemBases["Mind Rune"] = { hidden = true, tags = { rune_normal = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: Leeches 2% of Physical Damage as Mana\nArmour: +25 to maximum Mana", + implicit = "Martial Weapons: Leeches 2% of Physical Damage as Mana\nArmour: +25 to maximum Mana\nCaster: +30 to maximum Mana", req = { level = 37, }, } itemBases["Rebirth Rune"] = { @@ -176,7 +176,7 @@ itemBases["Rebirth Rune"] = { hidden = true, tags = { rune_normal = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: Gain 20 Life per Enemy Killed\nArmour: Regenerate 0.3% of maximum Life per second", + implicit = "Martial Weapons: Gain 20 Life per Enemy Killed\nArmour: Regenerate 0.3% of maximum Life per second\nCaster: 15% increased Energy Shield Recharge Rate", req = { level = 45, }, } itemBases["Inspiration Rune"] = { @@ -184,7 +184,7 @@ itemBases["Inspiration Rune"] = { hidden = true, tags = { rune_normal = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: Gain 16 Mana per Enemy Killed\nArmour: 15% increased Mana Regeneration Rate", + implicit = "Martial Weapons: Gain 16 Mana per Enemy Killed\nArmour: 15% increased Mana Regeneration Rate\nCaster: 20% increased Mana Regeneration Rate", req = { level = 45, }, } itemBases["Stone Rune"] = { @@ -192,7 +192,7 @@ itemBases["Stone Rune"] = { hidden = true, tags = { rune_normal = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: Causes 25% increased Stun Buildup\nArmour: +40 to Stun Threshold", + implicit = "Martial Weapons: Causes 25% increased Stun Buildup\nArmour: +40 to Stun Threshold\nCaster: Gain additional Stun Threshold equal to 12% of maximum Energy Shield", req = { level = 41, }, } itemBases["Vision Rune"] = { @@ -200,7 +200,7 @@ itemBases["Vision Rune"] = { hidden = true, tags = { rune_normal = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: +80 to Accuracy Rating\nArmour: 10% increased Life and Mana Recovery from Flasks", + implicit = "Martial Weapons: +80 to Accuracy Rating\nArmour: 10% increased Life and Mana Recovery from Flasks\nCaster: 20% increased Critical Hit Chance for Spells", req = { level = 41, }, } itemBases["Lesser Desert Rune"] = { @@ -208,7 +208,7 @@ itemBases["Lesser Desert Rune"] = { hidden = true, tags = { rune_lesser = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: Adds 4 to 6 Fire Damage\nArmour: +10% to Fire Resistance", + implicit = "Martial Weapons: Adds 4 to 6 Fire Damage\nArmour: +10% to Fire Resistance\nCaster: Gain 8% of Damage as Extra Fire Damage", req = { level = 5, }, } itemBases["Lesser Glacial Rune"] = { @@ -216,7 +216,7 @@ itemBases["Lesser Glacial Rune"] = { hidden = true, tags = { rune_lesser = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: Adds 3 to 5 Cold Damage\nArmour: +10% to Cold Resistance", + implicit = "Martial Weapons: Adds 3 to 5 Cold Damage\nArmour: +10% to Cold Resistance\nCaster: Gain 8% of Damage as Extra Cold Damage", req = { level = 5, }, } itemBases["Lesser Storm Rune"] = { @@ -224,7 +224,7 @@ itemBases["Lesser Storm Rune"] = { hidden = true, tags = { rune_lesser = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: Adds 1 to 10 Lightning Damage\nArmour: +10% to Lightning Resistance", + implicit = "Martial Weapons: Adds 1 to 10 Lightning Damage\nArmour: +10% to Lightning Resistance\nCaster: Gain 8% of Damage as Extra Lightning Damage", req = { level = 5, }, } itemBases["Lesser Iron Rune"] = { @@ -232,7 +232,7 @@ itemBases["Lesser Iron Rune"] = { hidden = true, tags = { rune_lesser = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: 15% increased Physical Damage\nArmour: 15% increased Armour, Evasion and Energy Shield", + implicit = "Martial Weapons: 15% increased Physical Damage\nArmour: 15% increased Armour, Evasion and Energy Shield\nCaster: 20% increased Spell Damage", req = { level = 5, }, } itemBases["Lesser Body Rune"] = { @@ -240,7 +240,7 @@ itemBases["Lesser Body Rune"] = { hidden = true, tags = { rune_lesser = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: Leeches 2% of Physical Damage as Life\nArmour: +20 to maximum Life", + implicit = "Martial Weapons: Leeches 2% of Physical Damage as Life\nArmour: +20 to maximum Life\nCaster: +25 to maximum Energy Shield", req = { level = 11, }, } itemBases["Lesser Mind Rune"] = { @@ -248,7 +248,7 @@ itemBases["Lesser Mind Rune"] = { hidden = true, tags = { rune_lesser = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: Leeches 1.5% of Physical Damage as Mana\nArmour: +15 to maximum Mana", + implicit = "Martial Weapons: Leeches 1.5% of Physical Damage as Mana\nArmour: +15 to maximum Mana\nCaster: +25 to maximum Mana", req = { level = 11, }, } itemBases["Lesser Rebirth Rune"] = { @@ -256,7 +256,7 @@ itemBases["Lesser Rebirth Rune"] = { hidden = true, tags = { rune_lesser = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: Gain 10 Life per Enemy Killed\nArmour: Regenerate 0.25% of maximum Life per second", + implicit = "Martial Weapons: Gain 10 Life per Enemy Killed\nArmour: Regenerate 0.25% of maximum Life per second\nCaster: 12% increased Energy Shield Recharge Rate", req = { level = 21, }, } itemBases["Lesser Inspiration Rune"] = { @@ -264,7 +264,7 @@ itemBases["Lesser Inspiration Rune"] = { hidden = true, tags = { rune_lesser = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: Gain 8 Mana per Enemy Killed\nArmour: 12% increased Mana Regeneration Rate", + implicit = "Martial Weapons: Gain 8 Mana per Enemy Killed\nArmour: 12% increased Mana Regeneration Rate\nCaster: 16% increased Mana Regeneration Rate", req = { level = 21, }, } itemBases["Lesser Stone Rune"] = { @@ -272,7 +272,7 @@ itemBases["Lesser Stone Rune"] = { hidden = true, tags = { rune_lesser = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: Causes 20% increased Stun Buildup\nArmour: +30 to Stun Threshold", + implicit = "Martial Weapons: Causes 20% increased Stun Buildup\nArmour: +30 to Stun Threshold\nCaster: Gain additional Stun Threshold equal to 10% of maximum Energy Shield", req = { level = 16, }, } itemBases["Lesser Vision Rune"] = { @@ -280,7 +280,7 @@ itemBases["Lesser Vision Rune"] = { hidden = true, tags = { rune_lesser = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: +50 to Accuracy Rating\nArmour: 8% increased Life and Mana Recovery from Flasks", + implicit = "Martial Weapons: +50 to Accuracy Rating\nArmour: 8% increased Life and Mana Recovery from Flasks\nCaster: 16% increased Critical Hit Chance for Spells", req = { level = 16, }, } itemBases["Greater Desert Rune"] = { @@ -288,7 +288,7 @@ itemBases["Greater Desert Rune"] = { hidden = true, tags = { rune_greater = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: Adds 13 to 16 Fire Damage\nArmour: +14% to Fire Resistance", + implicit = "Martial Weapons: Adds 13 to 16 Fire Damage\nArmour: +14% to Fire Resistance\nCaster: Gain 12% of Damage as Extra Fire Damage", req = { level = 52, }, } itemBases["Greater Glacial Rune"] = { @@ -296,7 +296,7 @@ itemBases["Greater Glacial Rune"] = { hidden = true, tags = { rune_greater = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: Adds 9 to 15 Cold Damage\nArmour: +14% to Cold Resistance", + implicit = "Martial Weapons: Adds 9 to 15 Cold Damage\nArmour: +14% to Cold Resistance\nCaster: Gain 12% of Damage as Extra Cold Damage", req = { level = 52, }, } itemBases["Greater Storm Rune"] = { @@ -304,7 +304,7 @@ itemBases["Greater Storm Rune"] = { hidden = true, tags = { rune_greater = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: Adds 1 to 30 Lightning Damage\nArmour: +14% to Lightning Resistance", + implicit = "Martial Weapons: Adds 1 to 30 Lightning Damage\nArmour: +14% to Lightning Resistance\nCaster: Gain 12% of Damage as Extra Lightning Damage", req = { level = 52, }, } itemBases["Greater Iron Rune"] = { @@ -312,7 +312,7 @@ itemBases["Greater Iron Rune"] = { hidden = true, tags = { rune_greater = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: 25% increased Physical Damage\nArmour: 25% increased Armour, Evasion and Energy Shield", + implicit = "Martial Weapons: 25% increased Physical Damage\nArmour: 25% increased Armour, Evasion and Energy Shield\nCaster: 30% increased Spell Damage", req = { level = 52, }, } itemBases["Greater Body Rune"] = { @@ -320,7 +320,7 @@ itemBases["Greater Body Rune"] = { hidden = true, tags = { rune_greater = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: Leeches 3% of Physical Damage as Life\nArmour: +40 to maximum Life", + implicit = "Martial Weapons: Leeches 3% of Physical Damage as Life\nArmour: +40 to maximum Life\nCaster: +35 to maximum Energy Shield", req = { level = 57, }, } itemBases["Greater Mind Rune"] = { @@ -328,7 +328,7 @@ itemBases["Greater Mind Rune"] = { hidden = true, tags = { rune_greater = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: Leeches 2.5% of Physical Damage as Mana\nArmour: +35 to maximum Mana", + implicit = "Martial Weapons: Leeches 2.5% of Physical Damage as Mana\nArmour: +35 to maximum Mana\nCaster: +35 to maximum Mana", req = { level = 57, }, } itemBases["Greater Rebirth Rune"] = { @@ -336,7 +336,7 @@ itemBases["Greater Rebirth Rune"] = { hidden = true, tags = { rune_greater = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: Gain 30 Life per Enemy Killed\nArmour: Regenerate 0.35% of maximum Life per second", + implicit = "Martial Weapons: Gain 30 Life per Enemy Killed\nArmour: Regenerate 0.35% of maximum Life per second\nCaster: 18% increased Energy Shield Recharge Rate", req = { level = 62, }, } itemBases["Greater Inspiration Rune"] = { @@ -344,7 +344,7 @@ itemBases["Greater Inspiration Rune"] = { hidden = true, tags = { rune_greater = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: Gain 24 Mana per Enemy Killed\nArmour: 18% increased Mana Regeneration Rate", + implicit = "Martial Weapons: Gain 24 Mana per Enemy Killed\nArmour: 18% increased Mana Regeneration Rate\nCaster: 24% increased Mana Regeneration Rate", req = { level = 62, }, } itemBases["Greater Stone Rune"] = { @@ -352,7 +352,7 @@ itemBases["Greater Stone Rune"] = { hidden = true, tags = { rune_greater = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: Causes 30% increased Stun Buildup\nArmour: +50 to Stun Threshold", + implicit = "Martial Weapons: Causes 30% increased Stun Buildup\nArmour: +50 to Stun Threshold\nCaster: Gain additional Stun Threshold equal to 14% of maximum Energy Shield", req = { level = 59, }, } itemBases["Greater Vision Rune"] = { @@ -360,7 +360,7 @@ itemBases["Greater Vision Rune"] = { hidden = true, tags = { rune_greater = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: +110 to Accuracy Rating\nArmour: 12% increased Life and Mana Recovery from Flasks", + implicit = "Martial Weapons: +110 to Accuracy Rating\nArmour: 12% increased Life and Mana Recovery from Flasks\nCaster: 24% increased Critical Hit Chance for Spells", req = { level = 59, }, } itemBases["Lesser Robust Rune"] = { @@ -368,7 +368,7 @@ itemBases["Lesser Robust Rune"] = { hidden = true, tags = { rune_lesser = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: +6 to Strength\nArmour: +6 to Strength", + implicit = "Martial Weapons: +6 to Strength\nArmour: +6 to Strength\nCaster: +6 to Strength", req = { level = 5, }, } itemBases["Robust Rune"] = { @@ -376,7 +376,7 @@ itemBases["Robust Rune"] = { hidden = true, tags = { rune_normal = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: +8 to Strength\nArmour: +8 to Strength", + implicit = "Martial Weapons: +8 to Strength\nArmour: +8 to Strength\nCaster: +8 to Strength", req = { level = 31, }, } itemBases["Greater Robust Rune"] = { @@ -384,7 +384,7 @@ itemBases["Greater Robust Rune"] = { hidden = true, tags = { rune_greater = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: +10 to Strength\nArmour: +10 to Strength", + implicit = "Martial Weapons: +10 to Strength\nArmour: +10 to Strength\nCaster: +10 to Strength", req = { level = 52, }, } itemBases["Lesser Adept Rune"] = { @@ -392,7 +392,7 @@ itemBases["Lesser Adept Rune"] = { hidden = true, tags = { rune_lesser = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: +5 to Dexterity\nArmour: +6 to Dexterity", + implicit = "Martial Weapons: +5 to Dexterity\nArmour: +6 to Dexterity\nCaster: +6 to Dexterity", req = { level = 5, }, } itemBases["Adept Rune"] = { @@ -400,7 +400,7 @@ itemBases["Adept Rune"] = { hidden = true, tags = { rune_normal = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: +8 to Dexterity\nArmour: +8 to Dexterity", + implicit = "Martial Weapons: +8 to Dexterity\nArmour: +8 to Dexterity\nCaster: +8 to Dexterity", req = { level = 31, }, } itemBases["Greater Adept Rune"] = { @@ -408,7 +408,7 @@ itemBases["Greater Adept Rune"] = { hidden = true, tags = { rune_greater = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: +10 to Dexterity\nArmour: +10 to Dexterity", + implicit = "Martial Weapons: +10 to Dexterity\nArmour: +10 to Dexterity\nCaster: +10 to Dexterity", req = { level = 52, }, } itemBases["Lesser Resolve Rune"] = { @@ -416,7 +416,7 @@ itemBases["Lesser Resolve Rune"] = { hidden = true, tags = { rune_lesser = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: +6 to Intelligence\nArmour: +6 to Intelligence", + implicit = "Martial Weapons: +6 to Intelligence\nArmour: +6 to Intelligence\nCaster: +6 to Intelligence", req = { level = 5, }, } itemBases["Resolve Rune"] = { @@ -424,7 +424,7 @@ itemBases["Resolve Rune"] = { hidden = true, tags = { rune_normal = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: +8 to Intelligence\nArmour: +8 to Intelligence", + implicit = "Martial Weapons: +8 to Intelligence\nArmour: +8 to Intelligence\nCaster: +8 to Intelligence", req = { level = 31, }, } itemBases["Greater Resolve Rune"] = { @@ -432,7 +432,7 @@ itemBases["Greater Resolve Rune"] = { hidden = true, tags = { rune_greater = true, default = true, }, implicitModTypes = { }, - implicit = "Martial Weapons: +10 to Intelligence\nArmour: +10 to Intelligence", + implicit = "Martial Weapons: +10 to Intelligence\nArmour: +10 to Intelligence\nCaster: +10 to Intelligence", req = { level = 52, }, } itemBases["Lesser Tempered Rune"] = { diff --git a/src/Data/Bases/staff.lua b/src/Data/Bases/staff.lua index 8a3aa4aadf..fcb8182ec2 100644 --- a/src/Data/Bases/staff.lua +++ b/src/Data/Bases/staff.lua @@ -5,6 +5,7 @@ local itemBases = ... itemBases["Ashen Staff"] = { type = "Staff", quality = 20, + socketLimit = 3, tags = { no_physical_spell_mods = true, no_lightning_spell_mods = true, no_cold_spell_mods = true, no_chaos_spell_mods = true, staff = true, twohand = true, default = true, }, implicit = "Grants Skill: Level (1-20) Firebolt", implicitModTypes = { }, @@ -13,6 +14,7 @@ itemBases["Ashen Staff"] = { itemBases["Gelid Staff"] = { type = "Staff", quality = 20, + socketLimit = 3, tags = { no_fire_spell_mods = true, no_lightning_spell_mods = true, staff = true, no_physical_spell_mods = true, no_chaos_spell_mods = true, twohand = true, default = true, }, implicit = "Grants Skill: Level (1-20) Freezing Shards", implicitModTypes = { }, @@ -21,6 +23,7 @@ itemBases["Gelid Staff"] = { itemBases["Voltaic Staff"] = { type = "Staff", quality = 20, + socketLimit = 3, tags = { no_fire_spell_mods = true, no_physical_spell_mods = true, staff = true, no_chaos_spell_mods = true, no_cold_spell_mods = true, twohand = true, default = true, }, implicit = "Grants Skill: Level (1-20) Lightning Bolt", implicitModTypes = { }, @@ -29,6 +32,7 @@ itemBases["Voltaic Staff"] = { itemBases["Spriggan Staff"] = { type = "Staff", quality = 20, + socketLimit = 3, tags = { default = true, twohand = true, staff = true, }, implicit = "Grants Skill: Level (1-20) Firebolt", implicitModTypes = { }, @@ -37,6 +41,7 @@ itemBases["Spriggan Staff"] = { itemBases["Pyrophyte Staff"] = { type = "Staff", quality = 20, + socketLimit = 3, tags = { no_physical_spell_mods = true, no_lightning_spell_mods = true, no_cold_spell_mods = true, no_chaos_spell_mods = true, staff = true, twohand = true, default = true, }, implicit = "Grants Skill: Level (1-20) Living Bomb", implicitModTypes = { }, @@ -45,6 +50,7 @@ itemBases["Pyrophyte Staff"] = { itemBases["Chiming Staff"] = { type = "Staff", quality = 20, + socketLimit = 3, tags = { default = true, twohand = true, staff = true, }, implicit = "Grants Skill: Level (1-20) Sigil of Power", implicitModTypes = { }, @@ -53,6 +59,7 @@ itemBases["Chiming Staff"] = { itemBases["Rending Staff"] = { type = "Staff", quality = 20, + socketLimit = 3, tags = { no_fire_spell_mods = true, no_lightning_spell_mods = true, staff = true, no_physical_spell_mods = true, no_cold_spell_mods = true, twohand = true, default = true, }, implicit = "Grants Skill: Level (1-20) Soulrend", implicitModTypes = { }, @@ -61,6 +68,7 @@ itemBases["Rending Staff"] = { itemBases["Reaping Staff"] = { type = "Staff", quality = 20, + socketLimit = 3, tags = { no_fire_spell_mods = true, no_lightning_spell_mods = true, staff = true, no_chaos_spell_mods = true, no_cold_spell_mods = true, twohand = true, default = true, }, implicit = "Grants Skill: Level (1-20) Reap", implicitModTypes = { }, @@ -69,6 +77,7 @@ itemBases["Reaping Staff"] = { itemBases["Icicle Staff"] = { type = "Staff", quality = 20, + socketLimit = 3, tags = { no_fire_spell_mods = true, no_lightning_spell_mods = true, staff = true, no_physical_spell_mods = true, no_chaos_spell_mods = true, twohand = true, default = true, }, implicit = "Grants Skill: Level (1-20) Firebolt", implicitModTypes = { }, @@ -77,6 +86,7 @@ itemBases["Icicle Staff"] = { itemBases["Roaring Staff"] = { type = "Staff", quality = 20, + socketLimit = 3, tags = { default = true, twohand = true, staff = true, }, implicit = "Grants Skill: Level (1-20) Unleash", implicitModTypes = { }, @@ -85,6 +95,7 @@ itemBases["Roaring Staff"] = { itemBases["Paralysing Staff"] = { type = "Staff", quality = 20, + socketLimit = 3, tags = { no_fire_spell_mods = true, no_physical_spell_mods = true, staff = true, no_chaos_spell_mods = true, no_cold_spell_mods = true, twohand = true, default = true, }, implicit = "Grants Skill: Level (1-20) Shock Nova", implicitModTypes = { }, @@ -93,6 +104,7 @@ itemBases["Paralysing Staff"] = { itemBases["Cleric Staff"] = { type = "Staff", quality = 20, + socketLimit = 3, tags = { default = true, twohand = true, staff = true, }, implicit = "Grants Skill: Level (1-20) Consecrate", implicitModTypes = { }, @@ -101,6 +113,7 @@ itemBases["Cleric Staff"] = { itemBases["Dark Staff"] = { type = "Staff", quality = 20, + socketLimit = 3, tags = { default = true, twohand = true, staff = true, }, implicit = "Grants Skill: Level (1-20) Dark Pact", implicitModTypes = { }, diff --git a/src/Data/Bases/wand.lua b/src/Data/Bases/wand.lua index 6b8058e3c4..8ad7a63a7c 100644 --- a/src/Data/Bases/wand.lua +++ b/src/Data/Bases/wand.lua @@ -5,6 +5,7 @@ local itemBases = ... itemBases["Withered Wand"] = { type = "Wand", quality = 20, + socketLimit = 2, tags = { no_fire_spell_mods = true, onehand = true, wand = true, no_cold_spell_mods = true, no_lightning_spell_mods = true, no_physical_spell_mods = true, default = true, }, implicit = "Grants Skill: Level (1-20) Chaos Bolt", implicitModTypes = { }, @@ -13,6 +14,7 @@ itemBases["Withered Wand"] = { itemBases["Bone Wand"] = { type = "Wand", quality = 20, + socketLimit = 2, tags = { no_fire_spell_mods = true, onehand = true, wand = true, no_cold_spell_mods = true, no_lightning_spell_mods = true, no_chaos_spell_mods = true, default = true, }, implicit = "Grants Skill: Level (1-20) Bone Blast", implicitModTypes = { }, @@ -21,6 +23,7 @@ itemBases["Bone Wand"] = { itemBases["Attuned Wand"] = { type = "Wand", quality = 20, + socketLimit = 2, tags = { default = true, onehand = true, wand = true, }, implicit = "Grants Skill: Level (1-20) Mana Drain", implicitModTypes = { }, @@ -29,6 +32,7 @@ itemBases["Attuned Wand"] = { itemBases["Siphoning Wand"] = { type = "Wand", quality = 20, + socketLimit = 2, tags = { default = true, onehand = true, wand = true, }, implicit = "Grants Skill: Level (1-20) Power Siphon", implicitModTypes = { }, @@ -37,6 +41,7 @@ itemBases["Siphoning Wand"] = { itemBases["Volatile Wand"] = { type = "Wand", quality = 20, + socketLimit = 2, tags = { no_physical_spell_mods = true, onehand = true, no_cold_spell_mods = true, wand = true, no_lightning_spell_mods = true, no_chaos_spell_mods = true, default = true, }, implicit = "Grants Skill: Level (1-20) Volatile Dead", implicitModTypes = { }, @@ -45,6 +50,7 @@ itemBases["Volatile Wand"] = { itemBases["Galvanic Wand"] = { type = "Wand", quality = 20, + socketLimit = 2, tags = { no_fire_spell_mods = true, onehand = true, wand = true, no_physical_spell_mods = true, no_cold_spell_mods = true, no_chaos_spell_mods = true, default = true, }, implicit = "Grants Skill: Level (1-20) Galvanic Field", implicitModTypes = { }, @@ -53,6 +59,7 @@ itemBases["Galvanic Wand"] = { itemBases["Acrid Wand"] = { type = "Wand", quality = 20, + socketLimit = 2, tags = { default = true, onehand = true, wand = true, }, implicit = "Grants Skill: Level (1-20) Decompose", implicitModTypes = { }, @@ -61,6 +68,7 @@ itemBases["Acrid Wand"] = { itemBases["Offering Wand"] = { type = "Wand", quality = 20, + socketLimit = 2, tags = { no_fire_spell_mods = true, onehand = true, wand = true, no_cold_spell_mods = true, no_lightning_spell_mods = true, no_chaos_spell_mods = true, default = true, }, implicit = "Grants Skill: Level (1-20) Exsanguinate", implicitModTypes = { }, @@ -69,6 +77,7 @@ itemBases["Offering Wand"] = { itemBases["Frigid Wand"] = { type = "Wand", quality = 20, + socketLimit = 2, tags = { no_fire_spell_mods = true, onehand = true, wand = true, no_physical_spell_mods = true, no_lightning_spell_mods = true, no_chaos_spell_mods = true, default = true, }, implicit = "Grants Skill: Level (1-20) Chaos Bolt", implicitModTypes = { }, @@ -77,6 +86,7 @@ itemBases["Frigid Wand"] = { itemBases["Torture Wand"] = { type = "Wand", quality = 20, + socketLimit = 2, tags = { default = true, onehand = true, wand = true, }, implicit = "Grants Skill: Level (1-20) Chaos Bolt", implicitModTypes = { }, @@ -85,6 +95,7 @@ itemBases["Torture Wand"] = { itemBases["Critical Wand"] = { type = "Wand", quality = 20, + socketLimit = 2, tags = { default = true, onehand = true, wand = true, }, implicit = "Grants Skill: Level (1-20) Chaos Bolt", implicitModTypes = { }, @@ -93,6 +104,7 @@ itemBases["Critical Wand"] = { itemBases["Primordial Wand"] = { type = "Wand", quality = 20, + socketLimit = 2, tags = { no_fire_spell_mods = true, onehand = true, wand = true, no_cold_spell_mods = true, no_lightning_spell_mods = true, no_physical_spell_mods = true, default = true, }, implicit = "Grants Skill: Level (1-20) Wither", implicitModTypes = { }, @@ -101,6 +113,7 @@ itemBases["Primordial Wand"] = { itemBases["Dueling Wand"] = { type = "Wand", quality = 20, + socketLimit = 2, tags = { default = true, onehand = true, wand = true, }, implicit = "Grants Skill: Level (1-20) Chaos Bolt", implicitModTypes = { }, @@ -109,6 +122,7 @@ itemBases["Dueling Wand"] = { itemBases["Random Wand"] = { type = "Wand", hidden = true, + socketLimit = 2, tags = { wand = true, default = true, }, implicitModTypes = { }, req = { }, diff --git a/src/Data/ModRunes.lua b/src/Data/ModRunes.lua index b63fca478b..cfc18bf148 100644 --- a/src/Data/ModRunes.lua +++ b/src/Data/ModRunes.lua @@ -65,158 +65,197 @@ return { ["Desert Rune"] = { weapon = { type = "Rune", "Adds 7 to 11 Fire Damage", statOrder = { 825 }, }, armour = { type = "Rune", "+12% to Fire Resistance", statOrder = { 951 }, }, + caster = { type = "Rune", "Gain 10% of Damage as Extra Fire Damage", statOrder = { 849 }, }, }, ["Glacial Rune"] = { weapon = { type = "Rune", "Adds 6 to 10 Cold Damage", statOrder = { 826 }, }, armour = { type = "Rune", "+12% to Cold Resistance", statOrder = { 952 }, }, + caster = { type = "Rune", "Gain 10% of Damage as Extra Cold Damage", statOrder = { 851 }, }, }, ["Storm Rune"] = { weapon = { type = "Rune", "Adds 1 to 20 Lightning Damage", statOrder = { 827 }, }, armour = { type = "Rune", "+12% to Lightning Resistance", statOrder = { 953 }, }, + caster = { type = "Rune", "Gain 10% of Damage as Extra Lightning Damage", statOrder = { 853 }, }, }, ["Iron Rune"] = { weapon = { type = "Rune", "20% increased Physical Damage", statOrder = { 823 }, }, armour = { type = "Rune", "20% increased Armour, Evasion and Energy Shield", statOrder = { 1372 }, }, + caster = { type = "Rune", "25% increased Spell Damage", statOrder = { 855 }, }, }, ["Body Rune"] = { weapon = { type = "Rune", "Leeches 2.5% of Physical Damage as Life", statOrder = { 962 }, }, armour = { type = "Rune", "+30 to maximum Life", statOrder = { 872 }, }, + caster = { type = "Rune", "+30 to maximum Energy Shield", statOrder = { 870 }, }, }, ["Mind Rune"] = { weapon = { type = "Rune", "Leeches 2% of Physical Damage as Mana", statOrder = { 968 }, }, armour = { type = "Rune", "+25 to maximum Mana", statOrder = { 874 }, }, + caster = { type = "Rune", "+30 to maximum Mana", statOrder = { 874 }, }, }, ["Rebirth Rune"] = { weapon = { type = "Rune", "Gain 20 Life per Enemy Killed", statOrder = { 965 }, }, armour = { type = "Rune", "Regenerate 0.3% of maximum Life per second", statOrder = { 1629 }, }, + caster = { type = "Rune", "15% increased Energy Shield Recharge Rate", statOrder = { 957 }, }, }, ["Inspiration Rune"] = { weapon = { type = "Rune", "Gain 16 Mana per Enemy Killed", statOrder = { 970 }, }, armour = { type = "Rune", "15% increased Mana Regeneration Rate", statOrder = { 966 }, }, + caster = { type = "Rune", "20% increased Mana Regeneration Rate", statOrder = { 966 }, }, }, ["Stone Rune"] = { weapon = { type = "Rune", "Causes 25% increased Stun Buildup", statOrder = { 975 }, }, armour = { type = "Rune", "+40 to Stun Threshold", statOrder = { 985 }, }, + caster = { type = "Rune", "Gain additional Stun Threshold equal to 12% of maximum Energy Shield", statOrder = { 9072 }, }, }, ["Vision Rune"] = { weapon = { type = "Rune", "+80 to Accuracy Rating", statOrder = { 828 }, }, armour = { type = "Rune", "10% increased Life and Mana Recovery from Flasks", statOrder = { 6031 }, }, + caster = { type = "Rune", "20% increased Critical Hit Chance for Spells", statOrder = { 928 }, }, }, ["Lesser Desert Rune"] = { weapon = { type = "Rune", "Adds 4 to 6 Fire Damage", statOrder = { 825 }, }, armour = { type = "Rune", "+10% to Fire Resistance", statOrder = { 951 }, }, + caster = { type = "Rune", "Gain 8% of Damage as Extra Fire Damage", statOrder = { 849 }, }, }, ["Lesser Glacial Rune"] = { weapon = { type = "Rune", "Adds 3 to 5 Cold Damage", statOrder = { 826 }, }, armour = { type = "Rune", "+10% to Cold Resistance", statOrder = { 952 }, }, + caster = { type = "Rune", "Gain 8% of Damage as Extra Cold Damage", statOrder = { 851 }, }, }, ["Lesser Storm Rune"] = { weapon = { type = "Rune", "Adds 1 to 10 Lightning Damage", statOrder = { 827 }, }, armour = { type = "Rune", "+10% to Lightning Resistance", statOrder = { 953 }, }, + caster = { type = "Rune", "Gain 8% of Damage as Extra Lightning Damage", statOrder = { 853 }, }, }, ["Lesser Iron Rune"] = { weapon = { type = "Rune", "15% increased Physical Damage", statOrder = { 823 }, }, armour = { type = "Rune", "15% increased Armour, Evasion and Energy Shield", statOrder = { 1372 }, }, + caster = { type = "Rune", "20% increased Spell Damage", statOrder = { 855 }, }, }, ["Lesser Body Rune"] = { weapon = { type = "Rune", "Leeches 2% of Physical Damage as Life", statOrder = { 962 }, }, armour = { type = "Rune", "+20 to maximum Life", statOrder = { 872 }, }, + caster = { type = "Rune", "+25 to maximum Energy Shield", statOrder = { 870 }, }, }, ["Lesser Mind Rune"] = { weapon = { type = "Rune", "Leeches 1.5% of Physical Damage as Mana", statOrder = { 968 }, }, armour = { type = "Rune", "+15 to maximum Mana", statOrder = { 874 }, }, + caster = { type = "Rune", "+25 to maximum Mana", statOrder = { 874 }, }, }, ["Lesser Rebirth Rune"] = { weapon = { type = "Rune", "Gain 10 Life per Enemy Killed", statOrder = { 965 }, }, armour = { type = "Rune", "Regenerate 0.25% of maximum Life per second", statOrder = { 1629 }, }, + caster = { type = "Rune", "12% increased Energy Shield Recharge Rate", statOrder = { 957 }, }, }, ["Lesser Inspiration Rune"] = { weapon = { type = "Rune", "Gain 8 Mana per Enemy Killed", statOrder = { 970 }, }, armour = { type = "Rune", "12% increased Mana Regeneration Rate", statOrder = { 966 }, }, + caster = { type = "Rune", "16% increased Mana Regeneration Rate", statOrder = { 966 }, }, }, ["Lesser Stone Rune"] = { weapon = { type = "Rune", "Causes 20% increased Stun Buildup", statOrder = { 975 }, }, armour = { type = "Rune", "+30 to Stun Threshold", statOrder = { 985 }, }, + caster = { type = "Rune", "Gain additional Stun Threshold equal to 10% of maximum Energy Shield", statOrder = { 9072 }, }, }, ["Lesser Vision Rune"] = { weapon = { type = "Rune", "+50 to Accuracy Rating", statOrder = { 828 }, }, armour = { type = "Rune", "8% increased Life and Mana Recovery from Flasks", statOrder = { 6031 }, }, + caster = { type = "Rune", "16% increased Critical Hit Chance for Spells", statOrder = { 928 }, }, }, ["Greater Desert Rune"] = { weapon = { type = "Rune", "Adds 13 to 16 Fire Damage", statOrder = { 825 }, }, armour = { type = "Rune", "+14% to Fire Resistance", statOrder = { 951 }, }, + caster = { type = "Rune", "Gain 12% of Damage as Extra Fire Damage", statOrder = { 849 }, }, }, ["Greater Glacial Rune"] = { weapon = { type = "Rune", "Adds 9 to 15 Cold Damage", statOrder = { 826 }, }, armour = { type = "Rune", "+14% to Cold Resistance", statOrder = { 952 }, }, + caster = { type = "Rune", "Gain 12% of Damage as Extra Cold Damage", statOrder = { 851 }, }, }, ["Greater Storm Rune"] = { weapon = { type = "Rune", "Adds 1 to 30 Lightning Damage", statOrder = { 827 }, }, armour = { type = "Rune", "+14% to Lightning Resistance", statOrder = { 953 }, }, + caster = { type = "Rune", "Gain 12% of Damage as Extra Lightning Damage", statOrder = { 853 }, }, }, ["Greater Iron Rune"] = { weapon = { type = "Rune", "25% increased Physical Damage", statOrder = { 823 }, }, armour = { type = "Rune", "25% increased Armour, Evasion and Energy Shield", statOrder = { 1372 }, }, + caster = { type = "Rune", "30% increased Spell Damage", statOrder = { 855 }, }, }, ["Greater Body Rune"] = { weapon = { type = "Rune", "Leeches 3% of Physical Damage as Life", statOrder = { 962 }, }, armour = { type = "Rune", "+40 to maximum Life", statOrder = { 872 }, }, + caster = { type = "Rune", "+35 to maximum Energy Shield", statOrder = { 870 }, }, }, ["Greater Mind Rune"] = { weapon = { type = "Rune", "Leeches 2.5% of Physical Damage as Mana", statOrder = { 968 }, }, armour = { type = "Rune", "+35 to maximum Mana", statOrder = { 874 }, }, + caster = { type = "Rune", "+35 to maximum Mana", statOrder = { 874 }, }, }, ["Greater Rebirth Rune"] = { weapon = { type = "Rune", "Gain 30 Life per Enemy Killed", statOrder = { 965 }, }, armour = { type = "Rune", "Regenerate 0.35% of maximum Life per second", statOrder = { 1629 }, }, + caster = { type = "Rune", "18% increased Energy Shield Recharge Rate", statOrder = { 957 }, }, }, ["Greater Inspiration Rune"] = { weapon = { type = "Rune", "Gain 24 Mana per Enemy Killed", statOrder = { 970 }, }, armour = { type = "Rune", "18% increased Mana Regeneration Rate", statOrder = { 966 }, }, + caster = { type = "Rune", "24% increased Mana Regeneration Rate", statOrder = { 966 }, }, }, ["Greater Stone Rune"] = { weapon = { type = "Rune", "Causes 30% increased Stun Buildup", statOrder = { 975 }, }, armour = { type = "Rune", "+50 to Stun Threshold", statOrder = { 985 }, }, + caster = { type = "Rune", "Gain additional Stun Threshold equal to 14% of maximum Energy Shield", statOrder = { 9072 }, }, }, ["Greater Vision Rune"] = { weapon = { type = "Rune", "+110 to Accuracy Rating", statOrder = { 828 }, }, armour = { type = "Rune", "12% increased Life and Mana Recovery from Flasks", statOrder = { 6031 }, }, + caster = { type = "Rune", "24% increased Critical Hit Chance for Spells", statOrder = { 928 }, }, }, ["Lesser Robust Rune"] = { weapon = { type = "Rune", "+6 to Strength", statOrder = { 940 }, }, armour = { type = "Rune", "+6 to Strength", statOrder = { 940 }, }, + caster = { type = "Rune", "+6 to Strength", statOrder = { 940 }, }, }, ["Robust Rune"] = { weapon = { type = "Rune", "+8 to Strength", statOrder = { 940 }, }, armour = { type = "Rune", "+8 to Strength", statOrder = { 940 }, }, + caster = { type = "Rune", "+8 to Strength", statOrder = { 940 }, }, }, ["Greater Robust Rune"] = { weapon = { type = "Rune", "+10 to Strength", statOrder = { 940 }, }, armour = { type = "Rune", "+10 to Strength", statOrder = { 940 }, }, + caster = { type = "Rune", "+10 to Strength", statOrder = { 940 }, }, }, ["Lesser Adept Rune"] = { weapon = { type = "Rune", "+5 to Dexterity", statOrder = { 941 }, }, armour = { type = "Rune", "+6 to Dexterity", statOrder = { 941 }, }, + caster = { type = "Rune", "+6 to Dexterity", statOrder = { 941 }, }, }, ["Adept Rune"] = { weapon = { type = "Rune", "+8 to Dexterity", statOrder = { 941 }, }, armour = { type = "Rune", "+8 to Dexterity", statOrder = { 941 }, }, + caster = { type = "Rune", "+8 to Dexterity", statOrder = { 941 }, }, }, ["Greater Adept Rune"] = { weapon = { type = "Rune", "+10 to Dexterity", statOrder = { 941 }, }, armour = { type = "Rune", "+10 to Dexterity", statOrder = { 941 }, }, + caster = { type = "Rune", "+10 to Dexterity", statOrder = { 941 }, }, }, ["Lesser Resolve Rune"] = { weapon = { type = "Rune", "+6 to Intelligence", statOrder = { 942 }, }, armour = { type = "Rune", "+6 to Intelligence", statOrder = { 942 }, }, + caster = { type = "Rune", "+6 to Intelligence", statOrder = { 942 }, }, }, ["Resolve Rune"] = { weapon = { type = "Rune", "+8 to Intelligence", statOrder = { 942 }, }, armour = { type = "Rune", "+8 to Intelligence", statOrder = { 942 }, }, + caster = { type = "Rune", "+8 to Intelligence", statOrder = { 942 }, }, }, ["Greater Resolve Rune"] = { weapon = { type = "Rune", "+10 to Intelligence", statOrder = { 942 }, }, armour = { type = "Rune", "+10 to Intelligence", statOrder = { 942 }, }, + caster = { type = "Rune", "+10 to Intelligence", statOrder = { 942 }, }, }, ["Lesser Tempered Rune"] = { weapon = { type = "Rune", "Adds 3 to 4 Physical Damage", statOrder = { 824 }, }, diff --git a/src/Export/Bases/sceptre.txt b/src/Export/Bases/sceptre.txt index fd398e8ee4..dc39d6d231 100644 --- a/src/Export/Bases/sceptre.txt +++ b/src/Export/Bases/sceptre.txt @@ -2,15 +2,18 @@ local itemBases = ... #type Sceptre +#socketLimit 2 #baseMatch Metadata/Items/Weapons/OneHandWeapons/Sceptres/FourSceptre%d+ #forceHide true +#socketLimit 2 #baseMatch Metadata/Items/Weapons/OneHandWeapons/Sceptres/FourSceptre6a #baseMatch Metadata/Items/Weapons/OneHandWeapons/Sceptres/FourSceptre6b #baseMatch Metadata/Items/Weapons/OneHandWeapons/Sceptres/FourSceptre6c #forceHide false #forceShow true +#socketLimit 2 #base Metadata/Items/Weapons/OneHandWeapons/Sceptres/FourSceptre6a Shrine Sceptre (Purity of Fire) #base Metadata/Items/Weapons/OneHandWeapons/Sceptres/FourSceptre6b Shrine Sceptre (Purity of Cold) #base Metadata/Items/Weapons/OneHandWeapons/Sceptres/FourSceptre6c Shrine Sceptre (Purity of Lighting) diff --git a/src/Export/Bases/staff.txt b/src/Export/Bases/staff.txt index 0e3bc030cf..27ddc82bdc 100644 --- a/src/Export/Bases/staff.txt +++ b/src/Export/Bases/staff.txt @@ -2,6 +2,7 @@ local itemBases = ... #type Staff +#socketLimit 3 #baseMatch BaseType Metadata/Items/Staves/AbstractStaff #type Staff diff --git a/src/Export/Bases/wand.txt b/src/Export/Bases/wand.txt index 969fbd1335..0f97e246c8 100644 --- a/src/Export/Bases/wand.txt +++ b/src/Export/Bases/wand.txt @@ -2,4 +2,5 @@ local itemBases = ... #type Wand +#socketLimit 2 #baseMatch Metadata/Items/Weapons/OneHandWeapons/Wands/FourWand diff --git a/src/Export/Scripts/bases.lua b/src/Export/Scripts/bases.lua index cc1ade3dfb..04319d38b9 100644 --- a/src/Export/Scripts/bases.lua +++ b/src/Export/Scripts/bases.lua @@ -270,14 +270,22 @@ directiveTable.base = function(state, args, out) local statValue = soulcore["StatsValuesWeapon"][i] stats[statKey.Id] = { min = statValue, max = statValue } end - out:write('"Martial Weapons: ', table.concat(describeStats(stats), '", "'), '\\n') + out:write('"Martial Weapons: ', table.concat(describeStats(stats), '", "')) stats = { } -- reset stats to empty for i, statKey in ipairs(soulcore.StatsKeysArmour) do local statValue = soulcore["StatsValuesArmour"][i] stats[statKey.Id] = { min = statValue, max = statValue } end - out:write('Armour: ', table.concat(describeStats(stats), '", "'), '"') - out:write(',\n') + out:write('\\nArmour: ', table.concat(describeStats(stats), '", "')) + stats = { } -- reset stats to empty + for i, statKey in ipairs(soulcore.StatsKeysCaster) do + local statValue = soulcore["StatsValuesCaster"][i] + stats[statKey.Id] = { min = statValue, max = statValue } + end + if next(stats) then + out:write('\\nCaster: ', table.concat(describeStats(stats), '", "')) + end + out:write('",\n') end end out:write('\treq = { ') diff --git a/src/Export/Scripts/soulcores.lua b/src/Export/Scripts/soulcores.lua index 4c7b327135..71b44e195f 100644 --- a/src/Export/Scripts/soulcores.lua +++ b/src/Export/Scripts/soulcores.lua @@ -65,6 +65,16 @@ directiveTable.base = function(state, args, out) end out:write("\t\tarmour = ") writeStats(stats, out) + stats = { } -- reset stats to empty + for i, statKey in ipairs(soulcore.StatsKeysCaster) do + local statValue = soulcore["StatsValuesCaster"][i] + stats[statKey.Id] = { min = statValue, max = statValue } + end + if next(stats) then + out:write("\t\tcaster = ") + writeStats(stats, out) + end + out:write('\t},\n') end