解説/FEBuilderGBA/勝利条件イベント_JP のバックアップ(No.2)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- 解説/FEBuilderGBA/勝利条件イベント_JP へ行く。
- 1 (2018-02-17 (土) 22:41:24)
- 2 (2018-02-18 (日) 06:24:59)
- 3 (2018-02-18 (日) 19:22:28)
- 4 (2018-02-19 (月) 07:05:02)
クリア条件の作り方 †
クリア条件とは何か? †
GBAFEで、クリアとは、フラグ0x03フラグ(制圧フラグ)を立てて、終了イベントを呼び出すことです。
逆に言えば、0x03フラグを立てて、終了イベントを呼びだしさえすれば、章をクリアできます。
そのため、さまざなま章クリア条件を作ることが出来ます。
また、複数のクリア条件を作ることも出来ます。
0x03フラグを立てないで、終了イベントを呼ぶこともできますが、クリアターン数が記録されないなどの問題があることがあります。
必ず、フラグ0x03を立ててから、終了イベントを呼び出すことをお勧めします。
拠点を制圧でクリアできるようにするには? †
ロードユニットが、制圧拠点に入ると、制圧メニューが出ます。
そして、制圧を選択すると、ステージクリアになります。
FE1から存在する古典的なクリア方法です。
制圧メニューを出させるには、イベント-マップオブジェクトで制圧拠点を設定する必要があります。
制圧ポイントは城門などに設定されることが多いですが、どんなマップタイルにも設置することができます。
だからといって、草原の真ん中においていたら、プレイヤーは気が付かないと思いますので、目立つマークがある場所に設定しましょう。
実際に"制圧ポイント"を設置してみる †
序章の橋を渡った対岸に制圧ポイントを作ってみましょう。
StepA1 †
StepA2 †
最初は、ターン条件になっているので、上にあるコンボボックスからイベントを切り替えてください。
StepA3 †
StepA4 †
序章には、マップオブジェクトが一つもないので、リストの拡張で増やします。
StepA5 †
1件だけ作るので、新規確保する数は1にしてください。
そしたら、移動処理を実効するボタンを押してください。
StepA6 †
StepA7 †
「発生タイプ」を 「05=制圧ポイントと民家」にしてください。
StepA8 †
StepA9 †
イベントは 1を入れてください。
これは、何もしないダミーイベントです。
StepA10 †
制圧ポイントの座標を指定します。
橋を渡りきった対岸にします。
StepA11 †
StepA12 †
これで設定は完了です。
上から確認してみましょう。
以下のように設定しました。
発生タイプ | 05=制圧ポイントと民家 | |
達成フラグ | 03 | (制圧フラグ) |
イベント | 1 | ダミーイベント |
座標 | 1,0 | 橋を渡りきった対岸 |
種類 | 11=制圧 |
StepA13 †
設定ができたので、"書き込み"ボタンを押して、データを書き込みます。
StepA14 †
StepA15 †
StepA16 †
なぜこれでクリアできるのか?~ †
なぜこれでクリアできるのでしょうか?
それは、フラグ0x03が有効な状態で、キャラクタが待機したためです。
フラグ0x03が有効な状態で、キャラクターを待機させると、ゲームシステムは、自動的に、終了イベントが呼び出されます。
制圧イベントでは、ダミーイベント 0x01 を指定しました。
そのため、制圧を選択肢ても、イベントは何も実行されません。
しかし、達成フラグ0x03を有効にするように設定しました。
達成フラグは、イベントが達成したときにONになるフラグです。
そのため、制圧を選んだことで、このマップオブジェクトを動作させる条件が達成しました。
イベント条件が達成したため、達成フラグが評価されます。
今、ステージをクリアしようとしているため、まだ0x03制圧フラグはまだ有効になっていません。
そのため、このイベントは動作します。
条件が達成され、イベントが動作するため、達成フラグ 0x03は有効になります。
そして、イベント0x01が動作しました。
イベント0x01は何もしないダミーイベントです。
特に何もしません。
そのため、結果的に、このイベントでは、フラグ0x03が有効になっただけです。
さて、制圧を選んだことで、そのユニットは待機状態に移行しました。
これで、フラグ0x03が有効になって、ユニットが待機するという条件を満たしました。
そのため、ゲームシステムは、自動的に、終了イベントを呼び出します。
終了イベントには、次の章へ進むようにイベント命令が書かれているため、
この章をクリアして、次の章へ進むことが出来ました。
画面に表示される条件を調整する †
これで制圧で、クリアできるようになりました。
しかし、画面の表示は、「ボス撃破」のままです。
この値を制圧に書き換えましょう。
StepAA1 †
一番最初の画面に戻ります。
「マップ設定」を選択してください。
StepAA2 †
マップ上で、クリア条件を表示しているのは、この部分になります。
StepAA3 †
この部分は、条件を表示しているだけで、実際の条件とは何の関係もありません。
表示だけです。
実際に、私たちは、制圧でクリアできるようにしましたが、ボス撃破のままになっているのが何よりの証拠です。
StepAA4 †
値を変えてみましょう。
「城門の制圧」という文字列があるので、それを利用します。
以下のように変更しました。
クリア条件 | 12D | 城門の制圧 |
詳細クリア条件 | 127 | 目的:城門の制圧 |
特殊表示 | 00 | None(制圧) |
StepAA5 †
StepAA6 †
F5キーで、エミュレータを起動して、結果を確認してみましょう。
設定した値になっています。
これで、制圧条件の作り方は完了です。
特定ターンが経過したら、クリアになるようにするには? †
特定ターン防衛するようなステージを考えてみましょう。
前回説明した制圧ポイントの作り方を理解しているならば、作るのは簡単です。
ターン条件を利用して、特定ターンになったら フラグを0x03を有効にして、終了イベントを呼んであげればいいのです。
特定ターンが経過したら、クリアになるイベントを作ってみよう †
StepB1 †
StepB2 †
ディフォルトは、ターン条件になっていると思います。
そのままで問題ないです。
ただ、一応確認してください。
ターン条件になっていることを確認したら、ここにイベントを書き込みます。
既存のターン条件を潰してもいいです。
ただ、今回は、新規にデータを確保して作ってみましょう。
「リストの拡張」ボタンを押してください。
StepB3 †
確保するデータ件数を5件にします。
既存のターンイベントが4つあり、そこに新たに1件確保するため、1+4=5になるためです。
件数を変更したら、「移動処理を実行する」ボタンを押してください。
StepB4 †
新しくイベント領域を確保しました。
確保した領域は、リストの末尾にあります。
ここに、クリアするという条件を書いてみましょう。
StepB5 †
前回の制圧条件で、詳細に説明したので、今回は、一気に説明します。
以下の様に設定してみてください。
発生タイプ | 2 | 2ターン条件 |
達成フラグ | 3 | 制圧フラグ |
ターン前指定 | 0 | 主人公ターン |
開始ターン | 3 | |
終了ターン | 0 |
余談ですが、 ターン条件は、開始ターンから、終了ターンの間、ずっと実行されますが、 終了ターンを0にすると、開始ターンだけイベントを実行することが出来ます。 (達成フラグが設定されているため、どちらにせよ、開始ターンにしか動きません。)
StepB6 †
設定ができたので、「書き込み」ボタンを押して、結果を書き込みましょう。
StepB7 †
そして、F5キーを押してゲームを開始してください。
StepB8 †
これでターン経過したら、このイベントが呼ばれてクリアになる・・・・と思ったら間違いです。
実際に動作させてみましょう。
あれ・・・・?
4ターン目になってしまいました。
いつまで待ってもクリアイベントが動作しません。
不思議です。
イベントが無視されたのでしょうか?
そうではありません。
イベントは実行され、フラグ0x03は有効になっています。
ユニットを待機させてみてください。
ステージクリアできます。
なぜこうなってしまったのか?
それは、フラグ0x03が有効な状態で、キャラクタが待機すると、ゲームシステムが自動的に終了イベントを呼び出すという仕様のためです。
ユニットを待機させずに、ターン終了を選んだだけでは、ユニットは待機していません。
そのため、"フラグ0x03が有効な状態で、キャラクタが待機する"という条件を満たせません。
そのため、上手く動作しません。
では、どうすればいいのか?
終了イベントを自分で呼び出せばいいのです。
システムが呼び出してくれないなら、手動で呼び出せばいいのです。
StepB9 †
イベントをダミーイベントの0x01から、終了イベントにかかれているアドレスに変更します。
終了イベントは、右上のコンボボックスの一番下に、あります。
これが終了イベントが書かれている領域です。(画面はFE8Jです)
このアドレスをメモして、私達の終了イベントに記載すればいいのです。
FE8J | 08A6129C | 序章終了イベント |
FE8U | 089EF164 | 序章終了イベント |
StepB10 †
ターンイベントに戻りましょう。
イベント:0x01 となっている部分を、先程メモした終了イベントのアドレスに書き換えます。
StepB11 †
設定ができたので、保存します。
さて、F5キーでエミュレータを起動してください。
そして、序章を最初からやり直してみてください。
現在2ターン目です。
ここで待機すると・・・・
今度は、3ターンになった瞬間に、終了イベントが表示されました。
上手く動作しました。
StepB12 †
これで、特定ターンでクリアできるようになりました。
しかし、画面の装飾がまだ出来ていません。
通常、防衛マップの場合、ターン数が表示されるべきです。
このメニューを設定してみましょう。
StepB13 †
一番最初の画面に戻ります。
「マップ設定」を選択してください。
StepB14 †
制圧の時と基本的同じです。
マップ上で、クリア条件を表示しているのは、この部分になります。
クリア条件 | 13A | 主人公の11ターン生存 ターン防衛という文字列がなかったので代替品として使う |
クリア条件 | 124 | 目的:特定生存 |
特殊表示 | 2 | ターン防衛 |
そしてもう一つ。
「特殊表示」で、ターン防衛を選んだ場合、最終ターンを表示する部分の設定があります。
「ターン表示用」の部分に3と入力してください。
これは、3ターン目でクリアするためです。
よって、3-1=2ターン目が、最終ターンとなります。
ターン表示用 | 3 | 3ターン目でクリア。2ターン目が最終ターンとなる。 |
StepB15 †
設定ができたので、書き込みボタンを押して、書き込みましょう。
結局設定したのは、以下の内容です。
クリア条件 | 13A | 主人公の11ターン生存 |
クリア条件 | 124 | 目的:特定生存 |
特殊表示 | 2 | ターン防衛 |
ターン表示用 | 3 | 3ターン目でクリア。2ターン目が最終ターンとなる。 |
StepB16 †
F5キーでエミュレータを起動して、動かしてみましょう。
ターン数が正しく表示されています。
2ターン目になると、「最終ターン」と表示されました。
完璧です。
これで、防衛マップを作れるようになりました。
ボスを撃破したら、クリアになるようにするには? †
ボスを倒すと、ボスの"死亡セリフ"が流れます。
このとき、指定した達成フラグがONになります。
GBAFEでは、通常ボス撃破では、フラグ0x02をONにするのが慣例になっています。
例えば、序章のオニールやブレゲのセリフはこのように設定されています。
このフラグを、常時条件でフックして、フラグ0x03を立てて、終了イベントを呼ぶだけです。
余談 死亡セリフは、敵だけではなく、味方や友軍でも有効です。 これを応用すると、特定の人物が死亡したらゲームオーバーにする防衛マップを作ることもできます。
実際に"ボス撃破"でクリアを設置してみる †
序章はボスを撃破すると、話が終わってしまうので、1章で作成してみます。
ブレゲを撃破すると同時に、終了させてみましょう。
StepC1 †
1章のマップを選択してください。
そして、イベントをクリックします。
StepC2 †
最初は、ターン条件になっているので、上にあるコンボボックスからイベントを切り替えてください。
StepC3 †
StepC4 †
既存の条件を書き換えてもいいのですが、今回も、新規に確保します。
「リストの拡張」を選択してください。
StepC5 †
新規に確保する件数を4件にします。
これは、既存で3件登録されているためです。
3+1=4だからです。
件数を変更したら、「移動処理を実効する」ボタンを押してください。
StepC6 †
StepC7 †
今回も、終了イベントを呼ぶ必要があるため、
先に1章の終了イベントをメモしてください。
1章の終了イベントは、以下のとおりです。(画面はFE8Jです。)
FE8J | 08A61BFC | 1章終了イベント |
FE8U | 089EFAC4 | 1章終了イベント |
余談 08A61BFCの 08はポインタを意味します。 GBAでは、ROMは 0x08000000以降に配置されるためです。 ROMのアドレス+0x08000000が実行時の値になります。 GBAでは、 0x08000000 - 0x0AFFFFFF までの領域を利用できます。 つまり、 08 の他に 09 で始まるポインタもあります。 なお、FEBuilderGBAは、ポインタが設定されるべき場所では、自動的にポインタに値を変換します。 そのため、08をつけても付けなくても、どちらでも構いません。 彼は空気を読んでくれます。何も気にしなくても大丈夫です。
StepC8 †
さて、常時条件に戻って、ボス撃破時に動作するイベントを作ります。
ボスが死亡すると、死亡セリフが表示されます。
この時、フラグ02が有効になります。
このフラグは自由に変更できます。
FEでは、ボス撃破では、02が使われることが習慣になっています。
そのため、これを拾う設定を作ります。
以下のように設定してください。
発生タイプ | 01 | 常時条件 |
達成フラグ | 03 | 制圧フラグ |
イベント | 08A61BFC | 1章の終了イベント(FE8J) |
判定フラグ | 02 | ボス撃破 |
StepC9 †
設定ができたので、書き込みボタンを押して結果を書き込みます。
StepC10 †
F5キーを押して、エミュレータを起動して、動作を確認します。
StepC11 †
StepC12 †
ブレゲを倒すと、死亡セリフが表示されます。
この時、死亡セリフの達成フラグとして設定されている、フラグ02がONになります。
すると、私達が先程作ったイベントの動作条件が満たされ、イベントが実行されます。
私達のイベントによって、達成フラグ03がONになり、2章の終了イベントが呼ばれます。
StepC12 †
終了イベントが呼び出されてクリアになりました。
これで、ボス撃破でクリアできるようになりました。
StepC13 †
さて、いつものやっているマップの装飾を変更しましょう。
1章の設定は以下のようになっています。
これを以下のように変えましょう。
ボス撃破というものがなかったので、序章のもので代用します。
内容が気に入らない方は、テキスト編集で変更してください。
クリア条件 | 12C | ボス、オニールの撃破 |
詳細クリア条件 | 125 | 目的:ボス撃破 |
特殊表示 | 3 | None(ボスを倒す) |
StepC14 †
StepC15 †
書き込んだから、F5キーをおして動作を確認してください。
これで、ボス撃破マップも作れるようになりました。
敵全滅ステージを作る †
敵が全滅すると、フラグ0x06が自動的にONになります。
このフラグ0x06を常時条件で拾って、フラグ03を有効にして、終了イベントを呼び出します。
(FE7ではASMイベントで実装されています。)
先程作った、ボス撃破でクリアは、ボス撃破の死亡セリフで有効になるボス撃破フラグ02を見ていましたが、
これを敵全滅フラグ06に変更すればいいだけです。
実際に"敵全滅"でクリアを設置してみる †
序章はマップの構造上作りにくいので、先程同様に1章で作ります。
敵をすべて倒すとクリアになるようにしてみましょう。
StepD1 †
1章のマップを選択してください。
そして、イベントをクリックします。
StepD2 †
最初は、ターン条件になっているので、上にあるコンボボックスからイベントを切り替えてください。
StepD3 †
StepD4 †
今回もリストの拡張で増やしましょう。
(前回のイベントがある場合は、それを変更してもいいです)
StepD5 †
終了イベントのアドレスが必要なので、メモします。
FE8J | 08A61BFC | 1章終了イベント |
FE8U | 089EFAC4 | 1章終了イベント |
StepD6 †
さて、常時条件に戻って、敵全滅の条件を作りましょう。
FE8では、敵を全滅させると、フラグ06が有効になります。
そのため、以下のようになります。
発生タイプ | 01 | 常時条件 |
達成フラグ | 03 | 制圧フラグ |
イベント | 08A61BFC | 1章の終了イベント(FE8J) |
判定フラグ | 06 | 敵全滅 |
StepD7 †
StepD8 †
ここで動作を確認してもいいのですが、どうせマップの装飾を変更する必要があるので、
ついでにやってしまいましょう。
StepD9 †
敵全滅の場合は、以下のように設定します。
敵全滅がなかったので、魔物の全滅で代用しています。気になる方は、テキストを変更してください。
StepD10 †
StepD11 †
できました。
さっそく、F5キーを押して結果を確かめてみましょう。
StepD12 †
StepD13 †
敵を全員倒すと・・・・
先程の設定に従い、終了イベントが呼び出されました。
これで、敵全滅マップも作れるようになりました。
会話したら終了するステージを作ってみる †
エイリークがゼトと会話すると終了するという不思議な条件のマップを作ってみましょう。
今度は、序章で作ってみます。
FEのクリア条件は、フラグ0x03を有効にして、終了イベントを呼ぶことですから、
それさえ達成できれば、どんな条件でも問題ありません。
実際に会話したら終了するステージを作ってみる †
今回は、序章で作ってみます。
序章のイベント画面を開いてください。
StepE2 †
最初は、ターン条件になっているので、上にあるコンボボックスからイベントを切り替えてください。
StepE3 †
StepE4 †
序章には会話イベントがないので、リストの拡張で件数を増やします。
StepE5 †
StepE6 †
会話条件で、エイリークが、ゼトに話しかけると、フラグ03を有効にして、終了を呼んでみましょう。
StepE5 †
早速動作を確認します。
終了イベントが呼ばれてクリアすることができました。
これで、私達は、FE8には存在しない終了条件を作ることが出来ました。
イベントで制御してみよう †
今までは、達成フラグでフラグ0x03(制圧フラグ)を有効にして、クリア条件を作ってきました。
これは、イベントが実行される時に達成フラグが有効になるという特性を利用してきたわけです。
しかし、フラグを立てることは、イベント命令でも可能です。
イベント命令で、フラグを立てることで、もっと柔軟なイベントが作れます。
今回は、エイリークがゼトと会話をすると、選択肢を表示して、選択肢で「はい」と答えた場合のみクリアになるようにしてみましょう。
- 続く-