目录

HOI4 伤害计算

名词

名称 解释
软攻 对软度部分的攻击能力
硬攻 对硬度部分的攻击能力
防御 防御方的防御力
突破 进攻方的防御力
护甲 护甲>穿甲则受到伤害 ×50%,并且对于装甲部队来说会有额外伤害加成
穿甲 穿透护甲的能力
组织度 组织度为0则会退出战斗
硬度 软度 + 硬度 = 1。影响部队受到攻击类型的比例

伤害计算

  1. 战斗时分为攻击方与防御方。
  2. 攻击力:无论攻击或防御,都会用到软攻、硬攻来计算攻击力。
  3. 防御力:
    • 进攻方的防御力是突破,完全用不到防御。
    • 防御方的防御力是防御,完全用不到突破。
  4. 根据单位的软度/硬度分别计算受到的软攻/硬攻伤害部分。

模型

攻击力防御突破
进攻方1000100
防御方4020200

进攻方造成组织度伤害

00_defines.lua 中有如下定义:

    LAND_COMBAT_ORG_DICE_SIZE = 4
    LAND_COMBAT_ORG_DAMAGE_MODIFIER = 0.05
    
    BASE_CHANCE_TO_AVOID_HIT = 90
    CHANCE_TO_AVOID_HIT_AT_NO_DEF = 60
随机数 × 有效防御时被命中率 × 基本系数
= LAND_COMBAT_ORG_DICE_SIZE × ( 1 - BASE_CHANCE_TO_AVOID_HIT )  × LAND_COMBAT_ORG_DAMAGE_MODIFIER
= 2.5 × 10% × 0.05 
= 0.0125
随机数 × 无防御时被命中率 × 基本系数
= LAND_COMBAT_ORG_DICE_SIZE × ( 1 - CHANCE_TO_AVOID_HIT_AT_NO_DEF )  × LAND_COMBAT_ORG_DAMAGE_MODIFIER
= 2.5 × 40% × 0.05 
= 0.05
20 × 0.0125 + ( 100 - 20 ) × 0.05 
= 0.25 + 4 
= 4.25

防御方造成组织度伤害

  1. 防御方攻击力仅40,进攻方突破为100。因此防御方对进攻方的攻击是全部处于有效防御范围内的。
  2. 一回合内40次攻击总伤害为:40 × 0.0125 = 0.5。

装甲单位伤害额外加成

defines中有一个参数

LAND_COMBAT_ORG_ARMOR_ON_SOFT_DICE_SIZE = 6

我们继续使用之前的例子,并添加一些参数:

  1. 进攻方使用的是 装甲 单位。
  2. 防御方使用的是软度100%的单位。
  3. 防御方的穿甲不能穿透进攻方的护甲。

此时进攻方的伤害能力产生了变化:

  1. 每回合有效防御伤害: 3.5 × 10% × 0.05 = 0.0175。
  2. 每回合无防御时伤害: 3.5 × 40% × 0.05 = 0.7。
  3. 实际就是 有装甲单位伤害额外加成的单位 对非装甲部分能造成1.4倍的伤害。

软度/硬度

为了便于理解,只考虑一方的进攻力与另一方的防御力。

软攻 硬攻 防御 硬度
攻击方 1000 200
防御方 500 70%

若防御方防御为200

有效防御伤害 + 无防御伤害
200 × 0.0125 + 240 × 0.05 
= 2.5 + 12 
= 14.5

若进攻方有装甲伤害额外加成,防御方防御依然为200

此时需将软攻造成的伤害和硬攻造成的伤害分开计算。

软攻伤害部分 + 硬攻伤害部分
14.5 × ( 300/440 ) × 1.4 + 14.5 × ( 140/440 ) × 1 
= 13.84 + 4.61
= 18.45

或从头计算

( 有效防御软伤害 + 无防御软伤害 ) × 1.4 
+ ( 有效防御硬伤害 + 无防御硬伤害 ) × 1

=[ 300/440 × 200 × 0.0125 + 300/440 × (440-200) × 0.05 ] × 1.4 
 + [ 140/440 × 200 × 0.0125 + 140/440 × (440-200) × 0.05 ] × 1