D&D呪文攻撃ボーナス計算ツール
呪文攻撃ロールでは、キャラクターシートに記載する呪文攻撃ボーナスが必要です。この計算ツールは、習熟ボーナスとクラスが使う呪文発動能力の修正値を加算します。2つの整数を入力すると、合計、入力値、符号付きの式が表示されるため、すぐに確認できます。キャラクターの作成やレベルアップ、クリーチャーの準備、自動作成されたシートが標準ルールを正しく適用したかの確認に役立ちます。
無料で実行
シートから2つの値を確認します
まず、キャラクターの習熟ボーナスを確認します。これは通常のキャラクターシートに記載されるレベル依存の値であり、特定の技能、武器、セーヴィング・スローに対する個別のボーナスではありません。次に、クラスや特徴が呪文発動に使う能力値を特定します。一般にウィザードは【知力】、クレリックは【判断力】、バードは【魅力】を使いますが、個別の特徴に別の能力値が明記される場合もあります。入力するのは能力値そのものではなく修正値です。たとえば【知力】18の修正値が+4なら、18ではなく4を入力します。マルチクラスのキャラクターは複数の呪文発動能力を持つことがあります。能力が異なる場合は、各クラスから得た呪文について別々に計算してください。このツールはレベルや能力値から推測せず、確定済みの習熟ボーナスと修正値を求めます。そのため、計算根拠が明確になり、クリーチャー、選択ルール、独自の値にも対応できます。
習熟と呪文発動能力修正値を加算します
標準式は「呪文攻撃ボーナス = 習熟ボーナス + 呪文発動能力修正値」です。習熟が+3、該当する能力修正値が+4なら、結果は+7です。呪文が呪文攻撃ロールを要求したとき、d20の出目にこの+7を加えます。表示される式には符号が残るため、負の修正値も明確です。たとえば習熟+2と修正値-1なら+1になります。このツール自体はダイスを振らず、呪文のダメージ・ダイスもこの数値には影響しません。魔法のアイテム、クラス特徴、特技、状態、その他のルールが特定の攻撃に追加修正を与えることがあります。そのような状況限定の調整は基本の2項計算には含めず、該当するルールに従って別途適用してください。有利や不利もd20の振り方を変えるもので、数値の呪文攻撃ボーナス自体は変えません。基本値を分けておくと、シートの点検と一時的効果の適用が容易です。
セーヴではなく呪文攻撃に使います
この結果は、呪文や特徴が近接または遠隔の呪文攻撃ロールを求める場合にだけ使います。d20を振り、計算したボーナスを加え、採用しているルールに従って対象のアーマー・クラスと比較します。対象がセーヴィング・スローを行う場合には、この値を使いません。呪文セーヴ難易度は関連する別の式で、通常は習熟ボーナスと呪文発動能力修正値に加えて基礎値8を含みます。また、呪文攻撃と、呪文の一部として行う武器攻撃も区別してください。どの攻撃ボーナスを使うかは、特徴の正確な記述で決まります。習熟が上がったときや、該当する能力修正値が変わったときは再計算してください。結果には合計と2つの内訳が並ぶため、更新すべき値をすぐ確認できます。このツールはクラスの選択、特徴の解釈、装備ボーナスの追加、版ごとの例外判断を行いません。最終的にはルール本文と卓での合意に従ってください。
活用例
新しいキャラクターシートを確認
クラスの呪文発動能力を選び、キャラクターの習熟ボーナスを記入した後に攻撃ボーナスを確認できます。
レベルアップ後に更新
レベルによる習熟の上昇や能力値の成長で呪文発動修正値が変わった際に再計算できます。
マルチクラス術者を点検
異なる呪文発動能力を使う各クラスの呪文について、個別の攻撃ボーナスを算出できます。
よくある質問
呪文攻撃ボーナスの式は何ですか?
キャラクターの習熟ボーナスと、その呪文に使う呪文発動能力の修正値を加算します。
能力値と能力修正値のどちらを入力しますか?
修正値を入力してください。該当する能力の修正値が+4なら、能力値そのものではなく4を入力します。
呪文攻撃ボーナスと呪文セーヴ難易度は同じですか?
いいえ。このツールは攻撃用です。呪文セーヴ難易度は通常、基礎値8も含む別の式を使います。
魔法のアイテムや特徴のボーナスも含まれますか?
いいえ。習熟と能力修正値の基本合計だけを計算します。その他のボーナスは該当ルールに従って別途加えてください。
計算ツールの料金はいくらですか?
このページのブラウザーでは無料でご利用いただけます。APIの各リクエストは$0.002です。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/hobby/dnd-spell-attack-bonus \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"proficiency_bonus":3,"spellcasting_ability_modifier":4}'const res = await fetch("https://api.kit.forhosting.com/hobby/dnd-spell-attack-bonus", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"proficiency_bonus": 3,
"spellcasting_ability_modifier": 4
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/hobby/dnd-spell-attack-bonus",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"proficiency_bonus": 3,
"spellcasting_ability_modifier": 4
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/hobby/dnd-spell-attack-bonus", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"proficiency_bonus":3,"spellcasting_ability_modifier":4}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"proficiency_bonus":3,"spellcasting_ability_modifier":4}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/hobby/dnd-spell-attack-bonus", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"proficiency_bonus": 3,
"spellcasting_ability_modifier": 4
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "hobby.dnd_spell_attack_bonus",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |