2016/03/08(Tue) 04:21:53 編集(投稿者)
>選択後キャンセル時のユニットコマンド
以前の処理流れは「神隠し使用>対象選択>使用確認>神隠し発動」で、
使用確認でキャンセルした場合、対象選択に戻る処理を入れていたので、そこら辺が不具合に見えたんだと思います。
マスク処理を導入しておけば分かりやすかったと思います。
>戦闘アニメエラー
戦闘アニメを見ると、どうやら相手ユニットIDを設定する必要があるようです。
「戦闘アニメ_防御テレポート1」発動を使用するには「Select」を「SelectTarget」に変更する必要があります。
ちなみに「Select = 対象ユニットID」「SelectTarget = 相手ユニットID」に設定されます。
Shunさんの処理を加えて修正してみました。
// ここで使用する変数を設定。
使用 味方 神隠し:
Set 神隠しフラグ 1
Set 神隠し使用者 対象ユニットID
// ↓使用したアビリティ情報を記録。
Set 神隠し使用番号 対象ユニット使用アビリティ番号
Set 神隠し使用回数 Info(ユニット,対象ユニットID,アビリティ,対象ユニット使用アビリティ番号,使用回数)
Exit
// ↓味方前提の処理です。それ以外の陣営では使えません。
使用後 味方 神隠し:
// ↓で対象者を設定。
ForEach 全 出撃
// とりあえず味方の場合は除外。
// 条件を変更したい場合は↓を変更して下さい。
If (Party(対象ユニットID) <> 味方) Then
Set 神隠し対象者[対象ユニットID] 1
EndIf
// 操作できないように設定する。↓は必須。
SetStatus 対象ユニットID 非操作 -1
Next
// ↓で対象者がいる場合といない場合の分岐。
If (Count(神隠し対象者) = 0) Then
// 対象者が存在しない場合の処理。
Call 神隠し終了処理 2
Else
// 対象者が存在する場合の処理。
EndIf
Exit
// ユニットコマンドで使用の確認。
ユニットコマンド 神隠し発動 全 ((神隠しフラグ = 1) And (神隠し対象者[対象ユニットID] = 1)):
Confirm 神隠しを発動しますか?
If (選択 = 1) Then
// 確認が不要なら↓二行だけ残して使用して下さい。
Center 対象ユニットID
SelectTarget 対象ユニットID
Call 戦闘アニメ_防御テレポート1発動 " " 64 紫 BeamSaber(4).wav
Escape
Wait 10
Launch X(神隠し使用者) Y(神隠し使用者) 非同期
Center 対象ユニットID
SelectTarget 対象ユニットID
Call 戦闘アニメ_防御テレポート1発動 " " 64 紫 BeamSaber(4).wav
Call 神隠し終了処理 1
Else
// 使用をキャンセルした時、対象者を選び直す場合は[2]を[3]に変更して下さい。
Call 神隠し終了処理 2
EndIf
Exit
// 神隠し使用中、ユニットの存在しない箇所で右クリックすれば神隠しをキャンセル。
マップコマンド 神隠しキャンセル (神隠し終了処理(2) = 1):
Exit
// Args(1) = 処理フラグ
// 1 = 神隠し使用
// 2 = 神隠しキャンセル
// 3 = 対象者キャンセル
神隠し終了処理:
If (神隠しフラグ = 1) Then
// キャンセルの場合、使用回数を復元。
If (Args(1) = 2) Then
SetStock 神隠し使用者 神隠し使用番号 神隠し使用回数
EndIf
If (Args(1) <= 2) Then
UnSet 神隠しフラグ
UnSet 神隠し使用者
UnSet 神隠し対象者
UnSet 神隠し使用番号
UnSet 神隠し使用回数
ForEach 全 出撃
ClearStatus 対象ユニットID 非操作
Next
EndIf
EndIf
Return 0