I wrote some macros for my hunter when starting on this server last year. I shared them with a few players in-game and have received great responses. I would like to share them with everyone and hope they enjoy the quality of life they provide.
Call/Dismiss Pet
Code: Select all
/run if not HasPetUI() then CastSpellByName('Call Pet') else CastSpellByName('Dismiss Pet') end
Well...I think I have to start with this macro, which will call or dismiss your pet. It checks whether your pet is summoned with a function that checks if the pet UI panel is available, a fool-proof method to ensure that you are dismissing a real pet. If the pet UI does not exist, pet is summoned. This just might work for warlocks given demons have a UI panel - but for several reasons I can think of, this macro does not suite a warlock quite the same.
Pamper Pet
Code: Select all
/run if HasPetUI() then if UnitIsDead('pet') then CastSpellByName('Revive Pet') elseif (UnitHealth('pet')/UnitHealthMax('pet')*100)<75 then CastSpellByName('Mend Pet') else CastSpellByName('Feed Pet') PickupContainerItem(0,1) end end
This is one of my favorite macros. Pamper pet will check your pet for several conditions. If your pet is dead, cast Revive Pet. This is the first thing the macro will do we cannot do anything with a dead pet. If your pet is alive but is significantly hurt (if the pet has lees than 75% hp), cast Mend Pet. I determined that 75% of max health is the best indicator of a pet engaged in combat, or leaving combat. Anything less, and your pet is likely on it's way to death and Mend Pet will not prevent that. Any higher, and it is a wasted Mend Pet given pets regenerate so sufficiently. If your pet is alive and healthy then Pamper Pet will cast Feed Pet and automatically grab the first item in your Backpack, so make sure you keep your pets favorite foods there and this macro is super convenient.
Engage
Code: Select all
/run local t='target'if UnitExists(t) and UnitCanAttack('player',t) then PetAttack(t)if CheckInteractDistance('target',3) then CastSpellByName('Attack') else CastSpellByName('Auto Shot') end else TargetNearestEnemy() end
Engage allows the Hunter and their pet to attack the target together. This macro also checks the target distance and will use auto melee attack or auto shot attack if the target is close or far enough. I believe the function CheckInteractDistance is looking to see whether the target can be inspected, which happens to be melee range.
Assist Pet
Code: Select all
/run AssistUnit('pet') if UnitExists('target') then if CheckInteractDistance('target',3) then CastSpellByName('Attack') else CastSpellByName('Auto Shot') end end
Assist Pet allows the hunter to target and attack the pets' active target. Most of the code is similar to Engage.
Disengage
Code: Select all
/run SpellStopCasting('Auto Shot') SpellStopCasting('Attack') ClearTarget()
Disengage will cancel Attack or Auto Shot as well as clearing target. A nice way to forget about the target you were currently engaged with. No need to mash that Esc button, which is really the point of these macros to help your button presses be more intentional.
That is most of what I have to share. My other Hunter macros are a bit more philosophically unique to some things I aim to achieve as a Hunter. I may add them when I have time to explain their use. I hope you enjoy!