修正[MP攻击]技能错误
转自WELOVESA的小鐵
原文:
前言:
隨著此次重拾經營伺服器的時間越來越長,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%)
在運用上更為靈活。