呪文の成功率 Spell Success
英語版 CrawlWiki の記事「Spell Success」(0.34 向け、2026-02-14 版)の翻訳です。原文の著者は編集履歴をご覧ください。
呪文の成功率(spell success)とは、呪文を唱えたときに成功が見込める割合のことだ。 成功率は次の要素が複雑に組み合わさって決まる。
基本の失敗値
ソースコードは成功ではなく失敗の確率で計算している。だから spellFailure はできるだけ低いほうがいい。実のところ、失敗率を0%にするには失敗値をマイナスまで下げる必要がある。これについては後で詳しく述べる。
あらゆる補正をかける前の基本の失敗値は次のとおり。[1]
spellFailure = 60
- [6 * spell_skills]
- [2 * Intelligence]
+ Spell difficulty
+ Encumbrance penalties
- 60 は基準として決められた失敗値で、特に根拠はない。
- 知力と呪文スキル(その呪文の系統のスキルと呪文詠唱)を上げると失敗値は下がる。
- レベルの高い呪文ほど難しく、防具や盾を着けるとさらに難しくなる。
この時点で 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 ペナルティを出し、そこから呪文のペナルティを計算する。鎧と盾は互いに影響しない。山ドワーフは鎧の重さを本来の半分として扱う。
ev penalty = 1/225 * encumbrance^2 * (90 - 2 * armour_skill) / (str + 3) spell penalty = 19 * ev penalty
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
これは次のような逓減曲線になる。
曲線上のおもな点は次のとおり。
| SpellFailure | 生の失敗率 |
|---|---|
| 43 | 43% |
| 25 | 36.6% |
| 0 | 27.7% |
| -50 | 15.5% |
| -72 | 10% |
| -100 | 8.5% |
| -173 | 0% |
補正
以下の補正は、上の逓減を「通した後」の失敗率に加わる。ただし、この段階の値はまだ生の失敗率として扱われ、後でシグモイド関数による調整を受ける。[11]
足し引きする補正が先にかかり、そのあとで掛け算の補正(ヴェフメットや魔術強化など)がかかる。[12]
加算(失敗率が上がる):
減算(失敗率が下がる):
- 抑制された魔力: 1レベルにつき -2%
乗算:
- 魔術強化: すべての呪文に ×
6 / (7 + sources)%。魔術強化が1つ以上ある場合の値だ(魔術強化 x1 なら ×75%、x2 なら ×66.6%、以下同様)。 - ヴェフメット: 破壊の呪文に ×66.6%。[13]
- 変身:
- 防具のエゴ:
レヴナントの再燃による補正は raw_failure * 0.75 - 5 で、ほかの生の失敗率の要素がすべてかかった後に適用される。
補正がすべてかかると、最終的な生の失敗率が出る。これを次の関数で実際の成功率に変換する。
最後の段階
ひと言でいうと、ゲームは生の失敗率を0〜99の数と比べるのではない。3つの数の合計を3で割った値と比べている。[14]
(1d101 + 1d101 + 1d100 - 3)/3 < fail chance
これは失敗率に次の変換をかけるのと同じだ(x軸は生の失敗率、y軸は実際の失敗 %)。
このシグモイド関数のせいで、失敗率が高いときと低いときはなかなか下がらないが、真ん中あたりではぐんぐん下がる。生の失敗率が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% になる。
戦略
これらの式がゲーム中に実際に役立つかは怪しい。スキルを上げつつときどき失敗率を確認し、満足できる値になったら止める。たいていはそれで足りる。
とはいえ、戦略面から知っておくと便利なこともある。
- 高レベルの呪文は鍛えるのにとんでもない量の経験値が要るので、あと何レベル必要かを前もって知っておけるのは便利だ。
- 防具の重さを数値で表せる。たとえば術者が「ファイアドラゴンの鱗一式の呪文ペナルティは、各系統のスキル6レベル分に相当する」と言えるようになる。そうすれば、それを着る価値があるかを短期的にも(「これを着ていま呪文を唱えられるか」)長期的にも(「ゾットの領域に着くころ、これを着て呪文を唱えられるか」)判断できる。
- スキルの相対的な価値を計算できる。たとえば <呪文の系統> のスキル1レベルが甲冑スキル1レベルより役に立つのはいつか、腕力1点が知力1点より価値を持つのはいつか、がわかる。
もちろん、こんな計算をしなくても困らない。こうした情報のほとんど(あるいは全部)は、ゲーム中に失敗率を確かめるだけでわかる。防具を着てみて失敗率が許せないほど高ければ、着なければいい。計算はいらない! スキルを少し鍛えたら、着たい防具をもう一度着てみて、ましになったか確かめればいい。
分析
レベル9の呪文を唱えるのに必要なスキル
たとえば炎の嵐を安定して唱えたいとする。例として失敗率10%を目標にしよう。それには上の表を見ればいい。
- 「実際の」失敗率を10%にするには、生の失敗率を28%にする必要がある。
- 魔術強化を考えずに生の失敗率を28%にするには、SpellFailure を 1 にする必要がある。
ページ冒頭の 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%に届く。
- 魔術強化なし: {呪文詠唱 14、avg_skill 24.75}、{呪文詠唱 22.7、avg_skill 22.7}
- 魔術強化 x1: {呪文詠唱 14、avg_skill 22.49}、{呪文詠唱 20.7、avg_skill 20.7}
- 魔術強化 x2 / ヴェフメット: {呪文詠唱 14、avg_skill 21.5}、{呪文詠唱 20、avg_skill 20}
- ヴェフメット + 魔術強化 x1: {呪文詠唱 14、avg_skill 20.2}、{呪文詠唱 18.9、avg_skill 18.9}
この数字は炎の嵐に限らず、ゲーム中のどのレベル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レベル程度のペナルティは帳消しにできる。
参考までに:
- 腕力 10、レザーアーマー、甲冑スキル 0: 各スキル -0.78 レベル
- 腕力 10、リングメイルまたは沼ドラゴンの鱗一式、甲冑スキル 5: 各スキル -2.12 レベル
- 腕力 10、ファイアドラゴンの鱗一式、甲冑スキル 5: 各スキル -5.24 レベル
腕力とスキルによって値が変わる点に注意。甲冑スキルを鍛えればペナルティを減らせることも覚えておこう(詳しくは甲冑スキルと呪文スキルを参照)。
盾
盾は 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倍だ。
甲冑スキルと呪文スキル
- 甲冑スキルは SpellFailure を
-Armour * 38/225 * encumbrance^2 / (str + 3)減らす。 - 呪文詠唱を除くすべての呪文の系統のスキルが1ずつ上がると、SpellFailure は 12 下がる。必要なら系統の数で割る。
- したがって甲冑スキル1レベルは、各系統のスキル
19/1350 * encumbrance^2 / (str + 3)レベル分、ざっと1/71 * encumbrance^2 / (str + 3)レベル分に相当する。
たとえば腕力 11 でファイアドラゴンの鱗一式を着ているなら、式は 1/71 * 11^2 / 14 = 0.122 で、甲冑 8.21 : 各系統 1 の比になる。ファイアボールのように2系統の呪文なら、甲冑スキル 4.1 が地の魔術 1 「または」妖術 1 に相当し、甲冑 8.21 が地の魔術と妖術の「両方」1 に相当する。
もちろん、これは失敗率だけを見た話だ。甲冑スキルを鍛えれば守りが固くなり、呪文の系統を鍛えれば威力が上がる。
腕力と知力
- 腕力が 'x' 変わると、鎧と盾の重さはそれぞれ次の分だけ軽くなる。
- 鎧:
(1/<str+3> - 1/<str+x+3>) * 19/225 * encumbrance^2 * (90 - 2 * Armour) - 盾:
(1/<str+5> - 1/<str+x+5>) * 38/5 * encumbrance^2 * (27 - Shields)/27
- 鎧:
- 知力は1点につき SpellFailure を 2 下げる。
腕力 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のペナルティも減らす。
関連項目
変更履歴
- 0.31 より前は、魔術強化とヴェフメットによる生の失敗率の倍率は 50% が下限だった。そのため魔術強化は最大5つまで、ヴェフメットのボーナスと合わせるなら1つまでしか効かなかった。また、一部の変成術の呪文は失敗率を上げていた。蜘蛛の躯(+10%)と刃の手(+20%)だ。
- 0.26 より前は、spellFailure に上限が無かった。
- 0.22 より前は、spell_schools が
50 * log2(1 + spell_schools/50)で逓減されていたため、(Spellcasting/2) + (2* AvgSpellSchool) > 50になると術者が損をした。その代わり、レベル9の呪文の spellFailure は 340 ではなく 330 だった。 - 0.20 より前は、逓減の関数が違っていて、多項式ではなく区切り点で計算していた。失敗率の計算のほかの部分にも区切り点がもっとあった。
出典
- ↑ spl-cast.cc:401 (0.32.1)
- ↑ spl-cast.cc:441 (0.32.1)
- ↑ spl-cast.cc:408 (0.32.1)
- ↑ spl-cast.cc:377 (0.32.1)
- ↑ spl-cast.cc:417 (0.32.1)
- ↑ player.cc:6147 (0.32.1)
- ↑ player.cc:2265 (0.32.1)
- ↑ player.cc:6163 (0.32.1)
- ↑ player.cc:2273 (0.32.1)
- ↑ spl-cast.cc:458 (0.32.1)
- ↑ spl-cast.cc:461 (0.32.1)
- ↑ spl-cast.cc:534 (0.34.0)
- ↑ spl-cast.cc:339 (0.32.1)
- ↑ spl-cast.cc:2636 (0.32.1)

