ES2 MUD LIB :: 東方故事二(ES2) 天朝帝國 mudlib 瀏覽展示
/doc/mudlib/condition
□ 人物症狀
所謂的症狀(condition)就是一個人物因為受傷、中毒、或法術影響所產生的
各種症狀﹐在 ES2 mudlib 裡面定義成「需要每次 recover 時變化的症狀」
﹐換句話說﹐人物症狀是一種相當耗費系統 CPU 時間的物件﹐而且一發生錯
誤就可能導致 lost heart beat。
將一個症狀加到一個人物身上十分簡單﹐人物物件繼承的 F_CONDITION 中定
義了一個界面函數 apply_condition() 讓你將一個症狀加諸於該名人物身上
﹐這個函數第一個參數是定義這個症狀的物件檔名﹐第二個參數則是一個
mixed 型態的任意參數﹐用來描述這名人物此一症狀的資訊。
apply_condition 之所以用這種和 function 比較起來較慢的格式來定義一個
症狀﹐主要是為了讓人物的症狀狀態能被 save_object() 儲存下來﹐因此當
你設計新的症狀時﹐請注意描述這個人物症狀的參數中不要使用 object 型態
的欄位﹐以免在 save 及 restore 之後失去這個欄位的內容。
定義症狀的物件十分簡單﹐F_CONDITION 在每次人物 recover 時間到﹐呼叫
heal_up() 之前﹐會對人物所有的症狀之定義物件呼叫 update_condition()
這個自定函數﹐呼叫傳入兩個參數﹐第一個是 object 型態﹐也就是帶有這個
症狀的人物﹐第二個則是用來記錄這名人物該症狀資訊的 mixed 型態參數﹐
你在症狀定義物件中宣告第二個參數的時候可以任意指定它的型態﹐F_CONDITION
並不會對這個變數做任何處理。
update_condition() 的傳回值是一個表示多個 flag 的整數﹐這些 flag 都定
義在 中﹐如果傳回值為 0﹐這個症狀會在 return 之後被從這
名人物身上移除(這樣設計可以讓錯誤的症狀定義物件檔名在一次呼叫之後立刻
被移除)。
CND_CONTINUE 若傳回值的這個 flag 為 on﹐則下次 recover 時這個症狀
會再次被呼叫。
By Annihilator(10/03/95)