用語として「タイムスタンプ」を使うのがややこしくなってきたので
「バージョン」と表現してみる。

■ダイナミックに書き換えられるシナリオを処理する方法。

シナリオを実行しているとき、ネストして呼び出された
シナリオが呼び出し側のシナリオを書き換えることがある。
たとえばRelentless Assaultは第二メインフェイズの終了後に実行が
期待されているシナリオを書き換えてしまう。
(エンドフェイズ→戦闘フェイズ。加えて言えば、戦闘フェイズ開始
と同時に自分が書き換えたシナリオを元に戻す。)

これって誰に管理させるの?
・・・と考えてるうちに再び頭がこんがらかってきた。

------------
シナリオを実行するにあたってエンジンはそのシナリオ全文をロードする。

シナリオを一行ずつ実行する。
------------
で、気づいたのはその一行がシナリオの途中で書き換わるしくみが設計できてないw

Untap→Upkeep→Draw→Main1→Combat→Main2→EndOfTurn...
というメインシナリオをロードしたのち後、Relentless Assaultを行なうと
Main1なり2の終了後に実行されるシナリオが書き換わる。

最初にシナリオを静的に読み込むのでは刻々と変化するシナリオに対応できない。
シナリオの上書きみたいなことを先日書いてた気もするがそれだと追加されたり
スキップされたりするシナリオが奇妙なことになってしまう。

もう一つ何かの工夫がいる。

「シナリオ割り込み」の事例をいくつか作ってみる。
------------------------------------------------
事例1 

こいずみのこうげき。
 くまは ねたまき に 2点のダメージをあたえた!
 ねたまき のライフは 3点になった。
こいずみ は連続突撃Aをとなえた!
こいずみ は連続突撃Bをとなえた!

・・・・どっちから解決するんだっけ??

------------------------------------------------
事例2

あぷ はくりんなっぷをせんげんした!
あぷ はてふだを9まいもっている。
 あぷ はるーとわらC をすてた。
  るーとわらC は狂気した!
 あぷ はるーとわらDをすてた。
  るーとわらD は狂気した!
条件がそろっているので(RC:314.3)が発動した!

複数のスタック待ちが発生している場合どっちからスタックにつむの??

コメント

お気に入り日記の更新

最新のコメント

この日記について

日記内を検索