晕眩公式
-
ro小站给出的公式
-
上述公式没有写到晕眩抗性如何作用到成功率的计算里面,我们推测晕眩抗性的作用,整理出以下公式。
测试
为了验证上面的公式,我们做以下测试
-
测试中的装备与素质点
-
测试技能: 惊声尖叫Lv5 (眩晕基础机率 50%)
-
结果
惊声尖叫次数 | 眩晕次数 | 眩晕机率 |
---|---|---|
103 | 10 | 9.70% |
- 验证
我们带入公式计算出推测的理论眩晕机率
由于样本量较少,实验所得的 9.70% 与理论计算的 7.26% 之间的差距可看作合理的误差
查询源码
我们来读一下从GM拿到的源代码
惊声尖叫的技能描述
- Id: 326
Name: DC_SCREAM
Description: Dazzler
MaxLevel: 5
Type: Misc
TargetType: Self
DamageFlags:
NoDamage: true
Splash: true
Hit: Single
HitCount: 1
SplashArea: -1
AfterCastActDelay: 4000
Duration2: 5000
Requires:
SpCost:
- Level: 1
Amount: 12
- Level: 2
Amount: 14
- Level: 3
Amount: 16
- Level: 4
Amount: 18
- Level: 5
Amount: 20
- 可看出惊声尖叫的英文名为
Dazzler
,代码中的变量名为DC_SCREAM
惊声尖叫的眩晕基础概率
case DC_SCREAM:
sc_start(src,bl,SC_STUN,(25+5*skill_lv),skill_lv,skill_get_time2(skill_id,skill_lv));
break;
- 可看出基础概率的计算为 (25+5*技能等级)%
眩晕状态的机率计算
/// Resistance rate: 10000 = 100%
/// Example: 50% (5000) -> sc_def = 5000 -> 25%;
/// 5000ms -> tick_def = 5000 -> 2500ms
int sc_def = 0, tick_def = -1; // -1 = use sc_def
/// Fixed resistance value (after rate calculation)
/// Example: 25% (2500) -> sc_def2 = 2000 -> 5%;
/// 2500ms -> tick_def2=2000 -> 500ms
int sc_def2 = 0, tick_def2 = 0;
......
......
case SC_STUN:
sc_def = status->vit*100;
sc_def2 = status->luk*10 + status_get_lv(bl)*10 - status_get_lv(src)*10;
tick_def2 = status->luk*10;
break;
- 结合注释理解,状态的抗性有两种,一种为乘算抗性,一种为加算抗性。以上面的眩晕为例子,vit作用于乘算抗性,luk等作用于加算抗性。
- 状态持续时间的抗性也同样的分为乘算与加算的两种
- 状态持续时间的抗性没有给出时,将用状态抗性代替(就是说vit以乘算的方式减少眩晕时间)
最终眩晕的机率计算
if (!(flag&SCSTART_NORATEDEF)) {
rate -= rate*sc_def/10000;
rate -= sc_def2;
// Minimum chances
switch (type) {
case SC_BITE:
rate = max(rate, 5000); // Minimum of 50%
break;
}
// Item resistance (only applies to rate%)
if (sd) {
for (const auto &it : sd->reseff) {
if (it.id == type)
rate -= rate * it.val / 10000;
}
if (sd->sc.data[SC_COMMONSC_RESIST] && SC_COMMON_MIN <= type && type <= SC_COMMON_MAX)
rate -= rate*sd->sc.data[SC_COMMONSC_RESIST]->val1/100;
}
// Aegis accuracy
if(rate > 0 && rate%10 != 0) rate += (10 - rate%10);
}
- 先由
基础机率
,状态的乘算抗性
,状态的加算抗性
计算得出中状态的机率
- 卡片,装备等所带来的状态抗性(Item resistance)最后计算
总结
- 源码的查询结果与实验结果均与推测公式相符
网友评论