リダイレクトキーワードについての小言

Root
よほどのことがない限り、HelperがPlayerの状態を参照する時はこちらを使ったほうが良い。Parentだと参照先がHelperになってしまう可能性がある(もちろん、Parentが使えないというわけではなくて、通常の用途ならRootを使った方が安全という意味)。ただし、Root->Helper(1)->Helper(2)と出現させ、Helper(1)をDestroySelfしてしまうと、Rootを使ってもHelper(2)はRootを参照できない。IDを割り振っていない場合Playerからも参照できないので、どこからも参照できない(そして参照されることもできない)孤立Helperができてしまう。DestroySelfは怠り無く。
Parent
Helperから生成されたHelperを使う際にお世話になるキーワード。ParentVarAdd(ParentVarSet)と組み合わせればほぼ完璧な通信が可能。ただし、何らかの理由によってParentが消失している(HelperMaxをオーバーするような処理をしている場合。自分に限らず相手も)と問答無用でエラーが出てしまうのは困り者。TargetやEnemyと違って存在を確認する術が無いのが痛い。
EnemyNear
普通の使用ならこれで事足りる。Simulではこれが激しく入れ替わるので場合によっては不具合が出る可能性がある(特にEnemyNear,StateNoなんかはまったく信頼できない)。複雑な処理を施す場合は後述するEnemyを使うほうが得策。あまり知られていないが、これにもindexの付加が可能。EnemyNear(0)で直近の、EnemyNear(1)でその後ろの敵を参照可能。何か使えそうな雰囲気だがどうだろこれ。
Enemy
敵を直接参照可能なリダイレクトキーワード。特にSimulで威力を発揮し、Enemy(0)でP2、Enemy(1)でP4を固定的に*1参照可能。これはかなり使えるので是非とも使って欲しい。Enemy(2)以降はどうやらPlayer型のHelperが入るらしいが詳細不明。使う際は必ずNumEnemyもセットで。
PlayerID
まず最初にPlayerIDの取得が必要なのと、冷静に考えるとPartner及びEnemyで代用できてしまう気がするのとであまり使うことの無いリダイレクトキーワード。何かいい使い道は無いかしら。
Helper
HelperIDを付加することでHelperの各種状態を参照可能……と書くと使えそうな気がするが、同一IDのHelperが出現していた場合どれが参照されるかランダムになる*2という最悪の性質を持つため実際にはあまり使えない。管理用に常時出しっぱなしにしているHelperを参照するなら使えるが、それ以外ではまともに動いてくれないケースが多々ある。
Partner
Simul専用のリダイレクトキーワード。NumPartnerでチェックしてから使うこと。これといって特徴が無いというか、素直に動いてくれるから安心できるんだけど。
Target
使えそうで使い物にならないリダイレクトキーワードの筆頭。そもそも「Target〜」系自体がまともな動作を期待できない(特にTargetState)。せめてPlayerIDを引数に取れるか、あるいはisTargetトリガーなんかがあればよかったのに。Simulだと不具合を起こしまくる。正直TargetStateよりもP2StateNoを使う方がよっぽど安定する*3んだけどどうしよう。TargetStateは投げ中の相手State変更、もしくは自力でSelfStateまでたどり着けるStateに変更する場合のみ使うべきだと思う。

*1:実際にはIDの値が小さい順に自動的に代入されているようだが、MUGENは開始時にまず最初にHelperにPlayerIDをすべて割り振ってからPlayerにIDを割り振るようなので、よほどひねくれた処理をしていない限りはこの手法でそれぞれの状態が参照できる

*2:ひょっとしたらPlayerIDと関係しているのかもしれないが、結局のところまともに動作しないというのは同じ

*3:HitDefが複数回実行されるようなStateだとそれが顕著に出る