[wizs] 特殊影響部份修改
在 /std/user.c 的 check_time 函數裡有兩行是這麼寫的...
if(data["special_effect"])
USER_D->special_effect(me); //偵測特殊效應 ex: sick,poison,傷口 etc.
將改成底下...
if(temp_data["special_effect"])
USER_D->special_effect(me);
查看 user_d.c 的 special_effect 函數..
void special_effect(object me)
{
int time,interval,damage;
string msg;
if(!me) return ;
if(me->query_temp("tmp_immortal")>time())
return ;
interval=me->query("poison/interval");
damage=me->query("poison/damage");
time=me->query("poison/time");
msg=me->query("poison/msg");
if(!time)
{
write(HIC"你發覺毒性似乎消退了,身體也比較舒服了!\n"NOR);
me->delete("poison");
return ;
}
if(msg)
write(HIG+msg+"\n"+NOR);
else
write(HIR"你似乎中了一種無名之毒,頭暈目眩感覺好像快死掉了!\n"NOR);
tell_room(environment(this_player()),
me->query("chi_name")+"臉色突然變得很可怕>!\n",me);
me->receive_damage(damage);
time-=1;
me->set("poison/time",time);
}
這函數已經不符目前的需求,而且我並不喜歡它呼叫 user_d.c,
它將會改成呼叫 /std/new_ob 下的東西。
我的想法是,當玩家身上有參數在時,它就開始 work,虛擬效果
大致上有幾個元素..
一、要 show 給玩家看的訊息
二、要執行的效果
三、還剩下幾次
四、如何提前終止它
按照「虛擬物品的實體物件」設計原則,每一種效果(包括毒物)都
會配置一個物件來做為呼叫目標,例如中毒呼叫 poison.c、沉睡
呼叫 sleep.c, ......
按照此原則,需傳給物件的資料一般只需 me 即可。
這東西最快今天會有雛型出現。
Laechan
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.61.157.53
→
02/23 16:13, , 1F
02/23 16:13, 1F
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
13
30