04-13-19 06:07 AM by: aallkkaa
LibSpellName2SID, and LibSpellName2SID-Passives, have suffered an API change, warranting them a version number jump from 1.0 to 1.1.

The first change has to do with enabling the library in your addon. Whereas before you'd do a simple:
Code:
-- DEPRECATED --
local Lib = LibStub:GetLibrary(LibSpellName2SID);
-- And/Or
local Libp = LibStub:GetLibrary(LibSpellName2SIDPassives);
-- DEPRECATED --
You should now do:
Code:
local Lib = LibStub("LibSpellName2SID-1.1"):NewInstance(YouNameIt);
and/or
local Libp = LibStub("LibSpellName2SID-1.1-Passives"):NewInstance(YouNameIt);

The second change has to do with the SID and LSN metatables. Whereas before you'd declare their local alias as:
Code:
-- DEPRECATED --
local SID = Lib.SID
local LSN = Lib.LSN
-- And/Or
local SIDP = Libp.SID
local LSNP = Libp.LSN
-- DEPRECATED --
You should now do:
Code:
local SID = Lib.clients[YouNameIt].SID
local LSN = Lib.clients[YouNameIt].LSN
-- And/Or
local SIDP = Libp.clients[YouNameIt].SID
local LSNP = Libp.clients[YouNameIt].LSN
And then, as you would before, use it like so:
Code:
local MySpellID = SID["EnglishSpellName"(string) or SpellID(number)
local MyLocalizedSpellName = LSN["EnglishSpellName"(string) or SpellID(number)
-- And/Or
local MyPassiveSpellID = SIDP["EnglishSpellName"(string) or SpellID(number)
local MyLocalizedPassiveSpellName = LSNP["EnglishSpellName"(string) or SpellID(number)

A third change has to do with the function :SetFaction(...). This is actually what prompted the need for the changes in the whole API. The purpose of having different factions set for different instances of the library (sp. different addons) is os that you can have one addon getting say the Alliance spell IDs 8say the player's) and another getting the Horde ones (say the player's target), or even the same addon getting the different spell IDs for different units.
This is the first implemented function for which this makes sense. But others will follow, using this very same mechanic. Some of these functions (to be implemented Blizzard-soon(TM) ) include: SetWhitelist(...), SetBlacklist(...), SetLookupOrder(...) and CleanupInstance().

LibSpellName2SID-Passives now includes a new category under General: Riding. All GeneralTab spells that have "Riding" or "Pathfinder" in their names go into this subcategory.

On another related subject: I subscribed for another month of WoW after the free weekend, thus making it much easier for me to test and coolect the data.
However, testing and collecting the data without a subscription, as I had previously thought and stated on my previous News post. It's a bit more cumbersome with only a Trial account, but doable. It turns out that characters at level 1 already allow you to fetch all base spells and PVE and PVP talents' spells.
Well, the Flyout spells require the character to have learned at least one of the spells springing out of the base Flyout button, but even that can be worked around - if you know the spell ID for the base Flyout spell, then you can fetch all the spells sprining off it.
Pets' spells present a similar problem to that of Flyouts but actually require a wider variety of methods to fetch said spells, depending on the character's Class. Hunter pets are notably difficult to fetch from the server because of the sheer amount of different pets with different spells that are available in the game - and thus ironically I don't even need to login to the game to build that list; instead I simply refer to wowhead.com.
There are also some spells that I found "by accident", namely several Druid spells I learned about from playing a higher level Druid (not capped yet, but high enough). These spells are learned from Tomes (Flap, Treant Form, etc) but are not items, they actually become class spells once learned and thus are included in this library. There might be other such cases for other classes (aside fromt he Mage Polymorph Variants, Teleports and Portals, as well as Shaman Hex Variants; all of these fetchable from the server in the way I described above, for Flyout spells). Without a proper WoW subscription, the chances I accidentally run into such spells is rather slim.

Above, I mainly talked about fetching spells from within a Trial account, but I realized after my previous News post that I still had access to my PTR account, even without an active subscrition. This allows me to "go after" missing spells in my Trial account much easier. Matter of fact, as far as Allied Races' racial spells go, for 5 of the 8 new races, this is how I got them!
Same goes for Death Knight and Demon Hunter spells, as these Hero Classes are not available to a Trial account.
Also, some spells in the General tab depend on having earned some achievement or some other requirement, which can be hard to get (if not impossible) on a Trial account, but are often obtainable in the PTR.


If you've read this far into this overwhelmingly high wall of text, there's a chance you might actually be willing to help me with this project. You can do this in two different ways:
1. My eal-life financial situation is still rather shakey and therefore, if you can spare it, a small donation would help a lot in keeping my WoW subscription active, thus allowing me to keep on gathering the required data without too much hassle. Follow this link if you want to drop a coin on my hat: https://www.wowinterface.com/downloa...ID.html#donate . Over the other way to help - that I'll outline bellow - this one also has the advantage of motivating me to keep on with this work.
2.1. The second way you cvan help is to report errors in the databse (missing spells, spells no longer present ingame, wrong SpellName-SpellID pairs). You can open a bug with such remarks clicking the Bugs tab above ( https://www.wowinterface.com/portal.php?id=1203&a=listbugs ).
2.2. Complimentarily, you could also use my Populator addon, available through this project SVN ( http://svn.wowinterface.com/listing.php?repname=LibSpellName2SID&path=%2Fpopulator%2Ftrunk%2FLibSpellName2SID-1.1-Populator%2F#_populator_trunk_LibSpellName2SID-1.1-Populator_ ). Please do note that this addon is very rough, but at the same time, very easy to use: You simply enable it (it's set to disabled by default), login in to your character, and it will gather the data mostly with no need for you to do anything. Well, fetching Pets' spells can be a bit quirky (I think I have them all working now, but...) and it is mandatory for the concerning Pet to be active for this purpose (often you have to dismiss it and then summon it again). Once you logout, a file called LibSpellName2SID-1.1-Populator.lua will be saved to Your_World_of_Warcraft_Folder\_retail_\WTF\Account\Your_Account\Saved Variables. This file will hold the data for all the classes you run LibSpellName2SID-1.1-Populator on. If you would be so kind, please send me a PM with said file ( LibSpellName2SID-1.1-Populator.lua ). There is no personal information contained in said file (no account details, no character nor realm names; only the classes you ran the addon on, the character levels and the Game Build (I really need this last piece of info)).

If you'd like me to release Populator as a proper addon (and possibly polish it a bit), please open a Feature request by clicking the apropriate tab above ( https://www.wowinterface.com/portal.php?id=1203&a=listfeatures ).

I'd appreciate your help and feedback!

And... have fun!


May 2nd 2019: Edited a ouple lines to reflect the change implemented in 1.1.01.