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

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

カウンタ処理
1000BGMを戦闘中の音楽に変える+兵士のセリフ
2000兵士が宿屋に駆け込んできて宿屋のカウンター前に到達する
3000未使用
4000モンスター襲撃を知らせる兵士のセリフ
5000宿屋の主人がジャンプする+兵士退出&消滅
6000ガライのセリフ
7000ガライ退出&消滅

  • SR: $0B2FCD NPC1_TalkSR_01B0(メルキド宿屋のガライのNPC)
0B2FE1JSR $F1BESR: $0BF1BEメルキド宿屋ガライ会話追加処理
  • SR: $0BF1BE メルキド宿屋ガライ会話追加処理(新SR)
0BF1BEJSL $CCF2E1SR: $0CF2E1メルキド襲撃イベントが終わっているか(該当c=on)
0BF1C2BCC #$05if(c==off) goto $0BF1E9
0BF1C4BRK $1020 ($0B1020)goto $00FFE6(メッセージ表示) #$1020
0BF1C7BRA #$32goto $0BF21B
0BF1C9JSL $CCF2EESR: $0CF2EEメルキド襲撃イベントを一度経験している(該当c=on)
0BF1CDBCC #$05if(c==off) goto $0BF1F4
0BF1CFBRK $1021 ($0B1021)goto $00FFE6(メッセージ表示) #$1021
0BF1D2BRA #$27goto $0BF21B
0BF1D4BRK $0348 ($0B0348)goto $00FFE6(メッセージ表示) #$0348
0BF1D7BRK $0349 ($0B0349)goto $00FFE6(メッセージ表示) #$0349
0BF1DALDA #$0040A=#$0040
0BF1DDTSB $354BA or $354B
0BF1E0LDA $35B1A=$35B1
0BF1E3AND #$0008A&=#$0008
0BF1E6BNE #$13if(z==off) goto $0BF21B
0BF1E8JSL $CDACD2SR: $0DACD2キー入力でメッセージウィンドウを閉じる
0BF1ECLDA #$00C4A=#$00C4銀の竪琴のアイテムID
0BF1EFLDX #$0104X=#$0104
0BF1F2JSL $C78238SR: $078238アイテム保持チェック(持っているc=on)
0BF1F6BCC #$0Bif(c==off) goto $0BF223
0BF1F8BRK $100A ($0B100A)goto $00FFE6(メッセージ表示) #$100A
0BF1FBJSL $CDACD2SR: $0DACD2キー入力でメッセージウィンドウを閉じる
0BF1FFJSL $CDADD8SR: $0DADD8カウンタに1000をセット
0BF203RTSreturn
  • SR: $0CF2E1 メルキド襲撃イベントが終わっているか(該当c=on)(新SR)
  • SR: $0CF2EE メルキド襲撃イベントを一度経験している(該当c=on)(新SR)

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

  • SR: $0CE694 メルキド宿屋イベント処理
0CE6B8JSL $CCFC10SR: $0CFC10メルキド宿屋追加イベント処理
  • SR: $CFC10 メルキド宿屋追加イベント処理(新SR)
0CFC10JSL $CCF8DESR: $0CF8DEメルキド襲撃イベント終了後ガライと会話をしたか(該当c=on)
(後ほど別途解説)
0CFC37BRA #$34goto $0CFC6D
0CFC39COPgoto $00FFE4
0CFC3AJSL $CCE1D1SR: $0CE1D1イベント開始待ち?
0CFC3EJSL $CDAEB1SR: $0DAEB1カウンタが1000になるまで待機
0CFC42JSL $C1E32ESR: $01E32E 引数:1#$001ABGM(戦闘中BGM)再生
0CFC48LDA #$001AA=#$001A
0CFC4BJSL $C778C1SR: $0778C1BGM設定
0CFC4FJSL $C1A92ESR: $01A92E 引数:1#$100Fメッセージ表示
0CFC55JSL $CDACD2SR: $0DACD2キー入力でメッセージウィンドウを閉じる
0CFC59JSL $CDADE6SR: $0DADE6カウンタに2000をセット
0CFC5DJSL $CDAEE1SR: $0DAEE1カウンタが3000になるまで待機
0CFC61JSL $CDADF4SR: $0DADF4カウンタに4000をセット
0CFC65JSL $CDAF21SR: $0DAF21カウンタが7000になるまで待機
0CFC69JSL $CADE4FSR: $0ADE4Fルーラ・キメラの翼使用不可(封印)設定
0CFC6DJSL $CCD298SR: $0CD298イベント終了時処理?
0CFC71RTLreturn

  • SR: NPC1_MoveSR_057E (モンスター襲撃を知らせに来る兵士のNPC)
0CFBA0COPgoto $00FFE4
0CFBA1JSL $CDAED1SR: $0DAED1カウンターが2000になるまで待機
0CFBA5JSL $CCD392SR: $0CD392キャラクターイベント中移動フラグON?
0CFBA9JSL $CCD35ESR: $0CD35E移動速度4/3倍速セット?
0CFBADLDA #$0016A=#$0016
0CFBB0LDX #$0027X=#$0027
0CFBB3JSL $C75305SR: $075305キャラクター出現座標を指定
0CFBB7JSL $CCD857SR: $0CD857キャラクターを上に向かせる
0CFBBBLDX #$0016X=#$0016
0CFBBELDA #$001FA=#$001F
0CFBC1JSL $C75474SR: $075474キャラクター移動先座標指定
0CFBC5JSL $CCD59DSR: $0CD59D指定座標にY軸→X軸の順でキャラクター移動
0CFBC9JSL $CDADEDSR: $0DADEDカウンタに3000をセット
0CFBCDJSL $CDAEF1SR: $0DAEF1カウンタが4000になるまで待機
0CFBD1JSL $C1A92ESR: $01A92E 引数:1#$100Bメッセージ表示
0CFBD7JSL $CDADFBSR: $0DADFBカウンタに5000をセット
0CFBDBJSL $CDACD2SR: $0DACD2キー入力でメッセージウィンドウを閉じる
0CFBDFLDX #$0016X=#$0016
0CFBE2LDA #$0027A=#$0027
0CFBE5JSL $C75474SR: $075474キャラクター移動先座標指定
0CFBE9JSL $CCD59DSR: $0CD59D指定座標にY軸→X軸の順でキャラクター移動
0CFBEDJSL $C75930SR: $075930キャラクター消滅
0CFBF1LDA #$0010A=#$0010
0CFBF4TSB $35B1A or $35B1
0CFBF7JSL $CDAE02SR: $0DAE02カウンタに6000をセット
0CFBFBRTLreturn

  • SR: $0CF796 NPC1_MoveSR_01AF(宿屋の主人のNPC)
0CF796COPgoto $00FFE4
0CF797JSR $CDAF01SR: $0DAF01カウンタが5000になるまで待機
0CF79BLDA #$0018A=#$0018
0CF79EJSR $C74B39SR: $074B39処理にインターバルを置く?
0CF7A2JSRL $CC7289SR: $0C7289キャラクターがその場で飛び上がる処理
0CF7A6RTLreturn
  • SR: $0DE518 NPC1_MoveSR_01B0(ガライのNPC)
0DE518JSL $CCDADFSR: $0CDADF
0DE51CCOPgoto $00FFE4
0DE51DJSL $CDAF11SR: $0DAF11カウンタが6000になるまで待機
0DE521JSL $CCF2EESR: $0CF2EEメルキド襲撃イベントを一度経験している(該当c=on)
0DE525BCC #$05if(c==off) goto $0DE52C
0DE527BRK $1022 ($0D1022)goto $00FFE6(メッセージ表示) #$1022
0DE52ABRA #$03goto $0DE52Fキー入力でメッセージウィンドウを閉じる
0DE52CBRK $100C ($0D100C)goto $00FFE6(メッセージ表示) #$100C
0DE52FJSL $CDACD2SR: $0DACD2
0DE533JSL $CCD392SR: $0CD392キャラクターイベント中移動フラグON?
0DE537LDX #$001CX=#$001C
0DE53ALDA #$001FA=#$001F
0DE53DJSL $C75474SR: $075474キャラクター移動先座標指定
0DE541JSL $CCD58CSR: $0CD58C指定座標にX軸→Y軸の順でキャラクター移動
0DE545LDX #$0016X=#$0016
0DE548LDA #$0027A=#$0027
0DE54BJSL $C75474SR: $075474キャラクター移動先座標指定
0DE54FJSL $CCD58CSR: $0CD58C指定座標にX軸→Y軸の順でキャラクター移動
0DE553JSL $C75930SR: $075930キャラクター消滅
0DE557JSL $CDAE09SR: $0DAE09カウンタに7000をセット
0DE55BRTLreturn

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

コメント

タイトルとURLをコピーしました