DQ3 Lv40以上の賢者の消費MPを3/4にする

※リクエストがあったので掲載順を前倒しにします。

DQ6でも賢者は同じような特性をもっていましたが、Lv40をマスターレベルとしてLv40以上になると賢者の消費MPが3/4になるようにします。消費MPの計算は移動中/戦闘中共通なので1箇所だけ変えればOKになります。消費MPを3/4にする処理自体は「不思議なぼうし装備時の消費MP計算」の中で行われているのでそれをコピれば簡単です。

  • SR: $02B44A 消費MP計算
02B4A4 JSR $D347 SR: $02D347 条件によるMP調整
02B4A7 NOP
02B4A8 NOP
02B4A9 NOP

消費MPを決定するSRの中をまず書き換えます。$2B4A4から6バイトを上記のように書き換え、条件によって消費MPが変わる処理をまとめて別SRで行うことにします。

  • SR: $02D347 条件によるMP調整(新SR)
02D347 JSR $D351 SR: $02D351 賢者がLv40以上の消費MP計算
02D34A JSR $B4C1 SR: $02B4C1
02D34D JSR $B4DD SR: $02B4DD
02D350 RTS return

MPの調整自体は不思議なぼうし装備時の消費MP計算 SR:$02B4C1や不思議なボレロ装備時の消費MP計算 SR:$02B4DDで行われているので、賢者の消費MP調整をその前で行うことにします。

  • SR: $02D351 賢者がLv40以上の消費MP計算(新SR)
02D351 JSL $C46951 SR: $046951 引数:1#$06 引数:2#$FE 引数:3#$FF 職業ID取得
02D358 CMP #$0007 A==#$0007?
02D35B BNE #$1A if(z==off) goto $02D377
02D35D JSL $C42FEB SR: $042FEB 引数:1#$06 引数:2#$FE 引数:3#$FF レベル取得
02D364 CMP #$0028 A>=#$0028? レベル40以上
02D367 BCC #$0E if(c==off) goto $02D377
02D369 LDA $2480 A=$2480
02D36C ASL A<<1
02D36D CLC c=off
02D36E ADC $2480 A+=($2480+c)
02D371 LSR A>>1
02D372 LSR A>>1
02D373 INC A++
02D374 STA $2480 $2480=A
02D377 RTS return

職業IDを取得する SR:$046951で職業IDをAレジスタに取得し、賢者(#$0007)と同じか比較します。賢者の場合は今度はレベルを取得するSR:$042FEBでレベルをAレジスタに取得し、レベル40(#$0028)以上の場合は消費MP($7E2480)を3/4(+1)にしてセットしなおして終わりです。それ以外の場合は何もしないでSRの最後に処理を飛ばします。スタックも使わないので簡単ですね。