My wife heals and we had to sort out some mouse-over macro issues. This is the macro we were using.
/micon "Cure"
/ac "Cure" <mo>
/ac "Cure"
/ac "Cure" <me>
This macro casts Cure on your mouse-over target, then casts Cure on your target, then casts Cure on yourself. What people think it does is this:
Cast cure on the mouse-over target
Attempt to cast cure on the target (will fail if the GCD isn't finished)
Attempt to cast cure on yourself (will fail if the GCD isn't finished)
What it actually does is this:
Attempt to cast cure on the mouse-over target (will fail if the GCD isn't finished)
Fraction of a second delay
Attempt to cast cure on the target (will fail if the GCD isn't finished)
Fraction of a second delay
Attempt to cast cure on yourself (will fail if the GCD isn't finished)
Each command is executed by either the server or your client separately (I'm not sure which, and it doesn't matter anyway for my purpose) and there is a small delay between each command. Macro's like this will cause a wipe. Do not use it unless you are willing to wait until the GCD (global cool-down) is all the way finished. Do not use it if you spam buttons. If the macro starts execution before the GCD is up but finishes sometime after the GCD is up you will end up either healing your target or yourself *seemingly* at random instead of the mouse-over target.
If you want to use <mo> and spam your buttons, you must only use:
/micon "Cure"
/ac "Cure" <mo>
This way, if the mouse-over fails because of GCD you don't burn your GCD on someone else. This means you must mouse-over your own name in the party window to heal yourself. You *cannot* heal yourself by mousing over your character in game unless you have the option "enable clicking on self" under the Character configuration / controls (red button) / mouse (gray tab).
What can SE do about this?
They can add a way for us to stop the macro from executing at all under certain conditions. There are a million ways to implement a more robust macro system, they just have to do it. For instance:
/micon "Cure"
/GCDStop (made up command to stop the macro if the global cool-down isn't finished)
/ac "Cure" <mo>
/ac "Cure"
/ac "Cure" <me>
Hopefully this helps someone.