[Statedef 170099];MUGEN ;■ カードデッキのCNS理論 byADI Ver0.95くらい? ;  5:30 2011/04/17 構想を思いつく ;  9:31 2011/04/17 大体書き終わり ;略 ; 12:21 2011/04/21 特定の枚数分減らす、という処理を追加。奇しくも-40でも同じようになる感じだけど処理は別。 ; 14:26 2011/04/21 説明だとか追加 ; ;現在の記述では本体のVar(40)〜var(47)にカード情報を代入してます。 ; なので次のラウンドへ持ち越すことができます。 ;使用ステート番号は170000〜170099(一応) 使用Varは上記の通り初期設定(上限40枚)ではVar(40)〜Var(47)。 ; 使い方次第では170999まで処理に使用可能。 ; ;このシステムで出来ること ; .最大40種類のカードで最大40枚のシャッフルされたデッキを作ることができる。 ; .デッキにはカードが40枚まで並べられており一枚ずつ使っていくことができる。 ; ;このシステムの利点 ; .Randomを十個重ねてその順序でデッキを整列させているのでカードに依る偏りが少ない。再シャッフルではrandom百個で再整列。 ;   ※全ての可能性が平等。カードが固まる程度よくあります。単純に〇〇のカードは後ろにばっかというのが少ないはず。 ; .本体側のVarである程度の制御が可能になっている。基本的にはカードを引いていけばいいだけ。 ; .本体側で使用するVarは8つ(20枚デッキなら4つ)で済んでいる。またそれらからデッキのシステム操作が可能。 ; .一応それぞれの枚数も本体から確認できます。 ; ;このシステムの欠点 ; .手札は本体で管理した方が安全=手札分更に本体のVarが必要 ; .他にもなんかある気がする。 ; ;可能なシステム操作(使用する本体のVarの分だけ、1Fで連続した操作ができます。) ;「指定枚数のカードをデッキの上から除去」「特定の種類のカードを指定枚数除去」 ;「一番前のカードを一番後ろに」「現在のデッキを再シャッフル」「デッキを空にする」 ;「デッキ再生成」「特定の種類のカードをデッキの上や下に持って行ったり追加したり」 ;「指定したデッキでデッキ再生成」「カードデッキヘルパーの消去」 ;-3ステートの上の方へ追加する [State -3,Card Deck Helper];カードデッキヘルパー射出 Type = Helper Trigger1 = RoundState = 2 && !IsHelper Trigger1 = !NumHelper(170000) ;射出制限 ID = 170000 ;ヘルパーのID Pos = 0,-10000 StateNo = 170000 ; OwnPal = 1 Size.XScale = 0 Size.YScale = 0 SuperMoveTime = 999999999 ;SuperPause中に動ける時間 PauseMoveTime = 999999999 ;Pause中に動ける時間 ;引き継ぎを使う場合、CNSのIntPersistIndexを40以下にすること。 ;■■■カードの参照方法 ;NumHelper(170000) ;Helper(170000),Fvar(0) ;1枚目を確認 ;Helper(170000),Fvar(1) ;2枚目を確認 ;Helper(170000),Fvar(2) ;3枚目を確認〜n枚目=Helper(170000),Fvar(n-1)で参照できます。 ; またデッキの〜枚目以外にも ;Helper(170000),Var(xx)でxx番号の種類の残り枚数を参照できます。(※Helper内部では参照不可) ;Helper(170000),Var(56)で現在のデッキ枚数。 ;Helper(170000),Var(57)で設定されたカードの枚数自体を確認できます。(ほぼ設定の確認用) ;※手札は本体側のVarで別途管理したほうが処理的にも便利です。 ;※本体側のn個のVarに代入して、カードをn枚除去する命令をすればいいんです。 ;×本体Varからデッキを確認する場合(システム操作的に非推奨。特にVar(40)での確認はVar(40)>=0も確認すること) ;( Var(40)&63 ) ;1枚目を確認(Helper(170000),Fvar(0)) ;( (Var(40)&4032)/64 ) ;2枚目を確認(Helper(170000),Fvar(1)) ;( (Var(40)&258048)/4096 ) ;3枚目を確認 ;( (Var(40)&16515072)/262144 ) ;4枚目を確認 ;( (Var(40)&1056964608)/16777216 ) ;5枚目を確認 ;( Var(41)&63 ) ;6枚目を確認(bitの桁数の都合上5個ずつでVarを分けている。) ;40- 1~ 5 ;41- 6~10 ;42-11~15 ;43-16~20 ;44-21~25 ;45-26~30 ;46-31~35 ;47-36~40 ;×本体からのカード操作(不具合回避のため非推奨、システム操作を使いましょう) ;Var(40):=(Var(40)|63) で一枚目消費(※次のカードが1枚目へ来るまでには1F掛かる。) ;Var(40):=(Var(40)|4032) で二枚目消費 ;Var(47):=( (Var(47)|1056964608)-1056964608 )+( xx * 16777216 );40枚目をxxに書き換え ;(書き換えは空きならカードの追加、空きでないなら上書きになる。ただカードの上限数が40未満の場合はその場所に合わせる必要があるかと) ; ;■■■本体からのシステム操作 ※システム操作が行われる場合、本体からのカード操作は無視されます。システム操作優先 ; 本体側で使用しているVarに、マイナス数値を代入することでこちら側のシステムを操作できます。 ;Var(40):=-zynnxx ;種類xx番のカードをnn枚、yで指定した方法でzの状態にする。主にカード追加用、詳しい説明は下記参照。 ;Var(40):= -nxx ;種類xx番のカードをn枚消去する。 ;Var(40):= -n ;デッキの上からカードをn枚除去する。 ;Var(40):= -40 ;デッキを空にする。 ;Var(40):= -50 ;現在のデッキをシャッフルする。 ;Var(40):= -51 ;一番上のカードを一番下に。 ;Var(40):= -99 ;カード設定の読み込み直し。 ; ; とても特殊な処理 ;Var(40):=-999999999 ;ヘルパー消滅 -に9が9個で、一度ヘルパーを消します。不具合回避で本体のVar(40)を0にします。 ;Var(40):= -10000xx ;デッキ再構成 xx番のデッキ設定でデッキを再構成します。システム番号を入れると不正規な操作で不具合が起きます。 ; ( AIなどで別のデッキを読み込ませたい場合とか、選択できるようにするとか ) ; ; カード追加の設定方法とか処理とか ;Var(40):= -zynnxx ;←こちらの記述方法 ; > z=無し(0),デッキの一番上へ z=1,デッキの一番下へ z=2,追加したあとデッキをシャッフル ; > y=1,デッキにあるカードだけを操作 y=2,デッキの空きに新しく追加 y=3,デッキの後ろへ上書き(空きが十分なら2と同じ) ; > nn=枚数 xx=種類 nn枚にy=1とy=2はデッキのカードや空きが足りない場合、ある分だけ処理をします。 ;  > -20203 ならデッキの一番上(0)に、デッキの空き(2)に、2枚まで3番のカードを追加します。 ;  >-110102 ならデッキの一番下(1)に、デッキにある(1)、1枚の2番のカードを追加する。 ;  >-230530 なら追加後デッキをシャッフルする指定(2)で、デッキの一番後ろ(3)へ、5枚の30番のカードを上書きする。 ;   >( 上書きは空きがあるなら単なる追加、無いなら一番後ろだったカードを変更する、というもの ) ; >特定のカードを差し替える、という処理は無い。 ; >デッキにあるカードが足りないなら空いてるところに〜という一括処理も無い。 ;  >種類の数を調べて、それに合わせてカードの枚数を追加する、という方法も無くはない。(-zy00xx + (入れる枚数)*-100) ; >カードを引いて本体の別のVarで管理していたいわゆる手札をデッキに戻してシャッフルしたい、という場合は、 ;Var(40):=-2301xx (デッキの後ろへxx番を1枚上書きしてシャッフル)などを手札の枚数分繰り返すこと。 ; ;■システム操作の連続処理 ; 二つ以上同じフレームで処理を連続して行わせたい場合、 ;  Var(40)に一回目の命令を、Var(41)に二回目の命令を代入することで、 ;  Var(40)の命令を終えてすぐVar(41)の処理を行います。 ; 連続して行える命令は本体で使用しているVar(デッキの上限枚数分/5)の数まで、40枚ならVar(47)の8回までです。 ; ; 例として>デッキにあるカード足りないなら空いているところに〜の一括処理 というのも ;Var(40):=-5xx でxxを(5枚まで)除外し、 ;Var(41):=-2205xxで空きに5枚までxxを追加しシャッフルする、という処理を一度にできます。 ; ; 例:デッキをリセットし、21番を10枚、22番を10枚、23番を20枚追加する。 ;Var(40):=-40 ;Var(41):=-231021 ;Var(42):=-231022 ;Var(43):=-232023 ; ;■■■注意点とか ; 本体からのカード操作や、システム操作の反映には1F掛かります。 ; ; 40枚から20枚だけ〜などは、本体で管理する方がいいかもしれません。Helper(170000),Var(56)で確認できるものの。 ;( 再シャッフルではデッキ内全てのカードをシャッフルしますが、見えてなければ変りないかと思いますし。 ) ; ;ちなみヘルパーのデバッグ表示で、デッキ内の構成を見ることが可能。 ;(ただし表示桁数の関係上「1xxyyzzvv,1xxyyzzvv」という形で区切られています。) ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ [Statedef 170000];設定ステート Type = A MoveType = I Physics = N Ctrl = 0 Anim = 0 ;判定のないやつで SprPriority = -5 [State 170000] Type = Null ;■■■■■■■■■■ 名前:簡単な説明 Trigger1 =1 || Fvar(0) := 1 ;0〜5まで ;■■■■■■■■■■ : Trigger1 =0 && Fvar(1) := 5 ;0〜5まで ;■■■■■■■■■■ : Trigger2 =0 && Fvar(2) := 5 ;■■■■■■■■■■ : Trigger3 =0 && Fvar(3) := 5 ;■■■■■■■■■■ : Trigger4 =0 && Fvar(4) := 5 ;■■■■■■■■■■ : Trigger5 =0 && Fvar(5) := 5 ;■■■■■■■■■■ : Trigger6 =0 && Fvar(6) := 5 ;■■■■■■■■■■ : Trigger7 =0 && Fvar(7) := 5 ;■■■■■■■■■■ : Trigger8 =0 && Fvar(8) := 4 ;■■■■■■■■■■ : Trigger9 =0 && Fvar(9) := 0 ;■■■■■■■■■■ : Trigger10=0 && Fvar(10):= 0 ;■■■■■■■■■■ : Trigger11=0 && Fvar(11):= 0 ;■■■■■■■■■■ : Trigger12=0 && Fvar(12):= 0 ;■■■■■■■■■■ : Trigger13=0 && Fvar(13):= 0 ;■■■■■■■■■■ : Trigger14=0 && Fvar(14):= 0 ;■■■■■■■■■■ : Trigger15=0 && Fvar(15):= 0 ;■■■■■■■■■■ : Trigger16=0 && Fvar(16):= 0 ;■■■■■■■■■■ : Trigger17=0 && Fvar(17):= 0 ;■■■■■■■■■■ : Trigger18=0 && Fvar(18):= 0 ;■■■■■■■■■■ : Trigger19=0 && Fvar(19):= 0 ;■■■■■■■■■■ : Trigger20=0 && Fvar(20):= 0 ;■■■■■■■■■■ : Trigger20=0 && Fvar(20):= 0 ;■■■■■■■■■■ : Trigger21=0 && Fvar(21):= 0 ;■■■■■■■■■■ : Trigger22=0 && Fvar(22):= 0 ;■■■■■■■■■■ : Trigger23=0 && Fvar(23):= 0 ;■■■■■■■■■■ : Trigger24=0 && Fvar(24):= 0 ;■■■■■■■■■■ : Trigger25=0 && Fvar(25):= 0 ;■■■■■■■■■■ : Trigger26=0 && Fvar(26):= 0 ;■■■■■■■■■■ : Trigger27=0 && Fvar(27):= 0 ;■■■■■■■■■■ : Trigger28=0 && Fvar(28):= 0 ;■■■■■■■■■■ : Trigger29=0 && Fvar(29):= 0 ;■■■■■■■■■■ : Trigger30=0 && Fvar(30):= 0 ;■■■■■■■■■■ : Trigger30=0 && Fvar(30):= 0 ;■■■■■■■■■■ : Trigger31=0 && Fvar(31):= 0 ;■■■■■■■■■■ : Trigger32=0 && Fvar(32):= 0 ;■■■■■■■■■■ : Trigger33=0 && Fvar(33):= 0 ;■■■■■■■■■■ : Trigger34=0 && Fvar(34):= 0 ;■■■■■■■■■■ : Trigger35=0 && Fvar(35):= 0 ;■■■■■■■■■■ : Trigger36=0 && Fvar(36):= 0 ;■■■■■■■■■■ : Trigger37=0 && Fvar(37):= 0 ;■■■■■■■■■■ : Trigger38=0 && Fvar(38):= 0 ;■■■■■■■■■■ : Trigger39=0 && Fvar(39):= 0 ; Trigger40 = Var(53) :=40 ;デッキ上限値設定 上限40枚(Fvarの数) ; 設定したカードの数が足りなくても、多すぎても一応動きはします。 ;( 足りない場合は足りない分空きがある状態。多すぎる場合は設定の上側から上限枚数分。 ) ;とりあえず全40種類まで。合計枚数も40枚とする。 ;それぞれのFvar番号が、種類数値に。40番以上は空として扱う。 ;あと、内部処理的に合計数は5の倍数が望ましいかも。 ;あー、あと同時処理の仕様的にデッキが少なくても手札の最大枚数*5くらいに設定しておく方がいいかも。 ;( 複数命令の時に読み込むVarの数がCeil(デッキ上限値/8)の数のため。 ) ;あと追加処理とかを安全に行いたいなら、40枚未満でもある程度余裕を持って設定する方がいいかも。 ;※Fvar(xx)は種類の代入をした後全て別の処理に使っています。 ;※どうしても処理に使いたい場合別のHelperを生成して、 ; ↓のChangeStateに!Ishelper(*種類数確認Helper*)と追加したりして管理。 [State 170000] Type = Null Trigger1 =1||Var(58):= 0 Trigger1 =1||Var(57):= 0 ;設定枚数の認識用。 Trigger1 =1||Var(57):= Var(57) + Floor(Fvar( 0)+Fvar( 1)+Fvar( 2)+Fvar( 3)+Fvar( 4)+Fvar( 5)+Fvar( 6)+Fvar( 7)+Fvar( 8)+Fvar( 9)); Trigger1 =1||Var(57):= Var(57) + Floor(Fvar(10)+Fvar(11)+Fvar(12)+Fvar(13)+Fvar(14)+Fvar(15)+Fvar(16)+Fvar(17)+Fvar(18)+Fvar(19)); Trigger1 =1||Var(57):= Var(57) + Floor(Fvar(20)+Fvar(21)+Fvar(22)+Fvar(23)+Fvar(24)+Fvar(25)+Fvar(26)+Fvar(27)+Fvar(28)+Fvar(29)); Trigger1 =1||Var(57):= Var(57) + Floor(Fvar(30)+Fvar(31)+Fvar(32)+Fvar(33)+Fvar(34)+Fvar(35)+Fvar(36)+Fvar(37)+Fvar(38)+Fvar(39)); ;泥臭いけどコレが一番確実なんですよ。 [State 170000] Type = ChangeState Trigger1 = Parent,Var(40) != 0 && Var(50) != 99;既に代入がある。 Trigger1 = Var(50) := 9 ; Value = 170009 ; ;使う本体のVarは、内部処理でも設定してるので注意。 [State 170000] Type = ChangeState Trigger1 = 1 Value = 170001 ;デッキ制作ステートへ ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ [Statedef 170001];デッキ制作ステート1・種類の代入 Type = A [State 170001];前処理 Type = VarRangeSet TriggerAll=Var(50) = 0 || Var(50) = 99 || Var(50) = 50;リセット前 Trigger1=0&& Var(51) := 0 ;Varの場所管理 Trigger2=0&& Var(52) := 0 ;種類の管理 Trigger3=0&& Var(53) := Var(53) ;デッキ上限値 Trigger4=0&& Var(54) := 0 Trigger5=0&& Var(55) := 0 Trigger6= Var(50) := 1 ;リセットフラグ。 Value = 40 ;Var(xx) = 40(Var(xx)>39)が存在しないという変数に First = 0 Last = 39 [State 170001];Var(52)種類目 Type = ChangeState TriggerAll = Fvar( Var(52) ) >= 1 ;1枚以上 Trigger1 = 1 || Var( Var(51) ) := Var(52) Trigger1 = 1 || Var( Var(51) ) := var( Var(51) ) +( (Random+Random+Random+Random+Random+Random+Random+Random+Random+Random)*100 ) Trigger1 = Var(51) := Var(51) + 1 Trigger1 = Var(51) >= Var(53) ;上限ならChangeState処理 Trigger2 = Fvar( Var(52) ) >= 2 ;2枚以上 Trigger2 = 1 || Var( Var(51) ) := Var(52) Trigger2 = 1 || Var( Var(51) ) := var( Var(51) ) +( (Random+Random+Random+Random+Random+Random+Random+Random+Random+Random)*100 ) Trigger2 = Var(51) := Var(51) + 1 Trigger2 = Var(51) >= Var(53) ;上限ならChangeState処理 Trigger3 = Fvar( Var(52) ) >= 3 ;3枚以上 Trigger3 = 1 || Var( Var(51) ) := Var(52) Trigger3 = 1 || Var( Var(51) ) := var( Var(51) ) +( (Random+Random+Random+Random+Random+Random+Random+Random+Random+Random)*100 ) Trigger3 = Var(51) := Var(51) + 1 Trigger3 = Var(51) >= Var(53) ;上限ならChangeState処理 Trigger4 = Fvar( Var(52) ) >= 4 ;4枚以上 Trigger4 = 1 || Var( Var(51) ) := Var(52) Trigger4 = 1 || Var( Var(51) ) := var( Var(51) ) +( (Random+Random+Random+Random+Random+Random+Random+Random+Random+Random)*100 ) Trigger4 = Var(51) := Var(51) + 1 Trigger4 = Var(51) >= Var(53) ;上限ならChangeState処理 Trigger5 = Fvar( Var(52) ) >= 5 ;5枚以上 Trigger5 = 1 || Var( Var(51) ) := Var(52) Trigger5 = 1 || Var( Var(51) ) := var( Var(51) ) +( (Random+Random+Random+Random+Random+Random+Random+Random+Random+Random)*100 ) Trigger5 = Var(51) := Var(51) + 1 Trigger5 = Var(51) >= Var(53) ;上限ならChangeState処理 Value = 170002 ;1種類につきの枚数を増やすならTrigger5をコピペして増やす。減らすなら削る。 [State 170001] Type = ChangeState Trigger1 =1 || Var(52) := Var(52) + 1 ;次の種類へ Trigger1 = Var(52) < 40 Value = 170001 ;ループ処理。ループは2500回しないとエラー出さないはず。 [State 170001] Type = ChangeState Trigger1 = Var(52) >=40 ;種類が上限に達している Trigger2 = Var(51) >=Var(53) ;デッキ枚数が上限に達している。 Value = 170002 ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ [Statedef 170002];デッキ制作ステート2・順番の整列 Type = A [State 170002];前処理 Type = VarRangeSet TriggerAll = Var(50) =1 || Var(50) = 99 ;リセット前 Trigger1=0&& Var(51) := 0 ;Var場所管理 Trigger2=0&& Var(52) := 0 ;FVar場所管理 Trigger3=0&& Var(53) := Var(53) ;デッキ枚数 Trigger4=0&& Var(54) := 0 ;最大値管理 Trigger5=0&& Var(55) := 0 ;最大値Var記録 Trigger6= Var(50) := 2 ;リセットフラグ。 fvalue = 40 ;fvar(xx) = 40(fvar(xx)>39)が存在しないという変数に First = 0 Last = 39 [State 170002];空の場合の処理 Type = Null Trigger1 =( Var( Var(51) ) % 100 ) >= 40 ;空の場合 Trigger1 = 1 || var( Var(51) ) := 40 ;空き。 ;(Var( Var(51) )%100) ;Random,整列数値部分を削除 ;これで種類「空き」が、後ろ側へ行く。 [State 170002];ループを力技で再現。 Type = Null TriggerAll =1||(var(54) := Var( Var(51) ) )||( var(55) := Var(51) ) ;比較する最初の値を代入 Trigger1 =1||Var(51) := Var(51) + 1 Trigger1 = Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger1 =0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger2 =1||Var(51) := Var(51) + 1 Trigger2 = Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger2 =0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger3 =1||Var(51) := Var(51) + 1 Trigger3 = Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger3 =0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger4 =1||Var(51) := Var(51) + 1 Trigger4 = Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger4 =0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger5 =1||Var(51) := Var(51) + 1 Trigger5 = Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger5 =0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger6 =1||Var(51) := Var(51) + 1 Trigger6 = Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger6 =0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger7 =1||Var(51) := Var(51) + 1 Trigger7 = Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger7 =0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger8 =1||Var(51) := Var(51) + 1 Trigger8 = Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger8 =0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger9 =1||Var(51) := Var(51) + 1 Trigger9 = Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger9 =0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger10=1||Var(51) := Var(51) + 1 Trigger10= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger10=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger11=1||Var(51) := Var(51) + 1 Trigger11= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger11=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger12=1||Var(51) := Var(51) + 1 Trigger12= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger12=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger13=1||Var(51) := Var(51) + 1 Trigger13= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger13=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger14=1||Var(51) := Var(51) + 1 Trigger14= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger14=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger15=1||Var(51) := Var(51) + 1 Trigger15= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger15=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger16=1||Var(51) := Var(51) + 1 Trigger16= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger16=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger17=1||Var(51) := Var(51) + 1 Trigger17= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger17=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger18=1||Var(51) := Var(51) + 1 Trigger18= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger18=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger19=1||Var(51) := Var(51) + 1 Trigger19= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger19=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger20=1||Var(51) := Var(51) + 1 Trigger20= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger20=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger21=1||Var(51) := Var(51) + 1 Trigger21= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger21=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger22=1||Var(51) := Var(51) + 1 Trigger22= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger22=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger23=1||Var(51) := Var(51) + 1 Trigger23= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger23=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger24=1||Var(51) := Var(51) + 1 Trigger24= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger24=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger25=1||Var(51) := Var(51) + 1 Trigger25= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger25=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger26=1||Var(51) := Var(51) + 1 Trigger26= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger26=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger27=1||Var(51) := Var(51) + 1 Trigger27= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger27=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger28=1||Var(51) := Var(51) + 1 Trigger28= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger28=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger29=1||Var(51) := Var(51) + 1 Trigger29= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger29=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger30=1||Var(51) := Var(51) + 1 Trigger30= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger30=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger31=1||Var(51) := Var(51) + 1 Trigger31= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger31=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger32=1||Var(51) := Var(51) + 1 Trigger32= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger32=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger33=1||Var(51) := Var(51) + 1 Trigger33= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger33=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger34=1||Var(51) := Var(51) + 1 Trigger34= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger34=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger35=1||Var(51) := Var(51) + 1 Trigger35= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger35=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger36=1||Var(51) := Var(51) + 1 Trigger36= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger36=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger37=1||Var(51) := Var(51) + 1 Trigger37= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger37=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger38=1||Var(51) := Var(51) + 1 Trigger38= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger38=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 Trigger39=1||Var(51) := Var(51) + 1 Trigger39= Var(51) < Var(53) && Var(54) < Var( Var(51) ) && ( Var( Var(51) ) % 100 ) < 40;デッキ上限監視+最大値比較 Trigger39=0&&(var(54) := Var( Var(51) ) )&&( var(55) := Var(51) ) ;比較値を代入 ;泥臭いけどこれしないとループ回数が最大40*40の1600回になるんよ。 [State 170002] Type = ChangeState Trigger1 =1 ||Fvar(var(52)) :=(Var(54)%100) ;Random部分を除去して代入 Trigger1 =1 || Var(var(55)) := 40 Trigger1 =1 || Var(52) := Var(52) + 1 Trigger1 =1 || Var(51) := 0 Trigger1 =1 || Var(54) := 0 Trigger1 = Var(52) < Var(53) ; Value = 170002 ;ループ処理。 [State 170002] Type = ChangeState Trigger1 = Var(52) >=Var(53) ;上限に達している。 Value = 170003 ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ [Statedef 170003];本体へのVar移送 Type = A [State 170003];前処理 Type = Null TriggerAll = Var(50) = 2 ;リセット前 Trigger1=0&& Var(51) := 0 ;代入数値管理 Trigger2=0&& Var(52) := 40 ;代入親Var場所(Var(40)この数値から通常8つ使う・ココだけ変えてもダメ) Trigger3=0&& Var(53) := Var(53) ;デッキ枚数 Trigger4=0&& Var(54) := 1 ;bit数管理 Trigger5=0&& Var(55) := 0 ;Fvar場所管理 Trigger6= Var(50) := 3 ;リセットフラグ。 [State 170003];代入する数値は63以下でなければならない(40までなので大丈夫です。) Type = ParentVarset TriggerAll=1||Var(51) := 0;reset Trigger1 =1||Var(54) := 1;最初の桁 Trigger1 =0&&Var(51) := Var(51) + Floor(Fvar(Var(55))) * Var(54) ;(&63) Trigger2 =1||Var(54) := Var(54) * 2*2*2*2*2*2 ;=*64 (64) Trigger2 =1||Var(55) := Var(55) + 1 Trigger2 =0&&Var(51) := Var(51) + Floor(Fvar(Var(55))) * Var(54) ;(&4032)/64 Trigger3 =1||Var(54) := Var(54) * 2*2*2*2*2*2 ;=*64 (4096) Trigger3 =1||Var(55) := Var(55) + 1 Trigger3 =0&&Var(51) := Var(51) + Floor(Fvar(Var(55))) * Var(54) ;(&258048)/4096 Trigger4 =1||Var(54) := Var(54) * 2*2*2*2*2*2 ;=*64 (262144) Trigger4 =1||Var(55) := Var(55) + 1 Trigger4 =0&&Var(51) := Var(51) + Floor(Fvar(Var(55))) * Var(54) ;(&16515072)/262144 Trigger5 =1||Var(54) := Var(54) * 2*2*2*2*2*2 ;=*64 (16777216) Trigger5 =1||Var(55) := Var(55) + 1 Trigger5 =0&&Var(51) := Var(51) + Floor(Fvar(Var(55))) * Var(54) ;(&1056964608)/16777216 Trigger6 = 1 var( Var(52) ) = Var(51) [State 170003] Type = ChangeState Trigger1 =1 || Var(52) := Var(52) + 1 Trigger1 =1 || Var(55) := Var(55) + 1 ;参照fvar+1 Trigger1 = Var(55) < Var(53) ; Value = 170003 ;ループ処理。 [State 170003] Type = ChangeState Trigger1 = Var(55) >=Var(53) ; Value = 170013;残り枚数計算ステートへ 170004(待機ステ) ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ [Statedef 170004];待機ステート Type = A [State 170004, AssertSpecial] Type = AssertSpecial Trigger1 = 1 flag = Invisible flag2 = Noshadow ignorehitpause=1 [State 170004, NotHitBy] Type = NotHitBy Value = SCA Trigger1 = 1 IgnoreHitPause = 1 [State 170004];Parent,Var(40) Type = Null TriggerAll = Time TriggerAll =1 || Var(40) := 0 TriggerAll =1 || Var(41) := 0 TriggerAll =1 || Var(42) := 0 TriggerAll =1 || Var(43) := 0 TriggerAll =1 || Var(44) := 0 TriggerAll =1 || Var(45) := 0 TriggerAll =1 || Var(46) := 0 TriggerAll =1 || Var(47) := 0 TriggerAll =1 || Var(48) := 0 TriggerAll =1 || Var(49) := 0 Trigger1 = Parent,Var(40) < 0 ;システム命令 Trigger1 = Ceil(Var(53)/5) >= 1 ;切り上げ計算で使用しているVarかどうか計算 Trigger1 = Var(49) := 1 ;フラグ Trigger1 = Var(40) := Parent,Var(40) Trigger1 = Parent,Var(41) < 0 ;システム命令 Trigger1 = Ceil(Var(53)/5) >= 2 ;切り上げ計算で使用しているVarかどうか計算 Trigger1 = Var(49) := 2 ;フラグ Trigger1 = Var(41) := Parent,Var(41) Trigger1 = Parent,Var(42) < 0 ;システム命令 Trigger1 = Ceil(Var(53)/5) >= 3 ;切り上げ計算で使用しているVarかどうか計算 Trigger1 = Var(49) := 3 ;フラグ Trigger1 = Var(42) := Parent,Var(42) Trigger1 = Parent,Var(43) < 0 ;システム命令 Trigger1 = Ceil(Var(53)/5) >= 4 ;切り上げ計算で使用しているVarかどうか計算 Trigger1 = Var(49) := 4 ;フラグ Trigger1 = Var(43) := Parent,Var(43) ;ここまでで上限20枚以上で使うところまで感知するけど、20枚以下なら↓のVarを感知しない仕組み。 Trigger1 = Parent,Var(44) < 0 ;システム命令 Trigger1 = Ceil(Var(53)/5) >= 5 ;切り上げ計算で使用しているVarかどうか計算 Trigger1 = Var(49) := 5 ;フラグ Trigger1 = Var(44) := Parent,Var(44) Trigger1 = Parent,Var(44) < 0 ;システム命令 Trigger1 = Ceil(Var(53)/5) >= 6 ;切り上げ計算で使用しているVarかどうか計算 Trigger1 = Var(49) := 6 ;フラグ Trigger1 = Var(45) := Parent,Var(45) Trigger1 = Parent,Var(44) < 0 ;システム命令 Trigger1 = Ceil(Var(53)/5) >= 7 ;切り上げ計算で使用しているVarかどうか計算 Trigger1 = Var(49) := 7 ;フラグ Trigger1 = Var(46) := Parent,Var(46) Trigger1 = Parent,Var(44) < 0 ;システム命令 Trigger1 = Ceil(Var(53)/5) >= 8 ;切り上げ計算で使用しているVarかどうか計算 Trigger1 = Var(49) := 8 ;フラグ Trigger1 = Var(47) := Parent,Var(47) ;処理に使われるVar分だけ。 [State 170004];ここへのループ回数監視 Type = Null Trigger1 = !Time Trigger1 = Var(48) := var(48) + 1 [state 170004,ChangeState];ヘルパー消滅命令 Type = ChangeState Trigger1 = Time Trigger1 = Var(40+Var(48)) = -999999999 ;ヘルパー消滅命令 Trigger1 =1|| Var(50):= -999999999 ;処理を行わせるように Value = 170020 [state 170004,ChangeState];デッキカード操作・別の設定のデッキを読み込み直す。 Type = ChangeState Trigger1 = Time || Var(49) > Var(48) ;フラグ関係 Trigger1 = Var(40+Var(48)) <=-1000000 ;-1000000以下 Trigger1 = Var(40+Var(48)) > -2000000 ;-2000000より上 Trigger1 =1|| Var(50):=99 ;処理を行わせるように Value = 170000 + ( Abs(Var(40+Var(48))) %1000 ) [state 170004,ChangeState];デッキカード操作・特定のカードを追加する Type = ChangeState Trigger1 = Time || Var(49) > Var(48) ;フラグ関係 Trigger1 = Var(40+Var(48)) <= -10000 ;-10000以下 Trigger1 = Var(40+Var(48)) > -1000000 ;-1000000より上 Trigger1 =1|| Var(50):=-2 ;処理を行わせるように Value = 170015 [state 170004,ChangeState];デッキカード操作・特定のカードを除去する Type = ChangeState Trigger1 = Time || Var(49) > Var(48) ;フラグ関係 Trigger1 = Var(40+Var(48)) <= -100 ;-100以下 Trigger1 = Var(40+Var(48)) > -10000 ;-10000より上 Trigger1 =1|| Var(50):=-1 ;処理を行わせるように Value = 170014 [state 170004,ChangeState];デッキカード操作・特定枚数分除去する Type = ChangeState Trigger1 = Time || Var(49) > Var(48) ;フラグ関係 Trigger1 = Var(40+Var(48)) < 0 ;0未満 Trigger1 = Var(40+Var(48)) > -40 ;-100より上 Trigger1 =1|| Var(50):=-4 ;処理を行わせるように Value = 170006 [state 170004,ChangeState];デッキカード操作・カード設定読み込み直し Type = ChangeState Trigger1 = Time || Var(49) > Var(48) ;フラグ関係 Trigger1 = Var(40+Var(48)) = -99 ; Trigger1 =1|| Var(50):=99 ;処理を行わせるように Value = 170000 + Var(58) ;設定したステートへ [state 170004,ChangeState];デッキカード操作・一番上を一番下に。 Type = ChangeState Trigger1 = Time || Var(49) > Var(48) ;フラグ関係 Trigger1 = Var(40+Var(48)) = -51 ; Trigger1 =1|| Var(50):=10 ;処理を行わせるように Value = 170010 [state 170004,ChangeState];デッキカード操作・現在のデッキをシャッフル Type = ChangeState Trigger1 = Time || Var(49) > Var(48) ;フラグ関係 Trigger1 = Var(40+Var(48)) = -50 ; Trigger1 =1|| Var(50):=6 ;処理を行わせるように Value = 170012;05 [state 170004,ChangeState];デッキカード操作・デッキを空に Type = ChangeState Trigger1 = Time || Var(49) > Var(48) ;フラグ関係 Trigger1 = Var(40+Var(48)) = -40 ; Trigger1 =1|| Var(50):=13 ;処理を行わせるように Value = 170011 [state 170004,ChangeState];本体から代入しデッキ圧縮後、また本体にVarを代入する。 Type = ChangeState Trigger1 = Time ;1F毎に Trigger1 = Var(40+Var(48)) >= 0 ;システム操作でない Trigger1 =1|| Var(50):=9;3 ;処理を行わせるように Value = 170009;5 [State 170005];デバッグ確認用 Type = Null Trigger1=1|| Var(40) := Floor(Fvar( 0))*1000000 + Floor(Fvar( 1))*10000 + Floor(Fvar( 2))*100 + Floor(Fvar( 3)) + 100000000 ; Trigger1=0&& Var(41) := Floor(Fvar( 4))*1000000 + Floor(Fvar( 5))*10000 + Floor(Fvar( 6))*100 + Floor(Fvar( 7)) + 100000000 ; Trigger2=0&& Var(42) := Floor(Fvar( 8))*1000000 + Floor(Fvar( 9))*10000 + Floor(Fvar(10))*100 + Floor(Fvar(11)) + 100000000 ; Trigger3=0&& Var(43) := Floor(Fvar(12))*1000000 + Floor(Fvar(13))*10000 + Floor(Fvar(14))*100 + Floor(Fvar(15)) + 100000000 ; Trigger4=0&& Var(44) := Floor(Fvar(16))*1000000 + Floor(Fvar(17))*10000 + Floor(Fvar(18))*100 + Floor(Fvar(19)) + 100000000 ; Trigger5=0&& Var(45) := Floor(Fvar(20))*1000000 + Floor(Fvar(21))*10000 + Floor(Fvar(22))*100 + Floor(Fvar(23)) + 100000000 ; Trigger6=0&& Var(46) := Floor(Fvar(24))*1000000 + Floor(Fvar(25))*10000 + Floor(Fvar(26))*100 + Floor(Fvar(27)) + 100000000 ; Trigger7=0&& Var(47) := Floor(Fvar(28))*1000000 + Floor(Fvar(29))*10000 + Floor(Fvar(30))*100 + Floor(Fvar(31)) + 100000000 ; Trigger8=0&& Var(48) := Floor(Fvar(32))*1000000 + Floor(Fvar(33))*10000 + Floor(Fvar(34))*100 + Floor(Fvar(35)) + 100000000 ; Trigger9=0&& Var(49) := Floor(Fvar(36))*1000000 + Floor(Fvar(37))*10000 + Floor(Fvar(38))*100 + Floor(Fvar(39)) + 100000000 ; [State -2];デバッグ Type = DisplayToClipBoard Trigger1 = 1 text = "%d,%d,%d,%d,%d \n" Params = Var(40),Var(41),Var(42),Var(43),Var(44) IgnoreHitPause = 1 [State -2];デバッグ追加 type = AppendToClipboard trigger1 = 1 text = "%d,%d,%d,%d,%d \n" Params = Var(45),Var(46),Var(47),Var(48),Var(49) IgnoreHitPause = 1 ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ [Statedef 170005];デッキ圧縮ステート1・カードの枚数計算(シャッフル用は6で処理) 実は内部じゃあんまり使わない Type = A [State 170005];前処理 Type = Null TriggerAll = Var(50) = 3 || Var(50) = 6;リセット前 Trigger1=0&& Var(51) := 0 ;枚数管理 Trigger2=0&& Var(52) := 0 ;Fvar場所管理 Trigger3=0&& Var(53) := Var(53) Trigger4=0&& Var(54) := 0 Trigger5=0&& Var(55) := ( Var(50)=6 ) Trigger6= Var(50) := 4 + ( Var(55) );リセットフラグ。 [State 170005]; Type = Null Trigger1 =0&& Var(51) := Var(51) +( Floor(Fvar(Var(52)))<40 ) [State 170005] Type = ChangeState Trigger1 =1 || Var(52) := Var(52) + 1 Trigger1 = Var(52) < Var(53); Value = 170005 ;ループ処理。 [state 170005,ChangeState] Type = ChangeState Trigger1 = Var(52) >= Var(53) Trigger1 =1|| Var(56) := Var(51) ;残り枚数代入 Value = 170006 + ( Var(50) = 5 ) ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ [Statedef 170006];デッキ圧縮ステート2・Varと順番を代入 Type = A [State 170006];前処理 Type = Null TriggerAll = Var(50) = 4 || Var(50) = -4;リセット前 Trigger1=0&& Var(51) := IfElse( Var(50)=-4, abs(var(40+Var(48))), 0 );特定枚数除去命令 Trigger2=0&& Var(52) := 0 ;Fvar,Var場所管理 Trigger3=0&& Var(53) := Var(53) Trigger4=0&& Var(54) := 100 ;最大値管理 Trigger5=0&& Var(55) := 0 Trigger6= Var(50) := 1 ;リセットフラグ。 [State 170006]; Type = Null Trigger1 =1|| Var( Var(52) ) :=Floor( Fvar( Var(52) ) );数値代入 Trigger1 = Var( Var(52) ) < 40 ;カード存在する Trigger1 = Var( Var(52) ) := Var( Var(52) ) + (Var(54)*100) ;最大値処理用の数値を代入 [State 170006]; Type = Null Trigger1 = Var(51) ; 除去命令有り Trigger1 = Var(52) < Var(51) ; 指定枚数かどうか。 Trigger1 = Var( Var(52) ) := 40 ;種類空きを代入 [State 170006] Type = ChangeState Trigger1 =1 || Var(52) := Var(52) + 1 Trigger1 =1 || Var(54) := Var(54) - 1 Trigger1 = Var(52) < Var(53); Value = 170006 ;ループ処理。 [state 170006,ChangeState];整列ステートへ Type = ChangeState Trigger1 = Var(52) >= Var(53) Value = 170002 ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ;ボツステート。一応、State,170005へVar(50):=6で飛ばせば使える。 ;こちらは「1種類の限度枚数(最初は5枚)」を超えていると、その種類のカードが上限まで減る。 [Statedef 170007];再シャッフルステート・FvarからVarへ。 Type = A [State 170007];前処理 Type = Null TriggerAll = Var(50) = 5 ;リセット前 Trigger1=0&& Var(51) := 0 Trigger2=0&& Var(52) := 0 Trigger3=0&& Var(53) := Var(53) Trigger4=0&& Var(54) := 0 Trigger5=0&& Var(55) := 0 Trigger6= Var(50) := 7 ;リセットフラグ。 [State 170006]; Type = Null Trigger1 = Var( Var(52) ) :=Floor( Fvar( Var(52) ) );数値代入 [State 170007] Type = ChangeState Trigger1 =1 || Var(52) := Var(52) + 1 Trigger1 = Var(52) < Var(53); Value = 170007 ;ループ処理。 [state 170007,ChangeState]; Type = ChangeState Trigger1 = Var(52) >= Var(53) Value = 170008 ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ;170007がボツなのと同様こちらもボツ。 ;理由は「枚数を数えるよりRandomを入れるほうが手っ取り早くシャッフルらしいから」 [Statedef 170008];再シャッフルステート・Fvarへ枚数の加算 Type = A [State 170007];前処理 Type = VarRangeSet TriggerAll = Var(50) = 7 ;リセット前 Trigger1=0&& Var(51) := 0 Trigger2=0&& Var(52) := 0 ;Var場所管理 Trigger3=0&& Var(53) := Var(53) Trigger4=0&& Var(54) := 0 Trigger5=0&& Var(55) := 0 Trigger6=1|| Var(50) := 50 ;リセットフラグ。 fvalue = 0 ;全てを一度0枚に first = 0 last = 39 [State 170006]; Type = Varadd Trigger1 = Var( var(52) ) < 40 ;種類が空きでないことを確認する。 fvar( Var( var(52) ) ) = 1 ;種類と同じfvarへ1加算する。 [State 170007] Type = ChangeState Trigger1 =1 || Var(52) := Var(52) + 1 Trigger1 = Var(52) < Var(53); Value = 170008 ;ループ処理。 [state 170007,ChangeState];シャッフルステートへ Type = ChangeState Trigger1 = Var(52) >= Var(52) Value = 170001 ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ [Statedef 170009];本体からVarを参照 Type = A [State 170009];前処理 Type = Null TriggerAll = Var(50) = 9 ;リセット前 Trigger1=0&& Var(51) := 0 ;代入数値管理 Trigger2=0&& Var(52) := 40 ;代入親Var場所(Var(40)この数値から通常8つ使う・ココだけ変えてもダメ) Trigger3=0&& Var(53) := Var(53) ;デッキ枚数 Trigger4=0&& Var(54) := 1 ;bit数管理 Trigger5=0&& Var(55) := 0 ;Fvar場所管理 Trigger6= Var(50) := 4 ;リセットフラグ。 [State 170009];本体の数値を分解して代入を行う Type = Null Trigger1 = Var(51) := Parent,Var(Var(52)) Trigger1 =1||Var(54) := 1;最初の桁 Trigger1 =0&&Fvar(Var(55)):=(( Var(51) & (63*Var(54)) )/Var(54)) ;(&63) Trigger2 =1||Var(54) := Var(54) * (2*2*2*2*2*2) ;=*64 (64) Trigger2 =1||Var(55) := Var(55) + 1 Trigger2 =0&&Fvar(Var(55)):=(( Var(51) & (63*Var(54)) )/Var(54)) ;(&4032)/64 Trigger3 =1||Var(54) := Var(54) * (2*2*2*2*2*2) ;=*64 (4096) Trigger3 =1||Var(55) := Var(55) + 1 Trigger3 =0&&Fvar(Var(55)):=(( Var(51) & (63*Var(54)) )/Var(54)) ;(&258048)/4096 Trigger4 =1||Var(54) := Var(54) * (2*2*2*2*2*2) ;=*64 (262144) Trigger4 =1||Var(55) := Var(55) + 1 Trigger4 =0&&Fvar(Var(55)):=(( Var(51) & (63*Var(54)) )/Var(54)) ;(&16515072)/262144 Trigger5 =1||Var(54) := Var(54) * (2*2*2*2*2*2) ;=*64 (16777216) Trigger5 =1||Var(55) := Var(55) + 1 Trigger5 =0&&Fvar(Var(55)):=(( Var(51) & (63*Var(54)) )/Var(54)) ;(&1056964608)/16777216 [State 170009] Type = ChangeState Trigger1 =1 || Var(52) := Var(52) + 1 Trigger1 =1 || Var(55) := Var(55) + 1 ;参照fvar+1 Trigger1 = Var(55) < Var(53) ; Value = 170009 ;ループ処理。 [State 170009] Type = ChangeState Trigger1 = Var(55) >=Var(53) ;圧縮ステートへ Value = 170006 ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ [Statedef 170010];デッキカード操作 一番上を一番下に Type = A [State 170010];前処理 Type = Null TriggerAll = Var(50) = 10 ;リセット前 Trigger1=0&& Var(51) := Floor(Fvar(0)) ;一番上の数値管理 Trigger2=0&& Var(52) := 0 ;Var場所管理 Trigger3=0&& Var(53) := Var(53) ;デッキ枚数 Trigger4=0&& Var(54) := 0 Trigger5=0&& Var(55) := 0 Trigger6= Var(50) := 4 ;リセットフラグ。 [State 170010]; Type = Null Trigger1 = Fvar(Var(52)) := Fvar(Var(52)+1) [State 170010] Type = ChangeState Trigger1 =1 || Var(52) := Var(52) + 1 Trigger1 = Var(52) < Var(53)-1 ;デッキ枚数-1未満(40なら38以下) Value = 170010 ;ループ処理。 [State 170010] Type = ChangeState Trigger1 =1|| Fvar(Var(52)) := Var(51) ;一番上だったのを一番下に Trigger1 =1|| Var(52) := Var(52) + 1 Trigger1 = Var(52) >=Var(53) ;圧縮ステートへ Value = 170006 ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ [Statedef 170011];デッキカード操作 デッキを空に Type = A [State 170010];前処理 Type = Null TriggerAll = Var(50) = 13 ;リセット前 Trigger1=0&& Var(51) := 0 Trigger2=0&& Var(52) := 0 ;Var場所管理 Trigger3=0&& Var(53) := Var(53) ;デッキ枚数 Trigger4=0&& Var(54) := 0 Trigger5=0&& Var(55) := 0 Trigger6= Var(50) := 4 ;リセットフラグ。 [State 170010]; Type = Null Trigger1 = Fvar(Var(52)) := 40 ;種類:空き(40)の番号を代入 [State 170010] Type = ChangeState Trigger1 =1 || Var(52) := Var(52) + 1 Trigger1 = Var(52) < Var(53) ;デッキ上限 Value = 170011 ;ループ処理。 [State 170010] Type = ChangeState Trigger1 = Var(52) >=Var(53) ;圧縮ステートへ Value = 170006 ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ [Statedef 170012];再シャッフルステート・Random加算型 Type = A [State 170012];前処理 Type = Null TriggerAll = Var(50) = 6 ;リセット前 Trigger1=0&& Var(51) := 0 ;Random数値 Trigger2=0&& Var(52) := 0 ;Var桁数管理 Trigger3=0&& Var(53) := Var(53) Trigger4=0&& Var(54) := 0 Trigger5=0&& Var(55) := 0 Trigger6= Var(50) := 1 ;リセットフラグ。 [State 170012];Random数値代入 Type = Null TriggerAll = 1 || Var(51) := 0 ;リセット Trigger1=1|| Var(51) := Var(51) + Random+Random+Random+Random+Random+Random+Random+Random+Random+Random ;Random数値1 Trigger1=1|| Var(51) := Var(51) + Random+Random+Random+Random+Random+Random+Random+Random+Random+Random ;Random数値2 Trigger1=1|| Var(51) := Var(51) + Random+Random+Random+Random+Random+Random+Random+Random+Random+Random ;Random数値3 Trigger1=1|| Var(51) := Var(51) + Random+Random+Random+Random+Random+Random+Random+Random+Random+Random ;Random数値4 Trigger1=1|| Var(51) := Var(51) + Random+Random+Random+Random+Random+Random+Random+Random+Random+Random ;Random数値5 Trigger1=1|| Var(51) := Var(51) + Random+Random+Random+Random+Random+Random+Random+Random+Random+Random ;Random数値6 Trigger1=1|| Var(51) := Var(51) + Random+Random+Random+Random+Random+Random+Random+Random+Random+Random ;Random数値7 Trigger1=1|| Var(51) := Var(51) + Random+Random+Random+Random+Random+Random+Random+Random+Random+Random ;Random数値8 Trigger1=1|| Var(51) := Var(51) + Random+Random+Random+Random+Random+Random+Random+Random+Random+Random ;Random数値9 Trigger1=1|| Var(51) := Var(51) + Random+Random+Random+Random+Random+Random+Random+Random+Random+Random ;Random数値10 Trigger1=0&& Var(51) := Var(51) * 100 ;情報桁を避ける [State 170012]; Type = Null Trigger1 = Var( Var(52) ) := ( Floor( Fvar( Var(52) ) ) + Var(51) );数値代入 [State 170012] Type = ChangeState Trigger1 =1 || Var(52) := Var(52) + 1 Trigger1 = Var(52) < Var(53); Value = 170012 ;ループ処理。 [state 170012,ChangeState];整列ステートへ Type = ChangeState Trigger1 = Var(52) >= Var(53) Value = 170002 ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ [Statedef 170013];残り枚数計算ステート ;Varに代入させる。 Type = A [State 170013];前処理 Type = VarRangeSet TriggerAll = Var(50) = 3 ;リセット前 Trigger1=0&& Var(51) := 0 ;枚数管理 Trigger2=0&& Var(52) := 0 ;Var場所管理 Trigger3=0&& Var(53) := Var(53) Trigger4=0&& Var(54) := 0 Trigger5=0&& Var(55) := 0 Trigger6=1|| Var(50) := 13 ;リセットフラグ。 value = 0 ;全てを一度0枚に first = 0 last = 39 [State 170013]; Type = Varadd Trigger1 = Fvar( var(52) ) < 40 ;種類が空きでないことを確認する。 Trigger1 =1||Var(51):=Var(51)+1 ;枚数計算 var( Floor(Fvar( var(52) )) ) = 1 ;種類と同じVarへ1加算する。 [State 170013] Type = ChangeState Trigger1 =1 || Var(52) := Var(52) + 1 Trigger1 = Var(52) < Var(53); Value = 170013 ;ループ処理。 [state 170013,ChangeState];待機ステートへ Type = ChangeState Trigger1 = Var(52) >= Var(52) Trigger1 =1|| Var(56) := Var(51) ;残り枚数代入 Value = 170004 ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ [Statedef 170014];デッキカード操作 特定のカードを除去する Type = A [State 170014];前処理 Type = Null TriggerAll = Var(50) = -1 ;リセット前 Trigger1=0&& Var(51) := Abs(Var(40+Var(48))) ;除去種類取得 Trigger2=0&& Var(52) := 0 ;Var場所管理 Trigger3=0&& Var(53) := Var(53) ;デッキ枚数 Trigger4=0&& Var(54) := 0 ;除去種類取得 Trigger5=0&& Var(55) := 0 ;除去種類取得 Trigger6= Var(50) := 4 ;リセットフラグ。 [State 170014]; Type = Null TriggerAll = Var(51) >= 100 ;除去枚数0でない Trigger1 = Fvar(Var(52)) = Var(51)%100 ;除去する種類なら Trigger1 = Fvar(Var(52)) := 40 ;種類空きにして Trigger1 = Var(51) := Var(51) - 100 ; 除去枚数を一枚減らす [State 170014] Type = ChangeState Trigger1 =1 || Var(52) := Var(52) + 1 Trigger1 = Var(52) < Var(53) ; Value = 170014 ;ループ処理。 [State 170014] Type = ChangeState Trigger1 =1|| Fvar(Var(52)) := Var(51) ;一番上だったのを一番下に Trigger1 = Var(52) >=Var(53) ;圧縮ステートへ Value = 170006 ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ [Statedef 170015];デッキカード操作 一番上や一番下に特定のカードを追加 Type = A [State 170015];前処理 Type = Null TriggerAll = Var(50) = -2 ;リセット前 Trigger1=0&& Var(51) := Abs(Var(40+Var(48))) ;追加カード取得 Trigger2=0&& Var(52) := 0 ;Fvar,Var場所管理 Trigger3=0&& Var(53) := Var(53) Trigger4=0&& Var(54) := 100 ;最大値管理 Trigger5=0&& Var(55) := IfElse( (Floor(Var(51)/100000)) = 1 ,-50 ,50 );1zyyxxなら下側になるよう。 Trigger6= Var(50) := 1 ;リセットフラグ。 [State 170015]; Type = Null Trigger1 =1|| Var( Var(52) ) :=Floor( Fvar( Var(52) ) );数値代入 [State 170015]; Type = Null TriggerAll = (Floor(Var(51)/10000)%10) = 1 ;存在する分だけ Trigger1 = Var( Var(52) ) = ( Var(51)%100 ) ;カードが適合している Trigger1 = ( Floor(Var(51)/100)%100 ) > 0 ;持ってくる残り枚数が0でない Trigger1 =1 || Var(51) := Var(51) - 100 ;持ってくる残りを1減らす。 Trigger1 = Var( Var(52) ) := Var( Var(52) ) + ( (Var(54)+Var(55))*100 ) ;最大値処理用の数値を代入 Trigger2 = Var( Var(52) ) < 40 ;カード存在する&&↑で代入されていない Trigger2 = Var( Var(52) ) := Var( Var(52) ) + (Var(54)*100) ;最大値処理用の数値を代入 [State 170015]; Type = Null TriggerAll = (Floor(Var(51)/10000)%10) = 2 ;空いている場所へ空いている分まで追加する。 Trigger1 = Var( Var(52) ) < 40 ;カード存在する Trigger1 = Var( Var(52) ) := Var( Var(52) ) + (Var(54)*100) ;最大値処理用の数値を代入 Trigger2 = ( Floor(Var(51)/100)%100 ) > 0 ;持ってくる残り枚数が0でない Trigger2 =1 || Var(51) := Var(51) - 100 ;持ってくる残りを1減らす。 Trigger2 = Var( Var(52) ) := (Var(51)%100) + ( (Var(54)+Var(55))*100 ) [State 170015]; Type = Null TriggerAll = (Floor(Var(51)/10000)%10) = 3 ;空きが無いなら一番後ろ側の方へ上書きする。(開いてるなら↑と処理は同じ) Trigger1 = Var(52) < Var(53) - ( Floor(Var(51)/100)%100 ) ;上書きする場所でない Trigger1 = Var( Var(52) ) < 40 ;カード存在する Trigger1 = Var( Var(52) ) := Var( Var(52) ) + (Var(54)*100) ;最大値処理用の数値を代入 Trigger2 = ( Floor(Var(51)/100)%100 ) > 0 ;持ってくる残り枚数が0でない Trigger2 =1 || Var(51) := Var(51) - 100 ;持ってくる残りを1減らす。 Trigger2 = Var( Var(52) ) := (Var(51)%100) + ( (Var(54)+Var(55))*100 ) ;上書きをする [State 170015]; Type = Null Trigger1 = (Floor(Var(51)/100000)) = 2 ;追加後再シャッフルする設定の場合 Trigger1 = Fvar( Var(52) ) := (Var( Var(52) )%100) ;整列用数値を除外したものをFvar側へ再追加 [State 170015] Type = ChangeState Trigger1 =1 || Var(52) := Var(52) + 1 Trigger1 =1 || Var(54) := Var(54) - 1 Trigger1 = Var(52) < Var(53); Value = 170015 ;ループ処理。 [state 170015,ChangeState];シャッフルステートステートへ Type = ChangeState Trigger1 = (Floor(Var(51)/100000)) = 2 ;追加後再シャッフルする設定 Trigger1 = Var(52) >= Var(53) Trigger1 =1|| Var(50) := 6 Value = 170012 [state 170015,ChangeState];整列ステートへ Type = ChangeState Trigger1 = Var(52) >= Var(53) Value = 170002 ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ [Statedef 170020];消滅用ステート Type = A [State 170003];前処理 Type = Null TriggerAll = Var(50) = -999999999 ;リセット前 Trigger1=0&& Var(51) := 0 Trigger2=0&& Var(52) := 40 ;代入親Var場所/Var(40) Trigger3=0&& Var(53) := Var(53) Trigger4=0&& Var(54) := 0 Trigger5=0&& Var(55) := 0 [state 170015,ChangeState];消滅命令でなければ設定ステートへ Type = ChangeState Trigger1 = Var(50) != -999999999 Value = 17000 + Var(58) [State 170003]; Type = ParentVarset Trigger1 = 1 var( Var(52) ) = 0 ;命令用のVarを0にする。 [State 170020] Type = DestroySelf Trigger1 = Var(50) = -999999999 ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ [Statedef 170050];特殊設定用ステート Type = A MoveType = I Physics = N Ctrl = 0 Anim = 0 ;判定のないやつで SprPriority = -5 ;AIなど特別に編成されたデッキを使いたい場合などに。あるいは複数のデッキを別々になどに。 ;こちらを使う場合Type = HelperをStateNo = 170000ではなくStateNo = 170050で射出させるように設定するか、 ; 本体からVar(40):=-1000050の命令を行う。そっちの方が最中にAIが起動しても使えるので望ましいかも。 ;Helper(170000),Var(58)で使用しているデッキの種類(このステートなら=50)を確認できます。 ; ;このステートを複製し[StateDef 1700xx]のxxをシステムステートなど(20以下と9x番台)以外の数値にすれば、追加可能。 ;一応170xxxまで感知するので、限度数には困らないかと。 [State 170000] Type = Null Trigger1 =1 || Fvar(0) := 1 Trigger1 =0 && Fvar(1) := 1 Trigger2 =0 && Fvar(2) := 1 Trigger3 =0 && Fvar(3) := 1 Trigger4 =0 && Fvar(4) := 1 Trigger5 =0 && Fvar(5) := 1 Trigger6 =0 && Fvar(6) := 1 Trigger7 =0 && Fvar(7) := 1 Trigger8 =0 && Fvar(8) := 1 Trigger9 =0 && Fvar(9) := 1 Trigger10=0 && Fvar(10):= 1 Trigger11=0 && Fvar(11):= 1 Trigger12=0 && Fvar(12):= 1 Trigger13=0 && Fvar(13):= 1 Trigger14=0 && Fvar(14):= 1 Trigger15=0 && Fvar(15):= 1 Trigger16=0 && Fvar(16):= 1 Trigger17=0 && Fvar(17):= 1 Trigger18=0 && Fvar(18):= 1 Trigger19=0 && Fvar(19):= 1 Trigger20=0 && Fvar(20):= 1 Trigger20=0 && Fvar(20):= 1 Trigger21=0 && Fvar(21):= 1 Trigger22=0 && Fvar(22):= 1 Trigger23=0 && Fvar(23):= 1 Trigger24=0 && Fvar(24):= 1 Trigger25=0 && Fvar(25):= 1 Trigger26=0 && Fvar(26):= 1 Trigger27=0 && Fvar(27):= 1 Trigger28=0 && Fvar(28):= 1 Trigger29=0 && Fvar(29):= 1 Trigger30=0 && Fvar(30):= 1 Trigger30=0 && Fvar(30):= 1 Trigger31=0 && Fvar(31):= 1 Trigger32=0 && Fvar(32):= 1 Trigger33=0 && Fvar(33):= 1 Trigger34=0 && Fvar(34):= 1 Trigger35=0 && Fvar(35):= 1 Trigger36=0 && Fvar(36):= 1 Trigger37=0 && Fvar(37):= 1 Trigger38=0 && Fvar(38):= 1 Trigger39=0 && Fvar(39):= 1 Trigger40=1 || Var(53) :=40 ;デッキ上限値設定 上限40枚(Fvarの数) [State 170000] Type = Null Trigger1 =1||Var(58) :=(StateNo%1000) ;050;設定リセット時用の数値。 Trigger1 =1||Var(57):= 0 ;設定枚数の認識用。 Trigger1 =1||Var(57):= Var(57) + Floor(Fvar( 0)+Fvar( 1)+Fvar( 2)+Fvar( 3)+Fvar( 4)+Fvar( 5)+Fvar( 6)+Fvar( 7)+Fvar( 8)+Fvar( 9)); Trigger1 =1||Var(57):= Var(57) + Floor(Fvar(10)+Fvar(11)+Fvar(12)+Fvar(13)+Fvar(14)+Fvar(15)+Fvar(16)+Fvar(17)+Fvar(18)+Fvar(19)); Trigger1 =1||Var(57):= Var(57) + Floor(Fvar(20)+Fvar(21)+Fvar(22)+Fvar(23)+Fvar(24)+Fvar(25)+Fvar(26)+Fvar(27)+Fvar(28)+Fvar(29)); Trigger1 =1||Var(57):= Var(57) + Floor(Fvar(30)+Fvar(31)+Fvar(32)+Fvar(33)+Fvar(34)+Fvar(35)+Fvar(36)+Fvar(37)+Fvar(38)+Fvar(39)); [State 170000] Type = ChangeState Trigger1 = Parent,Var(40) != 0 && Var(50) != 99;既に代入がある。 Trigger1 = Var(50) := 9 ; Value = 170009 ; [State 170000] Type = ChangeState Trigger1 = 1 Value = 170001 ;デッキ制作ステートへ ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ;大雑把な内部処理(並びは記述の順番 ちょっと見づらいかも) ; ;○170000:設定ステート こちらでカードの枚数を設定する。 ; >170009 本体Var(40)に情報があるなら、本体Var取得ステートへ ; >170001 それ以外はデッキ制作ステート1へ ; ;○170001:デッキ制作ステート1・カードの種類と枚数分をRandom(10個)*100と一緒に代入。 ; >170002 デッキ上限数に達したら デッキ制作ステート2へ。 ; >170001 ループ(カードの種類分、40回) ; >170002 カードの種類分終わっても上限に達していなくとも デッキ制作ステート2へ ;     初期記述では一種類につき5枚まで。増やすことも一応できる。 ;     予め代入前に「種類:空(40番)」を全てのVarに代入しているので足りなくても大丈夫 ; ;○170002:デッキ制作ステート2・Var数値の大きい順に並べ替える。 ;     Random*100が入れられていれば、その順番で並べるのでカードがシャッフルされる。 ; >170002 ループ(デッキの上限枚数分、40回) ; >170003 本体へのVar代入 ; ;○170003:本体へのVar移送ステート・本体へVarをbit型で代入します。 ; >170003 ループ(デッキの上限枚数分/5回。40枚なら8回。) ; >170013 種類計算ステートへ ; ;○170004:待機ステート・処理が終わるとここで次のフレームを待ちます。 ;     またデバッグ表示の処理も行っています。 ; >170020 ** 本体からの制御 ヘルパー消去 ; >1700xx 99 本体からの制御 指定されたデッキで読み込み直す ; >170015 -2 本体からの制御 特定のカードを追加する。 ; >170014 -1 本体からの制御 特定のカードを除去する ; >170006 -4 本体からの制御 指定枚数分カードを除去する(デッキ圧縮ステート2) ; >170000 99 本体からの制御 カード設定の読み込み直し=デッキの再生成。 ; >170010 10 本体からの制御 一番上のカードを一番下に ; >170012 6 本体からの制御 現在のデッキをシャッフルさせる ; >170011 13 本体からの制御 デッキを空に ; >170009 Time 本体Var参照ステートへ ; ;×170005:ボツステート・デッキ圧縮ステート1・カードの枚数計算。 ;     枚数計算は13でもやっているのでこちらをボツに ; >170005 ループ(デッキの上限枚数分、40回) ; >170006 デッキ圧縮ステート2へ ; ;○170006:デッキ圧縮ステート2・VarへFvarと順番を代入。 ; >170006 ループ(デッキの上限枚数分、40回) ; >170002 整列ステート(デッキ制作ステート2)へ ;    デッキの上側のカードに大きな整列番号を、下側に小さな整列番号を付けて入れ、 ;     カードの種類が空の時は整列用の番号を入れず整列ステートへ飛ばすことで、 ;     元々上側のカードを前に、下のカードを後ろに、空きを最後尾に整列させています。 ;    指定枚数分除去の命令中は上から指定枚数分除去します。 ; ;×170007:ボツステート・枚数計算型の再シャッフルステート1・FvarからVarへ移動。 ;     Random加算型を作ったので基本使用せず。でも一応使える。 ; >170007 ループ(デッキの上限枚数分、40回) ; >170008 再シャッフルステート2へ ; ;×170008:ボツステート・枚数計算型の再シャッフルステート2・Varの中身の種類でFvarを加算 ;     どのカードがどの枚数あるのかをFvarに記録して、デッキ制作ステート1へ飛ばすだけ。 ; >170008 ループ(デッキの上限枚数分、40回) ; >170001 シャッフルステート(デッキ制作ステート1)へ ; ;○170009:本体Var参照ステート・本体のVarから情報を取得してFvarへ入れる。 ; >170009 ループ(デッキの上限枚数分/5回。40枚なら8回。) ; >170006 デッキ圧縮ステート2へ ; ;○170010:デッキカード操作 一番上を一番下に・ただそれだけ ; >170010 ループ(デッキの上限枚数分、40回) ; >170006 デッキ圧縮ステート2へ ; ;○170011:デッキカード操作 デッキを空に・全てのFvarへ空き(40番)にする。 ; >170011 ループ(デッキの上限枚数分、40回) ; >170006 デッキ圧縮ステート2へ ; ;○170012:デッキカード操作 再シャッフルステート・Random加算型。 ;     VarにFvarの数値とRandom100個(*100)を入れ整列ステートへ飛ばすだけ ; >170012 ループ(デッキの上限枚数分、40回) ; >170002 整列ステート(デッキ制作ステート2)へ ; ;○170013:残り枚数計算ステート・それぞれの種類のカードの残り枚数を計算。 ; >170013 ループ(デッキの上限枚数分。40枚なら40回) ; >170004 待機ステートへ ; ;○170014:特定カード処理ステート・本体の命令で特定の種類を指定枚数分除去する。 ; >170014 ループ(デッキの上限枚数分。40枚なら40回) ; >170006 デッキ圧縮ステート2へ ; ;○170015:特定カード追加ステート・本体の命令で特定の種類を指定枚数分、指定した形式で上か下へ追加する ; >170014 ループ(デッキの上限枚数分。40枚なら40回) ; >170012 再シャッフルステートへ(追加後シャッフルの場合) ; >170006 デッキ圧縮ステート2へ ; ;○170020:ヘルパー消去ステート・本体のVar(40)を0にして、DestroySelfの処理を行います。 ; >170000 Var(50)!=-999999999消滅命令でない場合、こちらへ移動します。 ; >DestrouSelf ; ;×170050:別設定ステート 通常未使用。Helperの射出などを上手く管理すれば複数のデッキを管理可能。 ; >170009 本体Var(40)に情報があるなら、本体Var取得ステートへ ; >170001 それ以外はデッキ制作ステート1へ ; ; 使用しているVar(まあ、全部ですが) ;Var(0~39)、Fvar(0~39):全てデッキカード処理に使われている。 ; 処理後、本体から確認できるのはVar(xx)がカードの種類xx番の枚数。Fvar(n-1)がデッキ上からn枚目のカード。 ;Var(40~49):操作ループ用の処理とデバッグ表示用に使用。Var(48)は処理した回数、Var(49)は処理する回数。 ;Var(50):ループ始動処理を制御するためのVar。ぶっちゃけVar(50)!=StateNoでの方が分かりやすい気がする。 ;Var(51~55):基本雑多処理に使用。Var(53)だけは、デッキの上限枚数を最初に設定してから不変。 ;Var(56):現在のデッキの枚数 ;Var(57):設定したカードの枚数 ;Var(58):使用したデッキの種類。主に別設定ステート用。 ;     設定時にStateNo%1000を代入することで色んなデッキを使うことができるようになっている。 ; ; 流れ ;発生から:(発生)00→01→02→03→13→04(待機) ;読み込み:(発生)00→09→06→02→03→13→04(待機) ;基本処理:(待機)04→09→06→02→03→13→04(待機) ;操作雑多:(操作)10とか→06→同上 ;再シャッフル:(操作)12→02→03→13→04(待機) ; >09が本体Varの参照ステート。 ; >全てのシステム操作は最中に09に通らないため、本体でのカード制御が反映されません。 ;  >本体Varへの移送(03)と枚数確認(13)は毎フレーム待機ステートへ戻る前に行われるので本体からの種類・枚数確認はいつでも可。 ; ; >全ての操作で通る13でVar(56)に残り枚数を代入してます。 ; >大体のステートでデッキの上限枚数分のループをしています。一部上限枚数/5回。 ;  >待機〜処理〜待機まで大体178回くらいChangeStateを行う計算。 ;  >操作〜でも約218回なので10回繰り返しても2500には届かない回数。連続処理は8回が限度だけど。 ; ;履歴 ;  5:30 2011/04/17 構想を思いつく ;  9:31 2011/04/17 大体書き終わり ;  9:53 2011/04/17 ちゃんと動かない! ; 10:36 2011/04/17 動くように修正。本体からの制御に対応。 ; 10:47 2011/04/17 まだちゃんとうごいてないー! ; 11:34 2011/04/17 大体動くようになった。 ; 11:45 2011/04/17 引き継ぎのミス修正 ; 11:50 2011/04/17 再修正 ; 18:07 2011/04/17 説明とかちょっと追加〜。 ; 18:16 2011/04/17 どうじょー ; 16:43 2011/04/18 再シャッフルをより単純で確実なRandom加算型に。一応元の再シャッフルステートも残す。 ; 17:03 2011/04/18 待機ステートへ飛ぶ前にVarへ残り枚数を代入するように。 ; 17:48 2011/04/18 処理の表を作った。 ;  5:44 2011/04/19 システム操作に特定の種類を特定枚数分減らす処理を追加。デッキを空に・デッキの再構成の命令方法を変更。 ;  6:41 2011/04/19 今更設定枚数を認識させるように。その他説明の修正とか。 ; 10:10 2011/04/19 システム操作でデッキにあるカードを上に引っ張ってきたり、下に沈ませたり、別のカードを追加したりできるように。 ; 10:38 2011/04/19 消滅命令の追加 ; 20:21 2011/04/19 別のデッキ設定を ; 21:14 2011/04/19 連続処理を行えるように。またその為に突出していた回数のループを力技に変更。 ; 12:21 2011/04/21 特定の枚数分減らす、という処理を追加。奇しくも-40でも同じようになる感じだけど処理は別。 ; 14:26 2011/04/21 説明だとか追加 ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ [Statedef 170098];ボツ・元:デッキ制作ステート2・順番の整列(最大1600回ループ) Type = A [State 170002];前処理 Type = VarRangeSet TriggerAll = Var(50) =1 || Var(50) = 99 ;リセット前 Trigger1=0&& Var(51) := 0 ;Var場所管理 Trigger2=0&& Var(52) := 0 ;FVar場所管理 Trigger3=0&& Var(53) := Var(53) ;デッキ枚数 Trigger4=0&& Var(54) := 0 ;最大値管理 Trigger5=0&& Var(55) := 0 ;最大値Var記録 Trigger6= Var(50) := 2 ;リセットフラグ。 fvalue = 40 ;fvar(xx) = 40(fvar(xx)>39)が存在しないという変数に First = 0 Last = 39 [State 170002];存在しない場合の補助など Type = Null Trigger1 = Var(54) = 0 Trigger1 = 1 || var(54) := Var( Var(51) ) Trigger1 = 1 || var(55) := Var(51) Trigger1 =( Var( Var(51) ) % 100 >= 40 ) ;空の場合 Trigger1 = 1 || var(54) :=(Var( Var(51) )%100) ;Random部分を削除 [State 170002];最大値検索 Type = Null Trigger1 = Var(54) < Var( Var(51) ) Trigger1 =( Var( Var(51) ) % 100 < 40 ) ;空でない Trigger1 = 1 || var(54) := Var( Var(51) ) Trigger1 = 1 || var(55) := Var(51) [State 170002] Type = ChangeState Trigger1 =1 || Var(51) := Var(51) + 1 ;次のvarへ Trigger1 = Var(51) < Var(53) ;上限値を超えたら↓trigger2を処理 ;最大値代入+Var側リセット Trigger2 =1 ||Fvar(var(52)) :=(Var(54)%100) ;Random部分を除去して代入 Trigger2 =1 || Var(var(55)) := 40 ;次のfvarへ Trigger2 =1 || Var(52) := Var(52) + 1 Trigger2 =1 || Var(51) := 0 Trigger2 =1 || Var(54) := 0 Trigger2 = Var(52) < Var(53) ; Value = 170002 ;ループ処理。 [State 170002] Type = ChangeState Trigger1 = Var(52) >=Var(53) ;上限に達している。 Value = 170003 ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■