Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 48 additions & 2 deletions src/Classes/ImportTab.lua
Original file line number Diff line number Diff line change
Expand Up @@ -868,6 +868,7 @@ function ImportTabClass:DownloadItems(realm)
-- modify response to be like the oauth API response
local charData = copyTable(charListData)
charData.equipment = responseLua.items
charData.guardian = responseLua.guardian
local clearItems = self.controls.siteCharImportItemsClearItems.state
local clearSkills = self.controls.siteCharImportItemsClearSkills.state
local ignoreWeaponSwap = self.controls.siteCharImportItemsIgnoreWeaponSwap.state
Expand Down Expand Up @@ -1327,6 +1328,40 @@ local function applySocketGroupReimportState(socketGroup, state)
end
end

local GUARD_ITEM_SET = "Animate Guardian"
-- Locates AG's item set from the import
function ImportTabClass:GetOrCreateGuardianItemSet()
local itemsTab = self.build.itemsTab
for _, itemSetId in ipairs(itemsTab.itemSetOrderList) do
local itemSet = itemsTab.itemSets[itemSetId]
if itemSet.title == GUARD_ITEM_SET then
return itemSet
end
end
local itemSet = itemsTab:NewItemSet()
itemSet.title = GUARD_ITEM_SET
t_insert(itemsTab.itemSetOrderList, itemSet.id)
return itemSet
end

-- Allocates AG's item set for the AG skill gem.
function ImportTabClass:AssignGuardianItemSet(itemSetId)
local itemsTab = self.build.itemsTab
for _, socketGroup in ipairs(self.build.skillsTab.socketGroupList) do
for _, gem in ipairs(socketGroup.gemList) do
if gem.grantedEffect and gem.grantedEffect.name == "Animate Guardian" then
for _, suffix in ipairs({ "", "Calcs" }) do
local current = gem["skillMinionItemSet"..suffix]
local currentSet = current and itemsTab.itemSets[current]
if not current or (currentSet and currentSet.title == GUARD_ITEM_SET) then
gem["skillMinionItemSet"..suffix] = itemSetId
end
end
end
end
end
end

--- @class CharacterItemsData : CharacterBasicData
--- @field equipment Item[]
--- @param charData CharacterItemsData
Expand Down Expand Up @@ -1368,6 +1403,13 @@ function ImportTabClass:ImportItemsAndSkills(charData, clearItems, clearSkills,
for _, itemData in ipairs(charData.equipment) do
self:ImportItem(itemData, nil, ignoreWeaponSwap)
end
if charData.guardian and charData.guardian[1] then
local guardianSet = self:GetOrCreateGuardianItemSet()
for _, itemData in ipairs(charData.guardian) do
self:ImportItem(itemData, nil, ignoreWeaponSwap, guardianSet.id)
end
self:AssignGuardianItemSet(guardianSet.id)
end
if skillOrder then
local groupOrder = { }
for index, socketGroup in ipairs(self.build.skillsTab.socketGroupList) do
Expand Down Expand Up @@ -1439,7 +1481,7 @@ local rarityMap = { [0] = "NORMAL", "MAGIC", "RARE", "UNIQUE", [9] = "RELIC", [1
local slotMap = { ["Weapon"] = "Weapon 1", ["Offhand"] = "Weapon 2", ["Weapon2"] = "Weapon 1 Swap", ["Offhand2"] = "Weapon 2 Swap", ["Helm"] = "Helmet", ["BodyArmour"] = "Body Armour", ["Gloves"] = "Gloves", ["Boots"] = "Boots",
["Amulet"] = "Amulet", ["Ring"] = "Ring 1", ["Ring2"] = "Ring 2", ["Ring3"] = "Ring 3", ["Belt"] = "Belt", ["BrequelGrafts"] = "Graft 1", ["BrequelGrafts2"] = "Graft 2", }

function ImportTabClass:ImportItem(itemData, slotName, ignoreWeaponSwap)
function ImportTabClass:ImportItem(itemData, slotName, ignoreWeaponSwap, itemSetId)
if not slotName then
if itemData.inventoryId == "PassiveJewels" then
slotName = "Jewel "..self.build.latestTree.jewelSlots[itemData.x + 1]
Expand Down Expand Up @@ -1750,7 +1792,11 @@ function ImportTabClass:ImportItem(itemData, slotName, ignoreWeaponSwap)
else
self.build.itemsTab:AddItem(item, true)
end
self.build.itemsTab.slots[slotName]:SetSelItemId(item.id)
if itemSetId and itemSetId ~= self.build.itemsTab.activeItemSetId then
self.build.itemsTab.itemSets[itemSetId][slotName].selItemId = item.id
else
self.build.itemsTab.slots[slotName]:SetSelItemId(item.id)
end
end
end

Expand Down