大家好,我是夜风入寒轩,在确认国服无法在ICC之前开启的情况下,亚服走起了
目前是个蓝[del]绿[/del]紫弟弟法,以下仅供参考,欢迎讨论,如果自摸带番你非要杠,那就是你对
在TBC时期,我就鸟德的法伤、命中、暴击之间的关系做过一个详细的论证,详见:深入探究法术强度,命中,暴击相关收益
所以每次在讨论属性收益的时候,我们一定要明确一个基础观点:在给定的条件下,伤害与法伤/命中/暴击/急速这四个自变量的函数f(x,y,z)是一个多元多次方程的关系(假设满命中)。
什么意思呢,简单来说就是抛开当前属性谈收益就是耍流氓。你基础秒伤1000的时候,和基础秒伤10000的时候,这个关系是绝对不一样的。
另外一层意思就是,我们常用的1暴击=xx法伤,1急速=xx法伤,是一种比较模糊的表述方式,我在这儿给出比较明确的定义:即在当前属性下,在给定的战斗时间和环境中,提升1暴击属性带来的DPS提升=提升xx法伤带来的DPS提升,也就是意味着,任何属性换算的描述,没有基础属性作为前置,参考性均有待提高。
好了废话说完了进入正题
感谢[@desperadoxzg]的启发,我发现了我的代码bug,已更正数据。
先直奔主题说结论:
在一个3分钟、纯木桩、法系满配、自己P3毕业的条件下,属性收益如下:
1急速≈[del]0.8779法伤[/del]0.9071法伤;
1暴击≈[del]0.8004法伤[/del]0.8826法伤;
1精神≈[del]0.6779法伤[/del]0.7476法伤。
(啊为什么不算命中?别想了堆满就是了)
[collapse=Sims的结果]
对sims的结果我不发表意见,仅作为参考对照放在这里,相关参数是按照我的假设调整的。[/collapse]
也就是说:
[size=120%]装备每带一个蓝孔,你就把他的奖励[del]-4.32[/del]减去3.5法伤;
每带一个黄孔,你就把他的奖励[del]-2.22[/del]减去1.93法伤;
然后计算下来如果奖励为正,就按颜色插,否则插23法伤。
这也是本文为数不多的实用价值吧。
该属性仅供参考,另还有一些大众接受但目前无数学验证的经验包括但不限于移动战暴击收益增加,战斗时间拉长急速收益增加等等~
一、计算方法
根据前面的一堆废话,我们知道,只要给定了假设条件,模拟战斗流程,模拟个几百万次,不就能知道分布和期望了。
那在这个基础上,我把模拟条件+1法伤/+1暴击/+1急速,不就可以得到这三者的不同收益了吗?
那剩下的不就简单了——模拟嘛。。
二、模拟条件
战斗时间:3分钟(以最后一个技能结束后t>180为判断依据)
天 赋:标准20/51折磨火
装 备:参考WLK折磨火P3阶段装备评分及BIS推荐配装分析,插1颗命中宝石保证满命中,红色23法伤,黄色法伤暴击,蓝色法伤精神,饰品258亡统+天堂
专业技能:工程+裁缝(无三布BUFF)
团队BUFF:法系满配,互换专注,恶魔术法伤假设500,无灌注,无德莱尼
其他假设:蓝量充足,纯木桩无其他任何干扰
输出方式:
1、无炸弹dot,触发连击,打炎爆;
2、无炸弹dot,未触发连击,上炸弹;
3、有炸弹dot,触发连击,打炎爆;
4、有炸弹dot,未触发连击,打火球;
5、离战斗结束时间<12,不再上炸弹;
6、起手偷加速预读火球→挂炸弹→开分身→开燃烧+手套+嗜血,读火球进入正常循环;
7、手套好了就开第二次;
8、第三次手套和狂暴以及第二瓶加速等斩杀期触发天堂开启,如战斗时间超过160秒未触发天堂,直接开启;
三、模拟代码
对我计算机二级都没过,我只保证正确性,不保证代码的简洁性
[collapse=我是代码]- Numoftime=10000;
- total=zeros(1,25*Numoftime);
- total10sp=zeros(1,25*Numoftime);
- total10hs=zeros(1,25*Numoftime);
- total10cr=zeros(1,25*Numoftime);
- tnumofhq1=zeros(1,25*Numoftime);
- t10spnumofhq1=zeros(1,25*Numoftime);
- t10hsnumofhq1=zeros(1,25*Numoftime);
- t10crnumofhq1=zeros(1,25*Numoftime);
- tnumofhq2=zeros(1,25*Numoftime);
- t10spnumofhq2=zeros(1,25*Numoftime);
- t10hsnumofhq2=zeros(1,25*Numoftime);
- t10crnumofhq2=zeros(1,25*Numoftime);
- tnumofyb1=zeros(1,25*Numoftime);
- t10spnumofyb1=zeros(1,25*Numoftime);
- t10hsnumofyb1=zeros(1,25*Numoftime);
- t10crnumofyb1=zeros(1,25*Numoftime);
- tnumofyb2=zeros(1,25*Numoftime);
- t10spnumofyb2=zeros(1,25*Numoftime);
- t10hsnumofyb2=zeros(1,25*Numoftime);
- t10crnumofyb2=zeros(1,25*Numoftime);
- tnumofzd1=zeros(1,25*Numoftime);
- t10spnumofzd1=zeros(1,25*Numoftime);
- t10hsnumofzd1=zeros(1,25*Numoftime);
- t10crnumofzd1=zeros(1,25*Numoftime);
- tnumofzd2=zeros(1,25*Numoftime);
- t10spnumofzd2=zeros(1,25*Numoftime);
- t10hsnumofzd2=zeros(1,25*Numoftime);
- t10crnumofzd2=zeros(1,25*Numoftime);
- for j=1:100*Numoftime
- if j<=25*Numoftime
- Sp=3616;%团队下最终法伤
- Haste=0.2942;%团队下最终急速1.5/
- Crit=0.7028;%团队下最终暴击
- end
- if j>25*Numoftime
- if j<=50*Numoftime
- Sp=3616+10;%团队下最终法伤
- Haste=0.2942;%团队下最终急速
- Crit=0.7028;%团队下最终暴击
- end
- end
- if j>50*Numoftime
- if j<=75*Numoftime
- Sp=3616;%团队下最终法伤
- Haste=0.2942+10/3279;%团队下最终急速
- Crit=0.7028;%团队下最终暴击
- end
- end
- if j>75*Numoftime
- if j<=100*Numoftime
- Sp=3616;%团队下最终法伤
- Haste=0.2942;%团队下最终急速
- Crit=0.7028+10/4591;%团队下最终暴击
- end
- end
- T=240;%战斗时间
- t0=0.00;%起始时间
- %基础属性
- Hit=1;
- %起始值
- %统计的2为暴击,主程序的2为斩杀,备注区别
- numofhq1=0;%火球技能数量
- numofhq2=0;%火球技能数量(暴击)
- numofyb1=0;%炎爆技能数量
- numofyb2=0;%炎爆技能数量(暴击)
- numofzd1=0;%活动炸弹技能数量
- numofzd2=0;%活动炸弹技能数量(暴击)
- Damage=0;%总伤害
- Dfs=18001;%镜像伤害
- Rhaste=Haste;%当前急速
- Rsp=Sp;%当前法强
- Rcrit=Crit;%当前暴击
- t=t0;%当前时间
- fslj=0;%法术连击
- %爆发技能
- %嗜血:1次,持续时间40秒,35%急速
- %饰品1:168法强,特效3分钟约4W8伤害
- %饰品2:135暴击,触发959法强,持续时间10秒,内置CD45s,触发率10%
- %狂暴:CD120秒,持续时间10秒,急速+20%
- %手套:CD60秒,持续12秒,急速+340
- %披风:触发295法强,持续15秒,内置CD60s,触发率20%
- %加速:500急速,持续15秒
- %狂野:200法强,200暴击,持续15秒
- %2T9:火甲基础暴击提升
- %4T9:火球术5暴击
- buff00=-360;%嗜血持续时间
- buff1=-360;%起手偷加速持续时间
- buff12=-360;%第二瓶加速持续时间
- buff2=0;%触发饰品CD
- buff22=-360;%触发饰品持续时间
- buff3=0;%亮纹刺绣CD
- buff33=-360;%亮纹刺绣持续时间
- buff7=-360;%狂暴CD
- buff77=-360;%狂暴持续时间
- buff8=-360;%手套CD
- buff88=-360;%手套持续时间
- tofzd=-360;%炸弹持续时间
- numofrs=-360;%燃烧层数
- for i=1:240
- %起手偷速度药水13秒
- if i==1
- Rhaste=Haste+500/32.79/100;
- buff1=0;%起手药水持续时间
- end
- if buff1>12
- buff1=-360;
- Rhaste=((1+Rhaste)/1.3-500/32.79/100)*1.3-1;%嗜血期间第一瓶速度药水
- end
-
- %一键爆发及BUFF消失
- if i==4
- Rhaste=(1+Rhaste+340/32.79/100)*1.3-1;
- buff00=0;
- buff88=0;
- buff8=-60;
- numofrs=3;
- Rcrit=Rcrit+0.1;
- if Rcrit>1
- Rcrit=1;
- end
- end
-
- if numofrs>0
- Rcrit=Rcrit+0.1;
- else
- if numofrs==0
- Rcrit=Crit;
- end
- end
- if buff77>10
- buff77=-360;
- Rhaste=(1+Rhaste)/1.2-1;
- end
- if buff88>12
- buff88=-360;
- if buff00>0
- if buff77>0
- Rhaste=((1+Rhaste)/1.3/1.2-340/32.79/100)*1.2*1.3-1;
- else
- Rhaste=((1+Rhaste)/1.3-340/32.79/100)*1.3-1;
- end
- else
- if buff77>0
- Rhaste=((1+Rhaste)/1.2-340/32.79/100)*1.2-1;
- else
- Rhaste=Rhaste-340/32.79/100;
- end
- end
- end
- if buff00>40
- buff00=-360;
- Rhaste=(1+Rhaste)/1.3-1;
- end
-
- %第二轮爆发(斩杀期带狂暴速度药水)
- if t>117 %第一波手套4秒后开,第二波手套好了就开,第三波等斩杀开(假设117秒进斩)
- if buff2>0 %天堂触发
- if buff8>0 %手套冷却好
- Rhaste=(1+Rhaste+840/32.79/100)*1.2-1;
- buff12=0;
- buff77=0;
- buff7=-180;
- buff88=0;
- buff8=-60;
- numofrs=3;
- Rcrit=Rcrit+0.1;
- if Rcrit>1
- Rcrit=1;
- end
- end
- else
- if t>160 %天堂未触发,最后15秒战斗,开手套+狂暴
- if buff8>0
- Rhaste=(1+Rhaste+840/32.79/100)*1.2-1;
- buff12=0;
- buff77=0;
- buff7=-180;
- buff88=0;
- buff8=-60;
- numofrs=3;
- Rcrit=Rcrit+0.1;
- if Rcrit>1
- Rcrit=1;
- end
- end
- end
- end
- end
-
- if t>60
- if t<117
- if buff8>0
- Rhaste=Rhaste+340/32.79/100;
- buff88=0;
- buff8=-60;
- end
- end
- end
-
- %第二瓶加速药水消失
- if buff12>15
- buff12=-360;
- Rhaste=Rhaste-500/32.79/100;
- end
- %施法时间
- Ctofhq=2.85/(1+Rhaste);%火球施法时间
- Ctofgcd=1.5/(1+Rhaste);%GCD
- if Ctofhq<1
- Ctofhq=1;
- end
- if Ctofgcd<1
- Ctofgcd=1;
- end
-
- %技能伤害
- Dhq1=(randi([888,1132])+Rsp+0.15*Rsp)*1.06*1.12*1.03*1.1;
- Dhq2=(randi([888,1132])+Rsp+0.15*Rsp)*1.06*1.12*1.03*1.1*1.12; %斩杀期
- Dyb1=(randi([1190,1510])+1.15*Rsp+0.15*Rsp)*1.12*1.03*1.1;
- Dyb2=(randi([1190,1510])+1.15*Rsp+0.15*Rsp)*1.12*1.03*1.1*1.12;
- Dzddot1=(1380+Rsp*12/15)*1.03*1.1;
- Dzddot2=(1380+Rsp*12/15)*1.03*1.1*1.12;
- Dzd1=(690+Rsp*0.4)*1.03*1.1; %变强反馈系数0.4
- Dzd2=(690+Rsp*0.4)*1.03*1.1*1.12;
-
- %判断暴击
- cr=rand();
- if cr<Rcrit+0.08
- Dhq1=Dhq1*1.8175*1.4;
- Dhq2=Dhq2*1.8175*1.4;
- end
- if cr<Rcrit+0.06
- Dyb1=Dyb1*1.8175*1.4;
- Dyb2=Dyb2*1.8175*1.4;
- Dzddot1=Dzddot1*1.8175*1.4;
- Dzddot2=Dzddot2*1.8175*1.4;
- Dzd1=Dzd1*1.8175*1.4;
- Dzd2=Dzd2*1.8175*1.4;
- end
-
- %出伤
- %起手
- if i==1
- Damage=Damage+Dhq1;
- if cr<Rcrit+0.08
- numofhq2=numofhq2+1;
- else
- numofhq1=numofhq1+1;
- end
- if cr<Rcrit+0.08
- fslj=fslj+1;
- else
- fslj=0;
- end
- t=1;
-
- %判断被动饰品
- if buff2==0 %被动饰品冷却好了
- if rand()<0.1
- buff2=-45;
- buff22=0;
- Rsp=Rsp+959;
- end
- end
- if buff2<0 %被动饰品冷却中
- buff2=buff2+Ctofgcd;
- else
- buff2=0;%被动饰品冷却好了
- end
- if buff22>10 %被动饰品持续时间结束
- buff22=-360;
- Rsp=Rsp-959;
- else
- if buff22>-1
- buff22=buff22+Ctofgcd;
- end
- end
- %判断被动饰品
-
- %判断亮纹刺绣
- if buff3==0 %亮纹刺绣冷却好了
- if rand()<0.67232
- buff3=-60;
- buff33=0;
- Rsp=Rsp+295;
- end
- end
- if buff3<0 %亮纹刺绣冷却中
- buff3=buff3+Ctofgcd;
- else
- buff3=0;%亮纹刺绣冷却好了
- end
- if buff33>15 %亮纹刺绣持续时间结束
- buff33=-1;
- Rsp=Rsp-295;
- else
- if buff33>-1
- buff33=buff33+Ctofgcd;
- end
- end
- %判断亮纹刺绣
- end
-
- if i==2
- Damage=Damage+Dzddot1;
- if cr<Rcrit+0.06
- numofzd2=numofzd2+1;
- else
- numofzd1=numofzd1+1;
- end
- tofzd=Ctofgcd;
- t=t+Ctofgcd;
- %判断被动饰品
- if buff2==0 %被动饰品冷却好了
- if rand()<0.1
- buff2=-45;
- buff22=0;
- Rsp=Rsp+959;
- end
- end
- if buff2<0 %被动饰品冷却中
- buff2=buff2+Ctofgcd;
- else
- buff2=0;%被动饰品冷却好了
- end
- if buff22>10 %被动饰品持续时间结束
- buff22=-360;
- Rsp=Rsp-959;
- else
- if buff22>-1
- buff22=buff22+Ctofgcd;
- end
- end
- %判断被动饰品
-
- %判断亮纹刺绣
- if buff3==0 %亮纹刺绣冷却好了
- if rand()<0.67232
- buff3=-60;
- buff33=0;
- Rsp=Rsp+295;
- end
- end
- if buff3<0 %亮纹刺绣冷却中
- buff3=buff3+Ctofgcd;
- else
- buff3=0;%亮纹刺绣冷却好了
- end
- if buff33>15 %亮纹刺绣持续时间结束
- buff33=-1;
- Rsp=Rsp-295;
- else
- if buff33>-1
- buff33=buff33+Ctofgcd;
- end
- end
- %判断亮纹刺绣
- end
-
- if i==3
- Damage=Damage+Dfs;
- tofzd=tofzd+Ctofgcd;
- t=t+Ctofgcd;
- %判断被动饰品
- if buff2==0 %被动饰品冷却好了
- if rand()<0.1
- buff2=-45;
- buff22=0;
- Rsp=Rsp+959;
- end
- end
- if buff2<0 %被动饰品冷却中
- buff2=buff2+Ctofgcd;
- else
- buff2=0;%被动饰品冷却好了
- end
- if buff22>10 %被动饰品持续时间结束
- buff22=-360;
- Rsp=Rsp-959;
- else
- if buff22>-1
- buff22=buff22+Ctofgcd;
- end
- end
- %判断被动饰品
-
- %判断亮纹刺绣
- if buff3==0 %亮纹刺绣冷却好了
- if rand()<0.67232
- buff3=-60;
- buff33=0;
- Rsp=Rsp+295;
- end
- end
- if buff3<0 %亮纹刺绣冷却中
- buff3=buff3+Ctofgcd;
- else
- buff3=0;%亮纹刺绣冷却好了
- end
- if buff33>15 %亮纹刺绣持续时间结束
- buff33=-1;
- Rsp=Rsp-295;
- else
- if buff33>-1
- buff33=buff33+Ctofgcd;
- end
- end
- %判断亮纹刺绣
- end
-
- if i==4
- Damage=Damage+Dhq1;
- if cr<Rcrit+0.08
- numofhq2=numofhq2+1;
- else
- numofhq1=numofhq1+1;
- end
- if cr<Rcrit+0.08
- fslj=fslj+1;
- else
- fslj=0;
- end
- tofzd=tofzd+Ctofhq;
- t=t+Ctofhq;
- %判断被动饰品
- if buff2==0 %被动饰品冷却好了
- if rand()<0.1
- buff2=-45;
- buff22=0;
- Rsp=Rsp+959;
- end
- end
- if buff2<0 %被动饰品冷却中
- buff2=buff2+Ctofgcd;
- else
- buff2=0;%被动饰品冷却好了
- end
- if buff22>10 %被动饰品持续时间结束
- buff22=-360;
- Rsp=Rsp-959;
- else
- if buff22>-1
- buff22=buff22+Ctofgcd;
- end
- end
- %判断被动饰品
-
- %判断亮纹刺绣
- if buff3==0 %亮纹刺绣冷却好了
- if rand()<0.67232
- buff3=-60;
- buff33=0;
- Rsp=Rsp+295;
- end
- end
- if buff3<0 %亮纹刺绣冷却中
- buff3=buff3+Ctofgcd;
- else
- buff3=0;%亮纹刺绣冷却好了
- end
- if buff33>15 %亮纹刺绣持续时间结束
- buff33=-1;
- Rsp=Rsp-295;
- else
- if buff33>-1
- buff33=buff33+Ctofgcd;
- end
- end
- %判断亮纹刺绣
- end
-
- %常规输出
- if i>4
- if tofzd>12;
- if t<117
- Damage=Damage+Dzd1;%(1)炸弹CD好了,伤害+炸弹爆炸伤害
- %判断燃烧
- if cr<Rcrit+0.06
- numofrs=numofrs-1;
- end
- %判断燃烧
- else
- Damage=Damage+Dzd2;%(1)炸弹CD好了,伤害+炸弹爆炸伤害(斩杀)
- %判断燃烧
- if cr<Rcrit+0.06
- numofrs=numofrs-1;
- end
- %判断燃烧
- end
- %法术连击
- if cr<Rcrit+0.06
- fslj=fslj+1;
- else
- fslj=0;
- end
- tofzd=0;
- end
- if tofzd==0
- if fslj>=2
- if t<117
- Damage=Damage+Dyb1;%(2)炸弹CD好了,触发连击,伤害+炎爆伤害
- if cr<Rcrit+0.06
- numofyb2=numofyb2+1;
- else
- numofyb1=numofyb1+1;
- end
- %判断燃烧
- if cr<Rcrit+0.06
- numofrs=numofrs-1;
- end
- %判断燃烧
- t=t+Ctofgcd;
- buff1=buff1+Ctofgcd;%加速药水时间
- buff12=buff12+Ctofgcd;%加速药水2时间
- buff77=buff77+Ctofgcd;%狂暴持续时间
- buff7=buff7+Ctofgcd;%暴冷却时间
- buff88=buff88+Ctofgcd;%手套持续时间
- buff8=buff8+Ctofgcd;%手套冷却时间
- buff00=buff00+Ctofgcd;%嗜血时间
- fslj=fslj-2;
-
- %判断被动饰品
- if buff2==0 %被动饰品冷却好了
- if rand()<0.1
- buff2=-45;
- buff22=0;
- Rsp=Rsp+959;
- end
- end
- if buff2<0 %被动饰品冷却中
- buff2=buff2+Ctofgcd;
- else
- buff2=0;%被动饰品冷却好了
- end
- if buff22>10 %被动饰品持续时间结束
- buff22=-360;
- Rsp=Rsp-959;
- else
- if buff22>-1
- buff22=buff22+Ctofgcd;
- end
- end
- %判断被动饰品
-
- %判断亮纹刺绣
- if buff3==0 %亮纹刺绣冷却好了
- if rand()<0.67232
- buff3=-60;
- buff33=0;
- Rsp=Rsp+295;
- end
- end
- if buff3<0 %亮纹刺绣冷却中
- buff3=buff3+Ctofgcd;
- else
- buff3=0;%亮纹刺绣冷却好了
- end
- if buff33>15 %亮纹刺绣持续时间结束
- buff33=-1;
- Rsp=Rsp-295;
- else
- if buff33>-1
- buff33=buff33+Ctofgcd;
- end
- end
- %判断亮纹刺绣
-
- else
- Damage=Damage+Dyb2;%(2)炸弹CD好了,触发连击,伤害+炎爆伤害(斩杀)
- if cr<Rcrit+0.06
- numofyb2=numofyb2+1;
- else
- numofyb1=numofyb1+1;
- end
- %判断燃烧
- if cr<Rcrit+0.06
- numofrs=numofrs-1;
- end
- %判断燃烧
- t=t+Ctofgcd;
- buff1=buff1+Ctofgcd;%加速药水时间
- buff12=buff12+Ctofgcd;%加速药水2时间
- buff77=buff77+Ctofgcd;%狂暴持续时间
- buff7=buff7+Ctofgcd;%暴冷却时间
- buff88=buff88+Ctofgcd;%手套持续时间
- buff8=buff8+Ctofgcd;%手套冷却时间
- buff00=buff00+Ctofgcd;%嗜血时间
- fslj=fslj-2;
-
- %判断被动饰品
- if buff2==0 %被动饰品冷却好了
- if rand()<0.1
- buff2=-45;
- buff22=0;
- Rsp=Rsp+959;
- end
- end
- if buff2<0 %被动饰品冷却中
- buff2=buff2+Ctofgcd;
- else
- buff2=0;%被动饰品冷却好了
- end
- if buff22>10 %被动饰品持续时间结束
- buff22=-360;
- Rsp=Rsp-959;
- else
- if buff22>-1
- buff22=buff22+Ctofgcd;
- end
- end
- %判断被动饰品
-
- %判断亮纹刺绣
- if buff3==0 %亮纹刺绣冷却好了
- if rand()<0.67232
- buff3=-60;
- buff33=0;
- Rsp=Rsp+295;
- end
- end
- if buff3<0 %亮纹刺绣冷却中
- buff3=buff3+Ctofgcd;
- else
- buff3=0;%亮纹刺绣冷却好了
- end
- if buff33>15 %亮纹刺绣持续时间结束
- buff33=-1;
- Rsp=Rsp-295;
- else
- if buff33>-1
- buff33=buff33+Ctofgcd;
- end
- end
- %判断亮纹刺绣
-
- end
- else
- if t<168
- if t<117
- Damage=Damage+Dzddot1;%(3)炸弹CD好了,未触发连击,伤害+炸弹dot伤害
- if cr<Rcrit+0.06
- numofzd2=numofzd2+1;
- else
- numofzd1=numofzd1+1;
- end
- t=t+Ctofgcd;
- tofzd=Ctofgcd;
- buff1=buff1+Ctofgcd;%加速药水时间
- buff12=buff12+Ctofgcd;%加速药水2时间
- buff77=buff77+Ctofgcd;%狂暴持续时间
- buff7=buff7+Ctofgcd;%暴冷却时间
- buff88=buff88+Ctofgcd;%手套持续时间
- buff8=buff8+Ctofgcd;%手套冷却时间
- buff00=buff00+Ctofgcd;%嗜血时间
-
- %判断被动饰品
- if buff2==0 %被动饰品冷却好了
- if rand()<0.1
- buff2=-45;
- buff22=0;
- Rsp=Rsp+959;
- end
- end
- if buff2<0 %被动饰品冷却中
- buff2=buff2+Ctofgcd;
- else
- buff2=0;%被动饰品冷却好了
- end
- if buff22>10 %被动饰品持续时间结束
- buff22=-360;
- Rsp=Rsp-959;
- else
- if buff22>-1
- buff22=buff22+Ctofgcd;
- end
- end
- %判断被动饰品
-
- %判断亮纹刺绣
- if buff3==0 %亮纹刺绣冷却好了
- if rand()<0.67232
- buff3=-60;
- buff33=0;
- Rsp=Rsp+295;
- end
- end
- if buff3<0 %亮纹刺绣冷却中
- buff3=buff3+Ctofgcd;
- else
- buff3=0;%亮纹刺绣冷却好了
- end
- if buff33>15 %亮纹刺绣持续时间结束
- buff33=-1;
- Rsp=Rsp-295;
- else
- if buff33>-1
- buff33=buff33+Ctofgcd;
- end
- end
- %判断亮纹刺绣
-
- else
- Damage=Damage+Dzddot2;%(3)炸弹CD好了,未触发连击,伤害+炸弹dot伤害(斩杀)
- if cr<Rcrit+0.06
- numofzd2=numofzd2+1;
- else
- numofzd1=numofzd1+1;
- end
- t=t+Ctofgcd;
- tofzd=Ctofgcd;
- buff1=buff1+Ctofgcd;%加速药水时间
- buff12=buff12+Ctofgcd;%加速药水2时间
- buff77=buff77+Ctofgcd;%狂暴持续时间
- buff7=buff7+Ctofgcd;%暴冷却时间
- buff88=buff88+Ctofgcd;%手套持续时间
- buff8=buff8+Ctofgcd;%手套冷却时间
- buff00=buff00+Ctofgcd;%嗜血时间
-
- %判断被动饰品
- if buff2==0 %被动饰品冷却好了
- if rand()<0.1
- buff2=-45;
- buff22=0;
- Rsp=Rsp+959;
- end
- end
- if buff2<0 %被动饰品冷却中
- buff2=buff2+Ctofgcd;
- else
- buff2=0;%被动饰品冷却好了
- end
- if buff22>10 %被动饰品持续时间结束
- buff22=-360;
- Rsp=Rsp-959;
- else
- if buff22>-1
- buff22=buff22+Ctofgcd;
- end
- end
- %判断被动饰品
-
- %判断亮纹刺绣
- if buff3==0 %亮纹刺绣冷却好了
- if rand()<0.67232
- buff3=-60;
- buff33=0;
- Rsp=Rsp+295;
- end
- end
- if buff3<0 %亮纹刺绣冷却中
- buff3=buff3+Ctofgcd;
- else
- buff3=0;%亮纹刺绣冷却好了
- end
- if buff33>15 %亮纹刺绣持续时间结束
- buff33=-1;
- Rsp=Rsp-295;
- else
- if buff33>-1
- buff33=buff33+Ctofgcd;
- end
- end
- %判断亮纹刺绣
-
- end
- else
- Damage=Damage+Dhq2;%(4)炸弹CD好了,未触发连击,剩余时间小于12秒,伤害+火球伤害(斩杀)
- if cr<Rcrit+0.08
- numofhq2=numofhq2+1;
- else
- numofhq1=numofhq1+1;
- end
- %判断燃烧
- if cr<Rcrit+0.08
- numofrs=numofrs-1;
- end
- %判断燃烧
- t=t+Ctofhq;
- tofzd=0;
- tofzd=tofzd+Ctofhq;
- buff1=buff1+Ctofhq;%加速药水时间
- buff12=buff12+Ctofhq;%加速药水2时间
- buff77=buff77+Ctofhq;%狂暴持续时间
- buff7=buff7+Ctofhq;%暴冷却时间
- buff88=buff88+Ctofhq;%手套持续时间
- buff8=buff8+Ctofhq;%手套冷却时间
- buff00=buff00+Ctofhq;%嗜血时间
- if cr<Rcrit+0.08
- fslj=fslj+1;
- else
- fslj=0;
- end
-
- %判断被动饰品
- if buff2==0 %被动饰品冷却好了
- if rand()<0.1
- buff2=-45;
- buff22=0;
- Rsp=Rsp+959;
- end
- end
- if buff2<0 %被动饰品冷却中
- buff2=buff2+Ctofhq;
- else
- buff2=0;%被动饰品冷却好了
- end
- if buff22>10 %被动饰品持续时间结束
- buff22=-360;
- Rsp=Rsp-959;
- else
- if buff22>-1
- buff22=buff22+Ctofhq;
- end
- end
- %判断被动饰品
-
- %判断亮纹刺绣
- if buff3==0 %亮纹刺绣冷却好了
- if rand()<0.67232
- buff3=-60;
- buff33=0;
- Rsp=Rsp+295;
- end
- end
- if buff3<0 %亮纹刺绣冷却中
- buff3=buff3+Ctofhq;
- else
- buff3=0;%亮纹刺绣冷却好了
- end
- if buff33>15 %亮纹刺绣持续时间结束
- buff33=-1;
- Rsp=Rsp-295;
- else
- if buff33>-1
- buff33=buff33+Ctofhq;
- end
- end
- %判断亮纹刺绣
-
- end
- end
- else
- if fslj>=2
- if t<117
- Damage=Damage+Dyb1;%(5)炸弹CD没好,触发连击,伤害+炎爆伤害
- if cr<Rcrit+0.06
- numofyb2=numofyb2+1;
- else
- numofyb1=numofyb1+1;
- end
- %判断燃烧
- if cr<Rcrit+0.06
- numofrs=numofrs-1;
- end
- %判断燃烧
- t=t+Ctofgcd;
- tofzd=tofzd+Ctofgcd;
- buff1=buff1+Ctofgcd;%加速药水时间
- buff12=buff12+Ctofgcd;%加速药水2时间
- buff77=buff77+Ctofgcd;%狂暴持续时间
- buff7=buff7+Ctofgcd;%暴冷却时间
- buff88=buff88+Ctofgcd;%手套持续时间
- buff8=buff8+Ctofgcd;%手套冷却时间
- buff00=buff00+Ctofgcd;%嗜血时间
- fslj=fslj-2;
-
- %判断被动饰品
- if buff2==0 %被动饰品冷却好了
- if rand()<0.1
- buff2=-45;
- buff22=0;
- Rsp=Rsp+959;
- end
- end
- if buff2<0 %被动饰品冷却中
- buff2=buff2+Ctofgcd;
- else
- buff2=0;%被动饰品冷却好了
- end
- if buff22>10 %被动饰品持续时间结束
- buff22=-360;
- Rsp=Rsp-959;
- else
- if buff22>-1
- buff22=buff22+Ctofgcd;
- end
- end
- %判断被动饰品
-
- %判断亮纹刺绣
- if buff3==0 %亮纹刺绣冷却好了
- if rand()<0.67232
- buff3=-60;
- buff33=0;
- Rsp=Rsp+295;
- end
- end
- if buff3<0 %亮纹刺绣冷却中
- buff3=buff3+Ctofgcd;
- else
- buff3=0;%亮纹刺绣冷却好了
- end
- if buff33>15 %亮纹刺绣持续时间结束
- buff33=-1;
- Rsp=Rsp-295;
- else
- if buff33>-1
- buff33=buff33+Ctofgcd;
- end
- end
- %判断亮纹刺绣
-
- else
- Damage=Damage+Dyb2;%(5)炸弹CD没好,触发连击,伤害+炎爆伤害(斩杀)
- if cr<Rcrit+0.06
- numofyb2=numofyb2+1;
- else
- numofyb1=numofyb1+1;
- end
- %判断燃烧
- if cr<Rcrit+0.06
- numofrs=numofrs-1;
- end
- %判断燃烧
- t=t+Ctofgcd;
- tofzd=tofzd+Ctofgcd;
- buff1=buff1+Ctofgcd;%加速药水时间
- buff12=buff12+Ctofgcd;%加速药水2时间
- buff77=buff77+Ctofgcd;%狂暴持续时间
- buff7=buff7+Ctofgcd;%暴冷却时间
- buff88=buff88+Ctofgcd;%手套持续时间
- buff8=buff8+Ctofgcd;%手套冷却时间
- buff00=buff00+Ctofgcd;%嗜血时间
- fslj=fslj-2;
-
- %判断被动饰品
- if buff2==0 %被动饰品冷却好了
- if rand()<0.1
- buff2=-45;
- buff22=0;
- Rsp=Rsp+959;
- end
- end
- if buff2<0 %被动饰品冷却中
- buff2=buff2+Ctofgcd;
- else
- buff2=0;%被动饰品冷却好了
- end
- if buff22>10 %被动饰品持续时间结束
- buff22=-360;
- Rsp=Rsp-959;
- else
- if buff22>-1
- buff22=buff22+Ctofgcd;
- end
- end
- %判断被动饰品
-
- %判断亮纹刺绣
- if buff3==0 %亮纹刺绣冷却好了
- if rand()<0.67232
- buff3=-60;
- buff33=0;
- Rsp=Rsp+295;
- end
- end
- if buff3<0 %亮纹刺绣冷却中
- buff3=buff3+Ctofgcd;
- else
- buff3=0;%亮纹刺绣冷却好了
- end
- if buff33>15 %亮纹刺绣持续时间结束
- buff33=-1;
- Rsp=Rsp-295;
- else
- if buff33>-1
- buff33=buff33+Ctofgcd;
- end
- end
- %判断亮纹刺绣
-
- end
- else
- if t<117
- Damage=Damage+Dhq1;%(6)炸弹CD没好,未触发连击,伤害+火球伤害
- if cr<Rcrit+0.08
- numofhq2=numofhq2+1;
- else
- numofhq1=numofhq1+1;
- end
- if cr<Rcrit+0.08
- numofrs=numofrs-1;
- end
- %判断燃烧
- t=t+Ctofhq;
- tofzd=tofzd+Ctofhq;
- buff1=buff1+Ctofhq;%加速药水时间
- buff12=buff12+Ctofhq;%加速药水2时间
- buff77=buff77+Ctofhq;%狂暴持续时间
- buff7=buff7+Ctofhq;%暴冷却时间
- buff88=buff88+Ctofhq;%手套持续时间
- buff8=buff8+Ctofhq;%手套冷却时间
- buff00=buff00+Ctofhq;%嗜血时间
- if cr<Rcrit+0.08
- fslj=fslj+1;
- else
- fslj=0;
- end
-
- %判断被动饰品
- if buff2==0 %被动饰品冷却好了
- if rand()<0.1
- buff2=-45;
- buff22=0;
- Rsp=Rsp+959;
- end
- end
- if buff2<0 %被动饰品冷却中
- buff2=buff2+Ctofhq;
- else
- buff2=0;%被动饰品冷却好了
- end
- if buff22>10 %被动饰品持续时间结束
- buff22=-360;
- Rsp=Rsp-959;
- else
- if buff22>-1
- buff22=buff22+Ctofhq;
- end
- end
- %判断被动饰品
-
- %判断亮纹刺绣
- if buff3==0 %亮纹刺绣冷却好了
- if rand()<0.67232
- buff3=-60;
- buff33=0;
- Rsp=Rsp+295;
- end
- end
- if buff3<0 %亮纹刺绣冷却中
- buff3=buff3+Ctofhq;
- else
- buff3=0;%亮纹刺绣冷却好了
- end
- if buff33>15 %亮纹刺绣持续时间结束
- buff33=-1;
- Rsp=Rsp-295;
- else
- if buff33>-1
- buff33=buff33+Ctofhq;
- end
- end
- %判断亮纹刺绣
-
- else
- Damage=Damage+Dhq2;%(6)炸弹CD没好,未触发连击,伤害+火球伤害(斩杀)
- if cr<Rcrit+0.08
- numofhq2=numofhq2+1;
- else
- numofhq1=numofhq1+1;
- end
- if cr<Rcrit+0.08
- numofrs=numofrs-1;
- end
- %判断燃烧
- t=t+Ctofhq;
- tofzd=tofzd+Ctofhq;
- buff1=buff1+Ctofhq;%加速药水时间
- buff12=buff12+Ctofhq;%加速药水2时间
- buff77=buff77+Ctofhq;%狂暴持续时间
- buff7=buff7+Ctofhq;%暴冷却时间
- buff88=buff88+Ctofhq;%手套持续时间
- buff8=buff8+Ctofhq;%手套冷却时间
- buff00=buff00+Ctofhq;%嗜血时间
- if cr<Rcrit+0.08
- fslj=fslj+1;
- else
- fslj=0;
- end
-
- %判断被动饰品
- if buff2==0 %被动饰品冷却好了
- if rand()<0.1
- buff2=-45;
- buff22=0;
- Rsp=Rsp+959;
- end
- end
- if buff2<0 %被动饰品冷却中
- buff2=buff2+Ctofhq;
- else
- buff2=0;%被动饰品冷却好了
- end
- if buff22>10 %被动饰品持续时间结束
- buff22=-360;
- Rsp=Rsp-959;
- else
- if buff22>-1
- buff22=buff22+Ctofhq;
- end
- end
- %判断被动饰品
-
- %判断亮纹刺绣
- if buff3==0 %亮纹刺绣冷却好了
- if rand()<0.67232
- buff3=-60;
- buff33=0;
- Rsp=Rsp+295;
- end
- end
- if buff3<0 %亮纹刺绣冷却中
- buff3=buff3+Ctofhq;
- else
- buff3=0;%亮纹刺绣冷却好了
- end
- if buff33>15 %亮纹刺绣持续时间结束
- buff33=-1;
- Rsp=Rsp-295;
- else
- if buff33>-1
- buff33=buff33+Ctofhq;
- end
- end
- %判断亮纹刺绣
-
- end
- end
- end
- end
- if t>182
- break
- end
- end
- dps=Damage*(1+0.032+0.025)/(t-2);%亡统特效:7250(2.5%),炎爆DOT:93300(3.2%),2023年7月20日世界第一HTOC1号数据
- if j<=25*Numoftime
- total(1,j)=dps;
- tnumofhq1(1,j)=numofhq1;
- tnumofhq2(1,j)=numofhq2;
- tnumofyb1(1,j)=numofyb1;
- tnumofyb2(1,j)=numofyb2;
- tnumofzd1(1,j)=numofzd1;
- tnumofzd2(1,j)=numofzd2;
- if j==25*Numoftime
- Averagedps=mean(total);
- Averagenohq1=mean(tnumofhq1);
- Averagenohq2=mean(tnumofhq2);
- Averagenoyb1=mean(tnumofyb1);
- Averagenoyb2=mean(tnumofyb2);
- Averagenozd1=mean(tnumofzd1);
- Averagenozd2=mean(tnumofzd2);
- end
- else
- if j<=50*Numoftime
- total10sp(1,j-25*Numoftime)=dps;
- t10spnumofhq1(1,j-25*Numoftime)=numofhq1;
- t10spnumofhq2(1,j-25*Numoftime)=numofhq2;
- t10spnumofyb1(1,j-25*Numoftime)=numofyb1;
- t10spnumofyb2(1,j-25*Numoftime)=numofyb2;
- t10spnumofzd1(1,j-25*Numoftime)=numofzd1;
- t10spnumofzd2(1,j-25*Numoftime)=numofzd2;
- if j==50*Numoftime
- Averagedps10sp=mean(total10sp);
- Average10spnohq1=mean(t10spnumofhq1);
- Average10spnohq2=mean(t10spnumofhq2);
- Average10spnoyb1=mean(t10spnumofyb1);
- Average10spnoyb2=mean(t10spnumofyb2);
- Average10spnozd1=mean(t10spnumofzd1);
- Average10spnozd2=mean(t10spnumofzd2);
- end
- else
- if j<=75*Numoftime
- total10hs(1,j-50*Numoftime)=dps;
- t10hsnumofhq1(1,j-50*Numoftime)=numofhq1;
- t10hsnumofhq2(1,j-50*Numoftime)=numofhq2;
- t10hsnumofyb1(1,j-50*Numoftime)=numofyb1;
- t10hsnumofyb2(1,j-50*Numoftime)=numofyb2;
- t10hsnumofzd1(1,j-50*Numoftime)=numofzd1;
- t10hsnumofzd2(1,j-50*Numoftime)=numofzd2;
- if j==75*Numoftime
- Averagedps10hs=mean(total10hs);
- Average10hsnohq1=mean(t10hsnumofhq1);
- Average10hsnohq2=mean(t10hsnumofhq2);
- Average10hsnoyb1=mean(t10hsnumofyb1);
- Average10hsnoyb2=mean(t10hsnumofyb2);
- Average10hsnozd1=mean(t10hsnumofzd1);
- Average10hsnozd2=mean(t10hsnumofzd2);
- end
- else
- total10cr(1,j-75*Numoftime)=dps;
- t10crnumofhq1(1,j-75*Numoftime)=numofhq1;
- t10crnumofhq2(1,j-75*Numoftime)=numofhq2;
- t10crnumofyb1(1,j-75*Numoftime)=numofyb1;
- t10crnumofyb2(1,j-75*Numoftime)=numofyb2;
- t10crnumofzd1(1,j-75*Numoftime)=numofzd1;
- t10crnumofzd2(1,j-75*Numoftime)=numofzd2;
- if j==100*Numoftime
- Averagedps10cr=mean(total10cr);
- Average10crnohq1=mean(t10crnumofhq1);
- Average10crnohq2=mean(t10crnumofhq2);
- Average10crnoyb1=mean(t10crnumofyb1);
- Average10crnoyb2=mean(t10crnumofyb2);
- Average10crnozd1=mean(t10crnumofzd1);
- Average10crnozd2=mean(t10crnumofzd2);
- end
- end
- end
- end
- end
- value1=(Averagedps10hs-Averagedps)/(Averagedps10sp-Averagedps);
- value2=(Averagedps10cr-Averagedps)/(Averagedps10sp-Averagedps);
复制代码 [/collapse]
图看起来都差不多,只要知道模拟结果是符合正态分布的就行了
[collapse=我是结果]基础面板下的25万次结果:
+10法伤面板下的25万次结果:
+10急速面板下的25万次结果:
+10暴击面板下的25万次结果:
[/collapse]
四、伤害结构
我们可以看到,这套BIS的配装下,180秒总共大概是70个火球,28个炎爆,13个炸弹,技能数量分别占比63.1%,25.2%,11.7%)
如下图所示,第一行和第二行因为只改变了法伤,所以比例几乎是不变的
第二行增加了10急速,火球占比提高了一点点而炸弹占比降低了一点点,这主要是因为炸弹DOT不吃急速收益,所以一场战斗炸弹的次数其实基本是固定的,但急速增加了火球的数量,变相导致炸弹占比降低,炎爆无变化;
第三行增加了10暴击,火球占比明显下降(虽然我用的“明显”,但其实也就下降0.08%,只有拉到这个精确度才能看出来区别),炎爆占比明显提高,炸弹无变化。
ps.炸弹暴击率小于面板70%感觉还是有点问题,存疑,有空再来debug。
五、误差分析
1、一般收尾用灼烧+火冲更好,未考虑该条件;
2、根据2023年7月20日世界第一法师HTOC1号数据:亡统特效按总伤的2.5%计算,炎爆DOT按总伤的3.2%计算,分身伤害按18001计算;
3、点燃默认全部跳完;
4、未考虑部分抵抗(按照TBC的数据是会降低总伤5%左右);
5、无小括号的情况下先补炸弹再扔炎爆的手法应该更提高一点点炸弹的占比;
6、其他待补充……
六、参考意义
上面说了那么多,有啥意义呢?——嗯,几乎没有实际参考意义。
首先,TOC并没有3分钟的纯木桩环境,ICC应该也只有小萨较为接近这个条件;
其次,多目标,转阶段,各种条件的影响其实很大,比起这个这点暴击急速属性收益的换算带来的效果,在你一共就打十来次TOC的样本量之下,不如你去洗个脸,真的。
那么为什么要讲这么多废话并开这个帖子呢,算是自己挖的坑自己来填完吧,另外也想说明这个命题本身的困难性,要得到严谨的结论是非常困难的,而不是你张嘴就来我感觉~
同时,本文提供了模拟原代码,故可以带入你自己的属性来计算你当前装备下的收益
优势是所有内容我都可以和你解释清楚
劣势嘛,那就太多了,毕竟已经有很成熟的模拟网站了~
另外p3折磨火属性收益参考以及讨论,5.8数值收益算法优化有修正这篇帖子是从另一种方式做的推演,我和楼主也就这个问题一直在交流讨论,如有后续进展,我会更新。 |
1、在门户里发表的文章仅代表作者本人的观点,与本网站立场无关。
2、门户的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进步追究其责任的权利。
|