アビリティや武器などは、移動後でも選択ダイアログが表示された後キャンセルすると移動前の位置に戻ります。しかし、ユニットコマンドの場合、コマンド中で選択を発生させ、かつ選択がキャンセル可能である場合、キャンセルするとその場で行動終了してしまいます。これでは不都合があるといわざるを得ません。
ここでは、移動後に使用可能なユニットコマンド中に選択がある場合、選択をキャンセルすると移動前の位置に戻り、行動回数も減少しない方法を紹介します。
以下のイベントを設定します。
include.eveなどに記述する方がよいかもしれません。
*ターン 全 味方:
ForEach 味方
Set 直前座標X[対象ユニット] X()
Set 直前座標Y[対象ユニット] Y()
Next
Exit
#ターン開始時にパイロットの座標を記録します。
行動終了 味方:
Set 直前座標X[対象ユニット] X()
Set 直前座標Y[対象ユニット] Y()
Exit
#行動回数が2回以上あるパイロットのため、行動終了時にも座標を記録します。
この2つのイベントにより、次の行動を取る前の座標が記録されます。
続いて、ユニットコマンドイベントを設定します。
例
ユニットコマンド コマンド名 使用者:
Ask 選択してください キャンセル可
選択1
選択2
キャンセル
End
Switch 選択
Case 1
(略)
Case 2
(略)
Case Else
If ((X(対象ユニット) <> 直前座標X[対象ユニット]) Or (Y(対象ユニット) <> 直前座標Y[対象ユニット])) Then
Move 直前座標X[対象ユニット] 直前座標Y[対象ユニット]
Mind 覚醒
EndIf
EndSw
#移動していない場合は覚醒を使いません。
#これは、移動していない場合、このような処理にしないと行動回数が増えてしまうためです。
Exit
※このように記述することで、移動後使用可能かつ選択が発生するユニットコマンド使用時に、選択をキャンセルすると行動前の状態に戻るユニットコマンドが実現できます。