DQ5(SFC版)戦闘中の素早さ補正、および行動順関連のバグについて

最終更新:2011/06/28

目次

  1. ターン毎の素早さ補正率
  2. 行動順の決定方法
  3. 行動順の決定におけるバグ
    1. 具体例
  4. 死亡キャラの扱いと、魔神の鎧
    1. 死亡キャラ
    2. 死者は先制率を変える
    3. 魔神の鎧で先制攻撃

1.ターン毎の素早さ補正率

敵味方共に、spd × (75+[0〜25]) /100 (*1
つまり、75〜100% (整数未満切り捨て)
基本的には、 高spd×75% > 低spd×100% の時に確定先制/後攻

補正後の素早さが同値の場合は、「味方優先」となる。
(味方:先頭から⇒敵:先頭から)
・・・のだが、バグによって特殊な動作をする。(後述

*1:[0〜25] = 乱数 [0〜255(0xFF)] × 26 / 256

2.行動順の決定方法

  1. 味方の先頭キャラから順に、(補正後の)素早さを取得する
  2. 次の個体の素早さを取得して比較を行い、高い者を“暫定トップ”とする
  3. “暫定トップ”と次の個体を比較し、以下同様に処理を行う
  4. 最後の個体まで比較が終わったら、現“暫定トップ”を「行動順リスト」に加える
  5. 1.に戻り、リストアップされてない者のみで再度比較を行う
    敵味方全員がリストアップされるまでこれを繰り返す

3.行動順の決定におけるバグ

10288A LDX #$00
10288C STZ $71;$71=0にする(“暫定トップ”の素早さの値)
10288E STZ $72;$72=0にする(“暫定トップ”の先頭キャラからの位置)
102890 LDA $10D8 "X";Aに$(10D8+"X")をロード(素早さの値)
102893 BEQ #$0A ? -> $10289F
102895 CMP $71;取り出した素早さ(A)と“暫定トップ”の素早さ($71)の比較
102897 BEQ #$0C ? -> $1028A5A=$71の時1028A5に飛ぶ
102899 BCC #$04 ? -> $10289F
10289B STA $71
10289D STX $72
10289F INX
1028A0 CPX $1011
1028A3 BCC #$EB ? -> $102890
1028A5 RTS;このサブルーチンを終了する
⇒現“暫定トップ”者を「行動順リスト」に追加しに行く

上記が2.で述べた処理の実際だが、
“暫定トップ”と比較対象の素早さが等しかった場合、このサブルーチンを終了してしまう、
つまり、等しいspd値が存在する際に、最高spdを誤認識してしまうバグが存在している。

3番目にいる『星降る腕輪』装備キャラが先制しないことがあるのも、これが原因とみられる。

具体例

(味方)A:10 B:10 C:60 (敵)D:5 E:50 F:10 G:30

補正後の素早さ(75〜100%を反映した素早さ)を以上のものとして話を進める。

(味方)A:10 B:10 C:60 (敵)D:5 E:50 F:10 G:30

暫定トップ:A(10) vs 比較対象:B(10) ⇒値が等しいため、バグが発生

比較終了
[ 行動順⇒1位:A ]
(味方)B:10 C:60 (敵)D:5 E:50 F:10 G:30

暫定トップ:B(10) vs 比較対象:C(60) ⇒勝:C(60)
暫定トップ:C(60) vs 比較対象:D( 5) ⇒勝:C(60)
暫定トップ:C(60) vs 比較対象:E(50) ⇒勝:C(60)
暫定トップ:C(60) vs 比較対象:F(10) ⇒勝:C(60)
暫定トップ:C(60) vs 比較対象:G(30) ⇒勝:C(60)

最終個体に到達のため、比較を終了
[ 行動順⇒1位:A、2位:C ]
(味方)B:10 (敵)D:5 E:50 F:10 G:30

暫定トップ:B(10) vs 比較対象:D(5) ⇒勝:B(10)
暫定トップ:B(10) vs 比較対象:E(50) ⇒勝:E(50)
暫定トップ:E(50) vs 比較対象:F(10) ⇒勝:E(50)
暫定トップ:E(50) vs 比較対象:G(30) ⇒勝:E(50)

最終個体に到達のため、比較を終了
[ 行動順⇒1位:A、2位:C、3位:E ]
(味方)B:10 (敵)D:5 F:10 G:30

暫定トップ:B(10) vs 比較対象:D(5) ⇒勝:B(10)
暫定トップ:B(10) vs 比較対象:F(10) ⇒値が等しいため、バグが発生

比較終了
[ 行動順⇒1位:A、2位:C、3位:E、4位:B ]
(味方)-- (敵)D:5 F:10 G:30

残りは、順当に比較が進む
[ 行動順⇒1位:A、2位:C、3位:E、4位:B、5位:G、6位:F、7位:D ]

本来なら、

1位:C(60)、2位:E(50)、3位:G(30)、4位:A(10)、5位:B(10)、6位:F(10)、7位:D(5)

としたいところが、

1位:A(10)、2位:C(60)、3位:E(50)、4位:B(10)、5位:G(30)、6位:F(10)、7位:D(5)

となってしまっているのである。

4.死亡キャラの扱いと、魔神の鎧(棺桶バグと魔神バグ)

死亡キャラ

死亡キャラクターが存在した場合、敵味方問わず
(補正前の)元々の素早さを該当キャラの物ではなく、味方先頭キャラの素早さを取得している
仮に、

(味方)A:10 B:死亡 C:50 (敵)D:20 E:死亡 F:10 G:30 (補正前)

となっていた場合は、

(味方)A:10 B:10 C:50 (敵)D:20 E:10 F:10 G:30 (補正前)

となる。
実際はこの後に75〜100%の補正がかかるため、例えば、

(味方)A:8 B:7(死亡) C:41 (敵)D:18 E:10(死亡) F:9 G:29 (補正あり)

という風になったりしている。

死者は先制率を変える

PTを【生者、死者(、死者or生者)】にすると先制率に影響を与える、という技が存在する。
(参考:3.5 技 - 死者関連技 / ドラゴンクエスト5 極限低レベル攻略ガイド - 極限攻略研究会)

これは死亡キャラの扱い行動順の決定におけるバグが合わさった結果、起こりうる現象である。
つまり、死亡=先頭キャラと同じ素早さ(補正前)になってかつ補正後も偶然同じ素早さになった場合
バグが発生し、先制判定が誤認識するのである。

更に言えば、上記サイトは低レベル攻略における戦術を載せており、
キャラのレベルは当然低い=素早さも低いので、
75〜100%補正時のブレ幅が通常攻略に比べ少なくなり、同じ値になりやすい

それゆえ、なおさら先制率に影響を与え易くなっていると考えられる。

上記サイトで挙げられている素早さ20を例にとると、

75〜79%:15 80〜84%:16 85〜89%:17 90〜94%:18 95〜99%:19 100%:20

このようになり、同じ値になりやすいことが分かる。

また、死者であれば敵味方は関係なく、味方先頭キャラの素早さを取得するため、
[味方] A(・B・C) [敵] 死者・生者・生者・・・ という場合、
キャラAが“敵よりも”先制行動をとりやすくなる。

魔神の鎧で先制攻撃

先述のサイトにも記載のとおり、
PTを【生者、死者(、死者or生者)】の順に並べてかつ
先頭キャラに『魔神の鎧』を装備させると、先頭キャラが確定先制するという技がある。

これは死亡キャラの扱い行動順の決定におけるバグ
そしてさらに素早さが0になるという魔神の鎧の効果が合わさった結果起こるものである。

0に何を掛け合わせても当然0である。
つまり、先頭キャラ(魔神鎧装備)と棺桶キャラは絶対に素早さ(補正後)が等しくなるので
100%バグが発生する=確定先制する、という仕組みである。

文責:Kri (http://com.nicovideo.jp/community/co381358)