池袋2CHD鉄人戦-コモン単の反省
2005年6月20日 ゲーム過去の経緯上今回のコモン単は「黒と親和しかいない」と思ってた。
荒川2ちゃんだーと(Type-Bコモン単)以降、紅葉杯まで2CHDのイベントで
開かれるコモン単イベントを制して来たのは黒と親和とブラストダーム。
ざっくりと考えていた対人メタはこんなところ。
--------
ネタ:ネズミ黒コンで確定(正解)
AP:緑黒コモンマルカで確定(正解)
Rebecca:3色忍者(実際は3色ハーピー)
ナモ:スタンダードに近いデッキ、おそらく親和(実際は赤緑秘儀)
koizumi:緑系ブラストダームデッキ(実際は不参加)
初参加の人:赤単スライか緑系ウイニー。
はるぅらら:黒単ペストで確定 ←【と思われているはず】
--------
チャットだと
「黒単のアドバンテージと親和のスピードに勝てて赤も茶色対策もできるデッキ」
が強いんじゃないか、という前評判。
で、考えたのは大昔スタンダードで使ってた「再入植(UL)レベル(6E-US-MM)」の強化版。
シヴィ姉の役割を再入植で補完する長期戦デッキ。
メインに黒対策15枚、茶色対策8枚、墓地封じ9枚の自分なりのソリューション。
親和のスピードは無視する方向。
とにかくネタ蒔き師匠をボコれればいいや、と割り切ってみる。
[フェルケンレベル]
22 Plains
4 Rebel Recruiter-1/1 (MM)
3 Rebel Recruiter-1/2 (MM)
2 Rebel Recruiter-1/1 Flying (NE)
4 Order of Leitbur (FE)
4 Rebel Glider:B (MM)
3 Rebel Bringer:B (NE)
4 Disenchant-Shaper (MM)
4 Topple(NE)
4 Cho-mano Blessing(MM)
4 Seal:W(NE)
2 Feldon’s Cane(CH)
-------
3 COP:R // 赤バーンメタ。
2 Bringer:R(NE) //エイトグ&スパイクショットメタ。
3 COP:B // ネタ&アプメタ。
3 Serrated Arrows(HL) //ウイニーメタ。
4 Disenchant //親和メタ。
多少いじって弱くした上でチャットで晒してみる。
でも白単使うことが周知されてしまっちゃ意味が無いw
とにもかくにも黒単ネズミで確定のネタ蒔き師匠にひどく警戒される。
チャット中、ネタ蒔き師匠が「Death’s Duetなんて使わナイよ!」と発した後
「あ」「ナモー、送ったものも貸してー」と秘密のメッセージ。
なんだかよくわからないが白単を警戒してくるらしいという意図だけは伝わってくる。
とりあえずDeath’s Duetの言葉からそれをNausea とEvincar’s Justiiceを含む
テンペストブロックに修正してくるものと解釈してみる。
ついでにkoizumiさんが赤単バーンをつかうらしい、という情報を得る。
完全にヒヨる。
タフネス1のOrderだめじゃん!!
で↓Nauseaに弱いOrderをLlanowar Knightに置き換えてNauseaの裏をかき、
赤単をアルマジロと旗持ちの硬さでいじめるパターンに変更してみる。
[当日版]
16 Plains
7 Forest
4 Rebel Recruiter-1/1 (MM)
3 Rebel Recruiter-1/2 (MM)
2 Rebel Recruiter-1/1 Flying (NE)
4 Llanowar Knight (IV)
4 Rebel Glider:B (MM)
2 Rebel Bringer:B (NE)
1 Rebel Bringer:R (NE)
4 Disenchant-Shaper (MM)
4 Topple(NE)
4 Cho-mano Blessing(MM)
3 Seal:W(NE)
2 Feldon’s Cane(CH)
-----
[side]
3 COP:R
3 COP:B
2 Bringer:R(NE)
1 Bringer:B(NE)
3 Armadillo Cloak(IV)
3 Flagbearer(AP)
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
当日。メタ外の敗北に泣く。
1回戦。
前日仕事で殆ど寝てないこともあって寝坊。
遅刻で不戦敗。完全にメタ外だw
2戦目。
Rebecca主催。
RebさんのデッキはハーピーやナイトメアでCIP効果を使いまわす
黒青赤のCIPギミックデッキ。
墓地利用をBringerとToppleで封じつつ殴るのは大正解。
1戦目を完封パターンでイジメきったあと、
かなりイタいプレイミスをして2戦目を落とすが3戦目で押し切り勝ち。
(だった気がする。あれ?もしかして負けたかも??)
3戦目。
なぜかネタ蒔き師匠と当たる。
どうやら1戦目を負けていたらしい。相性的なこともあって師匠渋い顔。
1戦目は手札を攻められるものの完封。
リクルータから湧いてくるプロテクションはネズミじゃどうにもならない。
2戦目3戦目。
目の前に現れたのはCOPメタの三節棍ゴーレム(DS)・・・だけじゃなく、
全くメタ外だったぴゅう太のゴーレム(MD)。わははははは(汗
「4/2,1B:再生」
再生がキツい、ムリw
ぴゅう太ゴーレムにボコボコ殴られて負ける。
でも白Orderならとまってたんだよな。
先生攻撃なら・・。
メタ段階のヒヨり負け。
今回もいいとこありませんでしたw
[反省]
・自分を信用しよう。
・地雷になろう。
・遅刻は最大の敵w
なにはともあれ真っ黒でなかったのは収穫。
荒川2ちゃんだーと(Type-Bコモン単)以降、紅葉杯まで2CHDのイベントで
開かれるコモン単イベントを制して来たのは黒と親和とブラストダーム。
ざっくりと考えていた対人メタはこんなところ。
--------
ネタ:ネズミ黒コンで確定(正解)
AP:緑黒コモンマルカで確定(正解)
Rebecca:3色忍者(実際は3色ハーピー)
ナモ:スタンダードに近いデッキ、おそらく親和(実際は赤緑秘儀)
koizumi:緑系ブラストダームデッキ(実際は不参加)
初参加の人:赤単スライか緑系ウイニー。
はるぅらら:黒単ペストで確定 ←【と思われているはず】
--------
チャットだと
「黒単のアドバンテージと親和のスピードに勝てて赤も茶色対策もできるデッキ」
が強いんじゃないか、という前評判。
で、考えたのは大昔スタンダードで使ってた「再入植(UL)レベル(6E-US-MM)」の強化版。
シヴィ姉の役割を再入植で補完する長期戦デッキ。
メインに黒対策15枚、茶色対策8枚、墓地封じ9枚の自分なりのソリューション。
親和のスピードは無視する方向。
とにかくネタ蒔き師匠をボコれればいいや、と割り切ってみる。
[フェルケンレベル]
22 Plains
4 Rebel Recruiter-1/1 (MM)
3 Rebel Recruiter-1/2 (MM)
2 Rebel Recruiter-1/1 Flying (NE)
4 Order of Leitbur (FE)
4 Rebel Glider:B (MM)
3 Rebel Bringer:B (NE)
4 Disenchant-Shaper (MM)
4 Topple(NE)
4 Cho-mano Blessing(MM)
4 Seal:W(NE)
2 Feldon’s Cane(CH)
-------
3 COP:R // 赤バーンメタ。
2 Bringer:R(NE) //エイトグ&スパイクショットメタ。
3 COP:B // ネタ&アプメタ。
3 Serrated Arrows(HL) //ウイニーメタ。
4 Disenchant //親和メタ。
多少いじって弱くした上でチャットで晒してみる。
でも白単使うことが周知されてしまっちゃ意味が無いw
とにもかくにも黒単ネズミで確定のネタ蒔き師匠にひどく警戒される。
チャット中、ネタ蒔き師匠が「Death’s Duetなんて使わナイよ!」と発した後
「あ」「ナモー、送ったものも貸してー」と秘密のメッセージ。
なんだかよくわからないが白単を警戒してくるらしいという意図だけは伝わってくる。
とりあえずDeath’s Duetの言葉からそれをNausea とEvincar’s Justiiceを含む
テンペストブロックに修正してくるものと解釈してみる。
ついでにkoizumiさんが赤単バーンをつかうらしい、という情報を得る。
完全にヒヨる。
タフネス1のOrderだめじゃん!!
で↓Nauseaに弱いOrderをLlanowar Knightに置き換えてNauseaの裏をかき、
赤単をアルマジロと旗持ちの硬さでいじめるパターンに変更してみる。
[当日版]
16 Plains
7 Forest
4 Rebel Recruiter-1/1 (MM)
3 Rebel Recruiter-1/2 (MM)
2 Rebel Recruiter-1/1 Flying (NE)
4 Llanowar Knight (IV)
4 Rebel Glider:B (MM)
2 Rebel Bringer:B (NE)
1 Rebel Bringer:R (NE)
4 Disenchant-Shaper (MM)
4 Topple(NE)
4 Cho-mano Blessing(MM)
3 Seal:W(NE)
2 Feldon’s Cane(CH)
-----
[side]
3 COP:R
3 COP:B
2 Bringer:R(NE)
1 Bringer:B(NE)
3 Armadillo Cloak(IV)
3 Flagbearer(AP)
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
当日。メタ外の敗北に泣く。
1回戦。
前日仕事で殆ど寝てないこともあって寝坊。
遅刻で不戦敗。完全にメタ外だw
2戦目。
Rebecca主催。
RebさんのデッキはハーピーやナイトメアでCIP効果を使いまわす
黒青赤のCIPギミックデッキ。
墓地利用をBringerとToppleで封じつつ殴るのは大正解。
1戦目を完封パターンでイジメきったあと、
かなりイタいプレイミスをして2戦目を落とすが3戦目で押し切り勝ち。
(だった気がする。あれ?もしかして負けたかも??)
3戦目。
なぜかネタ蒔き師匠と当たる。
どうやら1戦目を負けていたらしい。相性的なこともあって師匠渋い顔。
1戦目は手札を攻められるものの完封。
リクルータから湧いてくるプロテクションはネズミじゃどうにもならない。
2戦目3戦目。
目の前に現れたのはCOPメタの三節棍ゴーレム(DS)・・・だけじゃなく、
全くメタ外だったぴゅう太のゴーレム(MD)。わははははは(汗
「4/2,1B:再生」
再生がキツい、ムリw
ぴゅう太ゴーレムにボコボコ殴られて負ける。
でも白Orderならとまってたんだよな。
先生攻撃なら・・。
メタ段階のヒヨり負け。
今回もいいとこありませんでしたw
[反省]
・自分を信用しよう。
・地雷になろう。
・遅刻は最大の敵w
なにはともあれ真っ黒でなかったのは収穫。
ごっこ遊び(シナリオの実装例)-1
2005年6月15日 SCENA仕様メモあちこち省略してるけど、一応6/11のシナリオ言語(手抜き仕様)の雰囲気をつかんでみる。
ついでにシナリオスタックの振る舞いも。
■事例6
こんたはネタのアップキープに時間停止を撃った。
------------------------------
下の1〜6がこんたのTimeStopを説明するのに必要になりそうなシナリオサンプル一式。
TimeStopを解決する瞬間はおおよそ↓のの1〜5のシナリオが入れ子で実行されている。
1.プレイヤのループ
[MTG_SENA_APP_PHASE_LOOP]
EXEC,NULL,"MTG_APP_STAT_SetActivePlayer" //次のプレイヤを得る。
CALL,NULL,"MTG_SENA_APP_PHASE_LOOP" //フェイズ一式のシナリオを呼び出す。
EXIT,"MTG_GET_GAME_END","MTG_APP_START_MATCH" //自己ループさせる。
(おしまい)
2.フェイズ一式(300.1)
[MTG_SENA_APP_PHASE]
:
CALL,NULL,"MTG_SENA_PH_BGN" //開始フェイズ。
CALL,NULL,"MTG_SENA_PH_MN1"
CALL,NULL,"MTG_SENA_PH_CBT"
CALL,NULL,"MTG_SENA_PH_MN2"
CALL,NULL,"MTG_SENA_PH_END"
:
(おしまい)
3.開始フェイズ(301)
[MTG_SENA_PH_BGN]
:
CALL,NULL,"MTG_SENA_PH_BGN_PHA" //302.1
CALL,NULL,"MTG_SENA_PH_BGN_UNT" //302.2
CALL,NULL,"MTG_SENA_PH_BGN_UPK" //303
CALL,NULL,"MTG_SENA_PH_BGN_DRW" //304
:
(おしまい)
4.アップキープステップ
[MTG_SENA_PH_BGN_UPK] (303)
:
EXEC,NULL,"MTG_APP_EFCT_CHK","(’At beginning upkeep’)" //効果的なパラメタ渡しの方法は考えてないw
CALL,NULL,"MTG_SENA_PH_BGN_UPK_PUSH_STK" //スタックに積むシナリオ
CALL,NULL,"MTG_SENA_PRIORITY" // 優先権シナリオ
(おしまい)
5.優先権シナリオ
[MTG_SENA_PRIORITY]
EXIT,"MTG_GET_PRIORITY_END",NULL //優先権の入れ子直後ならそのまま終了。
:
//スタック解決へ。
:
EXIT,"MTG_GET_PRIORITY_END","MTG_SENA_PRIORITY"
// スタックが空か両方のプレイヤーがパスするか
// 状況起因効果と誘発型効果のスタック待ちがなくなるまで自己ループさせる。
(おしまい)
6.時間停止能力(509.1a〜c)
[MTG_CARD_Time_Stop_Effect0]
EXEC,NULL,"MTG_APP_RMV_OBJ" //スタックからオブジェクトを、戦闘から生物を取り除く
EXEC,NULL,"MTG_APP_EFCT_CHK","(’State-Based Effects’)" //※4.に同じ。
EXEC,NULL,"MTG_APP_PH_PH_END" //フェイズの終了処理。まだなんも考えてない。
CALL,NULL,"MTG_SENA_PH_END_CUP" //クリンナップステップを行なう。
EXEC,NULL,"MTG_APP_EXIT_TO’MTG_SENA_PH_BGN’"
//残りのフェイズステップをすっとばして、フェイズ一式を終了させる。"
(おしまい)
------------------------------
ついでにシナリオスタックの振る舞いも。
■事例6
こんたはネタのアップキープに時間停止を撃った。
------------------------------
下の1〜6がこんたのTimeStopを説明するのに必要になりそうなシナリオサンプル一式。
TimeStopを解決する瞬間はおおよそ↓のの1〜5のシナリオが入れ子で実行されている。
1.プレイヤのループ
[MTG_SENA_APP_PHASE_LOOP]
EXEC,NULL,"MTG_APP_STAT_SetActivePlayer" //次のプレイヤを得る。
CALL,NULL,"MTG_SENA_APP_PHASE_LOOP" //フェイズ一式のシナリオを呼び出す。
EXIT,"MTG_GET_GAME_END","MTG_APP_START_MATCH" //自己ループさせる。
(おしまい)
2.フェイズ一式(300.1)
[MTG_SENA_APP_PHASE]
:
CALL,NULL,"MTG_SENA_PH_BGN" //開始フェイズ。
CALL,NULL,"MTG_SENA_PH_MN1"
CALL,NULL,"MTG_SENA_PH_CBT"
CALL,NULL,"MTG_SENA_PH_MN2"
CALL,NULL,"MTG_SENA_PH_END"
:
(おしまい)
3.開始フェイズ(301)
[MTG_SENA_PH_BGN]
:
CALL,NULL,"MTG_SENA_PH_BGN_PHA" //302.1
CALL,NULL,"MTG_SENA_PH_BGN_UNT" //302.2
CALL,NULL,"MTG_SENA_PH_BGN_UPK" //303
CALL,NULL,"MTG_SENA_PH_BGN_DRW" //304
:
(おしまい)
4.アップキープステップ
[MTG_SENA_PH_BGN_UPK] (303)
:
EXEC,NULL,"MTG_APP_EFCT_CHK","(’At beginning upkeep’)" //効果的なパラメタ渡しの方法は考えてないw
CALL,NULL,"MTG_SENA_PH_BGN_UPK_PUSH_STK" //スタックに積むシナリオ
CALL,NULL,"MTG_SENA_PRIORITY" // 優先権シナリオ
(おしまい)
5.優先権シナリオ
[MTG_SENA_PRIORITY]
EXIT,"MTG_GET_PRIORITY_END",NULL //優先権の入れ子直後ならそのまま終了。
:
//スタック解決へ。
:
EXIT,"MTG_GET_PRIORITY_END","MTG_SENA_PRIORITY"
// スタックが空か両方のプレイヤーがパスするか
// 状況起因効果と誘発型効果のスタック待ちがなくなるまで自己ループさせる。
(おしまい)
6.時間停止能力(509.1a〜c)
[MTG_CARD_Time_Stop_Effect0]
EXEC,NULL,"MTG_APP_RMV_OBJ" //スタックからオブジェクトを、戦闘から生物を取り除く
EXEC,NULL,"MTG_APP_EFCT_CHK","(’State-Based Effects’)" //※4.に同じ。
EXEC,NULL,"MTG_APP_PH_PH_END" //フェイズの終了処理。まだなんも考えてない。
CALL,NULL,"MTG_SENA_PH_END_CUP" //クリンナップステップを行なう。
EXEC,NULL,"MTG_APP_EXIT_TO’MTG_SENA_PH_BGN’"
//残りのフェイズステップをすっとばして、フェイズ一式を終了させる。"
(おしまい)
------------------------------
ごっこ遊び(シナリオの実装例)-2
2005年6月15日 SCENA仕様メモTimeStopが解決に入る直前のシナリオスタックは↓のような感じ。
[SP]=5 //スタックポインタ
[SENA_STK] //シナリオスタック
LV, SENA_NM
-----------------------------------
5, ’MTG_SENA_PRIOT’
4, ’MTG_SENA_PH_BGN_UPK’
3, ’MTG_SENA_PH_BGN’
2, ’MTG_SENA_APP_PHASE’
1, ’MTG_SENA_APP_PHASE_LOOP’
------------------------------------
で、5解決に入ってクリンナップしてるとき。
[SP]=7 //スタックポインタ
[SENA_STK] //シナリオスタック
LV, SENA_NM
-----------------------------------
7, ’MTG_SENA_PH_END_CUP’
6, ’MTG_CARD_Time_Stop_Effect0’
5, ’MTG_SENA_PRIOT’
:
(略)
------------------------------------
「残りのフェイズステップをすっとばして、フェイズ一式を終了させる」とき。
[SP]=6 //スタックポインタ
[SENA_STK] //シナリオスタック
LV, SENA_NM
-----------------------------------
6, ’MTG_CARD_Time_Stop_Effect0’
5, ’MTG_SENA_PRIOT’
4, ’MTG_SENA_PH_BGN_UPK’
3, ’MTG_SENA_PH_BGN’
2, ’MTG_SENA_APP_PHASE’
1, ’MTG_SENA_APP_PHASE_LOOP’
------------------------------------
DBのストアドでなにをしなきゃいけないかというと、
スタックを遡りながら
1.パラメタで示されたシナリオまでのシナリオスタックを全てDELETEする。
2.親シナリオで発生した一時的なスタックやヒープがあれば削除する。
T-SQLのストアドだと多分こんな感じ。
昔一回使ったきりだからよく覚えてないけど・・。
CREATE PROCEDURE MTG_APP_EXIT_TO (@argSNM VARCHAR(32))
AS
BEGIN
-- 引数のチェック
DECLARE @plv INT;
SET @plv = SELECT LV FROM SENA_STK WHERE SNM = @argSNM;
IF @plv IS NULL
BEGIN
RAISERROR(どいつが親じゃゴルア!)
END;
-- シナリオスタックのお掃除。
-- スタックだけなら一挙に削ってしまえるがわざわざループにしてるのは
-- シナリオごとに「スコープやオーナがそのシナリオである」
-- スタックとヒープの掃除を正しくしてまわらなくちゃいけないと思ってるから。
-- たとえばFinal Fortuneは遅延効果を特定のプレイヤーのターン終了時に
-- 発生させるため、ターン終了時以外のトリガーに加え、"最終(Final)ターン"が
-- 始まったことを記録するための情報をヒープに確保する。
-- (DBでそんなところまで実装すべきじゃないが手抜きのためなら何でもする)
-- シナリオスタックの関係で言えばストーム持ちのカードがデッキに入ってる場合
--「フェイズ一式300.1」のシナリオを上書きした「ストーム入りフェイズ一式」の
-- シナリオを作成する。しかしこれは永続的な上書きなので書き換えられちゃ困る。
-- (ぱっと聞いただけだと意味不明だと思うけど)
DECLARE @lv INT;
DECLARE @snm VARCHAR(32);
DECLARE c CURSOR LOCAL FORWARD_ONLY STATIC FOR
SELECT LV,SENA_NM
FROM SENA_STK
WHERE LV >= @plv
ORDER BY LV DESC;
OPEN c;
FETCH NEXT FROM c INTO @lv, @snm;
WHILE @@FETCH_STATUS = 0
BEGIN
-- シナリオの変数スタックを削除。
EXEC MTG_DELETE_SENA_HEAP, @snm;
-- シナリオスタックを削除。
EXEC MTG_DELETE_SENA_STAK, @snm;
FETCH NEXT FROM c INTO @lv, @snm;
END;
CLOSE c;
DEALLOCATE c;
END;
考えがまとまるまでもう少しかな・・・。
[SP]=5 //スタックポインタ
[SENA_STK] //シナリオスタック
LV, SENA_NM
-----------------------------------
5, ’MTG_SENA_PRIOT’
4, ’MTG_SENA_PH_BGN_UPK’
3, ’MTG_SENA_PH_BGN’
2, ’MTG_SENA_APP_PHASE’
1, ’MTG_SENA_APP_PHASE_LOOP’
------------------------------------
で、5解決に入ってクリンナップしてるとき。
[SP]=7 //スタックポインタ
[SENA_STK] //シナリオスタック
LV, SENA_NM
-----------------------------------
7, ’MTG_SENA_PH_END_CUP’
6, ’MTG_CARD_Time_Stop_Effect0’
5, ’MTG_SENA_PRIOT’
:
(略)
------------------------------------
「残りのフェイズステップをすっとばして、フェイズ一式を終了させる」とき。
[SP]=6 //スタックポインタ
[SENA_STK] //シナリオスタック
LV, SENA_NM
-----------------------------------
6, ’MTG_CARD_Time_Stop_Effect0’
5, ’MTG_SENA_PRIOT’
4, ’MTG_SENA_PH_BGN_UPK’
3, ’MTG_SENA_PH_BGN’
2, ’MTG_SENA_APP_PHASE’
1, ’MTG_SENA_APP_PHASE_LOOP’
------------------------------------
DBのストアドでなにをしなきゃいけないかというと、
スタックを遡りながら
1.パラメタで示されたシナリオまでのシナリオスタックを全てDELETEする。
2.親シナリオで発生した一時的なスタックやヒープがあれば削除する。
T-SQLのストアドだと多分こんな感じ。
昔一回使ったきりだからよく覚えてないけど・・。
CREATE PROCEDURE MTG_APP_EXIT_TO (@argSNM VARCHAR(32))
AS
BEGIN
-- 引数のチェック
DECLARE @plv INT;
SET @plv = SELECT LV FROM SENA_STK WHERE SNM = @argSNM;
IF @plv IS NULL
BEGIN
RAISERROR(どいつが親じゃゴルア!)
END;
-- シナリオスタックのお掃除。
-- スタックだけなら一挙に削ってしまえるがわざわざループにしてるのは
-- シナリオごとに「スコープやオーナがそのシナリオである」
-- スタックとヒープの掃除を正しくしてまわらなくちゃいけないと思ってるから。
-- たとえばFinal Fortuneは遅延効果を特定のプレイヤーのターン終了時に
-- 発生させるため、ターン終了時以外のトリガーに加え、"最終(Final)ターン"が
-- 始まったことを記録するための情報をヒープに確保する。
-- (DBでそんなところまで実装すべきじゃないが手抜きのためなら何でもする)
-- シナリオスタックの関係で言えばストーム持ちのカードがデッキに入ってる場合
--「フェイズ一式300.1」のシナリオを上書きした「ストーム入りフェイズ一式」の
-- シナリオを作成する。しかしこれは永続的な上書きなので書き換えられちゃ困る。
-- (ぱっと聞いただけだと意味不明だと思うけど)
DECLARE @lv INT;
DECLARE @snm VARCHAR(32);
DECLARE c CURSOR LOCAL FORWARD_ONLY STATIC FOR
SELECT LV,SENA_NM
FROM SENA_STK
WHERE LV >= @plv
ORDER BY LV DESC;
OPEN c;
FETCH NEXT FROM c INTO @lv, @snm;
WHILE @@FETCH_STATUS = 0
BEGIN
-- シナリオの変数スタックを削除。
EXEC MTG_DELETE_SENA_HEAP, @snm;
-- シナリオスタックを削除。
EXEC MTG_DELETE_SENA_STAK, @snm;
FETCH NEXT FROM c INTO @lv, @snm;
END;
CLOSE c;
DEALLOCATE c;
END;
考えがまとまるまでもう少しかな・・・。
池袋で鉄人戦が告知されましたが・・
2005年6月14日###############################
チャットで指摘したところ
露天鉱床は無事禁止されますた。
また多人数戦はなくなる可能性
###############################
>追記:禁止制限カードについて
>コモン単:Maze of IthとMishira’s Factoryは禁止。
>通常&多人数戦:今回はレガシーに準拠
■1.のコモン単、なぜかレガシー準拠ってのが抜けてます。
つまりどういうことかというと。
露 天 鉱 床 が 使 え る 。
せっかくの露天鉱床、悪用するならこうだろうってことで。
4E(CH)+
16 Artifact-Land(4U/4B/4R/2W/2G)
4 Strip Mine(AQ)
4 Arcbond Worker(DS)
4 Atog(AQ)
4 Ornithopter(AQ)
4 Disciple of the Vault(MD)
4 Frog.(MD)
3 Myr Enf.(MD)
2 Hover Guard(MD)
4 Thoughtcast(MD)
4 Chromatic(MD)
4 Cranial Plating(DS)
3 Penta Prizm(FD)
-----------
4 Lightning Bolt
4 Tormod’s Crypt
4 Welder. Jar
3 Stone Rain
ま た 親 和 か !!
■2.通常戦もたった3回戦しかありませんのであたり運がひどく影響してきます。
また、よりによってレガシー準拠です。
過去レガシー準拠の紅葉杯でよい成績をたたき出してるものといえば。
・たんぐる親和
・ごぶりん
・らいよんさるべ
・アグロウォーター
や っ ぱ り 親 和 か !!
■3.ネクロレスネクロをバトルロイヤルでプレイしてみるテスト。
たとえば8人のバトルロイヤル。
:
2T:「Innocent Blood」
:
4T:「Mutilate」
・・・全員からLightning Boltとか飛んできそうです。
4 無垢
4 布告
4 もぎとり
4 囁き
2 占骨
3 確約
3 太陽のしずく
4 堕落
4 消耗
3 貴重品室
23 沼
------------------------------
あと赤青シャープシューター警報とか。
思いっきり場が混乱しそうですw
========================================
・・・と書いてみるものの最近カード触ってないし先週末も結局他のことに
時間をささげてしまったのでデッキが準備できない可能性大。マズー。
チャットで指摘したところ
露天鉱床は無事禁止されますた。
また多人数戦はなくなる可能性
###############################
>追記:禁止制限カードについて
>コモン単:Maze of IthとMishira’s Factoryは禁止。
>通常&多人数戦:今回はレガシーに準拠
■1.のコモン単、なぜかレガシー準拠ってのが抜けてます。
つまりどういうことかというと。
露 天 鉱 床 が 使 え る 。
せっかくの露天鉱床、悪用するならこうだろうってことで。
4E(CH)+
16 Artifact-Land(4U/4B/4R/2W/2G)
4 Strip Mine(AQ)
4 Arcbond Worker(DS)
4 Atog(AQ)
4 Ornithopter(AQ)
4 Disciple of the Vault(MD)
4 Frog.(MD)
3 Myr Enf.(MD)
2 Hover Guard(MD)
4 Thoughtcast(MD)
4 Chromatic(MD)
4 Cranial Plating(DS)
3 Penta Prizm(FD)
-----------
4 Lightning Bolt
4 Tormod’s Crypt
4 Welder. Jar
3 Stone Rain
ま た 親 和 か !!
■2.通常戦もたった3回戦しかありませんのであたり運がひどく影響してきます。
また、よりによってレガシー準拠です。
過去レガシー準拠の紅葉杯でよい成績をたたき出してるものといえば。
・たんぐる親和
・ごぶりん
・らいよんさるべ
・アグロウォーター
や っ ぱ り 親 和 か !!
■3.ネクロレスネクロをバトルロイヤルでプレイしてみるテスト。
たとえば8人のバトルロイヤル。
:
2T:「Innocent Blood」
:
4T:「Mutilate」
・・・全員からLightning Boltとか飛んできそうです。
4 無垢
4 布告
4 もぎとり
4 囁き
2 占骨
3 確約
3 太陽のしずく
4 堕落
4 消耗
3 貴重品室
23 沼
------------------------------
あと赤青シャープシューター警報とか。
思いっきり場が混乱しそうですw
========================================
・・・と書いてみるものの最近カード触ってないし先週末も結局他のことに
時間をささげてしまったのでデッキが準備できない可能性大。マズー。
#多少修正
完全に普通のマジックプレイヤーを置き去りにしてる自分に気づく。
6月10日の事例4とか5とか見てイヤーな感じがした人は多分正解。
当初はループ構造とか条件分岐を「シナリオ仕様」に盛り込もうと思ってたけど止めちゃってます。
条件分岐はあってもELSEがないとか
ループ構造はサブルーチン呼び出しの出口コードをスタックでいじって制御するとか。
でもこうすることでインタプリタ上でGOTO(プログラムカウンタ)制御をしなくてすむのでそれはそれ。
シナリオの文法制御をどうするか、について「スタックマシン」にモデルを求めてますのでこうなってます。
スタックマシンといっても知らない人がほとんどだと思いますが
(私も学生のころに少し勉強したくらいで、概念くらいしか覚えてません)
P-CODEとかFORTHとか最近だとPostScriptとかのあれです・・・って普通しらねぇw
■手抜きの方針。
1.通常処理はDBのストアド呼び出し or シナリオ呼び出し。
パラメタとして呼び出すための条件を指定できる。
2.シナリオは途中で呼び出し側に戻ることができる。
パラメタとして呼び出し側に戻るための条件を指定できる。
Cでいうところのreturn。戻り値として指定できるのは
「なし」か「次に実行するシナリオの名前」のみ。
4.条件分岐は2.で実現できる。ELSEはサポートしない。
5.繰り返し制御は3.で実現できるのでサポートしない。
6.演算はDBエンジンに任せてもできるのでサポートしない。
7.多少のI/O制御は必要かもしれない。手抜きできそうならそのためのステートメントのみ追加。
うひゃw
ステートメントの名前とかどんなのがいいか考えてないです。
EXEC IF条件,[シナリオ名],パラメタ文字列 //シナリオスタックは変化しない。
CALL IF条件,[ストアド名],パラメタ文字列 //シナリオスタックに積むものはまだ見えてない。
EXIT IF条件,{ストアド名} //CALLで作られたスタックは除去。ストアド名があればそれを制御スタックに積む。
:
osqlコンソールに見えてきた・・・orz。いっそPERFORMとか使って嫌悪感をアップさせr(ry
ところでこれを考えてるときにAccessマクロを思い出してしまいますた。
(業務でつかったことは3つくらいしかありませんが苦痛の限りのシロモノですw)
あれにラベルがなくても繰り返しとか実現できるかも・・・とか思ってしまった。
んでもって、CDCの人が「Accessでつくれば?」とかいってたのを一瞬マジに検討してしまった。
Accessマクロで書かれたシナリオが数千単位で登録されてるクライアントも面白いかも・・・とか。
(ちなみにAPとかMWSレベルのシナリオならAccessで作れます)
自分メモ:68000のbra命令も思い出してみた。
---------
参考にならなさそうな面白いなリンクを見つけたので貼り付け。
http://mag.autumn.org/Content.modf?id=20050517171824
http://homepage3.nifty.com/murasakigawa/junk/rpn2001c.htm
http://www-lab.ee.uec.ac.jp/text/forth/man/man.html
完全に普通のマジックプレイヤーを置き去りにしてる自分に気づく。
6月10日の事例4とか5とか見てイヤーな感じがした人は多分正解。
当初はループ構造とか条件分岐を「シナリオ仕様」に盛り込もうと思ってたけど止めちゃってます。
条件分岐はあってもELSEがないとか
ループ構造はサブルーチン呼び出しの出口コードをスタックでいじって制御するとか。
でもこうすることでインタプリタ上でGOTO(プログラムカウンタ)制御をしなくてすむのでそれはそれ。
シナリオの文法制御をどうするか、について「スタックマシン」にモデルを求めてますのでこうなってます。
スタックマシンといっても知らない人がほとんどだと思いますが
(私も学生のころに少し勉強したくらいで、概念くらいしか覚えてません)
P-CODEとかFORTHとか最近だとPostScriptとかのあれです・・・って普通しらねぇw
■手抜きの方針。
1.通常処理はDBのストアド呼び出し or シナリオ呼び出し。
パラメタとして呼び出すための条件を指定できる。
2.シナリオは途中で呼び出し側に戻ることができる。
パラメタとして呼び出し側に戻るための条件を指定できる。
Cでいうところのreturn。戻り値として指定できるのは
「なし」か「次に実行するシナリオの名前」のみ。
4.条件分岐は2.で実現できる。ELSEはサポートしない。
5.繰り返し制御は3.で実現できるのでサポートしない。
6.演算はDBエンジンに任せてもできるのでサポートしない。
7.多少のI/O制御は必要かもしれない。手抜きできそうならそのためのステートメントのみ追加。
うひゃw
ステートメントの名前とかどんなのがいいか考えてないです。
EXEC IF条件,[シナリオ名],パラメタ文字列 //シナリオスタックは変化しない。
CALL IF条件,[ストアド名],パラメタ文字列 //シナリオスタックに積むものはまだ見えてない。
EXIT IF条件,{ストアド名} //CALLで作られたスタックは除去。ストアド名があればそれを制御スタックに積む。
:
osqlコンソールに見えてきた・・・orz。いっそPERFORMとか使って嫌悪感をアップさせr(ry
ところでこれを考えてるときにAccessマクロを思い出してしまいますた。
(業務でつかったことは3つくらいしかありませんが苦痛の限りのシロモノですw)
あれにラベルがなくても繰り返しとか実現できるかも・・・とか思ってしまった。
んでもって、CDCの人が「Accessでつくれば?」とかいってたのを一瞬マジに検討してしまった。
Accessマクロで書かれたシナリオが数千単位で登録されてるクライアントも面白いかも・・・とか。
(ちなみにAPとかMWSレベルのシナリオならAccessで作れます)
自分メモ:68000のbra命令も思い出してみた。
---------
参考にならなさそうな面白いなリンクを見つけたので貼り付け。
http://mag.autumn.org/Content.modf?id=20050517171824
http://homepage3.nifty.com/murasakigawa/junk/rpn2001c.htm
http://www-lab.ee.uec.ac.jp/text/forth/man/man.html
実はワルキューレにべた惚れだったり。
2005年6月11日 文化
ISBN:4861271584 コミック 冨士 宏 マッグガーデン 2005/06/10 ¥980
連載されてるの知りませんでしたw
マーベルランドと彼女に惚れたのはこれで3回目。
でも本当は絵本で読みたいかも。
連載されてるの知りませんでしたw
マーベルランドと彼女に惚れたのはこれで3回目。
でも本当は絵本で読みたいかも。
ごっこあそび。能力と効果って何が違うの?-1
2005年6月10日 SCENA仕様メモ用語として「タイムスタンプ」を使うのがややこしくなってきたので
「バージョン」と表現してみる。
■ダイナミックに書き換えられるシナリオを処理する方法。
シナリオを実行しているとき、ネストして呼び出された
シナリオが呼び出し側のシナリオを書き換えることがある。
たとえば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)が発動した!
複数のスタック待ちが発生している場合どっちからスタックにつむの??
「バージョン」と表現してみる。
■ダイナミックに書き換えられるシナリオを処理する方法。
シナリオを実行しているとき、ネストして呼び出された
シナリオが呼び出し側のシナリオを書き換えることがある。
たとえば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)が発動した!
複数のスタック待ちが発生している場合どっちからスタックにつむの??
ごっこあそび。能力と効果って何が違うの?-2
2005年6月10日 SCENA仕様メモ#いくつか修正
------------------------------------------------
事例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
------------------------------------------------
事例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
モノ書きのためのツール。
2005年6月7日 SCENA仕様メモ・サクラエディタ
http://members.at.infoseek.co.jp/sakura_editor/
MKとかVXとかありますが、現状でこれが一番使いやすく高速動作で高機能。
モノ書きにデータ加工に縦横無尽。
今の仕事やり始めて初めて矩形選択のありがたさが身にしみてたり。
惜しむらくはアイコンがカッコ悪いとか、検索ショートカットがCtrl+Rなところとか、
機能多すぎてメニュー項目が多すぎるとか。
・Sol (Smart Out Line)
http://homepage1.nifty.com/knowledge-osmo/main.htm
Actaライクなアウトラインプロセッサ。
「Actaライク」これだけで使う理由になりますです。
■ゴッコ遊び。
別に急ぐものでもないのでゆっくりと考え中。
ルールブックって事細かに読まなきゃ駄目だね。
で、200と400〜409あたりを読んだ。
でも領域で管理べき事柄とシナリオで管理する事柄がはっきり
区切れずシミュレーションの繰り返しで頭を整理中。
・シミュレーションサンプルとして面白そうなカード。
Skyshroud Elf : マナ能力のサンプル。
Saplloring Burst : いろんな能力の塊。
Necrogia : 「ターン終了時しか唱えられない」の処理の仕方。
Urza’s Bauble : 遅延効果
Fireball : うざいことこの上ないカード。
COP:Red : 戦闘ダメージの処理の仕方
親和+とりにすへあ+わーくしょっぷ
血を吐きつつあたまぐるぐる。
http://members.at.infoseek.co.jp/sakura_editor/
MKとかVXとかありますが、現状でこれが一番使いやすく高速動作で高機能。
モノ書きにデータ加工に縦横無尽。
今の仕事やり始めて初めて矩形選択のありがたさが身にしみてたり。
惜しむらくはアイコンがカッコ悪いとか、検索ショートカットがCtrl+Rなところとか、
機能多すぎてメニュー項目が多すぎるとか。
・Sol (Smart Out Line)
http://homepage1.nifty.com/knowledge-osmo/main.htm
Actaライクなアウトラインプロセッサ。
「Actaライク」これだけで使う理由になりますです。
■ゴッコ遊び。
別に急ぐものでもないのでゆっくりと考え中。
ルールブックって事細かに読まなきゃ駄目だね。
で、200と400〜409あたりを読んだ。
でも領域で管理べき事柄とシナリオで管理する事柄がはっきり
区切れずシミュレーションの繰り返しで頭を整理中。
・シミュレーションサンプルとして面白そうなカード。
Skyshroud Elf : マナ能力のサンプル。
Saplloring Burst : いろんな能力の塊。
Necrogia : 「ターン終了時しか唱えられない」の処理の仕方。
Urza’s Bauble : 遅延効果
Fireball : うざいことこの上ないカード。
COP:Red : 戦闘ダメージの処理の仕方
親和+とりにすへあ+わーくしょっぷ
血を吐きつつあたまぐるぐる。
SQLServerって突っ込みが入るものらしい。
2005年6月5日でも更新系で使えてストアド使えて安く手に入れられてっていうと余りないと思う。
MySQL:ストアドは実装したて。
HSQLDB:JAVAのスキルありません。
携帯に組み込むならいいかも。
JET(Access):複数人数で叩くDBにJET選ぶほど勇気ありません。
Oracle:高いわ!!ストアドはいいけど。
PostgreSQL:最初これにしてみよかとおもってた。
SQL Server(MSDE):でもこれでいいやと。
〜〜〜〜〜〜〜〜〜〜〜
修正:HESQL → HSQLDB
Open Officeにも同梱されているJava100%のDB。
エンジンが小さくてJETDBと同じような運用ができるようです。
CREATE PROCEDUREはサポートしてまへん。
MySQL:ストアドは実装したて。
HSQLDB:JAVAのスキルありません。
携帯に組み込むならいいかも。
JET(Access):複数人数で叩くDBにJET選ぶほど勇気ありません。
Oracle:高いわ!!ストアドはいいけど。
PostgreSQL:最初これにしてみよかとおもってた。
SQL Server(MSDE):でもこれでいいやと。
〜〜〜〜〜〜〜〜〜〜〜
修正:HESQL → HSQLDB
Open Officeにも同梱されているJava100%のDB。
エンジンが小さくてJETDBと同じような運用ができるようです。
CREATE PROCEDUREはサポートしてまへん。
大盛り。
2005年6月3日アクセスカウンタが一気に数十増えたのでおかしい・・と、おもって
アクセス元を見ると誰かがリンク経由で覗いたらしくいくつか記録されてました。
ちなみに一昨日まではアクセス元が一つも表示されないごく静かなBLOGだったのです。
そのうちの一つがなぜかgoogleを「大盛り」で検索した結果リスト・・・。
・・・なんでやねんw
--------
もう一つのアクセス元について。
おそらくご覧になっている方の興味は次のいずれかと思われます。
A.MOみたいなアプリケーションができるのか。
B.MTGのエンジンが実装されるのか。
結論からいうと両方Noです。
さらに言うと仕様レベル(妄想レベル)で終わる可能性大です。
A.に関しては私がGUIに興味ありません。
osqlかsqlplusで遊べりゃいいと思っています。
逆にそのほうが受けがいいかもしれませんが。
いずれにしても画面制御に興味は持っていません。
B.に関しては私の興味がそこにありません。
それ以前に個人で行なうのは物理的に不可能です。
某掲示板に噂されていた汎用シナリオエンジンを作るのが精一杯。
シナリオエンジンを考えるにあたって、MTGシナリオをある程度
実装できる汎用性が欲しいからシミュレーションの題材にしてますが
巨大で複雑なMTGのルールをシナリオ化するのはそれだけで気が遠くなります。
ルーリングを実装できたとしてもカードデータの実装はそれの数十倍の
作業量になるでしょう。
そこまでやる気ねぇです。さすがに。
アクセス元を見ると誰かがリンク経由で覗いたらしくいくつか記録されてました。
ちなみに一昨日まではアクセス元が一つも表示されないごく静かなBLOGだったのです。
そのうちの一つがなぜかgoogleを「大盛り」で検索した結果リスト・・・。
・・・なんでやねんw
--------
もう一つのアクセス元について。
おそらくご覧になっている方の興味は次のいずれかと思われます。
A.MOみたいなアプリケーションができるのか。
B.MTGのエンジンが実装されるのか。
結論からいうと両方Noです。
さらに言うと仕様レベル(妄想レベル)で終わる可能性大です。
A.に関しては私がGUIに興味ありません。
osqlかsqlplusで遊べりゃいいと思っています。
逆にそのほうが受けがいいかもしれませんが。
いずれにしても画面制御に興味は持っていません。
B.に関しては私の興味がそこにありません。
それ以前に個人で行なうのは物理的に不可能です。
某掲示板に噂されていた汎用シナリオエンジンを作るのが精一杯。
シナリオエンジンを考えるにあたって、MTGシナリオをある程度
実装できる汎用性が欲しいからシミュレーションの題材にしてますが
巨大で複雑なMTGのルールをシナリオ化するのはそれだけで気が遠くなります。
ルーリングを実装できたとしてもカードデータの実装はそれの数十倍の
作業量になるでしょう。
そこまでやる気ねぇです。さすがに。
ごっこあそび。事例研究(めどりんぐきっず)
2005年6月2日さすがに複雑すぎるというか、中身を何も考えていないので、
あちこちに矛盾が生じまくっている。
なにがいいかよくわからないのでブレインストームレベル。
というわけで再びメモ。
■案:SYS_WAIT時にユーザが可能な行動をどう管理するか。
[T_CARD]に手伝わせてみる。
この場合([T-CARD]→[T_STAT])だと矛盾が生じるのでいっそのことT_STATなんてイラネ、
という考えもある。
アプリケーション関連のプロパティはT_STAT、ユーザ関連のプロパティはT_PROPに持っていくテスト。
([T-CARD]→[T_PROP])
〜〜〜〜
ターン終了ステップのシナリオ進行の例。
1.シナリオの状態を得る。
[T_STAT]
NM,VAL
--+---
’PID’,’1’
’SENA_NM’,’BG_UK_WT’
’SENA_TRG’,’EXE’
’SENA_CAP’,’Upkeep Wait’
2.可能なユーザ行動をチェックしクライアントに通知。
これはカードを選んで可能な行動をメニューに表示させたときに必要。
[T_CARD] c → [T_PROP] p
c.CNM = (’MTG_SENA_’ || T_STAT_SENA_NM || ’_INVALID_ACTION’)
or c.CNM = (’MTG_SENA_’ || T_STAT_SENA_NM || ’_VALID_ACTION’)
c.STMP, c.CRE, c.CNM, p.VAL,
-----+------+-------+-------
20050101000000,’gmaster’,’MTG_SENA_BG_UK_WT_INVALID_ACTION’,#NULL#
20050101000130,’rebecca’,’MTG_SENA_BG_UK_WT_VALID_ACTION’,’CARD-Necrogia_PLAY0’
20050101000000,’gmaster’,’MTG_SENA_BG_UK_WT_VALID_ACTION’,’TYPE-INS’
20050101000000,’gmaster’,’MTG_SENA_BG_UK_WT_VALID_ACTION’,’TYPE-MANA’
:
一部、Necrogiaなんて入れてみていい気になってみたけど
これだと常在能力等の例外処理が抜けている。
Medlling Mageなんか全部のフェイズにINVALID_ACTIONを入れなきゃいけない。
(いや、いれてもいいけど。)
常在能力のチェックを入れるとすごく遅くなるはずだが・・・。
それは下で。
3.SYS_WAITを送信。
〜〜〜〜
■常在能力の処理。
常在能力などはそれが発生している間、T_ZONEのNM=’CEF’に能力の擬似カードと
廃棄トリガーをおいていく。
[T_ZONE] z
PID,CID,ZN,CNM,CRE
-+--+---+----------
1,67,CEF,’Meddling Kids_Effect1_0’,’Meddling Kids@20050101000505’ //禁止効果
1,67,CEF,’Meddling Kids_Effect2_1’,’Meddling Kids@20050101000505’ //削除トリガー
z.CNMからCNMを取り出してそれをT_SENAとマッチングするとよさげ。
[T_SENA] s
SID,STMP,NM,PH,TRG,PROC
---------------------------------------------
1,20050101000505,’,’Meddling Kids_Effect1_0’,’CE_常在効果’,"Meddling Kids_Effect1"
1,20050101000505,’,’Meddling Kids_Effect2_0’,’CE_場を離れる’,"Meddling Kids_Effect1"
ネーミングルールにあらが見えるなw
ああ、駄目だ。やり直し。(T-T)
あちこちに矛盾が生じまくっている。
なにがいいかよくわからないのでブレインストームレベル。
というわけで再びメモ。
■案:SYS_WAIT時にユーザが可能な行動をどう管理するか。
[T_CARD]に手伝わせてみる。
この場合([T-CARD]→[T_STAT])だと矛盾が生じるのでいっそのことT_STATなんてイラネ、
という考えもある。
アプリケーション関連のプロパティはT_STAT、ユーザ関連のプロパティはT_PROPに持っていくテスト。
([T-CARD]→[T_PROP])
〜〜〜〜
ターン終了ステップのシナリオ進行の例。
1.シナリオの状態を得る。
[T_STAT]
NM,VAL
--+---
’PID’,’1’
’SENA_NM’,’BG_UK_WT’
’SENA_TRG’,’EXE’
’SENA_CAP’,’Upkeep Wait’
2.可能なユーザ行動をチェックしクライアントに通知。
これはカードを選んで可能な行動をメニューに表示させたときに必要。
[T_CARD] c → [T_PROP] p
c.CNM = (’MTG_SENA_’ || T_STAT_SENA_NM || ’_INVALID_ACTION’)
or c.CNM = (’MTG_SENA_’ || T_STAT_SENA_NM || ’_VALID_ACTION’)
c.STMP, c.CRE, c.CNM, p.VAL,
-----+------+-------+-------
20050101000000,’gmaster’,’MTG_SENA_BG_UK_WT_INVALID_ACTION’,#NULL#
20050101000130,’rebecca’,’MTG_SENA_BG_UK_WT_VALID_ACTION’,’CARD-Necrogia_PLAY0’
20050101000000,’gmaster’,’MTG_SENA_BG_UK_WT_VALID_ACTION’,’TYPE-INS’
20050101000000,’gmaster’,’MTG_SENA_BG_UK_WT_VALID_ACTION’,’TYPE-MANA’
:
一部、Necrogiaなんて入れてみていい気になってみたけど
これだと常在能力等の例外処理が抜けている。
Medlling Mageなんか全部のフェイズにINVALID_ACTIONを入れなきゃいけない。
(いや、いれてもいいけど。)
常在能力のチェックを入れるとすごく遅くなるはずだが・・・。
それは下で。
3.SYS_WAITを送信。
〜〜〜〜
■常在能力の処理。
常在能力などはそれが発生している間、T_ZONEのNM=’CEF’に能力の擬似カードと
廃棄トリガーをおいていく。
[T_ZONE] z
PID,CID,ZN,CNM,CRE
-+--+---+----------
1,67,CEF,’Meddling Kids_Effect1_0’,’Meddling Kids@20050101000505’ //禁止効果
1,67,CEF,’Meddling Kids_Effect2_1’,’Meddling Kids@20050101000505’ //削除トリガー
z.CNMからCNMを取り出してそれをT_SENAとマッチングするとよさげ。
[T_SENA] s
SID,STMP,NM,PH,TRG,PROC
---------------------------------------------
1,20050101000505,’,’Meddling Kids_Effect1_0’,’CE_常在効果’,"Meddling Kids_Effect1"
1,20050101000505,’,’Meddling Kids_Effect2_0’,’CE_場を離れる’,"Meddling Kids_Effect1"
ネーミングルールにあらが見えるなw
ああ、駄目だ。やり直し。(T-T)
-ごっこあそび。事例研究(ちゆの軟膏)-2
2005年6月1日で、その続き。
← SYS_DLG_INFO @NM="MTG_PLAY_MANA_ABILITY", @MSG="Cost {W} Required. Your Mana pool has {W}."
← SYS_WAIT @PID=1
// コスト支払い(409.1h)
→ UTL_PAY_COST COST=("W")
← SYS_DLG_CLO @NM="MTG_DLG_PLAY_CARD" //ダイアログ閉じる
← SYS_ECHO @MSG="hrurr played [Healing Salve]; Mode is [Target Player Gains 3 Life.] Target is hrurr."
← SYS_ECHO @MSG="hrurr used [Skyshoroud Elves]’s mana ability, [Island]’s Mana Ability for cost [Healing Salve]."
← SYS_ECHO @MSG="hrurr tapped [Island]."
← SYS_ECHO @MSG="hrurr tapped Island for cost [Healing Salve].
← SYS_MOVE_TO @CID=6, @ZN="STK"
← SYS_WAIT @PID=1
→ USR_PASSED PID=1
← SYS_WAIT @PID=2
→ USR_PASSED PID=2
//スタックの解決。
//Healing Slaveが能力を"置き去り"にするので能力としてのカードを追加。
← MTG_ZONE_ADD @PID=1, @CID=151, @ZN="RPE", @CNM="Healing Salve@20050101021400" //領域に追加。
← MTG_PROP_ADD @CID=151, @NM="Text" @VAL="Prevent the next 3 damage that would be dealt to target creature or player this turn." //プロパティを追加。
← MTG_PROP_ADD @CID=151, @NM="Prevented Point" @VAL=0
← MTG_PROP_ADD @CID=151, @NM="Target" @VAL="hrurr"
//ダメージ解決のシナリオにダメージ軽減のトリガーを追加。軽減が3点になったら自分自身を削除。
← SYS_SENA_ADD @PRC="MTG_SENC_HEALING_SALVE_1" @SNM="MTG_TRIG_TR_DM_RV", @TRG="EXE", @CRE="Healing Salve@20050101021400" @FILTER="PNM=’hrurr’"
//クリンナップ終了シナリオにトリガーを追加。領域、プロパティ、シナリオから自分を取り除く。
← SYS_SENA_ADD @PRC="MTG_SENC_HEALING_SALVE_2" @SNM=MTG_SENA_ED_CU_ED, @TRG="END", @CRE="Healing Salve@20050101021400" @FILTER="PNM=’hrurr’"
//すべての能力を解決したので墓地に。
← MTG_ZONE_MOVE @CID=6, @ZN="GRV"
← SYS_WAIT @PID=1
← SYS_DLG_INFO @NM="MTG_PLAY_MANA_ABILITY", @MSG="Cost {W} Required. Your Mana pool has {W}."
← SYS_WAIT @PID=1
// コスト支払い(409.1h)
→ UTL_PAY_COST COST=("W")
← SYS_DLG_CLO @NM="MTG_DLG_PLAY_CARD" //ダイアログ閉じる
← SYS_ECHO @MSG="hrurr played [Healing Salve]; Mode is [Target Player Gains 3 Life.] Target is hrurr."
← SYS_ECHO @MSG="hrurr used [Skyshoroud Elves]’s mana ability, [Island]’s Mana Ability for cost [Healing Salve]."
← SYS_ECHO @MSG="hrurr tapped [Island]."
← SYS_ECHO @MSG="hrurr tapped Island for cost [Healing Salve].
← SYS_MOVE_TO @CID=6, @ZN="STK"
← SYS_WAIT @PID=1
→ USR_PASSED PID=1
← SYS_WAIT @PID=2
→ USR_PASSED PID=2
//スタックの解決。
//Healing Slaveが能力を"置き去り"にするので能力としてのカードを追加。
← MTG_ZONE_ADD @PID=1, @CID=151, @ZN="RPE", @CNM="Healing Salve@20050101021400" //領域に追加。
← MTG_PROP_ADD @CID=151, @NM="Text" @VAL="Prevent the next 3 damage that would be dealt to target creature or player this turn." //プロパティを追加。
← MTG_PROP_ADD @CID=151, @NM="Prevented Point" @VAL=0
← MTG_PROP_ADD @CID=151, @NM="Target" @VAL="hrurr"
//ダメージ解決のシナリオにダメージ軽減のトリガーを追加。軽減が3点になったら自分自身を削除。
← SYS_SENA_ADD @PRC="MTG_SENC_HEALING_SALVE_1" @SNM="MTG_TRIG_TR_DM_RV", @TRG="EXE", @CRE="Healing Salve@20050101021400" @FILTER="PNM=’hrurr’"
//クリンナップ終了シナリオにトリガーを追加。領域、プロパティ、シナリオから自分を取り除く。
← SYS_SENA_ADD @PRC="MTG_SENC_HEALING_SALVE_2" @SNM=MTG_SENA_ED_CU_ED, @TRG="END", @CRE="Healing Salve@20050101021400" @FILTER="PNM=’hrurr’"
//すべての能力を解決したので墓地に。
← MTG_ZONE_MOVE @CID=6, @ZN="GRV"
← SYS_WAIT @PID=1
ごっこあそび。事例研究(ちゆの軟膏)-1
2005年6月1日ゴッコあそび。事例研究-1。
hrurr:「ちゆをプリベントでプレイします。対象はワタシ。島から出したマナをスカイシュラウドエルフで白マナに変換」
neta:「はい」
hrurr:「解決します」
neta:「はい」
[T_ZONE]
PID,CID,ZN,CNM
-+-+---+-----
1,1,PLY,Forest
1,2,PLY,Island
1,3,PLY,Swamp
1,4,PLY,Skyshroud Elf
1,5,HND,Trained Armodon
1,6,HND,Healing Salve
1,7,HND,Fire Ball
====================
//Healing Salveのプレイを宣言。(409.1a)
← SYS_WAIT @PID=1
→ USR_PLAY_CARD @CID=6 //Healing Salve [@MODE=1]を省略した。
← SYS_DLG_POP @NM="MTG_DLG_PLAY_CARD", @CID=6
//MODEを省略したので割り込みPOP (409.1b)
← SYS_DLG_POP @NM="MTG_DLG_SELECTOR", @MSG="Choose one", @LIST=("Target player gains 3 life","Prevent the next 3 damage that would be dealt to target creature or player this turn.")
← SYS_WAIT @PID=1 //for DLG_POP @NM="MTG_DLG_SELECTOR"
→ UTL_DLG_RES @NM="MTG_DLG_SELECTOR", @RESULT=2
← SYS_DLG_CLO @NM="MTG_DLG_SELECTOR" //ダイアログ閉じる
//Healing SalveのMODE=2のトリガーが対象を取るので割り込みPOP (409.1c)
← SYS_DLG_POP @NM="MTG_DLG_SELECTOR", @MSG="Choose Target", @LIST=("hrurr","neta","Skyshroud Elf")
← SYS_WAIT @PID=1 //for DLG_POP @NM="MTG_DLG_SELECTOR"
→ UTL_DLG_RES @NM="MTG_DLG_SELECTOR", @RESULT=1
← SYS_DLG_CLO @NM="MTG_DLG_SELECTOR" //ダイアログ閉じる
//トータルコストの決定 (409.1f)
← SYS_DLG_INFO @NM="MTG_DLG_PLAY_CARD", @MSG="Total Cost: {W}"
← SYS_DLG_INFO @NM="MTG_DLG_PLAY_CARD", @MSG="Your Mana pool has {0}."
//マナプールが空だったのでマナ能力のプレイを要求。なければSYS_WAIT。(409.1g)
← SYS_DLG_POP @NM="MTG_PLAY_MANA_ABILITY", @LIST=(1,2,3,4) //@LISTはCID("Forest","Island",Swamp","Skyshroud Elf")
← SYS_DLG_INFO @NM="MTG_PLAY_MANA_ABILITY", @MSG="Cost {W} Required. Your Mana pool has {0}."
→ USR_PLAY_MANA_ABILITY @CID=4, @MODE=2 //Skyshroud Elf。クライアントが@MODEを既知だった。
//MODE=2のトリガーがさらにMODEを要求 (409.1c)
← SYS_DLG_POP @NM="MTG_DLG_SELECTOR", @MSG="Choose Target", @LIST=("Add {W}","Add {R}")
← SYS_WAIT @PID=1 //for DLG_POP @NM="MTG_DLG_SELECTOR"
→ UTL_DLG_RES @NM="MTG_DLG_SELECTOR", @RESULT=1
← SYS_DLG_CLO @NM="MTG_DLG_SELECTOR" //ダイアログ閉じる
//Skyshroud Elfのマナ能力にSYS_DLG_POP @NM="MTG_PLAY_MANA_ABILITY"の要求。
← SYS_DLG_POP @NM="MTG_PLAY_MANA_ABILITY", @CID=4, @LIST=(1,2,3,4) //@LISTは("Forest","Island",Swamp","Skyshroud Elf")
← SYS_DLG_INFO @NM="MTG_PLAY_MANA_ABILITY", @MSG="Cost {1} Required. Your Mana pool has {0}."
← SYS_WAIT @PID=1
→ USR_PLAY_MANA_ABILITY @CID=2 //Island
//Islandのマナ能力トリガーはすぐに解決される。
← SYS_MSG CHG_PROP @CID=2, @NM="Tap" @VAL=1
← SYS_DLG_INFO @NM="MTG_PLAY_MANA_ABILITY", @MSG="Cost {1} Required. Your Mana pool has {U}."
← SYS_WAIT @PID=1
// コストの支払い(409.1h)
→ UTL_PAY_COST COST=("U")
← SYS_DLG_CLO @NM="MTG_PLAY_MANA_ABILITY" //ダイアログ閉じる
hrurr:「ちゆをプリベントでプレイします。対象はワタシ。島から出したマナをスカイシュラウドエルフで白マナに変換」
neta:「はい」
hrurr:「解決します」
neta:「はい」
[T_ZONE]
PID,CID,ZN,CNM
-+-+---+-----
1,1,PLY,Forest
1,2,PLY,Island
1,3,PLY,Swamp
1,4,PLY,Skyshroud Elf
1,5,HND,Trained Armodon
1,6,HND,Healing Salve
1,7,HND,Fire Ball
====================
//Healing Salveのプレイを宣言。(409.1a)
← SYS_WAIT @PID=1
→ USR_PLAY_CARD @CID=6 //Healing Salve [@MODE=1]を省略した。
← SYS_DLG_POP @NM="MTG_DLG_PLAY_CARD", @CID=6
//MODEを省略したので割り込みPOP (409.1b)
← SYS_DLG_POP @NM="MTG_DLG_SELECTOR", @MSG="Choose one", @LIST=("Target player gains 3 life","Prevent the next 3 damage that would be dealt to target creature or player this turn.")
← SYS_WAIT @PID=1 //for DLG_POP @NM="MTG_DLG_SELECTOR"
→ UTL_DLG_RES @NM="MTG_DLG_SELECTOR", @RESULT=2
← SYS_DLG_CLO @NM="MTG_DLG_SELECTOR" //ダイアログ閉じる
//Healing SalveのMODE=2のトリガーが対象を取るので割り込みPOP (409.1c)
← SYS_DLG_POP @NM="MTG_DLG_SELECTOR", @MSG="Choose Target", @LIST=("hrurr","neta","Skyshroud Elf")
← SYS_WAIT @PID=1 //for DLG_POP @NM="MTG_DLG_SELECTOR"
→ UTL_DLG_RES @NM="MTG_DLG_SELECTOR", @RESULT=1
← SYS_DLG_CLO @NM="MTG_DLG_SELECTOR" //ダイアログ閉じる
//トータルコストの決定 (409.1f)
← SYS_DLG_INFO @NM="MTG_DLG_PLAY_CARD", @MSG="Total Cost: {W}"
← SYS_DLG_INFO @NM="MTG_DLG_PLAY_CARD", @MSG="Your Mana pool has {0}."
//マナプールが空だったのでマナ能力のプレイを要求。なければSYS_WAIT。(409.1g)
← SYS_DLG_POP @NM="MTG_PLAY_MANA_ABILITY", @LIST=(1,2,3,4) //@LISTはCID("Forest","Island",Swamp","Skyshroud Elf")
← SYS_DLG_INFO @NM="MTG_PLAY_MANA_ABILITY", @MSG="Cost {W} Required. Your Mana pool has {0}."
→ USR_PLAY_MANA_ABILITY @CID=4, @MODE=2 //Skyshroud Elf。クライアントが@MODEを既知だった。
//MODE=2のトリガーがさらにMODEを要求 (409.1c)
← SYS_DLG_POP @NM="MTG_DLG_SELECTOR", @MSG="Choose Target", @LIST=("Add {W}","Add {R}")
← SYS_WAIT @PID=1 //for DLG_POP @NM="MTG_DLG_SELECTOR"
→ UTL_DLG_RES @NM="MTG_DLG_SELECTOR", @RESULT=1
← SYS_DLG_CLO @NM="MTG_DLG_SELECTOR" //ダイアログ閉じる
//Skyshroud Elfのマナ能力にSYS_DLG_POP @NM="MTG_PLAY_MANA_ABILITY"の要求。
← SYS_DLG_POP @NM="MTG_PLAY_MANA_ABILITY", @CID=4, @LIST=(1,2,3,4) //@LISTは("Forest","Island",Swamp","Skyshroud Elf")
← SYS_DLG_INFO @NM="MTG_PLAY_MANA_ABILITY", @MSG="Cost {1} Required. Your Mana pool has {0}."
← SYS_WAIT @PID=1
→ USR_PLAY_MANA_ABILITY @CID=2 //Island
//Islandのマナ能力トリガーはすぐに解決される。
← SYS_MSG CHG_PROP @CID=2, @NM="Tap" @VAL=1
← SYS_DLG_INFO @NM="MTG_PLAY_MANA_ABILITY", @MSG="Cost {1} Required. Your Mana pool has {U}."
← SYS_WAIT @PID=1
// コストの支払い(409.1h)
→ UTL_PAY_COST COST=("U")
← SYS_DLG_CLO @NM="MTG_PLAY_MANA_ABILITY" //ダイアログ閉じる
ゴッコあそび。
2005年5月31日ただのメモ。
■シナリオ
■シナリオの概要
シナリオはセッション開始時に、システムシナリオからユーザシナリオに
コピーされ、以降セッションごとにユーザシナリオが進行する。
シナリオの進行は次のように行なわれる。
? スタート(NM = START)を実行。
? 次のシナリオを実行。
以降?をシナリオがシステムあるいはユーザが終了させるまで実行しつづける。
■シナリオの実行
シナリオ一行の実行は
開始トリガー(BGN)、実行トリガー(EXE)、終了トリガー(END)をこの順で
実行することで行なわれる。
それぞれのトリガーはタイムSTMPをキーとして持っており、もし同じ行の
シナリオに複数のトリガーが登録されている場合STMPの逆順(FILO)に実行される。
シナリオを実行中に変更したい場合、新しいトリガーを登録するだけである。
それは最新のタイムスタンプで登録される。
■例)シナリオ変更の例。
下記の例はシナリオ実行中のMTG_SENARIOの一部を表示したものである。
下記ではBGNトリガーが3つ登録されており、
シナリオは?→?→?→?→?の順にトリガーを実行しようとする。
(この例ではアクティブプレイヤーがnetaであったため、
結果として?→?→?しか実行されなかった)
?’B_DW_B’,’BGN’,’20050413000000’,’gmaster’,’MTG_SENA_B_DW_BGN’
// ドローを行なわない。
// ドローを行なうトリガーを追加する。
// BGNはこれ以降は何もしない。
?’B_DW_B’,’BGN’,’20050413010000’,’gmaster’,’MTG_SENA_B_DW_DRAW’
// ドローを行なう。
// BGNはこれ以降は何もしない。
?’B_DW_B’,’BGN’,’20050413010200’,’Fatigue’,’MTG_CNEF_Fatigue’
// アクティブプレイヤーが’neta’の場合、
// ドローをスキップし、自分自身を削除するトリガー
// (MTG_UTIL_DELETE_CNEF(’Fatigue’,@STMP)を呼び出す。
// BGNはこれ以降は何もしない。
// アクティブプレイヤーがそれ以外の場合、
// 次のBGNトリガーを実行する。
?’B_DW_B’,’EXE’,’20050413000000’,’gmaster’,’MTG_SENA_B_DW_EXE’
// 領域=Continuous Effectにぶら下がるCIDで’B_DW_B’プロパティを持つ
// トリガーを検索しPID順にスタック。StackWaitに入る。
?’B_DW_B’,’END’,’20050413000000’,’gmaster’,’MTG_SENA_B_DW_END’
// 次のシナリオ(B_DW_W)を実行する。
■シナリオ
■シナリオの概要
シナリオはセッション開始時に、システムシナリオからユーザシナリオに
コピーされ、以降セッションごとにユーザシナリオが進行する。
シナリオの進行は次のように行なわれる。
? スタート(NM = START)を実行。
? 次のシナリオを実行。
以降?をシナリオがシステムあるいはユーザが終了させるまで実行しつづける。
■シナリオの実行
シナリオ一行の実行は
開始トリガー(BGN)、実行トリガー(EXE)、終了トリガー(END)をこの順で
実行することで行なわれる。
それぞれのトリガーはタイムSTMPをキーとして持っており、もし同じ行の
シナリオに複数のトリガーが登録されている場合STMPの逆順(FILO)に実行される。
シナリオを実行中に変更したい場合、新しいトリガーを登録するだけである。
それは最新のタイムスタンプで登録される。
■例)シナリオ変更の例。
下記の例はシナリオ実行中のMTG_SENARIOの一部を表示したものである。
下記ではBGNトリガーが3つ登録されており、
シナリオは?→?→?→?→?の順にトリガーを実行しようとする。
(この例ではアクティブプレイヤーがnetaであったため、
結果として?→?→?しか実行されなかった)
?’B_DW_B’,’BGN’,’20050413000000’,’gmaster’,’MTG_SENA_B_DW_BGN’
// ドローを行なわない。
// ドローを行なうトリガーを追加する。
// BGNはこれ以降は何もしない。
?’B_DW_B’,’BGN’,’20050413010000’,’gmaster’,’MTG_SENA_B_DW_DRAW’
// ドローを行なう。
// BGNはこれ以降は何もしない。
?’B_DW_B’,’BGN’,’20050413010200’,’Fatigue’,’MTG_CNEF_Fatigue’
// アクティブプレイヤーが’neta’の場合、
// ドローをスキップし、自分自身を削除するトリガー
// (MTG_UTIL_DELETE_CNEF(’Fatigue’,@STMP)を呼び出す。
// BGNはこれ以降は何もしない。
// アクティブプレイヤーがそれ以外の場合、
// 次のBGNトリガーを実行する。
?’B_DW_B’,’EXE’,’20050413000000’,’gmaster’,’MTG_SENA_B_DW_EXE’
// 領域=Continuous Effectにぶら下がるCIDで’B_DW_B’プロパティを持つ
// トリガーを検索しPID順にスタック。StackWaitに入る。
?’B_DW_B’,’END’,’20050413000000’,’gmaster’,’MTG_SENA_B_DW_END’
// 次のシナリオ(B_DW_W)を実行する。
都合によりタイトル変更w(にんげんきょうき)
2005年5月28日 日常意外といわれますが学生の頃空手をやってました。
といっても10年以上昔のことです。
ちなみに空手なんかの格闘技は黒帯貰うと警察なんかに
ブラックリスト登録登録してもらえるそうです。
曰わく、
空手は鍛えることで己の肉体を武器と化さしめる。
よって凶器を所持しているのとおなじである。
さて先日会社帰りにゲームセンターに寄ったらパンチ力とキック力を測れる
体感マシンをそれぞれ発見。
ネクタイ姿だったですがおもわずチャレンジ。
・・・ええ、少しはかっこいい成績がでると期待してました。
パンチ:195kg
キック:345kg
・・・・・・orz
凶器でも何でもない値ですな(泣。
時間は残酷だw
といっても10年以上昔のことです。
ちなみに空手なんかの格闘技は黒帯貰うと警察なんかに
ブラックリスト登録登録してもらえるそうです。
曰わく、
空手は鍛えることで己の肉体を武器と化さしめる。
よって凶器を所持しているのとおなじである。
さて先日会社帰りにゲームセンターに寄ったらパンチ力とキック力を測れる
体感マシンをそれぞれ発見。
ネクタイ姿だったですがおもわずチャレンジ。
・・・ええ、少しはかっこいい成績がでると期待してました。
パンチ:195kg
キック:345kg
・・・・・・orz
凶器でも何でもない値ですな(泣。
時間は残酷だw
こだわりのカードベスト10。
2005年5月27日■業務連絡
>29参加予定者様
よく見たら日曜日だったのでお休み予定。
土日は大泉か吉祥寺にいる予定。
■こだわりのカードベスト10
遅ればせながら便乗して書いてみた。
1.Unearth(UL)
コモンデッキにハマるきっかけになったカード。
Legacyが発売された直後から今に至るまでずっと使いつづけている
コモン4CGデッキに今も4積みで入ってます。
「Yavimaya Grangerエコー踏み倒してドロー。Unearth。」
いつまでたっても飽きずに同じ事をやってます。
2.Natural Spring(TE)
このカードもコモン4CGデッキから。
初めてショップ大会(コモンデッキ大会)で優勝したデッキのキーカード。
赤単スライ最強のメタで3枚ずつのNatural Spring+Evincar’s Justiceは神でした。
今ではJoyous Respiteがこの位置を占めています。
3.Cuombajj Witches(CH)
OD〜ONSにかけてMTGを引退していた私が2CHDを通じて復帰した際使った
黒単黒死病デッキのキーカード。
序盤ブロッカーであり、除去であり、本体火力でありと、縦横無尽に活躍します。
4.Amnesia(DK)
誰もが目を疑う怪しさ満点のカード。
青シンボル3つなのにハンデス。しかもほぼ全部捨てろと書いてます。イラストもキテる。
初めて使ったのは池袋2CHDのType-A(2004年)。
「Arrogant WurmをMana Drainでカウンター。アップキープに無色5マナ。Amnesia」
アプサラスはいい奴です。
5.Maze of Ith(DK)
戦闘無効化を対象のアンタップによって行なう珍しいカード。
コモンレアリティのカードの中では最強カードの一つでしょう。
昔はType-1制限カードだったそうでルール改正後も攻守ともに使える面白いカードです。
6.Smokestack(US)
松尾吾郎氏の黒単Umblicus-SmokeStackをコピーしたのがマジックを初めて6ヵ月目くらい。
このデッキを境にいわゆる構築レベルのデッキというものを知ったと記憶しています。
現在ではルーリングの関係弱いデッキになっちゃってますが
当時は胡散臭さ満点の面白いデッキでした。
7.Repulse(IV)
それまでパーミッションデッキをほとんど使わなかった私が青醒めたきっかけのカード。
6E-MM-IVのTURBO XEROXというデッキから。
8.Yavimaya Elder(UD)
よく使う割に相性がよくないカードとして。
「Elderサクって土地2枚、渾身のドロー!! 土 地 ぃ ぃ ぃ っ!!(泣」
70〜80%の確率で土地しかドロー出来ません。
9.Ancestral Recall(UN)
えーっと・・・。
なぜか4枚持ってます。あとサファイアも。
P9の中でも最も頭の悪いカードだと思います。
10.Reversal of Fortune(FD)
なぜか尋常でない枚数を所有しています。
このカードのコレクションにまつわるシャレにならない事件。
人通りがそれなりにある街中の商店街。時刻は夜。
私を目撃した高校生男の子二人が大声で私を呼び止めたときの一言。
「あ、○○さんだ!、 お っ ぱ い ね ー ち ゃ ん あ り ま す よ〜!!」
き、客引きじゃあるまいし勘弁してくれ・・・(痛
こんな感じで。
>29参加予定者様
よく見たら日曜日だったのでお休み予定。
土日は大泉か吉祥寺にいる予定。
■こだわりのカードベスト10
遅ればせながら便乗して書いてみた。
1.Unearth(UL)
コモンデッキにハマるきっかけになったカード。
Legacyが発売された直後から今に至るまでずっと使いつづけている
コモン4CGデッキに今も4積みで入ってます。
「Yavimaya Grangerエコー踏み倒してドロー。Unearth。」
いつまでたっても飽きずに同じ事をやってます。
2.Natural Spring(TE)
このカードもコモン4CGデッキから。
初めてショップ大会(コモンデッキ大会)で優勝したデッキのキーカード。
赤単スライ最強のメタで3枚ずつのNatural Spring+Evincar’s Justiceは神でした。
今ではJoyous Respiteがこの位置を占めています。
3.Cuombajj Witches(CH)
OD〜ONSにかけてMTGを引退していた私が2CHDを通じて復帰した際使った
黒単黒死病デッキのキーカード。
序盤ブロッカーであり、除去であり、本体火力でありと、縦横無尽に活躍します。
4.Amnesia(DK)
誰もが目を疑う怪しさ満点のカード。
青シンボル3つなのにハンデス。しかもほぼ全部捨てろと書いてます。イラストもキテる。
初めて使ったのは池袋2CHDのType-A(2004年)。
「Arrogant WurmをMana Drainでカウンター。アップキープに無色5マナ。Amnesia」
アプサラスはいい奴です。
5.Maze of Ith(DK)
戦闘無効化を対象のアンタップによって行なう珍しいカード。
コモンレアリティのカードの中では最強カードの一つでしょう。
昔はType-1制限カードだったそうでルール改正後も攻守ともに使える面白いカードです。
6.Smokestack(US)
松尾吾郎氏の黒単Umblicus-SmokeStackをコピーしたのがマジックを初めて6ヵ月目くらい。
このデッキを境にいわゆる構築レベルのデッキというものを知ったと記憶しています。
現在ではルーリングの関係弱いデッキになっちゃってますが
当時は胡散臭さ満点の面白いデッキでした。
7.Repulse(IV)
それまでパーミッションデッキをほとんど使わなかった私が青醒めたきっかけのカード。
6E-MM-IVのTURBO XEROXというデッキから。
8.Yavimaya Elder(UD)
よく使う割に相性がよくないカードとして。
「Elderサクって土地2枚、渾身のドロー!! 土 地 ぃ ぃ ぃ っ!!(泣」
70〜80%の確率で土地しかドロー出来ません。
9.Ancestral Recall(UN)
えーっと・・・。
なぜか4枚持ってます。あとサファイアも。
P9の中でも最も頭の悪いカードだと思います。
10.Reversal of Fortune(FD)
なぜか尋常でない枚数を所有しています。
このカードのコレクションにまつわるシャレにならない事件。
人通りがそれなりにある街中の商店街。時刻は夜。
私を目撃した高校生男の子二人が大声で私を呼び止めたときの一言。
「あ、○○さんだ!、 お っ ぱ い ね ー ち ゃ ん あ り ま す よ〜!!」
き、客引きじゃあるまいし勘弁してくれ・・・(痛
こんな感じで。
サービスの提供方法に関する調査。
2005年5月24日「ある噂」に関する調査ですが、自分なりに納得いく結論を得て調査終了。
自分が今後自信を持って活動するのに十分な運用知識が得られたと思います。
今回の調査に関しては、友人・専門家・会社の先輩・専門店の方、等々
多くの方々のご協力を頂きました。
本当にありがとうございました。
さて、結論ですが現在この場で発表できることはありません。
デリケートで複雑な内容なので、専門家でも公式筋でもない私が
いいかげんな文章で発表するべき内容ではないと判断したからです。
ご興味をもっていただいていた方には申しわけありませんが、この件に
関しては専門家や公式筋に見解を求めて頂きますようお願い申し上げます。
(何が出てくるかはお楽しみということで)
自分が今後自信を持って活動するのに十分な運用知識が得られたと思います。
今回の調査に関しては、友人・専門家・会社の先輩・専門店の方、等々
多くの方々のご協力を頂きました。
本当にありがとうございました。
さて、結論ですが現在この場で発表できることはありません。
デリケートで複雑な内容なので、専門家でも公式筋でもない私が
いいかげんな文章で発表するべき内容ではないと判断したからです。
ご興味をもっていただいていた方には申しわけありませんが、この件に
関しては専門家や公式筋に見解を求めて頂きますようお願い申し上げます。
(何が出てくるかはお楽しみということで)
確信犯
2005年5月23日関東の2chdとよばれるコミュニティには「ジロリアン」と呼ばれる人が
何人かいます。
ジロリアンとは「ラーメン二郎」、あるいは「二郎系」とよばれるラーメンを好んで
食する人たちのこと。
そしてその「二郎」とよばれるラーメンは・・・
http://jiro-tan.seesaa.net/image/bukuro-jirou.JPG
おおよそこんなものが出てくると思えばいいです。
普通盛りで。
麺の量は普通で300〜400gくらい。大盛りだと500〜600g。
通常のラーメン屋の普通盛が130〜150gくらいですからその量たるや
中途半端ではありません。
しかも脂ぎっとり、化学調味料でこってりで甘みの強いスープ。
とにかく初心者がいきなり大盛りにチャレンジして太刀打ちできる
ラーメンでないのは断言できると思います。
もっと悪いことはこの量の食品が並盛り700円、大盛り800円で
食べられるという異常なコストパフォーマンス。
普通、ほかの店の大盛り以上の量がこの値段で出てくるなんて想像しません。
で、初めての人が大盛りを頼むと常識はずれの量に驚愕してしまうわけです。
「二郎はラーメンではない。二郎という食べ物だ」ということ、
「ジロリアンの常識は常人のそれと違う」ということは生きていく上で
覚えておいて損をしません(???)。
ちなみに私は以前消化器を悪くしてることもあってジロリアンは卒業しています。
今から考えるとなんであんなものが体に入ったのか想像もつきません。
〜〜〜〜〜〜〜〜
さて、今日のプレリに名を借りたOFFの帰り。
今日は大阪からnetherさんが来てくれています。
その帰り。ネタ蒔き、巴は夕飯を二郎にしようと激しく主張。
netherに二郎の洗礼を味あわせてやるんだ、と顔に書いてあります。
「二郎大盛りでスープ以外を食べ切れたらおごる」とか誘いつつ
「おおいよ」とか「半端じゃないから」とか適当に脅しますがもちろん
彼に大盛り食わせる気満々。
でも「朝から食ってねー」というnetherは「スープ以外を完食したらおごる」
の部分しか聞こえなかったようで、うっかりその賭け乗ってしまいました。
お店に向かう途中、私も「二郎の呪文は『ヤサイマシマシ』って言っとけば
いいから」とかすげー無責任(危険呪文です)な知識を教えてみたりしたり
で人のことはぜんぜん言えません。
それでも、大阪から来た青年がどんな顔をしてこれを食するのか興味深々。
しかし・・・現実として上のラーメン2杯分の量がドカッと出てくるわけです。
カウンターに置かれたバレーボールと見間違うサイズの物体。
初対面のnether、絶句。
「想像してた大盛りとちがう!!!」そんな顔。
結果はいわずもがな。
半分も食べられないまま_| ̄|●←こんなんになってました。
おそらく本人のBlogでかかれることと思いますが・・・二度とさそえねーなw
何人かいます。
ジロリアンとは「ラーメン二郎」、あるいは「二郎系」とよばれるラーメンを好んで
食する人たちのこと。
そしてその「二郎」とよばれるラーメンは・・・
http://jiro-tan.seesaa.net/image/bukuro-jirou.JPG
おおよそこんなものが出てくると思えばいいです。
普通盛りで。
麺の量は普通で300〜400gくらい。大盛りだと500〜600g。
通常のラーメン屋の普通盛が130〜150gくらいですからその量たるや
中途半端ではありません。
しかも脂ぎっとり、化学調味料でこってりで甘みの強いスープ。
とにかく初心者がいきなり大盛りにチャレンジして太刀打ちできる
ラーメンでないのは断言できると思います。
もっと悪いことはこの量の食品が並盛り700円、大盛り800円で
食べられるという異常なコストパフォーマンス。
普通、ほかの店の大盛り以上の量がこの値段で出てくるなんて想像しません。
で、初めての人が大盛りを頼むと常識はずれの量に驚愕してしまうわけです。
「二郎はラーメンではない。二郎という食べ物だ」ということ、
「ジロリアンの常識は常人のそれと違う」ということは生きていく上で
覚えておいて損をしません(???)。
ちなみに私は以前消化器を悪くしてることもあってジロリアンは卒業しています。
今から考えるとなんであんなものが体に入ったのか想像もつきません。
〜〜〜〜〜〜〜〜
さて、今日のプレリに名を借りたOFFの帰り。
今日は大阪からnetherさんが来てくれています。
その帰り。ネタ蒔き、巴は夕飯を二郎にしようと激しく主張。
netherに二郎の洗礼を味あわせてやるんだ、と顔に書いてあります。
「二郎大盛りでスープ以外を食べ切れたらおごる」とか誘いつつ
「おおいよ」とか「半端じゃないから」とか適当に脅しますがもちろん
彼に大盛り食わせる気満々。
でも「朝から食ってねー」というnetherは「スープ以外を完食したらおごる」
の部分しか聞こえなかったようで、うっかりその賭け乗ってしまいました。
お店に向かう途中、私も「二郎の呪文は『ヤサイマシマシ』って言っとけば
いいから」とかすげー無責任(危険呪文です)な知識を教えてみたりしたり
で人のことはぜんぜん言えません。
それでも、大阪から来た青年がどんな顔をしてこれを食するのか興味深々。
しかし・・・現実として上のラーメン2杯分の量がドカッと出てくるわけです。
カウンターに置かれたバレーボールと見間違うサイズの物体。
初対面のnether、絶句。
「想像してた大盛りとちがう!!!」そんな顔。
結果はいわずもがな。
半分も食べられないまま_| ̄|●←こんなんになってました。
おそらく本人のBlogでかかれることと思いますが・・・二度とさそえねーなw