トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

解説/FEBuilderGBA/勝利条件イベント_JP のバックアップ(No.1)


クリア条件の作り方

クリア条件とは何か?

GBAFEで、クリアとは、フラグ0x03フラグ(制圧フラグ)を立てて、終了イベントを呼び出すことです。
逆に言えば、0x03フラグを立てて、終了イベントを呼びだしさえすれば、章をクリアできます。
そのため、さまざなま章クリア条件を作ることが出来ます。
また、複数のクリア条件を作ることも出来ます。

0x03フラグを立てないで、終了イベントを呼ぶこともできますが、クリアターン数が記録されないなどの問題があることがあります。
必ず、フラグ0x03を立ててから、終了イベントを呼び出すことをお勧めします。

拠点を制圧でクリアできるようにするには?

ロードユニットが、制圧拠点に入ると、制圧メニューが出ます。
そして、制圧を選択すると、ステージクリアになります。
FE1から存在する古典的なクリア方法です。

制圧メニューを出させるには、イベント-マップオブジェクトで制圧拠点を設定する必要があります。
制圧ポイントは城門などに設定されることが多いですが、どんなマップタイルにも設置することができます。

だからといって、草原の真ん中においていたら、プレイヤーは気が付かないと思いますので、目立つマークがある場所に設定しましょう。

実際に"制圧ポイント"を設置してみる

序章の橋を渡った対岸に制圧ポイントを作ってみましょう。

StepA1

"イベント"をクリックします。
https://i.imgur.com/u8f268o.jpg

StepA2

最初は、ターン条件になっているので、上にあるコンボボックスからイベントを切り替えてください。
https://i.imgur.com/WLQcJ2m.jpg

StepA3

コンボボックスから、"マップオブジェクト"を選択します。
https://i.imgur.com/wxCQAy1.jpg

StepA4

序章には、マップオブジェクトが一つもないので、リストの拡張で増やします。
https://i.imgur.com/cSY1rBz.jpg

StepA5

1件だけ作るので、新規確保する数は1にしてください。
そしたら、移動処理を実効するボタンを押してください。
https://i.imgur.com/Ix2wThZ.jpg

StepA6

領域が確保されました。
https://i.imgur.com/vgoNeRO.jpg

StepA7

「発生タイプ」を 「05=制圧ポイントと民家」にしてください。
https://i.imgur.com/olgVEtF.jpg

StepA8

達成フラグを 03(制圧フラグ)にします。
https://i.imgur.com/ST2oKMy.jpg

StepA9

イベントは 1を入れてください。
これは、何もしないダミーイベントです。
https://i.imgur.com/tNJxeTo.jpg

StepA10

制圧ポイントの座標を指定します。
橋を渡りきった対岸にします。
https://i.imgur.com/bOu8r6f.jpg

StepA11

「種類」を「11=制圧」にしてください。
https://i.imgur.com/bVYQLu7.jpg

StepA12

これで設定は完了です。
上から確認してみましょう。
以下のように設定しました。
https://i.imgur.com/JjMTaOb.jpg

発生タイプ05=制圧ポイントと民家
達成フラグ03(制圧フラグ)
イベント1ダミーイベント
座標1,0橋を渡りきった対岸
種類11=制圧

StepA13

設定ができたので、"書き込み"ボタンを押して、データを書き込みます。
https://i.imgur.com/BQUTyFh.jpg

StepA14

さっそく、F5キーを押して結果を確かめてみましょう。
https://i.imgur.com/UQlKfRo.jpg

StepA15

エイリークがポイントに行くと、制圧メニューが表示されます。
https://i.imgur.com/xZKflLR.jpg

StepA16

制圧を行うとステージをクリアできます。
https://i.imgur.com/Bnp4r9n.jpg

なぜこれでクリアできるのか?~

なぜこれでクリアできるのでしょうか?
それは、フラグ0x03が有効な状態で、キャラクタが待機したためです。
フラグ0x03が有効な状態で、キャラクターを待機させると、ゲームシステムは、自動的に、終了イベントが呼び出されます。

制圧イベントでは、ダミーイベント 0x01 を指定しました。
そのため、制圧を選択肢ても、イベントは何も実行されません。
しかし、達成フラグ0x03を有効にするように設定しました。
達成フラグは、イベントが達成したときにONになるフラグです。
そのため、制圧を選んだことで、このマップオブジェクトを動作させる条件が達成しました。
イベント条件が達成したため、達成フラグが評価されます。
今、ステージをクリアしようとしているため、まだ0x03制圧フラグはまだ有効になっていません。
そのため、このイベントは動作します。

条件が達成され、イベントが動作するため、達成フラグ 0x03は有効になります。
そして、イベント0x01が動作しました。
イベント0x01は何もしないダミーイベントです。
特に何もしません。

そのため、結果的に、このイベントでは、フラグ0x03が有効になっただけです。

さて、制圧を選んだことで、そのユニットは待機状態に移行しました。
これで、フラグ0x03が有効になって、ユニットが待機するという条件を満たしました。
そのため、ゲームシステムは、自動的に、終了イベントを呼び出します。

終了イベントには、次の章へ進むようにイベント命令が書かれているため、
この章をクリアして、次の章へ進むことが出来ました。

画面に表示される条件を調整する

これで制圧で、クリアできるようになりました。
しかし、画面の表示は、「ボス撃破」のままです。
この値を制圧に書き換えましょう。

StepAA1

一番最初の画面に戻ります。
「マップ設定」を選択してください。
https://i.imgur.com/J01gbFX.jpg

StepAA2

マップ上で、クリア条件を表示しているのは、この部分になります。
https://i.imgur.com/I2wE4lM.jpg

StepAA3

この部分は、条件を表示しているだけで、実際の条件とは何の関係もありません。 表示だけです。
実際に、私たちは、制圧でクリアできるようにしましたが、ボス撃破のままになっているのが何よりの証拠です。
https://i.imgur.com/mjwmy9K.jpg

StepAA4

値を変えてみましょう。
「城門の制圧」という文字列があるので、それを利用します。

以下のように変更しました。
https://i.imgur.com/rcPmlWM.jpg

クリア条件12D城門の制圧
詳細クリア条件127目的:城門の制圧
特殊表示00None(制圧)

StepAA5

「書き込み」ボタンを押して、データを書き込んで下さい。
https://i.imgur.com/dZRx9YI.jpg

StepAA6

F5キーで、エミュレータを起動して、結果を確認してみましょう。
設定した値になっています。
https://i.imgur.com/uhe0OBg.jpg https://i.imgur.com/7Oq3K4x.jpg

これで、制圧条件の作り方は完了です。

特定ターンが経過したら、クリアになるようにするには?

特定ターン防衛するようなステージを考えてみましょう。
前回説明した制圧ポイントの作り方を理解しているならば、作るのは簡単です。
ターン条件を利用して、特定ターンになったら フラグを0x03を有効にして、終了イベントを呼んであげればいいのです。

特定ターンが経過したら、クリアになるイベントを作ってみよう

StepB1

"イベント"をクリックします。
https://i.imgur.com/4F3bMCF.jpg

StepB2

ディフォルトは、ターン条件になっていると思います。
そのままで問題ないです。
ただ、一応確認してください。
https://i.imgur.com/4ihHOoi.jpg

ターン条件になっていることを確認したら、ここにイベントを書き込みます。
既存のターン条件を潰してもいいです。
ただ、今回は、新規にデータを確保して作ってみましょう。
「リストの拡張」ボタンを押してください。

StepB3

確保するデータ件数を5件にします。
既存のターンイベントが4つあり、そこに新たに1件確保するため、1+4=5になるためです。

件数を変更したら、「移動処理を実行する」ボタンを押してください。
https://i.imgur.com/fj0n8LT.jpg

StepB4

新しくイベント領域を確保しました。
確保した領域は、リストの末尾にあります。
ここに、クリアするという条件を書いてみましょう。
https://i.imgur.com/eLlp30P.jpg

StepB5

前回の制圧条件で、詳細に説明したので、今回は、一気に説明します。
以下の様に設定してみてください。
https://i.imgur.com/X2DQwIj.jpg

発生タイプ22ターン条件
達成フラグ3制圧フラグ
ターン前指定0主人公ターン


https://i.imgur.com/YZZm4JZ.jpg 今回は、3ターン目になったらクリアするようにします。

開始ターン3
終了ターン0
余談ですが、
ターン条件は、開始ターンから、終了ターンの間、ずっと実行されますが、
終了ターンを0にすると、開始ターンだけイベントを実行することが出来ます。
(達成フラグが設定されているため、どちらにせよ、開始ターンにしか動きません。)

StepB6

設定ができたので、「書き込み」ボタンを押して、結果を書き込みましょう。
https://i.imgur.com/MeqC4Bh.jpg

StepB7

そして、F5キーを押してゲームを開始してください。

StepB8

これでターン経過したら、このイベントが呼ばれてクリアになる・・・・と思ったら間違いです。
実際に動作させてみましょう。

あれ・・・・?
4ターン目になってしまいました。
https://i.imgur.com/zdX14po.jpg
いつまで待ってもクリアイベントが動作しません。
不思議です。
イベントが無視されたのでしょうか?
そうではありません。
イベントは実行され、フラグ0x03は有効になっています。


ユニットを待機させてみてください。
ステージクリアできます。
https://i.imgur.com/eT4G1ON.jpg https://i.imgur.com/btVhRg8.jpg

なぜこうなってしまったのか?
それは、フラグ0x03が有効な状態で、キャラクタが待機すると、ゲームシステムが自動的に終了イベントを呼び出すという仕様のためです。
ユニットを待機させずに、ターン終了を選んだだけでは、ユニットは待機していません。
そのため、"フラグ0x03が有効な状態で、キャラクタが待機する"という条件を満たせません。
そのため、上手く動作しません。

では、どうすればいいのか?
終了イベントを自分で呼び出せばいいのです。
システムが呼び出してくれないなら、手動で呼び出せばいいのです。

StepB9

イベントをダミーイベントの0x01から、終了イベントにかかれているアドレスに変更します。
https://i.imgur.com/FuG7xZh.jpg
終了イベントは、右上のコンボボックスの一番下に、あります。
https://i.imgur.com/Ns5gUrF.jpg
これが終了イベントが書かれている領域です。(画面はFE8Jです)
このアドレスをメモして、私達の終了イベントに記載すればいいのです。
https://i.imgur.com/mm07rQm.jpg

FE8J08A6129C序章終了イベント
FE8U089EF164序章終了イベント

StepB10

ターンイベントに戻りましょう。
イベント:0x01 となっている部分を、先程メモした終了イベントのアドレスに書き換えます。
https://i.imgur.com/FT4uz1g.jpg
https://i.imgur.com/eEgZbkd.jpg

StepB11

設定ができたので、保存します。
https://i.imgur.com/vQqTiFe.jpg
さて、F5キーでエミュレータを起動してください。
そして、序章を最初からやり直してみてください。

現在2ターン目です。
https://i.imgur.com/BiI7q79.jpg
ここで待機すると・・・・
https://i.imgur.com/h0rqejO.jpg
今度は、3ターンになった瞬間に、終了イベントが表示されました。
上手く動作しました。
https://i.imgur.com/XGLoCQP.jpg

StepB12

これで、特定ターンでクリアできるようになりました。
しかし、画面の装飾がまだ出来ていません。
https://i.imgur.com/TWwbHqN.jpg
通常、防衛マップの場合、ターン数が表示されるべきです。
https://i.imgur.com/RcOJ3Ir.jpg
このメニューを設定してみましょう。

StepB13

一番最初の画面に戻ります。
「マップ設定」を選択してください。
https://i.imgur.com/x45py1u.jpg

StepB14

制圧の時と基本的同じです。
マップ上で、クリア条件を表示しているのは、この部分になります。

クリア条件13A主人公の11ターン生存 ターン防衛という文字列がなかったので代替品として使う
クリア条件124目的:特定生存
特殊表示2ターン防衛

https://i.imgur.com/cOhJi5t.jpg

そしてもう一つ。
「特殊表示」で、ターン防衛を選んだ場合、最終ターンを表示する部分の設定があります。
「ターン表示用」の部分に3と入力してください。
これは、3ターン目でクリアするためです。
よって、3-1=2ターン目が、最終ターンとなります。

ターン表示用33ターン目でクリア。2ターン目が最終ターンとなる。

https://i.imgur.com/bWEEefz.jpg

StepB15

設定ができたので、書き込みボタンを押して、書き込みましょう。
https://i.imgur.com/XDfuN8b.jpg

結局設定したのは、以下の内容です。

クリア条件13A主人公の11ターン生存
クリア条件124目的:特定生存
特殊表示2ターン防衛
ターン表示用33ターン目でクリア。2ターン目が最終ターンとなる。

StepB16

F5キーでエミュレータを起動して、動かしてみましょう。
ターン数が正しく表示されています。
https://i.imgur.com/rT3fdiM.jpg
2ターン目になると、「最終ターン」と表示されました。
https://i.imgur.com/bhdWOCr.jpg
完璧です。
これで、防衛マップを作れるようになりました。

ボスを撃破したら、クリアになるようにするには?

ボスを倒すと、ボスの"死亡セリフ"が流れます。
このとき、指定した達成フラグがONになります。
GBAFEでは、通常ボス撃破では、フラグ0x02をONにするのが慣例になっています。

例えば、序章のオニールやブレゲのセリフはこのように設定されています。
このフラグを、常時条件でフックして、フラグ0x03を立てて、終了イベントを呼ぶだけです。
https://i.imgur.com/SUKS1n4.jpg

余談
死亡セリフは、敵だけではなく、味方や友軍でも有効です。
これを応用すると、特定の人物が死亡したらゲームオーバーにする防衛マップを作ることもできます。

実際に"ボス撃破"でクリアを設置してみる

序章はボスを撃破すると、話が終わってしまうので、1章で作成してみます。
ブレゲを撃破すると同時に、終了させてみましょう。

StepC1

1章のマップを選択してください。
そして、イベントをクリックします。
https://i.imgur.com/9CwabJC.jpg

StepC2

最初は、ターン条件になっているので、上にあるコンボボックスからイベントを切り替えてください。
https://i.imgur.com/w4PIOXK.jpg

StepC3

コンボボックスから、"常時条件"を選択します。
https://i.imgur.com/i1zkfO3.jpg

StepC4

既存の条件を書き換えてもいいのですが、今回も、新規に確保します。
「リストの拡張」を選択してください。
https://i.imgur.com/MvbMYIP.jpg

StepC5

新規に確保する件数を4件にします。
これは、既存で3件登録されているためです。
3+1=4だからです。
https://i.imgur.com/1GA3r9W.jpg
件数を変更したら、「移動処理を実効する」ボタンを押してください。

StepC6

新規に追加ものはリストの一番下に表示されています。
https://i.imgur.com/nVF7sgr.jpg

StepC7

今回も、終了イベントを呼ぶ必要があるため、
先に1章の終了イベントをメモしてください。

1章の終了イベントは、以下のとおりです。(画面はFE8Jです。)

FE8J08A61BFC1章終了イベント
FE8U089EFAC41章終了イベント

https://i.imgur.com/3JwOEB0.jpg https://i.imgur.com/ZkICgla.jpg

余談
08A61BFCの 08はポインタを意味します。
GBAでは、ROMは 0x08000000以降に配置されるためです。
ROMのアドレス+0x08000000が実行時の値になります。
GBAでは、 0x08000000 - 0x0AFFFFFF までの領域を利用できます。
つまり、 08 の他に 09 で始まるポインタもあります。

なお、FEBuilderGBAは、ポインタが設定されるべき場所では、自動的にポインタに値を変換します。
そのため、08をつけても付けなくても、どちらでも構いません。
彼は空気を読んでくれます。何も気にしなくても大丈夫です。

StepC8

さて、常時条件に戻って、ボス撃破時に動作するイベントを作ります。
ボスが死亡すると、死亡セリフが表示されます。
この時、フラグ02が有効になります。
このフラグは自由に変更できます。
FEでは、ボス撃破では、02が使われることが習慣になっています。
https://i.imgur.com/aXBcz8H.jpg
そのため、これを拾う設定を作ります。
以下のように設定してください。

発生タイプ01常時条件
達成フラグ03制圧フラグ
イベント08A61BFC1章の終了イベント(FE8J)
判定フラグ02ボス撃破

StepC9

設定ができたので、書き込みボタンを押して結果を書き込みます。
https://i.imgur.com/Rz6BOII.jpg

StepC10

F5キーを押して、エミュレータを起動して、動作を確認します。
https://i.imgur.com/cAwbref.jpg

StepC11

ブレゲを倒しましょう。
https://i.imgur.com/6B10d8Q.jpg

StepC12

ブレゲを倒すと、死亡セリフが表示されます。
この時、死亡セリフの達成フラグとして設定されている、フラグ02がONになります。
https://i.imgur.com/SUKS1n4.jpg
すると、私達が先程作ったイベントの動作条件が満たされ、イベントが実行されます。
私達のイベントによって、達成フラグ03がONになり、2章の終了イベントが呼ばれます。

StepC12

終了イベントが呼び出されてクリアになりました。
https://i.imgur.com/6lvZ1KP.jpg
これで、ボス撃破でクリアできるようになりました。

StepC13

さて、いつものやっているマップの装飾を変更しましょう。
https://i.imgur.com/ac6otUN.jpg
1章の設定は以下のようになっています。
https://i.imgur.com/oYLkfcI.jpg
これを以下のように変えましょう。
ボス撃破というものがなかったので、序章のもので代用します。
内容が気に入らない方は、テキスト編集で変更してください。

クリア条件12Cボス、オニールの撃破
詳細クリア条件125目的:ボス撃破
特殊表示3None(ボスを倒す)

StepC14

設定をしたら、書き込みます。
https://i.imgur.com/kKLxi8K.jpg

StepC15

書き込んだから、F5キーをおして動作を確認してください。
https://i.imgur.com/x2wbqSN.jpg
これで、ボス撃破マップも作れるようになりました。

敵全滅ステージを作る

敵が全滅すると、フラグ0x06が自動的にONになります。
このフラグ0x06を常時条件で拾って、フラグ03を有効にして、終了イベントを呼び出します。
(FE7ではASMイベントで実装されています。)

先程作った、ボス撃破でクリアは、ボス撃破の死亡セリフで有効になるボス撃破フラグ02を見ていましたが、
これを敵全滅フラグ06に変更すればいいだけです。

実際に"敵全滅"でクリアを設置してみる

序章はマップの構造上作りにくいので、先程同様に1章で作ります。
敵をすべて倒すとクリアになるようにしてみましょう。

StepD1

1章のマップを選択してください。
そして、イベントをクリックします。
https://i.imgur.com/gMk9pfw.jpg

StepD2

最初は、ターン条件になっているので、上にあるコンボボックスからイベントを切り替えてください。
https://i.imgur.com/HUEZ6l6.jpg

StepD3

コンボボックスから、"常時条件"を選択します。
https://i.imgur.com/VqP9hmX.jpg

StepD4

今回もリストの拡張で増やしましょう。
(前回のイベントがある場合は、それを変更してもいいです)
https://i.imgur.com/zOgaLnU.jpg

StepD5

終了イベントのアドレスが必要なので、メモします。

FE8J08A61BFC1章終了イベント
FE8U089EFAC41章終了イベント

https://i.imgur.com/Q756uV9.jpg

StepD6

さて、常時条件に戻って、敵全滅の条件を作りましょう。
FE8では、敵を全滅させると、フラグ06が有効になります。
そのため、以下のようになります。

発生タイプ01常時条件
達成フラグ03制圧フラグ
イベント08A61BFC1章の終了イベント(FE8J)
判定フラグ06敵全滅

https://i.imgur.com/9raUYfN.jpg

StepD7

書き込みボタンで書き込みましょう。
https://i.imgur.com/AnTqiJO.jpg

StepD8

ここで動作を確認してもいいのですが、どうせマップの装飾を変更する必要があるので、
ついでにやってしまいましょう。

StepD9

敵全滅の場合は、以下のように設定します。
敵全滅がなかったので、魔物の全滅で代用しています。気になる方は、テキストを変更してください。
https://i.imgur.com/AnTqiJO.jpg

StepD10

書き込みボタンで書き込んでください。
https://i.imgur.com/uJveJp3.jpg

StepD11

できました。
さっそく、F5キーを押して結果を確かめてみましょう。

StepD12

残りの敵数も表示されています。
https://i.imgur.com/Kj1HODj.jpg
敵を全員倒しましょう。
https://i.imgur.com/ZEKF47q.jpg

StepD13

敵を全員倒すと・・・・
先程の設定に従い、終了イベントが呼び出されました。
https://i.imgur.com/hgfhxko.jpg

これで、敵全滅マップも作れるようになりました。
https://i.imgur.com/cyIi93o.jpg

会話したら終了するステージを作ってみる

エイリークがゼトと会話すると終了するという不思議な条件のマップを作ってみましょう。
今度は、序章で作ってみます。

FEのクリア条件は、フラグ0x03を有効にして、終了イベントを呼ぶことですから、
それさえ達成できれば、どんな条件でも問題ありません。

実際に会話したら終了するステージを作ってみる

今回は、序章で作ってみます。
序章のイベント画面を開いてください。
https://i.imgur.com/gMk9pfw.jpg

StepE2

最初は、ターン条件になっているので、上にあるコンボボックスからイベントを切り替えてください。
https://i.imgur.com/HUEZ6l6.jpg

StepE3

コンボボックスから、"会話条件"を選択します。
https://i.imgur.com/VqP9hmX.jpg

StepE4

序章には会話イベントがないので、リストの拡張で件数を増やします。 https://i.imgur.com/zOgaLnU.jpg

StepE5

発生タイプを、03=話す条件にします。 https://i.imgur.com/QhQXniC.jpg

StepE6

会話条件で、エイリークが、ゼトに話しかけると、フラグ03を有効にして、終了を呼んでみましょう。
https://i.imgur.com/Yj9XcNF.jpg

StepE5

早速動作を確認します。
https://i.imgur.com/tXG7zyg.jpg

終了イベントが呼ばれてクリアすることができました。
https://i.imgur.com/OTnvGay.jpg

これで、私達は、FE8には存在しない終了条件を作ることが出来ました。

イベントで制御してみよう

今までは、達成フラグでフラグ0x03(制圧フラグ)を有効にして、クリア条件を作ってきました。
これは、イベントが実行される時に達成フラグが有効になるという特性を利用してきたわけです。
しかし、フラグを立てることは、イベント命令でも可能です。
イベント命令で、フラグを立てることで、もっと柔軟なイベントが作れます。

今回は、エイリークがゼトと会話をすると、選択肢を表示して、選択肢で「はい」と答えた場合のみクリアになるようにしてみましょう。

  • 続く-