作者laechan (小太保)
看板mud_sanc
标题[wizs] 特殊影响部份修改
时间Thu Feb 21 15:12:56 2013
在 /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
1F:→ laechan :/open/cmds/quest/quest_data/quest_data.c 02/23 16:13