WS007456

前回はダンジョン内を歩くという処理について解説していましたが、今回はイベント編です。
実際に私のゲームを遊んでいただければ、ここはこうしてるのか~、と照らし合わせることが可能かなと思います。

あ、あと前回伝え忘れていました!
右上のアイテム使用ボタンや、スキルボタン、一時停止ボタンを押したときには、必ず[wait_cancel]タグを入れてください。
そのままですと、[wait]タグが効きっぱなしになり、指定時間が終了と共に、元の画面に戻ってしまいます。

あと、一歩歩くごとに[clearstack]タグを入れて、スタック(ゲーム内のゴミ)が溜まらないようにしています。
本来はこんな頻繁にクリアする必要もないのですが、特に入れても害はないタグ(たぶん)だし、他にタグを挟むタイミングが見つからなかったので、1歩ごとに入れています。

では続きを書いていきます。
                            
このゲームは毎回移動のたびに変数「event」へ、固定値と乱数を入れてゆき、[event]が一定値を超えたタイミングでイベントが発生するようになっています。つまり、一歩歩くくごとにイベントが発生しやすくなるわけです。
イベント発生タイミングを判断する変数が一定値を越えたら、以下のようにします。ifが入れ子になっているので、初期のティラノビルダー・スクリプトでは扱えないので気を付けてね(2018年以降のバージョンくらいからは入れ子に対応しているのでだいじょうぶです)

[if exp="f,event>20"] 変数「event」が一定値以上になったため、イベント発生。
 *ここでまず乱数コマンドでどのイベントにするか決める
  [if exp="f.kaisou==2"]
  0~2の乱数を、変数「ransuu」へと取得する処理
   [if exp="f.ransuu==0"]
    イベントAへジャンプさせる処理
   [elsif exp="f.ransuu==1"]
    イベントBへジャンプさせる処理
   [elsif exp="f.ransuu==2"]
    イベントCへジャンプさせる処理
    [endif]
  [elsif exp="f.kaisou==3"]
   [if exp="f.ransuu==0"]
    イベントDへジャンプさせる処理
   [elsif exp="f.ransuu==1"]
    イベントEへジャンプさせる処理
   [elsif exp="f.ransuu==2"]
    イベントFへジャンプさせる処理
    [endif]
  [endif]
[endif]
みたいな感じで、別のシナリオファイルへと分けたイベントシーンへジャンプさせます。じゃないとdungeon.ksファイルがメチャクチャ長くなるからです。
イベントが発生する際には…このゲームは、階層ごとに発生するイベントが異なります。まぁ同じイベントしか起きなくてもつまんないしね。まぁ2階層連続で起きたり、後半になったら初期のイベントがまた起きたりする場合も作ってあるんですが。

WS007348

また、このゲームは、イベント発生後も、ランダムで結果が異なるように作られています。
一本道ローグライク、みたいなよくわかんないゲームですし、イベントもランダムなのですw


戦闘も同じで、戦闘が起きるかどうかの変数が一定値を越えたら、戦闘発生のファイルに飛ぶように設定されています。
これも長くなるので後日。