太閤立志伝5イベントソース //イベント名「南蛮歌留多事始」 //作者名 わたわた //ver1.00 2009-11-18 公開。 //ver1.01 2009-11-18 所持金の上限チェック追加、メッセージの修正等。 //月の上旬に武士の奥さんを訪れると20パーセントの確率で発生。 //カードゲームの「ビッグオアスモール」か「ブラックジャック」で遊ぶことができます(1回につき10ゲームまで)。 //ルール等は一応登場人物による説明がありますので、こちらでは使用変数などと一緒に末尾に記載してあります。 チャプター:{ イベント:南蛮歌留多事始{ 属性:何度でも|ひかえめ 発生契機:室内画面表示後(無効,無効) 発生条件:{ 代入人物B:(MP主人) //旦那 調査:(人物::人物B)!=(人物::主人公) //自宅を除く 調査:(人物::人物B.所属勢力タイプ)==(大名家) //武士 調査:(人物::人物B.奥さん)!=(無効) //奥さんがいる 調査:(発生施設)!=(評定の間) //評定を避ける 調査:(状況::日)<=(10) //上旬 調査:(Rnd100)<(20) //20パーセント OR調査:{//おまけ 調査:(状況::年)<(1597) 調査:(人物::主人公.所属大名家)!=(大名家::長宗我部元親) } } スクリプト:{ //導入部START 代入人物A:(人物::人物B.奥さん) 会話:(人物A,主人公)[[あら、こんにちは]] 調査:(イベントフラグ::南蛮歌留多事始−承前)!=(成立) 分岐:(真){//説明を聞いていない 会話:(人物A,主人公)[[実は、とある南蛮商人の方からこんな\n遊戯道具を頂いたのでございますが……]] スチル表示:(アイテム,宝石箱,無効,無効,フェード) 会話:(主人公,人物A)[[{おお}、これは南蛮かるた{だ}{な}]] スチル消去:(フェード) 会話:(人物A,主人公)[[ええ……ただ巷では一組48枚の物が\n主流のようなのでございますが\nこちらは一組52枚なのでございます]] 会話:(主人公,人物A)[[ふむ? 12枚が4種類で48枚の方が\n切りが良さそう{だ}が]] 会話:(人物A,主人公)[[その方がおっしゃるには\n『将来はきっとコチラが流行しマス!』と\n……ふふ、本当でしょうか?]] 会話:(人物A,主人公)[[その際に、こちらを使った遊びを\nいくつか教えていただきまして……]] 会話:(人物A,主人公)[[せっかくでございますし\n少しお相手していただけますか?]] 更新:(イベントフラグ::南蛮歌留多事始−承前)(成立) } 分岐:(偽){//説明を聞いた 会話:(人物A,主人公)[[せっかくでございますし、お暇でしたら\n少し南蛮かるたで遊んでいかれませんか?]] } 会話:(主人公,人物A)[[それでは少し遊んでいくと{しよう}]] //導入部END 会話選択:(人物A,主人公)[[どの遊戯でお遊びになりますか?]] 選択:([[やめる]][[大か小か]][[黒の騎士]]) 分岐:([[やめる]]){ 会話:(人物A,主人公)[[あら、おやめになるのですか?]] 会話:(人物A,主人公)[[それでは、また次の機会に\nよろしくお願いいたしますね]] } 分岐:([[大か小か]]){//ビッグオアスモール //前説START 会話:(人物A,主人公)[[『大か小か』でございますね]] 会話可否選択:(人物A,主人公)[[遊戯内容のご説明をいたしましょうか?]] 分岐:(可){ 会話:(主人公,人物A)[[よろしくお願い{いたす}]] 会話:(人物A,主人公)[[それでは……]] 会話:(人物A,主人公)[[まずはじめに5貫を賭けていただきます]] 会話:(人物A,主人公)[[そして{一人称}が札を一枚めくりますので\n{二人称}には次の札がその札より\n大きいか小さいかを当てていただきます]] 会話:(人物A,主人公)[[そして連勝数に応じまして{人物B.名前}の\n集めたがらく……けほん、けほん……\n秘蔵の蒐集品の中から一品を差し上げます]] 会話:(主人公,人物A)[[……………………]] 会話:(人物A,主人公)[[最高で6連勝までとさせていただきますが\nその場合は価値4の貴重品を贈呈いたします]] 会話:(人物A,主人公)[[以下同様に、5連勝なら価値3\n4連勝なら価値2、3連勝なら価値1の\n貴重品をお渡しいたします]] 会話:(人物A,主人公)[[2連勝なら元の5貫をお返しいたしますし\n1勝の場合には半分をお返しいたしますが\n0勝の場合は残念ながら……]] 会話:(主人公,人物A)[[{はい}、まあ、それは{な}……]] 会話:(人物A,主人公)[[なお、前後の札が同じ数字の場合は\n引き分けとして続けますので……]] 会話:(人物A,主人公)[[負けがありえないAとKの場合は\n『大きい』『小さい』を選んだものとして\n続けさせていただきます]] 会話:(人物A,主人公)[[また、札に記されている記号ですが……\nスペードは▲、ハートは▽、クラブは■\nダイヤは◇で表し……]] 会話:(人物A,主人公)[[数字は1がA、11から13までは\nそれぞれJ、Q、Kで表しますので……]] 会話:(人物A,主人公)[[スペードの1は▲A、ハートの11は▽J\nクラブの5は■5……となります]] 会話:(人物A,主人公)[[以上でございます]] 会話:(主人公,人物A)[[かたじけない]] } 分岐:(否){ 会話:(人物A,主人公)[[既にご承知でございますか]] } //前説END 代入g:(10) //全体の挑戦回数 //所持金チェック 条件ブロック:(人物::主人公.所持金)<(5){//5貫ない 会話:(主人公,人物A)[[({おや}、今は持ち合わせが……)]] 会話:(人物A,主人公)[[どうかなさいましたか?]] 会話:(主人公,人物A)[[{すまん}、やはりまたの機会に……]] 会話:(人物A,主人公)[[あら、そうでございますか]] 会話:(人物A,主人公)[[では、またいらしてください]] 代入g:(0) //終了 } ループ:{//複数回挑戦ループSTART 調査:(g)<=(0) ブロック脱出:(真) 会話:(人物A,主人公)[[それでは始めるといたします]] BGM変更:(ミニゲーム) 会話:(人物A,主人公)[[まず5貫をいただきます]] SEスタート:(コイン) 所持金変更:(-5) //変数不可 //カード設定 //以下の4つは各スートの残り枚数 代入s:(13) //スペード 代入h:(13) //ハート 代入c:(13) //クラブ 代入d:(13) //ダイヤ //以下の4つは各スートの残り数字「2進数の1111111111111」で1から13を表す 代入i:(8191) //スペード 代入j:(8191) //ハート 代入k:(8191) //クラブ 代入l:(8191) //ダイヤ //以下は一時的に使用する変数 代入m:(8191) //カード判定時、ijklを代入して使用、判定後は桁の「1→0」に使用 代入y:(1) //カード判定時、任意の桁が1か0か、0ならその数はドロー済みなのでスキップ 代入v:(1) //カード判定後、2の(v-1)乗をマイナス、引いた数字の桁数を0にする //カードはスペードの1〜13、ハートの1〜13……と並んでいるものとし、ドロー後は詰める 代入o:(0) //ドローカードのスート(0スペード、1ハート、2クラブ、3ダイヤ) 代入z:(0) //ドローカードの数字(1〜13) 代入t:(52) //カード残り枚数 代入x:(0) //カード全体の何番目か(0〜51) //カード設定END //以下はゲーム個別の設定 代入a:(0) //連勝数 代入b:(0) //プレイヤーの選択(0大きい、1小さい) 代入f:(1) //勝敗(0勝ち、1引き分け、2負け) 代入p:(99) //前回のスート(99なら1枚目) 代入q:(99) //前回の数字(同上) 代入n:(0) //結果メッセージ分岐用 代入u:(0) //賞品アイテムの価値と個数に使用 文字列設定:(文字列A)[[]] //今回引いたカードに使用 文字列設定:(文字列B)[[]] //これまでの結果表示に使用 文字列設定:(文字列C)[[]] //プレイヤーの選択(大きい、小さい) 代入アイテムA:(アイテム::無効) //賞品 ループ:{//挑戦ループSTART //カードドロー部START 代入z:(0) //ドローカードの数字をリセット 代入x:(Rnd)%(t) //ドローカード(残りカードの中のx番目) //以下カード判定、スート、数字の順に確定 //確定後、該当スートとその該当数字(二進数の各桁)、カード総数をそれぞれマイナス1 調査:(x)<(s) //s以下ならスペード 分岐:(真){//スペードに確定、以下判定部分は全スート同じ 代入m:(i) //各桁の判定用(2で割っていくため元の変数は使わない) 条件ループ:(x)>=(0){//数字確定ループSTART 代入z:(z)+(1) //数字は常に加算(xが0ならzは1) 代入y:(m)%(2) //現在の桁(カードの数字)は1か0か //該当数字がドロー済み(存在しない)の場合は次の桁へ 条件ブロック:(y)==(1){//その桁(数字)のカードが存在する 代入x:(x)-(1) //カードが存在するなら残り判定回数を減算 } 代入m:(m)/(2) //次の桁の判定用 }//数字確定ループEND //以下は残カードの処理 代入v:(z) //カードの数字(桁)、2の(v-1)乗をマイナス 代入m:(1) //マイナスする数、最小は1 条件ループ:(v)>(1){//2の(v-1)乗ループSTART 代入m:(m)*(2) //2倍して 代入v:(v)-(1) //判定回数減算 }//2の(v-1)乗ループEND 代入i:(i)-(m) //ドローした数字(桁)を1から0に 代入s:(s)-(1) //スートの残り枚数を一枚減らす 代入o:(0) //スートを代入、0はスペード } 分岐:(偽){//スペードではない 代入x:(x)-(s) //スペードの枚数を引く 調査:(x)<(h) //ハートか否か 分岐:(真){//ハート確定 代入m:(j) 条件ループ:(x)>=(0){ 代入z:(z)+(1) 代入y:(m)%(2) 条件ブロック:(y)==(1){ 代入x:(x)-(1) } 代入m:(m)/(2) } 代入v:(z) 代入m:(1) 条件ループ:(v)>(1){ 代入m:(m)*(2) 代入v:(v)-(1) } 代入h:(h)-(1) 代入j:(j)-(m) 代入o:(1) //1はハート } 分岐:(偽){//スペードでもハートでもない 代入x:(x)-(h) //ハートの枚数を引く(スペードは減算済み) 調査:(x)<(c) //クラブか否か 分岐:(真){//クラブ確定 代入m:(k) 条件ループ:(x)>=(0){ 代入z:(z)+(1) 代入y:(m)%(2) 条件ブロック:(y)==(1){ 代入x:(x)-(1) } 代入m:(m)/(2) } 代入v:(z) 代入m:(1) 条件ループ:(v)>(1){ 代入m:(m)*(2) 代入v:(v)-(1) } 代入c:(c)-(1) 代入k:(k)-(m) 代入o:(2) //2はクラブ } 分岐:(偽){//スペードでもハートでもクラブでもない(ダイヤ確定) 代入x:(x)-(c) //クラブの枚数を引く(スペード、ハートは減算済み) 代入m:(l) 条件ループ:(x)>=(0){ 代入z:(z)+(1) 代入y:(m)%(2) 条件ブロック:(y)==(1){ 代入x:(x)-(1) } 代入m:(m)/(2) } 代入v:(z) 代入m:(1) 条件ループ:(v)>(1){ 代入m:(m)*(2) 代入v:(v)-(1) } 代入d:(d)-(1) 代入l:(l)-(m) 代入o:(3) //3はダイヤ } } } 代入t:(t)-(1) //残りカード数マイナス1 //カードドロー部END //oにスート(0、1、2、3)、zに数字(1〜13)が格納された 調査:(o)==(0) //スート変換 分岐:(真){//スペード 文字列設定:(文字列A)[[▲]] } 分岐:(偽){ 調査:(o)==(1) 分岐:(真){//ハート 文字列設定:(文字列A)[[▽]] } 分岐:(偽){ 調査:(o)==(2) 分岐:(真){//クラブ 文字列設定:(文字列A)[[■]] } 分岐:(偽){//(o)==(3)ダイヤ 文字列設定:(文字列A)[[◇]] } } } 調査:(z)==(1) //絵札変換&スート連結 分岐:(真){//A 文字列設定:(文字列A)[[<文字列A>A]] } 分岐:(偽){ 調査:(z)==(11) 分岐:(真){//J 文字列設定:(文字列A)[[<文字列A>J]] } 分岐:(偽){ 調査:(z)==(12) 分岐:(真){//Q 文字列設定:(文字列A)[[<文字列A>Q]] } 分岐:(偽){ 調査:(z)==(13) 分岐:(真){//K 文字列設定:(文字列A)[[<文字列A>K]] } 分岐:(偽){//絵札でなければそのまま 文字列設定:(文字列A)[[<文字列A><z>]] } } } } //以下はこれまでの結果の表示用 条件ブロック:(p)!=(99){//p==99なら初回 調査:(p)==(0) 分岐:(真){//スペード 文字列設定:(文字列B)[[<文字列B>▲]] } 分岐:(偽){ 調査:(p)==(1) 分岐:(真){//ハート 文字列設定:(文字列B)[[<文字列B>▽]] } 分岐:(偽){ 調査:(p)==(2) 分岐:(真){//クラブ 文字列設定:(文字列B)[[<文字列B>■]] } 分岐:(偽){//(p)==(3)ダイヤ 文字列設定:(文字列B)[[<文字列B>◇]] } } } } 条件ブロック:(q)!=(99){//q==99なら初回 調査:(q)==(1) 分岐:(真){//A 文字列設定:(文字列B)[[<文字列B>A…]] } 分岐:(偽){ 調査:(q)==(11) 分岐:(真){//J 文字列設定:(文字列B)[[<文字列B>J…]] } 分岐:(偽){ 調査:(q)==(12) 分岐:(真){//Q 文字列設定:(文字列B)[[<文字列B>Q…]] } 分岐:(偽){ 調査:(q)==(13) 分岐:(真){//K 文字列設定:(文字列B)[[<文字列B>K…]] } 分岐:(偽){//絵札でなければそのまま 文字列設定:(文字列B)[[<文字列B><q>…]] } } } } } //結果判定部START 調査:(p)!=(99) //1回目は判定を行わない(前回のカードが存在しない) 分岐:(真){//2回目以降 会話:(人物A,主人公)[[それでは札をめくります]] SEスタート:(ジョーズ@) 会話:(人物A,主人公)[[前回までは<文字列B>\n{二人称}の予想は『<文字列C>』]] SEスタート:(札めくり音) 会話:(人物A,主人公)[[前回までは<文字列B>\n{二人称}の予想は『<文字列C>』今回は<文字列A>]] 調査:(q)==(z) //qは前回、zは今回 分岐:(真){//引き分け 代入f:(1) //引き分け SEスタート:(バー上昇) 会話:(主人公,人物A)[[おっと]] 会話:(人物A,主人公)[[あら、前の札と同じですね……\n今回は引き分けでございます]] OR調査:{//1か13が連続 調査:(z)==(1) 調査:(z)==(13) } 分岐:(真){ 会話:(人物A,主人公)[[うふふ、少々もったいのうございますね]] } } 分岐:(偽){//引き分けではない 代入n:(z)-(q) //メッセージ分岐用に差を計算 条件ブロック:(q)>(z){//同上 代入n:(q)-(z) } OR調査:{//以下のどちらかなら当たり AND調査:{ 調査:(b)==(0) //大きいと予想して 調査:(q)<(z) //今回の方が大きい } AND調査:{ 調査:(b)==(1) //小さいと予想して 調査:(q)>(z) //今回の方が小さい } } 分岐:(真){//当たりなら続くが6勝したら強制終了、5勝目が1か13の場合も同じ 代入a:(a)+(1) //勝ち数追加 代入f:(0) //勝ち SEスタート:(プレイヤー勝利) 会話:(人物A,主人公)[[ということは当たりでございますね\nおめでとうございます! <a>勝目ですよ]] 調査:(n)==(1) 分岐:(真){//差が1で 条件ブロック:(q)!=(1){//前の数字が1ではない(1なら負けはないので) 会話:(人物A,主人公)[[うふふ、危ないところでしたね]] } } 分岐:(偽){ 条件ブロック:(n)>=(8){//差が8以上 会話:(人物A,主人公)[[あらあら、余裕でございますね]] } } 条件ブロック:(a)>=(6){//6連勝した 会話:(人物A,主人公)[[お見事! <a>勝されましたので、今回は\nここまでにさせていただきます]] 代入f:(2) //終了させるため負け扱いに } AND調査:{ 調査:(a)==(5) //5勝目が OR調査:{ 調査:(z)==(1) //Aか 調査:(z)==(13) //Kなら } } 分岐:(真){//6連勝確定 会話:(人物A,主人公)[[あら? <a>勝目が<文字列A>ということは\nもう負けはございませんね]] 代入a:(a)+(1) 会話:(人物A,主人公)[[それではこの時点で<a>連勝達成!\nとさせていただきます]] 代入f:(2) //終了させるため負け扱いに } } 分岐:(偽){//はずれ 代入f:(2) //負け SEスタート:(プレイヤー敗北) 会話:(人物A,主人公)[[残念、はずれでございます……]] OR調査:{ AND調査:{ 調査:(q)<=(3) //前回が3以下だったので 調査:(b)==(0) //大きいと予想した } AND調査:{ 調査:(q)>=(11) //前回が11以上だったので 調査:(b)==(1) //小さいと予想した } } 分岐:(真){//が、負けた 会話:(主人公,人物A)[[何と……]] 会話:(人物A,主人公)[[あら、まあ……]] } 分岐:(偽){ 調査:(n)==(1) 分岐:(真){//差が1 会話:(人物A,主人公)[[惜しかったですね……]] } 分岐:(偽){ 条件ブロック:(n)==(9){//差が9以上(10で大きい→1等) 会話:(人物A,主人公)[[冒険実らず、でしたね]] } } } } } } //結果判定部END //後処理START(賞品授与か継続か) 調査:(f)==(2) //負け(6連勝の場合も) 分岐:(真){//終了、結果に応じて賞品授与 ブロック開始:{ 条件ブロック:(a)==(0){//0勝 SEスタート:(残念な音) 会話:(人物A,主人公)[[え、えっと、今回は<a>勝でございますね]] 会話:(主人公,人物A)[[……………………]] 会話:(人物A,主人公)[[ま、まあ、そのようなこともございますよ]] 代入t:(0) //脱出用 } 調査:(t)==(0) ブロック脱出:(真) 条件ブロック:(a)==(1){//1勝 SEスタート:(残念な音) 会話:(人物A,主人公)[[今回の結果は……\nあら、<a>勝でございますか……]] 会話:(人物A,主人公)[[それでは2貫500文をお返しいたします]] 所持金変更:(2.5) 代入t:(0) } 調査:(t)==(0) ブロック脱出:(真) 条件ブロック:(a)==(2){//2勝 SEスタート:(クリア音) 会話:(人物A,主人公)[[今回の結果は……<a>連勝でございました]] 会話:(人物A,主人公)[[それでははじめの5貫をお返しいたします]] 会話:(人物A,主人公)[[次は貴重品を目指して頑張ってくださいね]] 所持金変更:(5) 代入t:(0) } 調査:(t)==(0) ブロック脱出:(真) //以下は3勝以上、まとめて処理 代入u:(a)-(2) //3連勝なら価値1、4連勝なら価値2 SEスタート:(成功音) 会話:(人物A,主人公)[[今回の結果は……<a>連勝でございました]] 会話:(人物A,主人公)[[それでは連勝数に応じた賞品を\nお渡しいたします]] コンテナ設定:(アイテム,所有者,無効) コンテナソート:(アイテム,アイテム番号,昇順) コンテナ選抜:(残す,300) //自作アイテムを除外 コンテナ絞り込み:(アイテム,価値,u) //賞品候補 コンテナ除外:(アイテム,アイテムタイプ,酒) //酒を除外 コンテナ除外:(アイテム,アイテムタイプ,薬) //薬を除外 コンテナ除外:(アイテム,所有個数,99) //99個所持アイテムを除外 コンテナソート:(無効,シャッフル,昇順) コンテナ選択:(アイテムA,先頭) 分岐:(真){ SEスタート:(鼓の音) 会話:(人物A,主人公)[[価値<u>の貴重品の中から\n<アイテムA>でございます]] 代入u:(アイテム::アイテムA.所有個数)+(1) //価値から個数に 更新:(アイテム::アイテムA.所有個数)(u) スチル表示:(アイテム,アイテムA,無効,無効,フェード) 調査:(a)>=(5) 分岐:(真){//5連勝以上 会話:(人物A,主人公)[[おめでとうございます!]] } 分岐:(偽){ 会話:(人物A,主人公)[[おめでとうございます]] } スチル消去:(フェード) 代入t:(0) //終了 } 分岐:(偽){//アイテムがいっぱい 会話:(人物A,主人公)[[あら、{二人称}も手持ちがいっぱいで\nございますね]] SEスタート:(コイン) 会話:(人物A,主人公)[[それでは最初にお預かりした5貫を\nお返しいたします]] 所持金変更:(5) 代入t:(0) //終了 } 調査:(t)==(0) ブロック脱出:(真) } 代入t:(0) //念のため } 分岐:(偽){//勝ちか引き分けで継続、1回目も含まれる(6連勝は負け扱いのため不要) 調査:(p)!=(99) 分岐:(真){//2回目以降 会話:(人物A,主人公)[[それでは続けてまいります]] } 分岐:(偽){//1回目 会話:(人物A,主人公)[[それでは札をめくります]] SEスタート:(札めくり音) } OR調査:{ 調査:(z)==(1) //1もしくは 調査:(z)==(13) //13の場合は選択肢なし } 分岐:(真){//自動選択 会話:(人物A,主人公)[[これまでの結果は\n<文字列B><文字列A>…ですが]] 会話:(人物A,主人公)[[前の札が<z>なので、今回は大小を\n選んでいただく必要はございません]] 会話:(主人公,人物A)[[{はい}]] 調査:(z)==(1) 分岐:(真){//1だった 代入b:(0) 文字列設定:(文字列C)[[大きい]] } 分岐:(偽){//13だった 代入b:(1) 文字列設定:(文字列C)[[小さい]] } } 分岐:(偽){//通常処理 会話選択:(人物A,主人公)[[<文字列B><文字列A>…\nさて、お次は?]] 選択:([[大きい]][[小さい]]) 分岐:([[大きい]]){ 代入b:(0) 文字列設定:(文字列C)[[大きい]] 条件ブロック:(z)>=(9){//9以上で大きい 会話:(人物A,主人公)[[あら、大胆な……]] } 条件ブロック:(z)<=(3){//3以下で大きい 会話:(人物A,主人公)[[これは大丈夫でございますよね]] } } 分岐:([[小さい]]){ 代入b:(1) 文字列設定:(文字列C)[[小さい]] 条件ブロック:(z)<=(5){//5以下で小さい 会話:(人物A,主人公)[[あら、大胆な……]] } 条件ブロック:(z)>=(11){//11以上で小さい 会話:(人物A,主人公)[[これは大丈夫でございますよね]] } } AND調査:{//6から8の間 調査:(z)>=(6) 調査:(z)<=(8) } 分岐:(真){ 会話:(人物A,主人公)[[なかなか難しいところでございますが……]] } } SEスタート:(鼓の音) 会話:(人物A,主人公)[[<文字列A>より『<文字列C>』\nでございますね]] 代入p:(o) //今回のスートを保存 代入q:(z) //今回の数字を保存(比較用) } //後処理END //カードを引き切ったら何らかの処理が必要だが、ここでは制限(6連勝)を設けているので脱出用 調査:(t)<=(0) ブロック脱出:(真) }//挑戦ループEND(1回のゲームが終了) //以下はゲーム自体を終えるかどうか処理 代入g:(g)-(1) //残り回数マイナス1 調査:(g)>(0) 分岐:(真){//続ける? 会話可否選択:(人物A,主人公)[[まだ、お続けになりますか?]] 分岐:(可){ 会話:(人物A,主人公)[[心得ました、では……]] 条件ブロック:(人物::主人公.所持金)<(5){//持ち合わせがない 会話:(主人公,人物A)[[(しまった、もう持ち合わせが……)]] 会話:(主人公,人物A)[[{すまん}、やはりもうそろそろ……]] 会話:(人物A,主人公)[[あら、そうでございますか……]] 会話:(主人公,人物A)[[それでは、またそのうち……]] 会話:(人物A,主人公)[[はい、お疲れ様でした]] 代入g:(0) //終了 } } 分岐:(否){ 会話:(人物A,主人公)[[おやめになるのでございますね]] 会話:(人物A,主人公)[[お疲れ様でした\nそれでは、また……]] 代入g:(0) //残り回数0に } } 分岐:(偽){//規定回数終了 会話:(人物A,主人公)[[あら、もうこんな時間……]] 会話:(人物A,主人公)[[申しわけございませんが\n今回はこれまでということで……]] 会話:(主人公,人物A)[[{はい}、時のたつのは早いもの{だ}{な}]] 会話:(人物A,主人公)[[よろしかったら、またいらしてください]] 会話:(人物A,主人公)[[それでは、ごきげんよう……]] } }//複数回挑戦ループEND 外に出す: //遊んだ場合のみ外へ }//ビッグオアスモールEND 分岐:([[黒の騎士]]){//ブラックジャック 会話:(人物A,主人公)[[『黒の騎士』でございますね]] 会話可否選択:(人物A,主人公)[[遊戯内容のご説明をいたしましょうか?]] 分岐:(可){ 会話:(主人公,人物A)[[よろしくお願い{いたす}]] 会話:(人物A,主人公)[[それでは……]] 会話:(人物A,主人公)[[まずはじめに5貫単位で25貫までを\n賭けていただきます]] 会話:(人物A,主人公)[[そして{一人称}が親となり\n子の{二人称}に二枚\n親の{一人称}にも二枚の札を配ります]] 会話:(人物A,主人公)[[{二人称}の札は二枚とも開かれますが\n{一人称}の札は一枚目を伏せてあり\n勝負する際に開くことになります]] 会話:(人物A,主人公)[[目的は札の合計で21か、できる限り\n21に近い数を作ることですが\n21を超えてしまうと……]] 会話:(主人公,人物A)[[超えてしまうと?]] 会話:(人物A,主人公)[[即、その時点で負けとなります\n特に先に引かれる{二人称}がそうなると\n{一人称}は札を引く必要すらございません]] 会話:(主人公,人物A)[[なるほど……]] 会話:(人物A,主人公)[[ただし、親の{一人称}は引くかやめるかを\nみずから決めることはできません]] 会話:(人物A,主人公)[[『17以上になるまでは必ず引く』\n『17以上になったら必ず終わる』\nことになっておりますので……]] 会話:(人物A,主人公)[[引くかやめるかを、一枚だけとはいえ\n{一人称}の札を見ながら決められる{二人称}の\n選択がより重要となります]] 会話:(主人公,人物A)[[ふむふむ……]] 会話:(人物A,主人公)[[それとはじめの二枚の時点で既に21が\n完成していた場合は即、完成していた方の\n勝ちとなります]] 会話:(主人公,人物A)[[{おや}、相手が後から21になる可能性も\nあるのでは?]] 会話:(人物A,主人公)[[そうでございますが……\nまあ、ご祝儀のようなものなのでしょう\nただ、両者21なら引き分けでございます]] 会話:(人物A,主人公)[[また、子の{二人称}がいきなり21で\n勝たれましたら、親の{一人称}は賭け金の\n二倍をお支払いします]] 会話:(主人公,人物A)[[では、{二人称}がいきなり21で勝ったら?]] 会話:(人物A,主人公)[[その場合は賭け金のみ頂くことになります\nそれ以上に頂くことはございません\nご安心を]] 会話:(主人公,人物A)[[ふむ]] 会話:(人物A,主人公)[[なお、この遊戯ではJ、Q、Kはいずれも\n10と数えることになっており……]] 会話:(人物A,主人公)[[さらにAは1以外に11と数えることも\nでき、常に有利な方で計算できます]] 会話:(主人公,人物A)[[つまり、二枚で21というのは……]] 会話:(人物A,主人公)[[ええ、一枚がAであり、なおかつ\nもう一枚が10、J、Q、Kの時に\n可能です]] 会話:(人物A,主人公)[[また、札に記されている記号ですが……\nスペードは▲、ハートは▽、クラブは■、ダイヤは◇で表しますので]] 会話:(人物A,主人公)[[▲Qはスペードの12、▽Aはハートの1\n◇8はダイヤの8、となります]] 会話:(人物A,主人公)[[以上でございます]] 会話:(主人公,人物A)[[かたじけない]] } 分岐:(否){ 会話:(人物A,主人公)[[既にご承知でございますか]] } 代入g:(10) //ゲーム回数 代入w:(1) //賭けた金額の単位(5貫単位) 代入u:(0) //所持金変更ループと金額管理用 条件ブロック:(人物::主人公.所持金)<(5){//持ち合わせがない 会話:(主人公,人物A)[[({おや}、今は持ち合わせが……)]] 会話:(人物A,主人公)[[どうかなさいましたか?]] 会話:(主人公,人物A)[[{すまん}、やはりまたの機会に……]] 会話:(人物A,主人公)[[あら、そうでございますか]] 会話:(人物A,主人公)[[では、またいらしてください]] 代入g:(0) //終了 } 条件ブロック:(人物::主人公.所持金)>(99950){//持ち合わせ過ぎ 会話:(人物A,主人公)[[あら、それ以上お稼ぎになっても\nもう持ち歩けないのでは……?]] 会話:(主人公,人物A)[[おっと、確かに……]] 会話:(人物A,主人公)[[どこかでお使いになるか\n自宅にお預けになるかいたして\nまたお越しください]] 会話:(主人公,人物A)[[{はい}、そう{しよう}]] 会話:(人物A,主人公)[[それでは、また……]] 代入g:(0) //終了 } ループ:{//複数回挑戦ループSTART 調査:(g)<=(0) ブロック脱出:(真) 会話:(人物A,主人公)[[それでは始めるといたします]] BGM変更:(ミニゲーム) 会話選択:(人物A,主人公)[[何貫お賭けになりますか?]] 選択:([[5貫]][[10貫]][[15貫]][[20貫]][[25貫]]) 分岐:([[5貫]]){ 代入w:(1) 会話:(主人公,人物A)[[よし、5貫{だ}]] 会話:(人物A,主人公)[[それでは、まず5貫をお預かりします]] } 分岐:([[10貫]]){ 代入w:(2) 会話:(主人公,人物A)[[よし、10貫{だ}]] 会話:(人物A,主人公)[[それでは、まず10貫をお預かりします]] } 分岐:([[15貫]]){ 代入w:(3) 会話:(主人公,人物A)[[よし、15貫{だ}]] 会話:(人物A,主人公)[[それでは、まず15貫をお預かりします]] } 分岐:([[20貫]]){ 代入w:(4) 会話:(主人公,人物A)[[よし、20貫{だ}]] 会話:(人物A,主人公)[[それでは、まず20貫をお預かりします]] } 分岐:([[25貫]]){ 代入w:(5) 会話:(主人公,人物A)[[よし、25貫{だ}]] 会話:(人物A,主人公)[[それでは、まず25貫をお預かりします]] } SEスタート:(コイン) 代入u:(w) 条件ループ:(u)>(0){//所持金変更ループSTART 調査:(人物::主人公.所持金)>=(5) 分岐:(真){ 所持金変更:(-5) //変数不可 代入u:(u)-(1) } 分岐:(偽){//引けない 代入w:(w)-(u) //賭け金の変更 代入u:(w)*(5) 会話:(主人公,人物A)[[(持ち合わせが足りぬよう{だ}{な})]] 会話:(主人公,人物A)[[{すまん}、やはり<u>貫にして{くれ}]] 会話:(人物A,主人公)[[了解いたしました]] 代入u:(0) } }//所持金変更ループEND //カード設定 //以下の4つは各スートの残り枚数 代入s:(13) //スペード 代入h:(13) //ハート 代入c:(13) //クラブ 代入d:(13) //ダイヤ //以下の4つは各スートの残り数字「2進数の1111111111111」で1から13を表す 代入i:(8191) //スペード 代入j:(8191) //ハート 代入k:(8191) //クラブ 代入l:(8191) //ダイヤ //以下は一時的に使用する変数 代入m:(8191) //カード判定時、ijklを代入して使用、判定後は桁の「1→0」に使用 代入y:(1) //カード判定時、任意の桁が1か0か、0ならその数はドロー済みなのでスキップ 代入v:(1) //カード判定後、2の(v-1)乗をマイナス、引いた数字の桁数を0にする //カードはスペードの1〜13、ハートの1〜13……と並んでいるものとし、ドロー後は詰める 代入o:(0) //ドローカードのスート(0スペード、1ハート、2クラブ、3ダイヤ) 代入z:(0) //ドローカードの数字(1〜13) 代入t:(52) //カード残り枚数 代入x:(0) //カード全体の何番目か(0〜51) //カード設定END //以下はゲームごとに設定 代入a:(1) //現在何枚目か、4枚目(子2枚、親2枚)までは自動進行 代入b:(0) //結果(0継続、1親勝ち、2引き分け、3子勝ち) 代入e:(0) //親の素の点数 代入f:(0) //親のA、あれば10 代入p:(0) //子の素の点数 代入q:(0) //子のA、あれば10 代入n:(0) //子のターンなら0、子が終了したら1 代入r:(0) //特殊なケース(0通常、1ダブルダウン、2サレンダー) 文字列設定:(文字列A)[[]] //今回の手札 文字列設定:(文字列B)[[]] //子のこれまでの手札 文字列設定:(文字列C)[[]] //子の点数(選択決定用)、親の点数は終了時以外非公開のため不要 文字列設定:(文字列D)[[]] //親のこれまでの手札(オープン時) 文字列設定:(文字列E)[[]] //親のこれまでの手札(1枚クローズ時) ループ:{//挑戦ループSTART //カードドロー部START 代入z:(0) //ドローカードの数字をリセット 代入x:(Rnd)%(t) //ドローカード(残りカードの中のx番目) //以下カード判定、スート、数字の順に確定 //確定後、該当スートとその該当数字(二進数の各桁)、カード総数をそれぞれマイナス1 調査:(x)<(s) //s以下ならスペード 分岐:(真){//スペードに確定、以下判定部分は全スート同じ 代入m:(i) //各桁の判定用(2で割っていくため元の変数は使わない) 条件ループ:(x)>=(0){//数字確定ループSTART 代入z:(z)+(1) //数字は常に加算(xが0ならzは1) 代入y:(m)%(2) //現在の桁(カードの数字)は1か0か //該当数字がドロー済み(存在しない)の場合は次の桁へ 条件ブロック:(y)==(1){//その桁(数字)のカードが存在する 代入x:(x)-(1) //カードが存在するなら残り判定回数を減算 } 代入m:(m)/(2) //次の桁の判定用 }//数字確定ループEND //以下は残カードの処理 代入v:(z) //カードの数字(桁)、2の(v-1)乗をマイナス 代入m:(1) //マイナスする数、最小は1 条件ループ:(v)>(1){//2の(v-1)乗ループSTART 代入m:(m)*(2) //2倍して 代入v:(v)-(1) //判定回数減算 }//2の(v-1)乗ループEND 代入i:(i)-(m) //ドローした数字(桁)を1から0に 代入s:(s)-(1) //スートの残り枚数を一枚減らす 代入o:(0) //スートを代入、0はスペード } 分岐:(偽){//スペードではない 代入x:(x)-(s) //スペードの枚数を引く 調査:(x)<(h) //ハートか否か 分岐:(真){//ハート確定 代入m:(j) 条件ループ:(x)>=(0){ 代入z:(z)+(1) 代入y:(m)%(2) 条件ブロック:(y)==(1){ 代入x:(x)-(1) } 代入m:(m)/(2) } 代入v:(z) 代入m:(1) 条件ループ:(v)>(1){ 代入m:(m)*(2) 代入v:(v)-(1) } 代入h:(h)-(1) 代入j:(j)-(m) 代入o:(1) //1はハート } 分岐:(偽){//スペードでもハートでもない 代入x:(x)-(h) //ハートの枚数を引く(スペードは減算済み) 調査:(x)<(c) //クラブか否か 分岐:(真){//クラブ確定 代入m:(k) 条件ループ:(x)>=(0){ 代入z:(z)+(1) 代入y:(m)%(2) 条件ブロック:(y)==(1){ 代入x:(x)-(1) } 代入m:(m)/(2) } 代入v:(z) 代入m:(1) 条件ループ:(v)>(1){ 代入m:(m)*(2) 代入v:(v)-(1) } 代入c:(c)-(1) 代入k:(k)-(m) 代入o:(2) //2はクラブ } 分岐:(偽){//スペードでもハートでもクラブでもない(ダイヤ確定) 代入x:(x)-(c) //クラブの枚数を引く(スペード、ハートは減算済み) 代入m:(l) 条件ループ:(x)>=(0){ 代入z:(z)+(1) 代入y:(m)%(2) 条件ブロック:(y)==(1){ 代入x:(x)-(1) } 代入m:(m)/(2) } 代入v:(z) 代入m:(1) 条件ループ:(v)>(1){ 代入m:(m)*(2) 代入v:(v)-(1) } 代入d:(d)-(1) 代入l:(l)-(m) 代入o:(3) //3はダイヤ } } } 代入t:(t)-(1) //残りカード数マイナス1 //カードドロー部END //oにスート(0、1、2、3)、zに数字(1〜13)が格納された 調査:(o)==(0) 分岐:(真){//スペード 文字列設定:(文字列A)[[▲]] } 分岐:(偽){ 調査:(o)==(1) 分岐:(真){//ハート 文字列設定:(文字列A)[[▽]] } 分岐:(偽){ 調査:(o)==(2) 分岐:(真){//クラブ 文字列設定:(文字列A)[[■]] } 分岐:(偽){//(o)==(3)ダイヤ 文字列設定:(文字列A)[[◇]] } } } 調査:(z)==(1) 分岐:(真){//A 文字列設定:(文字列A)[[<文字列A>A]] } 分岐:(偽){ 調査:(z)==(11) 分岐:(真){//J 文字列設定:(文字列A)[[<文字列A>J]] } 分岐:(偽){ 調査:(z)==(12) 分岐:(真){//Q 文字列設定:(文字列A)[[<文字列A>Q]] } 分岐:(偽){ 調査:(z)==(13) 分岐:(真){//K 文字列設定:(文字列A)[[<文字列A>K]] } 分岐:(偽){//絵札でなければそのまま 文字列設定:(文字列A)[[<文字列A><z>]] } } } } 条件ブロック:(z)>=(11){//JQKは10に 代入z:(10) } //文字列Aは今回の手札 //文字列Bはプレイヤーのこれまでの手札 //文字列Cはプレイヤーの点数表示(Aがあれば二つ) //文字列Dは相手のこれまでの手札 //文字列Eは相手のこれまでの手札(一枚目伏せパターン) //カード加算START 調査:(a)<=(4) 分岐:(真){//カード4枚(子2枚、親2枚)までは配るだけ、4枚目そろったらいったん両方の21を判定 調査:(a)==(1) 分岐:(真){//1枚目(子1) 代入p:(z) 条件ブロック:(z)==(1){//Aがあれば10増える可能性がある(ただし2枚あっても20は増やせない) 代入q:(10) } 文字列設定:(文字列B)[[<文字列A>と]] //すぐには使わない(結果保存用) } 分岐:(偽){ 調査:(a)==(2) 分岐:(真){//2枚目(子2) 代入p:(p)+(z) //加算 条件ブロック:(z)==(1){//Aを引いた 代入q:(10) } 文字列設定:(文字列C)[[<p>]] //Aがなければこれで可 条件ブロック:(q)==(10){//Aがある場合 調査:(p)==(11) //A+10(or絵札)のケース 分岐:(真){//21なら確定、いわゆるブラックジャック 代入p:(p)+(q) 文字列設定:(文字列C)[[<p>]] } 分岐:(偽){//21ではないなら二通り表示 代入p:(p)+(q) //Aを11と数えた点数を 文字列設定:(文字列C)[[<文字列C>か<p>]] //連結して 代入p:(p)-(q) //素の点数は元に戻す } } 文字列設定:(文字列B)[[<文字列B><文字列A>]] //1枚目の結果と連結 会話:(人物A,主人公)[[まず最初の二枚でございますが……]] SEスタート:(札めくり音) 会話:(人物A,主人公)[[{二人称}の札は<文字列B>なので<文字列C>です]] 条件ブロック:(p)==(21){//いきなり21 SEスタート:(成功音) 会話:(主人公,人物A)[[お! これは……]] 会話:(人物A,主人公)[[あら、<p>ではございませんか……!\n{一人称}も<p>でないと負けでございますね……]] } 会話:(人物A,主人公)[[{一人称}の方は……]] } 分岐:(偽){ 調査:(a)==(3) 分岐:(真){//3枚目(親1)伏せ札 代入e:(z) 条件ブロック:(z)==(1){//Aあり 代入f:(10) } 文字列設定:(文字列D)[[<文字列A>と]] //保存用、ただし結果が出るまで表示されない 文字列設定:(文字列E)[[??と]] //保存用、結果が出るまではこちらを表示 } 分岐:(偽){//四枚目(親2) 代入e:(e)+(z) 条件ブロック:(z)==(1){//Aを引いた 代入f:(10) } 条件ブロック:(f)==(10){ 条件ブロック:(e)==(11){//21になる場合 代入e:(e)+(f) } } 文字列設定:(文字列D)[[<文字列D><文字列A>]] //親1公開パターン 文字列設定:(文字列E)[[<文字列E><文字列A>]] //親1非公開パターン 会話:(人物A,主人公)[[{一人称}の札は<文字列E>です]] 条件ブロック:(e)==(21){//21なら公開 SEスタート:(成功音) 会話:(人物A,主人公)[[あら! <文字列D>で<e>でございます!\nうふふ……]] 会話:(主人公,人物A)[[何と!?]] } //4枚出そろったところで一回判定、eは親の点数、pは子の点数 //いずれかが21なら即終了(相手は引けない) 調査:(e)==(21) 分岐:(真){//親が21で 調査:(p)==(21) 分岐:(真){//子も21なら引き分け SEスタート:(鼓の音) 会話:(人物A,主人公)[[{二人称}は<文字列B>で<文字列C>\n{一人称}も<文字列D>で<e>\nなので引き分けでございますね]] 会話:(人物A,主人公)[[惜しかったというのでしょうか\n助かったというべきなのでしょうか\nはてさて……]] 代入b:(2) //引き分け } 分岐:(偽){//子が21でないなら即負け SEスタート:(プレイヤー敗北) 会話:(人物A,主人公)[[{二人称}は<文字列B>で<文字列C>\n{一人称}は<文字列D>で<e>\nなので{一人称}の勝ちでございますね]] 会話:(人物A,主人公)[[こんなこともあるのでございますね]] 代入b:(1) //負け } } 分岐:(偽){//親が21でなく 調査:(p)==(21) 分岐:(真){//子が21なら即勝ち SEスタート:(コンボ札獲得音) 会話:(人物A,主人公)[[{二人称}は<文字列B>で<文字列C>\n{一人称}は<文字列D>で<e>\nなので{二人称}の勝ちでございます]] 会話:(人物A,主人公)[[そんな、いきなり…………]] 代入b:(3) //勝ち } 分岐:(偽){//子が21でないなら継続 SEスタート:(鼓の音) 会話:(人物A,主人公)[[{二人称}は<文字列B>で<文字列C>\n{一人称}は<文字列E>です\nどうなさいますか?]] 代入b:(0) //継続 } } } } } } 分岐:(偽){//5枚目以降は子の番、子が21以下で終えたら親の判定(継続か否か)後、親の番、親が21以下で終えたら比較判定 調査:(n)==(0) //子の番 分岐:(真){//子に加算 代入p:(p)+(z) 文字列設定:(文字列C)[[<p>]] 条件ブロック:(z)==(1){//Aを引いた 代入q:(10) } 条件ブロック:(q)==(10){//Aがある場合 調査:(p)==(11) 分岐:(真){//21になる場合 代入p:(p)+(q) 文字列設定:(文字列C)[[<p>]] } 分岐:(偽){ 条件ブロック:(p)<(11){//Aを11としても21を超えないなら両方表示 代入p:(p)+(q) 文字列設定:(文字列C)[[<文字列C>か<p>]] 代入p:(p)-(q) } } } 文字列設定:(文字列B)[[<文字列B>と<文字列A>]] //今回のカードを連結 SEスタート:(鼓の音) 会話:(人物A,主人公)[[{二人称}の札は<文字列B>で<文字列C>です]] } 分岐:(偽){//親に加算 代入e:(e)+(z) 条件ブロック:(z)==(1){//Aを引いた 代入f:(10) } 条件ブロック:(f)==(10){ 条件ブロック:(e)==(11){//21になる場合 代入e:(e)+(f) } } 文字列設定:(文字列D)[[<文字列D>と<文字列A>]] //公開パターン 文字列設定:(文字列E)[[<文字列E>と<文字列A>]] //非公開パターン SEスタート:(鼓の音) 会話:(人物A,主人公)[[{一人称}の札は<文字列E>でございます]] } } //カード加算END //結果&継続判定START //変数bは、0継続、1親勝ち、2引き分け、3子勝ち AND調査:{ 調査:(a)>=(4) //4枚目以降で 調査:(b)==(0) //継続時のみ判定 } 分岐:(真){//継続中 調査:(n)==(0) 分岐:(真){//子のターン、なお子2枚で21の場合はここに来ない 調査:(p)>(21) 分岐:(真){//21を超えたら強制終了、即負け SEスタート:(残念な音) 会話:(主人公,人物A)[[しまった……]] 会話:(人物A,主人公)[[あらあら……{二人称}は\n<文字列B>で<文字列C>ですからこれで終わりでございます]] 条件ブロック:(p)==(22){//22で負け 会話:(人物A,主人公)[[惜しいところでございました……]] } AND調査:{//14+9とか12+10とか 調査:(z)>=(9) 調査:(p)<=(23) } 分岐:(真){ 会話:(人物A,主人公)[[あら、これはまた何とも……]] } 条件ブロック:(r)==(1){//ダブルダウンで負け 会話:(人物A,主人公)[[勝負が裏目に出てしまいましたか]] } 代入b:(1) //負け、判定に移行 } 分岐:(偽){//21以下 調査:(r)==(1) 分岐:(真){//ダブルダウンした場合は強制的に親の番へ 調査:(p)==(21) 分岐:(真){//ダブルダウンで21 SEスタート:(成功音) 会話:(主人公,人物A)[[{おお}! これは……]] 会話:(人物A,主人公)[[何と、ここで<p>でございますか!\n素晴らしい決断でございました]] 会話:(人物A,主人公)[[次は{一人称}の番でございますね\n頑張らないと……]] } 分岐:(偽){//21ではない 会話:(人物A,主人公)[[先ほどのお約束どおり、{二人称}の番は\nここまででございます]] 会話:(人物A,主人公)[[{二人称}の札は<文字列B>の<文字列C>で決定となりました]] 会話:(人物A,主人公)[[次は{一人称}の番でございますね]] } 代入n:(1) //親の番へ } 分岐:(偽){//ダブルダウンしていない 調査:(p)==(21) 分岐:(真){//21なので終了、親のターンに移行 SEスタート:(成功音) 会話:(主人公,人物A)[[お! これは……]] 会話:(人物A,主人公)[[あら、<p>ではございませんか!]] 会話:(人物A,主人公)[[{二人称}は<文字列B>の<文字列C>なので\nもう引く必要はございません]] 条件ブロック:(a)==(5){//5枚目(子3)ダブルダウンのチャンスがあった 会話:(人物A,主人公)[[ふふ、先ほど倍賭けにしておけば……\nなんて思ってらっしゃいます?]] } 会話:(人物A,主人公)[[次は{一人称}の番でございますね\n頑張らないと……]] 代入n:(1) //親の番へ } 分岐:(偽){//21ではない 調査:(a)==(4) //最初の2枚の時点(全体では4枚目) 分岐:(真){ 会話:(人物A,主人公)[[なお、この時点で勝負を放棄して\n降りることもでき\nその場合は半額をお返しいたします]] 会話選択:(人物A,主人公)[[{二人称}は<文字列B>で<文字列C>\n{一人称}は<文字列E>です]] 選択:([[まだ札を引く]][[この手で勝負]][[勝負を降りる]]) 分岐:([[まだ札を引く]]){//さらに引く 会話:(主人公,人物A)[[もう一枚{もらえる}か{な}]] 会話:(人物A,主人公)[[承知しました]] 条件ブロック:(p)>=(17){//17以上で引く 会話:(人物A,主人公)[[……なかなか大胆でございますね]] } AND調査:{//ダブルダウン可能 代入u:(w)*(5) 調査:(人物::主人公.所持金)>=(u) //賭け金以上の額を持っている } 分岐:(真){//所持金が足りない場合は不可 会話選択:(人物A,主人公)[[なお、次の一枚を最後と決めて\n賭け金を倍にすることもできます]] 選択:([[次の札を最後にして倍賭け]][[普通に続ける]]) 分岐:([[次の札を最後にして倍賭け]]){//ダブルダウン 会話:(主人公,人物A)[[そう{だ}{な}\n次の一枚に賭けると{しよう}]] 会話:(人物A,主人公)[[了解いたしました\n次の一枚が何であれ、そこで\n{二人称}の番は終わりとなります]] 会話:(人物A,主人公)[[それでは、はじめにお預かりした額と\n同じ額を、またお預かりいたします]] SEスタート:(コイン) 代入u:(w) 条件ループ:(u)>(0){//さらに同額引いて 所持金変更:(-5) 代入u:(u)-(1) } 代入w:(w)*(2) //賭け金(単位)を倍に 代入r:(1) //ダブルダウンした } 分岐:([[普通に続ける]]){//ダブルダウンなし 会話:(主人公,人物A)[[{いいえ}、今回は普通に引くと{しよう}]] } } 会話:(人物A,主人公)[[それでは次の札を配ります]] } 分岐:([[この手で勝負]]){//子の点数を確定して親の番に移行 会話:(主人公,人物A)[[よし、{一人称}はこの手で勝負{しよう}]] 条件ブロック:(q)==(10){//Aがある場合 条件ブロック:(p)<=(11){//足して21を超えないなら足して 代入p:(p)+(q) 文字列設定:(文字列C)[[<p>]] //大きい方に確定 } } 条件ブロック:(p)<=(13){//13以下でストップ 会話:(人物A,主人公)[[あら、もうよろしいのですか?]] } 会話:(人物A,主人公)[[<文字列B>の<文字列C>で\n勝負されるのでございますね]] 会話:(人物A,主人公)[[それでは{一人称}の番でございます]] 代入n:(1) } 分岐:([[勝負を降りる]]){ 会話:(主人公,人物A)[[(今回は勝ち目がなさそう{だ})]] 会話:(主人公,人物A)[[そう{だ}{な}\n今回は降りると{しよう}]] 会話:(人物A,主人公)[[時には退くことも大事でございますよね]] 代入b:(1) //負け 代入r:(2) //サレンダーした } } 分岐:(偽){//子の4枚目以降、ダブルダウンもサレンダーも不可 会話選択:(人物A,主人公)[[{二人称}は<文字列B>で<文字列C>\n{一人称}は<文字列E>です]] 選択:([[まだ札を引く]][[この手で勝負]]) 分岐:([[まだ札を引く]]){//さらに引く 会話:(主人公,人物A)[[もう一枚もらうと{しよう}か]] 会話:(人物A,主人公)[[承知しました]] 条件ブロック:(p)>=(17){//17以上で引く 会話:(人物A,主人公)[[……なかなか大胆でございますね]] } 会話:(人物A,主人公)[[それでは次の札を配ります]] } 分岐:([[この手で勝負]]){//子の点数を確定して親の番に移行 会話:(主人公,人物A)[[よし、{一人称}はこの手で勝負{しよう}]] 条件ブロック:(q)==(10){//Aがある場合 条件ブロック:(p)<=(11){//足して21を超えないなら足して 代入p:(p)+(q) 文字列設定:(文字列C)[[<p>]] //大きい方に確定 } } 条件ブロック:(p)<=(13){//13以下でストップ 会話:(人物A,主人公)[[あら、もうよろしいのですか?]] } 会話:(人物A,主人公)[[<文字列B>の<文字列C>で\n勝負されるのでございますね]] 会話:(人物A,主人公)[[それでは{一人称}の番でございます]] 代入n:(1) } } } } } }//子の判定ここまで //以下の判定は上記と排他ではない(子が終えて親に移行する瞬間に親のチェックも必要なため) 調査:(n)==(1) 分岐:(真){//親のターン、ただしドロー前に17チェック、親2枚で21の場合はここに来ない 会話:(人物A,主人公)[[さて……]] //親の手判定、17未満は強制ドロー、17以上は強制ストップ 条件ブロック:(f)==(10){//Aがあって 条件ブロック:(e)<=(11){//足しても21を超えず 条件ブロック:(e)>=(7){//17以上なら加算 代入e:(e)+(f) } } } 調査:(e)>=(17) 分岐:(真){//親も終了して判定、結果表示には文字列Dを使用 調査:(e)>(21) 分岐:(真){//親が21を超えた、子は21以下でないと親に回らないので親が即負け SEスタート:(決定音(ドン)) 会話:(人物A,主人公)[[あら……{一人称}は<文字列D>で<e>となってしまいました……]] 会話:(人物A,主人公)[[残念、{一人称}の負けでございます]] 条件ブロック:(p)<=(13){//子が13以下でストップしている 会話:(人物A,主人公)[[これがねらいでしたのね……もう]] } 代入b:(3) } 分岐:(偽){//どちらも21を超えなければ比較による判定 条件ブロック:(e)!=(21){//21ではない 会話:(人物A,主人公)[[それでは{一人称}もここまでにいたします]] } 条件ブロック:(e)==(21){//21になった(3枚以上) SEスタート:(決定音(ドン)) 会話:(人物A,主人公)[[あら! <文字列D>なので\n<e>でございます! うふふ……]] 会話:(主人公,人物A)[[何と!?]] } 会話:(人物A,主人公)[[{一人称}は<文字列D>で<e>\n{二人称}は<文字列B>で<文字列C>……]] 調査:(p)!=(e) 分岐:(真){//引き分けではない 調査:(p)>(e) 分岐:(真){//子勝ち SEスタート:(プレイヤー勝利) 会話:(人物A,主人公)[[{二人称}の勝ちでございますね\nおめでとうございます!]] 条件ブロック:(p)==(21){//子が21で勝ち 会話:(人物A,主人公)[[<p>を出されては仕方がありませんね]] } 代入b:(3) } 分岐:(偽){//親勝ち SEスタート:(残念な音) 会話:(人物A,主人公)[[うふふ、{一人称}の勝ちでございますね]] 条件ブロック:(e)==(21){//親が21で勝ち 会話:(人物A,主人公)[[幸運でございました]] } 代入b:(1) } } 分岐:(偽){//引き分け SEスタート:(鼓の音) 会話:(人物A,主人公)[[今回は引き分けでございます]] 条件ブロック:(p)==(21){//子が21(つまり親も) 会話:(人物A,主人公)[[よい勝負でございましたね]] } 代入b:(2) } } } 分岐:(偽){//17未満なら継続、非公開なので文字列E 会話:(人物A,主人公)[[{一人称}は<文字列E>です\nそれでは続けて引きますね……]] SEスタート:(ジョーズ@) } } } //結果&継続判定END //結果処理START ブロック開始:{ 調査:(b)==(0) //継続中なら脱出 ブロック脱出:(真) //親勝ち 条件ブロック:(b)==(1){ 会話:(人物A,主人公)[[申しわけございません、うふふ]] 条件ブロック:(r)==(2){//サレンダーした 代入u:(w)*(5) //貫数 会話:(人物A,主人公)[[なお、今回は自ら降りられましたので\nはじめにお預かりした<u>貫の半分を\nお返しいたします]] SEスタート:(コイン) 代入u:(w) //単位 条件ループ:(u)>(0){ 所持金変更:(2.5) //(5貫の)半分ずつ返す 代入u:(u)-(1) } } 代入t:(0) //終了 } 調査:(t)==(0) ブロック脱出:(真) //引き分け 条件ブロック:(b)==(2){ 代入u:(w)*(5) //貫数 会話:(人物A,主人公)[[それでは、お預かりした<u>貫を\nお返しいたします]] SEスタート:(コイン) 代入u:(w) //単位 条件ループ:(u)>(0){//所持金変更ループ 所持金変更:(5) 代入u:(u)-(1) }//所持金変更ループEND 代入t:(0) //終了 } 調査:(t)==(0) ブロック脱出:(真) //子勝ち 条件ブロック:(b)==(3){ AND調査:{ 調査:(a)==(4) //4枚目(子2枚)で 調査:(p)==(21) //21だった } 分岐:(真){//即21のケース 代入u:(w)*(5) //貫数 代入u:(u)*(3) //元+倍返し 会話:(人物A,主人公)[[しかも今回は二枚で<p>でしたので\n倍返しでございます]] 会話:(人物A,主人公)[[はじめにお預かりした分も含めて\n<u>貫をお渡しいたします\n……まいりましたわ]] SEスタート:(コイン) 代入u:(w)*(3) //単位 条件ループ:(u)>(0){ 所持金変更:(5) 代入u:(u)-(1) } } 分岐:(偽){//普通の勝ち 代入u:(w)*(5) //貫数 代入u:(u)*(2) //元+勝ち分 会話:(人物A,主人公)[[それではお預かりした分も含めて\n<u>貫をお納めくださいませ]] SEスタート:(コイン) 代入u:(w)*(2) //単位 条件ループ:(u)>(0){ 所持金変更:(5) 代入u:(u)-(1) } } 代入t:(0) //終了 } 調査:(t)==(0) ブロック脱出:(真) } //結果処理END 代入a:(a)+(1) //枚数加算 //二人でブラックジャックの場合は最大でも17枚なので、ゲーム中にカードをリセットする必要はない 調査:(t)<=(0) ブロック脱出:(真) }//挑戦ループEND //以下はゲーム自体を終えるかどうか処理 代入g:(g)-(1) //残り回数マイナス1 調査:(g)>(0) 分岐:(真){//続ける? 会話可否選択:(人物A,主人公)[[まだ、お続けになりますか?]] 分岐:(可){ 会話:(人物A,主人公)[[心得ました、では……]] 条件ブロック:(人物::主人公.所持金)<(5){//持ち合わせがない 会話:(主人公,人物A)[[(しまった、もう持ち合わせが……)]] 会話:(主人公,人物A)[[{すまん}、やはりもうそろそろ……]] 会話:(人物A,主人公)[[あら、そうでございますか……]] 会話:(主人公,人物A)[[それでは、またそのうち……]] 会話:(人物A,主人公)[[はい、お疲れ様でした]] 代入g:(0) //終了 } 条件ブロック:(人物::主人公.所持金)>(99950){//持ち合わせ過ぎ 会話:(人物A,主人公)[[あら、それ以上お稼ぎになっても\nもう持ち歩けないのでは……?]] 会話:(主人公,人物A)[[おっと、確かに……]] 会話:(人物A,主人公)[[どこかでお使いになるか\n自宅にお預けになるかいたして\nまたお越しください]] 会話:(主人公,人物A)[[{はい}、そう{しよう}]] 会話:(人物A,主人公)[[それでは、また……]] 代入g:(0) //終了 } } 分岐:(否){ 会話:(人物A,主人公)[[おやめになるのでございますね]] 会話:(人物A,主人公)[[お疲れ様でした\nそれでは、また……]] 代入g:(0) //残り回数0に } } 分岐:(偽){//規定回数終了 会話:(人物A,主人公)[[あら、もうこんな時間……]] 会話:(人物A,主人公)[[申しわけございませんが\n今回はこれまでということで……]] 会話:(主人公,人物A)[[{はい}、時のたつのは早いもの{だ}{な}]] 会話:(人物A,主人公)[[よろしかったら、またいらしてください]] 会話:(人物A,主人公)[[それでは、ごきげんよう……]] } }//複数回挑戦ループEND 外に出す: }//ブラックジャック終了 }//スクリプトEND }//イベントEND }//チャプターEND //☆ルール、報酬等 //「ビッグオアスモール」 //目的−次に引くカードが現在のカードより大きいか小さいかを当てる(6連勝まで)。 //料金−5貫。 //報酬−6連勝で価値4の貴重品。以下価値3、価値2、価値1となり、2連勝で元返し、1勝で半額が戻る。 //備考−同じ数字の場合は引き分けとして、連勝数には入れない。AやKの場合は選択を省略。 //「ブラックジャック」 //目的−引いたカードの合計を21に近づける。21を超えたらその時点で負け。 //料金−5貫〜25貫(5貫単位)。 //報酬−通常の勝利は賭けた金額と同額が、最初の時点で21なら賭けた金額の倍額が、親から支払われる。 //備考−ダブルダウンあり(3枚目で終える条件で賭け金を倍にできる)。 //備考−サレンダーあり(2枚ずつ配られた時点で降参、半額が戻る。ただし親が21の場合はそちらが優先)。 //☆使用変数(フラグ、列挙値などは他のクラスの変数の流用も可能) //★人物関連 //人物A 人物Bの奥さん //人物B 旦那(MP主人) //★カード設定関連 //s スペードの残り枚数(0〜13) //h ハートの残り枚数(同上) //c クラブの残り枚数(同上) //d ダイヤの残り枚数(同上) //i スペードの残り数字(0000000000000〜1111111111111) //j ハートの残り数字(同上) //k クラブの残り数字(同上) //l ダイヤの残り数字(同上) //m カード数字の判定用に任意のスートの残り数字を代入、確定後は減算する数を代入(0000000000001〜1000000000000) //y カード数字の判定時、任意の桁を代入、1ならその数字は存在、0ならその数字はドロー済み(0 or 1) //v ドローした数字(を示す桁)、スートの残り数字から2の(v-1)乗を引けばその桁は0になる(1〜13) //o ドローカードのスート(0スペード、1ハート、2クラブ、3ダイヤ) //z ドローカードの数字(1〜13) //t カード残り枚数(0〜52) //x カード全体の何番目か(0〜51) //★共通 //g 残りゲーム数(0〜10) ※最大値は設定次第 //★以下はゲームごと //★「ビッグオアスモール」用 //a 連勝数(0〜6) ※最大値は設定次第 //b プレイヤーの選択(0大きい、1小さい) //f 勝敗(0勝ち、1引き分け、2負け) //p 前回のスート(0スペード、1ハート、2クラブ、3ダイヤ、99無効) //q 前回の数字(1〜13、99無効) //n 追加メッセージの判定に使用(1点差なら惜しい等) //u 賞品アイテムの価値(0〜7)と個数(0〜99) //文字列A 今回引いたカードを表示 //文字列B これまでの結果を連結して表示 //文字列C プレイヤーの選択(大きい or 小さい) //アイテムA 賞品アイテム //★「ブラックジャック」用 //w チップ的な単位(0〜5) ※最大値は設定次第、×5(これも設定による)が実際の貫 //u 所持金変更用(同上)と貫表示用(チップ×5) //a 現在配られている枚数、判定は4枚目(子2枚、親2枚)から //b 結果(0継続、1親勝ち、2引き分け、3子勝ち) //e 親の素の点数(Aを1として計算) //f 親のAの有無(0 or 10) //p 子の素の点数(Aを1として計算) //q 子のAの有無(0 or 10) //n 手番(0子、1親) //r 特殊な状況(0通常、1ダブルダウン、2サレンダー) //文字列A 今回の手札 //文字列B 子のこれまでの手札を連結 //文字列C 子の点数表示、Aがある場合二通りになるため //文字列D 親のこれまでの手札を連結(公開用) //文字列E 親のこれまでの手札を連結(非公開用、1枚目は??で表示) //☆イベントフラグ //イベントフラグ::南蛮歌留多事始−承前