ES2 MUD LIB :: 東方故事二(ES2) 天朝帝國 mudlib 瀏覽展示

/doc/wiz/npc_applies

HOME :: doc :: wiz :: npc_applies
CONTENTS
==========================================================================
accept_fight
accept_kill
accept_info
accept_object
acquire_skill
detect_steal
win_fight
lose_fight
==========================================================================
int accept_fight(object who)

由 fight 指令所呼叫,決定人物是否接受別人比武較量的挑戰。

傳入參數
who 挑戰者

傳回值
1 接受挑戰
0 不接受挑戰﹐你最好要用 notify_fail 設定訊息告訴下指令的人不
接受的原因。
--------------------------------------------------------------------------
int accept_kill(object who)

由 kill 指令所呼叫,當人物遭受別人使用 kill 指令攻擊時,可以利用這個 apply
定義適當的反應,如逃跑、呼救、取出武器等。因為 kill 沒有辦法拒絕,所以傳回
值是不會影響戰鬥發生與否﹐而是指定 kill 指令要不要也讓此人物對敵人使用 
kill。

傳入參數
who 敵人

傳回值
1 不做其他處理。
0 也對敵人進行 kill。
--------------------------------------------------------------------------
int accept_info(object who, string command);

由一些查詢資訊的指令所呼叫,用來決定玩家是否能查詢這個 NPC 的資訊﹐例如負責
傳授技能的 NPC 會允許拜他為師的玩家查詢他的技能﹐玩家所雇用的 NPC 也應該允
許雇主查詢他的技能與狀態。

傳入值
who 查詢資訊的玩家
command 查詢資訊的指令,可能值為 "score", "skills"

傳回值
1 允許查詢。
0 不允許查詢(預設值)。

(註:巫師查詢 NPC 資訊不會呼叫這個 apply)
--------------------------------------------------------------------------
int accept_object(object who, object item);

由 give 指令所呼叫,決定人物是否接受別人所給的物品。

傳入參數
who     下 give 命令的人物
item 所 give 的物品

傳回值
1 接受
0 不接受﹐你最好要用 notify_fail 設定訊息告訴下指令的人不接受
的原因。
--------------------------------------------------------------------------
int acquire_skill(object who, string skill)

由 acquire 指令所呼叫,當別人向這名人物請教技能時,用來決定這名人物的反應
﹐典型的動作是  拒絕,用 notify_fail 設定拒絕原因的訊息﹐傳回 0。  其
他,做該做的動作、該說的話,如果願意傳授技能,用 who->improve_skill() 給予
一些初始的技能練習值,傳回 1。

傳入參數
who 下 acquire 指令的人
skill 技能名稱

傳回值
1 指令完成。
0 因為某種原因拒絕傳授下 acquire 指令的人此一技能,最好用
notify_fail 設定拒絕原因的訊息。
--------------------------------------------------------------------------
int detect_steal(object player, object item, int skill_points)

由 steal 指令所呼叫,當有人對這名人物進行偷竊時,會呼叫這個函數以讓 NPC 有
機會偵測到有人在偷他東西。

傳入參數
player 下 steal 指令的人
item 所偷竊的東西
sp 技能點數,表示偷竊技能的高低,見 /cmds/std/steal.c

傳回值
1 這名人物發覺了這個偷竊行為,並且使得小偷無法取得所偷的物品。
0 這名人物沒有發覺,小偷可以取得所偷的物品。
--------------------------------------------------------------------------
void win_fight(object opponent)
void lose_fight(object opponent)

這兩個 apply 分別在 NPC 和其他人物進行 fight 形式的戰鬥,戰勝(對方體力耗盡)
及戰敗(自己體力耗盡)時呼叫,你可以讓 NPC 在這個函數裡說一些場面話或用 do_chat
啟動一些動作,由於這個函數被呼叫的時機是在攻擊方 heart_beat 進行到一半﹐因此
不要在這個函數裡做太多耗時的動作,return 前記得呼叫 ::win_fight(opponent) 或
::lose_fight(opponent); 以便 hook 系統標準的內定函數。

傳入參數
opponent 被擊敗的對手(win_fight),或擊敗這個 NPC
的對手(lose_fight)。

傳回值

--------------------------------------------------------------------------
HOME :: doc :: wiz :: npc_applies