我預定分幾部份完成。
目前核心系統的 shut 部份已經使用內迴,但是還無法讓 wiz
透過修改 shut 內的參數來達到 n 連發的效果。
這個最近會搞定。
我發現 shut 目前的呼叫流程是...
mob->shut => shut->USER_D->shut => shut->SHUT_D->shut_tar
這個太浪費了,因為 USER_D 與 SHUT_D 都是外部程式,實際
上是可以省略中間的 USER_D->shut, 直接 SHUT_D->shut_tar
的。
這不僅可以實質減少一個物件呼叫,日後內迴實裝時還能實際
減少 n-1 個物件呼叫(原本 n 個呼叫變成 1 個呼叫就解決)。
修改計劃如下,以 user 為例..
/std/user/attack.c
=======================================================
varargs int shut(string msg,int damage,int chance,string kind,object tar)
{
USER_D-> shut(me, msg, damage, chance, kind, tar);
}
改成..
varargs int shut(string msg,int damage,int chance,string kind,
object tar,int times)
{
if(!tar)
if(! tar=me->query_current_attacker())
return 1;
if(!times) times=1;
SHUT_D->shut_tar(me,tar,msg,damage,chance,kind,times);
return 1;
}
日後再實裝 mixed kinds。
Laechan
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.231.234.210