Wizardry(NES) 解析 - 敵からの打撃攻撃

敵からの打撃攻撃、および追加効果(毒、麻痺など)について。

敵からの打撃攻撃に関しては、PTキャラのACは全く意味を持たない(バグと思われ る)。また、追加効果の回避判定においては全く関係ない属性抵抗が使われることが ある。

処理の流れ

攻撃対象は敵の行動決定時に既に決めら れていることに注意。

命中率

攻撃1回当たりの命中率は以下の要素に依存する(攻撃対象のACは何の影響も及ぼ さないことに注意):

まず、次式で値 A, B を求める:

A = 19 + (PARRYボーナス) - P - (モンスターLV)
B = A - (攻撃者のAC)

ここで、PARRYボーナスは攻撃対象がPARRYを行っていれば2, さもなくば0。P は 攻撃者のキャラ番号に依存する値(本来は攻撃対象のACだったのだろうが、バグのた め違うアドレスの値を参照している)で、対応表は以下の通り(位置 (a,b) は「敵第a グループのb体目」を表す。また、訓練所内IDはキャラの訓練所内での番号 (0-origin)):

位置P
(1,1)PT1人目のPOISON値
(1,2)PT2人目のPOISON値
(1,3)PT3人目のPOISON値
(1,4)PT4人目のPOISON値
(1,5)PT5人目のPOISON値
(1,6)PT6人目のPOISON値
(1,7)0x60 + PT1人目の訓練所内ID
(1,8)0x60 + PT2人目の訓練所内ID
(1,9)0x60 + PT3人目の訓練所内ID
(2,1)0x60 + PT4人目の訓練所内ID
(2,2)0x60 + PT5人目の訓練所内ID
(2,3)0x60 + PT6人目の訓練所内ID
(2,4)(未解析。アドレス $7DE2)
(2,5)(未解析。アドレス $7DE3)
(2,6)(未解析。アドレス $7DE4)
(2,7)(未解析。アドレス $7DE5)
(2,8)(未解析。アドレス $7DE6)
(2,9)(未解析。アドレス $7DE7)
(3,1)(未解析。アドレス $7DE8)
(3,2)(未解析。アドレス $7DE9)
(3,3)(未解析。アドレス $7DEA)
(3,4)(未解析。アドレス $7DEB)
(3,5)(未解析。アドレス $7DEC)
(3,6)(未解析。アドレス $7DED)
(3,7)エンカウントの種類?(アドレス $7DEE)
(3,8)PTの人数(生死問わず)
(3,9)(未解析。アドレス $7DF0)
(4,1)(未解析。アドレス $7DF1)
(4,2)(未解析。アドレス $7DF2)
(4,3)(未解析。アドレス $7DF3)
(4,4)(未解析。アドレス $7DF4)
(4,5)(未解析。アドレス $7DF5)
(4,6)ALARMフラグ?(アドレス $7DF6)
(4,7)前回の宝箱罠?(アドレス $7DF7)
(4,8)PT1人目の前回の宝箱罠調査結果?(アドレス $7DF8)
(4,9)PT2人目の前回の宝箱罠調査結果?(アドレス $7DF9)

次に、A, B の値によって「命中判定値」を求める。命中判定値は:

そして、攻撃1回当たりの命中率は次式で表される:

(命中率) = (19-(命中判定値)) / 20

つまり、命中判定値が19ならば攻撃は決して命中しない。また、命中率は最大 19/20 である。

ダメージ

モンスターは種類ごとに固有の攻撃回数とダメージダイス式テーブル(攻撃回数分) を持つ。ダメージダイス式はテーブル先頭のものが初期値として使われ、攻撃が1回 命中するたびに次のダイス式に差し替えられる(攻撃が命中しない限りダイス式は変 化しないことに注意)。

上記を踏まえて攻撃回数分の命中判定を行い、1回命中するごとにダイスを振り、 その値の合計をダメージとする。

攻撃対象がステータス異常にかかっている場合、更にダメージが2倍になる。

毒判定

毒を受けた場合、攻撃対象のPOISON値が1になる。

毒を受ける確率は攻撃対象の運勢値1および属性抵抗に依存する。まず、

(19-(運勢値1)) / 20

の確率で毒を回避できる。この判定で回避できなかった場合、吸収属性抵抗があ れば100%毒を回避できる。以上全ての判定で回避できなければ毒を受ける。

麻痺判定

麻痺(PARALY)を受ける確率は攻撃対象の運勢値1および属性抵抗に依存する。まず、

(19-(運勢値1)) / 20

の確率で麻痺を回避できる。この判定で回避できなかった場合、火属性抵抗があ れば100%麻痺を回避できる。以上全ての判定で回避できなければ麻痺を受ける。

石化判定

石化(PETRIF)を受ける確率は攻撃対象の運勢値1および属性抵抗に依存する。まず、

(19-(運勢値1)) / 20

の確率で石化を回避できる。この判定で回避できなかった場合、呪文属性抵抗が あれば100%石化を回避できる。以上全ての判定で回避できなければ石化を受ける。

ドレイン判定

ドレインLVはモンスターの種類ごとに固定(ランダム要素なし)。また、各PTキャ ラが1戦闘で受けるドレイン回数は1回まで(既にドレインを受けたキャラの場合、ド レイン判定がスキップされる)。

まだドレインを受けていないキャラの場合、石化属性抵抗があれば100%ドレイン を回避できる。さもなくば100%ドレインを受け、攻撃対象のLVがモンスター固有のド レインLV分減少する。この結果LVが0以下になる場合、攻撃対象はLOST状態となり、 処理は終了する。

最大HP減少

ドレインを受けてLVが1以上残った場合は、最大HPを減らす処理を行う。最大HP減 少量は、攻撃対象の元の(ドレインを受ける前の)LV, 攻撃対象の最大HP, 攻撃者のド レインLVに依存する。まず、以下のようにして値 H を求める:

次に、次式で値 D を求める:

D = H/((元LV)%256) + 1
※%は余りを求める演算子
※(元LV)%256 が0の場合、D = 0

そして、最大HP減少量は次式で表される:

(最大HP減少量) = (ドレインLV)*D

最大HPを減らした結果 (最大HP) < (現在HP) となる場合は、現在HPを最大HP と同じにする。

最後に、攻撃対象についてドレインを受けたことを示すフラグが立てられる。

クリティカル判定

クリティカルを受けた場合、攻撃対象は即死する。

クリティカルを受ける確率は、攻撃対象の運勢値1, 攻撃対象の属性抵抗、攻撃者 のモンスターLVに依存する。まず、

(19-(運勢値1)) / 20

の確率でクリティカルを回避できる。この判定で回避できなかった場合、

(49-(モンスターLV)) / 50

の確率でクリティカルを回避できる。この判定でも回避できなかった場合、火属 性抵抗があれば100%クリティカルを回避できる。以上全ての判定で回避できなければ クリティカルを受ける。


Back