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.
In reply to Kemayo:
I feel like I am not communicating well enough here. My goal is, sometimes I get a popup and I go "oh, I guess I never disabled alerts for this rare, I don't care about it, let me go and disable the alert", and I have to go and dig through the SilverDragon settings to make sure I stop getting alerts for this NPC. I just want to be able to do that from the alert popup directly.
But you don't want to close the popup when you're ignoring it? (Right-clicking the close button closes the popup and ignores future alerts for that rare...)
In reply to Kemayo:
Aah, this is what I was missing. I don't think I knew this existed. This is exactly what I was asking for (I knew I could right-click anywhere on the popup to close it, but didn't know I could right-click on the X to ignore). Thanks!
Bugs when mining ores? And fighting?
Message: Interface\SharedXML\MathUtil.lua:104: attempt to perform arithmetic on local 'y1' (a nil value)
Time: Thu Dec 24 06:47:49 2020
Count: 1
Stack: Interface\SharedXML\MathUtil.lua:104: attempt to perform arithmetic on local 'y1' (a nil value)
[string "=(tail call)"]: ?
[string "@Interface\SharedXML\MathUtil.lua"]:104: in function <Interface\SharedXML\MathUtil.lua:103>
[string "=(tail call)"]: ?
[string "@Interface\AddOns\SilverDragon_Overlay\worldmap.lua"]:182: in function `Connect'
[string "@Interface\AddOns\SilverDragon_Overlay\worldmap.lua"]:109: in function `ConnectPins'
[string "@Interface\AddOns\SilverDragon_Overlay\worldmap.lua"]:95: in function `AddRoute'
[string "@Interface\AddOns\SilverDragon_Overlay\worldmap.lua"]:66: in function `RefreshAllData'
[string "@Interface\AddOns\SilverDragon_Overlay\worldmap.lua"]:200: in function `UpdateWorldMapIcons'
[string "@Interface\AddOns\SilverDragon_Overlay\module.lua"]:201: in function `?'
[string "@Interface\AddOns\Accountant_Classic\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua"]:119: in function <...sic\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:119>
[string "=[C]"]: ?
[string "@Interface\AddOns\Accountant_Classic\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua"]:29: in function <...sic\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:25>
[string "@Interface\AddOns\Accountant_Classic\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua"]:64: in function `Fire'
[string "@Interface\AddOns\Accountant_Classic\Libs\AceEvent-3.0\AceEvent-3.0.lua"]:120: in function <...ccountant_Classic\Libs\AceEvent-3.0\AceEvent-3.0.lua:119>
[string "=[C]"]: in function `CloseLoot'
[string "@Interface\FrameXML\LootFrame.lua"]:376: in function <Interface\FrameXML\LootFrame.lua:375>
[string "=[C]"]: in function `Hide'
[string "@Interface\FrameXML\UIParent.lua"]:2976: in function `HideUIPanel'
[string "@Interface\FrameXML\UIParent.lua"]:2627: in function <Interface\FrameXML\UIParent.lua:2619>
[string "=[C]"]: in function `SetAttribute'
[string "@Interface\FrameXML\UIParent.lua"]:3488: in function `HideUIPanel'
[string "@Interface\FrameXML\LootFrame.lua"]:315: in function `LootFrame_Close'
[string "@Interface\FrameXML\LootFrame.lua"]:130: in function <Interface\FrameXML\LootFrame.lua:56>
Locals: <none>
Message: Interface\SharedXML\MathUtil.lua:104: attempt to perform arithmetic on local 'y2' (a nil value)
Time: Thu Dec 24 06:43:58 2020
Count: 1
Stack: Interface\SharedXML\MathUtil.lua:104: attempt to perform arithmetic on local 'y2' (a nil value)
[string "=(tail call)"]: ?
[string "@Interface\SharedXML\MathUtil.lua"]:104: in function <Interface\SharedXML\MathUtil.lua:103>
[string "=(tail call)"]: ?
[string "@Interface\AddOns\SilverDragon_Overlay\worldmap.lua"]:182: in function `Connect'
[string "@Interface\AddOns\SilverDragon_Overlay\worldmap.lua"]:109: in function `ConnectPins'
[string "@Interface\AddOns\SilverDragon_Overlay\worldmap.lua"]:95: in function `AddRoute'
[string "@Interface\AddOns\SilverDragon_Overlay\worldmap.lua"]:66: in function `RefreshAllData'
[string "@Interface\AddOns\SilverDragon_Overlay\worldmap.lua"]:200: in function `UpdateWorldMapIcons'
[string "@Interface\AddOns\SilverDragon_Overlay\module.lua"]:201: in function `?'
[string "@Interface\AddOns\Accountant_Classic\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua"]:119: in function <...sic\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:119>
[string "=[C]"]: ?
[string "@Interface\AddOns\Accountant_Classic\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua"]:29: in function <...sic\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:25>
[string "@Interface\AddOns\Accountant_Classic\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua"]:64: in function `Fire'
[string "@Interface\AddOns\Accountant_Classic\Libs\AceEvent-3.0\AceEvent-3.0.lua"]:120: in function <...ccountant_Classic\Libs\AceEvent-3.0\AceEvent-3.0.lua:119>
[string "=[C]"]: in function `CloseLoot'
[string "@Interface\FrameXML\LootFrame.lua"]:376: in function <Interface\FrameXML\LootFrame.lua:375>
[string "=[C]"]: in function `Hide'
[string "@Interface\FrameXML\UIParent.lua"]:2976: in function `HideUIPanel'
[string "@Interface\FrameXML\UIParent.lua"]:2627: in function <Interface\FrameXML\UIParent.lua:2619>
[string "=[C]"]: in function `SetAttribute'
[string "@Interface\FrameXML\UIParent.lua"]:3488: in function `HideUIPanel'
[string "@Interface\FrameXML\LootFrame.lua"]:315: in function `LootFrame_Close'
[string "@Interface\FrameXML\LootFrame.lua"]:130: in function <Interface\FrameXML\LootFrame.lua:56>
Locals: <none>
Message: Interface\SharedXML\MathUtil.lua:104: attempt to perform arithmetic on local 'y2' (a nil value)
Time: Thu Dec 24 06:43:58 2020
Count: 1
Stack: Interface\SharedXML\MathUtil.lua:104: attempt to perform arithmetic on local 'y2' (a nil value)
[string "=(tail call)"]: ?
[string "@Interface\SharedXML\MathUtil.lua"]:104: in function <Interface\SharedXML\MathUtil.lua:103>
[string "=(tail call)"]: ?
[string "@Interface\AddOns\SilverDragon_Overlay\worldmap.lua"]:182: in function `Connect'
[string "@Interface\AddOns\SilverDragon_Overlay\worldmap.lua"]:109: in function `ConnectPins'
[string "@Interface\AddOns\SilverDragon_Overlay\worldmap.lua"]:95: in function `AddRoute'
[string "@Interface\AddOns\SilverDragon_Overlay\worldmap.lua"]:66: in function `RefreshAllData'
[string "@Interface\AddOns\SilverDragon_Overlay\worldmap.lua"]:200: in function `UpdateWorldMapIcons'
[string "@Interface\AddOns\SilverDragon_Overlay\module.lua"]:201: in function `?'
[string "@Interface\AddOns\Accountant_Classic\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua"]:119: in function <...sic\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:119>
[string "=[C]"]: ?
[string "@Interface\AddOns\Accountant_Classic\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua"]:29: in function <...sic\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:25>
[string "@Interface\AddOns\Accountant_Classic\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua"]:64: in function `Fire'
[string "@Interface\AddOns\Accountant_Classic\Libs\AceEvent-3.0\AceEvent-3.0.lua"]:120: in function <...ccountant_Classic\Libs\AceEvent-3.0\AceEvent-3.0.lua:119>
Locals: <none>
Message: Interface\SharedXML\MathUtil.lua:104: attempt to perform arithmetic on local 'y1' (a nil value)
Time: Thu Dec 24 06:48:37 2020
Count: 2
Stack: Interface\SharedXML\MathUtil.lua:104: attempt to perform arithmetic on local 'y1' (a nil value)
[string "=(tail call)"]: ?
[string "@Interface\SharedXML\MathUtil.lua"]:104: in function <Interface\SharedXML\MathUtil.lua:103>
[string "=(tail call)"]: ?
[string "@Interface\AddOns\SilverDragon_Overlay\worldmap.lua"]:182: in function `Connect'
[string "@Interface\AddOns\SilverDragon_Overlay\worldmap.lua"]:109: in function `ConnectPins'
[string "@Interface\AddOns\SilverDragon_Overlay\worldmap.lua"]:95: in function `AddRoute'
[string "@Interface\AddOns\SilverDragon_Overlay\worldmap.lua"]:66: in function `RefreshAllData'
[string "@Interface\AddOns\SilverDragon_Overlay\worldmap.lua"]:200: in function `UpdateWorldMapIcons'
[string "@Interface\AddOns\SilverDragon_Overlay\module.lua"]:201: in function `?'
[string "@Interface\AddOns\Accountant_Classic\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua"]:119: in function <...sic\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:119>
[string "=[C]"]: ?
[string "@Interface\AddOns\Accountant_Classic\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua"]:29: in function <...sic\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:25>
[string "@Interface\AddOns\Accountant_Classic\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua"]:64: in function `Fire'
[string "@Interface\AddOns\Accountant_Classic\Libs\AceEvent-3.0\AceEvent-3.0.lua"]:120: in function <...ccountant_Classic\Libs\AceEvent-3.0\AceEvent-3.0.lua:119>
[string "=[C]"]: in function `CloseLoot'
[string "@Interface\FrameXML\LootFrame.lua"]:376: in function <Interface\FrameXML\LootFrame.lua:375>
[string "=[C]"]: in function `Hide'
[string "@Interface\FrameXML\UIParent.lua"]:2976: in function `HideUIPanel'
[string "@Interface\FrameXML\UIParent.lua"]:2627: in function <Interface\FrameXML\UIParent.lua:2619>
[string "=[C]"]: in function `SetAttribute'
[string "@Interface\FrameXML\UIParent.lua"]:3488: in function `HideUIPanel'
[string "@Interface\FrameXML\LootFrame.lua"]:315: in function `LootFrame_Close'
[string "@Interface\FrameXML\LootFrame.lua"]:130: in function <Interface\FrameXML\LootFrame.lua:56>
Locals: <none>
Message: ...rd_SharedMapDataProviders\WorldQuestDataProvider.lua:185: attempt to index field 'ticker' (a nil value)
Time: Thu Dec 24 06:47:25 2020
Count: 1
Stack: ...rd_SharedMapDataProviders\WorldQuestDataProvider.lua:185: attempt to index field 'ticker' (a nil value)
[string "=[C]"]: ?
[string "@Interface\AddOns\Blizzard_SharedMapDataProviders\WorldQuestDataProvider.lua"]:185: in function `OnHide'
[string "@Interface\AddOns\Blizzard_MapCanvas\Blizzard_MapCanvas.lua"]:93: in function `OnHide'
[string "@Interface\AddOns\Blizzard_WorldMap\Blizzard_WorldMap.lua"]:269: in function <...rface\AddOns\Blizzard_WorldMap\Blizzard_WorldMap.lua:268>
[string "=[C]"]: in function `Hide'
[string "@Interface\FrameXML\UIParent.lua"]:2894: in function `SetUIPanel'
[string "@Interface\FrameXML\UIParent.lua"]:2974: in function `HideUIPanel'
[string "@Interface\FrameXML\UIParent.lua"]:2627: in function <Interface\FrameXML\UIParent.lua:2619>
[string "=[C]"]: in function `SetAttribute'
[string "@Interface\FrameXML\UIParent.lua"]:3488: in function `HideUIPanel'
[string "@Interface\FrameXML\QuestLogOwnerMixin.lua"]:101: in function `SetDisplayState'
[string "@Interface\FrameXML\QuestLogOwnerMixin.lua"]:41: in function `HandleUserActionToggleSelf'
[string "@Interface\AddOns\Blizzard_WorldMap\Blizzard_WorldMap.lua"]:440: in function `ToggleWorldMap'
[string "TOGGLEWORLDMAP"]:1: in function <[string "TOGGLEWORLDMAP"]:1>
Locals:
And the map, apparently
Message: Interface\SharedXML\MathUtil.lua:104: attempt to perform arithmetic on local 'y1' (a nil value)
Time: Thu Dec 24 06:53:33 2020
Count: 5
Stack: Interface\SharedXML\MathUtil.lua:104: attempt to perform arithmetic on local 'y1' (a nil value)
[string "=[C]"]: ?
[string "@Interface\SharedXML\MathUtil.lua"]:104: in function <Interface\SharedXML\MathUtil.lua:103>
[string "=(tail call)"]: ?
[string "@Interface\AddOns\SilverDragon_Overlay\worldmap.lua"]:182: in function `Connect'
[string "@Interface\AddOns\SilverDragon_Overlay\worldmap.lua"]:109: in function `ConnectPins'
[string "@Interface\AddOns\SilverDragon_Overlay\worldmap.lua"]:95: in function `AddRoute'
[string "@Interface\AddOns\SilverDragon_Overlay\worldmap.lua"]:66: in function `RefreshAllData'
[string "@Interface\AddOns\Blizzard_MapCanvas\Blizzard_MapCanvas.lua"]:448: in function `RefreshAllDataProviders'
[string "@Interface\AddOns\Blizzard_MapCanvas\Blizzard_MapCanvas.lua"]:476: in function `RefreshAll'
[string "@Interface\AddOns\Blizzard_MapCanvas\Blizzard_MapCanvas.lua"]:84: in function `OnShow'
[string "@Interface\AddOns\Blizzard_WorldMap\Blizzard_WorldMap.lua"]:246: in function <...rface\AddOns\Blizzard_WorldMap\Blizzard_WorldMap.lua:243>
[string "=[C]"]: in function `Show'
[string "@Interface\FrameXML\UIParent.lua"]:2910: in function `SetUIPanel'
[string "@Interface\FrameXML\UIParent.lua"]:2755: in function `ShowUIPanel'
[string "@Interface\FrameXML\UIParent.lua"]:2623: in function <Interface\FrameXML\UIParent.lua:2619>
[string "=[C]"]: in function `SetAttribute'
[string "@Interface\FrameXML\UIParent.lua"]:3468: in function `ShowUIPanel'
[string "@Interface\FrameXML\QuestLogOwnerMixin.lua"]:103: in function `SetDisplayState'
[string "@Interface\FrameXML\QuestLogOwnerMixin.lua"]:41: in function `HandleUserActionToggleSelf'
[string "@Interface\AddOns\Blizzard_WorldMap\Blizzard_WorldMap.lua"]:440: in function `ToggleWorldMap'
[string "TOGGLEWORLDMAP"]:1: in function <[string "TOGGLEWORLDMAP"]:1>
Locals:
Could you confirm that you're on the latest version? I was fairly sure I'd have fixed that with v90002.11...
Hey, just noticed a couple rare markers missing from the map in Uldum for the Nzoth assault. 2 rather important ones since they both drop pets. 1. is "Skikx'traz" and 2. is "Lord Aj'Qurai". They're both in the drop down list and the waypoints work for them so the addon clearly knows they exist. There's just no map marker for them for some reason. Thanks!
I see them:
In reply to Kemayo:
Oh wait. Does the addon remove them after u defeat them for a day? Is that a thing?
By default, yeah. The map tries to show you "stuff you could go and do right now".
Is there a key explaining what the different icons/colors mean?
Hello,
Could you tell me why this add on keeps disappearing in curseforge app? it is in game but having issues with it not letting me shift click to send to chat.
went to refresh it in curseforge but is is not there.
No idea, sorry. Some random client errors? I have absolutely no influence over that side of things.
As for issues sending to chat... more details?
In reply to Kemayo:
Now When i try to shift click on the mini map icon nothing happens, however when i shift click the lil pop up that show the rare it works, but some rares take a few people tot tackle and the pop up with the rare goes away.
any idea why i cant shift click on the mini map to send to chat now?
Hi.. wasn't there a thunder sound effect? Seems to have disappeared from the Output > Sounds menu.
The sounds menu uses LibSharedMedia, which random addons can register sounds to. Presumably some other addon you were using had it...
Okay, next alpha will have a thunder crack sound registered. No promises it's the one you remember. :D
hi there! I've been using your addon since I started, and it's wonderful.
Unfortunately, since Shadowlands dropped, I've not been able to move the pop-up. It used to move with alt-click and drag, but that doesn't work anymore. Did something change, or am I just borked? I didn't see anything mentioned above, or anywhere else, but I totally could have missed things.
Thanks!
/amq
It should still be movable like that. However, if that's having difficulties, you could go into the settings, into "ClickTarget", and click the "show anchor" button. That should give you something which doesn't need to have any modifiers held to move it.
Suggestion: The drop down list you get when hovering over the dragon icon on the map when trying to locate a rare covers half the map in the process. This makes it impossible to find any rare hidden underneath the popup covering half the map. Can you please shift the be adjacent to the map so we can actually find the rares? Thanks.
That's a good point -- you can do it at the moment via clicking and getting the focus, but...
Here: