※リクエストがあったので掲載順を前倒しにします。
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の最後に処理を飛ばします。スタックも使わないので簡単ですね。
コメント