DQ3 はやぶさのけん+追加

正直言ってかなり追加するべきかどうか迷ったギミックです。DQ3仕様のはやぶさのけんは1撃目でターゲットを倒してしまうと2撃目が発生しません。例えばDQ2では1撃目で倒しても敵が全滅していなければ2撃目が発生します。これを実装してみよう、というのが今回の目的です。実装自体はえらく簡単なのですが、それによって付随的に発生する結果を受け入れるかどうか、によります。「はやぶさのけん改」というネーミングも考えましたが、「改」という漢字小フォントを追加するのが面倒(「攻」を変えたらできそうですが)なのと、オリジナルはどういう仕様になっているのか不明(当方DQ8以降未プレイ)なのもあって、「はやぶさのけん+」(アイテムID:#$F0)という名前にしました。アイテムもなんだかんだと追加してだいぶ残り少なくなってきました。いざとなれば性格変更アイテム(装備品)を潰すつもり。

  • SR: $027275 1ターン分の実行処理
02729B JSR $E430 SR: $02E430 戦闘行動インデックス初期化+はやぶさのけん+装備時の2番目の戦闘行動セット
  • SR: $02E430 戦闘行動インデックス初期化+はやぶさのけん+装備時の2番目の戦闘行動セット(新SR)
02E430 STZ $23D4 $7E23D4=#$00 戦闘行動インデックス初期化
02E433 LDA #$0000 A=#$0000
02E436 LDX $23E4 X=$7E23E4
02E439 STX $2428 $7E2428=X
02E43C JSL $02B8AA SR: $02B8AA 装備武器アイテムID取得
02E440 LDA $242C A=$7E242C
02E443 CMP #$00F0 A==#$00F0? はやぶさのけん+のアイテムID
02E446 BNE #$2B if(z==off) goto $02E473
02E448 LDX $23E4 X=$7E23E4 行動主体セット
02E44B JSL $02CAD9 SR: $02CAD9 引数:1#$2034 引数:2#$01FF
02E453 CMP #$0001 A==#$0001? 戦闘行動が直接攻撃か
02E456 BNE #$1B if(z==off) goto $02E473
02E458 LDA #$0139 A=#$0139 2回目は専用の戦闘行動「はやぶさのけん+の2回目」にする
02E45B JSL $02CB70 SR: $02CB70 引数:1#$2036 引数:2#$01FF 戦闘行動を2回目にセット
02E463 JSL $02CAD9 SR: $02CAD9 引数:1#$2035 引数:2#$00FE 1回目のターゲット情報を取得
02E46B JSL $02CB70 SR: $02CB70 引数:1#$2037 引数:2#$00FE ターゲット情報を2回目にセット
02E473 RTS return

たったこれだけで終わりです。1撃目でターゲットを倒してしまっても2撃目の実行直前に自動的にターゲットをセットしなおすSRが動作するので特に何もする必要はありません。また、これに付随して、2撃目もバイキルトがかかった状態になるという副作用も発生します。要は強力すぎてしまうわけです。オリジナルのはやぶさのけん同様2撃目をバイキルト対象にするかは、バランスにもよるので、各自の判断に委ねられるわけですが、どちらでも簡単に対応できるように、2回目の攻撃は通常の直接攻撃の戦闘行動ではなく、「はやぶさのけん+の2回目専用の直接攻撃」の戦闘行動(ID:#$0139)を用意することにします。とりあえず通常の直接攻撃(ID:#$01)のレコードをまるごとコピーし、はやぶさのけん+による2回目の戦闘行動はこちらを使用するようにします。セットされている値自体は通常の直接攻撃と同じなので動作自体は変わりありません。その上で、2撃目をバイキルトの対象にしたい場合はそのまま、2撃目をバイキルトの対象にしたくない場合は、バイキルトに影響されるフラグ(25バイト目の5ビット目)を外す、ということになります。バイキルトのダメージ倍化計算部分で行動主体の装備や何回目の攻撃をしているか調べる、という方法よりもスマートに対応できます。以前追加したガイアの剣のギミックもそうですが、「ともすればしんどいだけの隠しダンジョンを逃げの一手以外で打開する手段を提供する」ことが実はメインの目的だったりするので、道中はバイキルト+ルカニで無双状態を楽しんでもらえるといいかな、と思います。入手場所は○○○○で○○○○を倒したときのボーナスとして用意するつもりです。

通常攻撃時

バイキルト時

2撃目をバイキルト対象外にした時

コメント

  1. ks より:

    いつもお世話になっております。

    こちらのページのSRをそのまま参考にさせてもらったのですが、2撃目の攻撃エフェクトと実際にダメージを与えるターゲットがずれてしまいます(例:エフェクトではおおからすAを攻撃しているように見えるのにダメージを入るのはおおからすB)
    K.mixを解析して自分で対処しようとしたのですが、オリジナルと大分変更がなされているので結局自分の理解力では原因が分かりませんでした。そこで、はやぶさのけん+を実装する際に他にプログラムを変更した箇所がありましたら是非教えて欲しいです。

    管理者より返信:

    このエントリを書いてから何回かここ絡みで細かい修正をしていますが、基本的にはここで書いたことしかやってないはずです(だいぶ前過ぎてあまり覚えてないというのが正直なところ)。最終的にはデバッガで動きを追うのが一番いいです。