Re: [閒聊] 巴爾BUG原因猜測
看板mud_sanc (Sanctuary - 聖殿)作者laechan (小太保)時間16年前 (2010/04/08 09:53)推噓0(0推 0噓 0→)留言0則, 0人參與討論串2/3 (看更多)
依據 #1B8wpom2
我猜各位提到的「巴爾」是指 /d/ppl/wide/virtue/mob/baal.c
一、void create ()
{
set("level",235);
::create () ;
set("id",({"baal"}));
通常我會建議 mob 在 ::create() 下面多一行
seteuid(getuid(this_object()));
這有時候可以解決一些沒心跳的問題,因為有些動作或函數
的呼叫,它會看 UID。
set(xxx,-3000000+(-100000*random(50)));
看到這一行我突然想到這應該可以用在幻影術的幻影攻擊力
折算上。
二、set_temp("selfshield2",({500000,1,this_object(),this_object()}));
有用到 temp data 的怪物最好 inherit SMONSTER;
其實 boss 類的若不是血牛型,最好都 inherit SMONSTER
會比較好一些。
三、在 special_fun 裡有幾個錯誤..
// foreach(ob in obs)
call_other(....,ob,frog,....);
因為你把 foreach 給 // 了,所以 ob 這時是空物件。
把 ob 改成 ppl 應該就 ok 了(這應該是把 foreach 給 // 的原意)
if(!present("BAGOL DAGOR",room))
{
room=environment(frog);
在怪物消失的瞬間 frog 會變空物件。有時會變成 ppl
瞬間消失(如 quit),這個有時要做必要的判斷,特別是..
clone_object(VS"dagor_att") -> move(room);
這個最好寫成
if(room)
clone_object(VS"dagor_att") -> move(room);
這是我自己的經驗。底下也是..
foreach(ob in obs)
{
if(!ob) continue;
dex = (int)ob->query("stat/dex") / 100;
上面的可以改改看再測。
Laechan
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.225.161.132
討論串 (同標題文章)
完整討論串 (本文為第 2 之 3 篇):
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章