星星发生
星星发生公式及其说明
星星发生公式
星星发生 |
---|
1.从者基础出星率 |
+ |
2.(卡牌倍率 × 3.色卡性能BUFF + 4.首位加成) |
+ |
5.敌方补正 |
+ |
6.星星发生BUFF |
+ |
7.暴击补正 |
+ |
8.OVER KILL补正 |
计算结果说明
战斗过程中,每个单次攻击(例如一张Quick卡攻击)都会按照上面公式计算1次。
每个单次攻击可能会分为若干 hit(即攻击动作时产生若干伤害数字),每次 hit 使用该值产生一定数量星星,但最大不超过3个。
具体逻辑可以参考下面伪代码:
// 执行上述计算(但排除最后一步 overkill 补正),结果转换为 int
int attackStar = (int)(actor.getAttackStart() * 1000.0);
// 举例,此处Quick卡有 3hits,这里是每个 hit 造成的伤害。遍历每个hit值。
int[] hits = {3238, 2329, 8827};
for(int i = 0; i < hits.count; i++) {
// 如果这次hit会导致被攻击者血量到达0,则从该 hit 开始都算是 overkill
bool isOverkill = target.resultDamage(hits[i]);
// 即最后一步 overkill 补正,注意这里结果仍然是 int 类型
if (isOverkill) attackStar += 300;
// 该 hit 掉落的星星数,例如 attackStar 为 2400,则此处为 100% 100% 40%
int starCount = 0;
for (int n = MIN(attackStar, 3000), n >0; n -= 1000) {
starCount += Random.getNext(1000) >= n ? 0 : 1;
}
}
举例:
杰克的绿卡是 5 hits,
基础出星率 0.255(25.5%),
杰克使用保有技能「雾夜杀人A」后,Quick卡性能提升50%,
被敌人释放技能,星星发生率下降60%
三绿连携,第3张卡产生了暴击,且这张卡 5 hits 中,后 2 hits 都是 overkill,
则计算第3张卡的暴击星掉落数:
0.255 (从者基础星星发生率)
+1.8 × (1 + 0.5) + 0.2 (卡牌倍率 × 色卡BUFF + 首位加成)
+
0 (敌方补正)
+
-0.6 (星星发生BUFF)
+0.2 (暴击补正)
=2.755
对于没有 overkill 的 hit,掉星数为 2.755,即有 24.5% 概率掉落2颗星,75.5% 概率掉落3颗星。
对于 overkill 的 hit,掉星数为 2.755+0.3=3.055,已经超过上限3,即100%概率掉落3颗星。
最终,该卡掉星数预计为 2.755×3 + 3×2 = 14.265。
计算公式说明
1.从者基础掉星率
每个从者有一个固定的掉星率(starRate),
例如玛修 0.099、玉藻猫 0.05、杰克 0.255。
通常来说,Rider、Archer 较高,Caster、Avenger、Berserker 较低。
2.卡牌倍率
按以下倍率取值:
指令卡 | 第1位 | 第2位 | 第3位 | 第4位 |
---|---|---|---|---|
Quick | 0.8 | 1.3 | 1.8 | |
Arts | 0.0 | 0.0 | 0.0 | |
Buster | 0.1 | 0.15 | 0.2 | |
Extra | 1.0 |
注意,宝具卡也会按照颜色取值,但不论处在第几位,都按照第1位来处理。
3.色卡性能BUFF
该模块计算方式为 1.0 + 攻击者(色卡性能BUFF) - 防御者(色卡性能BUFF)
防御者的色卡性能BUFF体现为色卡耐性BUFF。
如果该模块最终结果小于 0.0,则修改为 0.0。
色卡性能BUFF包括:
图标 | 效果 |
---|---|
![]() ![]() | Quick 指令卡攻击力提升/性能提升 |
![]() ![]() | Arts 指令卡攻击力提升/性能提升 |
![]() ![]() | Buster 指令卡攻击力提升/性能提升 |
![]() ![]() | Quick 指令卡攻击力下降/性能下降 |
![]() ![]() | Arts 指令卡攻击力提升/性能下降 |
![]() ![]() | Buster 指令卡攻击力下降/性能下降 |
色卡性能BUFF计算方式为:
float rate = 1.0 + (upBuff1 + upBuff2 + ...) - (downBuff1 + downBuff2 + ...);
if (rate > 5.0) rate = 5.0; // 上限
if (rate < 0.001) rate = 0.001; // 下限
举例:攻击者有一个Quick 卡性能提升 20% 和 Quick 卡性能下降 10% 两个 buff,
防御者Quick卡耐性下降20%,
则此处取值为 1.0 + (1.0 + 0.2 - 0.1) - (1.0 - 0.2) = 1.3
4.首位加成
如果这次攻击的第一张卡是Quick卡(绿色),则取值 0.2。
宝具卡不参与该运算(即此处取值 0.0),但可以当做"首绿"给其他普通卡和EX卡提供加成。
5.敌方补正
敌方从者身上带有的一个值 (downStarRate),通常在 -0.1~0.1 之间。
该值仅当进入战斗后才会由服务端下发,其值并不确定,所以目前并没有完整数据。
6.星星发生BUFF
该模块计算方式为 攻击者星星发生BUFF - 防御者星星发生BUFF
实际上,防御者通常是没有星星发生BUFF的。
星星发生BUFF包括:
图标 | 效果 |
---|---|
![]() ![]() | 星星发生率提升 |
![]() ![]() | 星星发生率下降 |
星星发生BUFF计算方式为:
float rate = 1.0 + (upBuff1 + upBuff2 + ...) - (downBuff1 + downBuff2 + ...);
if (rate > 5.0) rate = 5.0; // 上限
if (rate < 0.001) rate = 0.001; // 下限
举例:攻击者有一个星星发生率提升 20% 和 星星发生率下降 10% 两个 buff,
防御者没有 buff,
则此处取值为 (1.0 + 0.2 - 0.1) - (1.0) = 0.1
7.暴击补正
如果该卡暴击判定成功,则取值 0.2。
如果该卡没有暴击或者该卡是 EX卡、宝具卡,则取值 0.0。
8.OVER KILL补正
如果该 hit 是 Over kill,则此处取值 0.3,否则取值 0.0。