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.

64 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
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
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 item.lastAttempts then
attempts = attempts - item.lastAttempts
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