自作戦闘指定ターンイベント



コンセプト 自作戦闘でも指定ターンで会話などイベントを発生させたい!
完成すると 自作戦闘でツクールバトルコマンドみたく「xターン以上・yターン毎」の処理が出来る。




◆注釈:ターン監視
◆条件分岐:主人公[1]がパーティにいる
 ◆条件分岐:変数[1141:主人公ターン数]がV[1155:主人公前ターン]
  ◆注釈:ターンが経過していない
  ◆
 :それ以外の場合
  ◆注釈:過去ターンに現在ターン代入
  ◆変数の操作:[1155:主人公前ターン]代入, 変数[1141:主人公ターン数]の値
  ◆注釈:何ターン以上からイベントを発生させるか?
  :  :「0」で指定なし。このイベントの前でもOK
  ◆変数の操作:[1159:指定ターン以上]代入, 0
  ◆注釈:何ターンごとにイベントを発生させるか?
  :  :「1」で毎ターン。このイベントの前でもOK
  :  :
  ◆変数の操作:[1160:指定ターン毎]代入, 0
  ◆注釈:条件別ターンイベント処理
  ◆条件分岐:変数[1159:指定ターン以上]が0
   ◆条件分岐:変数[1160:指定ターン毎]が1
    ◆注釈:毎ターン処理
    ◆効果音の演奏:A.TField  (ボリューム100%, テンポ100%, 左右バランス均等)
    ◆
   :それ以外の場合
    ◆注釈:指定ターン減算後「0」を基準として指定ターン毎で剰余
    :  :◆注釈:算出後の値が「0」ならターン毎の値経過したと判断する
    ◆変数の操作:[1155:主人公前ターン]剰余, 変数[1160:指定ターン毎]の値
     ◆条件分岐:変数[1160:指定ターン毎]が0
      ◆注釈:どちらも「0」で何もしない
      ◆
     :それ以外の場合
      ◆条件分岐:変数[1155:主人公前ターン]が0
       ◆注釈:指定ターン毎に起きる処理
       ◆効果音の演奏:beem3  (ボリューム100%, テンポ100%, 左右バランス均等)
       ◆
      :分岐終了
      ◆
     :分岐終了
   ◆
  :それ以外の場合
   ◆条件分岐:変数[1141:主人公ターン数]がV[1159:指定ターン以上]以上
    ◆注釈:指定ターン以上
    ◆条件分岐:変数[1160:指定ターン毎]が0
     ◆注釈:指定ターン以上・毎ターン処理
     ◆効果音の演奏:cannon  (ボリューム100%, テンポ100%, 左右バランス均等)
     ◆
    :それ以外の場合
     ◆注釈:指定ターン分減算
     ◆変数の操作:[1155:主人公前ターン]減算, 変数[1159:指定ターン以上]の値
     ◆注釈:指定ターン減算後「0」を基準として指定ターン毎で剰余
     :  :◆注釈:算出後の値が「0」ならターン毎の値経過したと判断する
     ◆変数の操作:[1155:主人公前ターン]剰余, 変数[1160]の値
     ◆条件分岐:変数[1155:主人公前ターン]が0
      ◆注釈:指定ターン以上・指定ターン毎に起きる処理
      :  :◆注釈:指定ターン以上のみ発生させたい場合は「毎」に9999など
      ◆効果音の演奏:bomb5  (ボリューム100%, テンポ100%, 左右バランス均等)
      ◆
     :分岐終了
     ◆
    :分岐終了
    ◆
   :分岐終了
   ◆
  :分岐終了
  ◆変数の操作:[1155:主人公前ターン]代入, 変数[1141:主人公ターン数]の値
  ◆
 :分岐終了
 ◆
:分岐終了
◆ウエイト:0.1秒


下準備。
キャラの「現在のターン」と「変更前のターン」・「指定ターン以上」と「指定ターン毎」の4つの変数を使います。
青字注釈は戦闘前にあらかじめ指定しておいても大丈夫です。
使い方は

指定ターン以上の場合
「0」 = 指定なし 「1以上の値」 = 値のターン後から処理

指定ターン毎の場合
「0」 = 指定なし 「1」 = 毎ターン処理 「2以上」 = 値ターン毎に処理をする

という感じになります。

詳しい処理について

赤字注釈以降がイベントの処理となります。それまでの処理はキャラのターンが経過したかどうかの判別と、ターンが経過したら「変更前ターン」に「現在ターン」を代入するだけの処理です。

上から順に条件分岐を説明していくと、「指定ターン以上:0」で「指定ターン毎:1」「毎ターン処理が行われる」
「指定ターン以上:0」で「指定ターン毎:1以外」で「指定ターン毎:0以外」なら「指定ターン毎の値ターン間隔でイベントが実行される」直前の分岐の「0」の場合は「指定以上も指定毎も0ということで何もしない」処理にする

「指定ターン以上:0以外」で「指定ターン毎:1」「指定ターン以上の値ターンになったら毎ターン処理が行われる」「現在ターン」の分岐は現在が指定以上であるかどうかの分岐になります。
「指定ターン以上:0以外」で「指定ターン毎:1以外」で「指定ターン以上の値ターンになって指定ターン毎の値間隔で処理が行われる」

どうやって指定ターン毎を判別するかと言うと、現在ターンを代入された変更前ターンを「指定ターン以上」で減算。すると指定ターン以上で指定されたターンを「0」としてそこから再び「変更前ターン」を「指定ターン毎」で「剰余」した結果「0」ならば「指定ターン以上・指定ターン毎」を満たすという内容となっている。
例:
指定ターン以上 : 10 指定ターン毎 : 2 現在ターン : 12
処理の流れ
12(現在)-10(指定以上)=2
2剰余2(指定毎)=0
結果 10ターン以上で10ターンから2ターン経過している

指定ターン以上 : 11 指定ターン毎 : 3 現在ターン : 12
処理の流れ
12(現在)-11(指定以上)=1
1剰余3(指定毎)=0ではない
結果 11ターン以上であるが11ターンから3ターン経過していない

というのがこのイベントの「ターン毎」の処理の考え方である。

最後に「変更前ターン」に「現在ターン」を代入して処理を終了する。
効果音イベントが入っている所が実際に行われるイベント内容となっている。
そこに会話なり何なりをやってもらう。







テンプレートのpondt