いちおう一通りストーリー変更は(ゾーマの城のマップ追加を除いて)終わったので、残りはバランス調整、バグ修正なのですが、ちょっとプレイしただけでバグがぽろぽろと見つかりますorz。以前スレでも指摘された「DQ6からの呪文効果エフェクトの移植」の必要性を遊び人のまねまねがらみで感じて調べているのですが、とんとわかりません(例によってDQ6とDQ3は互換性があるという前提のもとDQ3側しか調べていませんが。情報求ム)。というわけで若干モチベーションが下がり気味です。
はるか昔のエントリで実装した「専門職以外の攻撃呪文の効果を3/4にする」ですが、またしてもバグが見つかったので修正します。問題は「アイテムで攻撃呪文の効果を持つもの」が全て設定値の3/4になる、というものです。まあもともと強すぎたんだからいいじゃん、とは思わないでもないのですが、弱体化するんだったら数値設定の方を変えればいいわけで、意図しない動作という点ではバグなので修正します。従来の実装では3/4にするべきかの判断部分と3/4化する部分を一体にしていましたが、判断部分を別SRに切り出すことにします。
- SR: $02D260 職業別攻撃呪文ダメージ調整
略 | |||
---|---|---|---|
02D263 | JSR $E362 | SR: $02E362 | 3/4の調整対象か |
02D266 | BCC #$08 | if(c==off) goto $02D270 | |
02D268 | LDA $00 | A=DP($00) | |
02D26A | LSR | A>>1 | |
02D26B | ADC $00 | A+=(DP($00)+c) | |
02D26D | LSR | A>>1 | |
02D26E | STA $00 | DP($00)=A | 3/4化処理 |
02D270 | PLP | Pull P Flag | |
02D271 | PLX | Pull X | |
02D272 | PLA | Pull A | |
02D273 | JSR $8E70 | SR: $028E70 | ダメージ確定メイン |
02D276 | RTS | return |
- SR: $02E362 戦闘行動が呪文ダメージ調整対象か(該当c=on)(新SR)
02E362 | LDX $23EE | X=$23EE | |
---|---|---|---|
02E365 | CPX #$012C | X==#$012C? | |
02E368 | BEQ #$57 | if(z==on) goto $02E3C1 | |
02E36A | CPX #$012D | X==#$012D? | |
02E36D | BEQ #$52 | if(z==on) goto $02E3C1 | |
02E36F | JSL $C2CC47 | SR: $02CC47 引数:1#$0078 引数:2#$0040 | 戦闘行動がマホトーンに依存されるか |
02E377 | BEQ #$48 | if(z==on) goto $02E3C1 | |
02E379 | LDX $23E4 | X=$23E4 | |
02E37C | STX $2428 | $2428=X | |
02E37F | JSL $C2CAD9 | SR: $02CAD9 引数:1#$203C 引数:2#$00FF | |
02E387 | CMP #$0005 | A>=#$0005? | 行動主体がPCか |
02E38A | BCC #$35 | if(c==off) goto $02E3C1 | |
02E38C | JSL $C2BE8A | SR: $02BE8A 引数:1#$24 | |
02E391 | CMP #$0008 | A==#$0008? | 行動主体の職業が勇者か |
02E394 | BEQ #$2B | if(z==on) goto $02E3C1 | |
02E396 | CMP #$0007 | A==#$0007? | 行動主体の職業が賢者か |
02E399 | BEQ #$26 | if(z==on) goto $02E3C1 | |
02E39B | CMP #$0002 | A==#$0002? | 行動主体の職業が魔法使いか |
02E39E | BNE #$0F | if(z==off) goto $02E3AF | |
02E3A0 | LDA $23EE | A=$23EE | |
02E3A3 | CMP #$0013 | A>=#$0013? | 戦闘行動がバギ(#$13)未満 |
02E3A6 | BCC #$19 | if(c==off) goto $02E3C1 | |
02E3A8 | CMP #$0015 | A>=#$0015? | 戦闘行動がバギクロス(#$15)より上 |
02E3AB | BCS #$14 | if(c==on) goto $02E3C1 | |
02E3AD | BRA #$14 | goto $02E3C3 | |
02E3AF | CMP #$0003 | A==#$0003? | 行動主体の職業が僧侶か |
02E3B2 | BNE #$0F | if(z==off) goto $02E3C3 | |
02E3B4 | LDA $23EE | A=$23EE | |
02E3B7 | CMP #$0013 | A>=#$0013? | 戦闘行動がバギ(#$13)以上 |
02E3BA | BCC #$07 | if(c==off) goto $02E3C3 | |
02E3BC | CMP #$0016 | A>=#$0016? | 戦闘行動がライデイン(#$16)未満 |
02E3BF | BCS #$02 | if(c==on) goto $02E3C3 | |
02E3C1 | CLC | c=off | |
02E3C2 | RTS | return | |
02E3C3 | SEC | c=on | |
02E3C4 | RTS | return |
新たにやっていること自体は「戦闘行動がマホトーンに依存しない場合は調整対象にしない」だけです。判断部分を別SRに切り出したので今後変更の必要がある場合は判断部分を変えればいい、ということになるので、構成がすっきりしました。また、回復呪文に関しては、戦闘行動IDをピンポイントで見ているので特に判断部分を別SRにする必要はないだろうということで変更していません。
コメント