ゲーム内イベントを作る
この記事は、「基本編」の内容を前提に記述しています。
先に、「基本編」を読んでください。
育成ゲーム内で起こる様々なイベントを作ってみます。
ただ、イベントの形は、かなりケースバイケースなところがあるので、ちょっとわかりづらいかもしれません。
イベントのタイミング
そのイベントが起こるタイミングごとに、イベントの内容を記載する場所が異なります。
ターン開始時のイベント
ターンの開始時にイベントを発生させたい場合は、育成画面のラベルの上に記載します。
この時、イベントの内容を直接、記載してもよいですが、行数が増えると見づらくなってしまう為、ファイルを分けることを推奨します。
また、イベントの終了時には、必ず育成画面のラベルに戻ってくるようにしてください。
なお、複数のファイルを利用する場合は、次に読み込むファイルの上にラベルを記載し、その前のファイルのイベントの最後で、そのラベルにジャンプするようにします。
言葉で説明するとわかりづらいですが…、実際は、こんな感じになると思います。
[eval exp="f.行動回数 = 5" ]
[jump storage="event1.ks" ]
*イベント2
[jump storage="event2.ks" ]
*育成画面
「event1.ks」で記載したイベントの最後では、「*イベント2」にジャンプするように、「event2.ks」で記載したイベントの最後では、「*育成画面」にジャンプするようにします。
ターン終了時のイベント
ターンの終了時にイベントを発生させたい場合は、「ターン終了処理」のラベルより下、「[jump]」より上に記載します。
つまり、ターン終了処理の中に組み込むわけです。
終了処理には、ターン終了を伝えるメッセージなど、色々と記載されていると思いますが、そのイベントを発生させたい任意の場所に記載してください。
ただし、ターン数を「+1」する処理と、「[jump]」の処理は、必ず行われるようにしてください。
場合によっては、ラベルを増やすなどの工夫も必要になるかと思います。
もっとも、タイミング的には、「ターン開始時」と大差ないので、こだわりがない場合は、そっちで実装するとよいでしょう。
コマンド実行後のイベント
これも、上のやり方と基本的には同じです。
コマンドの最後にイベントの内容を記載します。
もちろん、ここでもコマンド実行後の基本的な処理は、必ず行われるようにしてください。
育成画面のラベルに戻るのは必須として、行動回数制のゲームであれば、行動回数を「-1」する処理など。
イベントの発生条件
イベントが発生する条件の定義方法を紹介します。
基本的には、「if」の条件を変えるだけです。
「~~イベント内容~~」には、メッセージの表示なり、ステータスの増減なり、好きなものを書いてください。
ランダムに発生するイベント
基本的には、以下の記事を見ればわかると思います。
[getrand var="f.イベント発生確率" min="1" max="5"]
[if exp="f.イベント発生確率 <= 2" ]
~~イベント内容~~
[else]
[endif]
[jump storage="ikusei.ks" target ="*育成画面" ]
「2/5の確率で、イベントが起こり、そうでなければ、何も起こらず、最後に育成画面のラベルに戻る」というもの。
特定のターンで発生するイベント
[if exp="f.ターン == 1"]
~~イベント内容~~
[else]
[endif]
[jump storage="ikusei.ks" target ="*育成画面" ]
「ターン1の時に、イベントが起こり、そうでなければ、何も起こらず、最後に育成画面のラベルに戻る」というもの。
特定のステータスに達すると起こるイベント
[if exp="f.パワー >= 70" ]
~~イベント内容~~
[else]
[endif]
[jump storage="ikusei.ks" target ="*育成画面" ]
「パワーが70以上なら、イベントが起こり、そうでなければ、何も起こらず、最後に育成画面のラベルに戻る」というもの。
順番に発生するイベント(連続イベント)
例えば、ランダムに発生する複数のイベントに、順序を持たせてみます。
[getrand var="f.イベント発生確率" min="1" max="5"]
[if exp="f.イベント発生確率 <= 2" ]
~~イベント内容~~
[eval exp="f.連続イベント = 1"]
[else]
[endif]
[jump storage="ikusei.ks" target ="*育成画面" ]
[getrand var="f.イベント発生確率" min="1" max="5"]
[if exp="f.イベント発生確率 <= 2 && f.連続イベント == 1"]
~~イベント内容~~
[eval exp="f.連続イベント = 0"]
[else]
[endif]
[jump storage="ikusei.ks" target ="*育成画面" ]
2/5の確率で1回目のイベントが発生し、変数「連続イベント」の数値が「1」になります。その後、2/5の確率で、2回目のイベントが発生するというものです。
イベント発生後に、変数「連続イベント」の数値を「1」以外にしておかないと、何度もイベントが発生してしまします。
過去の選択によって発生するイベント
プレイヤーの選択によって、将来、イベントが発生するどうかを決定します。いわば、イベントの予約機能のようなものです。
ターン3に、イベント1を発生させますか?[r]
[link target="*イベント1はい"]【1】はい[endlink]
[link target="*イベントいいえ"]【2】いいえ[endlink]
[s]
*イベント1はい
[cm]
[eval exp="f.イベント1 = 1"]
[jump storage="ikusei.ks" target ="*育成画面" ]
*イベントいいえ
[jump storage="ikusei.ks" target ="*育成画面" ]
[if exp="f.ターン == 3 && f.イベント1 == 1"]
~~イベント内容~~
[else]
[endif]
[jump storage="ikusei.ks" target ="*育成画面" ]
上のようなコードを、それぞれ任意の箇所に記載してください。
プレイヤーが、「【1】はい」のボタンを押すと、変数「イベント1」の数値が「1」になります。その上で、ターンが3になれば、イベントが発生するというものです。