やってる事自体はEscapeコマンドでマップから抜けた後でもDestroyコマンドが効くかどうか(Statusが待機から破壊になるか)の検証ですね。非同期でEscape→Destroyをするだけ。
まあやってみてそれらしいことが出来たから書いてるんですけどねこれ(台無しなんでそんなことやろうとしたかというとエングラさんじゃなかったアン武さん(@antakeda)の「destroyに非同期が使えればいいのに」というPostに対して僕が「こんなこと」言ってみたから。
ついでなので無駄に関数した上で陣営一括破壊も出来るようにしてみました。ノンサポート!
ああでも使いたいから機能アップしてみたいな依頼は受けます、多分
検証用のパックを上げるといいんですが、シナリオネタ用データをつかって動作検証したのでそのまま上げたくないのでそれはパスで。各自以下のソースをコピペして検証頂けるとよろしいかと。
# 画面非同期でDestroyを実行するサブルーチン。 # オプションなどは本体ヘルプのDestroyコマンドに準じます。 NoRefreshDestroy: Local targetUnit n Set targetUnit Args(1) Escape targetUnit 非同期 Switch targetUnit Case "敵" "中立" "NPC" "味方" # 非出撃状態のユニット(≒直前にEscapeしたユニット)を全て破壊する。 # 特に味方を一括破壊する場合は状態の管理に注意すること ForEach targetUnit 待機 Set n UnitID() destroy n Next Case Else destroy targetUnit EndSw Return
でまあ、検証してから思ったんですけど味方陣営でなければEscapeで待機状態になるのもDestroyで離脱状態になるのもあまり大差ない気ががが。
とりあえずそんな感じで。役に立つような立たないような。
こんにちは。楽しそうな話題を見つけてふらふらと。
このままだと元から待機状態だったユニットも破壊されてしまうので、
?
Case "敵" "中立" "NPC" "味方"
ForEach targetUnit 出撃
Set n UnitID()
escape n 非同期
destroy n
Next
Case Else
escape targetUnit 非同期
destroy targetUnit
EndSw
?
とすると良いのではないかなー、と思ったり。
動かしてないのでなんかミスってたらすいません。
>WIZARDさん
ああ、先に一括Escapeという先入観があったもので、
元から待機状態のユニットをどうしようかなぁ、と悩んでいたものです。
その方が処理としてはよりよいですね、動作確認してませんが(こら
ありがとうございます。