武功文件的函数接口说明:
int valid_enable(string usage);
	被 enalbe, jifa 命令调用
	usage 是基本武功的英文名称
	如果该武功是 usage 的特殊武功则返回 1

int valid_combine(string combo);
	被 prepare, bei 命令调用
	只出现在拳脚武功中
	combo 是另一种特殊武功的英文名称
	如果该武功可以和 combo 一起使用则返回 1

int valid_learn(object me);
	被 learn, xue, pratice, lian 调用
	me 是玩家的编号
	如果玩家符合学习该武功的条件则返回 1

int practice_skill(object me);
	被 pratice, lian 调用, 调用顺序在 valid_learn 之后
	如果 valid_lean 返回 0 则该函数不会被调用到
	一般在该函数中对玩家每一次练习所需的消耗进行扣除
	如果玩家符合练习该武功的条件则返回 1
	新改动：返回值为 1 表示按老标准提高武功
	返回值 > 1 表示按返回值提高武功

string query_skill_name(int level);
	返回级别 level 时的招式名称

mapping query_action(object me, object weapon);
	被战斗系统调用
	攻击性武功特有的函数
	返回值不能为空, 否则战斗精灵会报错误
	返回值的含义是
	([
		"action": "...",	// 招式的描述
		"dodge" : xxx,		// 这一招对接下来防御力的影响
		"damage": xxx,		// 一般只有武器性武功才有
					// 该值要和武器的伤害力运算
		"force" : xxx,		// 该值要和进攻方的后天膂力运算
		"damage_type": "...",	// 伤害类型的中文名称
	])
	以上值是供系统调用的, 武功文件里可以另外定义其它需要的参数

string query_dodge_msg(object me);
	返回值是轻功的描述

string perform_action_file(string action);
	被 perform 命令调用
	action 是 perform 命令所跟的参数
	返回值是执行该 perform 的文件名

mixed hit_ob(object me, object victim, int damage_bonus);
	使用该武功击中目标时被调用
	me 是攻方, victim 是被击中的目标, damage_bonus 是目标已经受到
	伤害的点数
	返回值如果是 string 类型, 会显示在攻击描述之后
	返回值如果是 int 类型, 会加到 damage_bonus 中
