There are many tasks that can be accomplished with a simple macro without going through all the hoops of creating addons. The only missing thing is ability to create dynamic macros that can, for example, find best food in your inventory and use it. The ability to do so is there: Blizzard gives us SecureActionButtons that can be freely reprogrammed out-of-combat, but they require a rather large setup that won't fit in every macro. This addon offers a preset button with all the required boilerplate code that can be quickly set to any macro with a short command and clicked afterwards.
Usage
All functions accept both dot and colon (. and :) addressing so you don't have to remember which one to use. All command are automatically ignored in combat and button is cleared to empty state right after you click it so your next click won't accidentally reuse whatever you programmed last if you click macro in combat. All commands overwrite whatever was previously bound to button, so for example, even if you call OOCDo.Use
with ID of item that you don't have, previous command will be replaced with "do nothing".
- Setting a command to be invoked on next click:
/run OOCDo.MacroText("/use 1 1")
OOCDo.Macro, OOCDo.M, and OOCDo.T are provided as shorter aliases.
- Actually perform whatever is currently bound to button:
/click OOCDo
- Try to find and use one of items from list (uses item IDs), can be used in conditionals - returns true if any item was found and nil otherwise:
/run OOCDo.Use(80610, 113509)
- Try to find and use one of spells from list (uses spell IDs), can be used in conditionals - returns true if any item was found and nil otherwise:
/run OOCDo.Cast(190336)
Some examples
- Find and use any Artifact Power item in bags (also requires LibTTScan-1.0 to scan tooltips to find those AP items):
/run for b=0,NUM_BAG_FRAMES do for s=1,GetContainerNumSlots(b) do local i=GetContainerItemID(b,s) if i and LibStub("LibTTScan-1.0").GetItemArtifactPower(i,1) then OOCDo.Use(i) end end end
/click OOCDo
- Eat mage solo or group food and conjure a new stack if there are none in inventory:
/run if not OOCDo.Use(80610, 113509) then OOCDo.Cast(190336) end
/click OOCDo
- Use Ancestral Recall if it not on cooldown or Hearthstone:
/run OOCDo.M(GetSpellCooldown(556) == 0 and "/cast " .. GetSpellInfo(556) or "/use item:6948")
/click OOCDo
Changelog
2017-01-10 v4
- New functions to set up using items and casting spells: .Use / .Cast.
2016-11-03 v3
- 7.1 TOC update
2016-10-08 v2
- ./: adressing fix.
2016-10-08 v1
- Initial release.