Quantcast

Fix the fix for the fix :D AP calculation updated

Darth Predator [05-07-17 - 13:43]
Fix the fix for the fix :D AP calculation updated
Filename
ElvUI_SLE/modules/Armory/CharacterArmory/CharacterArmory.lua
ElvUI_SLE/modules/bags/artifactpower.lua
diff --git a/ElvUI_SLE/modules/Armory/CharacterArmory/CharacterArmory.lua b/ElvUI_SLE/modules/Armory/CharacterArmory/CharacterArmory.lua
index 612fe76..a7fdf06 100644
--- a/ElvUI_SLE/modules/Armory/CharacterArmory/CharacterArmory.lua
+++ b/ElvUI_SLE/modules/Armory/CharacterArmory/CharacterArmory.lua
@@ -34,6 +34,7 @@ local C_TransmogCollection_GetIllusionSourceInfo = C_TransmogCollection.GetIllus
 local AnimatedNumericFontStringMixin = AnimatedNumericFontStringMixin

 local format = format
+local AP_NAME = format("%s|r", ARTIFACT_POWER)

 --------------------------------------------------------------------------------
 --<< KnightFrame : Upgrade Character Frame's Item Info like Wow-Armory		>>--
@@ -769,7 +770,7 @@ function CA:Update_Gear()
 	if Prof2 and Info.Armory_Constants.ProfessionList[Prof2] then self.PlayerProfession[(Info.Armory_Constants.ProfessionList[Prof2].Key)] = Prof2_Level end
 	]]
 	local ErrorDetected, NeedUpdate, NeedUpdateList, R, G, B
-	local Slot, ItemLink, ItemData, BasicItemLevel, TrueItemLevel, ItemUpgradeID, CurrentUpgrade, MaxUpgrade, ItemType, UsableEffect, CurrentLineText, GemID, GemLink, GemTexture, GemCount_Default, GemCount_Now, GemCount, IsTransmogrified
+	local Slot, ItemLink, ItemData, BasicItemLevel, TrueItemLevel, ItemUpgradeID, CurrentUpgrade, MaxUpgrade, ItemType, UsableEffect, CurrentLineText, GemID, GemLink, GemTexture, GemCount_Default, GemCount_Now, GemCount, ItemTexture, IsTransmogrified

 	Artifact_ItemID, _, _, _, Artifact_Power, Artifact_Rank = C_ArtifactUI.GetEquippedArtifactInfo()
 	if self.ArtifactMonitor and not self.ArtifactMonitor.Socket1 then CA:ConstructArtSockets() end
@@ -1152,15 +1153,9 @@ do --<< Artifact Monitor >>
 		["ruRU"] = "(%d*[%p%s]?%d+) млн",
 		["koKR"] = "(%d*[%p%s]?%d+)만",
 		["zhTW"] = "(%d*[%p%s]?%d+)萬",
-		["zhCN"] = "(%d*[%p%s]?%d+) 万",
-	}
-	local apValueMultiplier = {
-		["koKR"] = 1e4,
-		["zhTW"] = 1e4,
-		["zhCN"] = 1e4,
+		["zhCN"] = "(%d*[%p%s]?%d+)万",
 	}
 	local apStringValueMillionLocal = apStringValueMillion[GetLocale()]
-	local apValueMultiplierLocal = (apValueMultiplier[GetLocale()] or 1e6) --Fallback to 1e6 which is used by all non-asian clients
 	local empoweringSpellName = GetSpellInfo(227907)

 	function CA:LegionArtifactMonitor_UpdateLayout()
@@ -1350,17 +1345,17 @@ do --<< Artifact Monitor >>
 									local success = pcall(self.ArtifactMonitor.ScanTT.SetHyperlink, self.ArtifactMonitor.ScanTT, PowerItemLink)
 									if success then
 										local apFound
-										for i = 5, 1, -1 do
+										for i = 3, 7 do
 											local tooltipText = _G["Knight_CharacterArmory_ArtifactScanTTTextLeft"..i]:GetText()
-											if tooltipText then
+											if (tooltipText and not T.match(tooltipText, AP_NAME)) then
 												local digit1, digit2, digit3, ap
 												local value = T.match(tooltipText, apStringValueMillionLocal)
 												if value then
 													digit1, digit2 = T.match(value, "(%d+)[%p%s](%d+)")
 													if digit1 and digit2 then
-														ap = T.tonumber(T.format("%s.%s", digit1, digit2)) * apValueMultiplierLocal --Multiply by 1 million (or 10.000 for asian clients)
+														ap = T.tonumber(T.format("%s.%s", digit1, digit2)) * 1e6 --Multiply by one million
 													else
-														ap = T.tonumber(value) * apValueMultiplierLocal --Multiply by 1 million (or 10.000 for asian clients)
+														ap = T.tonumber(value) * 1e6 --Multiply by one million
 													end
 												else
 													digit1, digit2, digit3 = T.match(tooltipText,"(%d+)[%p%s]?(%d+)[%p%s]?(%d+)")
diff --git a/ElvUI_SLE/modules/bags/artifactpower.lua b/ElvUI_SLE/modules/bags/artifactpower.lua
index 0a67127..48d6b46 100644
--- a/ElvUI_SLE/modules/bags/artifactpower.lua
+++ b/ElvUI_SLE/modules/bags/artifactpower.lua
@@ -1,14 +1,17 @@
 local SLE, T, E, L, V, P, G = unpack(select(2, ...))
 local AP = SLE:NewModule("ArtifactPowerBags", 'AceHook-3.0', 'AceEvent-3.0')
 local B = E:GetModule('Bags')
+
+--GLOBALS: CreateFrame, hooksecurefunc
 local _G = _G
 local tooltipScanner
 local tooltipName = "SLE_ArtifactPowerTooltipScanner"
 local EMPOWERING_SPELL_ID = 227907
 local empoweringSpellName
 local arcanePower
-local AP_NAME = T.format("|cFFE6CC80%s|r", ARTIFACT_POWER)
+local AP_NAME = format("%s|r", ARTIFACT_POWER)
 local pcall = pcall
+local GetItemSpell = GetItemSpell

 -- local apLineIndex
 local apItemCache = {}
@@ -26,13 +29,7 @@ local apStringValueMillion = {
 	["zhTW"] = "(%d*[%p%s]?%d+)萬",
 	["zhCN"] = "(%d*[%p%s]?%d+)万",
 }
-local apValueMultiplier = {
-	["koKR"] = 1e4,
-	["zhTW"] = 1e4,
-	["zhCN"] = 1e4,
-}
 local apStringValueMillionLocal = apStringValueMillion[GetLocale()]
-local apValueMultiplierLocal = (apValueMultiplier[GetLocale()] or 1e6) --Fallback to 1e6 which is used by all non-asian clients
 local function GetItemLinkArtifactPower(slotLink)
 	local apValue
 	if not slotLink then return nil end
@@ -45,18 +42,18 @@ local function GetItemLinkArtifactPower(slotLink)
 		end

 		local apFound
-		for i = 5, 1, -1 do
+		for i = 3, 7 do
 			local tooltipText = _G[tooltipName.."TextLeft"..i]:GetText()
-			if tooltipText then
+			if (tooltipText and not T.match(tooltipText, AP_NAME)) then
 				local digit1, digit2, digit3, ap
 				local value = T.match(tooltipText, apStringValueMillionLocal)

 				if value then
 					digit1, digit2 = T.match(value, "(%d+)[%p%s](%d+)")
 					if digit1 and digit2 then
-						ap = T.tonumber(T.format("%s.%s", digit1, digit2)) * apValueMultiplierLocal --Multiply by 1 million (or 10.000 for asian clients)
+						ap = T.tonumber(T.format("%s.%s", digit1, digit2)) * 1e6 --Multiply by one million
 					else
-						ap = T.tonumber(value) * apValueMultiplierLocal --Multiply by 1 million (or 10.000 for asian clients)
+						ap = T.tonumber(value) * 1e6 --Multiply by one million
 					end
 				else
 					digit1, digit2, digit3 = T.match(tooltipText,"(%d+)[%p%s]?(%d+)[%p%s]?(%d+)")
@@ -102,7 +99,7 @@ local function SlotUpdate(self, bagID, slotID)
 		frame.artifactpowerinfo:SetTextColor(r, g, b)

 		if (frame.artifactpowerinfo) then
-			local ID = select(10, T.GetContainerItemInfo(bagID, slotID))
+			local ID = T.select(10, T.GetContainerItemInfo(bagID, slotID))
 			local slotLink = T.GetContainerItemLink(bagID,slotID)
 			if (ID and slotLink) then
 				local arcanePower
@@ -128,10 +125,10 @@ function AP:Initialize()

 	tooltipScanner = CreateFrame("GameTooltip", tooltipName, nil, "GameTooltipTemplate")
 	tooltipScanner:SetOwner(E.UIParent, "ANCHOR_NONE")
-	empoweringSpellName = GetSpellInfo(EMPOWERING_SPELL_ID)
+	empoweringSpellName = T.GetSpellInfo(EMPOWERING_SPELL_ID)

 	hooksecurefunc(B,"UpdateSlot", SlotUpdate)
-	hooksecurefunc(ElvUI_ContainerFrame,"UpdateSlot", SlotUpdate)
+	hooksecurefunc(_G["ElvUI_ContainerFrame"],"UpdateSlot", SlotUpdate)
 	self:RegisterEvent("BANKFRAME_OPENED", function()
 		AP:UnregisterEvent("BANKFRAME_OPENED")
 		B:Layout()