User:Enalung/Focus Macro Notes

I will go through several iterations in order to create a pair of focus macros. One will be be aimed at Crowd Control, the other as an assist in dungeons. Theses are to be complete targeting schemes.

Goals
Crowd Controll


 * Clear dead hostile focus
 * Clear dead hostile targets
 * Avoid overiding a friendly assist focus unless specificaly requested by the player through a modifier key.
 * Avoid overiding a friendly assist target

Assist


 * Clear dead hostile focus
 * Clear dead hostile targets
 * Avoid overiding a hostile Crowd Controll focus unless specificaly requested by the player through a modifier key.

Notes


 * Both of theses Focus macros were designed to play nice with each other.
 * Both of theses macros will overide the focus if CTRL is pressed. The CC macro will also overide focus if the focus target is dead.
 * Both of theses macros will clear dead targets.
 * Both of theses macros will clear dead enemy focus.
 * Theses macros will not overide your current target, friendly or hostile.

Exemple Focus Macro

 * If you do not have a focus it will set focus on your mouseover target.
 * It will cast fear on your focus.
 * If you do not have a focus, it will cast fear on your target.
 * Will null your focus if you click the macro button with the control key held down, or if your target is dead.

/focus [@focus, noexists][2focus, dead] mouseover /cast [@focus, exists] Fear; Fear /stopmacro [nomodifier] /clearfocus [modifier:ctrl]
 * 1) showtooltip

First Iteration
This macro was created on tuesday, before the server went up. They are fully untested.

Description

Focus macro for Crowd Controll

Details


 * Clears dead targets
 * Clears dead enemy focus
 * If CTRL is pressed or if you do not have a focus, focuses...
 * Your target, if hostile
 * Your mouseover target, if hostile
 * Cast your spell on...
 * Your focus target
 * Your mouseover target
 * Your target
 * Your target's target

Notes


 * This macro has been made so that it won't overide a helpful assist focus. It will overide dead enemy focus.
 * If you already have a focus, you must press controll in order to focus a hostile player to Crowd Controll.
 * To focus a target, you can either target that player directly, or simply mouse over him.
 * If you do not have a focus, this macro can focus a friendly target. There is no way to check both the focus and your target in a single line. You can add a /clearfocus [@focus, help] line to prevent this, but this will also overide any friendly assist focus you might have, even if CTRL is not pressed. You could also add [@target, help] to the cleartarget line, but this would clear any friendly target you are using for assist. Choose your poison.

/cleartarget [@target, dead] /clearfocus [@focus, harm, dead] /focus [@focus, noexists][mod:ctrl, @target, harm]; [@focus, noexists][mod:ctrl, @mouseover, harm] mouseover /cast [@focus, harm][@mouseover, exists, harm, nodead][@target, harm][@targettarget, harm] Cyclone
 * 1) showtooltip Cyclone

Iteraton 2
I have never made macros involving such a complex targeting scheme, so decided to test it line by line to see how each line behave on it's own. It was a wise decision. I already have a bug. This work...

/focus [@focus, noexists][mod:ctrl, harm]; [@focus, noexists] mouseover

But this does not works...

/focus [@focus, noexists][mod:ctrl, harm]; [@focus, noexists][mod:ctrl, @mouseover, harm] mouseover

Here's why. Focus is the key unit meaning that you can make tests using it and send another unit as target. Target works because it is the default unit. You can make tests on the target and send it as unit. Target being the default unit is also why I can use [mod:ctrl, harm] without specifying à target within that condition. The condition is tested against the default, target, which is then fed to /focus as target.

Iteration 3

 * Both of theses lines work without an itch. No real suprise considering how simple they are... What is a suprise is the fact that the UI already does both of theses tasks on it's own as a big boy. They aren't really needed.

/cleartarget [@target, dead] /clearfocus [@focus, harm, dead]

Iteration 4

 * Here's an idea. How's about we feed the mouseover target through the target and then use a simple targetlastarget line? Could that be a way of getting around the UI restriction?
 * Also, I just noticed that the full lenght version blows the maximum char count for macros... I need to shorten it.
 * This line works without an itch. Unlike the focus line, this works because the spell is cast on the same target as the test.

/cast [@focus, harm][@mouseover, exists, harm, nodead][@target, harm][@targettarget, harm] Cyclone

Interation 5

 * Add a /stopcasting line to the macro so that Crowd Controll takes priority.
 * Canibalise the spaces to use less characters.

/focus [mod:ctrl, @mouseover, harm][mod:ctrl, harm];[@focus, exists] focus;[harm][@mouseover, harm]

This line behaves as expected.


 * CTRL pressed
 * Focuses your mouseover, if hostile
 * Focuses your target, if hostile
 * Preserve your current focus, if you have one.
 * Otherwise...
 * Focuses your mouseover, if hostile
 * Focuses your target, if hostile

Iteration 6
Time to see how those lines behave toguether...

/focus [mod:ctrl, @mouseover, harm][mod:ctrl, harm];[@focus, exists] focus;[@mouseover, harm][harm] /cast [@focus, harm][@mouseover, harm, nodead][@target, harm][@targettarget, harm] Cyclone
 * 1) showtooltip Cyclone

The macro seem to work properly. Time to work on it's sister macro now.

Edit: Didn't take me 30 seconds to find a bug after I posted this. The last 2 conditions were reversed.

Iteration 7

 * Added /stopcasting line

/stopcasting /focus [mod:ctrl, @mouseover, harm][mod:ctrl, harm];[@focus, exists] focus;[@mouseover, harm][harm] /cast [@focus, harm][@mouseover, harm, nodead][@target, harm][@targettarget, harm] Cyclone
 * 1) showtooltip Cyclone

First Iteration
Focus macro for damage dealing abilities using allied focus

Description

This cast the desired spell on the most relevant target. In order of priority, your spells will be cast on your focus' target, your target's target, your target, a mouseover target, or a random target.

Details


 * Clears dead targets
 * Clears dead enemy focus
 * If CTRL is pressed, focuses...
 * Your target, if friendly
 * Your mouseover target, if friendly
 * If you have a target, do nothing, otherwise...
 * Target a mouseover target.
 * Target an enemy. This equivalent to using tab.
 * Cast the desired spell on...
 * Your focus target
 * Your target
 * Your target's target

Notes


 * This macro has been made so that it won't overide a harmful CC focus.
 * You must press controll in order to focus a friendly player to serve as assist target. You can either target that player directly, or simply mouse over him.
 * If you do not have a target, this macro will acts a bit like tab. Because spells are cast in priority on your focus' target, this could mean that your target is not the target your casting spells on.
 * Outside of combat, the tab feature of this macro is disabled as a safety to prevent targeting through walls which might cause some grief. Some players might wish to fully remove this line.

/cleartarget [@target, dead] /clearfocus [@focus, harm, dead] /focus [mod:ctrl, @target, help][mod:ctrl, @mouseover, help, exists] /tar [@target, exists]; [@mouseover, harm, exists, nodead] /targetlastenemy [@target, noexists, combat] /cast [@focustarget, harm][@target, harm][@targettarget, harm] Starfire
 * 1) showtooltip Starfire

Iteration 2
I will take what I have learned with the previous macro exept...


 * There is no need for a stop casting line on a damage spell.

Theses 2 line work as intended. Did away with the targetlasttarget line which seemed more like an artefact after changing the macro.

/tar [@target, exists][@mouseover, harm, nodead] /targetenemy [noexists]

Iteration 3
So far so good... I can keep a hostile focus CC target and assist my target as well as hit my target as intended. This macro also acts a bit like tab with the /targetenemy line.

/tar [@target, exists][@mouseover, harm, nodead] /targetenemy [noexists] /cast [@focustarget, harm][@target, harm][@targettarget, harm] Starfire

Iteration 4
The focus line seems to be working fine...

/focus [mod:ctrl, @mouseover, help][mod:ctrl, help];[@focus, exists] focus;[@mouseover, help][help]

Iteration 5
I blew the maximum character count.... Canibalising the spaces...

/focus [mod:ctrl, @mouseover, help][mod:ctrl,help];[@focus, exists] focus;[@mouseover, help][help] /tar [@target, exists][@mouseover, harm, nodead] /targetenemy [noexists] /cast [@focustarget, harm][@target, harm][@targettarget, harm] Starfire
 * 1) showtooltip Starfire

Iteration 6
The macro is now exactly 255 characters. It fits... but barely. I'll see if I can reduce it more...

/focus [mod:ctrl,@mouseover,help][mod:ctrl,help];[@focus,exists] focus;[@mouseover,help][help] /tar [@target,exists][@mouseover,harm,nodead] /targetenemy [noexists] /cast [@focustarget,harm][@target,harm][@targettarget,harm] Starfire
 * 1) showtooltip Starfire

Iteration 1
Well, so much for the assist scheme. I tried it with 5 spells, Starfire, Wrath, Starsurge, Insect Swarm, Moonfire. Almost right away, it became obvious that it wasen't apropriate for tab doting as the dots would always end on the focus target. I also noticed that as soon as I would mouse over a friendly target and punch the macro, it would choose it as focus if I didn't have a focus. While that was initialy intended, it quickly became obvious that behavior is annoying. That condition has to go. Iteration 8 would look like this...

/focus [mod:ctrl,@mouseover,help][mod:ctrl,help];[@focus,exists] focus;[help] /tar [@target,exists][@mouseover,harm,nodead] /targetenemy [noexists] /cast [@focustarget,harm][@target,harm][@targettarget,harm] Starfire
 * 1) showtooltip Starfire

I also forogt I had already done a bit of macro work on my mage. I really like the mouseover targeting, it works real nice. This is what I had...

/cleartarget [@target, dead] /target [@mouseover, exists, harm, nodead] /stopmacro [@target, noexists] /petattack [combat] /cast Frostbolt
 * 1) showtooltip

However, that macro has many fail points. For one, it lacks any kind of assist scheme, and I've noticed that the pet does not nescessairly go on my target. Recent reading taught me that the pet had it's own target and didn't automaticaly go on your target. I'll have to investigate that further. With that said, the pet isn't really part of my current worries. I guess back to basics is in order. I have the following to work with for potential hostile targets...


 * [@mouseover, harm, nodead]
 * [@target, harm]
 * [@focustarget, harm]
 * [@targettarget, harm]

And the following for potential friendly targets or focus, considering that [@mouseover,help] is out...


 * [mod:ctrl,@mouseover,help]
 * [mod:ctrl,help]
 * [@focus,exists]
 * [help]

I have the following commands to work with...


 * /focus
 * /clearfocus
 * /target /tar
 * /targetlasttarget
 * /targetenemy
 * /cleartarget
 * /cast

And 255 characters to work it out. In a party or raid situation, if you are assisting anyone, it is going to be the tank. Being able to change focus quickly isn't trully required as your focus will remain the same most of the time. In a party situation, you might have to CC, or might not depending on how geared the tank is. In a raid situation, you are less likely to have to CC. In a PvP situation, your focus might change in middle of the battle if he dies, or if you are sent at the other end of the field. You will also be required to CC.

Keeping the ability to select a focus by mouseover is a good idea, allowing that to happen without player consent is a bad idea. Hense, a middle ground solution is to remove solutions which don't make use of [mod:ctrl]. This leaves us with...


 * [mod:ctrl,@mouseover,help]
 * [mod:ctrl,help]
 * [@focus,exists]

Should the mouseover have priority? A dam good question. Should the current target be overwritten by the focustarget, or the targettarget? Should those have priority? Perhaps part of the solution is to do all the work without the use of a /target line. However, that would make it harder to keep track of dots.

/focus [mod:ctrl,@mouseover,help][mod:ctrl,help] /tar [exists][@mouseover,harm,nodead] /targetenemy [noexists,combat] /cast [@target,harm][@focustarget,harm][@targettarget,harm] Starfire
 * 1) showtooltip Starfire

This seems like an acceptable solution. It will have to be tested. Perhaps part of the solution is to create several versions of this macro for different spells in such a way that tab dotting is possible, but heavy damage nukes will priorise the tank's target.

Iteration 2
Still untested, but I decided to split it into 2 versions. I've also removed the targetenemy line. With the mouseover targeting working so well, I feel the /targetenemy line isn't all that usefull and would cause more grief then anything else.

Nuke

/focus [mod:ctrl,@mouseover,help][mod:ctrl,help] /tar [exists][@mouseover,harm,nodead] /cast [@focustarget,harm][@targettarget,harm][@target,harm] Starfire
 * 1) showtooltip Starfire

Mouseover Dot

/focus [mod:ctrl,@mouseover,help][mod:ctrl,help] /tar [@mouseover,harm,nodead] /cast [@target,harm][@focustarget,harm][@targettarget,harm] Moonfire
 * 1) showtooltip Moonfire

Simple assist

/assist Cptplanet /tar [exists][@mouseover] /targetenemy [noexists] /cast
 * 1) showtooltip