DQ3 きせきのつるぎ実装一部修正+回復量ランダム化

DQ6のDSリメイクがとんでもないことになっているようですね。流石に今回の変更は明らかな改悪としか言いようがないだろ、常識的に考えて…。とかいって自分もスライムナイトとキラーマシン2くらいしか使ってなかったわけですが(腐った死体最強伝説を知ったのはつい最近)。初の移植なわけだから特技と呪文のバランスを直してベタ移植すれば合格点だと思うんですけどね。あとはムドー戦後に急に存在感がなくなる仲間との絡みとか。固定キャラと仲間モンスターとのうまい融合がDQ6の醍醐味だと思うんですがね。まあいいやどうせ買わないしやらないし。

さて、先日コメ欄で指摘のあった奇跡の剣がらみの修正と、回復量を1/4の確率で1/2にする変更を行います。手元で確認したんですが、指摘の現象(攻撃による回復時に攻撃対象が回復したようなメッセージが表示される)は再現しませんでした。テストをしたはずなのに…とちょっと落ち込んで恥ずかしくなったのはここだけの秘密です。とはいえ、行動主体と行動対象を入れ替えたり元に戻したりと余計なバグの入る余地がある実装だったので新たに戦闘メッセージを追加して代わりに「〇〇(行動主体)の キズが 回復した」を表示するようにします。

  • SR: $02D385 奇跡の剣装備時の回復処理
02D385 LDA $23F2 A=$23F2
02D388 BNE #$4B if(z==off) goto $02D3D5
02D38A LDX $23EE X=$23EE
02D38D JSL $C2CC25 SR: $02CC25 引数:1#$0079 引数:2#$0008
02D395 BEQ #$3E if(z==on) goto $02D3D5
02D397 LDX $23E4 X=$23E4
02D39A STX $2428 $2428=X
02D39D JSL $C2CB2B SR: $02CB2B 引数:1#$2050 引数:2#$0002
02D3A5 BEQ #$2E if(z==on) goto $02D3D5
02D3A7 LDA #$00E5 A=#$00E5
02D3AA STA $242C $242C=A
02D3AD JSL $C2B87A SR: $02B87A アイテム装備チェック
02D3B1 BVC #$22 if(v==off) goto $02D3D5
02D3B3 LDA $23FA A=$23FA
02D3B6 BEQ #$1D if(z==on) goto $02D3D5
02D3B8 JSR $DF92 SR: $02DF92 奇跡の剣回復量決定
02D3BB JSL $C2BE8A SR: $02BE8A 引数:1#$04
02D3C0 JSL $C2BE8A SR: $02BE8A 引数:1#$00
02D3C5 JSL $C1E32E SR: $01E32E 引数:1#$00C4
02D3CB JSL $C2B977 SR: $02B977
02D3CF JSL $C1A867 SR: $01A867 引数:1#$01AA 戦闘メッセージを表示
02D3D5 RTS return
  • SR: $02DF92 奇跡の剣回復量決定(新SR)
02DF92 PHA Push A
02DF93 JSL $C012D1 SR: $0012D1 乱数発生 $00-FF
02DF97 AND #$0003 A&=#$0003
02DF9A BEQ #$07 if(z==on) goto $02DFA3
02DF9C PLA Pull A
02DF9D LSR A>>1
02DF9E LSR A>>1
02DF9F INC A++
02DFA0 STA $00 DP($00)=A
02DFA2 RTS return
02DFA3 PLA Pull A
02DFA4 BRA #$F8 goto $02DF9E

以前存在した「行動主体を行動対象にセットしてメッセージ表示し、その後行動対象に元の値をセットする」というコードが無くなっている分処理がすっきりしました。この代償として新規に追加したメッセージ分だけ使用バイト数が増えるわけですが、実装のシンプルさを考えるとこっちのほうがいいですね。回復量決定については特に難しいことはありません。