2016/03/19(Sat) 23:25:21 編集(投稿者)
行動回数の不具合は気付いていたのですが、すかっり直すのを忘れていました…
// ここで使用する変数を設定。
使用 味方 神隠し:
Set 神隠しフラグ 1
Set 神隠し使用者 対象ユニットID
// とりあえずHP、EN、気力、行動回数の情報を記録。HP、EN、気力は武器属性での増減対策。
Set 神隠し前HP[対象ユニットID] HP(対象ユニットID)
Set 神隠し前EN[対象ユニットID] EN(対象ユニットID)
Set 神隠し前気力[対象ユニットID] Morale(対象ユニットID)
Set 神隠し前行動回数[対象ユニットID] Action(対象ユニットID)
// ↓使用したアビリティ情報を記録。
Set 神隠し使用番号 対象ユニット使用アビリティ番号
Set 神隠し使用回数 Info(ユニット,対象ユニットID,アビリティ,対象ユニット使用アビリティ番号,使用回数)
Exit
// ↓味方前提の処理です。それ以外の陣営では使えません。
使用後 味方 神隠し:
// ↓で対象者を設定。
ForEach 全 出撃
// 対象:陣営が味方以外。
//If (Party(対象ユニットID) <> 味方) Then
// Set 神隠し対象者[対象ユニットID] 1
//EndIf
// 対象:味方ユニット。分岐:使用者かそれ以外。
If (Party(対象ユニットID) = 味方) Then
If (対象ユニットID = 神隠し使用者) Then
Set 神隠し対象者[対象ユニットID] 2
Else
Set 神隠し対象者[対象ユニットID] 1
EndIf
EndIf
If (対象ユニットID <> 神隠し使用者) Then
Set 神隠し前行動回数[対象ユニットID] Action(対象ユニットID)
EndIf
// 操作できないように設定する。↓は必須。
SetStatus 対象ユニットID 非操作 -1
Next
// ↓で対象者がいる場合といない場合の分岐。
If (Count(神隠し対象者) = 0) Then
// 対象者が存在しない場合の処理。
Call 神隠し終了処理 2
Else
// 対象者が存在する場合の処理。
EndIf
Exit
// 神隠し使用中、ユニットの存在しない箇所で右クリックすれば神隠しをキャンセル。
マップコマンド 神隠しキャンセル (神隠し終了処理(2) = 1):
Exit
// Args(1) = 処理フラグ
// 1 = 神隠し使用
// 2 = 神隠しキャンセル
// 3 = 対象者キャンセル
神隠し終了処理:
If (神隠しフラグ = 1) Then
If (Args(1) = 2) Then
// キャンセルの場合、色々復元。
Set HP(神隠し使用者) 神隠し前HP[神隠し使用者]
Set EN(神隠し使用者) 神隠し前EN[神隠し使用者]
Set Action(神隠し使用者) 神隠し前行動回数[神隠し使用者]
IncreaseMorale 神隠し使用者 (神隠し前気力[神隠し使用者] - Morale(神隠し使用者))
SetStock 神隠し使用者 神隠し使用番号 神隠し使用回数
EndIf
If (Args(1) <= 2) Then
ForEach 全 出撃
ClearStatus 対象ユニットID 非操作
If (対象ユニットID <> 神隠し使用者) Then
Set Action(対象ユニットID) 神隠し前行動回数[対象ユニットID]
EndIf
Next
UnSet 神隠しフラグ
UnSet 神隠し使用者
UnSet 神隠し対象者
UnSet 神隠し前HP
UnSet 神隠し前EN
UnSet 神隠し前気力
UnSet 神隠し前行動回数
UnSet 神隠し使用番号
UnSet 神隠し使用回数
EndIf
EndIf
Return 0
■↓Moveの場合。
ユニットコマンド 神隠し発動 全 ((神隠しフラグ = 1) And (神隠し対象者[対象ユニットID] >= 1)):
//Confirm 神隠しを発動しますか?
//If (選択 = 1) Then
Center 対象ユニットID
Wait 5
SelectTarget 対象ユニットID
Call 戦闘アニメ_防御テレポート1発動 " " 64 紫 BeamSaber(4).wav
// 一時的にユニットを非表示。
ChangeUnitBitmap 対象ユニットID 非表示
If (神隠し対象者[対象ユニットID] = 2) Then
// 状況によっては元の位置に戻る事もあります。
If ((X(対象ユニットID) - 1) > 0) Then
Move 対象ユニットID (X(対象ユニットID) - 1) Y(対象ユニットID) 非同期
ElseIf ((Y(対象ユニットID) - 1) > 0) Then
Move 対象ユニットID X(対象ユニットID) (Y(対象ユニットID) - 1) 非同期
ElseIf ((X(対象ユニットID) + 1) < Info(マップ,幅)) Then
Move 対象ユニットID (X(対象ユニットID) + 1) Y(対象ユニットID) 非同期
ElseIf ((Y(対象ユニットID) + 1) < Info(マップ,高さ)) Then
Move 対象ユニットID X(対象ユニットID) (Y(対象ユニットID) + 1) 非同期
EndIf
Else
Move 対象ユニットID X(神隠し使用者) Y(神隠し使用者) 非同期
EndIf
Wait 10
Center 対象ユニットID
SelectTarget 対象ユニットID
// ユニットの非表示解除。
ChangeUnitBitmap 対象ユニットID 非表示解除
Call 戦闘アニメ_防御テレポート1発動 " " 64 紫 BeamSaber(4).wav
Call 神隠し終了処理 1
//Else
// 使用をキャンセルした時、対象者を選び直す場合は[2]を[3]に変更して下さい。
// Call 神隠し終了処理 3
//EndIf
Exit
■↓Escape、Launchの場合。
ユニットコマンド 神隠し発動 全 ((神隠しフラグ = 1) And (神隠し対象者[対象ユニットID] >= 1)):
//Confirm 神隠しを発動しますか?
//If (選択 = 1) Then
Center 対象ユニットID
SelectTarget 対象ユニットID
Call 戦闘アニメ_防御テレポート1発動 " " 64 紫 BeamSaber(4).wav
If (神隠し対象者[対象ユニットID] = 2) Then
// 状況によっては元の位置に戻る事もあります。
If ((X(対象ユニットID) - 1) > 0) Then
Move 対象ユニットID (X(対象ユニットID) - 1) Y(対象ユニットID) 非同期
ElseIf ((Y(対象ユニットID) - 1) > 0) Then
Move 対象ユニットID X(対象ユニットID) (Y(対象ユニットID) - 1) 非同期
ElseIf ((X(対象ユニットID) + 1) < Info(マップ,幅)) Then
Move 対象ユニットID (X(対象ユニットID) + 1) Y(対象ユニットID) 非同期
ElseIf ((Y(対象ユニットID) + 1) < Info(マップ,高さ)) Then
Move 対象ユニットID X(対象ユニットID) (Y(対象ユニットID) + 1) 非同期
EndIf
EndIf
Escape
Wait 10
Launch X(神隠し使用者) Y(神隠し使用者) 非同期
Center 対象ユニットID
SelectTarget 対象ユニットID
Call 戦闘アニメ_防御テレポート1発動 " " 64 紫 BeamSaber(4).wav
Call 神隠し終了処理 1
//Else
// 使用をキャンセルした時、対象者を選び直す場合は[2]を[3]に変更して下さい。
// Call 神隠し終了処理 3
//EndIf
Exit