#include<iostream>
using namespace std;
void main()
{
//基础暴击为收集册5+宠物4+血色14+喷泉5
double b_c = 5 + 4 + 14 + 5;
//基础王伤为肉斩80+公会技能1.5+基础100+共鸣15+收集册HE+神物阶段15+左四20
double b_b = 100 + 80 + 1.5 + 15 + 5 + 15 + 20;
//基础极大化为收集册5+一件套3+新冰18
double b_m = 5 + 3 + 18;
//基础动速为收集册10+地阵7+基础100
double b_s = 100+10 + 7;
//魔法石孔左四16+冰武等效4+武器等效12+左五6+神物头等效4,左四鉴定等效1,武器鉴定等效1,14C和艾达合计等效2
double sum_h = 16 + 4 + 12 + 6 + 1 + 1 + 4 + 2;
//计算满极大化需要的孔
double tr_m = ((85 / 1.13 / 1.08 - 40) / 0.75 + 40) / 6;
double m = ceil(tr_m);
cout << "打到100极大化需要" << m << "个孔" << endl;
//计算动速达到122.5所需要的孔
double tr_s = ((122.5 - 120) / 0.3 + 120 - b_s) / 6;
double s = ceil(tr_s);
cout << "打到122.5动速需要" << s << "个孔" << endl;
//剩余孔数
double h = sum_h - m - s;
cout << "剩余" << h << "个孔" << endl;
//假设爆伤为210
double d = 2.1;
//初始化期望值记忆
double oex = 0;
double nex = 0;
//初始化暴击记忆
double oc = 0;
for (int i = 0; i <= h; i++)
{
//初始化暴击
double c =0 ;
//计算纯打魔法石未递减暴击
double tr_c = b_c + i * 6;
//计算递减后实际面板暴击
if (tr_c > 140)
{
c = 100;
}
else if (105 < tr_c < 140)
{c = (tr_c - 105) * 0.4 + 86;}
else if (75 < tr_c < 105)
{c = (tr_c - 75) * 0.6 + 68;}
else if (40 < tr_c < 75)
{c = (tr_c - 40) * 0.8 + 40;}
else
{c = tr_c;}
double c_true = (c * 1.13 * 1.08 -15)/100;
//将实际暴击锁定在100以内
if (c_true >=1)
{c_true = 1;}
//计算现在的真实王伤
double b = b_b + 2.5 * (h-i);
//计算期望
nex = (c_true * d + 1 - c_true) * b / 100;
//新期望高于旧期望,刷新记忆系统
if (nex >= oex)
{
oex = nex;
oc = c;
cout << "暴击打" << i << "个孔时伤害不是最高,此时暴击为" << c << "84实际暴击为"<<c_true*100<<"面板王伤为"<<b-100<<endl;
}
else
//新期望低于旧期望,停止循环
{
cout << "暴击打" << i-1 << "个孔时伤害最高,此时暴击为" << oc<< endl;
break;
}
}
}
省流:
用来计算在几乎全角色有了15暴击极大被动后,面板的暴击和狩猎收益的平衡点。

截个我的VS界面没别的意思,就是觉得好看。

计算结果如图,基本看下来结论是目前184需要打到趋于满暴击收益最高。
实战考虑有VI DE这种加暴击的辅助,以及可能鉴定提供的属性没这么多,以及别的冰装给的属性三维没血色这么高,以及可能没用地阵撑动速等等因素,估计平衡点不会在百爆。但是起码能证明,现在收益最高点绝对不是15r满爆位置。
18R的暴击计算公式为:
实际暴击=(面板暴击+递减暴击BUFF)*乘算BUFF连乘+被动非递减暴击-30
其实就是相当于给角色附带了一个扣30暴击的被动。
这个计算方法最早是出现了角色差异,一部分角色无法突破限制,最高暴击只能达到70,一度导致几个做数据的玩家分成了两派,但是现在已经修复了。
有兴趣的话也可以计算一下之前单极大被动职业这次平衡获得一个暴击被动得到了多少提升。顺便希望有些计算平衡收益的玩家不要吧暴击被动、极大化被动、魔法石暴击极大这三者混为一谈,收益真不一样。