■ 前置き
ソースのNot Working Modeはロードオーダーの自動追跡のON/OFFで、Falseのが通常版で自動追跡ONです。
Not Working User版といって既存IDのモーションを潰した別espで配布してます。

せっかくディスパッチ処理で読みやすくなったのに、追加部分のせいでソースの可読性悪くなっててすいません。

■ 問題点
・魔法装備時にドッジできないバグ
PlayIdleメソッドでサイレントロールのモーションを呼び出すと、魔法や杖装備時にロールができません。
しかしパーク取得後の通常プレイ内の操作だと魔法や杖つけてても使えます。
IsWeaponDrawnメソッドと似たようなバグっぽいです。
Debug.SendAnimationでも同じでしたので、内部処理が間違っているかと思います(最もscriptdragonだとこのメソッドは使用不可)。

で、attackStopのモーションを最初につけると攻撃キャンセルが可能になるのを応用して、
ドッジ前に魔法を外してしまえばいいのかと思ってたんですが、
ドッジ終了時の判定ができないために魔法がつけれませんｗ

ドッジのモーションはPlayIdleで呼び出されたあとのキー入力時間に反映してモーション再生時間が変わる仕組みっぽくて、
PlayIdle直後に魔法の装備処理を置いたりWaitで待ったりするとダメです。
前方向のサイレントロールだと時間と距離が固定で、後にモーション置いたりしても大丈夫なんですが…

PlayIdleがboolなのでそれを判定にしようと思ったんですが、このメソッドのtrue/falseの挙動がよくわからず…


・Papyrusのスタックエラー
プレイ後にPapyrusのログみると以下のエラーがかなりスタックします。
error: Received a latent return for stack 0, but stack is no longer running - ignoring.
無視されるエラーなんで深刻ではないんですが、一秒度ぐらいででるので重くなる可能性はありそうです。
無敵時間の魔法つけてから出るようになったので多分その部分がスタックしているはずですがif文が間違えてるのかよくわかりません。

魔法の効果時間を1秒以下で制御できないので、マジックエフェクトにスクリプトつけて対応してます。
もしかしたらそれがいけないのかも。


・一人称視点・まれに3人称視点で走りっぱなしになるバグ
ドッジ中にキャンセル行動したあとに一人称視点にすると走りっぱなしになってしまいます。
通常サイレントロールだと問題なしなのにPlayIdleメソッドで呼び出すと発生するのでたぶん内部のバグです。
Sprintの状態が残ってしまうのでしょう。
alt押すと直るので(要はSprintstopのidle再生)、モーション移行・終了時やバグ時の状態を取得できれば直せるんですが…

スクリプトどうこうでなんとかなる問題ではなさそうなので、これ以外の問題の方がGenerich氏聞きたいことではあります。

