Get an Epic Experience with Premium

Reagent Restocker

Bags & Inventory Login to Add Favorites
  • World of Warcraft
  • 474 Monthly Downloads
  • Supports: 6.1.0
  • 273,624 Total Downloads
  • Updated 03/04/2015
  • Created 10/06/2009
  • 382 Favorites
  • Project Site
  • Comments
  • Release Type: Release
  • License: MIT License
  • Newest File: v10.2
Support development! **

About Reagent Restocker

Reagent Restocker is a simple addon for automatically purchasing items, selling unwanted items, and repairing. Unlike many other similar addons, Reagent Restocker supports drag and drop and has a full GUI for editing buy/sell lists.

If you like it, feel free to donate! I highly recommend donating to your favorite addons, it really helps. If every person who downloads this addon donates as little as $1 per month, I could actually work on this addon full time. As it stands, however, it's actually kinda hard to justify putting much time into it at all.

Reagent Restocker now has Google+ and Facebook pages! News, notes, and patch releases will be posted to Google+ and Facebook.

NOTE: I've been seeing copies of Reagent Restocker popping up at other download sites. The only three places I currently upload the addon to are,, and I cannot guarantee the integrity of any other download sites.

What can you do with Reagent Restocker? Well, you can do the following:

  • Automatically buy items from vendors.

  • Automatically sell items you can't use.

  • Automatically fix your gear.

  • Warn you when you're getting low on items you automatically buy.

  • Use LDB to show your current stock of items.

  • Automatically mark items in ArkInventory as trash (Note: This feature is maintained by the authors of ArkInventory).

  • Access it via the minimap (must have LibDBIcon installed).

  • When automatically buying water, it can automatically update the buy list to the latest usable water by your character.

  • Stock excess items in your bank or the guild bank.

  • Control buying/selling/repairing based on vendor discounts.

Devs wanted! It's open source, and I've been busy with other things in real life. I'm willing to add more members to the team. Must have a CurseForge account.


If you have LibDBIcon or a LDB compatible bar installed, you can access Reagent Restocker simply by clicking on the icon. Otherwise, you can access it via slash commands.

To start using Reagent Restocker, type /rr at the command line. /rrstock and /reagentrestocker also work.

Raid Roll users: Reagent Restocker may take over /rr - if that happens, use /rrl for Raid Roll.

/rrbuy and /rrsell add items to the sell and buy lists (thanks g3gg0)


The primary portal for Reagent Restocker is at, even though I also publish the addon to (the old portal) and, and may publish to other places in the future.

The public facing page is here:

The development pages are here:

r130 | cobraa1 | 2015-03-04 16:21:06 +0000 (Wed, 04 Mar 2015) | 3 lines
Changed paths:
   A /tags/v10.2 (from /trunk:129)

-   Updated TOC
-   Sorry, that's all for now.

r129 | cobraa1 | 2015-03-04 16:20:09 +0000 (Wed, 04 Mar 2015) | 1 line
Changed paths:
   M /trunk/
   M /trunk/ReagentRestocker.toc

Commit before release.


First Previous Page 6 of 36 Next Last
  • #464

    Alright, so...

    I tried version 2.6.18 (latest "release" version) and it was still happening so I thought I'd start "fresh" and disabled all my other addons.

    Of course NOW it worked fine...
    In the end, I tracked down the issue and somehow, when I have "Acki's Recipe List" enabled, the option-menu of RR gets screwed and shows nothing Oo
    When I disable ARL, it works fine...

    I have no clue why that happens, but I'd like to keep both addons. So maybe you can talk to the author of ARL and fix that strange bug?!

    P.S.: I still dislike the pop-up window, but I think I was being a bit rude earlier so I apologize for that. You do a good job with this addon :)

    Last edited by quwong on 8/27/2012 11:09:07 AM
  • #460

    2.7.2 beta, on live server

    2x ReagentRestocker-v2.7.2 beta\BankBag.lua:1176: attempt to call global "GetNumBankSlots" (a nil value)
    ReagentRestocker-v2.7.2 beta\BankBag.lua:1176: in function "scanForItem"
    ReagentRestocker-v2.7.2 beta\BankBag.lua:56: in function "v"
    ReagentRestocker-v2.7.2 beta\EventHandler.lua:66: in function <ReagentRestocker\EventHandler.lua:32>
    (tail call): ?

    (for generator) = <func> =[C]:-1
    (for state) = <table> {
     58269 = 58269
     58257 = 58257
     58091 = 58091
     58086 = 58086
     62671 = 62671
     63388 = 63388
    (for control) = 58269
    k = 58269
    v = 58269
    countBags = 20

  • #461


    Thanks! Will be fixed in the next release.

  • #458

    I like the old version much better.

    I am hoping the new one will get back all the control that is now missing.

    Can't Drag & Drop items, can't use item numbers, can't set sell threshold (just says gray and the slider is missing).

    I hope it gets back all of the old features as the beta progresses.


  • #459

    Make sure you're using the latest version of the beta for Reagent Restocker. Seems to be working fine for me.

    Also note that the Mists beta itself had bugs that broke things, many of which are fixed now.

    I will of course keep an eye on things and fix anything broken that I encounter.

  • #456

    Many versions ago, Reagent Restocker could restock inks from the ink vendor.  Like trading in Blackfallow Ink for Ink of the Sea.  I can't get it to do it anymore.  Anything I'm doing wrong?  Or did you intend to not have it do this?

  • #457

    I'll take a look when I have the time. Does it use regular gold or an alternative currency? I don't use that particular profession.

  • #454

    Would love to see an option to save settings across characters, and an option to allow auto-populating of blue+ items.  I've figured out how to edit the files to do this, but would be nice to have it officially supported.

  • #455

    Saving settings across characters is in the long term plan, but not the short term, I'm afraid. I'm currently working on another new feature.

    I'd prefer not to do automatic population of the lists. Automatic population grows the list constantly, which can make the addon into a memory hog, which I'm trying to avoid.

    I'd rather just do the automation directly, and use the exceptions list if you want to make exceptions to the rules.

  • #452

    I tried to find more information everywhere on how to set this addon. I'm trying to auto-sell BOP unusable gear, but the option "Keep bind on equip items" -  as well the option "Keep soulbound items" - appears greyed out. I've also tried to auto-sell food and water and it doesn't work. Only if I specify 1 item does the auto-sell feature works. Please, can someone help with these settings? Do I have to specefy every single piece of gear and foods/drinks? Is it possible to use some kind of wildcard like "*"? Should I activate the "Auto-populate Selling List" option?

    Thank you for this great addon, makes life easier on tedious tasks :)

  • #453

    Soulbound and BOE detection were rather broken, and weren't working properly. The issue is that there's no public API for detecting soulbound items, so it has to use tooltip scanning, which I never really managed to get working properly.

    I may try to re-implement soulbound and BOE detection again some other day, but for now I've got a full plate. However, you can limit what you're selling by quality, which works fine.

    "I've also tried to auto-sell food and water and it doesn't work."

    This would be a bug. I'll investigate.

    "Is it possible to use some kind of wildcard like "*"?"

    No, I don't have any type of regular expression parsing in Reagent Restocker. Although you do seem to have hit upon a good idea . . . I'll see what I can do :).

    "Should I activate the "Auto-populate Selling List" option?"

    I'd recommend against it. For the most part, it should be unnecessary, and you'll just end up with an unmanageable list that eats up memory.

    "Thank you for this great addon, makes life easier on tedious tasks :)"

    Thanks :).

  • #451

    First beta of the next version of Reagent Restocker has been released. There's a lot of work to do yet, but I've fixed some of the showstopper bugs in Mists of Pandaria, and I've begun work on the new UI for shopkeepers that will replace the little "+" symbols that are in 2.6.

    Note that Reagent Resocker betas are only available from

  • #450

    Authors have been given their beta keys! I'll be doing my best to get back into coding Reagent Restocker again. Even if there's no major compatibility changes that need to be made, I'm starting to work on a new feature that will really help the overall usability of RR :).

  • #447

    Bug 1:

    9x ReagentRestocker-v2.6.18\DatabaseUpdate.lua:188: attempt to index field "tags" (a nil value)
    ReagentRestocker-v2.6.18\DatabaseUpdate.lua:188: in function "loadDB"
    ReagentRestocker-v2.6.18\DatabaseUpdate.lua:310: in function "?"
    ReagentRestocker-v2.6.18\Core.lua:51: in function <ReagentRestocker\Core.lua:50>

    self = <unnamed> {
    0 = <userdata>
    oldEnv = <table> {
    HealBot_Action_HealUnit2BarCount10 = HealBot_Action_HealUnit2BarCount10 {}
    ContainerFrame5Item7 = ContainerFrame5Item7 {}
    Inst11Quest2_HORDE_QuestID = "27128"
    Inst80Quest2name3 = "Accused Wristguards"
    ArmoryOptionsTooltipPanelShowItemCountColorSwatch = ArmoryOptionsTooltipPanelShowItemCountColorSwatch {}
    GetTrainerServiceTypeFilter = <func> =[C]:-1
    UNIT_NAMES_COMBATLOG_TOOLTIP = "Color unit names."
    SetTrainerServiceTypeFilter = <func> =[C]:-1
    SPELL_FAILED_CUSTOM_ERROR_71 = "This partygoer wants to dance with you."
    Inst12Quest6description1_HORDE = "Two-Hand, Axe"
    CompactUnitFrameProfilesGeneralOptionsFrameHealthTextDropdownButtonNormalTexture = CompactUnitFrameProfilesGeneralOptionsFrameHealthTextDropdownButtonNormalTexture {}
    HealBot_Options_CrashProt_OnClick = <func> @HealBot\HealBot_Options.lua:816
    XCustomBarConfigScrollActionsLine3TextName = XCustomBarConfigScrollActionsLine3TextName {}
    PawnItemComparer = <func> @..\Pawn.lua:3022
    Inst39Quest10_HORDE_Aim = "Caza'rez inside the Shattered Halls of Hellfire Citadel wants you to kill 4 Shattered Hand Legionnaires, 2 Shattered Hand Centurions, and 2 Shattered Hand Champions. "
    Inst70Quest1_HORDE_Location = "Dark Ranger Marrah (Utgarde Keep; |cff0070ddEntrance|cffFFFFFF)"
    AudioOptionsVoicePanelOutputDeviceDropDownButtonHighlightTexture = AudioOptionsVoicePanelOutputDeviceDropDownButtonHighlightTexture {}
    Inst55Quest6 = "6. Wanted: A Warp Splinter Clipping (Heroic Daily)"
    Inst84Quest1_HORDE_QuestID = "13372"
    MerchantItem5AltCurrencyFrameItem1Text = MerchantItem5AltCurrencyFrameItem1Text {}
    BINDING_NAME_NAMEPLATES = "Show Enemy Name Plates"
    INSTANCE_UNAVAILABLE_OTHER_TEMPORARILY_DISABLED = "%s cannot enter. This instance is temporarily disabled."
    ArmorySpellButton5 = ArmorySpellButton5 {}
    IsReferAFriendLinked = <func> =[C]:-1
    AudioOptionsVoicePanelMicrophoneVolumeThumb = AudioOptionsVoicePanelMicrophoneVolumeThumb {}
    CALENDAR_RAID_RESET_DESCRIPTION = "%1$s resets at %2$s."
    ArmoryMainHandSlot = ArmoryMainHandSlot {}
    Inst93Quest1_Prequest = "None"
    GemHelper_UserDropdownIcon = GemHelper_UserDropdownIcon {}
    Inst39Quest5Rewardtext_HORDE = "|cff0070dd No Rewards"
    MoneyFrame_OnEvent = <func> @FrameXML\MoneyFrame.lua:224
    LFDParentFrameBotLeftCorner = LFDParentFrameBotLeftCorner {}
    InterfaceOptionsCombatTextPanelFCTDropDown_OnClick = <func> @FrameXML\InterfaceOptionsPanels.lua:1684
    AGGRO_NOTIFIER_GENERIC_AGGRO_TEXT_OPTION_DESCRIPTION_PET = "This is used as a fall-back when the Desired Pet Aggro Text includes @enemy@, but there's no enemy available (e.g. when you leave combat)."
    TradeSkillInputBoxLeft = TradeSkillInputBoxLeft {}
    LFGTeleport = <func> =[C]:-1
    SpellButton6Cooldown = SpellButton6Cooldown {}
    AtlasLootItem_30_QA = AtlasLootItem_30_QA {}
    ToggleEncounterJournal = <func> @FrameXML\UIParent.lua:563
    Graphics_QualityText = Graphics_QualityText {}
    Inst91Quest1_HORDE_Prequest = "Echoes of Tortured Souls (|cffFFd200Forge of Souls|cffFFFFFF)"
    TalentMicroButtonAlertShadowTopLeft = TalentMicroButtonAlertShadowTopLeft {}
    ArmoryRaidInfoScrollFrameButton11Reset = ArmoryRaidInfoScrollFrameButton11Reset {}
    CompactUnitFrameProfilesSaveButton = CompactUnitFrameProfilesSaveButton {}
    Inst39Quest3ID2 = "25805"
    Inst51Quest4_HORDE_Note = "This daily quest can only be completed on Heroic difficulty.

    Epoch Hunter is at |cffFFd200[3]|cffFFFFFF."
    ArmoryTalentFrameBranch2 = ArmoryTalentFrameBranch2 {}
    Is64BitClient = <func> =[C]:-1
    ArmoryOptionsTooltipPanelShowCanLearnColorSwatchNormalTexture = ArmoryOptionsTooltipPanelShowCanLearnColorSwatchNormalTexture {}
    Inst67Quest8_HORDE_Prequest = "None"
    HealBot_Options_AltText = HealBot_Options_AltText {}
    GemHelper_CheckButton35Text = GemHelper_CheckButton3

    Bug 2:

    7x ReagentRestocker-v2.6.18\Core.lua:294: attempt to index global "RRGlobal" (a nil value)
    ReagentRestocker-v2.6.18\Core.lua:294: in function "safeGetItemInfo"
    ReagentRestocker-v2.6.18\Core.lua:623: in function "checkWaters"
    ReagentRestocker-v2.6.18\Core.lua:786: in function "MERCHANT_SHOW"
    ReagentRestocker-v2.6.18\Core.lua:777: in function "v"
    ReagentRestocker-v2.6.18\EventHandler.lua:66: in function <ReagentRestocker\EventHandler.lua:32>
    (tail call): ?

    waters = <table> {
    1 = 159
    2 = 1179
    3 = 1205
    4 = 1708
    5 = 1645
    6 = 8766
    7 = 28399
    8 = 27860
    9 = 33444
    10 = 33445
    11 = 58256
    12 = 58257
    (for generator) = <func> =[C]:-1
    (for state) = <table> {
    1 = 159
    2 = 1179
    3 = 1205
    4 = 1708
    5 = 1645
    6 = 8766
    7 = 28399
    8 = 27860
    9 = 33444
    10 = 33445
    11 = 58256
    12 = 58257
    (for control) = 1
    _ = 1
    id = 159

    Bug 3:

    23x ReagentRestocker-v2.6.18\Core.lua:291: attempt to index global "RRGlobal" (a nil value)
    ReagentRestocker-v2.6.18\Core.lua:291: in function "safeGetItemInfo"
    ReagentRestocker-v2.6.18\UI.lua:703: in function "refreshShoppingList"
    ReagentRestocker-v2.6.18\UI.lua:948: in function "showFrame"
    ReagentRestocker-v2.6.18\Core.lua:1615: in function "?"
    FrameXML\ChatFrame.lua:4293: in function <FrameXML\ChatFrame.lua:4239>
    <in C code>
    FrameXML\ChatFrame.lua:3992: in function "ChatEdit_SendText"
    FrameXML\ChatFrame.lua:4031: in function "ChatEdit_OnEnterPressed"
    <string>:"*:OnEnterPressed":1: in function <string>:"*:OnEnterPressed":1

    shopNum = 1
    sellNum = 1
    excludeNum = 1
    (for generator) = <func> =[C]:-1
    (for state) = <table> {
    17031 = <table> {}
    17032 = <table> {}
    17020 = <table> {}
    (for control) = 17031
    k = 17031
    v = <table> {
    item_sell = 250
    0 = "Rune of Teleportation"
    3 = 20
    tags = <table> {}
    5 = "Miscellaneous"
    4 = 0
    7 = 20
    6 = "Reagent"
    9 = "Icons\INV_Misc_Rune_06"
    8 = ""
    2 = 1
    low_warning = 5
    item_name = "Rune of Teleportation"
    qty = 20
    1 = "|cffffffff|Hitem:17031:0:0:0:0:0:0:0:85:0|h[Rune of Teleportation]|h|r"
    tocversion = 40300

    All occurred while trying to top of 20 stacks of Runes of TP and Portal from vendor. Mod didn't top off the stacks either.

    P.S. That means I had to *cough* manually purchase them. That's right, the M-word.

    Last edited by Outrider on 5/23/2012 8:01:12 PM
  • #448

    Sorry for replying so late. Hopefully you still see this.

    Bug 1: Appears to be some database update code is buggy. I've fixed it, but you may have to delete your saved variables and restart.

    Bug 2: Should be impossible :/. Oh well, I've made the nil check more explicit, so the interpreter should catch it. Or maybe I fixed it but didn't release the fix yet?

    Bug 3: Fixed in the next version.

  • To post a comment, please login or register a new account.
Login to Curse

Don't have an account? Create One.

Get an epic experience with Curse Premium
  • Faster addon downloads
  • Premium-Only Beta Giveaways
  • Ad-Free Curse experience
  • Premium Curse Client
  • and many More Features
  • Learn More »

Star Trek Online Wiki Editing Contest