耐性変更DQ3のアイテムに付与できる耐性は「ダメージ呪文+ブレス系」と「ザキ・メガンテの確率系」のどちらか一方しか設定できません。以前バイナリ神スレで「1つのアイテムに両方の耐性を持たせられないか」という話題が上がったことがあったのですが、あまり興味の無かった自分は完全スルーしていました。最近耐性計算の仕組みがいろいろとわかってきて、実はそれほど大変ではないということがわかったので説明します。アイテムに付与されている耐性がダメージ系か確率系かは耐性アイテム($02D160-)*1の2バイト目5ビット目の1ビットで切り替えています。このビットがOFFの場合はダメージ系の耐性が有効になり、ONの場合は確率系の耐性が有効になる、というのがオリジナルの仕様です。このビットがチェックされるのは以下の部分です。$02BC77略Aレジスタの値が$7E2476と同じ場合は、この後いろいろありますが耐性値に基づくダメージ減算処理が行われます。次に、$7E2476とは何かを見てみます。PC側耐性計算メイン略というわけで、ダメージ系、確率系の耐性計算をする直前で耐性種類の値が$7E2476にセットされているために、対応したアイテムの耐性しか有効にならない、ということになります。これを変えるにはどうしたらいいか、というと非常に簡単で、$02BBC5を#$0000に変える全ての耐性アイテムの耐性種類フラグをOFFにするこの2点を行えばいいことになる、と思っていたのですが、さらに追加で考慮すべきことがありました。次にダメージ計算を行っているSRの内部を見てみます。略ダメージ系の戦闘行動は直接攻撃であろうが呪文攻撃であろうが全てこのSRが実行されます。DQ3ではオリジナルはPC側は耐性によってダメージが減少する一方、モンスター側はダメージが0になるか否かを確率によって判定する、という仕様になっているため、2種類の耐性計算を行っているのです。SR:$02913Eでは先頭で敵味方判定を行い、モンスターなら処理をスキップするようになっています。SR:$0291A8では耐性を加味した確率による命中判定を行い、ダメージ0化処理も行いますが、PC側はダメージ系の戦闘行動時には上記SR:$02BBB6中の$7E2476と耐性アイテムの2バイト目5ビット目が一致しないため、必中扱いになります。「$02BBC5を#$0000に変える」だけをすると、PC側に対して、「ダメージ減処理」+「確率による命中判定」の両方が動いてしまうため、よろしくありません。すればいいかと言うと、$291A8のところで、敵味方判定を行い、PC側なら処理をスキップするようにすればいいわけです。returnちゃんとテストしていませんが、この変更作業をすれば、当初の目的であった「1アイテムにダメージ系+確率系の耐性をもたせる」ことができるようになるはずです(間違ってたら指摘よろしく)。K.Mixには今のところ入れる予定はありません。コメントをキャンセルメールアドレスが公開されることはありません。コメントは管理者の承認後表示されます。