順番が変ですがまあ気にしない。
改造人間氏のSFCドラクエ3改造版パッチでも転職による習得呪文の使用不可は実現されていましたが、転職すると覚えた呪文が一部使えなくなるようにします。呪文の習得状態は$7E3949~52*1の10バイトにそれぞれ1ビットずつ覚えている(on)/覚えていない(off)の状態が保存されています。順番は$121D00-*2の呪文基本情報の並び順と同じです。というわけで転職時にこれらのビットの一部をoffにしてやれば「特定の職業専用呪文」が実現できます。これも比較的簡単ですね。ただ、スロットがあまり空いてないのでいくらでも追加できるというわけではありません。また、やろうと思えば、DQM*3のように「覚えられる呪文の数を??個に制限」とかもできると思いますが、忘れる呪文の選択インターフェースを用意しないといけないのでいまのところ実装予定はありません。さて、転職時のステータス変更はSR: $0469C9で行っています。「各ステータスを取得してASLで1/2にしてセット」の処理が続きますが、最後に$046A25で習得可能呪文のチェック?を行っているところがあるので、この部分を別SRに置き換えて対応することにします。
- SR: $0469C9 転職時ステータス変更
略 | |||
---|---|---|---|
046A25 | JSL $C4FE40 | SR: $04FE40 | |
略 |
- SR: $04FE40 転職時呪文関連処理(新SR)
04FE40 | JSL $C4FCCD | SR: $04FCCD | |
---|---|---|---|
04FE44 | JSL $C45827 | SR: $045827 | |
04FE48 | RTL | return |
SR: $045827はおそらく転職したときにLv1で習得できる呪文(メラ・ホイミ)の習得処理を行っていると思われます。その直前で職業専用呪文を使用できなくします。
(2011-02-20修正)
- SR: $04FCCD 転職時に職業専用呪文を使用不能にする(新SR)
04FCCD | SEP #$20 | m=on(A/M:8b) | |
---|---|---|---|
04FCCF | LDA $002D,X | A=$002D+X | |
04FCD2 | AND #$01 | A&=#$01 | 1ビット目はおおごえなので残す |
04FCD4 | STA $002D,X | $002D+X=A | |
04FCD7 | LDA $0024,X | A=$0024+X | |
04FCDA | AND #$D7 | A&=#$D7 | |
04FCDC | STA $0024,X | $0024+X=A | |
04FCDF | LDA $0029,X | A=$0029+X | |
04FCE2 | AND #$BF | A&=#$BF | |
04FCE4 | STA $0029,X | $0029+X=A | |
04FCE7 | LDA $002A,X | A=$002A+X | |
04FCEA | AND #$FD | A&=#$FD | |
04FCEC | STA $002A,X | $002A+X=A | |
04FCEF | REP #$20 | m=off(A/M:16b) | |
04FCF1 | RTL | return |
プログラム自体は別にどうってことないんですが、意味的には結構重要です。まず、$04FCCF-D2で、10バイト目の74個目~80個目の呪文の呪文(メガザル、ぐんたいよび、ザラキーマ、まねまね)を全て使用不能にしています。次に$04FE50-57で、1バイト目の呪文のうち、ザオラル(4ビット目)、ザオリク(6ビット目)をOFFにして使用不能にします。同様に$04FE58-5Fで6バイト目の呪文のうちドラゴラム(6ビット目)、$04FE60-67で7バイト目の呪文のうちパルプンテ(2ビット目)をOFFにして使用不能にしています。どの呪文をその職業専用にするかというのはバランスと好みの問題だと思うので変えたい人は参考にしてください。魔法使いの専用呪文については変える可能性ありです。今更ながら思うんですが、パルプンテって遊び人向きの呪文ですよね…。調べてみたらDQ6でもパルプンテは遊び人で習得となってますね。となるとパルプンテを遊び人に移動して、魔法使いの最後の呪文はやっぱり…マダンテ?とはいえ、DQ3にダメージインフレを起こしたくないのでマダンテはあんまり導入したくありません。要検討です。
コメント