Rarity
NEW: Rarity now has a Discord server!
If you're interested in following the development process or contributing, you should also check out the official GitHub repository. We're always in need of more hands to help us make the addon better!
Rarity tracks how many times you've tried to obtain various rare items like mounts, battle pets, and toys. It will tell you how likely you are to obtain the item, track how long you've been farming for it, and tell you how lucky you've been so far. Although it's mostly used for mounts, battle pets, and toys, it supports pretty much any item, including profession patterns, archaeology projects, and more.
Looking for Rarity Item Packs? Click here.
Out of the box, Rarity includes support for every single mount, battle pet, and toy in the game which require some time to farm. It also includes support for some mount-related items like Skyshard, Primal Egg, and Giant Dinosaur Bone. It'll even notice if you mouseover a Mysterious Camel Figurine, plus lots of other stuff. Rarity factors in the size of a typical group when determining probabilities, and can also tell you if you've killed various bosses this week (or day). Holiday just started, and you didn't notice? Rarity will give you a helpful reminder to run those holiday dungeons or daily quests if you still need an item from them.
If Rarity doesn't track something you want to track, you can add it yourself! Just about everything is user configurable.
Curious what math is going on behind the scenes? The author of Bunny Hunter created the original algorithms. He wrote an article about it here. Your chance to obtain an item doesn't increase as you farm it; Rarity is just telling you how lucky you've been so far. It can be remarkably cathartic to see a progress bar move up as you spend hours upon hours trying for that Disgusting Oozeling.
Main features
- Rarity is primarily an LDB feed with a large tooltip. It can function as either a mini-map icon (you have to turn this on in the options), or as a standard LDB feed (use a display like Fortress, Button Bin, Titan Panel, or Chocolate Bar).
- Provides a progress bar, which you can toggle by clicking the icon or feed label.
- Adds info to NPC and item tooltips, showing you if it drops or contains something that Rarity tracks. Rare mobs with a guaranteed drop show which item they drop and if you've defeated them yet.
- Includes full source info, telling you how to obtain everything Rarity tracks.
Other features
- Share packs of items with other users
- Can automatically add waypoints to TomTom for certain items
- Uses statistics whenever possible to keep track of attempts
- Breaks your farming down by session, day, week, and month
- Looks at your instance locks to see if you've defeated various bosses recently
- Reminds you if you need to farm a holiday dungeon or daily quest, and hides holiday items that aren't available right now
- Supports bonus coin rolls
- Automatically screenshots when you obtain an item
- Keeps track of rare achievements like Frostbitten and Glorious
- You can add your own items to track
- Lets you modify your attempt count without having to edit saved variables
- Automatically imports data from Bunny Hunter if you're switching
Slash Commands
Simply typing /rarity should open the options menu (unless disabled).
For troubleshooting issues:
- /rarity dump displays the most recent debug log entries (even if the debug mode is disabled)
- /rarity validate checks the consistency of your item database, including custom items (experimental)
Comments & bug reports
Help translate Rarity
Click here to help translate Rarity into your language.
Frequently Asked Questions
Click here to read the Frequently Asked Questions. Please read this before requesting support.
After manually updating my attempts at eh Thanksgiving toy, the addon wont auto track my attempts anymore
In reply to JohntheBarbarian:
How do you mean, "auto track"? Only attempts using Blizzard's kill statistics are synced automatically and you cannot overwrite them. Everything else is stored locally and changing the attempts count shouldn't cause any problems.
In reply to Cakechart:
this was an issue 100% on my end, restarting the game (I should have just tried reloading the ui using the console) worked - looks like the display just froze when i manually updated the amount of attempts
I keep getting popups about things that require pickpocketing. I'm not a rogue. How do I disable these types of popups and/or tooltips?
In reply to ghostamongyou:
What popups? You can probably just disable tracking for the pickpocketing toys in the settings.
This error happened when I opened the blizzard UI edit mode
2x [ADDON_ACTION_FORBIDDEN] AddOn 'Rarity' tried to call the protected function 'TargetUnit()'.
[string "@Interface/AddOns/!BugGrabber/BugGrabber.lua"]:480: in function <Interface/AddOns/!BugGrabber/BugGrabber.lua:480>
[string "=[C]"]: in function `TargetUnit'
[string "@Interface/FrameXML/EditModeManager.lua"]:1512: in function `RefreshTargetAndFocus'
[string "@Interface/FrameXML/EditModeManager.lua"]:1456: in function `OnEditModeEnter'
[string "@Interface/FrameXML/EditModeManager.lua"]:170: in function `EnterEditMode'
[string "@Interface/FrameXML/EditModeManager.lua"]:192: in function <Interface/FrameXML/EditModeManager.lua:190>
[string "=[C]"]: in function `Show'
[string "@Interface/FrameXML/UIParent.lua"]:2853: in function `SetUIPanel'
[string "@Interface/FrameXML/UIParent.lua"]:2657: in function `ShowUIPanel'
[string "@Interface/FrameXML/UIParent.lua"]:2561: in function <Interface/FrameXML/UIParent.lua:2557>
[string "=[C]"]: in function `SetAttribute'
[string "@Interface/FrameXML/UIParent.lua"]:3159: in function `ShowUIPanel'
[string "*GameMenuFrame.xml:94_OnClick"]:2: in function <[string "*GameMenuFrame.xml:94_OnClick"]:1>
In reply to Mythris:
Probably a bug in Blizzard's new UI. See also https://www.wowace.com/projects/rarity/issues/493 and the linked GitHub issue/posts on Discord.
Just ran into this error with the most recent version:
1x ...nterface/AddOns/Rarity/Core/GUI/GameTooltipHooks.lua:31: attempt to index field 'db' (a nil value)
[string "@Interface/AddOns/Rarity/Core/GUI/GameTooltipHooks.lua"]:31: in function <...nterface/AddOns/Rarity/Core/GUI/GameTooltipHooks.lua:27>
[string "=(tail call)"]: ?
[string "=[C]"]: in function `securecallfunction'
[string "@Interface/SharedXML/Tooltip/TooltipDataHandler.lua"]:60: in function <Interface/SharedXML/Tooltip/TooltipDataHandler.lua:55>
[string "@Interface/SharedXML/Tooltip/TooltipDataHandler.lua"]:80: in function <Interface/SharedXML/Tooltip/TooltipDataHandler.lua:76>
[string "@Interface/SharedXML/Tooltip/TooltipDataHandler.lua"]:116: in function <Interface/SharedXML/Tooltip/TooltipDataHandler.lua:106>
[string "=[C]"]: in function `SetAttribute'
[string "@Interface/SharedXML/Tooltip/TooltipDataHandler.lua"]:141: in function <Interface/SharedXML/Tooltip/TooltipDataHandler.lua:134>
[string "@Interface/SharedXML/Tooltip/TooltipDataHandler.lua"]:282: in function <Interface/SharedXML/Tooltip/TooltipDataHandler.lua:240>
[string "=[C]"]: in function `securecallfunction'
[string "@Interface/SharedXML/Tooltip/TooltipDataHandler.lua"]:237: in function `ProcessInfo'
[string "@Interface/FrameXML/GameTooltip.lua"]:970: in function `SetWorldCursor'
[string "@Interface/FrameXML/UIParent.lua"]:1439: in function <Interface/FrameXML/UIParent.lua:1362>
Locals:
tooltip = GameTooltip {
0 = <userdata>
SetQuestLogRewardSpell = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetQuestPartyProgress = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
ProcessLineData = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:303
SetPvpTalent = <function> defined =[C]:-1
SetRuneforgeResultItem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetHyperlink = <function> defined =[C]:-1
SetUnit = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetAzeriteEssence = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetVoidDepositItem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetVoidWithdrawalItem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
AllTheThingsProcessing = "mouseover"
info = <table> {
}
ClearLines = <function> defined =[C]:-1
SetInfoBackdropStyle = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:338
ItemTooltip = Frame {
}
shoppingTooltips = <table> {
}
SetSocketGem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
updateTooltipTimer = 0.200000
Show = <function> defined =[C]:-1
StatusBar = GameTooltipStatusBar {
}
SetLootCurrency = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetSlottedKeystone = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetWorldCursor = <function> defined @Interface/FrameXML/GameTooltip.lua:952
SetLootItem = <function> defined =[C]:-1
SetMerchantCostItem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
GetUnit = <function> defined @Interface/FrameXML/GameTooltip.lua:994
SetOwnedItemByID = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetItemInteractionItem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetQuestLogSpecialItem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
TextRight1 = GameTooltipTextRight1 {
}
SetEnhancedConduit = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetRecipeReagentItem = <function> defined =[C]:-1
SetQuestCurrency = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
supportsDataRefresh = true
SetWeeklyReward = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetMerchantItem = <function> defined =[C]:-1
SetPvpBrawl = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetAchievementByID = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
BottomOverlay = Texture {
}
SetSpellByID = <function> defined =[C]:-1
supportsItemComparison = true
SetSocketedRelic = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
ProcessInfo = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:236
ProcessLines = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:293
NineSlice = Frame {
}
SetInventoryItem = <function> defined =[C]:-1
RefreshData = <function> defined @Interface/FrameXML/GameTooltip.lua:933
SetTransmogrifyItem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetLootRollItem = <function> defined =[C]:-1
OnLoad = <function> defined @Interface/FrameXML/GameTooltip.lua:927
SetQuestLogCurrency = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetUnitDebuffByAuraInstanceID = <function> defined =[C]:-1
SetBagItem = <function> defined =[C]:-1
GetSpell = <function> defined @Interface/FrameXML/GameTooltip.lua:990
SetAction = <function> defined =[C]:-1
SetItemKey = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetCompanionPet = <function> defined =[C]:-1
SetInventoryItemByID = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetTraitEntry = <function> defined @Interfa
Running the newest version I ran into this error:
2x ...nterface/AddOns/Rarity/Core/GUI/GameTooltipHooks.lua:39: attempt to call method 'GetUnit' (a nil value)
[string "@Interface/AddOns/Rarity/Core/GUI/GameTooltipHooks.lua"]:39: in function <...nterface/AddOns/Rarity/Core/GUI/GameTooltipHooks.lua:27>
[string "=(tail call)"]: ?
[string "=[C]"]: in function `securecallfunction'
[string "@Interface/SharedXML/Tooltip/TooltipDataHandler.lua"]:60: in function <Interface/SharedXML/Tooltip/TooltipDataHandler.lua:55>
[string "@Interface/SharedXML/Tooltip/TooltipDataHandler.lua"]:80: in function <Interface/SharedXML/Tooltip/TooltipDataHandler.lua:76>
[string "@Interface/SharedXML/Tooltip/TooltipDataHandler.lua"]:116: in function <Interface/SharedXML/Tooltip/TooltipDataHandler.lua:106>
[string "=[C]"]: in function `SetAttribute'
[string "@Interface/SharedXML/Tooltip/TooltipDataHandler.lua"]:141: in function <Interface/SharedXML/Tooltip/TooltipDataHandler.lua:134>
[string "@Interface/SharedXML/Tooltip/TooltipDataHandler.lua"]:282: in function <Interface/SharedXML/Tooltip/TooltipDataHandler.lua:240>
[string "=[C]"]: in function `securecallfunction'
[string "@Interface/SharedXML/Tooltip/TooltipDataHandler.lua"]:237: in function <Interface/SharedXML/Tooltip/TooltipDataHandler.lua:236>
[string "=(tail call)"]: ?
[string "@Interface/AddOns/HandyNotes_DragonflightTreasures/handler/handler.lua"]:908: in function <...HandyNotes_DragonflightTreasures/handler/handler.lua:743>
[string "=(tail call)"]: ?
[string "@Interface/AddOns/HandyNotes_DragonflightTreasures/handler/handler.lua"]:949: in function <...HandyNotes_DragonflightTreasures/handler/handler.lua:925>
[string "=[C]"]: ?
[string "@Interface/AddOns/HandyNotes/HandyNotes.lua"]:56: in function <Interface/AddOns/HandyNotes/HandyNotes.lua:51>
[string "@Interface/AddOns/HandyNotes/HandyNotes.lua"]:166: in function `OnEnter'
[string "@Interface/AddOns/HandyNotes/HandyNotes.lua"]:399: in function <Interface/AddOns/HandyNotes/HandyNotes.lua:398>
Locals:
tooltip = HandyNotes_DragonflightTreasuresComparisonTooltip {
0 = <userdata>
SetQuestLogRewardSpell = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetQuestPartyProgress = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
ProcessLineData = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:303
SetPvpTalent = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetExistingSocketGem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetHyperlink = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetUnit = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetAzeriteEssence = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetVoidDepositItem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetVoidWithdrawalItem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetInfoBackdropStyle = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:338
SetSocketGem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetLootCurrency = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetSlottedKeystone = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetItemInteractionItem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetLootItem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetOwnedItemByID = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetQuestLogSpecialItem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetRecipeReagentItem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetBuybackItem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetWeeklyReward = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetMerchantItem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetPvpBrawl = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
BottomOverlay = Texture {
}
SetSpellByID = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetSocketedRelic = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
ProcessInfo = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:236
ProcessLines = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:293
NineSlice = Frame {
}
SetInventoryItem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
info = <table> {
}
updateTooltipTimer = 0.200000
SetLootRollItem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
InternalProcessInfo = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:240
SetPossession = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetUnitDebuffByAuraInstanceID = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetBagItem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
TextRight1 = HandyNotes_DragonflightTreasuresComparisonTooltipTextRight1 {
}
SetAction = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetLineDataAttribute = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:232
SetAchievementByID = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetInventoryItemByID = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetQuestCurrency = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetCurrencyByID = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetQuestLogCurrency = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
SetBagItemChild = <functi
Using version r718 errors seem to have dissapeared, but this sometimes occurs:
In reply to sth_dev:
Same here, since updating the addon today to this version and logging on, I have the tooltip for the Grappling Gauntlet (Already Known) that keeps multiplying every few seconds when i let my cursor on something that create a tooltip (NPCs or other addons like All the Things and Handynotes)
In reply to Holykoopa:
Can't reproduce this. Likely caused by other addons (that aren't using the new tooltip API)? I've pushed a workaround in the latest release, but no idea if it actually helps to alleviate the issue. If it doesn't, please disable all other addons to see if the problem still occurs.
In reply to Cakechart:
Unfortunatly no changes :(
In reply to orlith77:
Is that with only Rarity enabled? It doesn't happen for me, but I imagine it would be caused by the Tooltip API changes. I probably need to change a lot more than I have, but first I'll need a way to reproduce the problem.
In reply to Cakechart:
No changes, still happening. I've noticed this with other addon adding something to the tooltips. You're propably right, as I loaded game with only your addon and it was ok.
Is there a way to print the list of enabled addons, so we can compare and find the one responsible? I know there's a file in WoW folder, but it contains hundreds of addons I didn't disable before deleting them :/
In reply to Cakechart:
Hey
Found out this is an issue with Rarity & Plater addon
As soon as I activate plater the issue appears !
Hope you'll be able to reproduce the issue and maybe fix it.
I think I'll post also something on plater side !
In reply to sth_dev:
Can't reproduce this. Likely caused by other addons (that aren't using the new tooltip API)? I've pushed a workaround in the latest release, but no idea if it actually helps to alleviate the issue. If it doesn't, please disable all other addons to see if the problem still occurs.
In reply to Cakechart:
For me, there are two addons that tickle the bug.
With only Rarity + Wowhead Looter, Clicking on a mob that rarity is putting info in the tooltip, will almost always double the line from Rarity.
With only Rarity + Threat Plates, using an ability in combat will cause an increasing number of lines from Rarity.
With my normal set of around 139 other addons + Wowhead Looter and Threat Plates, I don't see an issue
With my normal set + Rarity, I don't see an issue.
In reply to Lokmar:
Thanks. I wouldn't have thought it could be nameplates addon causing it and here it is: NeatPlates is responsible on my addon setup, but only when nameplates are shown (if they are hidden everything is ok).
I will report that issue to the addon creator.
In reply to sth_dev:
Unfortunately I still can't reproduce it, even with Rarity and NeatPlates enabled. However, I looked at their code and I think I may have found a way to avoid the problem; in the latest release (r718-release-4) Rarity's tooltip addition should only be triggered for the actual game tooltip and not when third-party addons create their own tooltips (which seems to trigger the logic multiple times due to how Blizzard implemented the notifications in their new Tooltip API).
No promises since I can't test the fix, but maybe... just maybe it did the trick?