diff --git a/spec/System/TestItemMods_spec.lua b/spec/System/TestItemMods_spec.lua index 3aa079e67b..69b769df93 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) + it("shows versioned reusable variant groups", function() build.itemsTab:CreateDisplayItemFromRaw([[ Rarity: Unique diff --git a/src/Classes/ItemsTab.lua b/src/Classes/ItemsTab.lua index 0b3852aba5..82e2e4316f 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 @@ -2033,6 +2038,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()