石器时代『MP攻击』技能的错误修正

前言:

随著此次重拾经营伺服器的时间越来越长,PK的人数越来越多

在宠物技能上面琢磨的样本数也是爆炸性的成长


得出了其中一个结论:「MP攻击伤害有问题」


这可是华义时期原厂的技能,从青龙就了(声望两千、青龙你牵....)

虽说不是很相信,但还是来测试了一下


首先看源码

在pet_skill.c裡面的int PETSKILL_MpDamage 此function内


def = (float)(atoi( buf1)/100);


会发现说,在参数的取得后透过atoi转成int

而int / int 还是等于 int,没有办法转成浮点数(float)

导致此技能伤害只有 1 2 3 4 (倍)差别,并没有办法像原始说明文那样

攻击下降N%,伤害敌人Y%的MP


于是在这边我做了点修正

def = (int)(atof( buf1)/100);

利用atof转浮点数,就可以精准控制伤害的%数,不会一下过高(命中也会变超高),或者是过低


另外因为这样会影响petskill2.txt裡面设定的参数

于是再延伸成

strdef = CHAR_getWorkInt(charaindex,CHAR_WORKFIXSTR);

strdef = strdef + (int)( strdef*atof( buf1));


这样设定时就会比较直觉 (设定正数,就是增加、设定负数,就是减少)

能够精准控制到小数点两位(EX:0.20 = 20%)

在运用上更为灵活。


发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。