最初に戻って、今書いたものを省略しないで書いたものがこれです。Plasma Dark さんが書きました:まず、仕様に対して実装方針が適切かどうかのレビューから始めるほうが良いです。
小手先のコーディング技術についてのレビューはその後でしたほうが無駄がありません。
そして、一気に望みの仕様のものを書き上げようとするにはまだ知識や経験が不足されているものと思いますので、一歩ずつコードを動かしながら進められるのが良いでしょう。
今回で言えば、勝利時のモーションを固定の何かに変更するプラグインから始めると良かったのかと思います。
元のコードで 'victory' と指定されているところを書き換えるだけ、から始めていれば、このような回り道は不要だったはずです。内部で Sprite_Actor.prototype.refreshMotion を呼ばないで実現する方法があれば、その方がベターだと思っていたのですが、色々試しているうちにこうなってしまいました。
Game_Battler の requestMotion メソッドで、バトラーにこういう動きをさせてくれ、というリクエストを発行しています。
Sprite_Actor はそのリクエストを検知してモーションを開始しますが、 Game_Actor はその詳細な実装まで知っている必要はありません。
requestMotion でリクエストを発行さえすれば、あとは Sprite_Actor がよろしくやってくれるからです。
さて、実装を見ると、モーション指定用の変数の値が変更されていた場合に、 Sprite_Actor.prototype.refreshMotion を再定義してしまっています。
Sprite_Actor の refreshMotion メソッドは、 Game_Battler (を継承した Game_Actor) で発行された アクターのモーションを再描画してくれ 、というリクエストを検知した際に呼び出されるメソッドです。
これが再定義されてしまうと、戦闘中のモーションリフレッシュのタイミングで、再定義されたほうが呼び出されてしまい、アクターは勝利モーションの変更先として指定したつもりのモーションを取るようになってしまいます。
どうやら、これでバグは解消したようです。
これから、うたこさんが書いてくださったものを取り入れてい見ます。