DQ3 ストーリー変更(メルキド襲撃6)

今回から肝心の戦闘部分を実装していきます。

流れとしては、

  1. 町の入り口にいるガライに話し掛ける。
  2. 「準備はいいか?」に対して「はい」と答えるとガライに銀の竪琴を渡す。
  3. イベント戦闘6連戦(ボス戦含む)
  4. 画面切り替わり、説明文章表示

というようにしました。実際にやってみてわかったんですが、いくつか問題点がありました。

  • 移動中も戦闘BGMなので戦闘終了→移動画面に切り替え→次の戦闘開始という部分で戦闘BGMの出だしのBGMがかなりの頻度で繰り返されることになるので、鬱陶しい。
  • 連戦中にPCの移動がないので、イベント自体の印象が地味www

2点目の問題については、今のところいい案が思いつかないのでとりあえず後回しにします。1点目の問題については、「ボス戦が終わるまでBGMの切り替えは一切行わない」とすることで対処します。

まずはイベント全体の枠を実装してしまいます。例によってイベントの設計を最初に行います。

カウンタ処理
1000ガライに銀の竪琴を渡す+ガライが指定座標に移動
2000PCが指定座標に移動+ガライが銀の竪琴を弾き始める
3000モンスター1出現
4000連戦1戦目
5000モンスター2出現
6000連戦2戦目
7000モンスター3出現
8000連戦3戦目
9000モンスター4出現
10000連戦4戦目
11000モンスター5出現
12000連戦5戦目
13000モンスター6出現
14000連戦6戦目(ボス戦)
15000モンスター6台詞+消滅
16000兵士1のアクション
17000兵士2のアクション
18000画面をフェードアウトさせ、説明台詞を表示、PCを宿屋に移動

長いですねー。今回はカウンタを18000まで使います。最後の「説明台詞を表示」というのはボストロールを倒した後に表示されるアレと同じものです。

  • SR: $0A4AB2 メルキド進入時初期化処理
0A4AD7JSL $CCF735SR: $0CF735メルキド特殊効果+イベント設定
0A4ADB-DNOP
  • SR: $0CF279 メルキド特殊効果+イベント設定(新SR)
0CF735JSL $C77889SR: $077889 引数:1#$CAE288特殊効果設定?
0CF73CJSL $C7785FSR: $07785F 引数:1#$CCFD0Aイベント設定
0CF743RTLreturn

  • SR: $0CFA3D NPC1_TalkSR_0581(ガライのNPC)(新SR)
0CFA3DJSL $CCF2EESR: $0CF2EEメルキド襲撃イベントを一度経験している(該当c=on)
0CFA41BCS #$03if(c==on) goto $0CFA46
0CFA43BRK $100D ($0C100D)goto $00FFE6(メッセージ表示) #$100D
0CFA46BRK $100E ($0C100E)goto $00FFE6(メッセージ表示) #$100E
0CFA49JSL $CDAC66SR: $0DAC66はい/いいえ選択処理(はいc=on)
0CFA4DBCC #$02if(c==off) goto $0CFA51
0CFA4FBRA #$04goto $0CFA55
0CFA51BRK $1017 ($0C1017)goto $00FFE6(メッセージ表示) #$1017
0CFA54RTLreturn
0CFA55JSL $CCF2EESR: $0CF2EEメルキド襲撃イベントを一度経験している(該当c=on)
0CFA59BCC #$08if(c==off) goto $0CFA63
0CFA5BJSL $C737BESR: $0737BE 引数:1#$1023メッセージ表示
0CFA61BRA #$10goto $0CFA73
0CFA63JSL $C737BESR: $0737BE 引数:1#$1018メッセージ表示
0CFA69JSL $CCF1AFSR: $0CF1AF銀の竪琴削除
0CFA6DLDA #$0008A=#$0008
0CFA70TSB $35B1A or $35B1メルキドにモンスター襲撃中に銀のたてごとをガライに渡した
0CFA73JSL $CDADD8SR: $0DADD8カウンタに1000をセット
0CFA77RTLreturn

  • SR: $0CF45A NPC1_MoveSR_0581(ガライのNPC)(新SR)
0CF45ACOPgoto $00FFE4
0CF45BJSL $CDAEB1SR: $0DAEB1カウンタが1000になるまで待機
0CF45FJSL $CC73CFSR: $0C73CFキャラクターが足踏みをする処理
0CF463LDX #$0030X=#$0030
0CF466LDA #$001EA=#$001E
0CF469JSL $C75474SR: $075474キャラクター移動先座標指定
0CF46DJSL $CCD59DSR: $0CD59D指定座標にY軸→X軸の順でキャラクター移動
0CF471JSL $CCD857SR: $0CD857キャラクターを上に向かせる
0CF475JSL $CDADE6SR: $0DADE6カウンタに2000をセット
0CF479RTLreturn

  • SR: $0CFD0A メルキド追加イベント処理(新SR)
0CFD0ACOPgoto $00FFE4
0CFD0BJSL $CCE1D1SR: $0CE1D1イベント開始待ち?
0CFD0FJSL $CDAED1SR: $0DAED1カウンタが2000になるまで待機
0CFD13JSL $CCD392SR: $0CD392キャラクターイベント中移動フラグON?
0CFD17JSL $CCD346SR: $0CD346移動速度1倍速セット?
0CFD1BJSL $CDD687SR: $0DD687PC先頭キャラクターを移動対象にする?
0CFD1FLDX #$0032X=#$0032
0CFD22LDA #$001CA=#$001C
0CFD25JSL $C75474SR: $075474キャラクター移動先座標指定
0CFD29JSL $CCD58CSR: $0CD58C指定座標にX軸→Y軸の順でキャラクター移動
0CFD2DJSL $C737BESR: $0737BE 引数:1#$1019メッセージ表示
0CFD33JSL $CDACD2SR: $0DACD2キー入力でメッセージウィンドウを閉じる
0CFD37JSL $CDADEDSR: $0DADEDカウンタに3000をセット
0CFD3BJSL $CDAEF1SR: $0DAEF1カウンタが4000になるまで待機
0CFD3FJSL $CDEA00SR: $0DEA00イベント戦闘(メルキド襲撃1戦目)
0CFD43JSL $CDADFBSR: $0DADFBカウンタに5000をセット
0CFD47JSL $CDAF11SR: $0DAF11カウンタが6000になるまで待機
0CFD4BJSL $CDEA3CSR: $0DEA3Cイベント戦闘(メルキド襲撃2戦目)
0CFD4FJSL $CDAE09SR: $0DAE09カウンタに7000をセット
0CFD53JSL $CDAF31SR: $0DAF31カウンタが8000になるまで待機
0CFD57JSL $CDEA78SR: $0DEA78イベント戦闘(メルキド襲撃3戦目)
0CFD5BJSL $CDAE17SR: $0DAE17カウンタに9000をセット
0CFD5FJSL $CDAF51SR: $0DAF51カウンタが10000になるまで待機
0CFD63JSL $CDEAB4SR: $0DEAB4イベント戦闘(メルキド襲撃4戦目)
0CFD67JSL $CDAE25SR: $0DAE25カウンタに11000をセット
0CFD6BJSL $CDAF71SR: $0DAF71カウンタが12000になるまで待機
0CFD6FJSL $CDEAF0SR: $0DEAF0イベント戦闘(メルキド襲撃5戦目)
0CFD73JSL $CDAE33SR: $0DAE33カウンタに13000をセット
0CFD77JSL $CDAF91SR: $0DAF91カウンタが14000になるまで待機
0CFD7BLDA #$0000A=#$0000
0CFD7EJSL $C778C1SR: $0778C1BGM設定
0CFD82JSL $CDEB2CSR: $0DEB2Cイベント戦闘(メルキド襲撃ボス戦)
0CFD86JSL $CDAE41SR: $0DAE41カウンタに15000をセット
0CFD8AJSL $CDAFD1SR: $0DAFD1カウンタが18000になるまで待機
0CFD8EJSL $CDA12DSR: $0DA12D
0CFD92JSL $CDC5C2SR: $0DC5C2
0CFD96LDA #$00B1A=#$00B1
0CFD99LDX #$0000X=#$0000
0CFD9CJSL $C733E5SR: $0733E5
0CFDA0JSL $C047B2SR: $0047B2 引数:1#$F6376B特殊効果?
0CFDA7JSL $C04835SR: $004835 引数:1#$F6376B
0CFDAEBCC #$02if(c==off) goto $0CFDB2
0CFDB0BRA #$03goto $0CFDB5
0CFDB2COPgoto $00FFE4
0CFDB3BRA #$F2goto $0CFDA7
0CFDB5LDA #$0032A=#$0032
0CFDB8JSL $C74B39SR: $074B39処理にインターバルを置く?
0CFDBCJSL $CDC68BSR: $0DC68B
0CFDC0JSL $CDC638SR: $0DC638
0CFDC4LDA #$0007A=#$0007
0CFDC7JSL $C1A988SR: $01A988 引数:1#$101Cメッセージ表示
0CFDCDJSL $CDC644SR: $0DC644
0CFDD1JSL $CDC638SR: $0DC638
0CFDD5LDA #$0007A=#$0007
0CFDD8JSL $C1A988SR: $01A988 引数:1#$101Dメッセージ表示
0CFDDEJSL $CDC644SR: $0DC644
0CFDE2JSL $CDA7EESR: $0DA7EE宿屋一泊BGM再生
0CFDE6JSL $C3D332SR: $03D332生存者HPMP回復
0CFDEAJSL $CDA1B1SR: $0DA1B1現在のBGMをフェードアウトして町BGM再生(アレフガルド)
0CFDEELDA #$0198A=#$0198
0CFDF1JSL $C7315ESR: $07315Eマップ座標データアクセス
0CFDF5JSL $CCD298SR: $0CD298イベント終了時処理?
0CFDF9RTLreturn

カウンタ18000以降の処理はいまいち詳細は不明で、サマンオサのボストロールを倒した後の処理をそのままコピって来てるだけです。

  • SR: $0DE56A NPC1_MoveSR_0584(モンスター1のNPC)(新SR)
0DE56ACOPgoto $00FFE4
0DE56BJSL $CDAEE1SR: $0DAEE1カウンタが3000になるまで待機
0DE56FJSL $CCD392SR: $0CD392キャラクターイベント中移動フラグON?
0DE573JSL $CCD366SR: $0CD366移動速度5/3倍速セット?
0DE577LDA #$0031A=#$0031
0DE57ALDX #$000EX=#$000E
0DE57DJSL $C75305SR: $075305キャラクター出現座標を指定
0DE581LDX #$0031X=#$0031
0DE584LDA #$0018A=#$0018
0DE587JSL $C75474SR: $075474キャラクター移動先座標指定
0DE58BJSL $CCD59DSR: $0CD59D指定座標にY軸→X軸の順でキャラクター移動
0DE58FJSL $CDADF4SR: $0DADF4カウンタに4000をセット
0DE593RTLreturn
  • SR: $0DE594 NPC1_MoveSR_0585(モンスター2のNPC)(新SR)
  • SR: $0DE5BE NPC1_MoveSR_0586(モンスター3のNPC)(新SR)
  • SR: $0DE5E8 NPC1_MoveSR_0587(モンスター4のNPC)(新SR)
  • SR: $0DE612 NPC1_MoveSR_0588(モンスター5のNPC)(新SR)
  • SR: $0DE660 NPC1_MoveSR_0589(モンスター6のNPC)(新SR)

同様の実装のため省略

以外と長くなってしまったため、肝心の戦闘部分のところまでたどり着けませんでした。次回説明することにします。

スポンサーリンク

コメントを書く

メールアドレスが公開されることはありません。コメントは管理者の承認後表示されます。