作者:archior
來源:永恆之柱吧
一、前提
1.2代版本1.1
2.只計算單獨一種情況下,其他的帶入具體係數以此類推。
二、公式
1.命中,這裡取100次攻擊,roll100產生1~100各出現一次(因為每個都是1%概率,1萬億次攻擊一乘一除最後結果一樣)
2.累計100次傷害,除以100,算出每次攻擊傷害的平均值。
3.dps=(每次攻擊的傷害)/(每次攻擊的所用時間)
這裡設,X為命中減去防禦的值(感知影響),Y為力量影響值,Z為敏捷影響值。
其中Xc為技能或裝備的精准加值,Yc(含直接加傷)、Zrc(含裝備加減成速度)、Zac同理。
當0<=X+Xc<=30時,
100次攻擊累計傷害的基礎值:dmg_base=(30-X-Xc)*0+20*graze_function+50*(1+0.03Y+Yc)+(X+Xc)*(1.55+0.03Y+Yc)
單次攻擊傷害:dmg=(dmg_base)*(dmg_roll)/100
單次攻擊時間:t=t_recovery_base/recovery_speed+t_action_base/action_speed=t_recovery_base/(1+0.03Z+Zrc)+t_action_base/(1+0.03Z+Zac)
最終通用公式
dps=dmg/t=[(30-X-Xc)*0+20*graze_function+50*(1+0.03Y+Yc)+(X+Xc)*(1.55+0.03Y+Yc)]*[(dmg_roll)/100]/[t_recovery_base/(1+0.03Z+Zrc)+t_action_base/(1+0.03Z+Zac)]
其中
1.graze_function當(-1+0.03Y+Yc)為正值時為(0.03Y+Yc),負值時轉為1/(2-0.03Y-Yc)
2.其他大部分採用正值演算法,因為出現負的情況非常少(比如命中但是傷害加成值為負等情況)。
三、問題
1.不同bd不同裝備,Xc、Yc、Zrc、Zac係數不同
2.X、Y、Z、dps為四維,沒法畫圖展現,這裡只從極值最大值簡單計算下
情況一:裸體白板
係數說明
1.Xc、Yc、Zrc、Zac暫且設為0,graze_function為1/(2-0.03Y-Yc)因為白板不可能加出44點力量值。
2.0<=X<=30,等級相當的正常情況下。
3.設dmg_roll=20,t_recovery_base=4,t_action_base=0.8;
係數設定
graze_function=1/(2-0.03Y-Yc)
Xc=0;
Yc=0;
Zrc=0;
Zac=0;
t_action_base=0.8;
t_recovery_base=4;
約束條件
-7<=X<=10;
-7<=Y<=10;
-7<=Z<=10;
X+Y+Z=20;
計算:略
結果:
str=
7.322183754791489
per=
2.678977201900436
dex=
9.998834870309832
maxVal=
4.168446968589194
情況二:白板-雙持
含有雙持加成,雙武器戰鬥風格
係數設定
graze_function=1/(2-0.03Y-Yc)
Xc=0;
Yc=0;
Zrc=0.429+0.176;
Zac=0;
t_action_base=0.5;
t_recovery_base=3;
約束條件
同上
結果:
str=
9.999954232346251
per=
8.061944115581415
dex=
1.938099191159896
maxVal=
8.054968061497240
情況三:白板-單手
係數設定
graze_function=1/(2-0.03Y-Yc)
Xc=12;
Yc=0;
Zrc=;
Zac=0;
t_action_base=0.8;
t_recovery_base=4;
約束條件
同上
結果:
str=
9.999998298686778
per=
2.354658139736921e-06
dex=
9.999999146993291
maxVal=
5.360588175188809
情況四:雙持-魂刃+遊蕩
20級,帶裝備
係數設定
graze_function=(0.03Y+Yc)
Xc=3(裝備感知)+5(匕首額外帶5)+10(致盲技能)=18;(傳奇裝備+15精准,不累計在內)
Yc=0.25(致盲)+0.6(偷襲)+0.5(致死)+0.2(吸能之鞭)+0.2(嘔吐錐瘋狂醉漢)+0.6(傳奇武器)=2.35;
Zrc=0.1(黑刃兜帽)+0.2(嘔吐錐瘋狂醉漢)+(0.05+0.03)(安格爾的敏捷之觸)+(0.15-0.03)(朗姆酒)+(-0.2+0.111)異端皮革+0.429(雙持)+0.176(雙武器姿態)=1.016;
Zac=0.1(黑刃兜帽)+0.2(嘔吐錐瘋狂醉漢)+(0.05+0.03)(安格爾的敏捷之觸)+(0.15-0.03)(朗姆酒)=0.5;
t_action_base=0.5;
t_recovery_base=3;
約束條件
同上
結果:
str=
2.176585404444776e-07
per=
9.999999836168605
dex=
9.999999892658657
maxVal=
41.154027387397889
很明顯,傷害加成都2.35,力量那10點真是毛毛雨。
可以看出在後期,屬性在物理攻擊上的收益,基本上可有可無。
加裝備計算公式
%%
clc;clear;
symsXYZXcYcZrcZact_recovery_baset_action_base
dmg_roll=20;
graze_function1=(0.03*Y+Yc);
%graze_function2=1/(2-0.03*Y-Yc);
dmg_base=(30-X-Xc)*0+20*graze_function1+50*(1+0.03*Y+Yc)+(X+Xc)*(1.55+0.03*Y+Yc);
dmg=(dmg_base)*(dmg_roll)/100;
t=t_recovery_base/(1+0.03*Z+Zrc)+t_action_base/(1+0.03*Z+Zac);
dps=dmg/t
%%
%白板
clc;clear;
symsXcYcZrcZact_recovery_baset_action_base
Xc=0;
Yc=0;
Zrc=0;
Zac=0;
t_action_base=0.8;
t_recovery_base=4;
dps_fuction=@(x)((-1)*((3*x(2))/10+10*Yc-4/((3*x(2))/100+Yc-2)+((x(1)+Xc)*((3*x(2))/100+Yc+31/20))/5+10)/(t_action_base/((3*x(3))/100+Zac+1)+t_recovery_base/((3*x(3))/100+Zrc+1)));
lb=[-3,-3,-3];
ub=[10,10,10];
A=[1,1,1];
b=[20];
Aeq=[];
beq=[];
x0=[7,3,10];
[x,fval]=fmincon(dps_fuction,x0,A,b,Aeq,beq,lb,ub);
disp(‘str=’)
disp(x(2))
disp(‘per=’)
disp(x(1))
disp(‘dex=’)
disp(x(3))
disp(‘maxVal=’)
disp(-fval)
%%
%神裝
clc;clear;
symsXcYcZrcZact_recovery_baset_action_base
Xc=18;
Yc=2.35;
Zrc=1.016;
Zac=0.5;
t_action_base=0.5;
t_recovery_base=3;
dps_fuction=@(x)((-1)*((21*x(2))/50+14*Yc+((x(1)+Xc)*((3*x(2))/100+Yc+31/20))/5+10)/(t_action_base/((3*x(3))/100+Zac+1)+t_recovery_base/((3*x(3))/100+Zrc+1)));
lb=[-3,-3,-3];
ub=[10,10,10];
A=[1,1,1];
b=[20];
Aeq=[];
beq=[];
x0=[7,3,10];
[x,fval]=fmincon(dps_fuction,x0,A,b,Aeq,beq,lb,ub);
disp(‘str=’)
disp(x(2))
disp(‘per=’)
disp(x(1))
disp(‘dex=’)
disp(x(3))
disp(‘maxVal=’)
disp(-fval)