ダメージ計算について

HD2D版ドラクエ3リメイクのダメージの計算方法について解説しています。

ダメージ計算について

値が抜けているところは判明したら追加・調整します。
多くは特技・呪文・装備の効果値、モンスターの耐性値になっていると思います。

乱数

乱数 = 乱数幅最小 + RND * ( 乱数幅最大 - 乱数幅最小 )
運率 = 運 / 運基準
乱数幅 = 0.8, 0.9 (運率<0.9)
乱数幅 = 0.9, 1.1 (0.9≦運率≦1.1)
乱数幅 = 1.1, 1.2 (1.1<運率)

RNDは0-1の範囲でランダムに選ばれる値。

  • 運:攻撃側の運ステータス
  • 運基準:職業とレベルごとに設定されている運の基準値
  • 端数は少数第六位で切り捨て

幅ダメージ

  • 呪文攻撃と一部の特技はこの計算式を使用
  • ギガスラッシュ、かまいたち、石つぶて、とおぼえ、まものよび 、かえんのいき、かがやくいき
  • まものよびは非幅ダメージと合計する
幅ダメージ = 幅ダメージ * 賢さ補正 * ターゲット補正 * 各補正
賢さ補正 = 1 + Min( Max( 賢さ - 賢さ基準, 0 ) / 100, 0.3 )

Min(A, B)はAとBで小さい方を使用、Max(A, B)はAとBで大きい方を使用する

  • 幅ダメージ = 特技呪文に設定されたダメージ幅(上下)
  • 賢さ補正とターゲット補正は呪文攻撃にのみ適用、特技には掛からない
  • 賢さ基準はレベルに依存(一覧は下にあります)

ターゲット補正

ターゲット補正 = 1 (基礎)
ターゲット補正 = 1.3 (グループで1匹の場合)
ターゲット補正 = 1.15 (グループで2匹の場合)
ターゲット補正 = 1.3 (全体攻撃で1匹の場合)
ターゲット補正 = 1.2 (全体攻撃で2匹の場合)
ターゲット補正 = 1.1 (全体攻撃で3匹の場合)

各補正

  • 呪文強化:1.8(魔力覚醒)
  • 呪文弱体:1.5(ぶきみなひかり)
  • 連続補正(呪文):1(該当する呪文なし?)
  • 呪文強化1(装備):1.2(ひかりのかぶと+デイン)
  • 呪文強化2(装備):1(該当する装備なし?)
  • 上書き値:該当なし?
  • 属性耐性:0.1-2(モンスターの属性耐性)
  • ダメージ耐性:1(該当なし?)
  • ダメージ耐性(特技):1(該当なし?)
  • 装備補正:1(該当なし?)

上書き値以外を全て順番に乗算

上書き処理

  • 呪文特技の上書き値が0以上の場合、幅ダメージは上書き値になる
  • また乱数が有効な場合、幅ダメージに乱数を掛ける

追加ダメージの処理

  • ここまでの計算で幅ダメージが2よりも低く
    かつ追加ダメージが1の場合は幅ダメージが0または1になる
  • ここまでの計算で幅ダメージが2よりも低く
    かつ追加ダメージが0の場合は幅ダメージが0になる
  • ここまでの計算で幅ダメージが2以上
    かつ追加ダメージが4以外の場合は幅ダメージが0または1になる
  • ここまでの計算で幅ダメージが2以上
    かつ追加ダメージが4の場合は幅ダメージが0になる

非幅ダメージ

  • 幅ダメージに該当しない特技と通常攻撃はこの計算式を使用
非幅ダメージ = ( 基礎ダメージ + 通常ダメージ ) * 各補正
基礎ダメージ = 攻 * ( 1700 - 攻 ) / 2000 * ( 1700 - 守 ) / 2000 * 0.7 * 乱数
通常ダメージ = ( 攻 - 守 ) * ( 1700 - Max( 攻, 守 ) ) / 2000 * 0.6
  • 攻 = 攻撃側の攻撃力、上限850
  • 守 = 防御側の守備力

各補正

  • 連続補正(物理):旋回系の特技、ブーメランやムチなどの通常攻撃に係る減衰補正
  • 種族特効(装備):1.3、◯◯キラーを持つ装備
  • 呪文強化1(装備):1.2(ひかりのかぶと+デイン)
  • 特技威力:特技の威力倍率
  • 威力補正(武器):1.3-1.5、特技の種族特効
  • 物理強化:2(バイキルトとバイキルミン)、2(ちからためとおうえん)
  • 物理弱体:1.25,1.35,1.45,1.6,1.7,1.8(ルカニ、ルカナン)
  • 上書き値:該当なし?
  • 属性耐性:0.1-2(モンスターの属性耐性)
  • ダメージ耐性(特技):1(該当なし?)
  • 装備補正:1(該当なし?)

上書き処理

  • 呪文特技の上書き値が0以上の場合、幅ダメージは上書き値になる
  • また乱数が有効な場合、幅ダメージに乱数を掛ける

追加ダメージの処理

追加ダメージはまず◯◯キラーを持つ装備の追加ダメージと特技の追加ダメージを合計

  • 合計した追加ダメージが2の場合
    非幅ダメージに1を加える
  • 合計した追加ダメージが5以上の場合
    非幅ダメージに追加ダメージを加える

ここまでの計算で非幅ダメージが2よりも低く

  • 追加ダメージが0または1の場合
    非幅ダメージは0または1になる
  • 追加ダメージが2の場合
    非幅ダメージは1または2になる
  • 追加ダメージが3の場合
    非幅ダメージは1になる
  • 追加ダメージが4以上の場合(またはマイナスの場合)
    非幅ダメージは0になる

ここまでの計算で非幅ダメージが2以上で

  • 追加ダメージが0ではなく、属性耐性が0.1より低い場合
    非幅ダメージは0または1になる

ダメージが2以上&耐性が0.1未満の場合、ダメージは0または1になる

最小ダメージ = Max( 0, 種族ダメージ最小 )
最小ダメージ = Max( 最小ダメージ, スキルダメージ最小 )
ダメージ = Max( 最小ダメージ, ダメージ )
  • 種族ダメージ最小:◯◯キラーを持つ装備

追加ダメージは基本的にメタル用に用意された処理

会心ダメージ

ダメージ(特技呪文) = Max( 幅・非幅ダメージ * 1.2, 会心ダメージ ) * 装備補正;
ダメージ(通常攻撃) = Max( 幅・非幅ダメージ, 会心ダメージ ) * 装備補正;
会心ダメージ = 攻 * ( 2000 - 攻 ) / 2000 * 0.7 * 1.2 + Max( 0, 通常ダメージ )
通常ダメージ = ( 攻 - 守 ) * ( 1700 - Max( 攻, 守 ) ) / 2000 * 0.6

最終ダメージ

最終ダメージ = Min( ダメージ * 試練補正 * 難易度補正, 9999 )
  • 試練補正:0.1、敵の攻撃は10
  • 難易度補正:イージーならプレイヤー攻撃時に1.2、ハードなら敵攻撃時に1.2

賢さ基準

Lv *0 *1 *2 *3 *4 *5 *6 *7 *8 *9
0 16 17 18 19 20 21 22 23 24
1 25 26 27 28 31 35 39 42 46 50
2 55 59 63 68 73 77 82 87 91 96
3 101 105 109 114 118 121 124 128 131 134
4 138 141 144 148 151 155 158 162 165 169
5 172 176 181 186 191 197 202 207 212 218
6 223 229 235 240 246 252 257 263 268 273
7 277 282 286 291 296 300 305 309 313 318
8 322 326 329 332 335 338 341 344 347 350
9 353 356 359 361 363 365 367 369 371 373

ダメージ計算ツール

ステータス

状態

設定

各補正

  • 威力補正ATTACK_DAMAGE_RATE (float)
  • 種族特効追加ATTACK_RACE_DAMAGE_ADD (int)
  • 種族ダメージ最小ATTACK_RACE_DAMAGE_MIN (float)
  • 種族特効ATTACK_RACE_DAMAGE_RATE (float)
  • 特殊補正ATTRIBUTE_DAMAGE_RATE (float)
  • ダメージ耐性DEFENSE_DAMAGE_RATE (float)
  • 属性耐性DEFENSE_RESIST_DAMAGE_RATE (float)
  • 装備補正EQUIP_DAMAGE_RATE (float)
  • 乱数判定IS_SKILL_ATTACK_RANDOM (bool)
  • 連続攻撃補正MULTI_ATTACK_DAMAGE_RATE (float)
  • 連続呪文補正MULTI_SPELL_DAMAGE_RATE (float)
  • 上書き値OVERRIDE_DAMAGE (float)
  • 試練攻補正SHIREN_ATTACK_DAMAGE_RATE (float)
  • 試練守補正SHIREN_DEFENSE_DAMAGE_RATE (float)
  • ダメージ追加SKILL_ATTACK_DAMAGE_ADD (int)
  • 特技最小SKILL_ATTACK_DAMAGE_MIN (float)
  • 特技威力補正SKILL_ATTACK_DAMAGE_RATE (float)
  • 特技守補正SKILL_DEFENSE_DAMAGE_RATE (float)
  • 特技種族特効SKILL_RACE_DAMAGE_RATE (float)
  • 特技上書き値SKILL_SPECIAL_OVERRIDE_DAMAGE (float)
  • 呪文威力補正SPELL_ATTACK_DAMAGE_RATE (float)
  • 呪文基礎ダメージ上SPELL_BASE_DAMAGE (float)
  • 呪文基礎ダメージ下SPELL_BASE_DAMAGE_min (float)
  • 呪文守補正SPELL_DEFENSE_DAMAGE_RATE (float)
  • 呪文装備威力補正SPELL_EQUIP_ATTACK_DAMAGE_RATE (float)
  • 呪文装備ダメージ補正SPELL_EQUIP_DAMAGE_RATE (float)
結果
モンスター 最小 最大 最小会心 最大会心

コメントフォーム

  • 2024/11/28(木) 14:17:46 返信

    ダメージ計算式きた!
    と思ったのですがさっぱり意味が分かりませんw
    いつか解説も併記していただけると助かります。

    • 2024/11/29(金) 14:32:41 返信

      同じくサッパリw
      賢さは403あればいいのか?いや違うよな?w

      • 2024/11/29(金) 21:48:19 返信

        レベル1のときは46あればいい
        レベル99のときは403あればいい

        ダメージ計算ツールでレベルと賢さだけ変化させてみるとわかりやすい
        レベル1  かしこさ1   最小100 最大100
        レベル1  かしこさ46  最小130 最大160
        レベル99 かしこさ46  最小100 最大100
        レベル99 かしこさ403 最小130 最大160

        ただ、最小130~最大160の幅30ぶんがどこから来たのか、
        解説を見てもわからないので、それはコードを見てみるつもり

  • 2024/11/28(木) 18:27:29 返信

    イオナズンで同じ賢さのキャラでもダメージがやたら違う時があったのは、ターゲット補正のせいだったのか
    確かに、素早さが低いキャラが打つときは敵の数が少なくなりがちだから

    あとこれ幅ダメージは「乱数」は使われないので、運を高くするメリットはない感じですかね?

    しかし攻撃力上限が850なのはちょっとさびしい

  • 2024/11/28(木) 19:07:14 返信

    呪文の賢さによるダメージ増加分は、

    賢さ- 賢さ基準

    の部分が30になると、賢さ補正が1.3になって最大なんですね
    賢さ基準って運みたいにレベルが高くなるほど上昇ですかね
    レベルが低いほど賢さ補正をあげやすい、不思議な式になりそう

    • 管理人 2024/11/28(木) 19:43:13 返信

      各職業のページに賢基準を載せています。
      あとでこのページにも追加しておきます。

      • 2024/11/28(木) 20:21:27 返信

        ありがとうございます
        レベル1だと賢さ基準も16ということで、賢さがわずか46でキャップなのですね

        賢さ基準と同じように賢さが伸びる職業は、
        女神の指輪とか、転職で+30確保できれば、ずーっとキャップってことですね
        だいぶ緩いですね…

  • 管理人 2024/11/29(金) 18:22:28 返信

    調査用にダメージ計算ツールを追加しました。
    武器を装備していない(武器補正を含まない)通常攻撃で確認しています。
    その他の攻撃は各補正と合わせて確認する必要があります。

    • 2024/11/29(金) 22:41:49 返信

      呪文の場合の結果は、「最小」だけ見ればよいのですよね?

    • 管理人 2024/11/29(金) 22:43:13 返信

      表の最小は乱数が最小の時のダメージ、最大は乱数が最大の時のダメージ(運による範囲制限を含む)
      幅ダメージ(特技呪文ブレス)の場合は乱数最小の下~上のダメージ、乱数最大の下~上のダメージ

      • 2024/11/29(金) 22:57:55 返信

        幅ダメージ(特技呪文ブレス)の場合の、乱数最大はどのパターンなのでしょうか?下記でしょうか?

        乱数最小の下 min = GetDamage SPELL_BASE_DAMAGE_minをもとに計算
             上 min = GetDamage SPELL_BASE_DAMAGEをもとに計算
        乱数最大の下 max = GetDamage SPELL_BASE_DAMAGE_minをもとに計算
             上 max = GetDamage SPELL_BASE_DAMAGEをもとに計算

        ただコードを見る限り、幅ダメージ(SKILL_SPECIAL_OVERRIDE_DAMAGE >= 0のとき除く)はrandrate無関係で、乱数最小と乱数最大の結果に差がなさそうなので、なにか認識違いをしていそうですね。

      • 管理人 2024/11/29(金) 23:13:24 返信

        計算の読み方はそれで合っていると思います。SKILL_SPECIAL_OVERRIDE_DAMAGEが設定されている幅ダメージがあれば、固定ダメージになるはずです。

        • 2024/11/29(金) 23:32:23 返信

          ありがとうございます。
          そして言葉足らずでした、すみません。

          下記の条件で計算したときに、
          >レベル1 賢さ50 種類 呪文 呪文基礎ダメージ上 200 呪文基礎ダメージ上 100

          下記の結果になりまして、
          >最小 130~260 最大 160~320
          なぜ最小と最大で(randrate無関係なはずなのに)結果が変化するのだろうと思いました。
          コードを見る限り、最小 130~260はわかるのですが、
          最大 160~320がどのように計算されて出てきたのか、わからないのです…。

        • 管理人 2024/11/30(土) 00:18:00 返信

          確認したところこのページのコードに誤りがあったので修正します。
          現在のコードではintelWeightTimesが繰り返し加算されてブレが生じています。

          • 2024/11/30(土) 00:29:13

            あ、本当ですね
            intelWeightTimesが持ち越されてますね
            これは気づけてもよかったなあ、ありがとうございます

          • 管理人 2024/11/30(土) 00:33:26

            ありがとうございます。修正しました。

    • 管理人 2024/11/29(金) 22:57:34 返信

      属性耐性はモンスターの属性耐性の値で確認。

  • 2024/11/29(金) 20:53:11 返信

    全体を対象にしたランダム複数回攻撃(ばくれつけん、まものよび、ぐんたいよび など)もターゲット補正受けるんですかね?
    補正が適用されるとして、敵が3匹いて1匹に攻撃が集中した場合は補正は1.1倍?1.3倍?

  • 2024/12/02(月) 07:52:45 返信

    元のページでコメントができない状態だったので、こちらで失礼します。体装備「そうてんのトーガ」ですが、呪文と状態異常の他にブレス25%軽減の記載がされていました。私自身未入手で恐縮ですが、説明文や他サイトではそのような効果がなかったので、質問させていただきました。

  • 2024/12/02(月) 22:09:57 返信

    幅ダメージ = 幅ダメージ * 賢さ補正 * ターゲット補正 * 各補正

    このページの幅ダメージの解説のところにあるこの計算式なんですが
    どう解釈したらいいのか今一わかりません
    これだと 賢さ補正 * ターゲット補正 * 各補正 の計算結果が1以外に成り立たず

    幅ダメージ = 幅ダメージ * 1
    幅ダメージ = 幅ダメージ

    ってことになりません?

    • 2024/12/03(火) 11:44:34 返信

      この=は代入です

      • 2024/12/03(火) 13:32:53 返信

        返信ありがとうございます
        なんとなく理解できました
        代入という事はつまり 幅ダメージ = 特技呪文に設定されたダメージ幅 という注釈は
        左辺の 幅ダメージ には当てはまらないのですね

  • 管理人 2024/12/05(木) 01:57:07 返信

    計算ツールに技(特技魔法)と属性の項目を追加しました。
    技を設定すると
    ・SPELL_BASE_DAMAGE
    ・SKILL_ATTACK_DAMAGE_RATE
    ・SKILL_ATTACK_DAMAGE_ADD
    ・ATTRIBUTE_DAMAGE_RATE
    の値が技の値に上書きされます。
    属性はモンスター名を入力した場合にモンスターの耐性がDEFENSE_RESIST_DAMAGE_RATEで使用されます。

    • 管理人 2024/12/05(木) 19:25:25 返信

      計算式の解説を更新し、値が確認できたものは全て埋めました。
      計算ツールはもう少し調整します。

  • 2024/12/13(金) 18:18:43 返信

    ダメージ計算式についてですが
    左から順に掛け算、割り算をしていけば良いのでしょうか?
    それぞれ分母に掛けるのか分子に掛けるのかが分かりません。分数などで表記していただけると分かりやすいと思います。
    「コード読め」と言われそうですが読めないので…。
    視覚的に理解しやすい形にしていただけると大変助かります。宜しくお願いします。

  • 2024/12/17(火) 14:55:11 返信

    いつもとても興味深く活用させていただいております。ありがとうございます。
    手元で計算していて、ツール内の計算ロジックとサイト上の記載で差異がある箇所に2点気づいたのでコメントしておきます。

    ・非幅ダメージの各補正は通常ダメージだけではなく、基礎ダメージと通常ダメージの両方にかかる
    誤:基礎ダメージ + 通常ダメージ * 各補正
    正:(基礎ダメージ + 通常ダメージ) * 各補正

    ・最終ダメージはMax関数ではなく、Min関数の誤り(9999を超えた場合の補正なので)

    • 管理人 2024/12/17(火) 19:27:18 返信

      ありがとうございます。修正しました。

  • 2025/06/20(金) 16:10:00 返信

    運基準値が記載されている箇所が分かりませんでしたが
    ツールを使ってみたところ、レベル99で運360程度あれば最大乱数幅が出るということでしょうか?

内容をご確認の上、送信してください。URLを含むコメントは承認待ちになります。