diff --git a/spec/System/TestItemMods_spec.lua b/spec/System/TestItemMods_spec.lua index 620de26c74..f4ce0c5903 100644 --- a/spec/System/TestItemMods_spec.lua +++ b/spec/System/TestItemMods_spec.lua @@ -7,6 +7,50 @@ describe("TetsItemMods", function() -- newBuild() takes care of resetting everything in setup() end) + local function createCraftedRing() + build.itemsTab:CreateDisplayItemFromRaw([[Rarity: Rare + Test Ring + Amethyst Ring + Crafted: true + Prefix: None + Prefix: None + Prefix: None + Suffix: None + Suffix: None + Suffix: None + Quality: 12 + Implicits: 0]]) + return build.itemsTab.displayItem + end + + it("clears catalyst quality when no catalyst is selected", function() + local item = createCraftedRing() + local controls = build.itemsTab.controls + local catalyst = controls.displayItemCatalyst + local catalystQuality = controls.displayItemCatalystQualityEdit + + catalyst:SetSel(2) + assert.are.equals(1, item.catalyst) + assert.are.equals(20, item.catalystQuality) + catalystQuality:SetText("17", true) + assert.are.equals(17, item.catalystQuality) + assert.is_truthy(item:BuildRaw():match("Catalyst: Abrasive")) + assert.is_truthy(item:BuildRaw():match("CatalystQuality: 17")) + + catalyst:SetSel(1) + assert.are.equals(0, item.catalyst) + assert.is_nil(item.catalystQuality) + assert.are.equals("0", catalystQuality.buf) + assert.is_nil(item:BuildRaw():match("Catalyst:")) + assert.is_nil(item:BuildRaw():match("CatalystQuality:")) + + item.catalystQuality = 20 + build.itemsTab:SetDisplayItem(item) + assert.is_nil(item.catalystQuality) + assert.are.equals("0", catalystQuality.buf) + assert.is_nil(item:BuildRaw():match("CatalystQuality:")) + end) + for _, wording in ipairs({ "Increases", "Increase" }) do it("Scornflux applies Arcane Surge cast speed to movement speed with '" .. wording .. "' wording", function() build.itemsTab:CreateDisplayItemFromRaw("Scornflux\nSatin Slippers\n" .. wording .. " to Cast Speed from Arcane Surge also applies to Movement Speed") diff --git a/src/Classes/ItemsTab.lua b/src/Classes/ItemsTab.lua index 821b0b5c3e..e370df57fe 100644 --- a/src/Classes/ItemsTab.lua +++ b/src/Classes/ItemsTab.lua @@ -663,9 +663,14 @@ holding Shift will put it in the second.]]) "Prismatic (Resistance)","Sinistral (Prefix)","Tempering (Defense)","Turbulent (Elemental)","Unstable (Critical)"}, function(index, value) self.displayItem.catalyst = index - 1 - if not self.displayItem.catalystQuality then - self.displayItem.catalystQuality = 20 - self.controls.displayItemCatalystQualityEdit:SetText(self.displayItem.catalystQuality) + if index > 1 then + if not self.displayItem.catalystQuality then + self.displayItem.catalystQuality = 20 + self.controls.displayItemCatalystQualityEdit:SetText(self.displayItem.catalystQuality) + end + else + self.displayItem.catalystQuality = nil + self.controls.displayItemCatalystQualityEdit:SetText(0) end if self.displayItem.crafted then for i = 1, self.displayItem.affixLimit do @@ -2081,6 +2086,9 @@ end -- Sets the display item to the given item function ItemsTabClass:SetDisplayItem(item) self.displayItem = item + if item and not (item.catalyst and item.catalyst > 0) then + item.catalystQuality = nil + end if item then -- Update the display item controls self:UpdateDisplayItemTooltip()