作者laechan (小太保)
看板mud_sanc
标题[wizs] spell 指令的 bug
时间Fri Oct 4 10:29:27 2013
在 spell 指令里面有一段是这样的:
if(me && userp(me))
{
if(adv_guild=="magemaster")
{
if(me && target)
call_other(fname,"start_effect",target,me,lv,skill,clients);
}
else if(me->query_temp("casting")<1)
me->set_temp("casting",1);
me->add("sp",-cost);
}
这意思是说如果玩家是大魔导士,它会先获得一个「一施展就
击出」的攻击,也就是 call_other 那个。
其实逆推时间点的话,确实是加上这一段之後 debug.log 才开
始暴增,我犯的错误就是我认为这一段没问题,而以为是法术
档、新区域怪物设定档等等的问题。
那麽,上面的段落有什麽问题呢?我认为大部份情况是没问题
的,有问题的地方在底下
me->set_temp("cmd_cast_data",({target,skob,lv,skill,clients,"spell "+str}));
也就是说
1.施展者为 magemaster, 而它第一轮攻击就把怪打死 => 没问题
2.施展者不为 magemaster, 吃 delay call => 也没问题
3.极少情况:施展者为 magemaster, 它第一轮怪没死,
这时 set_temp 但随即 cast 下去补刀死 => 出问题
以前没这 bug 的原因在於 spell 与 cast 不能并用,这就是我
犯的第二个错误,我在开放大魔导士时做了两件事
1.大魔导士一 spell 就可击出法术
2.不久後让 cast 可与 spell 一起使用
这就是我说的「复合型问题」,它其实是起因於两个原因,而不
是单一个,它造成的结果就是 delay call 的判断错误,因为怪
物在 delay call 的过程中已死,而这种情况也不是每次都出现
的。
而我目前是先取消大魔导士一 spell 就可击出法术的设定,改为
与所有法师一样都需呼叫 delay call,1892 debug.log 这个数
字就不再增加。
先观察一天试试。若确定不会再异常增加,大魔导士就取消该设
定。(因为我查过 delay call 找不出问题)
感谢 weapon 协助测试 bug,除了天使的翅膀(或其它黑市物)、
speed-cast 3000 以外 weapon 可再选择其它东西。
(顺便帮测 speed-cast 3000 3x 连击有无问题)
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.61.157.53