diff --git a/src/Modules/Build.lua b/src/Modules/Build.lua index 7173c2fb4b..72abb19ff7 100644 --- a/src/Modules/Build.lua +++ b/src/Modules/Build.lua @@ -1701,6 +1701,9 @@ function buildMode:InsertItemWarnings() InsertIfNew(self.controls.warnings.lines, "You have too many gems in your "..warning.." slot") end end + if self.calcsTab.mainEnv.itemWarnings.missingAnointWarning then + InsertIfNew(self.controls.warnings.lines, "You have eligible items missing an anoint: "..table.concat(self.calcsTab.mainEnv.itemWarnings.missingAnointWarning, ", ")) + end end -- Build list of side bar stats diff --git a/src/Modules/CalcSetup.lua b/src/Modules/CalcSetup.lua index b1ed688536..2e3e092070 100644 --- a/src/Modules/CalcSetup.lua +++ b/src/Modules/CalcSetup.lua @@ -14,6 +14,21 @@ local m_max = math.max local tempTable1 = { } +local function isAnointableItem(item) + return item and item.base and (item.canBeAnointed or item.base.type == "Amulet") +end + +local function itemHasAnoint(item) + for _, modList in ipairs({ item.enchantModLines, item.scourgeModLines, item.implicitModLines, item.explicitModLines, item.crucibleModLines }) do + for _, mod in ipairs(modList or {}) do + if mod.line and mod.line:find("Allocates ", 1, true) then + return true + end + end + end + return false +end + -- Initialise modifier database with stats and conditions common to all actors function calcs.initModDB(env, modDB) modDB:NewMod("FireResistMax", "BASE", data.characterConstants["base_maximum_all_resistances_%"], "Base") @@ -878,6 +893,14 @@ function calcs.initEnv(build, mode, override, specEnv) end end + for _, slot in ipairs(build.itemsTab.orderedSlots) do + local item = items[slot.slotName] + if isAnointableItem(item) and not itemHasAnoint(item) then + env.itemWarnings.missingAnointWarning = env.itemWarnings.missingAnointWarning or { } + t_insert(env.itemWarnings.missingAnointWarning, slot.label) + end + end + -- Track which flask slot (1-5) each flask is in, for adjacency checks env.flaskSlotMap = { } env.flaskSlotOccupied = { }