#いくつか修正
------------------------------------------------
事例3

まめーは一望の鏡をとりだした。
まめーは催眠の宝珠をとりだした。

まめーのあんたっぷすてっぷに島が4つあんたっぷした。
まめーのあっぷきーぷ。

・・・鏡と宝珠はどちらを先にスタックに積むのが正解?

-----------------------------------------------------
事例4

アップキープシナリオ開始。
↓「アップキープの開始時」チェック(誘発能力ををスタック待ちにぶちこむ)★
↓「スタック積み上げ」シナリオ開始。
↓ ↓スタック待ちがなければ(おしまい)
↓ ↓ユーザ別チェックリスト作成。
↓ ↓「スタックに積む順序を各ユーザに要求するシナリオ」開始(@「ユーザ別チェックリスト」)
↓ ↓ ↓ユーザリストから一人を得る。
↓ ↓ ↓スタック待ちから能力・効果リストを作成しそのユーザに並べ替えを要求する。
↓ ↓ ↓返答待ちをシナリオエンジンに要求。
↓ ↓ ↓レスポンスを得て内容チェック。
↓ ↓ ↓問題なければそのユーザにチェックをつける。
↓ ↓ ↓ユーザ全員にチェックがついていなければ次に実行するシナリオとして
↓ ↓ ↓  「スタックに積む順序を各ユーザに要求するシナリオ」を要求。
↓ ↓(おしまい)
↓ ↓#スタックに積む順序を各ユーザに要求するシナリオ開始(@「ユーザ別チェックリスト」)
↓ ↓# ↓(途中略)
↓ ↓#(おしまい)
↓ ↓ユーザ別チェックリスト廃却。
↓(おしまい)
↓優先権シナリオ(内容略)
(おしまい)
-------------------------------------------------
事例5

優先権シナリオ
↓ユーザ別チェックリスト作成。(hrurr,netanosuke,rebecca,namotaro)
↓「ユーザに優先権を告知するシナリオ(パスしますか?)」開始(@「ユーザ別チェックリスト」)
↓ ↓ユーザリストから一人を得る。(hrurr)
↓ ↓そのユーザの可能な操作を告知するシナリオを開始。
↓ ↓ ↓(途中略)
↓ ↓(おしまい)
↓ ↓返答待ちをシナリオエンジンに要求。
↓ ↓返答を得てユーザにチェックをつけ「パス」なら(おしまい)。
↓ ↓返答が何かのシナリオを起動するならそのシナリオを開始。
↓ ↓ユーザ全員にチェックがついていなければ次に実行するシナリオとして
↓ ↓  「ユーザに優先権を告知する」シナリオを要求。
↓(おしまい)
↓#「ユーザに優先権を告知する」シナリオ(パスしますか?)開始(@「ユーザ別チェックリスト」)
↓# ↓(途中略)
↓#(おしまい)
↓ユーザ別チェックリスト廃却。
↓「スタック積み上げシナリオ」開始
↓ ↓(途中略)
↓(おしまい)
↓「スタック解決」シナリオ開始。
↓ ↓スタックが空なら(おしまい)
↓ ↓スタックの最上位に「ショックでくまに2点ダメージ」がつまれていてそれには
↓ ↓ 「ダメージをあたえる」シナリオをトリガしろとかかれていた。(この辺曖昧だ)
↓ ↓「ダメージをあたえる」シナリオ開始。
↓ ↓ ↓「ダメージを与えない」効果があれば(おしまい)。
↓ ↓ ↓「ダメージ軽減」シナリオ開始。
↓ ↓ ↓ ↓(途中略)
↓ ↓ ↓(おしまい)
↓ ↓ ↓対象オブジェクトのダメージプロパティにのこりのダメージを加算。
↓ ↓ ↓「致死ダメージ」シナリオ開始。
↓ ↓ ↓ ↓(途中略)
↓ ↓ ↓「ダメージを与えた」トリガーのチェック。
↓ ↓ ↓(おしまい)
↓ ↓(おしまい)
↓(おしまい)
(おしまい)
--------------------------------------------------

とにかくこんなことを考慮しながらあれこれぐちゃぐちゃと。

[自分なりの答え]
1.B→A。RC.300.7。
2.自分が選ぶ。RC.410.3同時に複数発生した能力は順序を選べる。RC.418.5eも参照
3.自分が選ぶ。RC:303 + RC410.3

誘発型とか置き換え効果のシミュレーションが不十分なのでもう少し悩むっぽい。

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
※アクセス元で「人間凶器」が引っかかってた。どんな人だろうw
用語として「タイムスタンプ」を使うのがややこしくなってきたので
「バージョン」と表現してみる。

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

シナリオを実行しているとき、ネストして呼び出された
シナリオが呼び出し側のシナリオを書き換えることがある。
たとえば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)が発動した!

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

お気に入り日記の更新

最新のコメント

この日記について

日記内を検索