SilverDragon - Rare Scanner
SilverDragon
SilverDragon tracks rares in World of Warcraft. It will try everything possible to notice them and tell you about them.
How does it search?
Vignettes
Those little skull icons you see on the minimap. If one of them is a rare SilverDragon knows about, it'll yell at you.
Targets
If you mouse over or target a rare mob, SilverDragon will notice it.
Nameplates
If you have enemy nameplates turned on, SilverDragon will keep an eye on them to look for the names of known rares.
Macro
SilverDragon can also create a macro to target any rares that are known in the current zone. You can stick this on your actionbars as a button to spam while chasing after a rare, or bind it to a key. This is sort of a last resort.
Chat
Some rares yell in zone chat. If SilverDragon notices those yells, it'll alert you.
Dark Magic
This abuses detection of when Blizzard blocks attempts to call a protected function (TargetUnit
) to work out when you're in targetting range of a unit with a given name
This inherently causes in-game errors, so it is disabled by default. Enable in the addon config under Scanning / Dark Magic
.
By default it's less-aggressive, scanning through rares in the zone without known vignettes at a rate of 1/second. However, you can turn that rate way up if you'd like. You can also turn on an option to automatically hide the error messages it causes, but beware that this will potentially cause taint issues that'll leave you needing to /reload
eventually.
How will I know when a rare is seen?
Frame
When a rare appears, SilverDragon will pop up a frame that you can click on to target it.
Warning: If you're in combat, secure action restrictions mean that it won't show up until combat finishes.
Sounds
You can choose from assorted sounds to play when a rare is seen. The sound can loop for a while, to make sure you don't miss it.
There's special settings for rares that drop mounts and world boss rares which you might want to call up a group for. If you're sitting mostly-AFK on a Time-Lost Proto Drake spawn, you probably want the sound that plays to be utterly ridiculous and go on for a good long while, to make sure you don't miss that sucker.
Messages
A notice can be sent to a number of places:
- your scrolling combat text
- your chat frame
- a channel in your chat frame (announcing it to your party, for instance)
- a popup window
- etc
History
A log of seen rares will be shown in a window, so you can easily glance over spawn times.
Other useful things?
Custom mobs
In SilverDragon's options you'll find a "Mobs" section. In the "Always" section, you can add any mob you want to be scanned for. All you need to know is the mob id.
So, let's say you wanted to keep an eye out for Lil Timmy in Stormwind, to buy the kitten he sells. You would...
- Go to his wowhead page.
- Grab his id from the URL. It's
8666
. - Enter
8666
into the "add" field, and click "okay". - Play with your new kitten.
Yes, this example dates me.
Ignoring mobs
If there's some mob you don't want to hear about for whatever reason, just go to the "Ignore" section of the options. Again, enter the mob's id into the "add" box, then click okay. Bam! You will never again be told that Vern is up.
(Actually, Vern is ignored by default. But you get the idea.)
Alternately, right-click the close button for the popup and that'll ignore it as well.
Syncs
SilverDragon will talk to itself. It can communicate with other copies of itself run by people in your party / guild, and tell you when they see a rare mob. (If there's a group of you camping all the Time-Lost Proto Drake spawns, say...)
You can turn this off completely, if you want to be private about it.
Tooltips
Some rares are part of an achievement. When you mouse over a rare mob, SilverDragon will add to the tooltip whether you've already killed it, so you know whether you need to rush for it.
Broker
SilverDragon includes a Broker plugin. It'll attach itself to the addon compartment and also your minimap, or a Broker container you have installed, and show you a list of the mobs it knows about in the current zone.
Other addons you may find useful
- AppearanceTooltip: integrates with the SilverDragon loot popups and shows transmog-known status.
- ServerRestartSound: plays a sound when the server's about to restart. If you're AFK-camping for a rare spawn, you probably want to know about this.
- ObjectScanner: A few rares are hidden away behind interacting with world-objects like the Edge of Reality. These have to be localized individually, so you need to work out what they're called in your language and set up a watch for tooltips mentioning them. This addon does that bit.
- ButtonBin: a broker display. SilverDragon's minimap icon will show up on it (or any other addon like it) instead of cluttering up your minimap, if you have it installed.
Is there any way to track Disturbed Earth?
https://www.wowhead.com/object=422531/disturbed-earth
In reply to f_lambda:
Not really. Closest you can come for a world-object like that is to watch tooltips for its name, but since that relies on you already being there with your mouse over it that's not really all that great. (I had an addon specifically for that, but haven't bothered to keep it up to date.)
Hi have done the recent update for this app and yet I am getting this error message every time I pass a rare. Here it is. I have been using this app for almost a decade maybe more and enjoy it greatly. Here's the error message I keep getting.
Message: ...face/AddOns/AddOnSkins/Skins/AddOns/SilverDragon.lua:13: attempt to index field 'backdrop' (a nil value)
Time: Fri Aug 23 15:31:51 2024
Count: 2
Stack: ...face/AddOns/AddOnSkins/Skins/AddOns/SilverDragon.lua:13: attempt to index field 'backdrop' (a nil value)
[string "@Interface/AddOns/AddOnSkins/Skins/AddOns/SilverDragon.lua"]:13: in function <...face/AddOns/AddOnSkins/Skins/AddOns/SilverDragon.lua:7>
[string "@Interface/AddOns/SilverDragon/targets/popup.lua"]:15: in function `ApplyLook'
[string "@Interface/AddOns/SilverDragon/targets/popup.lua"]:370: in function <Interface/AddOns/SilverDragon/targets/popup.lua:193>
[string "=(tail call)"]: ?
[string "=(tail call)"]: ?
[string "@Interface/AddOns/Blizzard_SharedXMLBase/Pools.lua"]:45: in function <Interface/AddOns/Blizzard_SharedXMLBase/Pools.lua:37>
[string "=(tail call)"]: ?
[string "=(tail call)"]: ?
[string "@Interface/AddOns/SilverDragon/targets/popup.lua"]:25: in function `ShowFrame'
[string "@Interface/AddOns/SilverDragon/targets/queue.lua"]:77: in function `ProcessQueue'
[string "@Interface/AddOns/SilverDragon/targets/queue.lua"]:68: in function `Enqueue'
[string "@Interface/AddOns/SilverDragon/targets/module.lua"]:98: in function `?'
...
[string "@Interface/AddOns/AllTheThings/lib/CallbackHandler-1.0/CallbackHandler-1.0.lua"]:19: in function <...ings/lib/CallbackHandler-1.0/CallbackHandler-1.0.lua:15>
[string "@Interface/AddOns/AllTheThings/lib/CallbackHandler-1.0/CallbackHandler-1.0.lua"]:54: in function `Fire'
[string "@Interface/AddOns/SilverDragon/core.lua"]:582: in function `NotifyForMob'
[string "@Interface/AddOns/SilverDragon/scan/targets.lua"]:122: in function `ProcessUnit'
[string "@Interface/AddOns/SilverDragon/scan/targets.lua"]:56: in function `?'
[string "@Interface/AddOns/AllTheThings/lib/CallbackHandler-1.0/CallbackHandler-1.0.lua"]:109: in function <...ings/lib/CallbackHandler-1.0/CallbackHandler-1.0.lua:109>
[string "=[C]"]: ?
[string "@Interface/AddOns/AllTheThings/lib/CallbackHandler-1.0/CallbackHandler-1.0.lua"]:19: in function <...ings/lib/CallbackHandler-1.0/CallbackHandler-1.0.lua:15>
[string "@Interface/AddOns/AllTheThings/lib/CallbackHandler-1.0/CallbackHandler-1.0.lua"]:54: in function `Fire'
[string "@Interface/AddOns/ElvUI_Libraries/Core/Ace3/AceEvent-3.0/AceEvent-3.0.lua"]:120: in function <...UI_Libraries/Core/Ace3/AceEvent-3.0/AceEvent-3.0.lua:119>
Locals: self = <table> {
defaults = <table> {
}
queue = <table> {
}
defaultModuleState = true
stack = <table> {
}
db = <table> {
}
enabledState = true
Looks = <table> {
}
LookConfig = <table> {
}
overflow = <table> {
}
anchor = Frame {
}
defaultModuleLibraries = <table> {
}
name = "SilverDragon_ClickTarget"
orderedModules = <table> {
}
baseName = "SilverDragon"
pools = <table> {
}
LookReset = <table> {
}
modules = <table> {
}
moduleName = "ClickTarget"
}
popup = SilverDragonPopupButton1 {
glow = Texture {
}
close = SilverDragonPopupButton1CloseButton {
}
animFade = AnimationGroup {
}
status = FontString {
}
background = Texture {
}
RightEdge = Texture {
}
template = "Transparent"
animIn = AnimationGroup {
}
iborder = Frame {
}
Center = Texture {
}
model = PlayerModel {
}
shine = Texture {
}
BottomEdge = Texture {
}
source = FontString {
}
BottomRightCorner = Texture {
}
PixelSnapDisabled = true
BottomLeftCorner = Texture {
}
TopRightCorner = Texture {
}
TopLeftCorner = Texture {
}
backdropInfo = <table> {
}
scripts = <table> {
}
dead = Texture {
}
oborder = Frame {
}
title = FontString {
}
TopEdge = Texture {
}
lootIcon = Button {
}
raidIcon = Texture {
}
modelbg = Texture {
}
LeftEdge = Texture {
}
}
(*temporary) = nil
(*temporary) = nil
(*temporary) = SilverDragonPopupButton1CloseButton {
animIn = Alpha {
}
PixelSnapDisabled = true
Texture = Texture {
}
}
(*temporary) = true
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = "attempt to index field 'backdrop' (a nil v
In reply to TIGGRAIN: that’s another addon you have installed — AddOnSkins. Tell them about this error.
oh there is more to it...
<=29 minutes shows correctly
=30 minutes shows correctly for a few seconds but before the next minute it switches to 1h 30m
=30 minutes is showing as 1h 30m (watched it go from 26->27->28->29->30 and before 31m it displayed 1h 30m)
=31 minutes shows 1h 31m
=35 minutes shows 1h 35m
=104 minutes shows as 2h 104m
=113 minutes shows as 2h 113m
the timer in the tooltip itself is always accurate (minutes)
In reply to realnerf: Oops, I copied over some logic from elsewhere in the addon that showed relative times, but didn't include the same constraints (it only shows hours there if it's been more than 120 minutes, etc), and that caused some weird displays. I've just put up an alpha that'll fix this.
In reply to Kemayo: thank you for the super fast build :)
just got to 31m and is displaying correctly. thank you again
hello Kemayo,
i'm experiencing a time display bug on the history window. when a timer reaches 1 hour, it displays as 1 hr plus the total minutes. the mouseover tooltip of the identity displays the time correctly but not the history window entry.
for example, at 1 hour and 1 minute, the history window entry shows "1h 61m". looks like the minutes are 'total minutes' since seen (need to subtract the hours)?
example:
HISTORY WINDOW
Vakri 1h 68m
vignette
TOOLTIP OVER HISTORY ENTRY FOR Vakril
Seen 68 minute(s)
issue experienced with live version and also the most recent alpha from today v2024.12-5-g6494346
We need chinese。Maybe I can translate。
Does this addon show the shard the character is currently on?
In reply to Pendelhaven:
Technically it sort of does, but I haven't made it very visible yet. In the tooltips in the history frame, the shard the mob/treasure was on is shown, and it's colored in green if you're on the same shard. I've been considering whether I want to show it somewhere more obvious, but haven't decided how actually-useful that information is beyond what I'm already doing with filtering out non-your-shard rares from the history (and maybe in future from other announcements).
Do you have a specific use-case for knowing the exact ID?
In reply to Kemayo:
For the Breezebiter NPC that drops a mount, sometimes the shard changes when the Azerothian Archives event is active, which messes up the spawn timer. Therefore i would like to know if I am sharded so i don't wait in vain
In reply to Pendelhaven:
Assuming that you've got the history window up and saw the previous spawn, you'd be able to detect this shift by noticing that said spawn has suddenly dimmed out in the list. I'll look at making the information more directly available in the UI, though.
Hello Kemayo. i really like the new History window because it's more compact than the popups and remains longer, along with an up to date timer since last seen. Also like that mouse over gives all the info (rare) like the popups.
Question#1:
Is there a possibility to allow a right-click on an entry from the History window to remove the entry? I can see myself using the history as a list of rares to tackle but once i deal with said rare or if i want to skip one, a right-clicking it would keep the list clean. Otherwise i need to write it down since i can't remember :(
Question#2:
Is it possible to customize the width and the max height of the History window?
thank you
In reply to realnerf: Good idea, there's an alpha up now with both of those.
In reply to Kemayo: wow, already! you are amazing.
i tried both features and they work as expected.
Thank you for adding the features and so quickly :)
In reply to Kemayo: Unfortunately I do not have this option. I have removed the addon from both CurseForge and WowUp in the event there was some confusion or issue. I then reinstalled using CurseForge and still do not have any History heading within the addon options :( https://imgur.com/a/dEwWJMN
In reply to Kemayo: I did not realize here was an additional module for the addon that needed to be enabled. This allowed me to have the feature back. My apologies!
My "SilverDragonMacroButton" doesn't seem to be working. If I recall correctly from my WotLK days, this button should attempt to target known rares in the zone (e.g. in Storm Peaks /tar Skoll, /tar Time-Lost... in Sholazar /tar Loque, /tar King Krush, etc...), and there should be some feedback in the chat: "Scanning for 5 nearby mobs..." or something like that. Right?
I've tried using the "Create Macro" button in the options panel, or manually creating my own macro "/click SilverDragonMacroButton" -- and then I've tried assigning that macro to various keybinds, clicking it with the mouse, /reloading, disabling all other addons... I can't seem to get the magic button to do anything at all. (It's not targeting rares that are right in front of me in the game world, and it's not printing the "Scanning for X nearby mobs..." either.)
What am I missing?
In reply to Wyrmrider: Right, 11.0.0 completely-broke macro-extension, so now we're limited to only 255 characters in a single macro. When the macro needs to type `/target [name of rare]` for every rare in a zone, this adds up quite quickly.
I need to decide how I want to change the macro. I will *probably* alter it to sort known rares by distance from your current location, and fit as many as it can into the space available. It's more expensive to keep on checking, and loses out a bit on flexibility, but it'll work.