□ 動作(action) 這裡所謂的「動作」(action)﹐是指生物戰鬥時的行為的最小單位﹐可以是揮出 一拳、踢出一腳、用劍一刺、射出一支飛鏢、丟出一個火球、甚至是嚐試一次逃跑等 等﹐只要是邏輯上屬於「同一時間」所作的行為﹐都可以歸類於一個動作。 我們假設所有的動作都是在戰鬥狀態下的行為﹐因為非戰鬥狀態下的動作直接做 出來就可以了﹐不需要花心思用以下將提到的格式描述它。反過來說﹐把戰鬥狀態下 的行為統一用「動作」來描述的理由很簡單﹐我們不希望一個人可以藉由任何巫師意 料之外的技巧在敵人揮出一劍的同時﹐丟出十個火球、撿起地上的三十瓶藥劑、等等 情形發生﹐另一方面﹐也提供巫師們在設計怪物、武器、物品等物件時﹐可以用比較 輕鬆的方式定義出一些變化較大的表現方式。 在程式中﹐我們用一個 mapping 來表示一個動作﹐值得一提的是﹐由於mapping 這種結構在 LPC 中是以位址傳遞(call by address)﹐因此為了安全起見﹐我們規定 所有處理動作的程式「絕不」修改其他物件所提供的動作 mapping 的內容 ﹐這個原 則是預防一些未來可能發生的錯誤出現。 在定義一個動作的 mapping 中﹐可能有以下的欄位﹐其中前面有 * 號的表示這 個欄位是可有可無的﹕ action 執行這個動作所出現的訊息﹐格式是和 message_vision 這個 simul efun 要求 的相同﹐例如 "$N對準$n的%s揮出一拳" ﹐其中的 %s 會用這個動作所攻擊的部 位名稱代替。 *post_action 這是一個 function type 的欄位﹐如果這個欄位被定義﹐combatd 會在 action 訊息印出之後呼叫這個 function﹐有不少戰鬥中的特殊效果都是利用這個方式 完成﹐如投射武器的消耗、某些戰鬥用的魔法等。 *damage 執行這個動作的傷害力修正﹐單位是百分比﹐範圍是大於 -100。 default: 0 *damage_type 攻擊命中時所造成的傷害種類﹐如"割傷"、"瘀傷"、"灼傷"等等﹐詳細的傷害種 類請參考其他文件。 default: "傷害" *dodge 這個動作對敵人躲避此一攻擊的修正百分率。 default: 0 *parry 這個動作對敵人招架此一攻擊的修正百分率。 default: 0 Annihilator@ES2 (01/17/95)