Re: [技能] 治療術(heal spell)變更

作者: laechan (揮淚斬馬雲)   2021-06-05 22:57:11
※ 引述《Emiielf (Emiielf)》之銘言:
: 目前牧師 cast heal 並沒有明顯治癒效果
: 以往滿等滿裝 一招下去就滿了,現在有點悽慘
: 以牧師 cast heal 小法師後的狀態如下,效果堪憂
: 你是兩千零九十六歲的女性魔人法師,已經玩了1年 13週 6天 7 小時 4分 16秒。
: 你的主公會是法師,你已經不能再變更主公會了!
: 你已經過了適婚年齡,但你依然是個黃花大閨女。
: 生命力: 139570/ 244427 ( 57%) 體質(con): 1273/ 976 (+240)
: 精神力: 749763/ 749763 (100%) 魔力(mag): 4636/ 3475 (+320)
: 內 力: 461386/ 347940 (132%) 氣勁(air): 3077/ 2150 (+ 0)
: 力量(str): 3905/ 2806 (+ 0) 敏捷(dex): 2312/ 2004 (+ 0)
: 感性(fel): 2021/ 1685 (+ 0) 理性(int): 2290/ 1560 (+240)
: 妳緩緩唸道: 瑪法呀..請讓此人的身與心都復原吧...
: 自妳的手心發出了一陣柔和的白色光芒...
: 你開始唸起古老的咒文: ~ 30 ~ ~ ~ 治療術 ~
: 艾莉娜已經滿血了(262.42%)。
: 妳已經滿血了(739.02%)。
: 生命力: 142014/ 238867 ( 59%) 體質(con): 1273/ 976 (+240)
: 精神力: 749763/ 749763 (100%) 魔力(mag): 4636/ 3475 (+320)
: 內 力: 461386/ 345160 (133%) 氣勁(air): 3077/ 2150 (+ 0)
: 力量(str): 3627/ 2806 (+ 0) 敏捷(dex): 2312/ 2004 (+ 0)
: 感性(fel): 2021/ 1685 (+ 0) 理性(int): 2290/ 1560 (+240)
看起來是滿血的判斷有錯,下次麻煩貼一下遊戲 id 或 score -l
的完整畫面,不然沒法看你的詳細數值。
生命力: 142014/ 238867 ( 59%)
這行應該沒錯。(除非七位數無法顯示只顯示六位數)
另外,我沒動治癒量,我檢查一下
a1=g*g+fel+(LEVEL*LEVEL)/10; // 基本治癒能力
a2=lv*(fel*2+heart)/10;
t=a1+a2;
假設g=50級, fel=3627, LEVEL=120, lv=30, heart=9900
a1=2500+3627+1440=7567
a2=30x(3627x2+9900)/10=3x17154=51462
a1+a2=59029
if((string)ppl->query("pri_guild")=="clerical")
if(ppl->query("adv_guild"))
t=t*2;
if(pri_guild=="clerical" && adv_guild=="marfa") t=t*3;
呃這裡好像寫錯了,原意是一般進階兩倍,marfa三倍,上面會變六倍。
不過這個就不動了^^
理論上你放一次 t = 59029x6 = 354174
繼續檢查,嗯,我看到錯誤了:
a1=target->query("hp_src");
a2=t+(int)target->query("hp");
/*
if(a1>10000)
{
a1=a1/10; a2=a2/10;
}
else if(a1>100000)
{
a1=a1/100; a2=a2/100;
}
這個沒必要存在了我把它拿掉, 但是 bug 不在這裡
*/
a3=(a2*10000)/a1;
a4=a3%100;
if(a4<10) str=(a3/100)+".0"+a4+"%";
else str=(a3/100)+"."+a4+"%";
if(a2<a1)
{
tell_object(target,HIW+target->query("sex_name")+"身上受傷的地方發出淡淡的光>芒, "+
"傷勢逐漸回復中("+str+")...\n"NOR);
target->add_3p("hp",t,t);
}
else if(target==ppl)
tell_object(target,target->query("sex_name")+"已經滿血了("+str+")。"NOR"\n");
else
tell_object(ppl,target->query("chi_name")+"已經滿血了("+str+")。"NOR"\n");
上面的意思是,因為 回復量+你原先的hp >= 你的hp最大值,所以
它就不補了,直接秀"你已經滿血了"。
也就是實際上沒補血,你到的補血是你的自然回復or其它回復值。
這 bug 我剛修正了,它分兩種情況:
1.被補的對象本來 hp 值就 >= hp最大值
那就不補, 顯示你已經滿血了(100%以上)
2.反之,就補血,補完後高於 hp最大值,就降為 hp最大值
【 牧師 】第一百二十級摳頂機器(Laechan:進階牧師)
生命力: 394283/ 3917320 ( 10%) 體質(con): 10801/ 10801 (+10000)
感性(fel): 3581/ 3581 (+3000) 理性(int): 340/ 340 (+ 0)
10% 252% 222% > cast heal
你緩緩唸道: 瑪法呀..請讓此人的身與心都復原吧...
自你的手心發出了一陣柔和的白色光芒...
你開始唸起古老的咒文: ~ 30 ~ ~ ~ 治療術 ~
你身上受傷的地方發出淡淡的光芒, 傷勢逐漸回復中(15.00%)...
10% 252% 222% > score
【 牧師 】第一百二十級摳頂機器(Laechan:進階牧師)
生命力: 587911/ 3917320 ( 15%) 體質(con): 10801/ 10801 (+10000)
回了大概 20萬 左右,因為我 clerical heart 是 0 的關係。
(如果 heart clerical, 心法9900的話, 大概回了 377718)
總之,應該正常了^^; 感謝回報 bug,你可以 ask rewards,
瑪法維持能補最高血量的設定。
LAechan

Links booklink

Contact Us: admin [ a t ] ucptt.com