DQ3 ストーリー変更(幽霊船2)

今回から実装を開始することにします。

まず、幽霊船の中でのルーラの使用を禁止します。

  • SR: $0A79DC 幽霊船1F進入時初期化処理
0A79EFJSL $CCF68CSR: $0CF68C
0A79F3-5NOP
  • SR: $0CF68C 幽霊船1F移動・宝箱・ドア・NPC、ルーラ設定(新SR)
0CF68CJSL $C77843SR: $077843 引数:1#$CAC5A0移動・宝箱・ドア・NPC配置
0CF693JSL $CADE4FSR: $0ADE4Fルーラ使用禁止
0CF697RTLreturn

  • SR: $0A7A0F 幽霊船B1F進入時初期化処理
0A7A28JSL $CCF680SR: $0CF680
0A7A2C-ENOP
  • SR: $0CF680 幽霊船B1F移動・宝箱・ドア・NPC、ルーラ設定(新SR)
0CF680JSL $C77843SR: $077843 引数:1#$CAC5D6移動・宝箱・ドア・NPC配置
0CF687JSL $CADE4FSR: $0ADE4Fルーラ使用禁止
0CF68BRTLreturn

次に、イベント発生時の甲板でのエンカウントを多少変えます(後から考えるといらなかったかも)。エンカウント率が高くなって移動をうざくするのが主目的ですww。エンカウントのデータが追加できなかったので場所を移動します。

  • エンカウント:データ移動($08ADD1→$08AC7D)+レコード数変更(105→120)
  • SR中で参照しているアドレスの変更
  • SR: $0A79DC 幽霊船1F進入時初期化処理
0A79F6JSL $CAF750SR: $0AF750
  • SR: $0AF750 幽霊船1Fエンカウント・戦闘背景・イベント設定(新SR)
0AF750LDA #$0051A=#$0051エンカウントID(通常)
0AF753JSL $CCF15ASR: $0CF15A追加イベント中か?
0AF757BCC #$03if(c==off) goto $0AF75C
0AF759LDA #$0069A=#$0069エンカウントID(イベント中)
0AF75CLDX #$0026X=#$0026
0AF75FJSL $C777F9SR: $0777F9エンカウント、戦闘背景設定
0AF763JSL $CCF15ASR: $0CF15A追加イベント中か?
0AF767BCC #$07if(c==off) goto $0AF770
0AF769JSL $C7785FSR: $07785F 引数:1#$CCF997イベント設定
0AF770RTLreturn

  • SR: $0CF15A 幽霊船追加イベント発生条件かしらべる(該当c=on)(新SR)
0CF15ALDA $35B1A=$35B1
0CF15DAND #$0002A&=#$0002幽霊船追加ボスを倒している
0CF160BNE #$0Aif(z==off) goto $0CF16C
0CF162LDA $3542A=$3542
0CF165AND #$0080A&=#$0080愛の思い出を入手している
0CF168BEQ #$02if(z==on) goto $0CF16C
0CF16ASECc=on
0CF16BRTLreturn
0CF16CCLCc=off
0CF16DRTLreturn

最後に、イベント中に全滅した時に愛の思い出を剥奪するようにします。ついでに、アリアハンの追加イベントで入手した「ゆうきのあかし」も全滅したら剥奪するようにしてデスルーラでショートカットできるのを防ぎます。

  • SR: $067A85 全滅時復活処理
067AF8JSR $F421SR: $06F421
  • SR: $06F421 全滅時アイテム剥奪処理(新SR)
06F421JSR $7B0ESR: $067B0E全滅時黄金の爪剥奪処理
06F424JSR $F4EDSR: $06F4ED全滅時ゆうきのあかし剥奪処理
06F427JSR $F43ASR: $06F43A全滅時愛の思い出剥奪処理
06F42ARTSreturn

  • SR: $06F4ED 全滅時ゆうきのあかし剥奪処理(新SR)
06F4EDLDA $354EA=$354E
06F4F0AND #$0001A&=#$0001勇者に転身済みなら剥奪処理をしない
06F4F3BNE #$03if(z==off) goto $06F4F8
06F4F5JSR $F42BSR: $06F42B
06F4F8RTSreturn
  • SR: $06F42B 全滅時ゆうきのあかし剥奪処理(新SR)
06F42BJSL $CCF119SR: $0CF119ゆうきのあかし削除
06F42FJSL $C907CCSR: $0907CC 引数:1#$35B0 引数:2#$7E 引数:3#$01 引数:4#$00 引数:5#$00ゆうきのあかし入手フラグOFF
06F439RTSreturn

  • SR: $06F43A 全滅時愛の思い出剥奪処理(新SR)
06F43ALDA $35B1A=$35B1
06F43DAND #$0002A&=#$0002幽霊船追加ボスを倒している
06F440BNE #$20if(z==off) goto $06F462
06F442LDA $3542A=$3542
06F445AND #$0080A&=#$0080愛の思い出を入手している
06F448BEQ #$18if(z==on) goto $06F462
06F44AJSL $CC9E86SR: $0C9E86愛の思い出削除
06F44EJSL $C907CCSR: $0907CC 引数:1#$3542 引数:2#$7E 引数:3#$80 引数:4#$00 引数:5#$00愛の思い出入手フラグOFF
06F458JSL $C907CCSR: $0907CC 引数:1#$353E 引数:2#$7E 引数:3#$40 引数:4#$00 引数:5#$00愛の思い出宝箱空けたフラグOFF
06F462RTSreturn

DQはFFと違って全滅したら前回のセーブポイントから再開ではないのでデスルーラ対策を特別処理として実装しないといけないのが面倒です。とりえあず準備が終わったので次回からはNPC配置、イベントの実装を行います。

あと、蛇足ですが、DQ3SFCEditorのデータ(SR)移動と要素数の変更のあたりがバグっているようで、潰しちゃいけない領域を0で潰すケースがあるようです。再現パターンが確定できていないのでまだデバッグできてません。念のため注意喚起しておきます。

コメント

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