前言:
随著此次重拾经营伺服器的时间越来越长,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%)
在运用上更为灵活。
发表评论
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。