// skillstru.c
// Last Modified by winder on May. 15 2001

#include <ansi.h>
inherit SKILL;

/* Ϣ */
mapping *action = ({
([	"action"     : $NԼ$wԼ$nԷ$lԷ岿λ
	"skill_name" : "",
	"lvl"        : 0ʼ
]),
});

/* мϢ */
string *parry_msg = ({
	$NԼ$wԼ$nԷ$lԷ岿λ
});

/* ṦϢ */
string *dodge_msg = ({
	$NԼ$nԷ
});

/* ɼ书 */
int valid_enable(string usage) { return usage=="sword" || usage=="parry"; }

/* 书ͣknowledgeforcedodgeskill */
string type() { return "skill"; }

/* 뻥书 */
int valid_combine(string combo) { return combo=="king-of-dragon"; }

/* ЧĿǰû */
int valid_effect(object me, object weapon, string name, int skill) { }

/* ѧϰpracticeҲҪⱾԣڹ͹ˡ */
int valid_learn(object me) { }

/* ϰ */
int practice_skill(object me) { }

/* ѧϰ */
string query_skill_name(int level)
{
	int i;
	for(i = sizeof(action); i > 0; i--)
		if(level >= action[i-1]["lvl"])
			return action[i-1]["skill_name"];
}

/* Ϣ */
void skill_improved(object me) { }

/* жԷĸ */
mixed hit_ob(object me, object victim, int damage_bonus) { }

/* жԷĸãĿǰҪڹ factor=  damage_bonus= */
mixed be_hit_ob(object me, object victim, int damage_bonus, int factor) { }

/* ɹ书Ϣ */
mapping query_action(object me, object weapon)
{
/* d_e=dodge_effect p_e=parry_effect f_e=force_effect m_e=damage_effect */
	int d_e1 = -30;
	int d_e2 = 30;
	int p_e1 = -30;
	int p_e2 = 30;
	int f_e1 = 100;
	int f_e2 = 300;
	int m_e1 = 100;
	int m_e2 = 400;
	int i, lvl, seq, ttl = sizeof(action);

	lvl = (int) me->query_skill("changge-jian", 1);
	for(i = ttl; i > 0; i--)
		if(lvl > action[i-1]["lvl"])
		{
			seq = i; /*  */
			break;
		}
	seq = random(seq);       /* ѡ */
	return ([
		"action"      : action[seq]["action"],
		"dodge"       : d_e1 + (d_e2 - d_e1) * seq / ttl,
		"parry"       : p_e1 + (p_e2 - p_e1) * seq / ttl,
		"force"       : f_e1 + (f_e2 - f_e1) * seq / ttl,
		"damage"      : m_e1 + (m_e2 - m_e1) * seq / ttl,
		"damage_type" : random(2) ? "" : "",
	]);
}

/* м书Ϣ */
string query_parry_msg(string limb)
{
	return parry_msg[random(sizeof(parry_msg))];
}

/* ṦĴϢ */
string query_dodge_msg(string limb)
{
	return dodge_msg[random(sizeof(dodge_msg))];
}

/* 书Ѷϵ = 100 / (learn_bonus+parctice_bonus+10) skill.c */
/* ÿǱѧıܵ = random(query_int()/2+query("int")/2+bonus) */
/* ƷΧ 0 - 30 */
int learn_bonus() { return 10; }

/* ÿϰüܵ = (random(书*书/(skill+1)))/5+bonus */
/* ƷΧ 0 - 30 */
int practice_bonus() { return 15; }

/* ʦڲıʡrandom(success()) == 0ʱ⡣ʱá
ֵԽԽ⡣˻ͣͣlearn & teach */
int success() { return 10; }

/* ɲƷΧ11.5Ͻ꣡ĿǰṦ */
int power_point() { return 1.2; }

/* ļĿ¼ */
string perform_action_file(string action)
{
	return __DIR__"changge-jian/" + action;
}

/* ڹӦļĿ¼ */
string exert_function_file(string func)
{
	return __DIR__"changge-jian/" + func;
}

/* Ϣ */
int help(object me)
{
	write(HIC"\n"NOR"\n");
	write(@HELP

HELP
	);
	return 1;
}
