|
bug 描述: sophia 护镖job 中使用perform chan,战斗结束后,华山job 中使用perform sanhuan,提示"你现在正在使用「缠」字诀。"
sanhuan.c 中有一段:
if( (int)me->query_temp("tjj/chan") )
return notify_fail("你现在正在使用「缠」字诀。\n");
由此得出 sophia 被 me->set_temp("tjj/chan", 1) 标记。
据sophia 回忆,perform chan 已经缠中npc,不过由于chan 牵制攻击的特性,npc 在busy 过后 pfm 挂掉了护镖搭档 luobo,这时战斗结束。
据此推断 check_fight() 的执行过程中战斗结束,修改后的chan 有这么一段:
else if(!target->is_busy() && !me->is_busy() && living(target)){
if (random(i))
checking(me, target, wep);
else {
me->set_temp("tjj/chan", 1); // 问题出在这
me->start_perform(1, "缠");
战斗结束,luobo 阵亡。判断条件 (!target->is_busy() && !me->is_busy() && living(target) 为真,假设random(i) 当时为假,me->set_temp("tjj/chan", 1) 被标记,start_perform 应该在chan 开始判断战斗状态时被终止。那tjj/chan 标记将不被删除。
若random(i)为真,将调用 checking(),pfm 命中条件若通过,仍会出现上述bug 描述的状况。
修改建议: 1) 修改 me->set_temp("tjj/chan", 1) 为delete_temp
2) 在checking 里增加去战斗状态的判断。
[ 本帖最后由 ilovemin@ts 于 2009-10-26 09:19 编辑 ] |
|