Pat's Place
WoW Addon: Druid Func
Linkback to Curse Gaming Page

DruidFunc is a collection of useful scripts that make your life as a druid easier and better. The original DruidFunc library was written by Gabraelle. This substanital update and modification was written by Patrick Hunlock (AkA Amid on Hyjal (alliance) and Dark Iron (horde). The autodetection of the maximum spell rank was inspired by Adora's druid func modifications at http://www.gerdofal.net/wow/druid_mod.html. Many people have sent in bug reports, comments, and suggestions which have really increased the quality of this mod. A few of the most notable contributors are Bitbyte of Icecrown, Joave (Alliance/Shadowsong EU), Threbrilith, Kagar of Azgalor and Salex. Now with the credits out of the way, here's what you came for...


The important features of this library are:

  • The ability to bind most of your abilities to keys.
  • The ability to bind shapeshifting to keys.
  • The ability to set up spellcasting assists.
  • Buff anybody, of any level, with one key.
  • Cast just the right heal and save your mana!
  • Mana conserve to abort heals on targets with good health.
  • Automatically switch your armor and weapons depending on your needs.
  • Activate trinkets automatically!
  • Set up panic heals for yourself and others.
  • A full featured totem stomper.

> Latest Changes


    --9/02/06- v2.15 - -- - Moonfire now looks for moonfire dots on the target and if found will cast the next lower rank of moonfire instead. -- - Props to bitbyte of icecrown for this new trick. -- - This allows the higher level moonfire damage over time to keep ticking while you spam for direct damage. -- - This effectively raises your dps noticably and lowers your mana usage also noticably. -- - NOTE--If your target is a rogue your maxrank moonfire will ALWAYS be cast (so he can't vanish!) -- - Moonkin rejoyce! -- - Moonfire now passes the target name through the totemrank function so it should be a bit more reliable -- - It also hits max-rank if you're on a special totem (like jindo or naxx) -- - But rank 2 if you have a totem targeted -- - Added macro/keybind markRogues. This is like a totemstomper, but it stomps rogues instead. -- - Looks through your available targets for rogues -- - Casts faerie fire on the first rogue it finds without faerie fire already applied. -- - If all rogues have faerie fire on them it casts moonfire on the last rogue it found. -- - If you're low on mana, healing touch will drop up to 4 spell ranks to try and get a heal off. -- - The number of spell ranks that can be shed will most likely be user defined in a future patch. -- - ManaMe now calls Innervate in a way which doesn't whisper yourself that you're being innervated. -- - Added function/keybind weakestLink( healerOnly ) -- - seeks out the nearby target with the least amount of health. -- - If you pass true to weakestLink it will look for the healer with lowest health -- - If no healer was found it will target the enemy with the lowest health -- - While functional, it is not recommended you bind these to your tab key. -- - Added /druid port or /druid moonglade -- both will port you to moonglade. (Tired of it taking up a toolbar slot) -- - Added /druid home -- will use your hearthstone (tired of trying to find it in my bag) -- - Rejuvenation will no longer give a warning if the target's health is below 1/2 (it will allow immediate swiftmend) -- - ManaMe and Innervervate are a bit more reliable in equipping your inenrvate set weapons now. -- - Added /druid manaswap [0-100] -- - Lets you specify the threshold low mana weapon swaps happen. -- - The default is 85%, valid values are 0% (off) - 100% (wierd) -- - Most all messages sent to the chat window will now be preceeded by "DruidFunc:" so as not to be confused with real wow messages. -- - If healing touch is being chatty, it will now show you the maximum health of your target. -- - The Prowl macro/keybind will no longer unstealth you if you are already stealthed. -- - A localization file has been added to the files in this directory -- - Localization.lua -- - This will allow the eventual translation of druidfunc for use in international clients. -- - It also means this version is going to be buggy as all getout. sorry. -- - Added new function: checkBuffByName( Unit, Buffname ) returns true if Buffname is found -- - This is a technical, back-end toolbox function used to make complex macros, most end users can ignore this addition. -- - This is more reliable than isUnitBuffUp. -- - This works with the buff name rather than the icon filename. -- - Unit = standard "player" or "target" -- - buffname = name of the buff (as it appears in the tooltip, "mark of the wild" for instance.) -- - Thanks to the above function, innervate is more reliable (can't confuse innervate with some other buffs) -- - Re-implemented warsong gulch flag checking in Prowl() -- - since we can now differentiate between the wsg flag and plagueland tower buffs with checkBuffByName() --9/01/06- V2.14b- Fixed a bug happening in international versions of WoW (Thanks for all the help Chris!) --8/27/06- v2.14a- Fixed moonbar so it can now be disabled. (was not letting user set moonbar to zero) -- - Removed WSG flag checking since plagueland uses same icon -- - Desperate heal will now cast regrow if player's health is above the threshold set in /druid prayer -- - Tightened up innervate's target checking to reduce the possibility that innervate will be cast on a mana-less target. -- /04/06- v2.14 - The Prowl macro will now try to shadowmeld you if you're in humanoid form. -- - Rejuvenation now works better if you're one of those druids that just mindlessly spams the rejuv key hoping for a swiftmend (like me) -- - Fixed a binding description, thanks Ragnorok -- - Fixed names of Jindo's totems so totem stomper should work now (Thanks BitByte!) -- - Lightning Totem added to totem list, set to max-rank moonfire (Naxx totem) -- - Added Frost, Shadow, Arcane, Temp, and Heal as set names to the outfitter. -- - The temp set has no keybind and it is not saved between sessions. -- - Added Frost, Shadow, Arcane, Temp, and Heal sets to keybinds. -- - Desperate Prayer should allow healing touch and regrow to continue casting if you're spamming the key ( Thanks BitByte! ) -- - Added /druid smartcast [on/off] -- - Smartcast is extreemly useful if you use target of target displays on your interface. When enabled... -- - If your target is hostile: -- - Any attack spells will be cast on your target. -- - Any healing spells will be cast on your target's target (who the enemy was attacking) -- - If your target is friendly -- - Any healing spells will be cast on your target. -- - Any damage spells will be cast on your target's target. -- - Smartcast defaults to off, you must specifically enable it before you can use this feature. -- - Smartcasting overrides /druid assist, always. -- - Smartcasting won't work if healrange is installed and you are in a raid. -- - Most all /d commands have been removed and consolodated under /druid. This is a major change -- - however this allows for a better help system and reduces the system resources this mod needs to function. -- - /doutfit remains the same, you can also use the new /do shortcut /do bear for example -- - /dtrinkets [on/off] has been removed and changed to -- - /druid trinkets [on/off] -- - /dprayer [25-100] has been removed and changed to... -- - /druid prayer [25-100] -- - /dhardshift [on/off] has been removed and changed to... -- - /druid hardshift [on/off] -- - /dtarget [on/off] has been removed and changed to -- - /druid target [on/off] -- - /dmanac has been removed and changed to -- - /druid manac [off/silent/announce/10-100] -- - /dplusheal has been removed and changed to -- - /druid plusheal [off/auto/#] -- - Added /druid stats -- - Shows you stats about your character (+heal,mana5/spirit regen/est innervate mana) -- - Added shortcuts... /df for /druid, and /do for /doutfit (you can use /df for /druid and /do instead of /doutfit if you want) -- - Added /druid moonbar [0-6] -- - This will let you specify which toolbar will be switched to when you go moonkin (the default is 5) -- - When you shift from moonkin to humanoid form your toolbar will go back to toolbar #1 -- - If you set moonbar to 0 it will disable all toolbar swaps when switching both in and out of moonkin form -- - Fixed a text display bug when setting your base set to mount -- - Hopefully fixed a bug finding the next spell rank when you learn a new spell. -- - Fixed a bug when passing False to desperateprayer macro (should now properly self-cast.) (Thanks Bitbyte of Icecrown!) -- - Changed some display messages to give the name of the player instead of saying "target" (Thanks BitByte of Icecrown!) -- - Salex sent in a major new feature of druid func. -- - Macro Command Added: Druid.QuickShift("potion string", "Buff name") -- - This macro will shift you out of feral form, drink the potion if you have it in your inventory, then shift you back to your original form. -- - Macro Command Added: Druid.PatchWerk() -- - This macro is specifically for the patchwerk encounter, shifting to drink a greater stoneshield potion -- - Macro Command Added: Druid.BearBark() -- - This macro shifts you to human, casts barkskin then shifts back. -- - If druidfunc has never run before, forced initialization of important saved variables in onload to prevent an error -- - Big Fuzzy Bear sent some code to tighten up /dtarget -- - Bitbyte of Icecrown sent several tweaks to enhance the efficiency and readability of the code -- - Desperate Prayer now looks for the nature's swiftness buff already on you and will cast healing touch if found -- - For those times when WoW will cast nature's swiftness but not healing touch in one cast. -- - Desperate Prayer now will cast healing touch if the ZG class trinket was found and used, and regrowth otherwise. -- - Druid.testTrinket will now return true if the trinket was successfully used, and false if it wasn't -- - Innervate now sends a wisper to your target letting them know they recieved the buff. -- - "You've been Innervated! Cast normally for best results" (because, you know, a lot of priests just stop casting...) -- - The macro Innervate(partychat, targetlastenemy) has been changed to (partychat, noWhisper) -- - If you pass true as noWhisper, innervate won't whisper your target. -- - Thanks to the new targeting code, targetlastenemy isn't needed any longer. -- - Added /druid ichat "what you want to whisper to your innervate target" -- - Allows you to customize what you send to your innervate targets -- - Innervate now does cooldown checks and will abort before doing weaponswaps, whispers if it's uncastable. --8/02/06- v2.13 - Removed /dbase command and integrated functionality with /doutfit. (/dbase was only in 2.13 beta) -- - Extensive comments have been added to the source code (still a lot to do tho) -- - The keybinds for desperate prayer has been changed to "Desperate Heal Self" (because there's now a desperate heal other) -- - Prowl no longer will put you in stealth if you have the WSG flag. ( no reason for this, no reason at all, nope, no reason ) -- - +Healing penalties for healingtouch less than rank 5 are now calculated (Thanks to Threbrilith EU Aszune) -- - Brillinat mana oil is now factored into your auto +heal and mana5 -- - Mageblood potions are now factored into the mana5 calculations -- - Added keybind and macro for swiftmend -- - Druid.Swiftmend() -- - Will attempt to cast swiftmend on the target. -- - If there is no HoT on the target this function will cast rejuvenation. (Only if swiftmend is NOT on cooldown) -- - A slight adjustment to the heal values based on thottbot's data was made to healing touch (sr, sr2) (Thanks to Thebrilith EU Aszune) -- - Innervate has been reworked (yet again) to provide more reliable targeting and functionality -- - Zandalar shoulder enchants (+heal) is calculated now (Thanks Kagar (Horde) of Azgalor!) -- - Argent Dawn mana/5 enchants on bracers is now calculated (Thanks Kagar (Horde) of Azgalor!) -- - You should no longer get 2 notices that you're casting innnervate on someone (Thanks Kagar (Horde) of Azgalor!) -- - Best Attack Cat now looks for an omen of clarity proc and will use claw even if you have less than 40 energy. -- - Best Attack Cat will no longer attempt to apply faerie fire if the target already has the debuff -- - Desperate Prayer has been revamped -- - DesperatePrayer's macro now accepts a parameter which, if true, will try desperate prayer on the player's (friendly) target -- - if /script Druid.DesperatePrayer([true/false]) is false or empty then it casts only on the player, not the target. -- - A keybind has been added to access this functionality called Desperate Heal Other -- - Joave sent some code which checked swiftness cooldown and tried swiftmend instead -- pretty rockin! -- - So now the desperate prayer rules are as follows... -- - If you have nature's swiftess and it's up you get NS + maxrank healing touch. -- - If nature's swiftness is on cooldown and you don't have it then we see if you have swiftmend -- - If you have swiftmend then it casts rejuv and a second prayer will cast swiftmend -- - If swiftmend is on cooldown or you don't have it then maxrank regrowth is attempted (that's really a desprate prayer!) -- - if a maxrank regrowth is attempted (all cooldowns are up) attempt to use the Zandalar trinket (40% faster heal) -- - Of course desprate prayer will attempt to activate the zandalar hero charm and hibernation crystals for that extra oomp. -- - It will also try and activate the defiler's talisman if you have it. -- - Added /DPrayer [25-100] -- - This sets the threshold at which DesperatePrayer will attempt to use Nature's Swiftness and Swiftmend -- - Some people like 100, some people like 50, some people like 25, well now you can have it just the way you like it. -- - The default is 50% (you must be at 50% health or lower before desperate prayer starts to burn your cooldowns) -- - No fightin'! -- - Added function Druid.SwapI(left1, right1, idol1, left2, right2, idol2) -- - This is the same as Druid.Swap but provides for idols to be included. -- - The I is for idol. Just sayin'. -- - Props go out to Tim for this suggestion! -- - Added a Totem Stomper to the keybinds and macros -- - When activated will look for any nearby totems and use moonfire rank 2 on the one deemed most important -- - The macro command is Druid.TotemStomper() -- - Because the totem stomper takes the player out of melee attacks and because of the rather lame -- - targeting api that frequently won't return to the original target, it's not recommended you -- - intengrate this command into the default moonfire routine (I tried it -- it wasn't pretty). -- - Leave this as a seperate keybind/macro deliberately activated by the user and it's pretty cool. -- - Jindo in Zul'Gurub has some special rules -- - Jindos totems use the maximum rank of moonfire -- - Added the following outfit changes.... -- - Added /doutfit [fire/nature/pvp/wsg/special1/special2/special3] -- - Added macro command: Druid.Dress(human/cat/bear/travel/moon/aqua/fire/nature/pvp/wsg/special1/special2/special3) -- - /DOUTFIT functionality has changed substantially..... -- - Use /doutfit {fire/nature/pvp/wsg/special1/special2/special3/cat/bear..etc} to specify your BASE set -- - The base set is the outfit you revert to whenever you shift back to humanoid form. -- - Setting bases is a powerful new feature of the outfitter. -- - You may use any of the pre-defined outfits as your base wardrobe. -- - For instance /doutfit fire will equip your fire resist gear instead of your human (caster) gear. -- - Base form always reverts to "human" when you start game or zone. -- - To save an outfit you now must append "save" to the end of doutfit -- - For example /doutfit bear save or /doutfit human save -- - Use Druid.Dress (name) to create macros which will equip the selected gear whenever you activate that macro. -- - This macro command is recommended with /doutfit set to either off or weapon only. -- - It will allow you to do manual wardrobe changes with a single keypress, giving you greater control -- - over your equipment changes. -- - This macro will equip all wardrobe items (not just weapons) regardless of user settings for automatic changes. -- - That is, if /doutfit is off, or /doutfit is weapon only this macro will still do a head to trinket change. -- - Whenever you first load wow your base set always starts out as "human" -- - Targeting in raid functionality has been restored back to pre 2.12 functionality IF you do not -- - have the healrange mod installed. If you have the healrange mod installed and have an enemy or -- - nothing targeted heal spells will be left "targeting" so healrange can highlight in-range players in ctraid. -- - If you do not have healrange installed the spell will default back to you. -- - Keybinds added to change into the various outfits. Keybinds will always equip entire outfits (not just weapons) -- - Regardless of what the user has otherwise selected. -- - Targeting in every area of this mod has been tightened up. If you are auto-attacking (melee) then -- - you should resume melee attacks whenever you cast a spell. If you're auto-attacking a bug-bear and -- - hit rejuv, the rejuv should cast on you and you should resume auto-attacking. --7/13/06- v2.12c- Fixed a bug when innervating with no target selected. --6/20/06- v2.12b- Fixed targeting errors in rejuvenation (in regards to swiftmend) -- - Fixed a text error when saving your bear outfit. -- - Rejuvenation does low mana checks for weapon swaps now -- - Function Rejuv added which restores original rejuvenation functionality -- - (for those that don't like the enhanced rejuvenation) -- - Rejuvenation warnings will now play a short sound to indicate rejuvenation didn't actually cast. -- - Fixed errors when asking rejuvenation and regrowth to be chatty. --6/19/06- v2.12 - Adjusted TOC for WoW latest wow version (will report current) -- - Fix for dismount code when requesting shapeshift (code by Bitbyte of Icecrown -- THANKS!) -- - Innervate aborts if target already has innervate (code by Bitbyte of Icecrown -- THANKS!) -- - ManaMe() now calls Druid.Innervate (after setting player as the target) -- - This provides proper target checking (too much mana, already has innervate, etc) -- - Fix to +healing and mana/5 checks by Shreavel (Curse gaming -- THANKS!) -- - If user is in a raid, healing spells will no longer auto select the user if the target is blank or an enemy -- - By allowing the spell to stay in targeting mode the "healrange" mod will work properly if installed -- - Healrange mod: http://ui.worldofwar.net/ui.php?id=1769 -- - Rejuvenation rules have been altered. -- - If you have swiftmend, casting rejuvenation on a player that already has rejuvenation will cast swiftmend instead. -- - If swiftmend is on cooldown or you don't have swiftmend then -- - you will get a warning that the player already has rejuvenation and the spell will not cast. -- - You will have to tap the button a second time to force a recast. -- - Fixed a bug where the rejuvenation check wouldn't work on you, just your targets ( Thanks Kagar of Azgalor ) -- - /DPlusheal will now automatically add in the Zandalar Hero Charm and the Hibernation Crystal when they are active. -- - If you have auto trinkets enabled hibernation crystal will attempt to be used on every heal spell. -- - Added new slash command /DTrinkets [on/off] -- - When on the following trinkets will attempt to automatically be used... -- - Mar'li's Eye whenever you've used 600 mana -- - Hibernation Crystal whenever you attempt to cast a healing spell -- - Zandalar Hero Charm whenever you attempt to cast an offensive spell. -- - Rune of metamorphasis whenever you attempt to shapeshift. -- - Defiler's Talisman whenever you hit barkskin -- - Hibernate will no longer announce that you are casting if the target is already slept. -- - You can now pass a minumum rank to PowerTouch (Before it always defaulted to rank 1) ( Thanks Kagar of Azgalor ) -- - /DPlusHeal will now also show you mana per 5 from equipped gear (for the curious) -- - /DPlusHeal will now show you your spirit regen (outside 5 sec rule -- for the curious) -- - /DPlusHeal will now count set bonuses only once instead of for each item. -- - /DWeapon has been removed and replaced with /DOutfit -- - /DOutfit does complete wardrobe changes on shift from head to trinkets if enabled. -- - You must enable complete wardrobe changes with /Doutfit outfit, otherwise only weapons change. -- - Equip what you want to wear then type /doutfit (form) to save that outfit for that form -- - /DOutfit weapon (will swap only weapons/idols -- 1.11 functionality) -- - /DOutfit outfit (will swap all gear from head to toe) -- - /DOutfit off (disable wardrobe changes) -- - /DOutfit on (enable wardrobe changes) -- - /DOutfit [cat/bear/moon/travel/aqua/human/mana/innervate/mount] for respective forms -- - human is base wardrobe to equip when shifting out of form and not in combat -- - mana equipes the desired weapons when your mana falls below 85% -- - innervate equips the desired weapons when you innervate. -- - mount is your riding gear -- - Added /DManaC [silent/announce] -- - Silent will prevent spell abort messages from being broadcast to you -- - Announce will re-enable announcements in the default chat window -- - Default is announce -- - Added keybind and macro ManaMe() this will target the player and cast innervate (self innervate only) -- - Innervate has been reworked. -- - Can be cast on any target with a mana pool -- - If target is enemy or target has no mana pool the spell will target you. -- - If the target has more than 50% mana the spell will abort -- - Fixed typo in find maxrank for demoralizing roar. -- - Desperate Prayer will only attempt a NS heal if you are below 50% health.
> About Druid Func

    Druidfunc is an extension of the WoW default interface. Great pains have been made to not interfere with the visual interface in any way. Druidfunc doesn't change how you see the game and it tries to be as unobtrusive as possible while you are playing the game.

    For the casual user, Druidfunc gives you access to most of your druid abilities through key binds, the ability to bind a specific key to a specific ability, say "F" for Faerie Fire, or "H" for healing touch. This makes those abilities available to you regardless of which toolbar you have up at any one time (and we've all fumbled the toolbar before!)

    Many of these bindable abilities have been extended and enhanced. For instance Faerie Fire, when bound to a key will work in both feral forms (if you have the talent) and humanoid. Prowl will shadowmeld you if you're a night elf in humanoid form and stealth you if you're a cat. And Healing touch does some amazing mana conservation tricks!

    You can also set up macros to access the various druidfunc abilities and drag them to your toolbars, and it's highly recommended that you use a balanced mix of keybinds and macros on your toolbar to use Druidfunc most effectively.

    For the advanced user Druidfunc gives you a toolbox to write your own complex macros using druid func's procedures and tools. Want to check for a buff, shapeshift, and equip a different weapon? All the tools to do that are right here.

> Installing Druid Func

    To install druid func click on the folder at the top of this page. Uncompress the folder in your /World of Warcraft/Interface/Addons/ directory. This should create a new folder called DruidFunc in the above directory.

    Now simply log in and the druidfunc scripts will be available to you. Note that on your non-druid characters you should go to the "addons" button on the character selection screen and disable this mod. It won't hurt anything if you don't but every addon slows wow just a little bit and a lot of addons can add up quick so it's best to turn off what you're not using.

    IMPORTANT It's very important that you turn off blizzar's auto-self cast as this interferes with the proper operation of druidfunc. To do this, hit ESC, Interface options, and then uncheck "auto self cast" in the controls (top section) section.

> Using DruidFunc

    There are three ways to use druidfunc. You can create a bunch of macros or you can bind them to keys, or you can do both!

    Once installed simply start WoW, hit ESC, "keybinds" and scroll down to the druid abilities you can now bind to keys.

    If you'd like a little more flexibility then you can create a bunch of macros. The macro commands are documented in the "macro" section.

    You can customize some of druidfunc's settings with the /druid command (you can use /df as a shortcut if you want.) If you just type /druid (or /df) you'll get a list of all the options and the current settings. There are a lot of options tho, so you may have to scroll up in your chat window a bit to see them all.

    Between keybinds and macros druidfunc puts a world of functionality at your fingertips. It won't play your druid for you but in addition to noticably improving your overall abilities it will make playing your druid a lot more natural, seamless, and fun.

> Keybinds

    Druidfunc lets you bind almost all of your abilities to the key of your choice. This frees you up from the action bar and lets you have crucial abilities at your fingertip no matter what action bar is on the screen at any given time. To set up keybinds, log onto your druid and hit the "ESC" key. Press the "Key Bindings" button and scroll down to the "DruidFunc Library" section. Now simply find the action you want, press the "not bound" button and hit the key you'd like to use for that action.

> Healing
    Once you install Druidfunc and have bound your heals to keys or set up macros (described in the macro section) a world of new functionality opens up to you...

    Rejuvenation and Regrowth
    Rejuvenation and Regrowth will scale the heal to the level of the target... No more "target is too low" messages. Rejuvenation has some special functionality (that's the straight over-time heal, not the expensive heal+hot). If the target already has rejuvenation on it then swiftmend will cast on the target. If you don't have swiftmend or it's not ready then you will get a warning and the spell will not cast. If you hit rejuvenation after the warning then rejuvenation is refreshed on the target.

    When rejuvenation gives you a warning that the spell is already on, it will not recast the spell. For a lot of people this is disruptive. If you'd like rejuvenation to be just plain old rejuvenation (with the self targeting and level adjusting) then you can set up a macro using the Druid.Rejuv() function.

    Healing Touch
    Healing Touch becomes an amazing bread and butter spell now finding out the health of your target and automatically casting the exact rank which is needed. If your target only needs 200 health then healing touch is going to cast a low rank low mana healing touch spell instead of your big humongus rank 10 mana hog. Leave the flash heals to the priests and stick with healing touch and you're going to stay at the top of the healing charts and your guild is going to love you! If you attempt to cast a heal on a hostile target the healing spells will automatically cast the heal on you (no more alt-key, and for some that takes a bit of getting used to).

    Healing Functionality
    When not in a raid, if you have an enemy targeted or nothing at all, the healing spell will go to you. No more (alt-toolbar-key), if you have an enemy targeted and you cast healing touch the healing touch will go to you automatically. In a raid, IF YOU HAVE THE HEALRANGE MOD INSTALLED your healing spells will work a bit different than if you are solo or just in a 5 man party. If you cast a heal spell without anything selected or you have an enemy selected the spell will remain targeting, waiting for you to click on a target (solo and 5 man the spell will be put on you). This is so the Heal Range Mod can work with CTRaid to show you in and out of range party members. If you don't already have this mod, it's highly recommended you download and install it ( http://ui.worldofwar.net/ui.php?id=1769 )

    /Druid ManaC [10-100, silent, announce]
    There is a mana conserve feature with the /Druid ManaC [10-100] option. If you set /Druid ManaC 90 then if you are in the middle of casting healing touch and press the casting key again IF the target is at 90% health or better your spellcast will be aborted. The more times you mash the spell casting key while it is casting the more times your target will be checked. By the same token, if you cast healing touch and then don't keep pressing the casting key the spell will always land because the target will never be checked (useful if you time a spell for damage you know is going to happen but another heal lands before that damage actually happens). /Druid ManaC off will turn the feature off. This option is saved for each of your druids. You won't have to save it again every time you load but you must set it up at least once for each of your druids if you want to use it. The default is off. You can also use /DManaC silent to disable abort messages in your chat window, and announce to re-enable messages. The default is to announce spell aborts.

    /Druid PlusHeal (#, auto, off)
    If you have a lot of +healing gear you can factor this into the healing touch calculations by using the /Druid PlusHeal slash command. (Credit to eric who suggested this option via email). The usage is /Druid Plusheal # or /Druid Plusheal auto. If you select auto then your +healing from items is automatically calculated and used to offset your healing touches. If you set /Druid PlusHeal 200 then every time you use healing touch it will add 200 to the estimated value of the heal and use that to select the appropriate rank. This number is saved between sessions and is unique to your character (if you have two druids they won't use the same number). The number can also be negative so if you feel like you need more power (because your target is taking a lot of damage maybe) then you can use a negative number here to increase the rank of the spell used. For the most part, until you have over 300 +heal you are best off leaving this number at zero. Healing touch has a snapshot of the damage when the spell is cast, usually your + to healing spell makes up for the damage taken between when the spell casts and when it finishes casting.

    If you use the hibernation crystal or the zandalar hero charm then while the buffs are active your plusheal offset is increased by the value of the buff (the zandalar is calculated at a flat 400 bonus for the duration).

    /Druid PlusHeal without anything following it will give you a lot of information about your character including your present +heal numbers, your spirit regen, even an estimate of how much mana you get back on innervate.

    Desperate Prayer
    In your keybinds there's an entry called "Desperate Heal Self" and "Desperate Heal Other". If you bind this to a key and use it it will attempt to cast the fastest, most powerful heals available to you. Set the % health threshold with the /druid prayer [25-100] command. The default is 50%, that is these commands will start to burn your cooldowns only if the target's health (or your health if you're using desperate heal self) is below 50. You can change this to to any percentange between 25 and 100. If the target's health is below the threshold then the following things happen. If you have natures' swiftness and it's not on cooldown then it will attempt to cast a NS max rank healing touch on the target, if nature's swiftness is on cooldown then if you have swiftmend it will cast swiftmend if the target has a hot on, and rejuv if the target does not (hit desperate heal again to get swiftmend) if you either do not have NS and swiftmend or they are all on cooldown then desperate heal will try to activate your zg class trinket for the most powerful heals and cast healing touch. Desperate prayer will also try to use the zandalar hero charm and the hibernation crystal. It will also try to activate the defilers talisman. And it will try to use these trinkets even if you do not have auto trinkets enabled with the /dtrinket command. In short, desperate heal will do everything possible to get you the fastest, most powerful heals available.

    Power Touch
    If you're an end-game player the Power Touch keybind and macro (/script Druid.PowerTouch(1,false,false)) will really come in handy. This command will automatically attempt to use the zulgurub class trinket and the hero charm. If you have your class trinket your healing touches will be 40% faster for the next 15 seconds. If you have the hero charm the heals will be a lot bigger too. It's the ultimate panic button. I personally use 2 as my healing touch macro and alt-2 as power touch.

> Outfitter

    Druidfunc implements an automatic outfitter that will change your armor and weapons when certain events happen. For instance shifting into bear form can equip all your tanking gear, shifting into cat form can equip all your dps gear, etc.

    Because this is a fairly complex system, the outfitter starts out completely disabled. You access the outfitter with the /doutfit command, you can also use /do as a shortcut. There are three specific modes.

    /doutfit outfit will swap all your gear (both weapons and armor).
    /doutfit weapon which will swap only your weapons.
    /doutfit off/on which disables or enables outfit changes entierly.

    You must specifically enable the outfitter. To do this, issue the following command...

    /DOutfit on

    Outfit swapping is now enabled but only for weapons! To enable complete outfit changes issue the following command...

    /DOutfit outfit

    If you ever want to go back to just weapon swaps use the command /DOutfit weapon

    To save an outfit simply equip what you want to wear then type /DOutfit {name} save where name is one of the set names described below. The mod will take a snapshot of the gear you're using. For instance equip all your riding gear and type /Doutfit mount save this will take a snapshot of everything you're currently wearing and save that as your mount set.

    The available set names:
    Human: This is the default you will switch back to whenever you switch out of form, whenever you rez, whenever you zone in, and whenever you exit combat.

    Mount: This outfit is equipped whenever you mount up.

    Mana: This outfit (well just weapons) is equipped when your mana falls below 85% (only in combat)

    Innervate: This outfit (just weapon) is equipped when you cast innervate.

    Cat: This outfit is equipped whenever you switch to cat form.

    Bear: This outfit is equipped whenever you switch to bear form.

    Travel: This outfit is equipped whenever you switch to travel form.

    Aqua: This outfit is equipped whenever you switch to your aquatic form.

    Moon: This outfit is equipped whenever you switch to your moonkin form (heh).

    In addition to the above automatic sets there are some extra sets available for special situations. These sets are....

    Fire: Hold your fire resistance set.

    Nature: Hold your nature resistance set.

    Frost: Holds your frost resistance set.

    Shadow: Holds your shadow resistance set.

    Arcane: Holds your Arcane resistance set.

    WSG: Holds your WSG set.

    PVP: Holds your PVP set.

    Heal: Holds a +heal armor set.

    Temp: Is a temporary set that is not saved between games.

    Special1: Holds whatever you want.

    Special2: Holds whatever you want.

    Special3: Holds whatever you want.

    So now you have all of these sets, it's time to use them. If you have /doutfit set to outfit then all of your armor is going to automatically change. The first few sets will be equipped AUTOMATICALLY for you when you shift into the associated form. When you shift out it will go back to your human set unless you've specifically set up one of the extra sets (more on that later). Mana and Innervate are two special sets that are triggered in your caster form. When you use innervate the innervate set (well only its weapons) will be equipped, this lets you switch to a high spirit staff and get every last point of mana out of innervate. Mana will automatically be equipped (again only weapons since you'll be in combat) when your mana pool falls below 85%. This lets you start out with a high int staff and as the fight progresses and you burn off that extra intellect the outfitter will swap you to a different weapon that emphasizes spirit or +heal, anything you want which you feel will contribute to the fight after the extra starting intellect is no longer needed.

    Now for the extra sets. By default this mod will go back to human gear after a fight or when you zone, you can change this behavior by doing a /DOUTFIT {name} where {name} is the name of your special set. So if you're fighting lava packs in molten core and you need your fire resist gear on (and to stay on) you'd type /doutfit fire. This will immediately equip your fire resist gear and just as importantly, if you shift, or leave combat you will still stay in your fire resist gear when you get back to humanoid form (or leave comabt). When you zone or type /doutfit human you'll go back to using your default humanoid gear.

    Once a set is defined the mod will attempt to equip all the items in the set whenever you shift, or cast innervate, or run low on mana. You can turn a specific set off by using the command.. /doutfit {name} off. for instance if you decide you no longer want a low mana set you'd type /doutfit mana off. The {name} off command completely removes the set, if you decide you want the set back you'll need to re-equip it and do a save.

    The sets and your preferences are saved for you between sessions with one exception. The temp set is not saved. It's just there for temporary situations (like a special pvp case) where you'll be getting in and out of a set for the next few hours but probably never again.

    Of all the outfits, mana and innervate are, arguably, the most important. For the most part you want to start out with a very high int weapon as your human set. When your mana hits 85% or lower, the mod will switch you to your mana set which is either a high mana/5 staff or a strong +heal staff. You want high int to start the fight but after you've cast a few spells that extra int isn't doing anything for you so this mod seeks to equip a weapon that will be of more use. Of course for innervate staff you want the very highest spirit weapon you can get, be it will of arlokk, soulkeeper, or dancing sliver. Even if you decide not to use the outfitter you should at least consider keeping enough of it enabled to allow for mana and innervate swaps.

    Outfit swapping on shift and mount is very useful in almost every case. However there are situations where the outfitter will work against your wishes. Some examples of this are if you want to stealth in pvp and pop up to heal, when you go cat you'll wear your feral gear and instantly lose all your mana pool because feral gear doesn't have int on it. Another example is you equip all your fire gear for the lava packs in MC and when the battle is over you're instantly back in your default casting gear and you have to track down all your fire gear all over again. After a while you'll get used to using /doutfit off and /doutfit on to disable and then re-enable outfit changes but it will take some time for this to be seamless.

    If you find complete outfit changes too intrusive then consider /doutfit weapon to allow only weapon swaps and not complete wardrobe changes.

    I personally use outfitter in weapon mode only, but I use /do (outfit name) often to swap outfits. Even if you have the outfitter turned off if you type /do fire then it's going to equip your fire resist set for you, it won't do anything else until you give it another command though.

    Additional Macros:

      In addition to the slash commands you can add weaponswapping to your existing macros with the following commands. Be mindful that equipping a weapon implements a 1 second global cooldown, however a weapon can be equipped during a global cooldown. So you want to do any weapon equip/swaps after the spellcast not before. So make sure these commands come after any spellcast requests.

      To equip a specific weapon:
      /script Druid.Equip("main hand weapon name", "off hand weapon name". "Idol name")
      example: /script Druid.Equip("Warden Staff")

      To swap between two weapon sets:
      /script Druid.Swap("main hand weapon name", "off hand weapon name", "main hand weapon name", "off hand weapon name");
      example: /script Druid.Swap("Warden Staff", "", "The Unstoppable Force", "")

      Since both warden staff and unstoppable force are both 2 hand weapons the off-hand weapon name is left empty.

      To swap between two weapon sets AND idols:
      /script Druid.SwapI("main hand weapon name", "off hand weapon name", "idol name", "main hand weapon name", "off hand weapon name", "idol name");
      example: /script Druid.Swap("Warden Staff", "", "idol of ferocity", "The Unstoppable Force", "", "idol of uberness")

      To equip a set:
      /script Druid.Dress("set name")
      example: /script Druid.Dress("pvp")
      Note that dress will equip all items in the set (armor and weapons) regardless of if the user has outfit set to off or on but only for weapons. The macro command trumps the user's configuration.

    Quick FAQ...

    Q] Why aren't low mana swaps working?
    A] They probably are. Low Mana swaps only happen when you're in combat. When you're not in combat the low mana swap and the out of combat swaps kept fighting for control and it was hugely distracting and annoying.

    Q] When I shift out of feral forms why aren't my human/low mana weapons equipped?
    A] Whenever weapons are swapped a global cooldown starts, a cooldown that prevents you from casting spells. We can get away with low-mana swaps because the swap happens right after you start casting a spell and the cast time is longer than the cooldown. However automatic swaps can be very disruptive. If you're shifting out of form to cast a heal spell, the last thing in the world you want is to wait an endless second for the global cooldown to end.

    Q] Why doesn't my human/low mana weapon equip when innervate ends?
    Again this is related to the 1 second global cooldown. If innervate ends a fraction of a second before you go to cast a critical heal spell, one that could save the raid if it lands, or doom it if it misses... Well the 1 sec global cooldown when weapons are swapped would tend to doom it. So druidfunc errs on the conservative side.

> Swiftshifting

    DruidFunc contains some powerful tools to help you harness the power of your feral abilities. You can begin by binding your shapeshifting abilities to permanent keys. While there is support for aquatic form, you don't really need to bind that form since druidfunc will automatically put you in aquatic form if you request travel form in water.

    By default hitting your shapeshift key will merely toggle you in and out of that form. If you hit the bear key , you will shift to a bear and if you hit the bear key again it will shift you back to human. If you're human and press the humanoid key it will target yourself. This means you can bind F1-F4 to be shapeshifting keys and if F1 is your humanoid form the key will still work as a self-target key if you've grown used to that default wow behavior.

    Unlike the default interface, DruidFunc will always try to give you the form you requested and if it can't it will move you one step closer to being able to enter the requested shape. For instance if you are mounted and request bear form, you will be dismounted. You will have to press the bear key again to get into bear form. If you're in bear form and request cat form you will revert to humanoid. You'll still need to press the cat key again to get into the cat form.

    You can enhance DruidFunc's feral abilities by using the /DHardShift command. To activate HardShifting enter /Druid HardShift on. Now your cat and bear forms are "locked", meaning if you hit the bear key you will shift into a bear, and if you press the bear key again you will no longer shift back to human form. You will stay a bear until you deliberately hit a different shapeshift key. Additionally the bear and cat shapeshift keys will cycle through some common actions. If you're humanoid and hit the bear key, you'll shift into a bear. The next bear key will attempt to feral charge and maul your target. Each subsequent bear key will repeat the maul attempts.

    If you're humanoid and hit the cat key, you will shift into cat form. The next keypress will attempt to stealth you (if you do not have the wsg flag) and detect humanoids. The next keypress will attempt tiger's fury and ravage (your backstab move). The next keypress will claw if you have energy and farie fire (if you have it trained) if you don't. When you have 5 combo points the cat button will do a ferocious bite.

    Hardshifting doesn't affect humanoid, you will still target yourself. It also won't affect travel form. Here you will continue to toggle between travel form and humanoid form since that's the best functionality to remove movement imparing effects.

    The druids who prefer cats have requested a means to change the functionality of hitting F1 in humanoid form. Since targeting yourself breaks the combo points on the enemy, they wanted a way to quickly get off heals without losing their combo points. You can do this with the /druid target [on/off] command. The default is "on". If you set /druid target off then when you hit the humanoid button while already humanoid DruidFunc will attempt to cast a regrowth on you. If you're below 35% health and have nature's swiftness DruidFunc will attempt a nature's swiftness+healing touch combo. All this is done without losing your target (and combo points). After you get the heal just go back to cat and continue the attack.

    Quick FAQ...

      Q] Why is nothing working the way this section says it should?
      A] Most likely you're using the shapechanging icons on the default interface above your toolbar. DruidFunc doesn't do user-interfaces, druidfunc does macros and keybinds. When you use the default shapeshifting icons on the interface you're bypassing DruidFunc entierly and so you're bypassing DruidFunc's functionality. To get all of the features described above you MUST either set up and use the keybinds or set up and use macros.

> Assist

    Druidfunc has two seperate assist systems. There is a single target assist option which will lock all of your attack spells onto whatever a single person is targeting, regardless of who you are watching. There is also a more flexible smartcast system which will automatically assist whoever you have targeted.

    Smartcast

    Smartcast is a casual system which will assist whoever you have targeted at the moment. If you have a friendly player named connan targeted and he's fighting a bugbear then any healing spells will go on connan, and any attack spells will go on the bugbear. Likewise, if you have the bugbear targeted and it's attacking connan then all healing spells will be redirected to connan and all the attack spells will go to the bugbear.

    To make full use of this system, go to the interface options in WoW (Esc, Interface) and in the "Raid and Party" section, check the "show target of target" option.

    This system comes defaulted as off when first installed. You must specifically enable this with the "/druid smartcast on" option.

    Smartcast over-rides the single-target assist below. If you need to assist only a single target then you need to remember to use "/druid smartcast off" to disable this feature.

    Remember that you need to access both your offensive and defensive abilities through keybinds and macros. If you have moonfire dragged off the spellbook on your toolbar then it's not going to smartcast. You need moonfire dragged off your macro sheet or moonfire from a keybind set up to take advantage of the assist features of this mod.

    Single target assisting

    This addon incorporates a simple assist ability intended for use in raid dungeons and small outdoor groups. It's not recommended you use this feature in pvp or in situations where you may be attacked. What this assist ability does is let you designate a person to assist and all your attack spells will target the monster your designated person is attacking and you will never lose the person YOU are targeting. So lets say you're assisting Gozar and you're watching Bleem's health, if you tap your farie fire (keybind or macro) then farie fire will be put on Gozar's target and you will not lose track of bleem's health bar for even a second. It's pretty nifty actually which is why I incorporated it.

    To set up an assist type /Druid assist (name). You can type /Druid assist to find out who you are currently assisting. You can type /Druid assist off to turn off assisting. You can type /Druid assist on to resume assisting (uses your last assist name). If the person you are assisting is dead (ghost) assisting will be disabled until your target rezes. Note that if something comes charging for you, there's a capper on the flag, or one moonfire will save the raid and bring you fame and glory, unless the person you are assisting has that crucial target, it just ain't gonna happen. So use this cautiously and sparingly in raid type situations.

    If you have the actuall attack spell (IE not a macro you set up but the spell pulled straight from the spellbook) on any of your toolbars then assist will do a range check on the target if it's too far away then your attack will go to what you have selected (assuming it's hostile).

    "/druid assist (name)" is incompatible with the smartcast option. You must disable smartcasting before you can use this assist.

> Buffing
    Buffing is automatic with druid func. Once you set it up, one keypress will buff your target regardless of his level. Like healing, if you cast a buff and have an enemy targeted the buff will be put on YOU.
> Auto-Trinkets

    You can add trinket checking to the macros you create and in addition to that druidfunc has some automatic trinket activiation routines. To enable automatic trinkets type /Druid Trinkets on (/DTrinkets off to disable). When you enable automatic trinkets the following trinkets will attempt to be used....

    • Mar'li's Eye whenever you've used 600 mana
    • Hibernation Crystal whenever you attempt to cast a healing spell
    • Zandalar Hero Charm whenever you attempt to cast an offensive spell.
    • Rune of metamorphasis whenever you attempt to shapeshift.
    • Defiler's Talisman whenever you hit barkskin

    You can add trinket checking and activation to your macros with the command /script Druid.testTrinket("trinket name"). Put this command before the spell cast command so it tests for trinkets before it tries to cast the spell. If you have the specified trinket equipped and it's not in cooldown (IE can be used) then testTrinket will activate the trinket for you. If you cast the spell before you test the trinket the trinket will ALWAYS be unvailable because the spell will activate the global cooldown. Using a trinket however does not start the global cooldown so you can activate as many trinkets as you want (well 2 of them anyway) and then go on to cast your spell. A simple macro to use the Zul'Gurub druid class trinket before using healing touch follows....

    /script --CastSpellByName("Healing Touch(Rank 1)")
    /script Druid.testTrinket("Wushoolay's Charm of Nature");
    /script Druid.HealingTouch( 7, false, false )

    You can test for all the trinkets you like. For example, if you do 5 tests and 2 of the trinkets are equipped (and not on cooldown) then those two trinkets will be used.

> Totem Stomper

    Druidfunc contains a full featured totem stomper. Set it up with the macro /script Druid.TotemStomper() or set it up in the keybinds. When you activate the stomper it will target the highest priority totem and cast a rank 2 moonfire. This is sufficent to destroy most totems. Jindo's totems in Zul'Gurub will be blasted with your highest rank of moonfire. The lightning totems in the abomination wing of naxx are also recognized and will use the maximum rank of moonfire.

> Configuring DruidFunc

    Once installed, you can customize druidfunc with a few simple slash commands. /doutfit (shortcut /do) is the outfitter and has its own section below. /druid (shortcut /df) is the command which will let you save most of the settings.

    Type /druid all by itself to get a list of all the commands and their setting. The list is fairly lengthy so you may need to scroll up a bit until you get to two green lines which are the start of the help.

    /druid stats

      This will give you some information about your character. Including your +heal value with your currently equipped gear, how much mana over 5 you're getting, how much mana you get from spirit (outside the 5 second rule), and an estimate of how much mana you'll get back from innervate.

    /druid ichat [message]

      This will let you set a message that will be whispered when you cast innervate on someone. It can be pretty much anything you want. Example: /druid ichat I just put innervate on you, now stop asking me to heal!

    /druid manac [off/silent/announce/10-100]

      This sets up the mana conserve feature of druidfunc. Once you start casting a healing touch spell you can do a check of the player's health during the cast by hitting the casting key again. If the player's health is above the threshold you've set up then the spell will be aborted, preventing an overheal and saving you (and your raid) a lot of mana that would have otherwise been wasted. Since the check is only made when you press the healing touch key durring the cast you have a lot of options. If you don't tap the key at all the spell is going to land regardless of the target's health. If you hit the key a lot you're going to do a lot of checks durring the fight and every check has the ability to abort the spell if the target no longer needs the heal. The most efficient way to use this feature is to start the spell then hit the cast key again when the spell is 75% into the cast (about 2.4 seconds).

      "/druid manac off" will disable this feature and that's how it comes by default for a new install. "/druid manac silent" will prevent abort messages from showing up in your chat window. The spell will abort without notifying you. "/druid manac announce" will display abort messages in your default chat window (this is the default when manac is first set up).

      "/druid manac 80" will set the health threshold at 80%. As long as the target's health is below 80% when the spell is being cast it will continue to cast. If the target's health goes above 80% while you are casting then the spell will be aborted. You can use any number between 10 and 100. Note that 100 effectively turns this feature off. I personally use 90, your milage may vary.

    /druid plusheal [off/auto/#]

      When healing touch goes to cast it figures out how much health the target needs, looks at the values of the default heals (right out of your spellbook), and then figures out which rank it needs to cast. If you have a lot of +heal gear then you need to tell the healing touch macro to factor that into its decision. This is the place to do it. The values here are off, auto, and a number. If you do "/druid plusheal off" then no calculations will be made. If you use auto, druidfunc will keep track of your plushealing from items (and pots and mana oil and trinkets) and factor that into the healing touch rank calculations. You can also manually specify a number, a positive number will add that amount to the estimated value of the healing touch and lower the rank of the spell which is cast. If you're up against a very bad monster you can use a negative number here which will tend to increase the rank of the healing touch spell being used.

      It's really not that complicated... Lets assume you have a target target, lets call him Connan the undergeared. Connan the undergeared needs a 1,000 point heal. Lets pretend your rank 1 heal will heal 900 points, your rank 2 heal will heal 1000 points, and your rank 3 heal will heal 1100 points. Lets also pretend you have +100 to healing on the items you're wearing so a 1,000 point heal will actually heal 1,100. If you have plusheal set to off (which is the way it first installs), healing touch will select rank 2 because the spellbook says it will heal 1,000 points and connan the undergeared will be healed for 1,100 points (100 points being wasted).

      If you have /druid plusheal auto then healing touch will see you have 100 points of +healing and instead of picking rank 2 it will cast rank 1 which will heal connan for exactly 1,000 points which is exactly what he needs. And because it cast rank 1 instead of rank 2, you just saved a lot of mana.

      If you don't trust df you can do /druid plusheal 100 and no matter what, even if you get completely naked healing touch would factor in 100 points and in this example cast rank 1 instead of rank 2 (which if you were naked would leave connan down 100 points after the heal.)

      If connan is taking a LOT of damage you can use a negative number. "/druid plusheal -100" would effectively say connan needs 1,000 but rank 2 will only give him 900, rank 3 is perfect tho because it will give him 1,000. It really won't give him 1,000 it will give him more, 100 more. Which might just be the extra damage he takes between when you start casting the spell and when it ends 3 seconds later.

      For the most part you want to leave plusheal off until you get around +200 to healing from items then set it to auto... "set it... and forget it!" as someone once spammed on a late night info-mercial.

    /druid hardshift [on/off]

      By default the shapeshifting functions of this library just toggle you back and forth between your forms. Hit the bear key and you shift bear, hit it again and you shift back to human. This command changes all that. Do "/druid hardshift on" and hit the bear key and you'll shift to a bear. Hit it again and it will not only stay in bearform but it will attempt to feral charge your target and maul it if it can't charge. Hit the cat key and you'll shift into cat, hit it again and if you're not in combat you'll stealth and turn on track humanoids. Hit it again and it will attempt to backstab and tiger's fury your target, hit it again and it will claw until you have 5 combo points and then ferocious bite. It will also apply farie fire during periods of low energy if it's not already on the target. Travel form will still toggle you between travel form and humanoid though, only bear and cat are affected by hardshifting.

    /druid target [on/off]

      By default (on) when you hit the humanoid key in human form it will target yourself. A lot of feral cats however asked that there be a way for a hardshifting humanoid key to not do that since they lose their target and combo points. And I said, "sure". And now if you set target to off, when you hit the humanoid key in human form it will try to do some targetless heals on yourself so you get the heals and keep your combo points.

    /druid assist [off/name]

      There are two seperate assist systems in druidfunc. This command sets up the single target assist. It's designed for raids where the raid leader is screaming "assist me or it's minus fifty-dee-kay-pee!" TO ensure you keep that precious 50 deekaypee, all you have to do is type "/druid assist (name)" where (name) is the name of the person you're assisting. If you're supposed to assist connan then you'd type "/druid assist connan". It's that simple. Now all of your attack spells will automatically go to connan's target regardless of what you're looking at. Which means you can keep looking at connan and watch his health but if you want you can hit moonfire or farie fire (the druidfunc versions of course) and be well assured that its only going to be cast on connan's target.

      When you're done assisting just type "/druid assist off". You can also type "/druid assist on" to re-enable the single-target assist. If you use on, it will use the last person you were assisting.

    /druid smartcast [on/off]

      This is the more flexible (and my personal) favorite assist sytem which druidfunc offers. This assist system is designed mostly for pvp but you'll probably find it incredibly useful in just about all facets of the game. Smartcast will automatically retarget your spells depending on the situation. If connan is fighting a bugbear and you have connan targeted, if you hit moonfire the moonfire will be put on the bugbear and not connan (you'll keep watching connan tho). If you cast a heal then the heal spell will go to connan. If you've targeted the bugbear and the bugbear is targeting connan then if you cast moonfire, it's gonna go on the bugbear. If you cast a heal it's gonna go on connan (and you'll still be watching the bugbear when the spell ends).

      This system is great. You run up to a fight, hit tab and get an enemy target. You've enabled target of target in the wow interface (esc, interface, "show target of target" in the raid & party section) so you immediately see who the enemy is attacking now without having to retarget anything you can cast your damage spells and your heal spells and let the mod decide which one goes where. Another very effective strategy is to just hit tab and then hit rejuv to cycle through all the enemies in the battle and get healing going on people who are actually taking damage.

      When first installed this system defaults to OFF, you must specifically turn it on to use this feature.

    /druid moonbar [0-6]

      Are you a moonkin? Do you feel neglected and deprived that all those bears and cats get their own special toolbar to use? Well suffer no more. By default, druidfunc will automatically change your toolbar to toolbar #5 when you shift moonkin and then back to #1 when you shift out. But some groovy wildkin would like to use other bars or (gasp) no bar at all! This lets you chose which toolbar you want to use. If you use zero then this feature is turned off. There will be no toolbar swaps for you. You'll stay on whatever toolbar you were using whenever you switch. If you use a number between 1 and 6 then that's the toolbar you'll switch to when you shift into moonkin form, and when you shift out it will always go back to toolbar #1.

    /druid trinkets [on/off]

      If you turn this feature on with "/druid trinkets on" then the mod will attempt to use some trinkets automatically in certain situations.
      • Mar'li's Eye whenever you've used 600 mana
      • Hibernation Crystal whenever you attempt to cast a healing spell
      • Zandalar Hero Charm whenever you attempt to cast an offensive spell.
      • Rune of metamorphasis whenever you attempt to shapeshift.
      • Defiler's Talisman whenever you hit barkskin

    /druid prayer [25-100]

      This sets the threshold at which desperateprayer will start burning your cooldowns in an attempt to get a heal off. If you set "/druid prayer 50" then if you hit desperate prayer and your health is over 50% it's just going to cast a normal healing touch. If you hit desperate prayer and your health is lower than 50% then this mod is gonna start burning nature's swiftness, trying to get you a swiftmend, tripping your zandalar class trinket if you have it on, whatever it takes.
> Creating Macros
    To create a macro type /macro in wow to open up the macro interface. It's recommended you hit the "character-specific" tab. Create a new macro, name it, and pick an icon.

    Copy and paste the text below into your macro (only the lines that start with /script).

    For example:

    Mark of the Wild
    This function will place a mark of the wild on the target. It will automatically adjust the rank of the spell to the level of the target. Press it and forget it!

    /script --CastSpellByName("Mark of the Wild(rank 1)")
    /script Druid.MarkOfTheWild()

    You would highlight the 2 /script lines from this web page. You would then hit Cntrl-C to copy those two highlighted lines. You would load up wow, go to the macro text area and hit cntrl-V to paste the lines. You do not copy over the title or any of the explanitory text.

    Drag the macro icon to your toolbar and you have successfully created a new macro. For those who are interested the first line is there only to give WoW information on spell cooldown and range. The second line is the line which actually calls the function.

    List of Macros you can make

    Mark of the Wild ()
    This function will place a mark of the wild on the target. It will automatically adjust the rank of the spell to the level of the target. Press it and forget it!

    /script --CastSpellByName("Mark of the Wild(Rank 1)");
    /script Druid.MarkOfTheWild();

    Thorns ()
    This function will place Thorns on the target. It will automatically adjust the rank of the spell to the level of the target. Press it and forget it!

    /script --CastSpellByName("Thorns(rank 1)")
    /script Druid.Thorns()

    Roots ()
    This function will cast entangling roots on the target. This function is not tied into the spell casting assist so it will go to whatever you have targeted. There's no additional functionality with this macro it's just here so it can be bound to keys and as a convenience to druids who are leveling (since it always casts the maximum rank).

    /script --CastSpellByName("Entangling Roots(rank 1)")
    /script Druid.Roots()

    NaturesGrasp ()
    This function will activate the Nature's Grasp talent (if you have it trained of course). There's no additional functionality with this macro it's just here so it can be bound to keys and as a convenience to druids who are leveling (since it always casts the maximum rank).

    /script --CastSpellByName("Nature's Grasp(rank 1)")
    /script Druid.NaturesGrasp()

    Hurricane ()
    This function will activate the Hurricane skill. There's no additional functionality with this macro it's just here so it can be bound to keys and as a convenience to druids who are leveling (since it always casts the maximum rank).

    /script --CastSpellByName("Hurricane(rank 1)")
    /script Druid.Hurricane()

    Hibernate ( partyChat )
    This function will cast hibernate on the selected target. If the target is actually a target and a beast AND you pass true for partyChat then the raid/party/area will be informed that you have performed crowd control on the target.

    /script --CastSpellByName("Hibernate(Rank 1)")
    /script Druid.Hibernate( false )

    Rebirth ( partyChat )
    This function will cast Rebirth (your res spell) on the selected target. If the target is actually dead and someone you can rez AND you pass true for partyChat then the raid/party/area will be informed that you are rezzing the specified target. Note that at present the cooldown and reagent is not checked so the party may be informed you're rezzing someone even when you actually can't.

    /script --CastSpellByName("Rebirth(Rank 1)")
    /script Druid.Rebirth( false )

    Abolish Poison ()
    There's no real enhanced functionality for this function but it does have auto-selfcast. If your target is hostile then Abolish Poison will be cast on YOU

    /script --CastSpellByName("Abolish Poison")
    /script Druid.AbolishPoison()

    Remove Curse ()
    There's no real enhanced functionality for this function but it does have auto-selfcast. If your target is hostile then Remove Curse will be cast on YOU

    /script --CastSpellByName("Remove Curse")
    /script Druid.RemoveCurse()

    Regrowth (sendchat, targetLastEnemy)
    This function casts your regrowth spell (highest rank available). If you have an enemy targeted (or nothing at all) the heal will go to you. There are two values you can send here the first value is "sendchat" if you set this to true then you will get some information about what is being cast and the spell rank. If you set it to false then this information will not be displayed. The second option will automatically target the last enemy if you set this to true, this is legacy stuff tho really you shouldn't need the second value to be anything but false.

    Unlike the original druidfunc this version does NOT allow you to spam your party and raid with every little heal you cast. A lot of druids think it's cool and gets them noticed, well its not and it does get you noticed in a bad way. Removing party/raid spam is for your own good, trust me. So Druid.Regrowth(true, false) will tell you when its casting a heal and won't attempt to target the last enemy. Druid.Regrowth (false, true) will not tell you when it's casting a heal and will attempt to target the last enemy after.

    /script --CastSpellByName("Regrowth(Rank 1)")
    /script Druid.Regrowth(false, false)

    Rejuvenation (sendchat, targetLastEnemy)
    This function casts your rejuvenation spell (highest rank available). If you have an enemy targeted (or nothing at all) the heal will go to you. There are two values you can send here the first value is "sendchat" if you set this to true then you will get some information about what is being cast and the spell rank. If you set it to false then this information will not be displayed. The second option will automatically target the last enemy if you set this to true, this is legacy stuff tho really you shouldn't need the targetLastEnemy to be anything but false.

    /script --CastSpellByName("Rejuvenation(Rank 1)")
    /script Druid.Rejuvenation(false, false)

    Rejuv (sendchat, targetLastEnemy)
    This is like Rejuvenation but without the swiftmend interface and the check to see if rejuv is already on the target. If you want rejuv to always cast and want another key to cast swiftmend and not your rejuv key this is the macro for you.

    /script --CastSpellByName("Rejuvenation(Rank 1)")
    /script Druid.Rejuv(false, false)

    Swiftmend ()
    This function will cast swiftmend if you have regrowth or rejuvenation on the target. If there's no hot on the target it will cast rejuvenation.

    /script --CastSpellByName("Swiftmend")
    /script Druid.Swiftmend()

    Healing Touch (MINRANK, sendchat, targetLastEnemy, forceRank)
    This is your bread and butter spell! If you set up no other macro you should set up this one! If you have an enemy targeted the heal will automatically go to you. If you have a party member or raid member targeted the smallest heal (rank) needed will be cast. If the member is not part of the raid then it will cast the best guess rank for the level of the target.

    The FIRST value you can pass is the MINIMUM RANK to cast. If you say 7 then this function will never cast a healing touch lower than rank 7!. You want to set this rather high in raid instance (rank 6 is my favorite). If you're a mana pack rat set this to 1. If you want to disable auto-scaling entierly set this to your maximum healing rank. Passing true as the second value (sendchat) will have the function get a little chatty and tell you what it's doing who it's casting on and what rank its using as well as the target's health and estimated value of the heal. Passing true as the Third value (targetLastEnemy) will have the function try to target the last enemy you had selected. forceRank (the fourth value) is completely optional, if its true then the number you set as the minrank will be the ONLY rank of healing touch that will be attempted it will never be lower or higher. This is there for people who like to spam rank 4 heals (which can be ~1k with good +heal gear) on certain boss encounters but still want to take advantage of the mana conserve feature of healing touch.

    /script --CastSpellByName("Healing Touch(Rank 1)")
    /script Druid.HealingTouch(1, true, false, false)

    The following example will cast ONLY a rank 4 healing touch.
    /script --CastSpellByName("Healing Touch(Rank 4)")
    /script Druid.HealingTouch(4, true, false, true)

    DesperatePrayer ( setTarget )
    This command will always cast a heal on you regardless of who you have targeted. If your health is below 35% the spell will cast nature's swiftness before the heal (if you have nature's swiftness trained). If you have the ZG druid trinket equipped it will attempt to use that before the heal. setTarget is optional, if it's not there or false it attempts the heal on you. If you pass true it will attempt to heal your target.

    /script Druid.DesperatePrayer()

    Innervate (sendchat, noWhisper)
    If you have anything with a mana pool selected then this function will cast the innervate on you and not the target. Yes, no more castting innervate on the rogue, despite how much they seem to revel in it. If sendchat is true the function will announce the innervate in say, party, or raid, depending on how you're groupped. By default innervate will whisper the person you're innervating, you can disable this by setting noWhisper to true.

    /script --CastSpellByName("Innervate")
    /script Druid.Innervate(false, false)

    ManaMe ()
    This macro casts innervate on you and only you. Unless you're over half mana or you already have innervate on you.

    /script --CastSpellByName("Innervate")
    /script Druid.ManaMe()

    Moonfire ()
    This function works with the assist ability in this addon see the assist section above for more information. Moonfire is pretty cool in that if you have a totem selected it will automatically use your low rank moonfire instead of your big mana hog. I could have added some REAL totem stomper action but hey I'm horde now >:D . There are no arguments to pass here, no values, no sendchat or target last enemy.

    /script --CastSpellByName("Moonfire(Rank 1)")
    /script Druid.Moonfire()

    Starfire ()
    This function works with the assist ability in this addon see the assist section above for more information. There are no arguments to pass here, no values, no sendchat or target last enemy.

    /script --CastSpellByName("Starfire(Rank 1)")
    /script Druid.Starfire()

    Wrath ()
    This function works with the assist ability in this addon see the assist section above for more information. There are no arguments to pass here, no values, no sendchat or target last enemy.

    /script --CastSpellByName("Wrath(Rank 1)")
    /script Druid.Wrath()

    Insect Swarm ()
    This function works with the assist ability in this addon see the assist section above for more information. There are no arguments to pass here, no values, no sendchat or target last enemy.

    /script --CastSpellByName("Insect Swarm(Rank 1)")
    /script Druid.InsectSwarm()

    Faerie Fire ()
    This function should work in both humanoid and feral forms. If you're feral it will attempt to cast the feral version, and if you're humanoid it will attempt to cast the humanoid version. You just need one button for faerie fire. This function works with the assist ability in this addon see the assist section above for more information.

    /script --CastSpellByName("Faerie Fire(Rank 1)")
    /script Druid.FaerieFire()

    Barkskin ()
    This function doesn't offer any added functionality unless you get into the source code and enable trinkets in which case (by default) it will attempt to use the defiler's talisman every time you cast barkskin (a 600pt melee damage shield). I figured if you need barkskin you probably need a little damage shield too. I like it.

    /script --CastSpellByName("Barkskin")
    /script Druid.Barkskin()

    ShiftHuman ()
    This function will attempt to switch you to humanoid form. If you are already in humanoid form this function will target YOU. This function was designed to replace your F1 key and still have it work the way you expect it to when you're casting spells in humanoid form. Note that shifting functions have only one /script line to copy since there's no cooldown or range.

    /script Druid.ShiftHuman()

    ShiftBear ()
    This function will attempt to switch you to bear form if you are already in bear form it will switch you back to humanoid. Note that shifting functions have only one /script line to copy since there's no cooldown or range.

    /script Druid.ShiftBear()

    ShiftCat ()
    This function will attempt to switch you to cat form if you are already in cat form it will switch you back to humanoid. Note that shifting functions have only one /script line to copy since there's no cooldown or range.

    /script Druid.ShiftCat()

    ShiftTravel ()
    This function will attempt to switch you to travel form. If you are already in travel form it will shift you back to humanoid. If you are swimming it will shift you to aquatic form automatically.Note that shifting functions have only one /script line to copy since there's no cooldown or range.

    /script Druid.ShiftTravel()

    ShiftAqua ()
    This function will attempt to switch you to Aquatic form. If you are already in Aquatic form it will shift you back to humanoid. If you are not in water it will shift you to Travel form automatically. Note that shifting functions have only one /script line to copy since there's no cooldown or range.

    /script Druid.ShiftAqua()

    ShiftMoonkin ()
    This function will attempt to switch you to Moonkin form. bwhahahahhaha. Er.. Sorry about that (snicker), but well... You know... Moonkin. H00000nk. Well at least they can bust a groove. Anyway I'm sure some people love them enough to want to use this function despite what ignorant condecenting ill-informed programmers might think to the contrary. On a more serious note, shiftmoon will also set your action bar to 5 automatically giving you your own toolbar to use for moonkin form (similar to bear and cat)

    /script Druid.ShiftMoon()

    Maul ()
    This function will attempt to execute your Bear Form Maul attack. There's no added functionality save that it will always use your highest rank as a convenience to leveling druids.

    /script --CastSpellByName("Maul(Rank 1)")
    /script Druid.Maul()

    Bash ()
    This function will attempt to execute your Bear Form Bash attack. There's no added functionality save that it will always use your highest rank as a convenience to leveling druids.

    /script --CastSpellByName("Bash(Rank 1)")
    /script Druid.Bash()

    Swipe ()
    This function will attempt to execute your Bear Form Swipe attack. There's no added functionality save that it will always use your highest rank as a convenience to leveling druids.

    /script --CastSpellByName("Swipe(Rank 1)")
    /script Druid.Swipe()

    DemRoar ()
    This function will attempt to execute your Bear Form Demoralizing Roar ability. There's no added functionality save that it will always use your highest rank as a convenience to leveling druids.

    /script --CastSpellByName("Demoralizing Roar(Rank 1)")
    /script Druid.DemRoar()

    FeralCharge ()
    This function will attempt to execute your Bear Form Feral Charge ability. There's no added functionality save that it will always use your highest rank as a convenience to leveling druids.

    /script --CastSpellByName("Feral Charge")
    /script Druid.FeralCharge()

    Growl ()
    This function will attempt to execute your Bear Form Growl ability. There's no added functionality save that it will always use your highest rank as a convenience to leveling druids.

    /script --CastSpellByName("Growl")
    /script Druid.Growl()

    ChalRoar ()
    This function will attempt to execute your Bear Form Challenging Roar ability. There's no added functionality save that it will always use your highest rank as a convenience to leveling druids.

    /script --CastSpellByName("Challenging Roar")
    /script Druid.ChalRoar()

    Claw ()
    This function will attempt to execute your Cat Form Claw attack. There's no added functionality save that it will always use your highest rank as a convenience to leveling druids.

    /script --CastSpellByName("Claw(Rank 1)")
    /script Druid.Claw()

    Ravage ()
    This function will attempt to execute your Cat Form Ravage attack. There's no added functionality save that it will always use your highest rank as a convenience to leveling druids.

    /script --CastSpellByName("Ravage(Rank 1)")
    /script Druid.Ravage()

    Rip ()
    This function will attempt to execute your Cat Form Rip attack. There's no added functionality save that it will always use your highest rank as a convenience to leveling druids.

    /script --CastSpellByName("Rip(Rank 1)")
    /script Druid.Rip()

    FerociousBite ()
    This function will attempt to execute your Cat Form Ferocious Bite attack. There's no added functionality save that it will always use your highest rank as a convenience to leveling druids.

    /script --CastSpellByName("Ferocious Bite(Rank 1)")
    /script Druid.FerociousBite()

    Prowl ()
    This function will attempt to execute your Cat Form Prowl ability. This function will not let you prowl if you have the wsg flag. If you happen to be a night elf in humanoid form the prowl macro will attempt to shadowmeld you.

    /script --CastSpellByName("Prowl(Rank 1)")
    /script Druid.Prowl()

    Pounce ()
    This function will attempt to execute your Cat Form Pounce ability. There's no added functionality save that it will always use your highest rank as a convenience to leveling druids.

    /script --CastSpellByName("Pounce(Rank 1)")
    /script Druid.Pounce()

    Cower ()
    This function will attempt to execute your Cat Form Cower ability. There's no added functionality save that it will always use your highest rank as a convenience to leveling druids.

    /script --CastSpellByName("Cower(Rank 1)")
    /script Druid.Cower()

    Dash ()
    This function will attempt to execute your Cat Form Dash ability. There's no added functionality save that it will always use your highest rank as a convenience to leveling druids.

    /script --CastSpellByName("Dash(Rank 1)")
    /script Druid.Dash()

    TigersFury ()
    This function will attempt to execute your Cat Form Tiger's Fury ability. There's no added functionality save that it will always use your highest rank as a convenience to leveling druids.

    /script --CastSpellByName("Tiger's Fury(Rank 1)")
    /script Druid.TigersFury()

    Shred ()
    This function will attempt to execute your Cat Form Shred ability. There's no added functionality save that it will always use your highest rank as a convenience to leveling druids.

    /script --CastSpellByName("Shred(Rank 1)")
    /script Druid.Shred()

    BestAttackCat ()
    This function uses the following rules... If not in combat attempt to activate detect humanoids and stealth (if you don't have the wsg flag). If stealthed attempt to cast tigers' fury and ravage (backstab). If in combat and not stealthed attempt to claw -- if no energy for claw attempt to faerie fire. If 5 combat points attempt ferocious bite.

    /script --CastSpellByName("Claw(Rank 1)")
    /script Druid.BestAttackCat()

    TotemStomper ()
    When you activate the stomper it will target the highest priority totem and cast a rank 2 moonfire. This is sufficent to destroy most totems. Jindo's totems in Zul'Gurub will be blasted with your highest rank of moonfire.

    /script --CastSpellByName("Moonfire(Rank 2)")

    /script Druid.TotemStomper()

    Equip ("Main hand Weapon", "Offhand Weapon", "Idol")
    This will equip the specified weapon(s) if it's in your inventory. Note that equipping a weapon starts a 1 second global cooldown however a weapon can still be equipped during a cooldown so make sure this line comes AFTER any spellcast requests when you make the macro. You must type the name of the weapon you can't shift-click the name from your inventory when setting up a macro.

    /script Druid.Equip("Soulkeeper", "", "Idol of Rejuvenation")

    Swap ("MainHand", "Offhand", "Mainhand", "Offhand")
    This will swap the specified weapon(s) if it's in your inventory.

    /script Druid.Equip("Staff of Dominance", "", "Soulkeeper", "")

    SwapI ("MainHand", "Offhand", "Idol", "Mainhand", "Offhand", "Idol")
    This will swap the specified weapon(s) if it's in your inventory. It is the same as Swap but provides the ability to swap idols. Thus the I in SwapI

    /script Druid.Equip("Some Dagger", "Some Offhand", "Some Idol", "Some Mace", "Offhand of the Druish Princess", "American Idol")

    Dress ("outfit")
    This command will equip the specified armor set. It will equip all the gear in the set from head to trinket regardless of how the user has configured /doutfit. The outfit names you can pass are human, cat, bear, travel, moon, aqua, fire, nature, pvp, wsg, mount, inneravte, mana, special1, special2, and special3. It's safe to use this command before or after a spellcast command.

    /script Druid.Dress("fire")

    QuickShift ("potion string", "buff name")
    This is a fairly technical function which checks for the passed buff name (use /script Druid.dump to get the name of the buff) and if it's not present will, with subsequent keypresses, shift you out of form, drink the potion, and shift you back to bear.

    Druid.QuickShift("greater stoneshield potion", "INV_Potion_69")

    PatchWerk()
    This function is specifically for the patchwerk encounter in naxx. It will shift you out of bear (if your stoneshield pot is down), quaff a stoneshield potion, and shift you back into bear. all within a second or two on the outside.

    Druid.PatchWerk()

    BearBark()
    This function shifts you out of form, casts barkskin and then will shift you back.

    Druid.BearBark()

> Compatability Notes

    Although every effort has been made to ensure that druidfunc behaves well with other mods, it's inevitable that there will occassionally be problems. As I become aware of the issues I'll post them here.

    COUNTMOON

      Countmoon version .45 and earlier breaks automatic selfcasting in druid func because of a bug in its code. In version .45 you can fix countmoon by changing line 1208 to read:

      return CountMoon.oldCastSpellByName(spellString, onSelf);

    FASTCAST

      Fastcast appears to break the mana conserve, and to a far lesser extent, desperate prayer, features of this mod. The following usage suggestions may fix the problem if you use fastcast:

        Fastcast only locks spells activated via the action bar, spells activated via keybindings (as well as other mods and spells such as click-casting that is not activated from the UI's default action bar) do not benefit from fastcasting. In order to use Fastcast in conjunction with DruidFunc, you'll need to include FastcastStopCasting() as part of the macros you write.

        At the simplest level:
        /script --CastSpellByName("Healing Touch")
        /script FastcastStopCasting()Druid.HealingTouch(4)

        If you do disable Fastcast in-game once in a while, use:
        /script --CastSpellByName("Healing Touch")
        /script if FastcastEnabled()then FastcastStopCasting()end;Druid.HealingTouch(4)

        If you do disable Fastcast from the addons menu and still want your macros to work, use:
        /script --CastSpellByName("Healing Touch")
        /script if FASTCAST_NAME~=nil and FastcastEnabled()then FastcastStopCasting()end;Druid.HealingTouch(4)

        edit: btw, to fully benefit from Fastcast, you'll want to add FastcastStopCasting() to almost every macro you add to your action bar (there may be some exceptions where you might want the "protection" of fastcast instead); spells added directly from your spellbook to the action bar will effectively call FastcastStopCasting() when activated, so you dont have to write a macro for those. it's been my experience that fastcast can trim down as much as your lantency for each non-instant spell cast, eg 500ms it can trim off about 0.5s per non-instant spell cast and is well worth the effort to get it working.