• 售前

  • 售后

热门帖子
入门百科

[综合] [PVE] 基于模拟计算的法师P3阶段BIS配装下法伤/暴击/急速的收益权重(8.2更新sims对比)

[复制链接]
上是中国十七地 显示全部楼层 发表于 2024-9-5 08:28:42 |阅读模式 打印 上一主题 下一主题
大家好,我是夜风入寒轩,在确认国服无法在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的结果]
1.jpeg

对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=我是代码]
  1. Numoftime=10000;
  2. total=zeros(1,25*Numoftime);
  3. total10sp=zeros(1,25*Numoftime);
  4. total10hs=zeros(1,25*Numoftime);
  5. total10cr=zeros(1,25*Numoftime);
  6. tnumofhq1=zeros(1,25*Numoftime);
  7. t10spnumofhq1=zeros(1,25*Numoftime);
  8. t10hsnumofhq1=zeros(1,25*Numoftime);
  9. t10crnumofhq1=zeros(1,25*Numoftime);
  10. tnumofhq2=zeros(1,25*Numoftime);
  11. t10spnumofhq2=zeros(1,25*Numoftime);
  12. t10hsnumofhq2=zeros(1,25*Numoftime);
  13. t10crnumofhq2=zeros(1,25*Numoftime);
  14. tnumofyb1=zeros(1,25*Numoftime);
  15. t10spnumofyb1=zeros(1,25*Numoftime);
  16. t10hsnumofyb1=zeros(1,25*Numoftime);
  17. t10crnumofyb1=zeros(1,25*Numoftime);
  18. tnumofyb2=zeros(1,25*Numoftime);
  19. t10spnumofyb2=zeros(1,25*Numoftime);
  20. t10hsnumofyb2=zeros(1,25*Numoftime);
  21. t10crnumofyb2=zeros(1,25*Numoftime);
  22. tnumofzd1=zeros(1,25*Numoftime);
  23. t10spnumofzd1=zeros(1,25*Numoftime);
  24. t10hsnumofzd1=zeros(1,25*Numoftime);
  25. t10crnumofzd1=zeros(1,25*Numoftime);
  26. tnumofzd2=zeros(1,25*Numoftime);
  27. t10spnumofzd2=zeros(1,25*Numoftime);
  28. t10hsnumofzd2=zeros(1,25*Numoftime);
  29. t10crnumofzd2=zeros(1,25*Numoftime);
  30. for j=1:100*Numoftime
  31. if j<=25*Numoftime
  32.     Sp=3616;%团队下最终法伤
  33.     Haste=0.2942;%团队下最终急速1.5/
  34.     Crit=0.7028;%团队下最终暴击
  35. end
  36. if j>25*Numoftime
  37.     if j<=50*Numoftime
  38.     Sp=3616+10;%团队下最终法伤
  39.     Haste=0.2942;%团队下最终急速
  40.     Crit=0.7028;%团队下最终暴击
  41.     end
  42. end
  43. if j>50*Numoftime
  44.     if j<=75*Numoftime
  45.     Sp=3616;%团队下最终法伤
  46.     Haste=0.2942+10/3279;%团队下最终急速
  47.     Crit=0.7028;%团队下最终暴击
  48.     end
  49. end
  50. if j>75*Numoftime
  51.     if j<=100*Numoftime
  52.     Sp=3616;%团队下最终法伤
  53.     Haste=0.2942;%团队下最终急速
  54.     Crit=0.7028+10/4591;%团队下最终暴击
  55.     end
  56. end
  57. T=240;%战斗时间
  58. t0=0.00;%起始时间
  59. %基础属性
  60. Hit=1;
  61. %起始值
  62. %统计的2为暴击,主程序的2为斩杀,备注区别
  63. numofhq1=0;%火球技能数量
  64. numofhq2=0;%火球技能数量(暴击)
  65. numofyb1=0;%炎爆技能数量
  66. numofyb2=0;%炎爆技能数量(暴击)
  67. numofzd1=0;%活动炸弹技能数量
  68. numofzd2=0;%活动炸弹技能数量(暴击)
  69. Damage=0;%总伤害
  70. Dfs=18001;%镜像伤害
  71. Rhaste=Haste;%当前急速
  72. Rsp=Sp;%当前法强
  73. Rcrit=Crit;%当前暴击
  74. t=t0;%当前时间
  75. fslj=0;%法术连击
  76. %爆发技能
  77. %嗜血:1次,持续时间40秒,35%急速
  78. %饰品1:168法强,特效3分钟约4W8伤害
  79. %饰品2:135暴击,触发959法强,持续时间10秒,内置CD45s,触发率10%
  80. %狂暴:CD120秒,持续时间10秒,急速+20%
  81. %手套:CD60秒,持续12秒,急速+340
  82. %披风:触发295法强,持续15秒,内置CD60s,触发率20%
  83. %加速:500急速,持续15秒
  84. %狂野:200法强,200暴击,持续15秒
  85. %2T9:火甲基础暴击提升
  86. %4T9:火球术5暴击
  87. buff00=-360;%嗜血持续时间
  88. buff1=-360;%起手偷加速持续时间
  89. buff12=-360;%第二瓶加速持续时间
  90. buff2=0;%触发饰品CD
  91. buff22=-360;%触发饰品持续时间
  92. buff3=0;%亮纹刺绣CD
  93. buff33=-360;%亮纹刺绣持续时间
  94. buff7=-360;%狂暴CD
  95. buff77=-360;%狂暴持续时间
  96. buff8=-360;%手套CD
  97. buff88=-360;%手套持续时间
  98. tofzd=-360;%炸弹持续时间
  99. numofrs=-360;%燃烧层数
  100. for i=1:240
  101.     %起手偷速度药水13秒
  102.     if i==1
  103.         Rhaste=Haste+500/32.79/100;
  104.         buff1=0;%起手药水持续时间
  105.     end
  106.     if buff1>12
  107.         buff1=-360;
  108.         Rhaste=((1+Rhaste)/1.3-500/32.79/100)*1.3-1;%嗜血期间第一瓶速度药水
  109.     end
  110.    
  111.         %一键爆发及BUFF消失
  112.     if i==4
  113.         Rhaste=(1+Rhaste+340/32.79/100)*1.3-1;
  114.         buff00=0;
  115.         buff88=0;
  116.         buff8=-60;
  117.         numofrs=3;
  118.         Rcrit=Rcrit+0.1;
  119.         if Rcrit>1
  120.             Rcrit=1;
  121.         end
  122.     end
  123.    
  124.     if numofrs>0
  125.         Rcrit=Rcrit+0.1;
  126.     else
  127.         if numofrs==0
  128.             Rcrit=Crit;
  129.         end
  130.     end
  131.     if buff77>10
  132.         buff77=-360;
  133.         Rhaste=(1+Rhaste)/1.2-1;
  134.     end
  135.     if buff88>12
  136.         buff88=-360;
  137.             if buff00>0
  138.                 if buff77>0
  139.                     Rhaste=((1+Rhaste)/1.3/1.2-340/32.79/100)*1.2*1.3-1;
  140.                 else
  141.                     Rhaste=((1+Rhaste)/1.3-340/32.79/100)*1.3-1;
  142.                 end
  143.             else
  144.                 if buff77>0
  145.                     Rhaste=((1+Rhaste)/1.2-340/32.79/100)*1.2-1;
  146.                 else
  147.                     Rhaste=Rhaste-340/32.79/100;
  148.                 end
  149.             end
  150.     end
  151.     if buff00>40
  152.         buff00=-360;
  153.         Rhaste=(1+Rhaste)/1.3-1;
  154.     end
  155.    
  156.     %第二轮爆发(斩杀期带狂暴速度药水)
  157.     if t>117   %第一波手套4秒后开,第二波手套好了就开,第三波等斩杀开(假设117秒进斩)
  158.         if buff2>0  %天堂触发
  159.             if buff8>0  %手套冷却好
  160.                 Rhaste=(1+Rhaste+840/32.79/100)*1.2-1;
  161.                 buff12=0;
  162.                 buff77=0;
  163.                 buff7=-180;
  164.                 buff88=0;
  165.                 buff8=-60;
  166.                 numofrs=3;
  167.                 Rcrit=Rcrit+0.1;
  168.                 if Rcrit>1
  169.                     Rcrit=1;
  170.                 end
  171.             end
  172.         else
  173.             if t>160 %天堂未触发,最后15秒战斗,开手套+狂暴
  174.                 if buff8>0
  175.                     Rhaste=(1+Rhaste+840/32.79/100)*1.2-1;
  176.                     buff12=0;
  177.                     buff77=0;
  178.                     buff7=-180;
  179.                     buff88=0;
  180.                     buff8=-60;
  181.                     numofrs=3;
  182.                     Rcrit=Rcrit+0.1;
  183.                     if Rcrit>1
  184.                         Rcrit=1;
  185.                     end
  186.                 end
  187.             end
  188.         end
  189.     end
  190.         
  191.     if t>60
  192.         if t<117
  193.             if buff8>0
  194.                 Rhaste=Rhaste+340/32.79/100;
  195.                 buff88=0;
  196.                 buff8=-60;
  197.             end
  198.         end
  199.     end
  200.    
  201.     %第二瓶加速药水消失
  202.     if buff12>15
  203.         buff12=-360;
  204.         Rhaste=Rhaste-500/32.79/100;
  205.     end
  206.     %施法时间   
  207.     Ctofhq=2.85/(1+Rhaste);%火球施法时间
  208.     Ctofgcd=1.5/(1+Rhaste);%GCD
  209.     if Ctofhq<1
  210.         Ctofhq=1;
  211.     end
  212.     if Ctofgcd<1
  213.         Ctofgcd=1;
  214.     end
  215.    
  216.     %技能伤害
  217.     Dhq1=(randi([888,1132])+Rsp+0.15*Rsp)*1.06*1.12*1.03*1.1;
  218.     Dhq2=(randi([888,1132])+Rsp+0.15*Rsp)*1.06*1.12*1.03*1.1*1.12; %斩杀期
  219.     Dyb1=(randi([1190,1510])+1.15*Rsp+0.15*Rsp)*1.12*1.03*1.1;
  220.     Dyb2=(randi([1190,1510])+1.15*Rsp+0.15*Rsp)*1.12*1.03*1.1*1.12;
  221.     Dzddot1=(1380+Rsp*12/15)*1.03*1.1;
  222.     Dzddot2=(1380+Rsp*12/15)*1.03*1.1*1.12;
  223.     Dzd1=(690+Rsp*0.4)*1.03*1.1;         %变强反馈系数0.4
  224.     Dzd2=(690+Rsp*0.4)*1.03*1.1*1.12;
  225.    
  226.     %判断暴击
  227.     cr=rand();
  228.     if cr<Rcrit+0.08
  229.     Dhq1=Dhq1*1.8175*1.4;
  230.     Dhq2=Dhq2*1.8175*1.4;
  231.     end
  232.     if cr<Rcrit+0.06
  233.     Dyb1=Dyb1*1.8175*1.4;
  234.     Dyb2=Dyb2*1.8175*1.4;
  235.     Dzddot1=Dzddot1*1.8175*1.4;
  236.     Dzddot2=Dzddot2*1.8175*1.4;
  237.     Dzd1=Dzd1*1.8175*1.4;
  238.     Dzd2=Dzd2*1.8175*1.4;
  239.     end
  240.    
  241.     %出伤
  242.     %起手
  243.     if i==1
  244.         Damage=Damage+Dhq1;
  245.         if cr<Rcrit+0.08
  246.             numofhq2=numofhq2+1;
  247.         else
  248.             numofhq1=numofhq1+1;
  249.         end
  250.         if cr<Rcrit+0.08
  251.             fslj=fslj+1;
  252.         else
  253.             fslj=0;
  254.         end
  255.         t=1;
  256.         
  257.         %判断被动饰品
  258.             if buff2==0 %被动饰品冷却好了
  259.                 if rand()<0.1
  260.                     buff2=-45;
  261.                     buff22=0;
  262.                     Rsp=Rsp+959;
  263.                 end
  264.             end
  265.             if buff2<0 %被动饰品冷却中
  266.                 buff2=buff2+Ctofgcd;
  267.             else
  268.                 buff2=0;%被动饰品冷却好了
  269.             end
  270.             if buff22>10 %被动饰品持续时间结束
  271.                 buff22=-360;
  272.                 Rsp=Rsp-959;
  273.             else
  274.                 if buff22>-1
  275.                     buff22=buff22+Ctofgcd;
  276.                 end
  277.             end
  278.             %判断被动饰品
  279.             
  280.              %判断亮纹刺绣
  281.             if buff3==0 %亮纹刺绣冷却好了
  282.                 if rand()<0.67232
  283.                     buff3=-60;
  284.                     buff33=0;
  285.                     Rsp=Rsp+295;
  286.                 end
  287.             end
  288.             if buff3<0 %亮纹刺绣冷却中
  289.                 buff3=buff3+Ctofgcd;
  290.             else
  291.                 buff3=0;%亮纹刺绣冷却好了
  292.             end
  293.             if buff33>15 %亮纹刺绣持续时间结束
  294.                 buff33=-1;
  295.                 Rsp=Rsp-295;
  296.             else
  297.                 if buff33>-1
  298.                     buff33=buff33+Ctofgcd;
  299.                 end
  300.             end
  301.             %判断亮纹刺绣
  302.     end
  303.    
  304.     if i==2
  305.         Damage=Damage+Dzddot1;
  306.         if cr<Rcrit+0.06
  307.             numofzd2=numofzd2+1;
  308.         else
  309.             numofzd1=numofzd1+1;
  310.         end
  311.         tofzd=Ctofgcd;
  312.         t=t+Ctofgcd;
  313.         %判断被动饰品
  314.             if buff2==0 %被动饰品冷却好了
  315.                 if rand()<0.1
  316.                     buff2=-45;
  317.                     buff22=0;
  318.                     Rsp=Rsp+959;
  319.                 end
  320.             end
  321.             if buff2<0 %被动饰品冷却中
  322.                 buff2=buff2+Ctofgcd;
  323.             else
  324.                 buff2=0;%被动饰品冷却好了
  325.             end
  326.             if buff22>10 %被动饰品持续时间结束
  327.                 buff22=-360;
  328.                 Rsp=Rsp-959;
  329.             else
  330.                 if buff22>-1
  331.                     buff22=buff22+Ctofgcd;
  332.                 end
  333.             end
  334.             %判断被动饰品
  335.             
  336.              %判断亮纹刺绣
  337.             if buff3==0 %亮纹刺绣冷却好了
  338.                 if rand()<0.67232
  339.                     buff3=-60;
  340.                     buff33=0;
  341.                     Rsp=Rsp+295;
  342.                 end
  343.             end
  344.             if buff3<0 %亮纹刺绣冷却中
  345.                 buff3=buff3+Ctofgcd;
  346.             else
  347.                 buff3=0;%亮纹刺绣冷却好了
  348.             end
  349.             if buff33>15 %亮纹刺绣持续时间结束
  350.                 buff33=-1;
  351.                 Rsp=Rsp-295;
  352.             else
  353.                 if buff33>-1
  354.                     buff33=buff33+Ctofgcd;
  355.                 end
  356.             end
  357.             %判断亮纹刺绣
  358.     end
  359.    
  360.     if i==3
  361.         Damage=Damage+Dfs;
  362.         tofzd=tofzd+Ctofgcd;
  363.         t=t+Ctofgcd;
  364.         %判断被动饰品
  365.             if buff2==0 %被动饰品冷却好了
  366.                 if rand()<0.1
  367.                     buff2=-45;
  368.                     buff22=0;
  369.                     Rsp=Rsp+959;
  370.                 end
  371.             end
  372.             if buff2<0 %被动饰品冷却中
  373.                 buff2=buff2+Ctofgcd;
  374.             else
  375.                 buff2=0;%被动饰品冷却好了
  376.             end
  377.             if buff22>10 %被动饰品持续时间结束
  378.                 buff22=-360;
  379.                 Rsp=Rsp-959;
  380.             else
  381.                 if buff22>-1
  382.                     buff22=buff22+Ctofgcd;
  383.                 end
  384.             end
  385.             %判断被动饰品
  386.             
  387.              %判断亮纹刺绣
  388.             if buff3==0 %亮纹刺绣冷却好了
  389.                 if rand()<0.67232
  390.                     buff3=-60;
  391.                     buff33=0;
  392.                     Rsp=Rsp+295;
  393.                 end
  394.             end
  395.             if buff3<0 %亮纹刺绣冷却中
  396.                 buff3=buff3+Ctofgcd;
  397.             else
  398.                 buff3=0;%亮纹刺绣冷却好了
  399.             end
  400.             if buff33>15 %亮纹刺绣持续时间结束
  401.                 buff33=-1;
  402.                 Rsp=Rsp-295;
  403.             else
  404.                 if buff33>-1
  405.                     buff33=buff33+Ctofgcd;
  406.                 end
  407.             end
  408.             %判断亮纹刺绣
  409.     end
  410.    
  411.     if i==4
  412.         Damage=Damage+Dhq1;
  413.         if cr<Rcrit+0.08
  414.             numofhq2=numofhq2+1;
  415.         else
  416.             numofhq1=numofhq1+1;
  417.         end
  418.         if cr<Rcrit+0.08
  419.             fslj=fslj+1;
  420.         else
  421.             fslj=0;
  422.         end
  423.         tofzd=tofzd+Ctofhq;
  424.         t=t+Ctofhq;
  425.         %判断被动饰品
  426.             if buff2==0 %被动饰品冷却好了
  427.                 if rand()<0.1
  428.                     buff2=-45;
  429.                     buff22=0;
  430.                     Rsp=Rsp+959;
  431.                 end
  432.             end
  433.             if buff2<0 %被动饰品冷却中
  434.                 buff2=buff2+Ctofgcd;
  435.             else
  436.                 buff2=0;%被动饰品冷却好了
  437.             end
  438.             if buff22>10 %被动饰品持续时间结束
  439.                 buff22=-360;
  440.                 Rsp=Rsp-959;
  441.             else
  442.                 if buff22>-1
  443.                     buff22=buff22+Ctofgcd;
  444.                 end
  445.             end
  446.             %判断被动饰品
  447.             
  448.              %判断亮纹刺绣
  449.             if buff3==0 %亮纹刺绣冷却好了
  450.                 if rand()<0.67232
  451.                     buff3=-60;
  452.                     buff33=0;
  453.                     Rsp=Rsp+295;
  454.                 end
  455.             end
  456.             if buff3<0 %亮纹刺绣冷却中
  457.                 buff3=buff3+Ctofgcd;
  458.             else
  459.                 buff3=0;%亮纹刺绣冷却好了
  460.             end
  461.             if buff33>15 %亮纹刺绣持续时间结束
  462.                 buff33=-1;
  463.                 Rsp=Rsp-295;
  464.             else
  465.                 if buff33>-1
  466.                     buff33=buff33+Ctofgcd;
  467.                 end
  468.             end
  469.             %判断亮纹刺绣
  470.     end
  471.    
  472.     %常规输出
  473.     if i>4
  474.     if tofzd>12;
  475.         if t<117
  476.             Damage=Damage+Dzd1;%(1)炸弹CD好了,伤害+炸弹爆炸伤害
  477.             %判断燃烧
  478.             if cr<Rcrit+0.06
  479.                 numofrs=numofrs-1;
  480.             end
  481.             %判断燃烧
  482.         else
  483.             Damage=Damage+Dzd2;%(1)炸弹CD好了,伤害+炸弹爆炸伤害(斩杀)
  484.             %判断燃烧
  485.             if cr<Rcrit+0.06
  486.                 numofrs=numofrs-1;
  487.             end
  488.             %判断燃烧
  489.         end
  490.         %法术连击
  491.         if cr<Rcrit+0.06
  492.             fslj=fslj+1;
  493.         else
  494.             fslj=0;
  495.         end
  496.         tofzd=0;
  497.     end
  498.     if tofzd==0
  499.         if fslj>=2
  500.             if t<117
  501.                 Damage=Damage+Dyb1;%(2)炸弹CD好了,触发连击,伤害+炎爆伤害
  502.                 if cr<Rcrit+0.06
  503.                     numofyb2=numofyb2+1;
  504.                 else
  505.                     numofyb1=numofyb1+1;
  506.                 end
  507.                 %判断燃烧
  508.                 if cr<Rcrit+0.06
  509.                     numofrs=numofrs-1;
  510.                 end
  511.                 %判断燃烧
  512.                 t=t+Ctofgcd;
  513.                 buff1=buff1+Ctofgcd;%加速药水时间
  514.                 buff12=buff12+Ctofgcd;%加速药水2时间
  515.                 buff77=buff77+Ctofgcd;%狂暴持续时间
  516.                 buff7=buff7+Ctofgcd;%暴冷却时间
  517.                 buff88=buff88+Ctofgcd;%手套持续时间
  518.                 buff8=buff8+Ctofgcd;%手套冷却时间
  519.                 buff00=buff00+Ctofgcd;%嗜血时间
  520.                 fslj=fslj-2;
  521.                         
  522.             %判断被动饰品
  523.             if buff2==0 %被动饰品冷却好了
  524.                 if rand()<0.1
  525.                     buff2=-45;
  526.                     buff22=0;
  527.                     Rsp=Rsp+959;
  528.                 end
  529.             end
  530.             if buff2<0 %被动饰品冷却中
  531.                 buff2=buff2+Ctofgcd;
  532.             else
  533.                 buff2=0;%被动饰品冷却好了
  534.             end
  535.             if buff22>10 %被动饰品持续时间结束
  536.                 buff22=-360;
  537.                 Rsp=Rsp-959;
  538.             else
  539.                 if buff22>-1
  540.                     buff22=buff22+Ctofgcd;
  541.                 end
  542.             end
  543.             %判断被动饰品
  544.             
  545.              %判断亮纹刺绣
  546.             if buff3==0 %亮纹刺绣冷却好了
  547.                 if rand()<0.67232
  548.                     buff3=-60;
  549.                     buff33=0;
  550.                     Rsp=Rsp+295;
  551.                 end
  552.             end
  553.             if buff3<0 %亮纹刺绣冷却中
  554.                 buff3=buff3+Ctofgcd;
  555.             else
  556.                 buff3=0;%亮纹刺绣冷却好了
  557.             end
  558.             if buff33>15 %亮纹刺绣持续时间结束
  559.                 buff33=-1;
  560.                 Rsp=Rsp-295;
  561.             else
  562.                 if buff33>-1
  563.                     buff33=buff33+Ctofgcd;
  564.                 end
  565.             end
  566.             %判断亮纹刺绣
  567.             
  568.             else
  569.                 Damage=Damage+Dyb2;%(2)炸弹CD好了,触发连击,伤害+炎爆伤害(斩杀)
  570.                 if cr<Rcrit+0.06
  571.                     numofyb2=numofyb2+1;
  572.                 else
  573.                     numofyb1=numofyb1+1;
  574.                 end
  575.                 %判断燃烧
  576.                 if cr<Rcrit+0.06
  577.                     numofrs=numofrs-1;
  578.                 end
  579.                 %判断燃烧
  580.                 t=t+Ctofgcd;
  581.                 buff1=buff1+Ctofgcd;%加速药水时间
  582.                 buff12=buff12+Ctofgcd;%加速药水2时间
  583.                 buff77=buff77+Ctofgcd;%狂暴持续时间
  584.                 buff7=buff7+Ctofgcd;%暴冷却时间
  585.                 buff88=buff88+Ctofgcd;%手套持续时间
  586.                 buff8=buff8+Ctofgcd;%手套冷却时间
  587.                 buff00=buff00+Ctofgcd;%嗜血时间
  588.                 fslj=fslj-2;
  589.                                        
  590.             %判断被动饰品
  591.             if buff2==0 %被动饰品冷却好了
  592.                 if rand()<0.1
  593.                     buff2=-45;
  594.                     buff22=0;
  595.                     Rsp=Rsp+959;
  596.                 end
  597.             end
  598.             if buff2<0 %被动饰品冷却中
  599.                 buff2=buff2+Ctofgcd;
  600.             else
  601.                 buff2=0;%被动饰品冷却好了
  602.             end
  603.             if buff22>10 %被动饰品持续时间结束
  604.                 buff22=-360;
  605.                 Rsp=Rsp-959;
  606.             else
  607.                 if buff22>-1
  608.                     buff22=buff22+Ctofgcd;
  609.                 end
  610.             end
  611.             %判断被动饰品
  612.             
  613.              %判断亮纹刺绣
  614.             if buff3==0 %亮纹刺绣冷却好了
  615.                 if rand()<0.67232
  616.                     buff3=-60;
  617.                     buff33=0;
  618.                     Rsp=Rsp+295;
  619.                 end
  620.             end
  621.             if buff3<0 %亮纹刺绣冷却中
  622.                 buff3=buff3+Ctofgcd;
  623.             else
  624.                 buff3=0;%亮纹刺绣冷却好了
  625.             end
  626.             if buff33>15 %亮纹刺绣持续时间结束
  627.                 buff33=-1;
  628.                 Rsp=Rsp-295;
  629.             else
  630.                 if buff33>-1
  631.                     buff33=buff33+Ctofgcd;
  632.                 end
  633.             end
  634.             %判断亮纹刺绣
  635.             
  636.             end
  637.         else
  638.           if t<168
  639.             if t<117
  640.                 Damage=Damage+Dzddot1;%(3)炸弹CD好了,未触发连击,伤害+炸弹dot伤害
  641.                 if cr<Rcrit+0.06
  642.                     numofzd2=numofzd2+1;
  643.                 else
  644.                     numofzd1=numofzd1+1;
  645.                 end
  646.                 t=t+Ctofgcd;
  647.                 tofzd=Ctofgcd;
  648.                 buff1=buff1+Ctofgcd;%加速药水时间
  649.                 buff12=buff12+Ctofgcd;%加速药水2时间
  650.                 buff77=buff77+Ctofgcd;%狂暴持续时间
  651.                 buff7=buff7+Ctofgcd;%暴冷却时间
  652.                 buff88=buff88+Ctofgcd;%手套持续时间
  653.                 buff8=buff8+Ctofgcd;%手套冷却时间
  654.                 buff00=buff00+Ctofgcd;%嗜血时间
  655.                                     
  656.             %判断被动饰品
  657.             if buff2==0 %被动饰品冷却好了
  658.                 if rand()<0.1
  659.                     buff2=-45;
  660.                     buff22=0;
  661.                     Rsp=Rsp+959;
  662.                 end
  663.             end
  664.             if buff2<0 %被动饰品冷却中
  665.                 buff2=buff2+Ctofgcd;
  666.             else
  667.                 buff2=0;%被动饰品冷却好了
  668.             end
  669.             if buff22>10 %被动饰品持续时间结束
  670.                 buff22=-360;
  671.                 Rsp=Rsp-959;
  672.             else
  673.                 if buff22>-1
  674.                     buff22=buff22+Ctofgcd;
  675.                 end
  676.             end
  677.             %判断被动饰品
  678.             
  679.              %判断亮纹刺绣
  680.             if buff3==0 %亮纹刺绣冷却好了
  681.                 if rand()<0.67232
  682.                     buff3=-60;
  683.                     buff33=0;
  684.                     Rsp=Rsp+295;
  685.                 end
  686.             end
  687.             if buff3<0 %亮纹刺绣冷却中
  688.                 buff3=buff3+Ctofgcd;
  689.             else
  690.                 buff3=0;%亮纹刺绣冷却好了
  691.             end
  692.             if buff33>15 %亮纹刺绣持续时间结束
  693.                 buff33=-1;
  694.                 Rsp=Rsp-295;
  695.             else
  696.                 if buff33>-1
  697.                     buff33=buff33+Ctofgcd;
  698.                 end
  699.             end
  700.             %判断亮纹刺绣
  701.             
  702.             else
  703.                 Damage=Damage+Dzddot2;%(3)炸弹CD好了,未触发连击,伤害+炸弹dot伤害(斩杀)
  704.                 if cr<Rcrit+0.06
  705.                     numofzd2=numofzd2+1;
  706.                 else
  707.                     numofzd1=numofzd1+1;
  708.                 end
  709.                 t=t+Ctofgcd;
  710.                 tofzd=Ctofgcd;
  711.                 buff1=buff1+Ctofgcd;%加速药水时间
  712.                 buff12=buff12+Ctofgcd;%加速药水2时间
  713.                 buff77=buff77+Ctofgcd;%狂暴持续时间
  714.                 buff7=buff7+Ctofgcd;%暴冷却时间
  715.                 buff88=buff88+Ctofgcd;%手套持续时间
  716.                 buff8=buff8+Ctofgcd;%手套冷却时间
  717.                 buff00=buff00+Ctofgcd;%嗜血时间
  718.                                        
  719.             %判断被动饰品
  720.             if buff2==0 %被动饰品冷却好了
  721.                 if rand()<0.1
  722.                     buff2=-45;
  723.                     buff22=0;
  724.                     Rsp=Rsp+959;
  725.                 end
  726.             end
  727.             if buff2<0 %被动饰品冷却中
  728.                 buff2=buff2+Ctofgcd;
  729.             else
  730.                 buff2=0;%被动饰品冷却好了
  731.             end
  732.             if buff22>10 %被动饰品持续时间结束
  733.                 buff22=-360;
  734.                 Rsp=Rsp-959;
  735.             else
  736.                 if buff22>-1
  737.                     buff22=buff22+Ctofgcd;
  738.                 end
  739.             end
  740.             %判断被动饰品
  741.             
  742.              %判断亮纹刺绣
  743.             if buff3==0 %亮纹刺绣冷却好了
  744.                 if rand()<0.67232
  745.                     buff3=-60;
  746.                     buff33=0;
  747.                     Rsp=Rsp+295;
  748.                 end
  749.             end
  750.             if buff3<0 %亮纹刺绣冷却中
  751.                 buff3=buff3+Ctofgcd;
  752.             else
  753.                 buff3=0;%亮纹刺绣冷却好了
  754.             end
  755.             if buff33>15 %亮纹刺绣持续时间结束
  756.                 buff33=-1;
  757.                 Rsp=Rsp-295;
  758.             else
  759.                 if buff33>-1
  760.                     buff33=buff33+Ctofgcd;
  761.                 end
  762.             end
  763.             %判断亮纹刺绣
  764.             
  765.             end
  766.           else
  767.               Damage=Damage+Dhq2;%(4)炸弹CD好了,未触发连击,剩余时间小于12秒,伤害+火球伤害(斩杀)
  768.               if cr<Rcrit+0.08
  769.                   numofhq2=numofhq2+1;
  770.               else
  771.                   numofhq1=numofhq1+1;
  772.               end
  773.               %判断燃烧
  774.               if cr<Rcrit+0.08
  775.                   numofrs=numofrs-1;
  776.               end
  777.               %判断燃烧
  778.               t=t+Ctofhq;
  779.               tofzd=0;
  780.               tofzd=tofzd+Ctofhq;
  781.               buff1=buff1+Ctofhq;%加速药水时间
  782.               buff12=buff12+Ctofhq;%加速药水2时间
  783.               buff77=buff77+Ctofhq;%狂暴持续时间
  784.               buff7=buff7+Ctofhq;%暴冷却时间
  785.               buff88=buff88+Ctofhq;%手套持续时间
  786.               buff8=buff8+Ctofhq;%手套冷却时间
  787.               buff00=buff00+Ctofhq;%嗜血时间
  788.               if cr<Rcrit+0.08
  789.                   fslj=fslj+1;
  790.               else
  791.                   fslj=0;
  792.               end
  793.                                     
  794.             %判断被动饰品
  795.             if buff2==0 %被动饰品冷却好了
  796.                 if rand()<0.1
  797.                     buff2=-45;
  798.                     buff22=0;
  799.                     Rsp=Rsp+959;
  800.                 end
  801.             end
  802.             if buff2<0 %被动饰品冷却中
  803.                 buff2=buff2+Ctofhq;
  804.             else
  805.                 buff2=0;%被动饰品冷却好了
  806.             end
  807.             if buff22>10 %被动饰品持续时间结束
  808.                 buff22=-360;
  809.                 Rsp=Rsp-959;
  810.             else
  811.                 if buff22>-1
  812.                     buff22=buff22+Ctofhq;
  813.                 end
  814.             end
  815.             %判断被动饰品
  816.             
  817.              %判断亮纹刺绣
  818.             if buff3==0 %亮纹刺绣冷却好了
  819.                 if rand()<0.67232
  820.                     buff3=-60;
  821.                     buff33=0;
  822.                     Rsp=Rsp+295;
  823.                 end
  824.             end
  825.             if buff3<0 %亮纹刺绣冷却中
  826.                 buff3=buff3+Ctofhq;
  827.             else
  828.                 buff3=0;%亮纹刺绣冷却好了
  829.             end
  830.             if buff33>15 %亮纹刺绣持续时间结束
  831.                 buff33=-1;
  832.                 Rsp=Rsp-295;
  833.             else
  834.                 if buff33>-1
  835.                     buff33=buff33+Ctofhq;
  836.                 end
  837.             end
  838.             %判断亮纹刺绣
  839.             
  840.           end
  841.         end
  842.     else
  843.         if fslj>=2
  844.             if t<117
  845.                 Damage=Damage+Dyb1;%(5)炸弹CD没好,触发连击,伤害+炎爆伤害
  846.                 if cr<Rcrit+0.06
  847.                     numofyb2=numofyb2+1;
  848.                 else
  849.                     numofyb1=numofyb1+1;
  850.                 end
  851.                 %判断燃烧
  852.                 if cr<Rcrit+0.06
  853.                     numofrs=numofrs-1;
  854.                 end
  855.                 %判断燃烧
  856.                 t=t+Ctofgcd;
  857.                 tofzd=tofzd+Ctofgcd;
  858.                 buff1=buff1+Ctofgcd;%加速药水时间
  859.                 buff12=buff12+Ctofgcd;%加速药水2时间
  860.                 buff77=buff77+Ctofgcd;%狂暴持续时间
  861.                 buff7=buff7+Ctofgcd;%暴冷却时间
  862.                 buff88=buff88+Ctofgcd;%手套持续时间
  863.                 buff8=buff8+Ctofgcd;%手套冷却时间
  864.                 buff00=buff00+Ctofgcd;%嗜血时间
  865.                 fslj=fslj-2;
  866.                                             
  867.             %判断被动饰品
  868.             if buff2==0 %被动饰品冷却好了
  869.                 if rand()<0.1
  870.                     buff2=-45;
  871.                     buff22=0;
  872.                     Rsp=Rsp+959;
  873.                 end
  874.             end
  875.             if buff2<0 %被动饰品冷却中
  876.                 buff2=buff2+Ctofgcd;
  877.             else
  878.                 buff2=0;%被动饰品冷却好了
  879.             end
  880.             if buff22>10 %被动饰品持续时间结束
  881.                 buff22=-360;
  882.                 Rsp=Rsp-959;
  883.             else
  884.                 if buff22>-1
  885.                     buff22=buff22+Ctofgcd;
  886.                 end
  887.             end
  888.             %判断被动饰品
  889.             
  890.              %判断亮纹刺绣
  891.             if buff3==0 %亮纹刺绣冷却好了
  892.                 if rand()<0.67232
  893.                     buff3=-60;
  894.                     buff33=0;
  895.                     Rsp=Rsp+295;
  896.                 end
  897.             end
  898.             if buff3<0 %亮纹刺绣冷却中
  899.                 buff3=buff3+Ctofgcd;
  900.             else
  901.                 buff3=0;%亮纹刺绣冷却好了
  902.             end
  903.             if buff33>15 %亮纹刺绣持续时间结束
  904.                 buff33=-1;
  905.                 Rsp=Rsp-295;
  906.             else
  907.                 if buff33>-1
  908.                     buff33=buff33+Ctofgcd;
  909.                 end
  910.             end
  911.             %判断亮纹刺绣
  912.             
  913.             else
  914.                 Damage=Damage+Dyb2;%(5)炸弹CD没好,触发连击,伤害+炎爆伤害(斩杀)
  915.                 if cr<Rcrit+0.06
  916.                     numofyb2=numofyb2+1;
  917.                 else
  918.                     numofyb1=numofyb1+1;
  919.                 end
  920.                 %判断燃烧
  921.                 if cr<Rcrit+0.06
  922.                     numofrs=numofrs-1;
  923.                 end
  924.                 %判断燃烧
  925.                 t=t+Ctofgcd;
  926.                 tofzd=tofzd+Ctofgcd;
  927.                 buff1=buff1+Ctofgcd;%加速药水时间
  928.                 buff12=buff12+Ctofgcd;%加速药水2时间
  929.                 buff77=buff77+Ctofgcd;%狂暴持续时间
  930.                 buff7=buff7+Ctofgcd;%暴冷却时间
  931.                 buff88=buff88+Ctofgcd;%手套持续时间
  932.                 buff8=buff8+Ctofgcd;%手套冷却时间
  933.                 buff00=buff00+Ctofgcd;%嗜血时间
  934.                 fslj=fslj-2;
  935.                                          
  936.             %判断被动饰品
  937.             if buff2==0 %被动饰品冷却好了
  938.                 if rand()<0.1
  939.                     buff2=-45;
  940.                     buff22=0;
  941.                     Rsp=Rsp+959;
  942.                 end
  943.             end
  944.             if buff2<0 %被动饰品冷却中
  945.                 buff2=buff2+Ctofgcd;
  946.             else
  947.                 buff2=0;%被动饰品冷却好了
  948.             end
  949.             if buff22>10 %被动饰品持续时间结束
  950.                 buff22=-360;
  951.                 Rsp=Rsp-959;
  952.             else
  953.                 if buff22>-1
  954.                     buff22=buff22+Ctofgcd;
  955.                 end
  956.             end
  957.             %判断被动饰品
  958.             
  959.              %判断亮纹刺绣
  960.             if buff3==0 %亮纹刺绣冷却好了
  961.                 if rand()<0.67232
  962.                     buff3=-60;
  963.                     buff33=0;
  964.                     Rsp=Rsp+295;
  965.                 end
  966.             end
  967.             if buff3<0 %亮纹刺绣冷却中
  968.                 buff3=buff3+Ctofgcd;
  969.             else
  970.                 buff3=0;%亮纹刺绣冷却好了
  971.             end
  972.             if buff33>15 %亮纹刺绣持续时间结束
  973.                 buff33=-1;
  974.                 Rsp=Rsp-295;
  975.             else
  976.                 if buff33>-1
  977.                     buff33=buff33+Ctofgcd;
  978.                 end
  979.             end
  980.             %判断亮纹刺绣
  981.             
  982.             end
  983.         else
  984.             if t<117
  985.                 Damage=Damage+Dhq1;%(6)炸弹CD没好,未触发连击,伤害+火球伤害
  986.                 if cr<Rcrit+0.08
  987.                     numofhq2=numofhq2+1;
  988.                 else
  989.                     numofhq1=numofhq1+1;
  990.                 end
  991.                 if cr<Rcrit+0.08
  992.                     numofrs=numofrs-1;
  993.                 end
  994.                 %判断燃烧
  995.                 t=t+Ctofhq;
  996.                 tofzd=tofzd+Ctofhq;
  997.                 buff1=buff1+Ctofhq;%加速药水时间
  998.                 buff12=buff12+Ctofhq;%加速药水2时间
  999.                 buff77=buff77+Ctofhq;%狂暴持续时间
  1000.                 buff7=buff7+Ctofhq;%暴冷却时间
  1001.                 buff88=buff88+Ctofhq;%手套持续时间
  1002.                 buff8=buff8+Ctofhq;%手套冷却时间
  1003.                 buff00=buff00+Ctofhq;%嗜血时间
  1004.                 if cr<Rcrit+0.08
  1005.                     fslj=fslj+1;
  1006.                 else
  1007.                     fslj=0;
  1008.                 end
  1009.                            
  1010.             %判断被动饰品
  1011.             if buff2==0 %被动饰品冷却好了
  1012.                 if rand()<0.1
  1013.                     buff2=-45;
  1014.                     buff22=0;
  1015.                     Rsp=Rsp+959;
  1016.                 end
  1017.             end
  1018.             if buff2<0 %被动饰品冷却中
  1019.                 buff2=buff2+Ctofhq;
  1020.             else
  1021.                 buff2=0;%被动饰品冷却好了
  1022.             end
  1023.             if buff22>10 %被动饰品持续时间结束
  1024.                 buff22=-360;
  1025.                 Rsp=Rsp-959;
  1026.             else
  1027.                 if buff22>-1
  1028.                     buff22=buff22+Ctofhq;
  1029.                 end
  1030.             end
  1031.             %判断被动饰品
  1032.             
  1033.              %判断亮纹刺绣
  1034.             if buff3==0 %亮纹刺绣冷却好了
  1035.                 if rand()<0.67232
  1036.                     buff3=-60;
  1037.                     buff33=0;
  1038.                     Rsp=Rsp+295;
  1039.                 end
  1040.             end
  1041.             if buff3<0 %亮纹刺绣冷却中
  1042.                 buff3=buff3+Ctofhq;
  1043.             else
  1044.                 buff3=0;%亮纹刺绣冷却好了
  1045.             end
  1046.             if buff33>15 %亮纹刺绣持续时间结束
  1047.                 buff33=-1;
  1048.                 Rsp=Rsp-295;
  1049.             else
  1050.                 if buff33>-1
  1051.                     buff33=buff33+Ctofhq;
  1052.                 end
  1053.             end
  1054.             %判断亮纹刺绣
  1055.             
  1056.             else
  1057.                 Damage=Damage+Dhq2;%(6)炸弹CD没好,未触发连击,伤害+火球伤害(斩杀)
  1058.                 if cr<Rcrit+0.08
  1059.                     numofhq2=numofhq2+1;
  1060.                 else
  1061.                     numofhq1=numofhq1+1;
  1062.                 end
  1063.                 if cr<Rcrit+0.08
  1064.                     numofrs=numofrs-1;
  1065.                 end
  1066.                 %判断燃烧
  1067.                 t=t+Ctofhq;
  1068.                 tofzd=tofzd+Ctofhq;
  1069.                 buff1=buff1+Ctofhq;%加速药水时间
  1070.                 buff12=buff12+Ctofhq;%加速药水2时间
  1071.                 buff77=buff77+Ctofhq;%狂暴持续时间
  1072.                 buff7=buff7+Ctofhq;%暴冷却时间
  1073.                 buff88=buff88+Ctofhq;%手套持续时间
  1074.                 buff8=buff8+Ctofhq;%手套冷却时间
  1075.                 buff00=buff00+Ctofhq;%嗜血时间
  1076.                 if cr<Rcrit+0.08
  1077.                     fslj=fslj+1;
  1078.                 else
  1079.                     fslj=0;
  1080.                 end
  1081.                               
  1082.             %判断被动饰品
  1083.             if buff2==0 %被动饰品冷却好了
  1084.                 if rand()<0.1
  1085.                     buff2=-45;
  1086.                     buff22=0;
  1087.                     Rsp=Rsp+959;
  1088.                 end
  1089.             end
  1090.             if buff2<0 %被动饰品冷却中
  1091.                 buff2=buff2+Ctofhq;
  1092.             else
  1093.                 buff2=0;%被动饰品冷却好了
  1094.             end
  1095.             if buff22>10 %被动饰品持续时间结束
  1096.                 buff22=-360;
  1097.                 Rsp=Rsp-959;
  1098.             else
  1099.                 if buff22>-1
  1100.                     buff22=buff22+Ctofhq;
  1101.                 end
  1102.             end
  1103.             %判断被动饰品
  1104.             
  1105.              %判断亮纹刺绣
  1106.             if buff3==0 %亮纹刺绣冷却好了
  1107.                 if rand()<0.67232
  1108.                     buff3=-60;
  1109.                     buff33=0;
  1110.                     Rsp=Rsp+295;
  1111.                 end
  1112.             end
  1113.             if buff3<0 %亮纹刺绣冷却中
  1114.                 buff3=buff3+Ctofhq;
  1115.             else
  1116.                 buff3=0;%亮纹刺绣冷却好了
  1117.             end
  1118.             if buff33>15 %亮纹刺绣持续时间结束
  1119.                 buff33=-1;
  1120.                 Rsp=Rsp-295;
  1121.             else
  1122.                 if buff33>-1
  1123.                     buff33=buff33+Ctofhq;
  1124.                 end
  1125.             end
  1126.             %判断亮纹刺绣
  1127.             
  1128.             end
  1129.         end
  1130.     end
  1131.    end
  1132.    if t>182
  1133.      break
  1134.    end
  1135. end
  1136. dps=Damage*(1+0.032+0.025)/(t-2);%亡统特效:7250(2.5%),炎爆DOT:93300(3.2%),2023年7月20日世界第一HTOC1号数据
  1137. if j<=25*Numoftime
  1138.     total(1,j)=dps;
  1139.     tnumofhq1(1,j)=numofhq1;
  1140.     tnumofhq2(1,j)=numofhq2;
  1141.     tnumofyb1(1,j)=numofyb1;
  1142.     tnumofyb2(1,j)=numofyb2;
  1143.     tnumofzd1(1,j)=numofzd1;
  1144.     tnumofzd2(1,j)=numofzd2;
  1145.     if j==25*Numoftime
  1146.         Averagedps=mean(total);
  1147.         Averagenohq1=mean(tnumofhq1);
  1148.         Averagenohq2=mean(tnumofhq2);
  1149.         Averagenoyb1=mean(tnumofyb1);
  1150.         Averagenoyb2=mean(tnumofyb2);
  1151.         Averagenozd1=mean(tnumofzd1);
  1152.         Averagenozd2=mean(tnumofzd2);
  1153.     end
  1154. else
  1155.     if j<=50*Numoftime
  1156.         total10sp(1,j-25*Numoftime)=dps;
  1157.         t10spnumofhq1(1,j-25*Numoftime)=numofhq1;
  1158.         t10spnumofhq2(1,j-25*Numoftime)=numofhq2;
  1159.         t10spnumofyb1(1,j-25*Numoftime)=numofyb1;
  1160.         t10spnumofyb2(1,j-25*Numoftime)=numofyb2;
  1161.         t10spnumofzd1(1,j-25*Numoftime)=numofzd1;
  1162.         t10spnumofzd2(1,j-25*Numoftime)=numofzd2;
  1163.         if j==50*Numoftime
  1164.             Averagedps10sp=mean(total10sp);
  1165.             Average10spnohq1=mean(t10spnumofhq1);
  1166.             Average10spnohq2=mean(t10spnumofhq2);
  1167.             Average10spnoyb1=mean(t10spnumofyb1);
  1168.             Average10spnoyb2=mean(t10spnumofyb2);
  1169.             Average10spnozd1=mean(t10spnumofzd1);
  1170.             Average10spnozd2=mean(t10spnumofzd2);
  1171.         end
  1172.     else
  1173.         if j<=75*Numoftime
  1174.            total10hs(1,j-50*Numoftime)=dps;
  1175.            t10hsnumofhq1(1,j-50*Numoftime)=numofhq1;
  1176.            t10hsnumofhq2(1,j-50*Numoftime)=numofhq2;
  1177.            t10hsnumofyb1(1,j-50*Numoftime)=numofyb1;
  1178.            t10hsnumofyb2(1,j-50*Numoftime)=numofyb2;
  1179.            t10hsnumofzd1(1,j-50*Numoftime)=numofzd1;
  1180.            t10hsnumofzd2(1,j-50*Numoftime)=numofzd2;
  1181.            if j==75*Numoftime
  1182.                Averagedps10hs=mean(total10hs);
  1183.                Average10hsnohq1=mean(t10hsnumofhq1);
  1184.                Average10hsnohq2=mean(t10hsnumofhq2);
  1185.                Average10hsnoyb1=mean(t10hsnumofyb1);
  1186.                Average10hsnoyb2=mean(t10hsnumofyb2);
  1187.                Average10hsnozd1=mean(t10hsnumofzd1);
  1188.                Average10hsnozd2=mean(t10hsnumofzd2);
  1189.            end
  1190.         else
  1191.             total10cr(1,j-75*Numoftime)=dps;
  1192.             t10crnumofhq1(1,j-75*Numoftime)=numofhq1;
  1193.             t10crnumofhq2(1,j-75*Numoftime)=numofhq2;
  1194.             t10crnumofyb1(1,j-75*Numoftime)=numofyb1;
  1195.             t10crnumofyb2(1,j-75*Numoftime)=numofyb2;
  1196.             t10crnumofzd1(1,j-75*Numoftime)=numofzd1;
  1197.             t10crnumofzd2(1,j-75*Numoftime)=numofzd2;
  1198.             if j==100*Numoftime
  1199.                 Averagedps10cr=mean(total10cr);
  1200.                 Average10crnohq1=mean(t10crnumofhq1);
  1201.                 Average10crnohq2=mean(t10crnumofhq2);
  1202.                 Average10crnoyb1=mean(t10crnumofyb1);
  1203.                 Average10crnoyb2=mean(t10crnumofyb2);
  1204.                 Average10crnozd1=mean(t10crnumofzd1);
  1205.                 Average10crnozd2=mean(t10crnumofzd2);
  1206.             end
  1207.         end
  1208.     end
  1209. end
  1210. end
  1211. value1=(Averagedps10hs-Averagedps)/(Averagedps10sp-Averagedps);
  1212. value2=(Averagedps10cr-Averagedps)/(Averagedps10sp-Averagedps);
复制代码
[/collapse]
图看起来都差不多,只要知道模拟结果是符合正态分布的就行了
[collapse=我是结果]基础面板下的25万次结果:
2.jpeg

+10法伤面板下的25万次结果:
3.jpeg

+10急速面板下的25万次结果:
4.jpeg

+10暴击面板下的25万次结果:
5.jpeg

[/collapse]

四、伤害结构
我们可以看到,这套BIS的配装下,180秒总共大概是70个火球,28个炎爆,13个炸弹,技能数量分别占比63.1%,25.2%,11.7%)
如下图所示,第一行和第二行因为只改变了法伤,所以比例几乎是不变的
第二行增加了10急速,火球占比提高了一点点而炸弹占比降低了一点点,这主要是因为炸弹DOT不吃急速收益,所以一场战斗炸弹的次数其实基本是固定的,但急速增加了火球的数量,变相导致炸弹占比降低,炎爆无变化;
第三行增加了10暴击,火球占比明显下降(虽然我用的“明显”,但其实也就下降0.08%,只有拉到这个精确度才能看出来区别),炎爆占比明显提高,炸弹无变化。
6.jpeg

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数值收益算法优化有修正这篇帖子是从另一种方式做的推演,我和楼主也就这个问题一直在交流讨论,如有后续进展,我会更新。
回复

使用道具 举报

分享

精彩评论17

方方圆圆272 显示全部楼层 发表于 2024-9-5 08:28:52
虽然我既不懂代码也不懂法师,但我还是想跟楼主讨论两个问题。
1.输出方式。
在大部分情况下无炸弹dot时应优先补充补炸弹后炎爆,我能想到的唯一一个需要先炎爆后补炸弹的场景是:
距离BOSS30码以内,且已经拥有一个小括号时,为避免浪费掉第二个法术连击,此时先炎爆后补炸弹。
除此之外的场景均应先补炸弹后施放炎爆。
2.计算方法。
相比于+1法伤/+1暴击/+1急速的方法,我想提供另一种我使用的方法(这种方法学习于橘子犀牛)。此时此刻我的秒伤为10000,如果我的秒伤想提高到10100,在只改变一项属性的情况下,我分别需要多少法伤、急速、暴击呢?
在暴击急速不变的情况下,计算提升1%DPS所需要的法伤值。
在法伤急速不变的情况下,计算提升1%DPS所需要的急速值。
在法伤暴击不变的情况下,计算提升1%DPS所需要的暴击值。
三值对比得出以法伤为基础暴击急速等价的法伤值。
回复 支持 反对

使用道具 举报

疑骨德秋忘 显示全部楼层 发表于 2024-9-5 08:39:25
顶一下,貌似以我的认知也能计算,不过还是算了,等结果最好了
回复 支持 反对

使用道具 举报

天寿保健护理彰 显示全部楼层 发表于 2024-9-5 08:43:30
朴素的认知里面,堆法伤稳定,堆急速有实际最高值,堆暴击求稳定,换算关系太难了,利用数学模型是对的,虽然打本不能考感觉,但是还是感觉法伤最好啊
回复 支持 反对

使用道具 举报

清风JA1 显示全部楼层 发表于 2024-9-5 08:52:37
Wowhead上推荐黄槽就是法强极速,给的说法是2t9提供了精神属性提供了大量暴击,导致暴击收益低于极速,实际打下来看,火球暴击基本都在60+~70+,不是很稳定,脸黑白60出头,脸好可以接近80,达不到80的暴击率,个人感觉属性上装等优先,极速还是大于精神
回复 支持 反对

使用道具 举报

C丶sunshine 显示全部楼层 发表于 2024-9-5 08:55:29
1.优化中,因为要增加判断参数,影响不大空了再说;
2.其实是一样的,就是一个精度的问题,严格意义的f&#39;(x)仅能通过函数解法,解析解也好,求极限逼近也好,但都很难,可以看我TBC的那篇理论解法,那个模型已经够简单了,求解精确解依然需要大量的计算和充足的线性代数知识储备。
所以用模拟的方法,是取同样的自变量还是同样的因变量,区别仅仅是取到这条曲线上的哪一个点而已,误差极小,虽然我说的+1,但我的模型里用的是+10,因为+1要求解的值的大小,和误差是一个量级了,要么提高精度增加模拟量(现在加起来已经是100万次了),要么就是扩大自变量,当然选后者啦,结果是差不多的。下面的图你看懂你就懂了。   1.jpeg
回复 支持 反对

使用道具 举报

白云追月素 显示全部楼层 发表于 2024-9-5 09:04:05
没事评论几句,让大家看看探讨一下
回复 支持 反对

使用道具 举报

马宝清马宝清 显示全部楼层 发表于 2024-9-5 09:11:01
坐等大佬们的讨论…属性收益和另外一个大佬的可以说是完全不一样啊…
回复 支持 反对

使用道具 举报

123457025 显示全部楼层 发表于 2024-9-5 09:16:03
你这个结果和之前其他人的计算差异比较大,有讨论过具体原因吗?我觉得大家如果要对比着看,得知道一些具体的原因才能判断到底采信哪一个
回复 支持 反对

使用道具 举报

饺子姑娘 显示全部楼层 发表于 2024-9-5 09:24:36
没讨论出结果,但我的结论应该更接近wowsims的数值
毕竟两种方法都很麻烦,我要去看他的推导过程纠错,他没有整理要看懂非常花时间
我只能说我的方法全在代码里了,放这儿800多行有问题可以讨论因为我没看过sims的代码,所以如果我的结论和sims的结论趋近于一致的话,我倾向于我的数据更准确毕竟80的模型复杂了很多,理论求解必须做很多简单化假设,不然你根本没法算,而这个简单化你也不知道是不是简化了一些很重要的东西,而模拟可以解决这个问题
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

魔兽世界玩家社区,为广大wower打造专属于自己的精神家园!
  • 小程序

  • 微信公众号

  • 商务合作