DCSS スポイラー

呪文の成功率 Spell Success

英語版 CrawlWiki の記事「Spell Success」(0.34 向け、2026-02-14 版)の翻訳です。原文の著者は編集履歴をご覧ください。

呪文の成功率(spell success)とは、呪文を唱えたときに成功が見込める割合のことだ。 成功率は次の要素が複雑に組み合わさって決まる。

  1. 呪文のレベル
  2. 呪文に関わるスキルと知力
  3. 胴鎧と盾によるペナルティ(甲冑スキル/盾スキルで軽くなる)
  4. 魔術強化や暴走する魔力などの補正

基本の失敗値

ソースコードは成功ではなく失敗の確率で計算している。だから spellFailure はできるだけ低いほうがいい。実のところ、失敗率を0%にするには失敗値をマイナスまで下げる必要がある。これについては後で詳しく述べる。

あらゆる補正をかける前の基本の失敗値は次のとおり。[1]

 spellFailure = 60
              - [6 * spell_skills]
              - [2 * Intelligence]
              + Spell difficulty
              + Encumbrance penalties

この時点で spellFailure の上限は 210 だ。[2]

呪文スキル

"Spell_skills" には呪文詠唱と、その呪文の系統のスキルの平均が入る(たとえば妖術/炎の系統の呪文なら、妖術スキルと炎の魔術スキルの平均)。式は次のとおり。[3] [4]

 spell_skills = [Spellcasting / 2] + [Average(Skill_level) * 2]

呪文の難度

レベルの高い呪文ほど難しい。呪文のレベルごとに、失敗値に次の数が加わる。[5]

 spellDifficulty =   3 (レベル1)
                    15 (レベル2)   (+12)
                    35 (レベル3)   (+20)
                    70 (レベル4)   (+35)
                   100 (レベル5)   (+30)
                   150 (レベル6)   (+50)
                   200 (レベル7)   (+50)
                   260 (レベル8)   (+60)
                   340 (レベル9)   (+80)

重さによるペナルティ

鎧と盾による呪文のペナルティは、どちらもそれぞれのEVペナルティから求める。まず EV ペナルティを出し、そこから呪文のペナルティを計算する。鎧と盾は互いに影響しない。山ドワーフは鎧の重さを本来の半分として扱う。

鎧[6][7]

 ev penalty = 1/225 * encumbrance^2 * (90 - 2 * armour_skill) / (str + 3)
 spell penalty = 19 * ev penalty

盾[8][9]

 ev penalty = 2/5 * encumbrance^2 / (5 + str) * (27 - shield_skill) / 27
 spell penalty = 19 * ev penalty

逓減

ここで失敗値は、込み入った後処理の曲線にかけられる。[10]

(x^3 + 426x^2 + 82670x + 6983254) / 262144 IF spellFailure < 43

これは次のような逓減曲線になる。

x軸 = spellFailure、y軸 = 生の失敗率

曲線上のおもな点は次のとおり。

SpellFailure 生の失敗率
43 43%
25 36.6%
0 27.7%
-50 15.5%
-72 10%
-100 8.5%
-173 0%

補正

以下の補正は、上の逓減を「通した後」の失敗率に加わる。ただし、この段階の値はまだ生の失敗率として扱われ、後でシグモイド関数による調整を受ける。[11]

足し引きする補正が先にかかり、そのあとで掛け算の補正(ヴェフメットや魔術強化など)がかかる。[12]

加算(失敗率が上がる):

減算(失敗率が下がる):

乗算:

レヴナントの再燃による補正は raw_failure * 0.75 - 5 で、ほかの生の失敗率の要素がすべてかかった後に適用される。

補正がすべてかかると、最終的な生の失敗率が出る。これを次の関数で実際の成功率に変換する。

最後の段階

ひと言でいうと、ゲームは生の失敗率を0〜99の数と比べるのではない。3つの数の合計を3で割った値と比べている。[14]

(1d101 + 1d101 + 1d100 - 3)/3 < fail chance

これは失敗率に次の変換をかけるのと同じだ(x軸は生の失敗率、y軸は実際の失敗 %)。

Spell success transformation.png

このシグモイド関数のせいで、失敗率が高いときと低いときはなかなか下がらないが、真ん中あたりではぐんぐん下がる。生の失敗率が33%未満なら、次の式で求められる。

 N                 = (raw_failure_rate) * 3
 実際の失敗率 = N * (N+1) * (N+2) / 6 / 101 / 101 (単位は %)

使いやすいように表にしておく。

SpellFailure(補正なし)* 生の失敗率 実際の失敗率
13 32% 14.9%
7 30% 12.3%
1 28% 10.0%
-6 26% 8.1%
-12 24% 6.4%
-20 22% 4.9%
-28 20% 3.7%
-37 18% 2.7%
-47 16% 1.9%
-58 14% 1.3%
-71 12% 0.8%

*それぞれの生の失敗率に届くのに必要な SpellFailure。魔術強化のような掛け算の補正が無い場合の値だ。たとえば魔術強化 x1 があれば、SpellFailure 1 は生の失敗率 (28% * 0.75) = 21% になる。

戦略

これらの式がゲーム中に実際に役立つかは怪しい。スキルを上げつつときどき失敗率を確認し、満足できる値になったら止める。たいていはそれで足りる。

とはいえ、戦略面から知っておくと便利なこともある。

もちろん、こんな計算をしなくても困らない。こうした情報のほとんど(あるいは全部)は、ゲーム中に失敗率を確かめるだけでわかる。防具を着てみて失敗率が許せないほど高ければ、着なければいい。計算はいらない! スキルを少し鍛えたら、着たい防具をもう一度着てみて、ましになったか確かめればいい。

分析

レベル9の呪文を唱えるのに必要なスキル

たとえば炎の嵐を安定して唱えたいとする。例として失敗率10%を目標にしよう。それには上の表を見ればいい。

ページ冒頭の SpellFailure の計算を使えば、SpellFailure を 1 にするのに何が必要かを計算できる。この例では、知力 30、魔術強化なし、鎧と盾の重さは 0 とする。

60 (基本の失敗値)
+ 340 (レベル9の呪文)
- 6 * [0.5 * spellcasting + 2 * avg_skill] (呪文スキル)
- 30 * 2 (知力 30)
+ 0 (重さ)

= 340 - (3 * spellcasting) - (12 * avg_skill) = SpellFailure

SpellFailure = 1 にしたいので、340 - (3 * spellcasting) - (12 * avg_skill) = 1 となる。つまり呪文詠唱スキルが 14 なら、avg_skill、すなわち炎の魔術と妖術は 24.75 必要だ。呪文詠唱スキルが 22.7 なら、炎の魔術と妖術は 22.7 必要になる。

魔術強化は生の失敗率を、1つで x75%、2つで x66% というふうに下げる。だから魔術強化 x1 があるなら、魔術強化前の生の失敗率は (28 / .75) = 37.3% あればいい(これは SpellFailure 29.21 に当たる)。魔術強化の数がほかの場合も同じように計算できる。

まとめると、知力 30 で重さ 0 なら、次のスキルで目標の実際の失敗率10%に届く。

この数字は炎の嵐に限らず、ゲーム中のどのレベル9の呪文にも当てはまる。ただし知力 30、重さ 0 の場合の話だ。たとえば沼ドラゴンの鱗一式とカイトシールドを着けているなら、唱えるのにもっとスキルが要る。呪文のレベル、知力、重さの値は状況に合わせて変えてほしい。

重さを測る

重さが実際の失敗 %に与える影響は線形ではない。ただ、「埋め合わせるのに必要な呪文の系統のスキルのレベル」という形で測ることはできる。

鎧

胴鎧は SpellFailure を 19/225 * encumbrance^2 * (90 - 2 * Armour) / (str + 3) 増やす。呪文詠唱を除くすべての呪文の系統のスキルが1レベルずつ上がると、SpellFailure は 12 下がる。よって鎧の重さは [SpellFailure の増加分] / 12 という式で、スキルのレベルに換算できる。

例: 腕力 6 でトロル革の鎧(重さ = 4)を着ていて、甲冑スキルが 0 だとする。SpellFailure は 19/225 * 4^2 * (90 - 0) / (6 + 3) = 13.51、各スキル1.13レベル分になる。大局的に見れば大した量ではない。トロル革の鎧を手に入れるころには、1レベル程度のペナルティは帳消しにできる。

参考までに:

腕力とスキルによって値が変わる点に注意。甲冑スキルを鍛えればペナルティを減らせることも覚えておこう(詳しくは甲冑スキルと呪文スキルを参照)。

盾

盾は SpellFailure を 38/5 * encumbrance^2 / (str + 5) * (27 - Shields)/27 増やす。上の胴鎧と同じ方法で、盾の重さも数値にできる。鎧と比べると、腕力の影響はやや小さく、盾スキルの影響は大きい。

腕力 6 でバックラー(重さ = 5)を持ち、盾スキルが 0 なら、SpellFailure は 38/5 * 5^2 / (6 + 5) * 27/27 = 17.27、各スキル1.44レベル分になる。カイトシールドならその4倍、タワーシールドなら9倍だ。

甲冑スキルと呪文スキル

たとえば腕力 11 でファイアドラゴンの鱗一式を着ているなら、式は 1/71 * 11^2 / 14 = 0.122 で、甲冑 8.21 : 各系統 1 の比になる。ファイアボールのように2系統の呪文なら、甲冑スキル 4.1 が地の魔術 1 「または」妖術 1 に相当し、甲冑 8.21 が地の魔術と妖術の「両方」1 に相当する。

もちろん、これは失敗率だけを見た話だ。甲冑スキルを鍛えれば守りが固くなり、呪文の系統を鍛えれば威力が上がる。

腕力と知力

腕力 11、ファイアドラゴンの鱗一式、甲冑スキル 0 だとする。レベルアップで腕力+2か知力+2を選べるとき、腕力+2の効果は (1/14 - 1/16) * 19/225 * 11^2 * (90 - 0) = SpellFailure 8.21 で、知力による 2*2 = SpellFailure 4 より大きい。

この腕力 11 のキャラクターがさらにカイトシールドを持ち、盾スキルが 9 なら、腕力+2でさらに (1/16 - 1/18) * 38/5 * 10^2 * 18/27 = SpellFailure 3.52 下がる。

もちろん、知力は呪文の威力も上げるし、腕力はEVのペナルティも減らす。

関連項目

変更履歴

出典