You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.9 KiB
65 lines
1.9 KiB
local _, addonTable = ...
|
|
|
|
local Announcements = {}
|
|
|
|
-- Externals
|
|
local L = LibStub("AceLocale-3.0"):GetLocale("Rarity")
|
|
|
|
-- Rarity API
|
|
local Output = Rarity.Output
|
|
|
|
-- Upvalues
|
|
local CONSTANTS = addonTable.constants
|
|
|
|
--- WoW API
|
|
local GetItemInfo = _G.C_Item.GetItemInfo
|
|
|
|
function Announcements:AnnounceAttemptForItem(item)
|
|
local itemName, itemLink, itemRarity, itemLevel, itemMinLevel, itemType, itemSubType, itemStackCount, itemEquipLoc, itemTexture, itemSellPrice =
|
|
GetItemInfo(item.itemId)
|
|
if itemName or item.name then
|
|
local displayedText
|
|
local attempts = item.attempts or 1
|
|
local total = item.attempts or 1
|
|
local chance
|
|
|
|
attempts = attempts - (item.lastAttempts or 0)
|
|
|
|
if item.method == CONSTANTS.DETECTION_METHODS.COLLECTION then
|
|
chance = (item.attempts or 0) / (item.chance or 100)
|
|
if chance < 0 then
|
|
chance = 0
|
|
end
|
|
if chance > 1 then
|
|
chance = 1
|
|
end
|
|
chance = chance * 100
|
|
else
|
|
local dropChance = Rarity.Statistics.GetRealDropPercentage(item)
|
|
chance = 100 * (1 - math.pow(1 - dropChance, attempts))
|
|
end
|
|
|
|
if total <= attempts then
|
|
if attempts == 1 then
|
|
displayedText = format(L["%s: %d attempt - %.2f%%"], itemName or item.name, attempts, chance)
|
|
else
|
|
displayedText = format(L["%s: %d attempts - %.2f%%"], itemName or item.name, attempts, chance)
|
|
end
|
|
else
|
|
if attempts == 1 then
|
|
displayedText =
|
|
format(L["%s: %d attempt (%d total) - %.2f%%"], itemName or item.name, attempts, total, chance)
|
|
else
|
|
displayedText =
|
|
format(L["%s: %d attempts (%d total) - %.2f%%"], itemName or item.name, attempts, total, chance)
|
|
end
|
|
end
|
|
|
|
if item.method == CONSTANTS.DETECTION_METHODS.COLLECTION then
|
|
displayedText = format(L["%s: %d collected - %.2f%%"], itemName or item.name, attempts, chance)
|
|
end
|
|
Output:DisplayText(displayedText, itemTexture)
|
|
end
|
|
end
|
|
|
|
Rarity.Announcements = Announcements
|
|
|