diff --git a/src/Classes/TradeQuery.lua b/src/Classes/TradeQuery.lua index d7ad205284..14fd688222 100644 --- a/src/Classes/TradeQuery.lua +++ b/src/Classes/TradeQuery.lua @@ -469,7 +469,11 @@ Highest Weight - Displays the order retrieved from trade]] end end table.sort(activeSocketList) + local activeUniqueJewelSocket for _, nodeId in ipairs(activeSocketList) do + if not activeUniqueJewelSocket and not self.itemsTab.build.spec.nodes[nodeId].containJewelSocket then + activeUniqueJewelSocket = nodeId + end t_insert(slotTables, { slotName = self.itemsTab.sockets[nodeId].label, nodeId = nodeId }) end @@ -525,7 +529,7 @@ Highest Weight - Displays the order retrieved from trade]] return hideRowFunc(self, #slotTables+1) end local row_count = #slotTables + 1 - self.slotTables[row_count] = { slotName = "Megalomaniac", unique = true, alreadyCorrupted = true } + self.slotTables[row_count] = { slotName = "Megalomaniac", unique = true, alreadyCorrupted = true, selectedJewelNodeId = activeUniqueJewelSocket } self:PriceItemRowDisplay(row_count, top_pane_alignment_ref, row_vertical_padding, row_height) self.controls["name"..row_count].y = self.controls["name"..row_count].y + (row_height + row_vertical_padding) -- Megalomaniac needs to drop an extra row for "Other Trades" self.controls["name"..row_count].shown = function() @@ -533,7 +537,7 @@ Highest Weight - Displays the order retrieved from trade]] end row_count = row_count + 1 - self.slotTables[row_count] = { slotName = "Heart of the Well", unique = true, selectedJewelNodeId = activeSocketList[1] } + self.slotTables[row_count] = { slotName = "Heart of the Well", unique = true, selectedJewelNodeId = activeUniqueJewelSocket } self:PriceItemRowDisplay(row_count, top_pane_alignment_ref, row_vertical_padding, row_height) self.controls["name"..row_count].y = self.controls["name"..row_count].y + (row_height + row_vertical_padding) self.controls["name"..row_count].shown = function() @@ -541,7 +545,7 @@ Highest Weight - Displays the order retrieved from trade]] end row_count = row_count + 1 - self.slotTables[row_count] = { slotName = "Against the Darkness", unique = true, selectedJewelNodeId = activeSocketList[1] } + self.slotTables[row_count] = { slotName = "Against the Darkness", unique = true, selectedJewelNodeId = activeUniqueJewelSocket } self:PriceItemRowDisplay(row_count, top_pane_alignment_ref, row_vertical_padding, row_height) self.controls["name"..row_count].y = self.controls["name"..row_count].y + (row_height + row_vertical_padding) self.controls["name"..row_count].shown = function() @@ -798,7 +802,7 @@ function TradeQueryClass:GetResultEvaluation(row_idx, result_index, calcFunc, ba local slotTbl = self.slotTables[row_idx] local jewelNodeId = slotTbl.nodeId or slotTbl.selectedJewelNodeId local slotName = jewelNodeId and "Jewel " .. tostring(jewelNodeId) or slotTbl.slotName - if slotName == "Megalomaniac" then + if slotTbl.slotName == "Megalomaniac" then local addedNodes = {} for nodeName in (result.item_string.."\r\n"):gmatch("Allocates (.-)\r?\n") do local node = self.itemsTab.build.spec.tree.notableMap[nodeName:lower()] @@ -852,14 +856,22 @@ function TradeQueryClass:UpdateControlsWithItems(row_idx) end self.sortedResultTbl[row_idx] = sortedItems - local pb_index = self.sortedResultTbl[row_idx][1].index + if not sortedItems[1] then + self.itemIndexTbl[row_idx] = nil + self.totalPrice[row_idx] = nil + self.controls.fullPrice.label = "Total Price: " .. self:GetTotalPriceString() + self:UpdateDropdownList(row_idx) + self:SetNotice(self.controls.pbNotice, "^4No compatible items found for this slot.") + return + end + local pb_index = sortedItems[1].index self.itemIndexTbl[row_idx] = pb_index self.controls["priceButton".. row_idx].tooltipText = "Sorted by " .. self.itemSortSelectionList[self.pbItemSortSelectionIndex] self.totalPrice[row_idx] = { currency = self.resultTbl[row_idx][pb_index].currency, amount = self.resultTbl[row_idx][pb_index].amount, } - self.controls.fullPrice.label = "Total Price: " .. self:GetTotalPriceString() + self.controls.fullPrice.label = "^7Total Price: " .. self:GetTotalPriceString() self:UpdateDropdownList(row_idx) end @@ -870,7 +882,7 @@ function TradeQueryClass:SetFetchResultReturn(row_idx, index) currency = self.resultTbl[row_idx][index].currency, amount = self.resultTbl[row_idx][index].amount, } - self.controls.fullPrice.label = "Total Price: " .. self:GetTotalPriceString() + self.controls.fullPrice.label = "^7Total Price: " .. self:GetTotalPriceString() end end @@ -950,15 +962,34 @@ function TradeQueryClass:SortFetchResults(row_idx, mode) return newTbl end +-- ensure we only take in items that parse properly to avoid crash issues and fit in the +-- provided slotName +---@param itemEntries table +---@param slotName string +function TradeQueryClass:FilterToSafeItems(itemEntries, slotName) + local itemsSafe = {} + for _, entry in ipairs(itemEntries) do + local item = new("Item", entry.item_string) + if item.base and ((not slotName) or self.itemsTab:IsItemValidForSlot(item, slotName)) then + t_insert(itemsSafe, entry) + end + end + return itemsSafe +end -- Method to generate pane elements for each item slot function TradeQueryClass:PriceItemRowDisplay(row_idx, top_pane_alignment_ref, row_vertical_padding, row_height) local controls = self.controls local slotTbl = self.slotTables[row_idx] local activeSlotRef = slotTbl.nodeId and self.itemsTab.activeItemSet[slotTbl.nodeId] or self.itemsTab.activeItemSet[slotTbl.slotName] - local activeSlot = slotTbl.nodeId and self.itemsTab.sockets[slotTbl.nodeId] or + local nodeId = slotTbl.nodeId or slotTbl.selectedJewelNodeId + local activeSlot = nodeId and self.itemsTab.sockets[nodeId] or slotTbl.slotName and (self.itemsTab.slots[slotTbl.slotName] or slotTbl.slotName == "Watcher's Eye" and self:findValidSlotForWatchersEye() or slotTbl.fullName and self.itemsTab.slots[slotTbl.fullName]) -- fullName for Abyssal Sockets + local function getSelectedSlot() + local selectedNodeId = slotTbl.nodeId or slotTbl.selectedJewelNodeId + return selectedNodeId and self.itemsTab.sockets[selectedNodeId] or activeSlot + end local nameColor = slotTbl.unique and colorCodes.UNIQUE or "^7" controls["name"..row_idx] = new("LabelControl", top_pane_alignment_ref, {0, row_idx*(row_height + row_vertical_padding), 135, row_height - 4}, nameColor..slotTbl.slotName) controls["bestButton"..row_idx] = new("ButtonControl", { "LEFT", controls["name"..row_idx], "LEFT"}, {135 + 8, 0, 80, row_height}, "Find best", function() @@ -987,14 +1018,8 @@ function TradeQueryClass:PriceItemRowDisplay(row_idx, top_pane_alignment_ref, ro self:SetNotice(context.controls.pbNotice, "") end - -- ensure we only take in items that parse properly to avoid crash issues. - local itemsSafe = {} - for _, entry in ipairs(items) do - local item = new("Item", entry.item_string) - if item.base then - t_insert(itemsSafe, entry) - end - end + local selectedSlot = getSelectedSlot() + local itemsSafe = self:FilterToSafeItems(items, selectedSlot and selectedSlot.slotName) if self.tradeQueryGenerator.lastAugmentBehaviour == "Copy Current" or self.tradeQueryGenerator.lastAnointBehaviour == "Copy Current" then for i, _ in ipairs(itemsSafe) do @@ -1079,7 +1104,9 @@ you can add them, copy the link here, and press "Price Item" to evaluate the ite else self:SetNotice(controls.pbNotice, "") self.lastQueries[row_idx] = query - self.resultTbl[row_idx] = items + local selectedSlot = getSelectedSlot() + local itemsSafe = self:FilterToSafeItems(items, selectedSlot and selectedSlot.slotName) + self.resultTbl[row_idx] = itemsSafe self:UpdateControlsWithItems(row_idx) end controls["priceButton"..row_idx].label = "Price Item" @@ -1090,7 +1117,7 @@ you can add them, copy the link here, and press "Price Item" to evaluate the ite local validURL = controls["uri"..row_idx].validURL local isSearching = controls["priceButton"..row_idx].label == "Searching..." local selectedJewelSlot = slotTbl.selectedJewelNodeId and self.itemsTab.sockets[slotTbl.selectedJewelNodeId] - local hasRequiredJewelSlot = not slotTbl.unique or slotTbl.slotName == "Megalomaniac" or selectedJewelSlot and not selectedJewelSlot.inactive + local hasRequiredJewelSlot = not slotTbl.unique or selectedJewelSlot and not selectedJewelSlot.inactive return isAuthorized and validURL and not isSearching and hasRequiredJewelSlot end controls["priceButton"..row_idx].tooltipFunc = function(tooltip) @@ -1099,8 +1126,7 @@ you can add them, copy the link here, and press "Price Item" to evaluate the ite tooltip:AddLine(16, "You must log in to use the search feature") elseif not controls["uri"..row_idx].validURL then tooltip:AddLine(16, "Enter a valid trade URL") - elseif slotTbl.unique and slotTbl.slotName ~= "Megalomaniac" - and (not slotTbl.selectedJewelNodeId or not self.itemsTab.sockets[slotTbl.selectedJewelNodeId] or self.itemsTab.sockets[slotTbl.selectedJewelNodeId].inactive) then + elseif slotTbl.unique and (not slotTbl.selectedJewelNodeId or not self.itemsTab.sockets[slotTbl.selectedJewelNodeId] or self.itemsTab.sockets[slotTbl.selectedJewelNodeId].inactive) then tooltip:AddLine(16, "Requires an active Jewel Socket") end end @@ -1112,7 +1138,7 @@ you can add them, copy the link here, and press "Price Item" to evaluate the ite self.sortedResultTbl[row_idx] = nil self.resultTbl[row_idx] = nil self.totalPrice[row_idx] = nil - self.controls.fullPrice.label = "Total Price: " .. self:GetTotalPriceString() + self.controls.fullPrice.label = "^7Total Price: " .. self:GetTotalPriceString() end) controls["changeButton"..row_idx].shown = function() return self.resultTbl[row_idx] end controls["resultDropdown"..row_idx] = new("DropDownControl", { "TOPLEFT", controls["changeButton"..row_idx], "TOPRIGHT"}, {8, 0, 351, row_height}, {}, function(index) diff --git a/src/Classes/TradeQueryGenerator.lua b/src/Classes/TradeQueryGenerator.lua index fb62cd748f..ee5b5f23fa 100644 --- a/src/Classes/TradeQueryGenerator.lua +++ b/src/Classes/TradeQueryGenerator.lua @@ -399,6 +399,9 @@ function TradeQueryGeneratorClass:InitMods() for catIdx, _ in ipairs(body.result) do table.sort(body.result[catIdx].entries, function(a, b) + if a.text == b.text then + return a.id < b.id + end return a.text < b.text end) end @@ -1162,10 +1165,10 @@ Remove: anoints are completely ignored, and removed from items.]] options.special = { itemName = context.slotTbl.slotName } end - if context.slotTbl.slotName == "Heart of the Well" or context.slotTbl.slotName == "Against the Darkness" then + if context.slotTbl.slotName == "Megalomaniac" or context.slotTbl.slotName == "Heart of the Well" or context.slotTbl.slotName == "Against the Darkness" then local activeSocketList = { } for nodeId, jewelSlot in pairs(self.itemsTab.sockets) do - if not jewelSlot.inactive then + if not jewelSlot.inactive and not self.itemsTab.build.spec.nodes[nodeId].containJewelSocket then t_insert(activeSocketList, jewelSlot) end end @@ -1184,7 +1187,7 @@ Remove: anoints are completely ignored, and removed from items.]] end - if isJewelSlot then + if isJewelSlot and not context.slotTbl.unique then controls.jewelType = new("DropDownControl", {"TOPLEFT",lastItemAnchor,"BOTTOMLEFT"}, {0, 5, 100, 18}, { "Base", "Radius" }, function(index, value) end) controls.jewelType.selIndex = self.lastJewelType or 1 controls.jewelTypeLabel = new("LabelControl", {"RIGHT",controls.jewelType,"LEFT"}, {-5, 0, 0, 16}, "Jewel Type:") diff --git a/src/Classes/TradeQueryRequests.lua b/src/Classes/TradeQueryRequests.lua index 5f714af4d7..8a042c3670 100644 --- a/src/Classes/TradeQueryRequests.lua +++ b/src/Classes/TradeQueryRequests.lua @@ -398,25 +398,22 @@ function TradeQueryRequestsClass:FetchResultBlock(url, callback) t_insert(rawLines, "Implicits: " .. (#item.enchantMods + #item.runeMods + #item.implicitMods)) for _, modLine in ipairs(item.enchantMods) do - t_insert(rawLines, "{enchant}" .. escapeGGGString(modLine)) + t_insert(rawLines, "{enchant}" .. escapeGGGString(modLine)) end for _, modLine in ipairs(item.runeMods) do - t_insert(rawLines, "{enchant}{rune}" .. escapeGGGString(modLine)) + t_insert(rawLines, "{enchant}{rune}" .. escapeGGGString(modLine)) end for _, modLine in ipairs(item.implicitMods) do t_insert(rawLines, escapeGGGString(modLine)) end - for _, modLine in ipairs(item.fracturedMods) do - t_insert(rawLines, "{fractured}" .. escapeGGGString(modLine)) - end for _, modLine in ipairs(item.explicitMods) do - t_insert(rawLines, escapeGGGString(modLine)) - end - for _, modLine in ipairs(item.desecratedMods) do - t_insert(rawLines, "{desecrated}" .. escapeGGGString(modLine)) - end - for _, modLine in ipairs(item.craftedMods) do - t_insert(rawLines, "{crafted}" .. escapeGGGString(modLine)) + local s = "" + for flagName, flag in pairs(modLine.flags or {}) do + if flag then + s = s .. string.format("{%s}", flagName) + end + end + t_insert(rawLines, s .. escapeGGGString(modLine.description)) end if item.mirrored then t_insert(rawLines, "Mirrored") diff --git a/src/Data/QueryMods.lua b/src/Data/QueryMods.lua index 0ffdec27f3..489cdff37a 100644 --- a/src/Data/QueryMods.lua +++ b/src/Data/QueryMods.lua @@ -27696,18 +27696,10 @@ return { ["max"] = 300, ["min"] = 100, }, - ["2HWeapon"] = { - ["max"] = 50, - ["min"] = 30, - }, ["Amulet"] = { ["max"] = 40, ["min"] = 30, }, - ["Quarterstaff"] = { - ["max"] = 50, - ["min"] = 30, - }, ["Wand"] = { ["max"] = 300, ["min"] = 300, @@ -27767,20 +27759,6 @@ return { ["type"] = "implicit", }, }, - ["3489782002"] = { - ["Amulet"] = { - ["max"] = 30, - ["min"] = 20, - }, - ["specialCaseData"] = { - }, - ["tradeMod"] = { - ["id"] = "implicit.stat_3489782002", - ["text"] = "# to maximum Energy Shield", - ["type"] = "implicit", - }, - ["usePositiveSign"] = true, - }, ["3544800472"] = { ["Chest"] = { ["max"] = 40, @@ -28248,10 +28226,18 @@ return { }, }, ["774059442"] = { + ["2HWeapon"] = { + ["max"] = 50, + ["min"] = 30, + }, ["Chest"] = { ["max"] = 1000, ["min"] = 750, }, + ["Quarterstaff"] = { + ["max"] = 50, + ["min"] = 30, + }, ["specialCaseData"] = { }, ["tradeMod"] = { @@ -29900,6 +29886,23 @@ return { ["type"] = "augment", }, }, + ["1936645603"] = { + ["2HWeapon"] = { + ["max"] = 30, + ["min"] = 30, + }, + ["Staff"] = { + ["max"] = 30, + ["min"] = 30, + }, + ["specialCaseData"] = { + }, + ["tradeMod"] = { + ["id"] = "rune.stat_1936645603", + ["text"] = "Gain #% of Physical Damage as Extra Fire Damage", + ["type"] = "augment", + }, + }, ["1937310173"] = { ["Chest"] = { ["max"] = 50, @@ -30996,6 +30999,19 @@ return { ["type"] = "augment", }, }, + ["258955603"] = { + ["Helmet"] = { + ["max"] = 20, + ["min"] = 20, + }, + ["specialCaseData"] = { + }, + ["tradeMod"] = { + ["id"] = "rune.stat_258955603", + ["text"] = "Alternating every 5 seconds:Take #% more Damage from HitsTake #% more Damage over time", + ["type"] = "augment", + }, + }, ["2608793552"] = { ["1HMace"] = { ["max"] = 15, @@ -32971,6 +32987,19 @@ return { ["type"] = "augment", }, }, + ["352044736"] = { + ["Helmet"] = { + ["max"] = 1, + ["min"] = 1, + }, + ["specialCaseData"] = { + }, + ["tradeMod"] = { + ["id"] = "rune.stat_352044736", + ["text"] = "Every Rage also grants #% increased Stun Threshold", + ["type"] = "augment", + }, + }, ["3523867985"] = { ["Boots"] = { ["max"] = 20, diff --git a/src/Data/TradeSiteStats.lua b/src/Data/TradeSiteStats.lua index 5fb3dd49fa..770c2b1ae4 100644 --- a/src/Data/TradeSiteStats.lua +++ b/src/Data/TradeSiteStats.lua @@ -587,12 +587,12 @@ return { ["type"] = "explicit", }, { - ["id"] = "explicit.stat_2897413282", + ["id"] = "explicit.stat_1379411836", ["text"] = "# to all Attributes", ["type"] = "explicit", }, { - ["id"] = "explicit.stat_1379411836", + ["id"] = "explicit.stat_2897413282", ["text"] = "# to all Attributes", ["type"] = "explicit", }, @@ -906,6 +906,11 @@ return { ["text"] = "#% chance to gain Nature's Archon when your Plants Overgrow", ["type"] = "explicit", }, + { + ["id"] = "explicit.stat_3451259830", + ["text"] = "#% chance to gain Onslaught for 3 seconds when you kill an enemy affected by Abyssal Wasting", + ["type"] = "explicit", + }, { ["id"] = "explicit.stat_1881230714", ["text"] = "#% chance to gain Onslaught on Killing Hits with this Weapon", @@ -946,6 +951,11 @@ return { ["text"] = "#% chance to inflict Exposure on Hit", ["type"] = "explicit", }, + { + ["id"] = "explicit.stat_2614251226", + ["text"] = "#% chance to inflict Withered with Hits against targets affected by Abyssal Wasting", + ["type"] = "explicit", + }, { ["id"] = "explicit.stat_3823990000", ["text"] = "#% chance to load a bolt into all Crossbow skills on Kill", @@ -956,6 +966,11 @@ return { ["text"] = "#% chance to not destroy Corpses when Consuming Corpses", ["type"] = "explicit", }, + { + ["id"] = "explicit.stat_19819865", + ["text"] = "#% chance to revive one of your Persistent Minions when you kill an enemy affected by Abyssal Wasting", + ["type"] = "explicit", + }, { ["id"] = "explicit.stat_1949851472", ["text"] = "#% chance when a Charm is used to use another Charm without consuming Charges", @@ -1797,12 +1812,12 @@ return { ["type"] = "explicit", }, { - ["id"] = "explicit.stat_57434274", + ["id"] = "explicit.stat_3666934677", ["text"] = "#% increased Experience gain", ["type"] = "explicit", }, { - ["id"] = "explicit.stat_3666934677", + ["id"] = "explicit.stat_57434274", ["text"] = "#% increased Experience gain", ["type"] = "explicit", }, @@ -2006,6 +2021,11 @@ return { ["text"] = "#% increased Immobilisation buildup", ["type"] = "explicit", }, + { + ["id"] = "explicit.stat_3893409915", + ["text"] = "#% increased Immobilisation buildup against targets affected by Abyssal Wasting", + ["type"] = "explicit", + }, { ["id"] = "explicit.stat_656461285", ["text"] = "#% increased Intelligence", @@ -2477,12 +2497,12 @@ return { ["type"] = "explicit", }, { - ["id"] = "explicit.stat_2261942307", + ["id"] = "explicit.stat_1602191394", ["text"] = "#% increased Rarity of Items foundYour other Modifiers to Rarity of Items found do not apply", ["type"] = "explicit", }, { - ["id"] = "explicit.stat_1602191394", + ["id"] = "explicit.stat_2261942307", ["text"] = "#% increased Rarity of Items foundYour other Modifiers to Rarity of Items found do not apply", ["type"] = "explicit", }, @@ -2632,12 +2652,12 @@ return { ["type"] = "explicit", }, { - ["id"] = "explicit.stat_3984865854", + ["id"] = "explicit.stat_1416406066", ["text"] = "#% increased Spirit", ["type"] = "explicit", }, { - ["id"] = "explicit.stat_1416406066", + ["id"] = "explicit.stat_3984865854", ["text"] = "#% increased Spirit", ["type"] = "explicit", }, @@ -4117,12 +4137,12 @@ return { ["type"] = "explicit", }, { - ["id"] = "explicit.stat_448592698|199", + ["id"] = "explicit.stat_448592698|186", ["text"] = "+# to Level of all Herald of Blood Skills", ["type"] = "explicit", }, { - ["id"] = "explicit.stat_448592698|186", + ["id"] = "explicit.stat_448592698|199", ["text"] = "+# to Level of all Herald of Blood Skills", ["type"] = "explicit", }, @@ -4522,12 +4542,12 @@ return { ["type"] = "explicit", }, { - ["id"] = "explicit.stat_448592698|161", + ["id"] = "explicit.stat_448592698|160", ["text"] = "+# to Level of all Skeletal Sniper Skills", ["type"] = "explicit", }, { - ["id"] = "explicit.stat_448592698|160", + ["id"] = "explicit.stat_448592698|161", ["text"] = "+# to Level of all Skeletal Sniper Skills", ["type"] = "explicit", }, @@ -4632,12 +4652,12 @@ return { ["type"] = "explicit", }, { - ["id"] = "explicit.stat_448592698|201", + ["id"] = "explicit.stat_448592698|193", ["text"] = "+# to Level of all Tamed Companion Skills", ["type"] = "explicit", }, { - ["id"] = "explicit.stat_448592698|193", + ["id"] = "explicit.stat_448592698|201", ["text"] = "+# to Level of all Tamed Companion Skills", ["type"] = "explicit", }, @@ -4901,6 +4921,21 @@ return { ["text"] = "Abyssal Wasting also applies #% to Lightning Resistance", ["type"] = "explicit", }, + { + ["id"] = "explicit.stat_3134931479", + ["text"] = "Abyssal Wasting you inflict also gives targets 10% chance to explode on death, dealing a tenth of their life as Physical Damage", + ["type"] = "explicit", + }, + { + ["id"] = "explicit.stat_1986082444", + ["text"] = "Abyssal Wasting you inflict also prevents targets from dealing Critical Hits", + ["type"] = "explicit", + }, + { + ["id"] = "explicit.stat_4149923257", + ["text"] = "Abyssal Wasting you inflict also prevents targets from inflicting Elemental Ailments", + ["type"] = "explicit", + }, { ["id"] = "explicit.stat_1679776108", ["text"] = "Abyssal Wasting you inflict has Infinite Duration", @@ -7451,6 +7486,11 @@ return { ["text"] = "Allocates Knight of Izaro", ["type"] = "explicit", }, + { + ["id"] = "explicit.stat_2954116742|1861", + ["text"] = "Allocates Knight of Tarcus", + ["type"] = "explicit", + }, { ["id"] = "explicit.stat_2954116742|2397", ["text"] = "Allocates Last Stand", @@ -8147,12 +8187,12 @@ return { ["type"] = "explicit", }, { - ["id"] = "explicit.stat_2954116742|62210", + ["id"] = "explicit.stat_2954116742|14258", ["text"] = "Allocates Puppet Master chance", ["type"] = "explicit", }, { - ["id"] = "explicit.stat_2954116742|14258", + ["id"] = "explicit.stat_2954116742|62210", ["text"] = "Allocates Puppet Master chance", ["type"] = "explicit", }, @@ -8266,6 +8306,11 @@ return { ["text"] = "Allocates Repeating Explosives", ["type"] = "explicit", }, + { + ["id"] = "explicit.stat_2954116742|21251", + ["text"] = "Allocates Replenishing Horde", + ["type"] = "explicit", + }, { ["id"] = "explicit.stat_2954116742|20414", ["text"] = "Allocates Reprisal", @@ -9962,12 +10007,12 @@ return { ["type"] = "explicit", }, { - ["id"] = "explicit.stat_3831171903|5", + ["id"] = "explicit.stat_2801937280", ["text"] = "Blood Magic", ["type"] = "explicit", }, { - ["id"] = "explicit.stat_2801937280", + ["id"] = "explicit.stat_3831171903|5", ["text"] = "Blood Magic", ["type"] = "explicit", }, @@ -10607,12 +10652,12 @@ return { ["type"] = "explicit", }, { - ["id"] = "explicit.stat_3146310524", + ["id"] = "explicit.stat_2933846633", ["text"] = "Dazes on Hit", ["type"] = "explicit", }, { - ["id"] = "explicit.stat_2933846633", + ["id"] = "explicit.stat_3146310524", ["text"] = "Dazes on Hit", ["type"] = "explicit", }, @@ -10721,6 +10766,11 @@ return { ["text"] = "Delirium Encounters in affected Map have #% chance to generate an additional Reward", ["type"] = "explicit", }, + { + ["id"] = "explicit.stat_1769611692", + ["text"] = "Delirium Fog in Area applies #% increased Deliriousness to Players", + ["type"] = "explicit", + }, { ["id"] = "explicit.stat_3350944114", ["text"] = "Delirium Fog in Area dissipates #% faster", @@ -10741,18 +10791,23 @@ return { ["text"] = "Delirium Fog in Area spawns #% increased Fracturing Mirrors", ["type"] = "explicit", }, + { + ["id"] = "explicit.stat_1769611692", + ["text"] = "Delirium Fog in Map applies #% increased Deliriousness to Players", + ["type"] = "explicit", + }, { ["id"] = "explicit.stat_3350944114", ["text"] = "Delirium Fog in Map dissipates #% faster", ["type"] = "explicit", }, { - ["id"] = "explicit.stat_3226351972", + ["id"] = "explicit.stat_1174954559", ["text"] = "Delirium Fog in Map lasts # additional seconds before dissipating", ["type"] = "explicit", }, { - ["id"] = "explicit.stat_1174954559", + ["id"] = "explicit.stat_3226351972", ["text"] = "Delirium Fog in Map lasts # additional seconds before dissipating", ["type"] = "explicit", }, @@ -10781,16 +10836,6 @@ return { ["text"] = "Delirium Monsters in Map have #% increased Pack Size", ["type"] = "explicit", }, - { - ["id"] = "explicit.stat_1769611692", - ["text"] = "Delirium in Area increases #% faster with distance from the mirror", - ["type"] = "explicit", - }, - { - ["id"] = "explicit.stat_1769611692", - ["text"] = "Delirium in Map increases #% faster with distance from the mirror", - ["type"] = "explicit", - }, { ["id"] = "explicit.stat_2971398565", ["text"] = "Divine Flight", @@ -10932,12 +10977,12 @@ return { ["type"] = "explicit", }, { - ["id"] = "explicit.stat_2080373320", + ["id"] = "explicit.stat_1464727508", ["text"] = "Enemies in your Presence are Blinded", ["type"] = "explicit", }, { - ["id"] = "explicit.stat_1464727508", + ["id"] = "explicit.stat_2080373320", ["text"] = "Enemies in your Presence are Blinded", ["type"] = "explicit", }, @@ -11026,6 +11071,11 @@ return { ["text"] = "Enemies you kill have a #% chance to explode, dealing a quarter of their maximum Life as Chaos damage", ["type"] = "explicit", }, + { + ["id"] = "explicit.stat_2051332707", + ["text"] = "Enemies you kill while they are affected by Abyssal Wasting grant #% increased Flask Charges", + ["type"] = "explicit", + }, { ["id"] = "explicit.stat_793801176", ["text"] = "Energy Generation is doubled", @@ -11276,6 +11326,16 @@ return { ["text"] = "Gain # Rage when Hit by an Enemy during effect", ["type"] = "explicit", }, + { + ["id"] = "explicit.stat_2934385135", + ["text"] = "Gain # Rage when you kill an enemy affected by Abyssal Wasting", + ["type"] = "explicit", + }, + { + ["id"] = "explicit.stat_2952939159", + ["text"] = "Gain # Volatility when you kill an enemy affected by Abyssal Wasting", + ["type"] = "explicit", + }, { ["id"] = "explicit.stat_2469544361", ["text"] = "Gain #% of Cold damage as Extra Fire damage per 1% Chill Magnitude on enemy", @@ -11907,12 +11967,12 @@ return { ["type"] = "explicit", }, { - ["id"] = "explicit.stat_3831171903|21", + ["id"] = "explicit.stat_326965591", ["text"] = "Iron Reflexes", ["type"] = "explicit", }, { - ["id"] = "explicit.stat_326965591", + ["id"] = "explicit.stat_3831171903|21", ["text"] = "Iron Reflexes", ["type"] = "explicit", }, @@ -12337,12 +12397,12 @@ return { ["type"] = "explicit", }, { - ["id"] = "explicit.stat_3042527515", + ["id"] = "explicit.stat_1468737867", ["text"] = "Map contains an additional Shrine", ["type"] = "explicit", }, { - ["id"] = "explicit.stat_1468737867", + ["id"] = "explicit.stat_3042527515", ["text"] = "Map contains an additional Shrine", ["type"] = "explicit", }, @@ -15041,6 +15101,21 @@ return { ["text"] = "Take no Extra Damage from Critical Hits", ["type"] = "explicit", }, + { + ["id"] = "explicit.stat_3963171183", + ["text"] = "Targets affected by Abyssal Wasting you inflict are Blinded", + ["type"] = "explicit", + }, + { + ["id"] = "explicit.stat_2668499289", + ["text"] = "Targets affected by Abyssal Wasting you inflict are Debilitated", + ["type"] = "explicit", + }, + { + ["id"] = "explicit.stat_4097102799", + ["text"] = "Targets affected by Abyssal Wasting you inflict are Hindered", + ["type"] = "explicit", + }, { ["id"] = "explicit.stat_1755296234", ["text"] = "Targets can be affected by # of your Poisons at the same time", @@ -15668,12 +15743,12 @@ return { ["type"] = "implicit", }, { - ["id"] = "implicit.stat_774059442", + ["id"] = "implicit.stat_3336230913", ["text"] = "# to maximum Runic Ward", ["type"] = "implicit", }, { - ["id"] = "implicit.stat_3336230913", + ["id"] = "implicit.stat_774059442", ["text"] = "# to maximum Runic Ward", ["type"] = "implicit", }, @@ -16619,12 +16694,12 @@ return { ["type"] = "fractured", }, { - ["id"] = "fractured.stat_3981240776", + ["id"] = "fractured.stat_2704225257", ["text"] = "# to Spirit", ["type"] = "fractured", }, { - ["id"] = "fractured.stat_2704225257", + ["id"] = "fractured.stat_3981240776", ["text"] = "# to Spirit", ["type"] = "fractured", }, @@ -16639,12 +16714,12 @@ return { ["type"] = "fractured", }, { - ["id"] = "fractured.stat_2897413282", + ["id"] = "fractured.stat_1379411836", ["text"] = "# to all Attributes", ["type"] = "fractured", }, { - ["id"] = "fractured.stat_1379411836", + ["id"] = "fractured.stat_2897413282", ["text"] = "# to all Attributes", ["type"] = "fractured", }, @@ -16673,6 +16748,11 @@ return { ["text"] = "# to maximum Runic Ward", ["type"] = "fractured", }, + { + ["id"] = "fractured.stat_4097212302", + ["text"] = "# to maximum number of Elemental Infusions", + ["type"] = "fractured", + }, { ["id"] = "fractured.stat_1823942939", ["text"] = "# to maximum number of Summoned Ballista Totems", @@ -17163,6 +17243,11 @@ return { ["text"] = "#% increased Explicit Critical Modifier magnitudes", ["type"] = "fractured", }, + { + ["id"] = "fractured.stat_231689132", + ["text"] = "#% increased Explicit Elemental Damage Modifier magnitudes", + ["type"] = "fractured", + }, { ["id"] = "fractured.stat_3574578302", ["text"] = "#% increased Explicit Fire Modifier magnitudes", @@ -17529,12 +17614,12 @@ return { ["type"] = "fractured", }, { - ["id"] = "fractured.stat_3984865854", + ["id"] = "fractured.stat_1416406066", ["text"] = "#% increased Spirit", ["type"] = "fractured", }, { - ["id"] = "fractured.stat_1416406066", + ["id"] = "fractured.stat_3984865854", ["text"] = "#% increased Spirit", ["type"] = "fractured", }, @@ -18243,6 +18328,11 @@ return { ["text"] = "Allocates Bolstering Yell", ["type"] = "fractured", }, + { + ["id"] = "fractured.stat_2954116742|5191", + ["text"] = "Allocates Bond of the Wolf", + ["type"] = "fractured", + }, { ["id"] = "fractured.stat_2954116742|17725", ["text"] = "Allocates Bonded Precision", @@ -18263,6 +18353,11 @@ return { ["text"] = "Allocates Bounty Hunter", ["type"] = "fractured", }, + { + ["id"] = "fractured.stat_2954116742|50498", + ["text"] = "Allocates Brain Storm", + ["type"] = "fractured", + }, { ["id"] = "fractured.stat_2954116742|37806", ["text"] = "Allocates Branching Bolts", @@ -18408,6 +18503,11 @@ return { ["text"] = "Allocates Chilled to the Bone", ["type"] = "fractured", }, + { + ["id"] = "fractured.stat_2954116742|5686", + ["text"] = "Allocates Chillproof", + ["type"] = "fractured", + }, { ["id"] = "fractured.stat_2954116742|39990", ["text"] = "Allocates Chronomancy", @@ -19763,6 +19863,11 @@ return { ["text"] = "Allocates Mental Toughness", ["type"] = "fractured", }, + { + ["id"] = "fractured.stat_2954116742|45632", + ["text"] = "Allocates Mind Eraser", + ["type"] = "fractured", + }, { ["id"] = "fractured.stat_2954116742|11392", ["text"] = "Allocates Molten Being", @@ -19778,6 +19883,11 @@ return { ["text"] = "Allocates Momentum", ["type"] = "fractured", }, + { + ["id"] = "fractured.stat_2954116742|47560", + ["text"] = "Allocates Multi Shot", + ["type"] = "fractured", + }, { ["id"] = "fractured.stat_2954116742|8810", ["text"] = "Allocates Multitasking", @@ -19858,6 +19968,11 @@ return { ["text"] = "Allocates Overzealous", ["type"] = "fractured", }, + { + ["id"] = "fractured.stat_2954116742|20686", + ["text"] = "Allocates Paragon", + ["type"] = "fractured", + }, { ["id"] = "fractured.stat_2954116742|62230", ["text"] = "Allocates Patient Barrier", @@ -20888,6 +21003,11 @@ return { ["text"] = "Allocates Vulgar Methods", ["type"] = "fractured", }, + { + ["id"] = "fractured.stat_2954116742|25211", + ["text"] = "Allocates Waning Hindrances", + ["type"] = "fractured", + }, { ["id"] = "fractured.stat_2954116742|47418", ["text"] = "Allocates Warding Potions", @@ -21108,6 +21228,11 @@ return { ["text"] = "Gain #% of Damage as Extra Fire Damage while you are missing Runic Ward", ["type"] = "fractured", }, + { + ["id"] = "fractured.stat_1321054058", + ["text"] = "Gain #% of Damage as Extra Fire Damage with Spells", + ["type"] = "fractured", + }, { ["id"] = "fractured.stat_3278136794", ["text"] = "Gain #% of Damage as Extra Lightning Damage", @@ -21178,6 +21303,11 @@ return { ["text"] = "Increases and Reductions to Fire and Lightning Damage in Radius are transformed to apply to Cold Damage", ["type"] = "fractured", }, + { + ["id"] = "fractured.stat_971590056", + ["text"] = "Inflict Anaemia on HitAnaemia allows # Corrupted Blood debuffs to be inflicted on enemies", + ["type"] = "fractured", + }, { ["id"] = "fractured.stat_3987691524", ["text"] = "Inherent Rage loss starts 1 second later", @@ -21308,6 +21438,11 @@ return { ["text"] = "Minions have #% increased Movement Speed", ["type"] = "fractured", }, + { + ["id"] = "fractured.stat_73032170", + ["text"] = "Minions have #% increased Skill Speed with Command Skills", + ["type"] = "fractured", + }, { ["id"] = "fractured.stat_770672621", ["text"] = "Minions have #% increased maximum Life", @@ -21908,6 +22043,11 @@ return { ["text"] = "Recover #% of maximum Life on Kill", ["type"] = "fractured", }, + { + ["id"] = "fractured.stat_1040141381", + ["text"] = "Recover #% of maximum Life when you use a Warcry", + ["type"] = "fractured", + }, { ["id"] = "fractured.stat_1604736568", ["text"] = "Recover #% of maximum Mana on Kill (Jewel)", @@ -22939,6 +23079,11 @@ return { ["text"] = "#% to Lightning Resistance", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_1301765461", + ["text"] = "#% to Maximum Chaos Resistance", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_3676141501", ["text"] = "#% to Maximum Cold Resistance", @@ -22949,6 +23094,11 @@ return { ["text"] = "#% to Maximum Fire Resistance", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_1011760251", + ["text"] = "#% to Maximum Lightning Resistance", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2039822488", ["text"] = "#% to Maximum Quality", @@ -23119,6 +23269,11 @@ return { ["text"] = "Allocates Ancestral Mending", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|43396", + ["text"] = "Allocates Ancestral Reach", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|62609", ["text"] = "Allocates Ancestral Unity", @@ -23185,12 +23340,12 @@ return { ["type"] = "crafted", }, { - ["id"] = "crafted.stat_2954116742|14265", + ["id"] = "crafted.stat_2954116742|12245", ["text"] = "Allocates Arsonist", ["type"] = "crafted", }, { - ["id"] = "crafted.stat_2954116742|12245", + ["id"] = "crafted.stat_2954116742|14265", ["text"] = "Allocates Arsonist", ["type"] = "crafted", }, @@ -23419,6 +23574,11 @@ return { ["text"] = "Allocates Bonded Precision", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|26563", + ["text"] = "Allocates Bone Chains", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|52618", ["text"] = "Allocates Boon of the Beast", @@ -23449,6 +23609,11 @@ return { ["text"] = "Allocates Branching Bolts", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|14777", + ["text"] = "Allocates Bravado", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|21453", ["text"] = "Allocates Breakage", @@ -23469,6 +23634,11 @@ return { ["text"] = "Allocates Breath of Fire", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|18086", + ["text"] = "Allocates Breath of Ice", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|61338", ["text"] = "Allocates Breath of Lightning", @@ -23579,6 +23749,11 @@ return { ["text"] = "Allocates Chakra of Elements", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|25362", + ["text"] = "Allocates Chakra of Impact", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|35031", ["text"] = "Allocates Chakra of Life", @@ -23639,6 +23814,11 @@ return { ["text"] = "Allocates Climate Change", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|38479", + ["text"] = "Allocates Close Confines", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|29514", ["text"] = "Allocates Cluster Bombs", @@ -23774,6 +23954,11 @@ return { ["text"] = "Allocates Cross Strike", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|42981", + ["text"] = "Allocates Cruel Methods", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|35739", ["text"] = "Allocates Crushing Judgement", @@ -23874,6 +24059,11 @@ return { ["text"] = "Allocates Decisive Retreat", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|5594", + ["text"] = "Allocates Decrepifying Curse", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|16142", ["text"] = "Allocates Deep Freeze", @@ -24284,6 +24474,11 @@ return { ["text"] = "Allocates Escalating Mayhem", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|38628", + ["text"] = "Allocates Escalating Toxins", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|9187", ["text"] = "Allocates Escalation", @@ -24329,6 +24524,11 @@ return { ["text"] = "Allocates Expendable Army", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|39050", + ["text"] = "Allocates Exploit", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|48581", ["text"] = "Allocates Exploit the Elements", @@ -24379,6 +24579,11 @@ return { ["text"] = "Allocates Fast Acting Toxins", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|8827", + ["text"] = "Allocates Fast Metabolism", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|3921", ["text"] = "Allocates Fate Finding", @@ -24394,6 +24599,11 @@ return { ["text"] = "Allocates Favourable Odds", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|22532", + ["text"] = "Allocates Fearful Paralysis", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|60764", ["text"] = "Allocates Feathered Fletching", @@ -24604,6 +24814,11 @@ return { ["text"] = "Allocates Full Recovery", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|33887", + ["text"] = "Allocates Full Salvo", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|24630", ["text"] = "Allocates Fulmination", @@ -24699,6 +24914,11 @@ return { ["text"] = "Allocates Growing Swarm", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|4331", + ["text"] = "Allocates Guided Hand", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|46499", ["text"] = "Allocates Guts", @@ -24794,6 +25014,11 @@ return { ["text"] = "Allocates Heavy Ammunition", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|59589", + ["text"] = "Allocates Heavy Armour", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|27491", ["text"] = "Allocates Heavy Buffer", @@ -24819,6 +25044,11 @@ return { ["text"] = "Allocates Heavy Weaponry", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|48418", + ["text"] = "Allocates Hefty Unit", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|45777", ["text"] = "Allocates Hidden Barb", @@ -24889,6 +25119,11 @@ return { ["text"] = "Allocates Ice Storm", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|55847", + ["text"] = "Allocates Ice Walls", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|4031", ["text"] = "Allocates Icebreaker", @@ -24909,6 +25144,11 @@ return { ["text"] = "Allocates Illuminated Crown", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|50912", + ["text"] = "Allocates Imbibed Power", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|19156", ["text"] = "Allocates Immaterial", @@ -25089,6 +25329,11 @@ return { ["text"] = "Allocates Invigorating Grandeur", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|28408", + ["text"] = "Allocates Invigorating Hate", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|24491", ["text"] = "Allocates Invocated Echoes", @@ -25154,6 +25399,11 @@ return { ["text"] = "Allocates Knight of Izaro", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|1861", + ["text"] = "Allocates Knight of Tarcus", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|2397", ["text"] = "Allocates Last Stand", @@ -25164,6 +25414,11 @@ return { ["text"] = "Allocates Lasting Boons", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|58096", + ["text"] = "Allocates Lasting Incantations", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|61741", ["text"] = "Allocates Lasting Toxins", @@ -25214,6 +25469,11 @@ return { ["text"] = "Allocates Left Ventricle", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|55375", + ["text"] = "Allocates Licking Wounds", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|31129", ["text"] = "Allocates Lifelong Friend", @@ -25544,6 +25804,11 @@ return { ["text"] = "Allocates Off-Balancing Retort", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|35918", + ["text"] = "Allocates One For All", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|44753", ["text"] = "Allocates One With Flame", @@ -25584,6 +25849,11 @@ return { ["text"] = "Allocates Overwhelming Strike", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|10295", + ["text"] = "Allocates Overzealous", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|21784", ["text"] = "Allocates Pack Encouragement", @@ -25679,6 +25949,11 @@ return { ["text"] = "Allocates Pocket Sand", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|27950", + ["text"] = "Allocates Polished Iron", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|57047", ["text"] = "Allocates Polymathy", @@ -25699,6 +25974,11 @@ return { ["text"] = "Allocates Power Shots", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|49150", + ["text"] = "Allocates Precise Invocations", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|13895", ["text"] = "Allocates Precise Point", @@ -25810,12 +26090,12 @@ return { ["type"] = "crafted", }, { - ["id"] = "crafted.stat_2954116742|62210", + ["id"] = "crafted.stat_2954116742|14258", ["text"] = "Allocates Puppet Master chance", ["type"] = "crafted", }, { - ["id"] = "crafted.stat_2954116742|14258", + ["id"] = "crafted.stat_2954116742|62210", ["text"] = "Allocates Puppet Master chance", ["type"] = "crafted", }, @@ -25904,6 +26184,11 @@ return { ["text"] = "Allocates Regenerative Flesh", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|56388", + ["text"] = "Allocates Reinforced Rallying", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|35809", ["text"] = "Allocates Reinvigoration", @@ -25924,6 +26209,11 @@ return { ["text"] = "Allocates Repeating Explosives", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|21251", + ["text"] = "Allocates Replenishing Horde", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|20414", ["text"] = "Allocates Reprisal", @@ -26099,6 +26389,11 @@ return { ["text"] = "Allocates Scales of the Wyvern", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|39884", + ["text"] = "Allocates Searing Heat", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|52229", ["text"] = "Allocates Secrets of the Orb", @@ -26124,6 +26419,11 @@ return { ["text"] = "Allocates Serrated Edges", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|13457", + ["text"] = "Allocates Shadow Dancing", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|53150", ["text"] = "Allocates Sharp Sight", @@ -26149,6 +26449,11 @@ return { ["text"] = "Allocates Shattering", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|53527", + ["text"] = "Allocates Shattering Blow", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|64415", ["text"] = "Allocates Shattering Daze", @@ -26339,6 +26644,11 @@ return { ["text"] = "Allocates Spiral into Mania", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|51105", + ["text"] = "Allocates Spirit Bond", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|9328", ["text"] = "Allocates Spirit of the Bear", @@ -26704,6 +27014,11 @@ return { ["text"] = "Allocates The Wild Cat", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|53185", + ["text"] = "Allocates The Winter Owl", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|35849", ["text"] = "Allocates Thickened Arteries", @@ -26794,6 +27109,11 @@ return { ["text"] = "Allocates Touch the Arcane", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|53823", + ["text"] = "Allocates Towering Shield", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|261", ["text"] = "Allocates Toxic Sludge", @@ -26889,6 +27209,11 @@ return { ["text"] = "Allocates Unforgiving", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|32543", + ["text"] = "Allocates Unhindered", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|51394", ["text"] = "Allocates Unimpeded", @@ -26919,6 +27244,16 @@ return { ["text"] = "Allocates Unstable Bond", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|33978", + ["text"] = "Allocates Unstoppable Barrier", + ["type"] = "crafted", + }, + { + ["id"] = "crafted.stat_2954116742|10774", + ["text"] = "Allocates Unyielding", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|1169", ["text"] = "Allocates Urgent Call", @@ -26944,6 +27279,11 @@ return { ["text"] = "Allocates Vengeance", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|54937", + ["text"] = "Allocates Vengeful Fury", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|4238", ["text"] = "Allocates Versatile Arms", @@ -26979,6 +27319,11 @@ return { ["text"] = "Allocates Void", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|17882", + ["text"] = "Allocates Volatile Grenades", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|11366", ["text"] = "Allocates Volcanic Skin", @@ -26999,6 +27344,11 @@ return { ["text"] = "Allocates Vulgar Methods", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|25211", + ["text"] = "Allocates Waning Hindrances", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|31925", ["text"] = "Allocates Warding Fetish", @@ -27064,6 +27414,11 @@ return { ["text"] = "Allocates Whirling Assault", ["type"] = "crafted", }, + { + ["id"] = "crafted.stat_2954116742|46384", + ["text"] = "Allocates Wide Barrier", + ["type"] = "crafted", + }, { ["id"] = "crafted.stat_2954116742|65256", ["text"] = "Allocates Widespread Coverage", @@ -28181,12 +28536,12 @@ return { ["type"] = "enchant", }, { - ["id"] = "enchant.stat_2954116742|14265", + ["id"] = "enchant.stat_2954116742|12245", ["text"] = "Allocates Arsonist", ["type"] = "enchant", }, { - ["id"] = "enchant.stat_2954116742|12245", + ["id"] = "enchant.stat_2954116742|14265", ["text"] = "Allocates Arsonist", ["type"] = "enchant", }, @@ -30976,12 +31331,12 @@ return { ["type"] = "enchant", }, { - ["id"] = "enchant.stat_2954116742|62210", + ["id"] = "enchant.stat_2954116742|14258", ["text"] = "Allocates Puppet Master chance", ["type"] = "enchant", }, { - ["id"] = "enchant.stat_2954116742|14258", + ["id"] = "enchant.stat_2954116742|62210", ["text"] = "Allocates Puppet Master chance", ["type"] = "enchant", }, @@ -32617,12 +32972,12 @@ return { ["type"] = "augment", }, { - ["id"] = "rune.stat_3981240776", + ["id"] = "rune.stat_2704225257", ["text"] = "# to Spirit", ["type"] = "augment", }, { - ["id"] = "rune.stat_2704225257", + ["id"] = "rune.stat_3981240776", ["text"] = "# to Spirit", ["type"] = "augment", }, @@ -33471,6 +33826,11 @@ return { ["text"] = "Allies in your Presence share Charges with you", ["type"] = "augment", }, + { + ["id"] = "rune.stat_258955603", + ["text"] = "Alternating every 5 seconds:Take #% more Damage from HitsTake #% more Damage over time", + ["type"] = "augment", + }, { ["id"] = "rune.stat_2586152168", ["text"] = "Archon recovery period expires #% faster", @@ -34306,6 +34666,11 @@ return { ["text"] = "Bonded: Every Rage also grants #% increased Spell Damage", ["type"] = "augment", }, + { + ["id"] = "rune.stat_2291075173", + ["text"] = "Bonded: Every five Rage also grants you #% increased Movement Speed", + ["type"] = "augment", + }, { ["id"] = "rune.stat_1482283017", ["text"] = "Bonded: Fissure Skills have +# to Limit", @@ -34481,6 +34846,11 @@ return { ["text"] = "Bonded: Temporary Minion Skills have # to Limit of Minions summoned", ["type"] = "augment", }, + { + ["id"] = "rune.stat_1651083789", + ["text"] = "Bonded: Triggered Spells deal #% increased Spell Damage", + ["type"] = "augment", + }, { ["id"] = "rune.stat_2248594298", ["text"] = "Bonded: When Volatility on you explodes, you regain an equivalent amount of Volatility", @@ -34671,6 +35041,11 @@ return { ["text"] = "Every 5 Rage also grants #% of Damage taken Recouped as Life", ["type"] = "augment", }, + { + ["id"] = "rune.stat_352044736", + ["text"] = "Every Rage also grants #% increased Stun Threshold", + ["type"] = "augment", + }, { ["id"] = "rune.stat_1540254896", ["text"] = "Flammability Magnitude is doubled", @@ -34756,6 +35131,11 @@ return { ["text"] = "Gain #% of Damage as Extra Physical Damage per ten percent missing Mana", ["type"] = "augment", }, + { + ["id"] = "rune.stat_1936645603", + ["text"] = "Gain #% of Physical Damage as Extra Fire Damage", + ["type"] = "augment", + }, { ["id"] = "rune.stat_386720106", ["text"] = "Gain #% of maximum Life as Extra maximum Runic Ward", @@ -35278,12 +35658,12 @@ return { ["type"] = "desecrated", }, { - ["id"] = "desecrated.stat_3981240776", + ["id"] = "desecrated.stat_2704225257", ["text"] = "# to Spirit", ["type"] = "desecrated", }, { - ["id"] = "desecrated.stat_2704225257", + ["id"] = "desecrated.stat_3981240776", ["text"] = "# to Spirit", ["type"] = "desecrated", }, @@ -36827,6 +37207,11 @@ return { ["text"] = "#% to maximum Block chance", ["type"] = "desecrated", }, + { + ["id"] = "desecrated.stat_1484026495", + ["text"] = "+# maximum stacks of Puppet Master", + ["type"] = "desecrated", + }, { ["id"] = "desecrated.stat_1054098949", ["text"] = "+#% Monster Elemental Resistances", @@ -40085,12 +40470,12 @@ return { ["type"] = "skill", }, { - ["id"] = "skill.unique_breach_lightning_bolt", + ["id"] = "skill.lightning_bolt", ["text"] = "Grants Skill: Level # Lightning Bolt", ["type"] = "skill", }, { - ["id"] = "skill.lightning_bolt", + ["id"] = "skill.unique_breach_lightning_bolt", ["text"] = "Grants Skill: Level # Lightning Bolt", ["type"] = "skill", }, diff --git a/src/Modules/CalcSetup.lua b/src/Modules/CalcSetup.lua index 62d1f816c7..949bc3d508 100644 --- a/src/Modules/CalcSetup.lua +++ b/src/Modules/CalcSetup.lua @@ -963,7 +963,7 @@ function calcs.initEnv(build, mode, override, specEnv) for _, slot in pairs(build.itemsTab.orderedSlots) do local slotName = slot.slotName if items[slotName] then - local srcList = items[slotName].modList or items[slotName].slotModList[slot.slotNum] + local srcList = items[slotName].modList or items[slotName].slotModList[slot.slotNum] or {} for _, mod in ipairs(srcList) do -- checks if it disables another slot for _, tag in ipairs(mod) do