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