Rogue3.6戦闘時の命中判定とダメージ計算

Rogue 3.6の戦闘処理に興味が湧いたのでソースを見る。一連の設定はfight.cファイルに大体まとまっているが、他ファイルも確認した。fight.cのバージョンは3.28。

命中判定

戦闘時はまずその攻撃が命中したか否かの判定が行われる。

この二つを比較して前者≧後者が成り立てば攻撃命中となる。

書き方を変えると、命中率は次の式で求められる。

(プレイヤーレベル + モンスターアーマークラス + 武器命中ボーナス + ランチャー命中ボーナス(投擲攻撃時) + ストレングス命中ボーナス + Dexterityの指輪命中ボーナス(近接攻撃時)) * 5%

各要素が1ポイント増加するごとに命中率が5%アップする仕組みだ(アーマークラスは数字が大きいほど質が低い)。

式にあるランチャー命中ボーナスとは、適切なランチャー(発射台)を装備して投擲武器で攻撃した際に行われるスコア修正を意味する。ArrowにはBow、RockにはSling、Crossbow boltにはCrossbow――これらの組み合わせをした投擲攻撃にはランチャーの持つ命中ボーナスが追加される。

モンスターからの攻撃処理もほとんど変わらない。違いといえば、装備がないのでスコア修正がないこととプレイヤー側の保護ボーナスが考慮されることくらい。

(モンスターレベル + プレイヤーアーマークラス - Protectionの指輪保護ボーナス) * 5%

Protectionの指輪はモンスターの攻撃の命中率を下げるが、二つ装着するのは無意味な行為だ。両手にはめたところ で左手側の保護ボーナスしか獲得できない。

ダメージ計算

命中判定の結果が真であれば与ダメージ計算に進む。

基本ダメージロール + 武器ダメージボーナス + ランチャーダメージボーナス(投擲攻撃時) + ストレングスダメージボーナス + Increase damageの指輪ダメージボーナス(近接攻撃時)

いわゆる防御力という能力値はなく、ダメージ計算にアーマークラスも関与しない。アーマーはもっぱら命中率(回避率)を算出するために存在している。

プレイヤーの基本ダメージロールには武器のダイス、モンスターの場合は自身に設定されたダイスが振られる。命中判定時と同じくモンスターにはスコア修正がないため、基本ダメージロールのみでプレイヤーの被ダメージ数が決まる。

投擲用武器であっても、適切なランチャーを身に着けずに投げるとダメージロールには近接用ダイスが選択される。ゆえに、Arrowを装備しての近接戦とBowを装備せずにArrowを投げ付けた時とで基本ダメージロールは等しくなる。この仕様により、ランチャーを元々持たない投擲対応武器であるDagger, Dart, Spearの三つは常に近接用ダイスが参照され、投擲用ダイスの出番が訪れることはない(?)。

なお、攻撃命中時に「scored an excellent hit on~」というメッセージを目にすることもあるが、これは「かいしんの いちげき!」や「首をはねられた!」のようなクリティカルヒットでも何でもなく、ただ25%の確率で表示しているだけにすぎない。

その他メモ

参考