It’s quite literally to prevent you from having these sorts of multi-purpose buttons where you just press something and given a myriad of variables it’ll pick the best one. You’re supposed to make that decision.
This was changed in patch 2.0 - in 2006.
There are some stand-ins in the form of conditionals. For example I see you’ve got Cheap Shot in there. Let’s say you want Cheap or Kidney depending on whether you’re in stealth: That can be done with
/cast [stealth] Cheap Shot; Kidney Shot
If you want to execute things in that exact order, there’s also:
/castsequence Vendetta, Garrote, Cheap Shot, Flaggelation
and that’ll do it, but this one can get stuck. For instance if you have used it completion you cannot use it next time because Vendetta is on cooldown - it gets stuck on Vendetta.
Incidentally however, Vendetta is not on the GCD, and so it can be used in a separate /cast and it’ll be skipped if it’s not available, so we can modify to:
/cast Vendetta
/castsequence Garrote, Cheap Shot, Flaggelation
Now, this macro’s a little better, but Flaggelation is on the GCD and thus we can’t macro it like Vendetta, but we can make sure we don’t get stuck on Flaggelation by giving it a reset. We can do this in a few ways.
/cast Vendetta
/castsequence reset=condition Garrote, Cheap Shot, Flaggelation
Condition can be a number, which is an amount of time in seconds, a modifier key, or combat.
So perhaps:
/cast Vendetta
/castsequence reset=combat/5/ctrl Garrote, Cheap Shot, Flaggelation
This will cast Vendetta then immediately, in the same GCD, cast Garrote. Then if you press it again, it casts Cheap Shot, then Flaggelation.
If you leave combat somehow, e.g. with Vanish or another method, it’ll also reset back to Garrote. If you don’t press it for 5 seconds, it’ll also reset itself to Garrote. If you hold the ctrl key then press it, it’ll start over with Garrote again.
The rules for making macros are fairly complex, but here’s the jist of it: Your macros can’t make decisions for you, and the act of clicking them cannot change as a function of time other than castsequence - it only changes based on whether you’ve clicked on it before or select other conditions about the state of your character.