[wizs] spell 指令的 bug
在 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
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
15
26