タイトルの通りです. 以下のスポイラーは, 私がソースコードを読んで書いたもので, 間違っている可能性もあります. もし, そのような箇所があれば, 指摘していただけるとありがたいです.
21/10/06 追記: 銀の指輪のボーナスの対象を追記.
21/10/10 追記: スキルによる追加ダメージを追記.
21/12/18 追記: 強さボーナスを参照できるリンクと, 騎乗ボーナスについて追記し, 影(shade) の表記を修正した.
22/09/24 追記: エンチャントの条件を修正した.
JSLASH'EM-0.0.7E7F3-J0.2.1 の
素手及びマーシャルアーツのスポイラー
以下の文章の skill の値は,
初心者 = 1
入門者 = 2
熟練者 = 3
エキスパート = 4
マスター = 5
グランドマスター = 6
として計算する. また, ローブとは
ローブ
守りのローブ
力のローブ
脆弱のローブ
を指す. ローブの装備が条件になった場合, 鎧の部位が
裸でも条件を満たす.
1. 変化していない格闘家の命中率ボーナス
武器と盾を装備しておらず, ローブを装備していれば,
命中修正に (level / 3) + 2 を加える.
それ以外で, 武器を装備していない場合, 命中修正に
(level / 9) + 1 を加える. その際, "鎧がちょっと
邪魔だ..." と表示される.
2. エンチャント
変化している時, MR_HITAS***** があればその ***** の値が
enchant になり, ない場合に MR_PLUS***** があればその
***** の値が enchant になり, それもない場合は 0 となる.
変化していない格闘家の場合, level / 4 > enchant
であれば (実際には, 素手攻撃時に変化していない場合,
この時点で enchant は 0 以外にはならないはず),
enchant は level / 4 となる.
enchant が攻撃対象の MR_PLUS*** の *** より小さい場合
noeffect が真となり, それ以外は偽となる.
3A.マーシャルアーツが入門者以上
攻撃対象が影(shade)の場合, damage は 1d3-1 となる.
それ以外の対象には, 格闘家が変化しておらず,
グランドマスターであり, レベルが 17 以上であれば
damage は 6d2 となる.
その条件を一つでも満たさない場合,
level > 2 * (skill - 2) + 5 であれば,
damage は (skill - 1)d2 となる.
レベルが条件を満たさない場合, damage は
((level + 2) / 3)d2 となる.
ローブを装備しており, 盾を装備していない場合,
damage は二倍になる. それ以外の場合, damage に
2 を加える.
3B.マーシャルアーツが初心者
攻撃対象が影(shade)の場合, damage は 0 となる.
それ以外は, damage は d2 となる.
4. ダメージ計算
damage > 1 の場合, valid_weapon_attack を真とする。
小手が祝福されており, 攻撃対象がアンデッドか悪魔の
場合, damage に d4 を加える.
小手の修正値を damage に加える.
小手を装備しておらず, 左右どちらかあるいは両方の
指に素材が銀の指輪をつけており, 攻撃対象が銀に弱い
場合, damage に d20 を加える.
気功拳(Chi Strike) を使用中で, 魔力(en)が 1 以上
ある場合, en > (10 + (level / 5)) であれば damage に
10 + (level / 5) を加え, en が条件を満たさなければ
damage に en を加える. そして, en から
10 + (level / 5) を引く.
精霊拳(Elemental Fist) を使用中の場合, noeffect が真
であれば dmgbonus を 0, 偽であれば 2d4 とする. 炎,
冷気, 電撃, 酸の属性の一つがランダムに選ばれ,
その属性で巻物, 魔法書, 杖が壊れた場合, dmgbonus に
その際の威力を加える. noeffect が真であるか, 対象が
その属性に耐性を持つ場合, noeffect を偽とし,
dmgbonus を 0 とする. 水薬, 指輪が壊れた場合,
dmgbonus にその際の威力を加える. そして, dmgbonus > 0
であれば, damage に dmgbonus を加える.
damage > 0 であれば, 攻撃の指輪によるボーナスと
強さによるボーナスを damage に加える.
必殺(Kiii) 使用中であれば, damage を二倍にする.
狂戦士化(Berserk) 使用中であれば, damage に 4 を
加える.
切り刻みの爪(Eviscerate) 使用中であれば, damage に
(level / 2 + 1) + level / 2 を加える.
valid_weapon_attack が真である場合, 素手であれば,
damage に skill / 2 を加え, マーシャルアーツであれば,
damage に skill * 3 / 2 を加える. さらに, 騎乗中であり,
騎乗スキルが熟練者であれば 1, エキスパートであれば
2 を加える.
武器を使用しておらず, damage > 1 で, 変化していない
場合, d100 < skill(素手. マーシャルアーツは含まず)
を満たし, 攻撃対象が大きい怪物でなく皮が厚くない場合,
怪物の hp > damage であれば, 対象は stun し, 周囲
8 マスにランダムに移動する?
damage が 0 以外で noeffect が真の場合, 銀製の指輪
によるボーナスがあった場合は damage を 8 とし,
それ以外の場合は damage は 0 となる.
変化していない格闘家が素手で, ローブを着用して, 盾を
装備しておらず, 対象が隣接しており, 攻撃対象の皮が
厚くなければ, canhitmon を d100 とする.
canhitmon < level / 8 であれば, damage は二倍になり,
攻撃対象を確認できていれば, "極めて大きな打撃を与えた!"
と表示される.
それ以外で, canhitmon < level / 4 であれば, damage は
1.5 倍になり, 攻撃対象を確認できていれば, "極めて大きな
打撃を与えた!" と表示される. 日本語版ではメッセージに
違いはないが, 英語ではメッセージに違いがあるため区別が
つく.
それ以外で, canhitmon < level / 2 であり, 攻撃対象が
大きな怪物でない場合, 怪物の hp > damage であれば,
対象は stun し, 周囲 8 マスにランダムに移動する?
以上で算出された damage の値が, 攻撃対象へのダメージ
となる.