Wikiマークアップ

目次

クリア条件の作り方

i.imgur.com_bhdwocr.jpg

クリア条件とは何か?

i.imgur.com_bvk40yk.jpg

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

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

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

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

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

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

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

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

StepA1

“イベント”をクリックします。
i.imgur.com_u8f268o.jpg

StepA2

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

StepA3

コンボボックスから、“マップオブジェクト”を選択します。
i.imgur.com_wxcqay1.jpg

StepA4

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

StepA5

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

StepA6

領域が確保されました。
i.imgur.com_vgonero.jpg

StepA7

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

StepA8

達成フラグを 03(制圧フラグ)にします。
i.imgur.com_st2okmy.jpg

StepA9

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

StepA10

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

StepA11

「種類」を「11=制圧」にしてください。
i.imgur.com_bvyqlu7.jpg

StepA12

これで設定は完了です。
上から確認してみましょう。
以下のように設定しました。

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

i.imgur.com_jjmtaob.jpg

StepA13

設定ができたので、“書き込み”ボタンを押して、データを書き込みます。
i.imgur.com_bqutyfh.jpg

StepA14

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

StepA15

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

StepA16

制圧を行うとステージをクリアできます。
i.imgur.com_bnp4r9n.jpg


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

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

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

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

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

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

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

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

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

StepAA1

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

StepAA2

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

StepAA3

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

StepAA4

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

以下のように変更しました。

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


i.imgur.com_rcpmlwm.jpg

StepAA5

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

StepAA6

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


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

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

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

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

StepB1

“イベント”をクリックします。
i.imgur.com_4f3bmcf.jpg

StepB2

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

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

StepB3

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

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

StepB4

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

StepB5

前回の制圧条件で、詳細に説明したので、今回は、一気に説明します。
以下の様に設定してみてください。

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


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

開始ターン3
終了ターン0

i.imgur.com_yzzm4jz.jpg

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

StepB6

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

StepB7

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

StepB8

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

あれ・・・・?
4ターン目になってしまいました。
i.imgur.com_zdx14po.jpg

いつまで待ってもクリアイベントが動作しません。
不思議です。
イベントが無視されたのでしょうか?
そうではありません。
イベントは実行され、フラグ0x03は有効になっています。


ユニットを待機させてみてください。
ステージクリアできます。
i.imgur.com_et4g1on.jpg
i.imgur.com_btvhrg8.jpg


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

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

StepB9

イベントをダミーイベントの0x01から、終了イベントにかかれているアドレスに変更します。
i.imgur.com_fug7xzh.jpg

終了イベントは、右上のコンボボックスの一番下に、あります。
i.imgur.com_ns5gurf.jpg

これが終了イベントが書かれている領域です。(画面はFE8Jです)
このアドレスをメモして、私達の終了イベントに記載すればいいのです。

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

i.imgur.com_mm07rqm.jpg

StepB10

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

i.imgur.com_eegzbkd.jpg

StepB11

設定ができたので、保存します。
i.imgur.com_vqqtife.jpg

さて、F5キーでエミュレータを起動してください。
そして、序章を最初からやり直してみてください。

現在2ターン目です。
i.imgur.com_bii7q79.jpg

ここで待機すると・・・・
i.imgur.com_h0rqejo.jpg

今度は、3ターンになった瞬間に、終了イベントが表示されました。
上手く動作しました。
i.imgur.com_xglocqp.jpg

StepB12

これで、特定ターンでクリアできるようになりました。
しかし、画面の装飾がまだ出来ていません。
i.imgur.com_twwbhqn.jpg

通常、防衛マップの場合、ターン数が表示されるべきです。
i.imgur.com_rcoj3ir.jpg

このメニューを設定してみましょう。

StepB13

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

StepB14

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

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

i.imgur.com_cohji5t.jpg


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

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

i.imgur.com_bweeefz.jpg

StepB15

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

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

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

StepB16

F5キーでエミュレータを起動して、動かしてみましょう。
ターン数が正しく表示されています。
i.imgur.com_rt3fdim.jpg

2ターン目になると、「最終ターン」と表示されました。
i.imgur.com_bhdwocr.jpg

完璧です。
これで、防衛マップを作れるようになりました。

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

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

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

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

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

i.imgur.com_x2wbqsn.jpg

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

StepC1

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

StepC2

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

StepC3

コンボボックスから、“常時条件”を選択します。
i.imgur.com_i1zkfo3.jpg

StepC4

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

StepC5

新規に確保する件数を4件にします。
これは、既存で3件登録されているためです。
3+1=4だからです。
i.imgur.com_1ga3r9w.jpg

件数を変更したら、「移動処理を実効する」ボタンを押してください。

StepC6

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

StepC7

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

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

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

i.imgur.com_3jwoeb0.jpg
i.imgur.com_zkicgla.jpg

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

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

StepC8

さて、常時条件に戻って、ボス撃破時に動作するイベントを作ります。
ボスが死亡すると、死亡セリフが表示されます。
この時、フラグ02が有効になります。
このフラグは自由に変更できます。
FEでは、ボス撃破では、02が使われることが習慣になっています。
i.imgur.com_suks1n4.jpg

そのため、これを拾う設定を作ります。
以下のように設定してください。

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

i.imgur.com_axbcz8h.jpg

StepC9

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

StepC10

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

StepC11

ブレゲを倒しましょう。
i.imgur.com_6b10d8q.jpg

StepC12

ブレゲを倒すと、死亡セリフが表示されます。
この時、死亡セリフの達成フラグとして設定されている、フラグ02がONになります。
i.imgur.com_suks1n4.jpg

すると、私達が先程作ったイベントの動作条件が満たされ、イベントが実行されます。
私達のイベントによって、達成フラグ03がONになり、2章の終了イベントが呼ばれます。

StepC12

終了イベントが呼び出されてクリアになりました。
i.imgur.com_6lvz1kp.jpg

これで、ボス撃破でクリアできるようになりました。

StepC13

さて、いつものやっているマップの装飾を変更しましょう。
i.imgur.com_ac6otun.jpg

1章の設定は以下のようになっています。
i.imgur.com_oylkfci.jpg

これを以下のように変えましょう。
ボス撃破というものがなかったので、序章のもので代用します。
内容が気に入らない方は、テキスト編集で変更してください。

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

StepC14

設定をしたら、書き込みます。
i.imgur.com_kklxi8k.jpg

StepC15

書き込んだから、F5キーをおして動作を確認してください。
i.imgur.com_x2wbqsn.jpg

これで、ボス撃破マップも作れるようになりました。

敵全滅ステージを作る

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

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

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

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

StepD1

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

StepD2

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

StepD3

コンボボックスから、“常時条件”を選択します。
i.imgur.com_vqp9hmx.jpg

StepD4

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

StepD5

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

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

i.imgur.com_q756uv9.jpg

StepD6

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

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

i.imgur.com_9rauyfn.jpg

StepD7

書き込みボタンで書き込みましょう。
i.imgur.com_antqijo.jpg

StepD8

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

StepD9

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

StepD10

書き込みボタンで書き込んでください。
i.imgur.com_ujvejp3.jpg

StepD11

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

StepD12

残りの敵数も表示されています。
i.imgur.com_kj1hodj.jpg

敵を全員倒しましょう。
i.imgur.com_zekf47q.jpg

StepD13

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


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

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

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

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

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

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

StepE2

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

StepE3

コンボボックスから、“会話条件”を選択します。
i.imgur.com_vqp9hmx.jpg

StepE4

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

StepE5

発生タイプを、03=話す条件にします。
i.imgur.com_qhqxnic.jpg

StepE6

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

StepE5

早速動作を確認します。
i.imgur.com_txg7zyg.jpg


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


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

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

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

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

選択肢で終了できるイベントを作ってみる

ゼトと話すと選択子が出てきて、「はい」を選ぶとクリアになるようにしてみましょう。
「はい」を選択すると、 0x03フラグを立てて、終了イベントを呼びします。

StepF1

まずは、前回同様に会話イベントを作成します。
イベントをクリックします。
i.imgur.com_zy404by.jpg

StepF2

イベントの種類から、会話条件を選択します。
i.imgur.com_wgrj0t1.jpg

StepF3

会話条件が0件なので増やします。
i.imgur.com_kh6j9cd.jpg

StepF4

1件だけデータを確保します。
i.imgur.com_kogtlgb.jpg

StepF5

確保したデータに、会話条件の設定を書き込みます。
まず、発生タイプを、03=話す条件にします。
i.imgur.com_quqlfjg.jpg

StepF6

会話で、エイリークがゼトと会話するを設定するのは前回と同じです。
i.imgur.com_uwcxesi.jpg

StepF7

ここから前回と違うところです。
達成フラグを0のままにします。
なぜなら、選択肢でいいえを選んだ場合、クリアにしてはいけないためです。
そして、その場合、再度会話できなくてはいけません。
何度もイベントを発動させるためには、達成フラグが0である必要があります。
i.imgur.com_mt1f747.jpg

StepF8

会話した時にイベントを動作させるために、新規イベントボタンを押して、イベントの領域を確保します。
i.imgur.com_ebvb19k.jpg

StepF9

「はい」を押して、領域を割り当てます。
i.imgur.com_kudqb2p.jpg

StepF10

イベントを割り振りました。
イベントボタンを押すと、イベントスクリプトを書くことが出来ます。
i.imgur.com_geenscy.jpg

StepF11

イベントエディタを起動しました。
イベントエディタを起動したら、余白の部分をダブルクリックします。
すると、コントロールパネルが登場します。

StepF12

命令変更ボタンをクリックします。
i.imgur.com_ldu9ryu.jpg

StepF13

まずは、テキストを出したいので、「システムメッセージ表示イベント」を選択します。
i.imgur.com_aqdqw5u.jpg

StepF14

テキスト領域は、どこか空いている所を使います。
今回は、辞書領域を勝手に使うことにしました。
i.imgur.com_5okl8fh.jpg

StepF15

以下のように書きます。@0018が選択肢です。

次のステージに進みますか?
@0018

i.imgur.com_xh3sk9o.jpg

変更します。
i.imgur.com_hqftcak.jpg

変更した内容を書き込みます。
i.imgur.com_upoh6ei.jpg

StepF16

左側のリストをダブルクリックすると、元の画面に戻れます。
ダブルクリックした、テキストIDが自動的に入力されます。
i.imgur.com_zyaw0fd.jpg

StepF17

変更ボタンを押します。
i.imgur.com_uafqm6g.jpg

StepF18

システムメッセージが入りました。
i.imgur.com_vrlchkw.jpg

注意
選択肢を出すと出すときは、システムメッセージか、背景なし会話を利用してください。
背景付きの会話イベントを利用すると、会話が終わり背景を消す時に選択肢で選ばれたデータが消えます。
どうしても、背景を出したい場合は、先に背景を変更した後で、背景なし会話イベントを利用してください。

StepF19

選ばれた選択肢を見る条件を作ります。

前回同様に、余白をダブルクリックしてください。
コントロールパネルが表示されます。
命令変更を選択肢ます。
i.imgur.com_zg2pxcg.jpg

StepF20

カテゴリの「VAL」を選択します。
i.imgur.com_mkbqrwa.jpg

StepF21

「SVAL」を選択します。
i.imgur.com_ohp5ndw.jpg

StepF22

以下のように設定します。

MemorySlot7
Value_to_store1


メモリスロット7に1を代入します。
比較対象のメモリスロットとして利用します。

i.imgur.com_1bac2ih.jpg

StepF23

設定したら、新規挿入ボタンを押します。
注意:更新ボタンではなく、新規挿入ボタンです。そうしないと、先程作った命令を上書きします。
i.imgur.com_j4tbacj.jpg

StepF24

比較用の命令を作ります。

同じく、余白をダブルクリックして、コントロールパネルを出します。
命令変更ボタンを押してください。
i.imgur.com_hd7erej.jpg

StepF25

カテゴリから「分岐」を選択して、「BNE」を選択肢てください。
(直前の条件式の結果を参照する方でも構いません。0x0Cが最初から代入されているかどうかの違いです)

i.imgur.com_8jpseat.jpg

StepF26

以下のように入力します。

条件ID0BNEが成立したら飛ぶ条件ラベルです
MemorySlot1C選択肢の結果が代入されます
MemorySlot17先程1を代入したものです

i.imgur.com_3dkzszo.jpg

StepF27

「新規挿入」をクリックして追加してください。

i.imgur.com_vlgzy1y.jpg

StepF28

次の命令を入れます。
余白をダブルクリックして、命令変更を選択してください。
i.imgur.com_9ehsuja.jpg

StepF29

カテゴリの「フラグ」を選択して、「フラグON」を選択します。
i.imgur.com_os3owfw.jpg

StepF30

フラグ3をONにするようにします。

Flag3制圧フラグ

i.imgur.com_58jhutg.jpg

StepF31

「新規挿入」をクリックして追加してください。
i.imgur.com_upks9he.jpg

StepF32

同様に余白をクリックして、命令変更を押してください。
i.imgur.com_qbmps7e.jpg

StepF32

カテゴリの「サブルーチン」を選択して、「イベントを呼び出す」を選択します。
i.imgur.com_3nu4tfn.jpg

StepF33

序章の終了イベントを書きます。(画面はFE8Jのものです。)

FE8J08A6129C序章終了イベント
FE8U089EF164序章終了イベント
この値は、ポインタを設定するべき値ですが、FEBuilderGBAが自動的に解決するので、
08A6129Cでも、A6129Cでも、どちらでも問題ありません。

i.imgur.com_b97qwuz.jpg

StepF34

「新規挿入」をクリックして追加してください。
i.imgur.com_vekc3fd.jpg

StepF35

同様に余白をクリックして、命令変更を押してください。
(これで最後です)
i.imgur.com_zb3ltzk.jpg

StepF36

カテゴリの「分岐」を選択して、「LABEL」を選択します。
i.imgur.com_pjzn5rw.jpg

StepF37

条件IDを0にしてください。

条件ID0

値を設定したら、「新規挿入」をクリックして追加してください。
i.imgur.com_ez145kx.jpg

StepF38

これで完成です。

i.imgur.com_famykti.jpg

選択肢で選んだ内容がメモリスロットCに代入されます。
その値を、1を代入したメモリスロット7と比較します。
もし、選択肢の結果が、1だったら、フラグ03を有効にして、終了イベントを呼び出します。(章を終了させます。)
もし、選択肢の結果が、1ではなかったら、LABELにジャンプします。(フラグを立てる部分を飛び越します。)

StepF39

「書き込み」ボタンを押して書き込んでください。
i.imgur.com_heyo84h.jpg

StepF40

さっそくF5キーを押して、エミュレータを起動して、動作を確認してみます。
エイリークがゼトと、話すと・・・
i.imgur.com_leqitqr.jpg


「次のステージに進みますか?」という質問が表示されます。
i.imgur.com_lrfznyw.jpg


「はい」を選択すると、章クリアになります。
i.imgur.com_rmi5wxv.jpg


「いいえ」を選択すると、そのまま章が続行します。
i.imgur.com_bvk40yk.jpg
i.imgur.com_wgstyf1.jpg


もちろん、次のターンにもう一度話すこともできます。

StepF41

イベントで、終了条件を作る方法を理解できましたか?

イベントでフラグを立てる方法を理解したら、なんでも出来ます。
パッチでは、さまざなまものを条件として利用できる拡張が作られています。

FE5のように離脱させる。
特定金額をもっているか判定する。
特定アイテムを所持しているか判定する。
特定のタイル変化を起こすとフラグが有効になる。

さまざまな条件が用意されています。

GBAFEで、クリアとは、フラグ0x03フラグ(制圧フラグ)を立てて、終了イベントを呼び出すことです。
この条件さえ守ればいいので、いろいろな勝利条件を作ることができるでしょう。
また、複数の勝利条件を作ることも出来ます。
あとは、貴方の発想力次第です。

ゲームオーバー条件

i.imgur.com_cet7tvh.jpg

ゲームオーバーが呼び出される条件は、フラグ0x65(GameOver)を立てて、ゲームオーバーイベントを呼び出すことです。

例えば、メインユニットが死亡すると、フラグ0x65が有効になります。
そして、フラグ0x65が有効になると、ゲームオーバーイベントが発生します。
そのため、ゲームオーバーにさせるには、フラグ0x65を有効にする必要があります。

特定ターンが過ぎたら、ゲームオーバーになるイベントを作ってみましょう。

クリアフラグ同様に、ゲームオーバー条件もとても簡単です。
フラグ0x65を有効にして、ゲームオーバーイベントを呼び出すだけです。
そのため、さまざまなゲームオーバー条件を作ることが出来ます。

StepG1

“イベント”をクリックします。
i.imgur.com_u53mcuc.jpg

StepG3

ゲームオーバーイベントは、常時条件に定義されています。
確認してみましょう。
i.imgur.com_qqynr0q.jpg

StepG4

これがゲームオーバーイベントです。
イベントのアドレスをメモしておきましょう。(画面はFE8Jのものです)

FE8J85B9EE8ゲームオーバーイベント
FE8U8592104ゲームオーバーイベント

i.imgur.com_w4kpkpf.jpg

StepG5

では、ターン条件に戻ります。
特定ターンになったら、ゲームオーバーイベントを呼んで、ゲームオーバーになるようにしてみましょう。
i.imgur.com_vrwkkrw.jpg

StepG6

ゲームオーバーを実行するターン命令を記述する部分を増やすために、リストの拡張を行います。
i.imgur.com_twod1f8.jpg

StepG7

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

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

StepG8

新規に確保した命令は、一番下に追加されています。
一番下にある、新規に確保した命令を選択します。
i.imgur.com_n6mkepz.jpg

StepG9

以下のように設定します。

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

今回は、3ターン目になったらゲームオーバーになるようにしてみます。

開始ターン3
終了ターン3

i.imgur.com_f5ocpm9.jpg


そして、イベントに、先程メモしたゲームオーバーイベントのアドレスを書きます。

FE8J85B9EE8ゲームオーバーイベント
FE8U8592104ゲームオーバーイベント

i.imgur.com_0civxn3.jpg

StepG10

これでイベントは完成です。
以下のように設定しました。

発生タイプ22ターン条件
達成フラグ65GameOver
イベント85B9EE8FE8Jのゲームオーバーイベント
開始ターン33ターン目に実行する
終了ターン3
ターン前指定0主人公ターン

i.imgur.com_lztktyj.jpg

StepG11

書き込みボタンを押して結果を書き込みます。
i.imgur.com_eennayj.jpg


これで動作するのですが、画面の装飾も定義してみます。
最初の画面に戻って、「マップ設定」を選択してください。
i.imgur.com_yfgjh9y.jpg

StepG12

以下のように設定します。

特殊表示2=ターン防衛
ターン数表示用33-1=2ターン目が最終ターン

i.imgur.com_zfvhajz.jpg

StepG13

書き込みボタンを押して、書き込んでください。
i.imgur.com_mceslph.jpg

StepG14

設定が出来たので、F5キーを押して、エミュレータを起動してください。
i.imgur.com_mfreiiq.jpg

StepG15

オニールを倒さずに放置していると、最終ターンになり・・・・
i.imgur.com_dgner1j.jpg

StepG16

3ターン目に、ゲームオーバーになりました。
i.imgur.com_cet7tvh.jpg

StepG17

動作はしましたが、ゲームオーバーがあまりに唐突です。
「しまった。遅すぎた」などのセリフを出した後でゲームオーバーになるようにしてみましょう。

StepG18

先程作ったターン条件で、イベントの部分に0を入れてください。
i.imgur.com_ciy1tqy.jpg

StepG19

すると、新規イベントというボタンが表示されます。
このボタンをクリックして、セリフを表示するイベントを作ります。
i.imgur.com_vqokr7z.jpg

StepG20

領域を割り当てます。
i.imgur.com_oxxyj28.jpg

StepG21

イベントの部分をクリックすると、新規に確保した、イベント領域にジャンプできます。
i.imgur.com_7vd3q6v.jpg

StepG22

ここに、ゲームオーバー時の演出を書いていきます。
i.imgur.com_zcszx87.jpg

StepG23

余白をクリックすると、コントロールパネルが表示されます。
命令変更ボタンをクリックしてください。
i.imgur.com_gch2q59.jpg

StepG24

「会話イベント」を選択します。
i.imgur.com_q7sotqv.jpg

StepG25

「しまった。遅すぎた」というセリフを作る文字列を指定します。
今回は、辞書領域を潰してその上に作ります。
i.imgur.com_edzolhh.jpg

StepG26

テキストのリンクかから、文字列に飛びます。
i.imgur.com_sea1hou.jpg

StepG27

「簡易」を選択してください。
そして、セリフという項目をダブルクリックしてください。
i.imgur.com_c8okbcc.jpg

StepG28

「キャラ登場」を選択してください。
今回は、エイリークを左中の位置に表示します。
設定したら、「変更」ボタンを押してください。
i.imgur.com_x51mnmd.jpg

StepG29

再度、余白をクリックして、今度は、左中に設置したエイリークがしゃべるセリフを書きます。
「しまった。遅すぎた。@0003」
i.imgur.com_kmb4hpb.jpg

StepG30

「新規追加」ボタンを押して追加してください。
i.imgur.com_etujeyv.jpg

StepG31

これで完成です。
書き込みボタンを押して、結果を書き込んでください。
i.imgur.com_oetal5e.jpg

StepG32

ちなみに、簡易メニューを使って書いたスクリプトは以下のようなります。
簡易メニューを利用しないで、手で書く場合は、この内容を書いてください。
i.imgur.com_n5vkmdq.jpg

StepG33

現在編集している文字列IDをダブルクリックしてください。
そうすると、元のイベント編集に戻ります。
i.imgur.com_j9lsdad.jpg

StepG34

先程設定した会話の内容が入っています。
変更ボタンを押して、命令をリストに追記してください。
i.imgur.com_bs4zocu.jpg

StepG35

次の命令を書きます。
同様に余白をクリックしてコントロールパネルを出してください。
コントロールパネルの命令変更をクリックしてください。
i.imgur.com_hlnf9ss.jpg

StepG36

カテゴリの「フラグ」から、「フラグON」を選択します。
i.imgur.com_iqte3ix.jpg

StepG37

フラグ65 ゲームオーバーフラグを設定します。

Flag65ゲームオーバー

i.imgur.com_pmxfvcd.jpg

StepG38

新規挿入ボタンをクリックして追加してください。
i.imgur.com_qxjcuvo.jpg

StepG39

次の命令を定義します。
同様に余白を追加して、命令変更ボタンを押してください。

StepG40

カテゴリの「サブルーチン」から、「イベントを呼び出す」を選択してください。
i.imgur.com_f2i4mns.jpg

StepG41

呼び出すイベントにゲームオーバーイベントを設定します。

FE8J85B9EE8ゲームオーバーイベント
FE8U8592104ゲームオーバーイベント

i.imgur.com_dmpcgnv.jpg

StepG42

新規挿入ボタンをクリックして追加してください。
i.imgur.com_mfggwxw.jpg

StepG43

これで完成です。
i.imgur.com_yh1mtzf.jpg

StepG44

「書き込み」ボタンを押して、内容を書き込んでください。
i.imgur.com_2s3y7kj.jpg

StepG45

設定が出来たので、F5キーを押して、エミュレータを起動してください。
最終ターンを超えると・・・・
i.imgur.com_mf8a4n3.jpg



セリフが表示され、
i.imgur.com_xvgdsbf.jpg


GAMEOVERになりました。
i.imgur.com_x1p5eus.jpg


応用

以上で完了です。
私たちは、ゲームオーバーイベントも作ることが出来ました。
これを応用すると、いろいろなステージを作ることが出来ます。

ユニット防衛

特定のユニットを守らないといけないマップです。
そのキャラが死亡すると、ゲームオーバーにします。

ユニットが死亡すると、死亡セリフが表示されます。
死亡セリフが実行されると、指定したフラグが有効になります。
このフラグを常時条件で拾うことで、イベントを作れます。
(ボス撃破のクリア条件の応用です)

拠点防衛

玉座や村を守らないといけないイベントです。
常時条件の範囲条件で作成することができます。

敵を拠点に引き寄せるには、AIの拠点へ移動させる命令を使う必要があります。
FE8では、ディフォルトで1つしか用意されていないので、複数作りたい場合は、“AI”メニューから増やす必要があります。

その他、特定の人物がその場所にいないと、ゲームオーバーにする。
特定の人物がその場所にいると、ゲームオーバーにするなど、さまざまな応用が考えられます。
だからといって、何か間違うと即死するようなゲームを作ると、ゲームとして面白くないかもしれません。
面白い方法を考えてみてください。
後は、あなたの発想力しだいです。

おしまい

以上で、勝利条件、及び、敗北条件の設定方法の説明を終わります。
簡単なものから、複雑なものまでいろいろなものがあります。
しかし、基本的に大切なのは、1つだけです。
勝利条件を作りたい場合は、フラグ03を立てて、終了イベント呼ぶことです。
敗北条件を作りたい場合は、フラグ65を立てて、ゲームオーバーイベントを呼ぶことです。
これだけ理解していれば、さまざなものを作ることができるでしょう。

頑張って面白いステージを作ってください。