例えば以下のようなマクロがあったとする。
/ac ストーン
/ac ストーン <tt>
これはターゲットもしくはターゲットのターゲットに幻術士・白魔道士の攻撃魔法であるストーンを撃ち込むマクロだ。敵をターゲットしていれば普通にその敵を攻撃し、味方をターゲットしていればその味方が狙っている敵を攻撃出来る。味方のTANKをターゲットしたままでも攻撃にも参加できるため、HEALER界隈では広く用いられている(はず)。
しかし、回復魔法で同じような条件分岐を見込んで下のようなマクロを組んでも、それは正しく動かない。
/ac ケアル
/ac ケアル <tt>
このマクロは一見するとターゲットもしくはターゲットのターゲットにケアルをかけるマクロに見えるけれど、実際はターゲットもしくは『自分』にケアルをかけるマクロになっている。1行目のケアルのところでターゲットが存在しない、もしくは無効な対象であった場合に、自動的に自分をターゲットにしてケアルが発動してしまうからだ。
このように『自分をターゲットに指定可能な単体補助や回復魔法のアクションは、ターゲットが適切で無い場合には自分をターゲットとする』という仕様の都合で、補助や回復魔法のマクロでは攻撃魔法で出来たようなターゲットとターゲットのターゲットの両方に対応した汎用的なマクロは作れない。
誠に不便な話だけれど、戦闘中に敢えて何もターゲットせずにケアルを唱えて自分を回復するというテクニックはこの仕様に則ったものであり、多くの人が当然の如く活用しているものだ。
仮にこの仕様が変わることがあったら、今度は逆にうっかりその意図も無いのに代名詞を設置して泣きを見る初心者が続出することになる。流石にそんな駄目駄目な展開は期待出来ない。世知辛い話だ。
/ac ケアル <t>
このように明示的にターゲットを取ることを指定した場合に、ターゲットが不正な時には(勝手に自分をターゲットにしたりせずに)素直にエラーを返してくれるようであれば、マクロの柔軟性が上がる。
例えば下のように書いたマクロが意図した通りに十全に動くのであれば、それは素晴らしいことだと思う。
/ac ケアル <t>
/ac ケアル <tt>
/ac ケアル <me>
勿論、現行の仕様ではこんなマクロは意図した通りには動かない。いつか動くようになると良いなあ。
追記:
読み返していて誤解を招きそう、と言うか自分が覚え違いをしそうに思ったので書き足しておく。
マクロで<t>や<tt>を明示して、かつそれらが未定義の場合(例えば何もターゲットしていない時の<t>・もしくは何もターゲットしていない相手をターゲットした時の<tt>)、つまり『<t>や<tt>に当たるものが存在しない』場合にはちゃんとエラーが返る。
しかし、<t>や<tt>が存在して、かつそれらが無効なターゲットであった場合は、そのターゲットが自分になってしまう。これが問題となる。
(多分本当は、攻撃魔法でも何でもアクション全般において件の条件下ではターゲットを自分にして発動しようとはしているのだと思う。それが単に自分には使えないから実行されないというだけで)
ターゲットが『存在しない』ことと『存在するが無効である』ことは同じでは無い。これはとてもややこしいけれど、ちゃんと理解していないとマクロの意図せぬ挙動に頭を悩ませることになる。
何だかまだ書き方が分かりにくい気がする。後で直すかも。