正直言ってかなり追加するべきかどうか迷ったギミックです。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撃目をバイキルト対象外にした時
コメント
いつもお世話になっております。
こちらのページのSRをそのまま参考にさせてもらったのですが、2撃目の攻撃エフェクトと実際にダメージを与えるターゲットがずれてしまいます(例:エフェクトではおおからすAを攻撃しているように見えるのにダメージを入るのはおおからすB)
K.mixを解析して自分で対処しようとしたのですが、オリジナルと大分変更がなされているので結局自分の理解力では原因が分かりませんでした。そこで、はやぶさのけん+を実装する際に他にプログラムを変更した箇所がありましたら是非教えて欲しいです。
このエントリを書いてから何回かここ絡みで細かい修正をしていますが、基本的にはここで書いたことしかやってないはずです(だいぶ前過ぎてあまり覚えてないというのが正直なところ)。最終的にはデバッガで動きを追うのが一番いいです。