少女前线伤害判定流程和相关公式汇总[2019/01/18更新v2.0300部分改动和热更新修正]
前言:板内经常能看到新人询问伤害相关的公式。其实大部分公式板内都有,但是散落在不同的帖子里,找起来很不方便,而较新的概念也缺乏介绍,所以决定开一贴进行汇总。因为很多是他人的成果,我可能理解的不够深入,如果发现错误请回帖指正。另外如果有觉得应该加入的内容也请回帖补充。
游戏内目前存在4套防御系统,分别对应生命、回避、护甲、力场4个属性。本文会先给出攻击流程,之后会根据攻击流程的判定顺序,依次说明这些防御手段。文章的最后则会给出不在攻击流程但是影响输出的射速和换弹公式。
下文中:
ceiling为向上取整,会用{}进行标记。例如ceiling{2.2}=3
floor为向下取整,会用[]进行标记。例如floor=1
max为取最大值,max(n, x)可以理解为“不低于n”。例如max(1, 2)=2;又例如max(10%, x)=x如果x>10%,否则最小为10%
min为取最小值,min(n, x)可以理解为“不高于n”。例如min(1, 2)=1;又例如min(90%, x)=x如果x<90%,否则最大为90%
伤害判定流程:
1. 结算破防效果(并显示破防数字)
2. 判定攻击是否命中,如果失败则回避
3. 进行伤害浮动调整
4. 结算护甲效果
5. 判定攻击是否暴击,如果成功则结算暴击效果
6. 结算固定伤害
7. 结算力场效果
8. 结算伤害加深/减伤效果
9. 结算护盾效果
(9.5 显示伤害数字)
10. 结算AOE效果和扩编保护
11. 结算最终伤害和重创保护
从判定流程里可以得到以下结论:
破防不存在浮动
回避是在破防效果后判定的,所以虽然回避成功不会受到伤害,但依然会损失力场值
力场效果是先结算破防后判定的,破防足够打掉力场盾的话就一定不会被减伤
暴击是在护甲之后结算的,护甲抵消的伤害无法暴击
伤害加深同理,护甲抵消的伤害无法伤害加深,但是暴击伤害和固定伤害可以被加深和减免
AOE是在浮动之后结算的,所以同一个小队里每个小人受到的伤害都一样(除非触发保护机制)
AOE是在护盾之后结算的,护盾抵消的伤害不会根据编制扩大
编制保护和大破保护是在伤害动画显示之后的,所以小人头上冒出的伤害是保护前的,不一定是实际受到的伤害
这里补充说明一下单次伤害的概念,也就是本文所计算的东西:1个小人的1次攻击是1个单次伤害,一个5扩编小队一次齐射会进行5个单次伤害,上述流程也会进行5次,5次伤害会打出来的伤害是有可能因为浮动而都不一样的。这根单发榴弹不同,单发榴弹是一个小人发射的1个单次伤害,只是有着AOE的效果,上述流程只进行一次,伤害也是一样的(除非触发保护机制)。这其中的差别希望读者可以理解。
属性相关:
这里“属性”可以指伤害、回避、命中等等任何相关的属性。大家一般看到的是面板属性,而实际公式里结算的都是实际属性(无法直接看到,需要进行计算),所以先明确一下概念
面板属性
面板属性:人形在“编成”界面里显示的绿字或白字的数值,包括好感、妖精、装备的效果,这是最好查的属性。
面板属性 = ceiling{(1+妖精补正) * (基础属性 + 装备属性 + sign(好感补正) * ceiling{基础属性 * abs(好感补正)})}
其中sign()为取正负号,abs()为取绝对值
当好感补正是非负数时(绝大部分情况),公式可以简化为:
面板属性(非负好感) = ceiling{(1+妖精补正) * (装备属性 + ceiling{基础属性 * (1+好感补正)})}
基础属性:属性不带任何加成时候的数值,在“强化”界面、图鉴、数据表格里得到的都是这个数值。
好感补正:
− 好感补正 ...
好感[0, 10):-5%
好感[10, 90):0%
好感[90, 140):5%
好感[140, 190):10%
好感:15%
敌方好感固定为50,即补正为0
有装备的时候面板属性会显示成X+Y的形式,这样显示时:
面板属性 = X + Y
Y = 装备属性
X = 面板属性 - Y = ceiling{(1+妖精补正) * (装备属性 + ceiling{基础属性 * (1+好感补正)})} - 装备属性
实际属性
实际属性:人形属性在实际战斗中的数值,是面板属性加算阵型补正和敌我双方所有技能buff和debuff之后的效果。
取整前属性 = max(属性下限, 面板属性 *(1+阵型补正)*(1+技能补正1)*(1+技能补正2)*...)
伤害、暴击:实际属性=取整前属性
破防:实际属性=ceiling{取整前属性}
昼战命中、回避、移速、射速、穿甲、护甲:实际属性=floor[取整前属性]
夜战命中:实际属性=floor[取整前属性*(1-90%*(1-夜视能力))]
爆伤:实际属性=floor[取整前属性*100]/100
技能补正:包括妖精天赋、妖精技能、人形技能、敌方BOSS技能等等
属性下限:
− 属性下限 ...
伤害、回避、移速、暴击、爆伤、穿甲、护甲、破防:0
命中、射速*:1
*注意:射速属性在攻击和换弹公式里有更加严格的上下限,具体参见下文的“射速相关”部分,这里的1是射速属性的绝对下限
如果没有特殊声明,本文后面所有公式中的属性皆为实际属性
重装小队
火力=小队杀伤
命中=小队精度
回避=0
移速=0
射速=ceiling{(300+小队装填)/30}
暴击=10%
爆伤=150%
穿甲=小队穿甲(BGM-71=400,AGS-30=80,2B14=40)
护甲=0
破防=小队破防
夜视能力=100% (夜战无命中惩罚)
以上参数皆为基础属性,适用面板属性和实际属性公式。
另外因为三个小队的普攻和技能都无法暴击,所以暴击参数实际上没有意义。
面板攻击间隔=ceiling{1500/(300+小队装填)*30}/30 秒/发
注意:因为这个面板公式和实际射速与攻击间隔的公式不完全相同,所以面板攻击间隔≠实际攻击间隔
力场相关:
力场值:汤姆森、M870等的技能和部分敌人的特殊防御手段。又称力场盾,有时候会简称为盾,请注意和护盾进行区分(大部分时候盾是指力场盾,尤其是“破盾”里的盾)。力场值大于0时,人形受到攻击时可以减少受到的伤害。请注意有些伤害是无视力场的。
破防:力场的克制手段,可以减少力场的数值,最终破掉力场盾。在敌人力场盾不足或者已破的情况下,部分溢出的破防值会转化为伤害,这部分伤害被称作破防溢出伤害。
最大力场值:力场值的最大值。影响力场减伤效果。请注意最大力场值不一定是初始力场值,很多敌人的初始力场值就比最大力场值小,面对这些敌人即使完全不进行破防也是可以造成伤害的。
敌方初始力场值 = 最大力场值 * 初始力场%
这两个属性可以在敌人属性网站或者Excel表里查看,具体看版头链接。
结算破防效果
破防后力场值 = 破防前力场值 - 攻击方破防
破防溢出伤害
破防溢出伤害 = ceiling{max(0, 攻击方破防 - 破防前力场值)/10}
力场伤害补正
力场伤害补正 = 1 - 防御方力场% * (1 - 力场无视系数/100)
力场% = 破防后力场值 / 最大力场值
如果攻击无视力场,力场无视系数=100,否则力场无视系数=0
“破防溢出伤害”和“力场伤害补正”的效果请参见下文“伤害相关”部分的“结算力场效果”
无视力场伤害举例
− 无视力场伤害举例 ...
重装小队的攻击
45的二技能
白色坦克的碾压技能
回避相关:
回避:又称闪避,是大部分人形的主要防御手段。人形受到攻击时有一定概率可以回避,回避成功的话不会受到伤害。请注意不是所有伤害类型都能回避的。
命中:回避的克制手段,命中越高攻击越不容易被回避。
命中率
命中率 = 攻击方命中 / (攻击方命中 + 防御方回避)
重装小队命中率 = max(40%, 精度 / (精度 + 防御方回避 * 8))
判定攻击是否命中
1. 如果攻击必中,则成功
2. 如果随机数[0,1)<=命中率,则成功,否则失败
必中伤害举例
− 必中伤害举例 ...
榴弹类技能
燃烧弹类技能
狙击类技能
空袭妖精
M4二技能的非AOE部分(AOE部分不是必中)
等等(列表不全)
护甲相关:
护甲:霰弹枪的主要防御手段,很多敌方BOSS也以此作为辅助防御手段。可以抵消人形所受到的一部分伤害。护甲是不能抵消所有伤害的,至少要受到1点伤害。
穿甲:护甲的克制手段,可以抵消部分甚至全部护甲的防御效果。穿甲高于护甲的时候,最多可以额外增加2点伤害,超过2点部分则没有效果。计算的时候不要忘了我方所有人形都有15点基础穿甲。
伤害:基础伤害值,护甲、爆伤等很多属性都是以面板伤害作为基础的。面板伤害经过各种补正之后会成为最终伤害,最终伤害打在人形身上会减少她的生命值。
浮动伤害是先于护甲结算计算的,这里一并说明。
进行伤害浮动调整
1. 如果伤害属于无浮动伤害,浮动伤害 = 攻击方伤害
2. 浮动伤害 = 攻击方伤害 * 随机数[0.85, 1.15)
结算护甲效果
穿甲后伤害 = max(1, 浮动伤害 + min(2, 攻击方穿甲 - 防御方护甲))
无浮动伤害举例
− 无浮动伤害举例 ...
稻草人、刽子手、计量官、法官的部分技能无浮动
伤害相关:
暴击:暴击概率的简称。人形每次进行“可以暴击”的攻击时会有一定概率造成额外的暴击伤害,这是这种伤害的触发概率。请注意不是所有伤害类型都能暴击的。
暴伤:暴击伤害倍率的简称。人形攻击暴击时会增加所造成的伤害。
固定伤害:空袭妖精、M1887等人形的技能。直接对目标造成固定的额外伤害。这个伤害不受浮动、暴击、护甲的影响。
伤害加深:竞争者、琪亚娜等人形的技能。可以增加被攻击人形受到的伤害。
减伤:防御妖精、FP-6等人形的技能。可以减少被攻击人形受到的伤害。这个和伤害加深实际上是同一个系统,只是效果相反。
护盾:护盾妖精、S.A.T.8和部分BOSS所使用的技能。人形在受到伤害后会先由护盾吸收,超过护盾值后才会扣除生命,实际效果上相当于固定额外减伤。注意区分护盾和力场(盾),护盾的效果是“吸收”固定伤害,力场的效果是百分比减伤。
判定攻击是否暴击
1. 如果伤害属于无暴击伤害,则失败
2. 如果随机数[0,1)<=攻击方暴击,则成功,否则失败
结算暴击效果
如果暴击成功:暴击后伤害 = 穿甲后伤害 * 攻击方暴伤
如果暴击失败:暴击后伤害 = 穿甲后伤害
无暴击伤害举例
− 无暴击伤害举例 ...
榴弹类技能
燃烧弹类技能
狙击类技能
M4二技能的非AOE部分(AOE部分不是必中)
连珠终结技能
等等(列表不全)
结算固定伤害
力场减伤前伤害 = max(0, ceiling{暴击后伤害 + 固定伤害})
结算力场效果
加深前伤害 = max(0, ceiling{(力场减伤前伤害 + 破防溢出伤害) * 力场伤害补正})
结算伤害加深/减伤效果
如果伤害不为0:加深后伤害 = max(1, floor[加深前伤害 * 伤害加减效果]),否则0
伤害加减效果 = (1+伤害加深1)*(1-减伤1)*(1+伤害加深2)*(1-减伤2)*...
结算护盾效果
护盾后伤害 = max(0, 加深后伤害 - 防御方结算前护盾)
结算后护盾 = max(0, 结算前护盾 - 加深后伤害)
显示伤害动画
这里的“护盾后伤害”实际上就是单体最终伤害了,这个伤害也就是“小人头上冒出来的数字”。上述9个步骤合下来已经很复杂了,所以这里进行一下总结:
单体最终伤害=max(0, -当前护盾 + max(1, floor[伤害加减效果 * max(0, ceiling{(1 - (无视力场?0:力场%)) * (破防溢出伤害 + max(0, ceiling{固定伤害 + (暴击?暴伤:1) * max(1, 伤害 * 浮动随机 + min(2, 穿甲 - 护甲))}))})]))
属性皆为实际属性,力场%、护盾、护甲和伤害加减效果来自防御方,其余来自进攻方
这是一般情况下的公式,假设护盾前伤害>0(游戏里目前所有的护盾前伤害都至少是1)并且伤害会浮动(我方所有伤害和敌方绝大部分伤害都会浮动)
(暴击?暴伤:1)是说如果暴击则使用暴伤,未暴击或者不会暴击则此系数为1。无视力场同理
生命相关:
生命:又称生命值、血量、HP等,是人形的最终防御手段。生命减到0人形就会丧失作战能力。
扩编:又称人数。一个队伍里的小人数量,一般为1~5的一个数。
扩编保护:又称编制保护。一颗子弹只能打死一个小人,溢出的伤害则会浪费掉而不会影响其他小人。群体伤害(AOE)虽然能对每个小人进行伤害,但是对一个小人的伤害也最多打死这个小人,溢出的伤害也会浪费掉而不会影响其他小人。
单体最低剩余生命:一个队伍里的小人生命的最小值。游戏里的伤害是按照小人1、小人2依次受到伤害的,小人1不死小人2不会受到伤害,所以人形队伍受伤后最多只会有一个小人的生命不满,这里指那个数值。
单体最低剩余生命 = 当前总生命 - (当前扩编 - 1) * 单体生命上限
结算AOE效果和扩编保护
如果伤害是单体伤害:
最终伤害 = min(防御方单体最低剩余生命, 单体最终伤害)
如果伤害是群体(AOE)伤害:
最终伤害 = min(防御方单体最低剩余生命, 单体最终伤害) + min(防御方单体生命上限, 单体最终伤害) * (防御方当前扩编 - 1)
结算最终伤害和重创保护
重创:当我方队伍的总生命小于生命上限的30%的时候,会处于重创状态,修理费和修理时间增加。
重创保护:我方队伍如果受到伤害后,血量会从30%以上(含)降到30%以下(不含)的时候,则血量会停留在30%并且无敌一段时间(1.5秒)。重创保护只对我方人形有效,敌方不享受。
伤害后总生命 = 伤害前总生命 - 最终伤害
如果是我方未重创的人形,伤害后总生命<30%*生命上限,则伤害后总生命=floor-1
射速相关:
射速:影响人形攻击速度的参数。机枪人形射速不影响攻击速度但是影响换弹速度。射速实际属性在计算的时候有比其他参数更加严格的上下限。
限制后射速 = max(枪种射速下限, min(枪种射速上限, 实际射速))
射速上下限:
− 射速上下限 ...
手枪、冲锋枪、步枪、突击步枪:
霰弹枪:
重装小队:
机枪:
射速相关部分可能存在未研究的特例,这里公式是理论公式,请批判性地看待
普通攻击间隔帧数
帧数:游戏内时间全部都是用帧这个单位来计算的,1秒=30帧。小人攻击移动放技能等等所有动作所花费时间一定是整数帧数(即0.033333...秒的整倍数),所以下面用帧数来做时间的基础单位。
机枪普通攻击间隔帧数 = 固定值
其他普通攻击间隔帧数 = floor
机枪普通攻击间隔帧数:
− 机枪普通攻击间隔帧数 ...
PKP和连珠终结机枪:11
其他:10
换弹所需帧数
弹量:机枪和霰弹枪特有的属性。这两种人形在进行等于弹量次攻击后需要进行换弹动作,换弹会额外花费时间。
机枪换弹所需帧数 = floor[(4 + 200 / 限制后射速) * 30]
霰弹枪换弹所需帧数 = floor
页:
[1]