Skip to content

Commit bd2641a

Browse files
committed
Update raid reward levels based on bosses killed, fixes #11
1 parent c97f0e1 commit bd2641a

File tree

2 files changed

+66
-25
lines changed

2 files changed

+66
-25
lines changed

.luacheckrc

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -11,41 +11,42 @@ globals = {
1111
"C_ChallengeMode",
1212
"C_Item",
1313
"C_MythicPlus",
14+
"C_Timer",
1415
"C_WeeklyRewards",
1516
"CreateFrame",
16-
"max",
17-
"min",
18-
"WeeklyRewardsFrame",
17+
"DifficultyUtil",
18+
"Enum",
1919
"GameTooltip",
20-
"GameTooltip_SetTitle",
21-
"GameTooltip_AddNormalLine",
22-
"GameTooltip_AddHighlightLine",
23-
"GameTooltip_AddColoredLine",
2420
"GameTooltip_AddBlankLineToTooltip",
21+
"GameTooltip_AddColoredLine",
22+
"GameTooltip_AddHighlightLine",
23+
"GameTooltip_AddNormalLine",
24+
"GameTooltip_SetTitle",
25+
"GENERIC_FRACTION_STRING",
26+
"GRAY_FONT_COLOR",
2527
"GREAT_VAULT_REWARDS_WORLD_COMPLETED_FIRST",
2628
"GREAT_VAULT_REWARDS_WORLD_COMPLETED_SECOND",
2729
"GREAT_VAULT_REWARDS_WORLD_INCOMPLETE",
2830
"GREAT_VAULT_WORLD_TIER",
29-
"WEEKLY_REWARDS_UNLOCK_REWARD",
30-
"DifficultyUtil",
31+
"GREEN_FONT_COLOR",
32+
"LibStub",
33+
"max",
34+
"min",
3135
"PVPUtil",
32-
"Enum",
33-
"WEEKLY_REWARDS_MYTHIC_TOP_RUNS",
34-
"WEEKLY_REWARDS_IMPROVE_ITEM_LEVEL",
35-
"WEEKLY_REWARDS_COMPLETE_MYTHIC_SHORT",
36+
"tostring",
3637
"WEEKLY_REWARDS_COMPLETE_MYTHIC",
38+
"WEEKLY_REWARDS_COMPLETE_MYTHIC_SHORT",
3739
"WEEKLY_REWARDS_COMPLETE_WORLD",
40+
"WEEKLY_REWARDS_CURRENT_REWARD",
3841
"WEEKLY_REWARDS_HEROIC",
39-
"WEEKLY_REWARDS_MYTHIC",
42+
"WEEKLY_REWARDS_IMPROVE_ITEM_LEVEL",
4043
"WEEKLY_REWARDS_ITEM_LEVEL_HEROIC",
4144
"WEEKLY_REWARDS_ITEM_LEVEL_MYTHIC",
4245
"WEEKLY_REWARDS_ITEM_LEVEL_WORLD",
4346
"WEEKLY_REWARDS_MAXED_REWARD",
44-
"WEEKLY_REWARDS_CURRENT_REWARD",
45-
"GREEN_FONT_COLOR",
46-
"GRAY_FONT_COLOR",
47-
"GENERIC_FRACTION_STRING",
48-
"tostring",
49-
"WeeklyRewardsUtil",
50-
"LibStub"
47+
"WEEKLY_REWARDS_MYTHIC",
48+
"WEEKLY_REWARDS_MYTHIC_TOP_RUNS",
49+
"WEEKLY_REWARDS_UNLOCK_REWARD",
50+
"WeeklyRewardsFrame",
51+
"WeeklyRewardsUtil"
5152
}

GreatVaultKeyInfo.lua

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
-- globals
22
local C_MythicPlus, C_ChallengeMode, C_WeeklyRewards = C_MythicPlus, C_ChallengeMode, C_WeeklyRewards
3-
local C_Item, DifficultyUtil, PVPUtil, CreateFrame, max, tostring = C_Item, DifficultyUtil, PVPUtil, CreateFrame, max, tostring
3+
local C_Item, DifficultyUtil, PVPUtil, CreateFrame, max, tostring, C_Timer = C_Item, DifficultyUtil, PVPUtil, CreateFrame, max, tostring, C_Timer
44
local WeeklyRewardsFrame, GameTooltip, Enum = WeeklyRewardsFrame, GameTooltip, Enum
55
local GameTooltip_SetTitle, GameTooltip_AddNormalLine, GameTooltip_AddHighlightLine, GameTooltip_AddColoredLine, GameTooltip_AddBlankLineToTooltip = GameTooltip_SetTitle, GameTooltip_AddNormalLine, GameTooltip_AddHighlightLine, GameTooltip_AddColoredLine, GameTooltip_AddBlankLineToTooltip
66
local WEEKLY_REWARDS_MYTHIC_TOP_RUNS, WEEKLY_REWARDS_IMPROVE_ITEM_LEVEL, WEEKLY_REWARDS_COMPLETE_MYTHIC_SHORT, WEEKLY_REWARDS_COMPLETE_MYTHIC = WEEKLY_REWARDS_MYTHIC_TOP_RUNS, WEEKLY_REWARDS_IMPROVE_ITEM_LEVEL, WEEKLY_REWARDS_COMPLETE_MYTHIC_SHORT, WEEKLY_REWARDS_COMPLETE_MYTHIC
@@ -131,6 +131,10 @@ local ItemTierNumRanksBySeason = {
131131
["myth"] = 6,
132132
},
133133
}
134+
local ExampleRaidRewardItemIDBySeason = {
135+
-- The War Within Season 3
136+
[108] = 237567, -- Logic Gate: Alpha
137+
}
134138
-- fallback value
135139
local WEEKLY_MAX_DUNGEON_THRESHOLD = 8
136140

@@ -170,11 +174,16 @@ local GetCurrentSeasonRewardLevels = function()
170174
return currentSeasonRewardLevels.HEROIC, currentSeasonRewardLevels.MYTHIC
171175
end
172176
end
177+
local GetExampleRaidRewardItemID = function()
178+
local rewardSeasonID = GetRewardSeasonID()
179+
return ExampleRaidRewardItemIDBySeason[rewardSeasonID]
180+
end
173181
local GetRewardLevelFromRaidLevel = function(raidLevel, blizzItemLevel)
174182
local rewardSeasonID = GetRewardSeasonID()
175183
local currentSeasonRewardLevels = RaidItemLevelsBySeason[rewardSeasonID]
176184
if currentSeasonRewardLevels then
177-
return currentSeasonRewardLevels[raidLevel] or blizzItemLevel or 0
185+
-- prefer the blizz item level because it takes into account bosses killed
186+
return blizzItemLevel or currentSeasonRewardLevels[raidLevel] or 0
178187
end
179188
return blizzItemLevel or 0
180189
end
@@ -466,9 +475,23 @@ local ShowPreviewItemTooltip = function(self)
466475
GameTooltip:Show()
467476
end
468477

478+
local pendingActivity = {}
479+
function GreatVaultKeyInfoFrame:ITEM_DATA_LOAD_RESULT(event, id, success)
480+
local exampleRaidRewardItemID = GetExampleRaidRewardItemID()
481+
if not exampleRaidRewardItemID or id == exampleRaidRewardItemID then
482+
self:UnregisterEvent(event)
483+
if id == exampleRaidRewardItemID and success then
484+
for i = 1, #pendingActivity do
485+
pendingActivity[i]:Refresh(pendingActivity[i].info)
486+
end
487+
pendingActivity = {}
488+
end
489+
end
490+
end
491+
469492
-- overrides SetProgressText
470493
-- original: https://github.com/BigWigsMods/WoWUI/blob/live/AddOns/Blizzard_WeeklyRewards/Blizzard_WeeklyRewards.lua
471-
local SetProgressText = function(self, text)
494+
local SetProgressText = function(self, text, isRetry)
472495
local activityInfo = self.info
473496
if text then
474497
self.Progress:SetText(text)
@@ -477,7 +500,24 @@ local SetProgressText = function(self, text)
477500
elseif self.unlocked then
478501
if activityInfo.type == Enum.WeeklyRewardChestThresholdType.Raid then
479502
local itemLink = C_WeeklyRewards.GetExampleRewardItemHyperlinks(activityInfo.id)
480-
local itemLevel = itemLink and C_Item.GetDetailedItemLevelInfo(itemLink) or nil
503+
local detailedItemLevelInfo = itemLink and C_Item.GetDetailedItemLevelInfo(itemLink)
504+
if not detailedItemLevelInfo then
505+
pendingActivity[#pendingActivity + 1] = self
506+
if #pendingActivity == 1 then
507+
local exampleRaidRewardItemID = GetExampleRaidRewardItemID()
508+
if exampleRaidRewardItemID then
509+
GreatVaultKeyInfoFrame:RegisterEvent("ITEM_DATA_LOAD_RESULT")
510+
C_Item.RequestLoadItemDataByID(exampleRaidRewardItemID)
511+
elseif not isRetry then
512+
-- missing season data, try again once
513+
pendingActivity = {}
514+
C_Timer.After(2, function()
515+
self:SetProgressText(nil, true)
516+
end)
517+
end
518+
end
519+
end
520+
local itemLevel = itemLink and detailedItemLevelInfo or nil
481521
local rewardLevel = GetRewardLevelFromRaidLevel(activityInfo.level, itemLevel)
482522
self.Progress:SetJustifyH("RIGHT")
483523
self.Progress:SetFormattedText("%s\n%s", DifficultyUtil.GetDifficultyName(activityInfo.level), GetItemTierFromItemLevel(rewardLevel))

0 commit comments

Comments
 (0)