LilSparky's Workshop

This project is abandoned.

Whether this project is out of date or its author marked it as abandoned, this project is no longer maintained.

If you wish to take this project over, please report it and state your intentions.

LSW First Aid w/ Standard Interface

LilSparky's Workshop adds auction-derived pricing information for trade skills right into the trade skill recipe frame. Each skill is evaluated for material costs and potential value of the item created. These two numbers are listed next to each skill in an easy-to-read format.

Supported Auction Scanners:

  • Auctioneer
  • AuctionLite
  • AuctionMaster
  • Auctionator

Optionally Requires:

  • Informant (for vendor availability)

LibPeriodicTable (for vendor availability)

Trade Skill Interfaces Supported:

  • GnomeWorks
  • AdvancedTradeSkillWindow
  • Skillet
  • Blizzard's Standard UI
  • Doublewide Tradeskills
  • Tradeskill HD

Auction pricing models can be selected by right-clicking either the value column or the cost column (each can have a different pricing method attached).

The Value column can be left clicked to cycle through the different valuation methods for the resultant item: Auction Value (a), Vendor Value (v), Disenchant Value (d) or the greatest of the three different values (the default). Any instance of an item Value being greater than the Cost to create it will have a highlighted Value entry. Optionally, the Value column can be displayed as a percentage of the Cost column.

The Cost column simply sums up the costs for each reagent and reports the total.

Both columns can be combined into a single "Profit" column which simply reflects the Value minus the Cost.

Tooltips for each column give more details about the price breakdowns LSW is considering.

A note regarding vendor availability:

LSW utilizes supplied item databases to determine when an item is readily available from a vendor. Occasionally this may not be accurate, usually because the item is a trade in for another item and not buyable with gold. I have provided a simple way to over-ride the vendor database:

/script LSWConfig.vendorOverride[item#] = (true/false/nil)

The item# is the item ID for the specific item. It is a single number. For example, 2589 is Linen Cloth.
Setting the value to "true" means the item is available at the vendor.
Setting the value to "false" means the item is not available at the vendor.
Setting the value to "nil" means to use the provided databse.

There is now also a right-click option to override the vendor availability and also to hand enter specific prices for items.

A note about frame/auction support:

LSW utilizes a plug in scheme to handle support to handle pricing and frame support. I am unlikely to add additional plugins directly into LSW. The goal of the plugin system is to provide basic templates that other addon authors could employ to provide LSW support on their end while at the same time providing functionality for a base set of common mods. Addon authors are free to contact me regarding the plugin system if issues arise or the system doens't make sense.

You must login to post a comment. Don't have an account? Register to get one!

  • Avatar of yunohu yunohu Nov 01, 2013 at 00:39 UTC - 0 likes

    @lilsparky: Go

    I opened a ticket about it, it's definitely reporting invalid values.

  • Avatar of lilsparky lilsparky Oct 02, 2013 at 07:50 UTC - 0 likes

    @yunohu: Go

    if it's just for enchanting, i think it may be an api bug i've seen reported regarding the # of items crafted (enchants apparently return a random value now). i don't think i've seen anything peculiar on the ptr, so it could be fixed now and waiting for an update. i'll double-check.

  • Avatar of yunohu yunohu Oct 01, 2013 at 18:43 UTC - 0 likes

    The values that lilsparky's workshop reports for crafting items is totally bogus in 5.4. It will tell me things like 875g for an enchant, but auctioneer reports it as 3g for the enchant. The auctioneer value matches up with what is in the AH.

  • Avatar of alisonnic alisonnic Jun 01, 2013 at 02:21 UTC - 0 likes

    I have taken over maintenance of KevTool Queue, an addon which allows you to automatically queue items up for crafting in GnomeWorks or Skillet with a simple command. I have found the combination of GW, LilSparky's Workshop, and KTQ to be extremely powerful. It saves me an enormous amount of time on my daily crafting chores.

    I've posted a new version of KTQ with some updates for WoW 5.3. If you'd like to check it out, please go to:

    Or search for KevTool Queue in the Curse client.

    Last edited Jun 01, 2013 by alisonnic
  • Avatar of lilsparky lilsparky May 29, 2013 at 18:24 UTC - 0 likes

    hughescr has been added as an author for lsw

  • Avatar of bsmorgan bsmorgan May 22, 2013 at 03:13 UTC - 0 likes

    There are issues with 5.3, ticket entered.

  • Avatar of bsmorgan bsmorgan Mar 13, 2013 at 17:32 UTC - 0 likes


    Hopefully, you can get added as an author to this addon as well so we can get a your patch(es) into SVN.

  • Avatar of hughescr hughescr Mar 12, 2013 at 05:40 UTC - 0 likes

    Using this patch instead should fix things without needing to change the call in UpdateRecipeCache. This is how I fixed the same problem in GnomeWorks; I also blatantly copied that code from somewhere internety, but I think it's a nicer solution. If Blizz ever fixes GetTradeSkillItemReagentLink() to not return nil all the time, then it's an easier revert. It's also much cleaner code. The original code is going to leak a lot of frames, since it's creating a new frame every call to the function; mine caches the frame and only uses one per time the addon is loaded. You'll run out of memory less :)

    --- i/lilsparkysworkshop.lua
    +++ w/lilsparkysworkshop.lua
    @@ -9,6 +9,18 @@ local LSW_VERSION = "LSW r"..REV
     local LSW_VERSION_LONG = "LilSparky's Workshop r"..REV
    +local scanTooltip
    +local function GetTradeSkillReagentItemLink(skillIndex, reagentLink)
    +    if not scanTooltip then
    +        scanTooltip = CreateFrame("GameTooltip", "LSWScanTooltip", UIParent, "GameTooltipTemplate")
    +        scanTooltip:SetOwner(UIParent, "ANCHOR_NONE")
    +    end
    +    scanTooltip:ClearLines()
    +    scanTooltip:SetTradeSkillItem(skillIndex, reagentLink)
    +    return select(2, scanTooltip:GetItem())
     LSWConfig = { }
     LSWPrices = {value={}, valueSamples={},cost={},costSamples={}}
  • Avatar of thetravellor thetravellor Mar 07, 2013 at 08:48 UTC - 0 likes

    @thetravellor: Go

    no, that didnt work

    Message: ...ace\AddOns\LilSparkysWorkshop\lilsparkysworkshop.lua:1200: attempt to call global 'FixedGetTradeSkillItemLink' (a nil value) Time: 03/07/13 19:46:52 Count: 1 Stack: Interface\AddOns\Auctionator\AtrErrorInspector.lua:106: in function <Interface\AddOns\Auctionator\AtrErrorInspector.lua:51> [C]: in function `FixedGetTradeSkillItemLink' ...ace\AddOns\LilSparkysWorkshop\lilsparkysworkshop.lua:1200: in function <...ace\AddOns\LilSparkysWorkshop\lilsparkysworkshop.lua:1189> ...ace\AddOns\LilSparkysWorkshop\lilsparkysworkshop.lua:1618: in function `triggerFunction' ...ace\AddOns\LilSparkysWorkshop\lilsparkysworkshop.lua:2610: in function <...ace\AddOns\LilSparkysWorkshop\lilsparkysworkshop.lua:2602>

    Locals: msg = " ...ace\AddOns\LilSparkysWorkshop\lilsparkysworkshop.lua:1200: attempt to call global 'FixedGetTradeSkillItemLink' (a nil value)" funcnames = <table> { 1 = "FixedGetTradeSkillItemLink" 2 = "triggerFunction" } funcstr = "FixedGetTradeSkillItemLink > triggerFunction" looksLikeAuctionatorError = false inAtrErrorHandler = true origErrorHandler = <function> defined *:OnLoad:1 zc = <table> { msg_red = <function> defined @Interface\AddOns\Auctionator\zcUtils.lua:608 IsEnglishLocale = <function> defined @Interface\AddOns\Auctionator\AuctionatorLocalize.lua:52 msg_badErr = <function> defined @Interface\AddOns\Auctionator\zcUtils.lua:644 tallyAdd = <function> defined @Interface\AddOns\Auctionator\zcUtils.lua:1121 msg = <function> defined @Interface\AddOns\Auctionator\zcUtils.lua:737 GetArrayElemOrFirst = <function> defined @Interface\AddOns\Auctionator\zcUtils.lua:150 NumToBool = <function> defined @Interface\AddOns\Auctionator\zcUtils.lua:562

  • Avatar of thetravellor thetravellor Mar 07, 2013 at 08:23 UTC - 0 likes


    In regards: Change one line in UpdateRecipeCache() to point to the new function

    What line did you change?

    Like this?

    if skillType = "header" then local itemLink = FixedGetTradeSkillItemLink(i)

    Last edited Mar 07, 2013 by thetravellor


Date created
Oct 10, 2007
Last update
May 29, 2013
Development stage
  • enUS
GNU General Public License version 3 (GPLv3)
Recent files
  • A: r155 for 5.3.0 May 29, 2013
  • A: r154 for 5.3.0 May 29, 2013
  • A: r153 for 5.2.0 May 28, 2013
  • A: r152 for 5.2.0 May 13, 2013
  • A: r151 for 5.2.0 Mar 21, 2013