Skip to content

Commit 70ab9d8

Browse files
author
LocalIdentity
committed
Merge branch 'fix/importing_of_alt_gems' into dev
2 parents 798ee45 + 6ac587b commit 70ab9d8

File tree

2 files changed

+53
-3
lines changed

2 files changed

+53
-3
lines changed

Classes/ImportTab.lua

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -787,6 +787,23 @@ function ImportTabClass:ImportItem(itemData, slotName)
787787
end
788788
end
789789

790+
791+
-- parse real gem name by ommiting the first word if alt qual is set
792+
function ImportTabClass:GetBaseNameAndQuality(gemTypeLine)
793+
if gemTypeLine then
794+
local firstword, otherwords = gemTypeLine:match("(%w+)%s(.+)")
795+
if firstword and otherwords then
796+
for indx, entry in ipairs(self.build.skillsTab.getAlternateGemQualityList()) do
797+
if firstword == entry.label then
798+
return otherwords, entry.type
799+
end
800+
end
801+
end
802+
end
803+
804+
return gemTypeLine, "Default"
805+
end
806+
790807
function ImportTabClass:ImportSocketedItems(item, socketedItems, slotName)
791808
-- Build socket group list
792809
local itemSocketGroupList = { }
@@ -796,16 +813,19 @@ function ImportTabClass:ImportSocketedItems(item, socketedItems, slotName)
796813
self:ImportItem(socketedItem, slotName .. " Abyssal Socket "..abyssalSocketId)
797814
abyssalSocketId = abyssalSocketId + 1
798815
else
799-
local gemId = self.build.data.gemForBaseName[socketedItem.typeLine]
816+
local normalizedBasename, qualityType = self:GetBaseNameAndQuality(socketedItem.typeLine)
817+
local gemId = self.build.data.gemForBaseName[normalizedBasename]
800818
if not gemId and socketedItem.hybrid then
801819
-- Dual skill gems (currently just Stormbind) show the second skill as the typeLine, which won't match the actual gem
802820
-- Luckily the primary skill name is also there, so we can find the gem using that
803-
gemId = self.build.data.gemForBaseName[socketedItem.hybrid.baseTypeName]
821+
normalizedBasename, qualityType = self:GetBaseNameAndQuality(socketedItem.hybrid.baseTypeName)
822+
gemId = self.build.data.gemForBaseName[normalizedBasename]
804823
end
805824
if gemId then
806825
local gemInstance = { level = 20, quality = 0, enabled = true, enableGlobal1 = true, gemId = gemId }
807826
gemInstance.nameSpec = self.build.data.gems[gemId].name
808827
gemInstance.support = socketedItem.support
828+
gemInstance.qualityId = qualityType
809829
for _, property in pairs(socketedItem.properties) do
810830
if property.name == "Level" then
811831
gemInstance.level = tonumber(property.values[1][1]:match("%d+"))

Classes/SkillsTab.lua

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,30 @@ will automatically apply to the skill.]]
158158
self.controls.gemEnableHeader = new("LabelControl", {"BOTTOMLEFT",self.gemSlots[1].enabled,"TOPLEFT"}, -16, -2, 0, 16, "^7Enabled:")
159159
end)
160160

161+
-- parse alt qual from existing quality list
162+
function SkillsTabClass:ParseGemAltQuality(gemName, qualityId)
163+
if qualityId then
164+
return qualityId
165+
end if gemName then
166+
for indx, entry in ipairs(alternateGemQualityList) do
167+
if gemName:sub(1, #entry.label) == entry.label then
168+
return entry.type
169+
end
170+
end
171+
end
172+
end
173+
174+
-- parse real gem name by ommiting the first word if alt qual is set
175+
function SkillsTabClass:ParseBaseGemName(gemInstance)
176+
if gemInstance.qualityId and gemInstance.nameSpec then
177+
_, gemName = gemInstance.nameSpec:match("(%w+)%s(.+)")
178+
if gemName then
179+
return gemName
180+
end
181+
end
182+
return gemInstance.nameSpec
183+
end
184+
161185
function SkillsTabClass:Load(xml, fileName)
162186
self.defaultGemLevel = tonumber(xml.attrib.defaultGemLevel)
163187
self.defaultGemQuality = tonumber(xml.attrib.defaultGemQuality)
@@ -201,7 +225,9 @@ function SkillsTabClass:Load(xml, fileName)
201225
end
202226
gemInstance.level = tonumber(child.attrib.level)
203227
gemInstance.quality = tonumber(child.attrib.quality)
204-
gemInstance.qualityId = child.attrib.qualityId
228+
gemInstance.qualityId = SkillsTabClass:ParseGemAltQuality(gemInstance.nameSpec, child.attrib.qualityId)
229+
gemInstance.nameSpec = SkillsTabClass:ParseBaseGemName(gemInstance)
230+
205231
if gemInstance.gemData then
206232
gemInstance.qualityId.list = self:getGemAltQualityList(gemInstance.gemData)
207233
end
@@ -867,3 +893,7 @@ function SkillsTabClass:RestoreUndoState(state)
867893
self.controls.groupList.selValue = self.socketGroupList[self.controls.groupList.selIndex]
868894
end
869895
end
896+
897+
function SkillsTabClass:getAlternateGemQualityList()
898+
return alternateGemQualityList
899+
end

0 commit comments

Comments
 (0)