changeset 185:a7f2ba17c39a v90

Shadowlands pre-patch update.
author yellowfive
date Tue, 13 Oct 2020 10:49:07 -0700
parents f374d84470db
children 3c2626ed5f82
files AskMrRobot-Serializer/AskMrRobot-Serializer.lua AskMrRobot.toc Constants.lua Core.lua Export.lua Gear.lua Import.lua Junk.lua localization/enUS.lua localization/frFR.lua localization/itIT.lua localization/ptBR.lua localization/ruRU.lua
diffstat 13 files changed, 209 insertions(+), 107 deletions(-) [+]
line wrap: on
line diff
--- a/AskMrRobot-Serializer/AskMrRobot-Serializer.lua	Sat Feb 15 11:17:00 2020 -0800
+++ b/AskMrRobot-Serializer/AskMrRobot-Serializer.lua	Tue Oct 13 10:49:07 2020 -0700
@@ -1,6 +1,6 @@
 -- AskMrRobot-Serializer will serialize and communicate character data between users.
 
-local MAJOR, MINOR = "AskMrRobot-Serializer", 86
+local MAJOR, MINOR = "AskMrRobot-Serializer", 90
 local Amr, oldminor = LibStub:NewLibrary(MAJOR, MINOR)
 
 if not Amr then return end -- already loaded by something else
@@ -156,20 +156,12 @@
 }
 
 Amr.InstanceIds = {
-	Uldir = 1861,
-	Dazar = 2070,
-	Storms = 2096,
-	Palace = 2164,
-	Nyalotha = 2217
+	Nathria = 2296
 }
 
 -- instances that AskMrRobot currently supports logging for
 Amr.SupportedInstanceIds = {
-	[1861] = true,
-	[2070] = true,
-	[2096] = true,
-	[2164] = true,
-	[2217] = true
+	[2296] = true
 }
 
 
@@ -208,9 +200,10 @@
     -- part 8 is some unique ID... we never really used it
     -- part 9 is current player level
 	-- part 10 is player spec
-	local upgradeIdType = tonumber(parts[11]) or 0 -- part 11 indicates what kind of upgrade ID is just after the bonus IDs
+	-- unsure what 11 is now  --local upgradeIdType = tonumber(parts[11]) or 0 -- part 11 indicates what kind of upgrade ID is just after the bonus IDs
     -- part 12 is instance difficulty id
-    
+	
+	-- 13 is num bonus IDs, followed by bonus IDs
     local numBonuses = tonumber(parts[13]) or 0
 	local offset = numBonuses
     if numBonuses > 0 then
@@ -219,13 +212,24 @@
 	
 	item.upgradeId = 0
 	item.level = 0
-	
-	-- the next part after bonus IDs depends on the upgrade id type
-	if upgradeIdType == 4 then
-		item.upgradeId = tonumber(parts[14 + offset]) or 0
-	elseif upgradeIdType == 512 then
-		item.level = tonumber(parts[14 + offset]) or 0
-	elseif #parts > 16 + offset then
+
+	-- part 14 + numBonuses, unsure what this is... sometimes it is "2"
+	-- part 15 + numBonuses, unsure what this is... may indicate what part 16 will mean?
+	-- part 16 + numBonuses, is player level at drop when applicable
+	-- part 17 + numBonuses, unsure what this is...
+	-- part 18 + numBonuses, unsure what this is...
+	-- part 19 + numBonuses, relic info would be here for legion artifacts
+
+	local someNumber = tonumber(parts[15 + offset]) or 0
+	if someNumber ~= 0 then
+		local lvl = tonumber(parts[16 + offset]) or 0
+		if lvl <= 60 then
+			item.level = lvl
+		end
+	end
+
+	-- we don't need relic information anymore
+	--[[elseif #parts > 19 + offset then
 		-- check for relic info
 		item.relicBonusIds = { nil, nil, nil }
 		numBonuses = tonumber(parts[16 + offset])
@@ -254,7 +258,7 @@
 				end
 			end
 		end
-	end
+	end]]
 	
     return item
 end
@@ -387,6 +391,7 @@
 	end
 end
 
+--[[
 -- read azerite powers on the item in loc and put it on itemData
 function Amr.ReadAzeritePowers(loc)
 	local ret = {}
@@ -409,6 +414,7 @@
 		return nil
 	end
 end
+]]
 
 -- get currently equipped items, store with currently active spec
 local function readEquippedItems(ret)
@@ -420,6 +426,7 @@
 		if itemLink then
 			local itemData = Amr.ParseItemLink(itemLink)
 			if itemData then
+				--[[
 				-- see if this is an azerite item and read azerite power ids
 				loc:SetEquipmentSlot(slotId)
 				if C_AzeriteEmpoweredItem.IsAzeriteEmpoweredItem(loc) then
@@ -428,6 +435,7 @@
 						itemData.azerite = powers
 					end
 				end
+				]]
 
 				equippedItems[slotId] = itemData
 			end
@@ -438,6 +446,7 @@
 	ret.Equipped[GetSpecialization()] = equippedItems
 end
 
+--[[
 local function readHeartOfAzerothLevel(ret)
 	local azeriteItemLocation = C_AzeriteItem.FindActiveAzeriteItem();	
 	if azeriteItemLocation then 
@@ -447,6 +456,7 @@
 		ret.HeartOfAzerothLevel = 0
 	end	
 end
+]]
 
 -- Get just the player's currently equipped gear
 function Amr:GetEquipped()
@@ -477,7 +487,7 @@
 	ret.Guild = GetGuildInfo("player")
     ret.ActiveSpec = GetSpecialization()
     ret.Level = UnitLevel("player");
-	readHeartOfAzerothLevel(ret)
+	--readHeartOfAzerothLevel(ret)
 	
     local _, clsEn = UnitClass("player")
     ret.Class = clsEn;
@@ -500,8 +510,8 @@
 	readSpecs(ret)
 
 	-- these get updated later, since need to cache info for inactive specs
-	ret.UnlockedEssences = {}
-	ret.Essences = {}
+	--ret.UnlockedEssences = {}
+	--ret.Essences = {}
 	
 	ret.Equipped = {}	
 	readEquippedItems(ret)
@@ -551,7 +561,7 @@
     local prevUpgradeId = 0
     local prevBonusId = 0
 	local prevLevel = 0
-	local prevAzeriteId = 0
+	--local prevAzeriteId = 0
 	local prevRelicBonusId = 0
     for i, itemData in ipairs(itemObjects) do
         local itemParts = {}
@@ -576,13 +586,15 @@
             end
 		end
 		
+		--[[
 		if itemData.azerite then
 			for aIndex, aValue in ipairs(itemData.azerite) do
                 table.insert(itemParts, "a" .. (aValue - prevAzeriteId))
                 prevAzeriteId = aValue
             end
 		end
-		
+		]]
+
 		if itemData.gemIds[1] ~= 0 then 
 			table.insert(itemParts, "x" .. (itemData.gemIds[1] - prevGemId))
 			prevGemId = itemData.gemIds[1]
@@ -671,8 +683,7 @@
     table.insert(fields, raceval)
     
 	table.insert(fields, data.Level)
-	table.insert(fields, data.HeartOfAzerothLevel)
-    
+
     local profs = {}
     local noprofs = true
     if data.Professions then
@@ -698,7 +709,9 @@
             table.insert(fields, ".s" .. spec) -- indicates the start of a spec block
 			table.insert(fields, data.Specs[spec])
 			table.insert(fields, data.Talents[spec] or "")
-			
+			table.insert(fields, data.ActiveSoulbinds and data.ActiveSoulbinds[spec] or "0")
+
+			--[[
 			local essences = {}
 			if data.Essences and data.Essences[spec] then
 				for i, ess in ipairs(data.Essences[spec]) do
@@ -706,6 +719,7 @@
 				end
 			end
 			table.insert(fields, table.concat(essences, "_"))
+			]]
         end
     end
     
@@ -726,6 +740,26 @@
         end
 	end
 
+	-- export soulbind tree info
+	if data.Soulbinds then
+		table.insert(fields, ".sol")
+		for soulbindId, soulbindData in pairs(data.Soulbinds) do
+			table.insert(fields, string.format("u.%s.%s", soulbindId, soulbindData.UnlockedTier))
+			for tier, node in pairs(soulbindData.Nodes) do
+				table.insert(fields, table.concat(node, "."))
+			end
+		end
+	end
+
+	-- export unlocked conduits
+	if data.UnlockedConduits then
+		table.insert(fields, ".con")
+		for i, conduit in ipairs(data.UnlockedConduits) do
+			table.insert(fields, table.concat(conduit, "."))
+		end
+	end
+
+	--[[
 	-- export unlocked essences
 	if data.UnlockedEssences then
 		table.insert(fields, ".ess")
@@ -733,7 +767,8 @@
 			table.insert(fields, table.concat(ess, "_"))
 		end
 	end
-    
+	]]
+	
     -- if doing a complete export, include bank/bag items too
 	if complete then
 		    
--- a/AskMrRobot.toc	Sat Feb 15 11:17:00 2020 -0800
+++ b/AskMrRobot.toc	Tue Oct 13 10:49:07 2020 -0700
@@ -1,7 +1,7 @@
-## Interface: 80300
+## Interface: 90002
 ## Title: Ask Mr. Robot
 ## Author: Team Robot, Inc.
-## Version: 86
+## Version: 90
 ## Notes: Gear import/export, combat logging, and more.
 ## URL: www.askmrrobot.com
 ## SavedVariables: AskMrRobotDb4
--- a/Constants.lua	Sat Feb 15 11:17:00 2020 -0800
+++ b/Constants.lua	Tue Oct 13 10:49:07 2020 -0700
@@ -24,7 +24,7 @@
 --Amr.GetItemTooltip = Amr.Serializer.GetItemTooltip
 --Amr.GetItemLevel = Amr.Serializer.GetItemLevel
 Amr.GetItemUniqueId = Amr.Serializer.GetItemUniqueId
-Amr.ReadAzeritePowers = Amr.Serializer.ReadAzeritePowers
+--Amr.ReadAzeritePowers = Amr.Serializer.ReadAzeritePowers
 Amr.ProfessionSkillLineToName = Amr.Serializer.ProfessionSkillLineToName
 
 
@@ -107,7 +107,7 @@
 }
 
 -- instance IDs ordered in preferred display order
-Amr.InstanceIdsOrdered = { 1861, 2070, 2096, 2164, 2217 }
+Amr.InstanceIdsOrdered = { 2296 }
 
 Amr.Difficulties = {
 	Lfr = 17,
@@ -158,14 +158,7 @@
 	local specId = GetSpecializationInfo(GetSpecialization())
 	table.insert(parts,  specId)
 
-	-- this indicates what kind of modifier appears after the bonus IDs
-	if itemObj.upgradeId and itemObj.upgradeId ~= 0 then
-		table.insert(parts, 4)
-	elseif itemObj.level and itemObj.level ~= 0 then
-		table.insert(parts, 512)
-	else
-		table.insert(parts, 0)
-	end
+    table.insert(parts, 0) -- not sure what this is anymore
 
     table.insert(parts, 0) -- difficulty id, doesn't matter
     
@@ -177,20 +170,20 @@
 	else
 		table.insert(parts, 0) -- no bonus ids
     end
-	
-	-- upgrade id or level comes after bonuses
-	if itemObj.upgradeId and itemObj.upgradeId ~= 0 then
-		table.insert(parts, itemObj.upgradeId)
-	elseif itemObj.level and itemObj.level ~= 0 then
-		table.insert(parts, itemObj.level)
-	else
-		table.insert(parts, 0)
-	end
+    
+    if itemObj.level and itemObj.level ~= 0 then
+        table.insert(parts, 2) -- not sure if this is always 2 or not...
+        table.insert(parts, 9) -- not sure if this is always 9 or not...
+        table.insert(parts, itemObj.level)
+    elseif itemObj.upgradeId and itemObj.upgradeId ~= 0 then
+        -- figure this out (if we still care)
+    end
     
     -- we don't bother with relic bonus ids anymore when generating links
     table.insert(parts, 0)
     table.insert(parts, 0)
     table.insert(parts, 0)
+    table.insert(parts, 0)
     
     return table.concat(parts, ":")
 end
--- a/Core.lua	Sat Feb 15 11:17:00 2020 -0800
+++ b/Core.lua	Tue Oct 13 10:49:07 2020 -0700
@@ -46,8 +46,9 @@
 			LastVersion = 0,           -- used to clean out old stuff	
 			FirstUse = true,           -- true if this is first time use, gets cleared after seeing the export help splash window
 			Talents = {},              -- for each spec, selected talents
-			Essences = {},             -- for each spec, selected essences
-			UnlockedEssences = {},     -- unlocked essences for this character
+			Soulbinds = {},            -- selected nodes in each soulbind tree for this character
+			ActiveSoulbinds = {},      -- for each spec, active soulbind
+			UnlockedConduits = {},     -- unlocked conduits for this character
 			Equipped = {},             -- for each spec, slot id to item info
 			BagItems = {},             -- list of item info for bags
 			BankItems = {},            -- list of item info for bank
@@ -708,4 +709,10 @@
 
 function Amr:Test()
 	
+	--local item = Item:CreateFromItemID(171416)
+	--local blah = C_LegendaryCrafting.GetRuneforgePowers(item:GetItemLocation())
+
+	--local info = C_LegendaryCrafting.GetRuneforgePowerInfo(30)
+
+	--print(Amr:dump(info))
 end
--- a/Export.lua	Sat Feb 15 11:17:00 2020 -0800
+++ b/Export.lua	Tue Oct 13 10:49:07 2020 -0700
@@ -123,13 +123,13 @@
 			if itemData ~= nil then
 
 				-- see if this is an azerite item and read azerite power ids
-				loc:SetBagAndSlot(bagId, slotId)
+				--[[loc:SetBagAndSlot(bagId, slotId)
 				if C_AzeriteEmpoweredItem.IsAzeriteEmpoweredItem(loc) then
 					local powers = Amr.ReadAzeritePowers(loc)
 					if powers then
 						itemData.azerite = powers
 					end
-				end
+				end]]
 
 				if isBank then
 					_lastBankBagId = bagId
@@ -259,6 +259,62 @@
 end
 ]]
 
+local function scanSoulbinds()
+	if not C_Soulbinds then return end
+
+	-- read which conduits this player has unlocked
+	Amr.db.char.UnlockedConduits = {}
+
+	for t = 0,2 do
+		local conduits = C_Soulbinds.GetConduitCollection(t)
+		for i, conduit in ipairs(conduits) do
+			table.insert(Amr.db.char.UnlockedConduits, { conduit.conduitID, conduit.conduitRank })
+		end
+	end
+
+	if not Amr.db.char.ActiveSoulbinds then
+		Amr.db.char.ActiveSoulbinds = {}
+	end
+
+	-- read the currently active soulbind for this spec
+	local specPos = GetSpecialization()	
+	if specPos and specPos >= 1 and specPos <= 4 then
+		Amr.db.char.ActiveSoulbinds[specPos] = C_Soulbinds.GetActiveSoulbindID() or 0
+	end
+
+	-- update soulbind tree info for all soulbinds
+	Amr.db.char.Soulbinds = {}
+	
+	local covenantData = C_Covenants.GetCovenantData(C_Covenants.GetActiveCovenantID())
+
+	if covenantData and covenantData.soulbindIDs then
+		for i, soulbindId in ipairs(covenantData.soulbindIDs) do
+			local soulbindData = soulbindId and C_Soulbinds.GetSoulbindData(soulbindId)
+			local nodes = {}
+			local unlockedTier = 0
+
+			if soulbindData and soulbindData.tree and soulbindData.tree.nodes then
+				for i, node in ipairs(soulbindData.tree.nodes) do
+					if node.state == 3 then
+						nodes[node.row] = { soulbindId, node.row, node.column, node.conduitID, node.conduitRank }
+					end
+					if node.state > 0 then
+						unlockedTier = math.max(node.row, unlockedTier)
+					end
+				end
+			end
+
+			Amr.db.char.Soulbinds[soulbindId] = {
+				UnlockedTier = unlockedTier,
+				Nodes = nodes
+			}
+
+		end
+	end
+
+end
+
+--[[
 local function scanEssences()
 	if not C_AzeriteEssence then return end
 
@@ -300,6 +356,7 @@
 		end
 	end
 end
+]]
 
 local function scanTalents()	
 	local specPos = GetSpecialization()	
@@ -345,12 +402,18 @@
 	-- scan current spec's talents just before exporting
 	scanTalents()
 
+	-- scan all soulbinds just before exporting
+	scanSoulbinds()
+
 	-- scan current spec's essences just before exporting
-	scanEssences()
+	--scanEssences()
 	
 	data.Talents = Amr.db.char.Talents	
-	data.UnlockedEssences = Amr.db.char.UnlockedEssences
-	data.Essences = Amr.db.char.Essences
+	data.UnlockedConduits = Amr.db.char.UnlockedConduits
+	data.ActiveSoulbinds = Amr.db.char.ActiveSoulbinds
+	data.Soulbinds = Amr.db.char.Soulbinds
+	--data.UnlockedEssences = Amr.db.char.UnlockedEssences
+	--data.Essences = Amr.db.char.Essences
 	data.Equipped = Amr.db.char.Equipped	
 	data.BagItems = Amr.db.char.BagItems
 
@@ -385,6 +448,10 @@
 
 Amr:AddEventHandler("PLAYER_TALENT_UPDATE", scanTalents)
 
-if C_AzeriteEssence then
-	Amr:AddEventHandler("AZERITE_ESSENCE_UPDATE", scanEssences)
+--if C_AzeriteEssence then
+--	Amr:AddEventHandler("AZERITE_ESSENCE_UPDATE", scanEssences)
+--end
+
+if C_Soulbinds then
+	Amr:AddEventHandler("SOULBIND_ACTIVATED", scanSoulbinds)
 end
\ No newline at end of file
--- a/Gear.lua	Sat Feb 15 11:17:00 2020 -0800
+++ b/Gear.lua	Tue Oct 13 10:49:07 2020 -0700
@@ -235,7 +235,7 @@
 	end
 
 	local equipped = player.Equipped[player.ActiveSpec]
-	local equippedEssences = player.Essences[player.ActiveSpec]
+	--local equippedEssences = player.Essences[player.ActiveSpec]
 
 	if not gear then
 		-- no gear has been imported for this spec so show a message
@@ -313,8 +313,10 @@
 				end
 			end
 
-			local isAzerite = optimalItem and C_AzeriteEmpoweredItem.IsAzeriteEmpoweredItemByID(optimalItem.id)
-			local isEssence = essences and optimalItem and optimalItem.id == 158075
+			--local isAzerite = optimalItem and C_AzeriteEmpoweredItem.IsAzeriteEmpoweredItemByID(optimalItem.id)
+			--local isEssence = essences and optimalItem and optimalItem.id == 158075
+			local isAzerite = false
+			local isEssence = false
 			
 			-- find the item in the player's inventory that best matches what the optimization wants to use
 			local matchItem = Amr:FindMatchingItem(optimalItem, player, usedItems)
@@ -684,13 +686,13 @@
 			local bagItem = Amr.ParseItemLink(itemLink)
 			if bagItem ~= nil then
 				-- see if this is an azerite item and read azerite power ids
-				loc:SetBagAndSlot(bagId, slotId)
+				--[[loc:SetBagAndSlot(bagId, slotId)
 				if C_AzeriteEmpoweredItem.IsAzeriteEmpoweredItem(loc) then
 					local powers = Amr.ReadAzeritePowers(loc)
 					if powers then
 						bagItem.azerite = powers
 					end
-				end
+				end]]
 
 				local diff = countItemDifferences(item, bagItem)
 				if diff < bestDiff then
--- a/Import.lua	Sat Feb 15 11:17:00 2020 -0800
+++ b/Import.lua	Tue Oct 13 10:49:07 2020 -0700
@@ -134,7 +134,7 @@
     local prevUpgradeId = 0
     local prevBonusId = 0
     local prevLevel = 0
-    local prevAzeriteId = 0
+    --local prevAzeriteId = 0
     local digits = {
         ["-"] = true,
         ["0"] = true,
@@ -155,9 +155,9 @@
         elseif itemString ~= "" and itemString ~= "_" then
             local tokens = {}
             local bonusIds = {}
-            local azerite = {}
+            --local azerite = {}
             local hasBonuses = false
-            local hasAzerites = false
+            --local hasAzerites = false
             local token = ""
             local prop = "i"
             local tokenComplete = false
@@ -189,17 +189,17 @@
                     elseif prop == "e" then
                         val = val + prevEnchantId
                         prevEnchantId = val
-                    elseif prop == "a" then
-                        val = val + prevAzeriteId
-                        prevAzeriteId = val
+                    --elseif prop == "a" then
+                    --    val = val + prevAzeriteId
+                    --    prevAzeriteId = val
                     end
                     
                     if prop == "b" then
                         table.insert(bonusIds, val)
                         hasBonuses = true
-                    elseif prop == "a" then
-                        table.insert(azerite, val)
-                        hasAzerites = true
+                    --elseif prop == "a" then
+                    --    table.insert(azerite, val)
+                    --    hasAzerites = true
                     else
                         tokens[prop] = val
                     end
@@ -237,15 +237,16 @@
                 obj.bonusIds = bonusIds
             end
             
-            if hasAzerites then
-                obj.azerite = azerite
-            end
+            --if hasAzerites then
+            --    obj.azerite = azerite
+            --end
         end
     end
 
     return importData
 end
 
+--[[
 local function parseEssenceList(essenceString)
     local ret = {}
 
@@ -257,6 +258,19 @@
 
     return ret
 end
+]]
+
+local function parseSoulbinds(soulbindString)
+    local ret = {}
+
+    local parts = { strsplit(",", soulbindString) }
+    for i = 1, #parts do
+        local node = { strsplit(".", parts[i]) }
+        table.insert(ret, { tonumber(node[1]), tonumber(node[2]), tonumber(node[3]) })
+    end
+
+    return ret
+end
 
 --
 -- Import a character, returning nil on success, otherwise an error message, import result stored in the db.
@@ -353,9 +367,11 @@
     end
     
     -- if we make it this far, the data is valid, so read item information
-	local specSlot = tonumber(parts[11])
+	local specSlot = tonumber(parts[10])
     
-    local essences = parseEssenceList(parts[15])
+    local soulbindId = tonumber(parts[14])
+    local soulbindNodes = parseSoulbinds(parts[15])
+    --local essences = parseEssenceList(parts[15])
 
     local importData = parseItemList(parts, 17, "n/a", true)
     
@@ -412,7 +428,9 @@
             Id = setupId,
             Label = setupName,
             Gear = importData,
-            Essences = essences
+            SoulbindId = soulbindId,
+            SoulbindNodes = soulbindNodes
+            --Essences = essences
         }
 
         if not result.IsBib then
--- a/Junk.lua	Sat Feb 15 11:17:00 2020 -0800
+++ b/Junk.lua	Tue Oct 13 10:49:07 2020 -0700
@@ -36,13 +36,13 @@
                 local itemData = Amr.Serializer.ParseItemLink(itemLink)
                 if itemData ~= nil then
                     -- see if this is an azerite item and read azerite power ids
-                    loc:SetBagAndSlot(bagId, slotId)
+                    --[[loc:SetBagAndSlot(bagId, slotId)
                     if C_AzeriteEmpoweredItem.IsAzeriteEmpoweredItem(loc) then
                         local powers = Amr.ReadAzeritePowers(loc)
                         if powers then
                             itemData.azerite = powers
                         end
-                    end
+                    end]]
                     
                     -- see if it matches
                     local diffs = Amr.CountItemDifferences(matchItem, itemData)
--- a/localization/enUS.lua	Sat Feb 15 11:17:00 2020 -0800
+++ b/localization/enUS.lua	Tue Oct 13 10:49:07 2020 -0700
@@ -85,11 +85,7 @@
 }
 
 L.InstanceNames = {
-    [1861] = "Uldir",
-    [2070] = "Dazar'alor",
-    [2096] = "Crucible of Storms",
-    [2164] = "The Eternal Palace",
-    [2217] = "Ny'alotha"
+    [2296] = "Castle Nathria"
 }
 
 L.DifficultyNames = {
--- a/localization/frFR.lua	Sat Feb 15 11:17:00 2020 -0800
+++ b/localization/frFR.lua	Tue Oct 13 10:49:07 2020 -0700
@@ -71,11 +71,7 @@
 }
 
 L.InstanceNames = {
-    [1861] = "Uldir",
-    [2070] = "Dazar'alor",
-    [2096] = "Crucible of Storms",
-    [2164] = "The Eternal Palace",
-    [2217] = "Ny'alotha"
+    [2296] = "Castle Nathria"
 }
 
 L.DifficultyNames = {
--- a/localization/itIT.lua	Sat Feb 15 11:17:00 2020 -0800
+++ b/localization/itIT.lua	Tue Oct 13 10:49:07 2020 -0700
@@ -71,11 +71,7 @@
 }
 
 L.InstanceNames = {
-    [1861] = "Uldir",
-    [2070] = "Dazar'alor",
-    [2096] = "Crucible of Storms",
-    [2164] = "The Eternal Palace",
-    [2217] = "Ny'alotha"
+    [2296] = "Castle Nathria"
 }
 
 L.DifficultyNames = {
--- a/localization/ptBR.lua	Sat Feb 15 11:17:00 2020 -0800
+++ b/localization/ptBR.lua	Tue Oct 13 10:49:07 2020 -0700
@@ -71,11 +71,7 @@
 }
 
 L.InstanceNames = {
-    [1861] = "Uldir",
-    [2070] = "Dazar'alor",
-    [2096] = "Crucible of Storms",
-    [2164] = "The Eternal Palace",
-    [2217] = "Ny'alotha"
+    [2296] = "Castle Nathria"
 }
 
 L.DifficultyNames = {
--- a/localization/ruRU.lua	Sat Feb 15 11:17:00 2020 -0800
+++ b/localization/ruRU.lua	Tue Oct 13 10:49:07 2020 -0700
@@ -71,11 +71,7 @@
 }
 
 L.InstanceNames = {
-    [1861] = "Uldir",
-    [2070] = "Dazar'alor",
-    [2096] = "Crucible of Storms",
-    [2164] = "The Eternal Palace",
-    [2217] = "Ny'alotha"
+    [2296] = "Castle Nathria"
 }
 
 L.DifficultyNames = {