| 先日はありがとうございました。
現在、過去ログの21745などを参考に、以下のインクルードでスパロボの「ヒット&アウェイ」を再現しようとしています。 ご存知のことと思いますが、念のために説明すると、「移動せずに攻撃した場合、攻撃後に移動可能」とするものです
味方だとうまく行くのですが、
「敵がヒット&アウェイ技能を所持」していて、かつ「敵の四方を囲むなどの移動不可能状態」だと、SRCが止まってしまいます。 恐らく、「移動できない」「攻撃できない」の2つの状態が重なっているためかと思われます。 ChangeModeで思考パターンを「待機」「固定」等に変えることも試しましたが、この場合だと敵が攻撃後に移動してくれず、技能の意味がなくなってしまいます。 Finishコマンドを使っても、同様です。
「移動できない場合に、『Finish 対象ユニットID』とする」 ことで解決できるような気がするのですが、今のところこの条件を指定するようないいアイデアが浮かびません。他にも恐らくやりようがあるような気もします。
どうすれば解決できるでしょうか。どうかアドバイスをお願いいたします。
#以下include.eveの内容
ターン 全 全:
ForEach 全
Clearstatus 対象ユニットID 攻撃不能
Enable 対象ユニットID 修理装置 Enable 対象ユニットID 補給装置
UnSet 初期座標[X,対象パイロット] X(対象ユニットID) UnSet 初期座標[Y,対象パイロット] Y(対象ユニットID)
If Skill(対象パイロット, ヒット&アウェイ) = 1 Then Set 初期座標[X,対象パイロット] X(対象ユニットID) Set 初期座標[Y,対象パイロット] Y(対象ユニットID) EndIf Next
Exit
行動終了 味方 :
If Skill(対象パイロット, ヒット&アウェイ) = 1 Then Set 現在座標[X,対象パイロット] X(対象ユニットID) Set 現在座標[Y,対象パイロット] Y(対象ユニットID)
移動距離[対象ユニットID] = Abs(初期座標[X,対象パイロット] - 現在座標[X,対象パイロット]) + Abs(初期座標[Y,対象パイロット] - 現在座標[Y,対象パイロット])
If 移動距離[対象ユニットID] = 0 Then SetStatus 攻撃不能 -1 SpecialPower 対象ユニットID 覚醒 Disable 対象ユニットID 修理装置 Disable 対象ユニットID 補給装置
UnSet 現在座標[X,対象パイロット] X(対象ユニットID) UnSet 現在座標[Y,対象パイロット] Y(対象ユニットID)
Redraw
EndIf
EndIf
Exit
行動終了 敵 :
If Skill(対象パイロット, ヒット&アウェイ) = 1 Then Set 現在座標[X,対象パイロット] X(対象ユニットID) Set 現在座標[Y,対象パイロット] Y(対象ユニットID)
移動距離[対象ユニットID] = Abs(初期座標[X,対象パイロット] - 現在座標[X,対象パイロット]) + Abs(初期座標[Y,対象パイロット] - 現在座標[Y,対象パイロット])
If 移動距離[対象ユニットID] = 0 Then SetStatus 攻撃不能 -1 SpecialPower 対象ユニットID 覚醒
UnSet 現在座標[X,対象パイロット] X(対象ユニットID) UnSet 現在座標[Y,対象パイロット] Y(対象ユニットID)
Redraw
EndIf
EndIf
Exit
#ここまでinclude.eveの内容
|