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

今回からイベントの実装を行います。イベントのトリガーは「銀の竪琴を持った状態でガライに話し掛ける」です。

カウンタ 処理
1000 BGMを戦闘中の音楽に変える+兵士のセリフ
2000 兵士が宿屋に駆け込んできて宿屋のカウンター前に到達する
3000 未使用
4000 モンスター襲撃を知らせる兵士のセリフ
5000 宿屋の主人がジャンプする+兵士退出&消滅
6000 ガライのセリフ
7000 ガライ退出&消滅
  • SR: $0B2FCD NPC1_TalkSR_01B0(メルキド宿屋のガライのNPC)
0B2FE1 JSR $F1BE SR: $0BF1BE メルキド宿屋ガライ会話追加処理
  • SR: $0BF1BE メルキド宿屋ガライ会話追加処理(新SR)
0BF1BE JSL $CCF2E1 SR: $0CF2E1 メルキド襲撃イベントが終わっているか(該当c=on)
0BF1C2 BCC #$05 if(c==off) goto $0BF1E9
0BF1C4 BRK $1020 ($0B1020) goto $00FFE6(メッセージ表示) #$1020
0BF1C7 BRA #$32 goto $0BF21B
0BF1C9 JSL $CCF2EE SR: $0CF2EE メルキド襲撃イベントを一度経験している(該当c=on)
0BF1CD BCC #$05 if(c==off) goto $0BF1F4
0BF1CF BRK $1021 ($0B1021) goto $00FFE6(メッセージ表示) #$1021
0BF1D2 BRA #$27 goto $0BF21B
0BF1D4 BRK $0348 ($0B0348) goto $00FFE6(メッセージ表示) #$0348
0BF1D7 BRK $0349 ($0B0349) goto $00FFE6(メッセージ表示) #$0349
0BF1DA LDA #$0040 A=#$0040
0BF1DD TSB $354B A or $354B
0BF1E0 LDA $35B1 A=$35B1
0BF1E3 AND #$0008 A&=#$0008
0BF1E6 BNE #$13 if(z==off) goto $0BF21B
0BF1E8 JSL $CDACD2 SR: $0DACD2 キー入力でメッセージウィンドウを閉じる
0BF1EC LDA #$00C4 A=#$00C4 銀の竪琴のアイテムID
0BF1EF LDX #$0104 X=#$0104
0BF1F2 JSL $C78238 SR: $078238 アイテム保持チェック(持っているc=on)
0BF1F6 BCC #$0B if(c==off) goto $0BF223
0BF1F8 BRK $100A ($0B100A) goto $00FFE6(メッセージ表示) #$100A
0BF1FB JSL $CDACD2 SR: $0DACD2 キー入力でメッセージウィンドウを閉じる
0BF1FF JSL $CDADD8 SR: $0DADD8 カウンタに1000をセット
0BF203 RTS return
  • SR: $0CF2E1 メルキド襲撃イベントが終わっているか(該当c=on)(新SR)
  • SR: $0CF2EE メルキド襲撃イベントを一度経験している(該当c=on)(新SR)

フラグチェックのみなので省略

  • SR: $0CE694 メルキド宿屋イベント処理
0CE6B8 JSL $CCFC10 SR: $0CFC10 メルキド宿屋追加イベント処理
  • SR: $CFC10 メルキド宿屋追加イベント処理(新SR)
0CFC10 JSL $CCF8DE SR: $0CF8DE メルキド襲撃イベント終了後ガライと会話をしたか(該当c=on)
(後ほど別途解説)
0CFC37 BRA #$34 goto $0CFC6D
0CFC39 COP goto $00FFE4
0CFC3A JSL $CCE1D1 SR: $0CE1D1 イベント開始待ち?
0CFC3E JSL $CDAEB1 SR: $0DAEB1 カウンタが1000になるまで待機
0CFC42 JSL $C1E32E SR: $01E32E 引数:1#$001A BGM(戦闘中BGM)再生
0CFC48 LDA #$001A A=#$001A
0CFC4B JSL $C778C1 SR: $0778C1 BGM設定
0CFC4F JSL $C1A92E SR: $01A92E 引数:1#$100F メッセージ表示
0CFC55 JSL $CDACD2 SR: $0DACD2 キー入力でメッセージウィンドウを閉じる
0CFC59 JSL $CDADE6 SR: $0DADE6 カウンタに2000をセット
0CFC5D JSL $CDAEE1 SR: $0DAEE1 カウンタが3000になるまで待機
0CFC61 JSL $CDADF4 SR: $0DADF4 カウンタに4000をセット
0CFC65 JSL $CDAF21 SR: $0DAF21 カウンタが7000になるまで待機
0CFC69 JSL $CADE4F SR: $0ADE4F ルーラ・キメラの翼使用不可(封印)設定
0CFC6D JSL $CCD298 SR: $0CD298 イベント終了時処理?
0CFC71 RTL return
  • SR: NPC1_MoveSR_057E (モンスター襲撃を知らせに来る兵士のNPC)
0CFBA0 COP goto $00FFE4
0CFBA1 JSL $CDAED1 SR: $0DAED1 カウンターが2000になるまで待機
0CFBA5 JSL $CCD392 SR: $0CD392 キャラクターイベント中移動フラグON?
0CFBA9 JSL $CCD35E SR: $0CD35E 移動速度4/3倍速セット?
0CFBAD LDA #$0016 A=#$0016
0CFBB0 LDX #$0027 X=#$0027
0CFBB3 JSL $C75305 SR: $075305 キャラクター出現座標を指定
0CFBB7 JSL $CCD857 SR: $0CD857 キャラクターを上に向かせる
0CFBBB LDX #$0016 X=#$0016
0CFBBE LDA #$001F A=#$001F
0CFBC1 JSL $C75474 SR: $075474 キャラクター移動先座標指定
0CFBC5 JSL $CCD59D SR: $0CD59D 指定座標にY軸→X軸の順でキャラクター移動
0CFBC9 JSL $CDADED SR: $0DADED カウンタに3000をセット
0CFBCD JSL $CDAEF1 SR: $0DAEF1 カウンタが4000になるまで待機
0CFBD1 JSL $C1A92E SR: $01A92E 引数:1#$100B メッセージ表示
0CFBD7 JSL $CDADFB SR: $0DADFB カウンタに5000をセット
0CFBDB JSL $CDACD2 SR: $0DACD2 キー入力でメッセージウィンドウを閉じる
0CFBDF LDX #$0016 X=#$0016
0CFBE2 LDA #$0027 A=#$0027
0CFBE5 JSL $C75474 SR: $075474 キャラクター移動先座標指定
0CFBE9 JSL $CCD59D SR: $0CD59D 指定座標にY軸→X軸の順でキャラクター移動
0CFBED JSL $C75930 SR: $075930 キャラクター消滅
0CFBF1 LDA #$0010 A=#$0010
0CFBF4 TSB $35B1 A or $35B1
0CFBF7 JSL $CDAE02 SR: $0DAE02 カウンタに6000をセット
0CFBFB RTL return
  • SR: $0CF796 NPC1_MoveSR_01AF(宿屋の主人のNPC)
0CF796 COP goto $00FFE4
0CF797 JSR $CDAF01 SR: $0DAF01 カウンタが5000になるまで待機
0CF79B LDA #$0018 A=#$0018
0CF79E JSR $C74B39 SR: $074B39 処理にインターバルを置く?
0CF7A2 JSRL $CC7289 SR: $0C7289 キャラクターがその場で飛び上がる処理
0CF7A6 RTL return
  • SR: $0DE518 NPC1_MoveSR_01B0(ガライのNPC)
0DE518 JSL $CCDADF SR: $0CDADF
0DE51C COP goto $00FFE4
0DE51D JSL $CDAF11 SR: $0DAF11 カウンタが6000になるまで待機
0DE521 JSL $CCF2EE SR: $0CF2EE メルキド襲撃イベントを一度経験している(該当c=on)
0DE525 BCC #$05 if(c==off) goto $0DE52C
0DE527 BRK $1022 ($0D1022) goto $00FFE6(メッセージ表示) #$1022
0DE52A BRA #$03 goto $0DE52F キー入力でメッセージウィンドウを閉じる
0DE52C BRK $100C ($0D100C) goto $00FFE6(メッセージ表示) #$100C
0DE52F JSL $CDACD2 SR: $0DACD2
0DE533 JSL $CCD392 SR: $0CD392 キャラクターイベント中移動フラグON?
0DE537 LDX #$001C X=#$001C
0DE53A LDA #$001F A=#$001F
0DE53D JSL $C75474 SR: $075474 キャラクター移動先座標指定
0DE541 JSL $CCD58C SR: $0CD58C 指定座標にX軸→Y軸の順でキャラクター移動
0DE545 LDX #$0016 X=#$0016
0DE548 LDA #$0027 A=#$0027
0DE54B JSL $C75474 SR: $075474 キャラクター移動先座標指定
0DE54F JSL $CCD58C SR: $0CD58C 指定座標にX軸→Y軸の順でキャラクター移動
0DE553 JSL $C75930 SR: $075930 キャラクター消滅
0DE557 JSL $CDAE09 SR: $0DAE09 カウンタに7000をセット
0DE55B RTL return

いつものとおりのイベント処理なのですが、宿屋の場合は一泊した後のメッセージなどのイベントがもともと設定されているのでSR中で追加イベント用に分岐させる必要があります($0CE6B8)。もう1点、宿屋の主人が飛び上がると背中にある「INN」の看板の下にもぐりこんでしまい、一瞬頭半分がちょん切れてしまうため、DQ3マップエディタを使って「INN」の看板を消しています。