□ 技能系統

我們使用的技能系統是屬於多元成長途徑的系統﹐有別於傳統用經驗值換取等級的
方式﹐一個技能由兩個數值來描述﹕「等級」與「學習點數」﹐平常使用時只看等
級﹐學習點數完全不影響技能的效力。

由於技能的性質不同﹐我們將技能分為兩大類﹕基本技能跟特殊技能﹐基本技能又
可以稱為技能種類﹐所有的特殊技能都必須有至少一種的基本技能為基礎﹐舉例來
說﹐「xx劍法」是一種特殊技能﹐以「基本劍術」、「拆招卸力之法」為基礎﹐這
個意思是說﹐這種劍法可以被「使用」在劍術與拆招卸力的用途上﹐並不是說必須
先學過基本劍術與拆招卸力之法才能學這個劍術﹐有關技能的學習限制完全由技能
本身定義﹐系統不預作假設。

通常我們公式中計算技能等級的時候﹐使用的是一種稱為「有效等級」的計算方式
﹐所謂的有效等級﹐是以「技能種類」(基本技能)為索引的﹐特殊技能沒有有效等
級﹐因為有效等級的計算是合併 ぇ 基本技能、え 被「致能」的特殊技能﹐ 以及
 ぉ 裝備、法術等其他影響﹐所計算出來的﹐其中基本技能的等級以二分之一計算
﹐特殊技能以原來等級計算﹐裝備及其他法術影響以修正值計算(可正可負)。大概
的公式如下﹕

  有效等級 = (基本技能 / 2) + 特殊技能(enabled) + 修正值

大多數的公式中所稱的「技能等級」指的便是上面的有效等級。

□ 技能定義

所有的技能包括基本技能與特殊技能﹐我們都用一個物件來定義﹐定義技能的物件
必須繼承標準技能物件 SKILL﹐並且定義以下幾個函數﹕

string type()

  傳回技能的型態﹐目前有 "knowledge"、"martial" 兩種﹐其中 "martial" 型態
  的技能 learn 指令會自動限制當實戰經驗小於技能(不是有效技能)三次方的時候
  不能學習。

int valid_learn(object me)

  檢查 me 是否有學習這項技能的條件﹐這裡的學習包括 learn, study, practice
  ﹐但是不包括經由使用而進步的情形。如果合乎條件﹐傳回 1﹐否則傳回 0。

int valid_enable(string usage)

  檢查這個技能是否可以用在 usage 的用途上﹐若是﹐傳回 1﹐否則傳回 0。

int practice_skill(object me)

  讓一個人物「練習」一個技能﹐這個函數是由 practice 指令呼叫﹐作為技能物件
  的處理函數。

void skill_improved(object me)

  每當一個人物的技能等級提昇了﹐就會呼叫這個函數﹐你可以在這裡面做一些跟等
  級相關的改變或獎勵。

By Annihilator (07/28/95)