From d36a712595cd9989441390178b15532a190028d4 Mon Sep 17 00:00:00 2001 From: Ironi Date: Wed, 29 Mar 2017 20:44:09 +0300 Subject: [PATCH] update for 7.2, everything SHOULD work again --- iKeystones.lua | 116 +++++++++++++++++++++++--------------------------------- iKeystones.toc | 2 +- 2 files changed, 49 insertions(+), 69 deletions(-) diff --git a/iKeystones.lua b/iKeystones.lua index 9e2b45a..8cf07d1 100644 --- a/iKeystones.lua +++ b/iKeystones.lua @@ -20,6 +20,20 @@ iKS.weeklyChestItemLevels = { [9] = 900, [10] = 905, } +iKS.keystonesToMapIDs = { + [197] = 1456, -- Eye of Azhara + [198] = 1466, -- Darkhearth Thicket + [199] = 1501, -- Blackrook Hold + [200] = 1477, -- Halls of Valor + [206] = 1458, -- Neltharion's Lair + [207] = 1493, -- Vault of the Wardens + [208] = 1492, -- Maw of Souls + [209] = 1516, -- The Arcway + [210] = 1571, -- Court of Stars + [227] = 1651, -- Return to Karazhan: Lower + [233] = 1677, -- Cathedral of Eternal Night + [234] = 1651, -- Return to Karazhan: Upper +} function iKS:weeklyReset() for guid,data in pairs(iKeystonesDB) do iKeystonesDB[guid].key = {} @@ -72,44 +86,24 @@ function iKS:scanInventory(requestingSlots) return bagID, invID end local itemLink = GetContainerItemLink(bagID, invID) - local tempTable = {strsplit(':', itemLink)} -- debug --tempKeyTable = {strsplit(':', itemLink)} --iKeystoneT = tempKeyTable -- end-of-debug - local keyLevel = tonumber(tempTable[16]) + -- mapid, level,1 active/0 depleted,level4, level7, level10(?) + local map, keyLevel, d, l4,l7,l10 = string.match(itemLink, 'keystone:(%d+):(%d+):(%d+):(%d+):(%d+):(%d+)') iKeystonesDB[player].key = { - map = tonumber(tempTable[15]), - level = keyLevel, - --depleted = (tonumber(tempTable[12]) == 4063232 and true) or nil, -- 4063232 == depleted, 8257536 active - depleted = tonumber(tempTable[12]), - affix4 = tonumber(tempTable[17]), - affix7 = tonumber(tempTable[18]), - affix10 = tonumber(tempTable[19]), - arg20 = tonumber(tempTable[20]), -- some kind of depleted check ?? + ['map'] = tonumber(map), + ['level'] = tonumber(keyLevel), + ['depleted'] = tonumber(d), + ['affix4'] = tonumber(l4), + ['affix7'] = tonumber(l7), + ['affix10'] = tonumber(l10), } + keyLevel = tonumber(keyLevel) if iKS.keyLevel and iKS.keyLevel < keyLevel then - local itemLinkTable = { - [1] = iKS:getItemColor(iKeystonesDB[player].key.level, iKeystonesDB[player].key.depleted), - [2] = 138019, - [10] = 110, - [11] = 250, - [12] = iKeystonesDB[player].key.depleted, - [15] = iKeystonesDB[player].key.map, - [16] = iKeystonesDB[player].key.level, - [17] = iKeystonesDB[player].key.affix4, - [18] = iKeystonesDB[player].key.affix7, - [19] = iKeystonesDB[player].key.affix10, - [20] = iKeystonesDB[player].key.arg20, - [23] = string.format('|h[%s (%s)]|h|r',GetRealZoneText(iKeystonesDB[player].key.map), iKeystonesDB[player].key.level), - } - for i = 1, 22 do - if not itemLinkTable[i] then - itemLinkTable[i] = '' - end - end - local itemLinkToPrint = table.concat(itemLinkTable, ':') - print('iKS: New keystone - ' .. itemLinkToPrint) + local itemLink = string.format('%s|Hkeystone:%d:%d:%d:%d:%d:%d|h[%s (%s)]|h|r', iKS:getItemColor(data.key.level, data.key.depleted), data.key.map, data.key.level,data.key.depleted, data.key.affix4, data.key.affix7, data.key.affix10,iKS:getZoneInfo(data.key.map), data.key.level) + print('iKS: New keystone - ' .. itemLink) end iKS.keyLevel = keyLevel iKS.mapID = iKeystonesDB[player].key.map @@ -121,44 +115,34 @@ function iKS:scanInventory(requestingSlots) end function iKS:getItemColor(level, depleted) if depleted == 4063232 then - return '|cff9d9d9d|Hitem' + return '|cff9d9d9d' elseif level < 4 then -- Epic - return '|cffa335ee|Hitem' + return '|cffa335ee' elseif level < 7 then -- Green - return '|cff3fbf3f|Hitem' + return '|cff3fbf3f' elseif level < 10 then -- Yellow - return '|cffffd100|Hitem' + return '|cffffd100' elseif level < 15 then -- orange - return '|cffff7f3f|Hitem' + return '|cffff7f3f' else -- Red - return '|cffff1919|Hitem' + return '|cffff1919' end end +function iKS:getZoneInfo(mapID, zone) + local name, arg2, timelimit = C_ChallengeMode.GetMapInfo(mapID) + if zone then + return iKS.keystonesToMapIDs[mapID] + + else + return name + end +end function iKS:printKeystones() local allCharacters = {} for guid,data in pairs(iKeystonesDB) do local itemLink = '' if data.key.map then - local itemLinkTable = { - [1] = iKS:getItemColor(data.key.level, data.key.depleted), - [2] = 138019, - [10] = 110, - [11] = 250, - [12] = data.key.depleted, - [15] = data.key.map, - [16] = data.key.level, - [17] = data.key.affix4, - [18] = data.key.affix7, - [19] = data.key.affix10, - [20] = data.key.arg20, - [23] = string.format('|h[%s (%s)]|h|r',GetRealZoneText(data.key.map), data.key.level), - } - for i = 1, 22 do - if not itemLinkTable[i] then - itemLinkTable[i] = '' - end - end - itemLink = table.concat(itemLinkTable, ':') + itemLink = string.format('%s|Hkeystone:%d:%d:%d:%d:%d:%d|h[%s (%s)]|h|r', iKS:getItemColor(data.key.level, data.key.depleted), data.key.map, data.key.level,data.key.depleted, data.key.affix4, data.key.affix7, data.key.affix10,iKS:getZoneInfo(data.key.map), data.key.level) else itemLink = UNKNOWN end @@ -193,7 +177,7 @@ function addon:CHALLENGE_MODE_MAPS_UPDATE() end function addon:CHALLENGE_MODE_KEYSTONE_RECEPTABLE_OPEN() local _, _, _, _, _, _, _, mapID = GetInstanceInfo() - if iKS.mapID and iKS.mapID == mapID then + if iKS.mapID and iKS.keystonesToMapIDs[iKS.mapID] == mapID then local bagID, slotID = iKS:scanInventory(true) PickupContainerItem(bagID, slotID) C_Timer.After(0.1, function() @@ -205,11 +189,11 @@ function addon:CHALLENGE_MODE_KEYSTONE_RECEPTABLE_OPEN() end local function chatFiltering(self, event, msg, ...) - local linkStart = msg:find('Hitem:138019') + local linkStart = msg:find('Hkeystone') if linkStart then if event == 'CHAT_MSG_BN_WHISPER_INFORM' or event == "CHAT_MSG_BN_WHISPER" then linkStart = linkStart + 10 - msg = msg:gsub('|Hitem:138019', '|cffa335ee|Hitem:138019') + msg = msg:gsub('|Hkeystone:', '|cffa335ee|Hkeystone:') local m = msg:sub(math.max(linkStart-1, 0)) local keystoneName = m:match('%[(.-)%]') msg = msg:gsub(keystoneName..'%]|h', keystoneName..']|h|r', 1) @@ -217,14 +201,10 @@ local function chatFiltering(self, event, msg, ...) local preLink = msg:sub(1, linkStart-12) local linkStuff = msg:sub(math.max(linkStart-11, 0)) local tempTable = {strsplit(':', linkStuff)} - tempTable[1] = iKS:getItemColor(tonumber(tempTable[16]), tonumber(tempTable[12])) - for k,v in pairs(tempTable) do - if v and v:match('%[.-%]') then - tempTable[k] = string.gsub(tempTable[k], '%[.-%]', string.format('[%s (%s)]',GetRealZoneText(tonumber(tempTable[15])), tonumber(tempTable[16])), 1) - break - end - end - return false, preLink..table.concat(tempTable, ':'), ... + tempTable[1] = iKS:getItemColor(tonumber(tempTable[3]), tonumber(tempTable[4])) .. '|Hkeystone' + local fullString = table.concat(tempTable, ':') + fullString = string.gsub(fullString, '%[.-%]', string.format('[%s (%s)]',iKS:getZoneInfo(tonumber(tempTable[2])), tonumber(tempTable[3])), 1) + return false, preLink..fullString, ... end end diff --git a/iKeystones.toc b/iKeystones.toc index 6965cce..f619311 100644 --- a/iKeystones.toc +++ b/iKeystones.toc @@ -2,7 +2,7 @@ ## Title: iKeystones ## Notes: Tracks your keystones ## Author: Ironi -## Version: 1.35 +## Version: 1.36 ## DefaultState: enabled ## SavedVariables: iKeystonesDB -- 1.7.9.5