DQ3 鎧以外にも特殊回避率を設定できるようにする

今回も質問コーナーです。

DQ3で鎧以外の装備品にも特殊回避率を設定したい

です。オリジナルの実装では、特殊回避率を持つ装備品は鎧3種のみなので、回避判定時には攻撃対象の鎧の装備品のチェックしか行っていません。例えばFFのディフェンダーのような武器を設定したい、という場合などはその他の装備品についても同様のチェックを行う必要があります。いろいろやり方はあると思いますが、おもいっきり横着したやり方で実装を行います。今回も戦闘部分の解析エントリ同様、DQ3 Extended 1.44xをベースにしています。

  • SR: $028690 直接攻撃回避判定
0286C3JSR $E000SR: $02E000回避判定(特殊)
  • SR: $02E000 回避判定(特殊)(新SR)
02E000JSR $E01CSR: $02E01C回避判定(武器,特殊)
02E003BCS #$01if(c==on) goto $02E006
02E005RTSreturn
02E006JSR $875FSR: $02875F回避判定(鎧,特殊)
02E009BCS #$01if(c==on) goto $02E00C
02E00BRTSreturn
02E00CJSR $E046SR: $02E046回避判定(盾,特殊)
02E00FBCS #$01if(c==on) goto $02E012
02E011RTSreturn
02E012JSR $E070SR: $02E070回避判定(兜,特殊)
02E015BCS #$01if(c==on) goto $02E018
02E017RTSreturn
02E018JSR $E09ASR: $02E09A回避判定(アクセサリ,特殊)
02E01BRTSreturn

(2011-05-20追記)
回避したか判定する部分が逆になっていました。c=offなら回避成功なので、c=onの時は次のアイテム種別で回避判定を行うように修正しました。

  • SR: $02E01C 回避判定(武器,特殊)(新SR)
02E01CPHXPush X
02E01DLDA #$0000A=#$0000装備品種別に武器をセット
02E020JSL $C2B8AASR: $02B8AA装備品アイテムID取得
02E024LDA $242CA=$242C
02E027LDX #$003CX=#$003C最終レコード開始オフセット
02E02ACMP $C2D220,XA==$02D220+X?
02E02EBEQ #$08if(z==on) goto $02E038
02E030DEXX–
02E031DEXX–
02E032DEXX–
02E033DEXX–
02E034BPL #$F4if(n==off) goto $02E02A
02E036BRA #$0Bgoto $02E043
02E038LDA $C2D222,XA=$02D222+X
02E03CJSL $C0133ESR: $00133E
02E040CLCc=off
02E041BEQ #$01if(z==on) goto $02E044
02E043SECc=on
02E044PLXPull X
02E045RTSreturn

(2011-05-19追記)
「02E027 LDX #$003C」が「02E027 LDX #$0008」だったので修正

  • SR: $02E046 回避判定(盾,特殊)(新SR)
  • SR: $02E070 回避判定(兜,特殊)(新SR)
  • SR: $02E09A 回避判定(アクセサリ,特殊)(新SR)

ほとんど同じなので省略

動作確認をしていませんが、これで動くようになるはず。この実装では、特殊回避率を持つ異なる装備品を装備している場合に、それら全てに対して回避判定が行われます。従って、回避率の設定次第では回避率が100%になり、敵の攻撃が一切当たらなくなる可能性があります。

コメント

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