需要的条件有:随机函数f(x)(从0-1之间随机取值的函数);致命几率为K;伤害或治疗的数值为S1-S2;
目标的减伤或减弱治疗效果系数为M。
首先来讨论可以产生致命效果的法术和物理攻击的数值产生原理:
第一步先判定是否出致命:随机数Z=f(x)
当Z不大于K时,出致命数值
当Z大于K时,出普通数值
第二步计算数值:
普通数值S3=[S1+(S2-S1)*f(x)]*(1-M)*其他修正(存在的话)
致命数值S4=S3*致命倍率
既当Z大于K时,最终数值S=S3;当Z不大于K时,S=S4。
对于持续性伤害和治疗法术,每隔若干秒产生的伤害或治疗为C。则S=C*(1-M)*其他修正(存在的话)
下面我们来举例说明:某猎人31/20/0天赋,远程致命几率为16.11%,远程伤害无状态为315-387(实际战斗还包括雄鹰和印记产生的伤害),武器速度2.9,攻击的目标减伤40%。本人编程不好,只能用QB模拟下。
K=0.1611
M=0.4
S1=315+(110+113)*2.9/14
S2=387+(110+113)*2.9/14
Z=RND
S3=[S1+(S2-S1)*RND]*(1-0.4)
S4=S3*2.6
IF Z<=K THEN S=S4
IF Z>K THEN S=S3
PRINT FIX(S)
每自动射击一次,触发程序一次。对于法术,奥射S1=S2=奥术伤害。瞄准和多重S1,S2还要加上额外伤害。
本人二区迷雾之海-云淡风轻公会-暗夜猎人剑精灵

