钢铁雄心4陆军伤害计算公式一览 陆军伤害怎么计算
钢铁雄心4陆军伤害计算公式
虽然游戏中用了随机数,而随机实际上是一种概率模型。游戏中,陆军战斗中,会取 1~4 的随机数来计算每回合(小时)的伤害。而1~4的随机是等概率随机,也就是理论上roll 10000次,roll到1、2、3、4的次数是相同的。均为2500次。因此可以很简单做一个计算:(1+2+3+4)÷4 = 2.5。
它的意思就是随机1~4,多次积累下来的总数,平均每次为2.5。
本文针对的是组织度的计算,针对强度是同理的,无非将这个为2.5的随机数变为1.5再进行计算。
名词解释
伤害计算
1、战斗时分为攻击方与防御方。
2、攻击力:无论攻击或防御,都会用到软攻、硬攻来计算攻击力。
3、防御力:进攻方的防御力是突破,完全用不到防御。防御方的防御力是防御,完全用不到突破。
4、根据单位的软度/硬度分别计算受到的软攻/硬攻伤害部分。
模型
一个模型可以有很多种表达方式,在此使用一种便于想象的模型来表述
将攻击力看作攻击次数,防御力看作防御次数。双方每小时(称为回合)进行一次交火,会执行相应次数的攻击与防御。假设具体数值如下:
进攻方造成组织度伤害
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
进攻方攻击力为100,攻击了100次,而防御方防御只有20,只进行了20次有效防御,另外80次攻击受到无防御时伤害。
有防御时伤害:有效防御发生时,每次攻击受到的伤害为 (随机数1~4可以当做期望值为2.5):
随机数×有效防御时被命中率×基本系数=
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
游戏中单位分为装甲单位和非装甲单位。被分为装甲类型的单位,在攻击时在软攻方面有额外加成。
触发此加成有个条件:敌方的穿甲值不高于本方护甲值。
无视目标单位类型,无论是装甲单位还是非装甲单位,只要满足上面这些条件,就可以触发加成。
效果是: 伤害计算公式中的随机数最大值从4变为6。 但此伤害只作用于目标的软度部分。
随机数1~6的期望值为3.5。
我们继续使用之前的例子,并添加一些参数:
1、进攻方使用的是装甲单位。
2、防御方使用的是软度100%的单位。
3、防御方的穿甲不能穿透进攻方的护甲。
此时进攻方的伤害能力产生了变化:
1、每回合有效防御伤害:3.5×10%×0.05=0.0175。
2、每回合无防御时伤害:3.5×40%×0.05=0.7。
3、实际就是 有装甲单位伤害额外加成的单位 对非装甲部分能造成1.4倍的伤害。
软度/硬度
为了便于理解,只考虑一方的进攻力与另一方的防御力。
软攻攻击硬度70%的单位,只有30%的攻击有效,即1000×30%=300 次。
硬攻攻击硬度70%的单位,只有70%的攻击有效,即200×70%=140 次。
此时总攻击次数为:300+140=440 次。
因为防御方防御为500,因此所有伤害均为有效防御伤害:0.0125。
总伤害:440×0.0125=5.5。
若防御方防御为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