/* Do not remove the headers from this file! see /USAGE for more info. */
inherit "/obj/admtool/internal/base.c";
nomask string module_name() {
return "skill";
}
nomask string module_key() {
return "S";
}
private nomask void list_skills()
{
string * skills = sort_array(SKILL_D->query_skills(), 1);
string * result;
if ( sizeof(skills) == 0 )
{
write("No skills are defined yet.\n");
return;
}
result = ({ sprintf("%-20s %s", "Skill", "Internal name"),
repeat_string("-", 40) }) +
map(skills, function (string name)
{
string * parts = explode(name, "/");
return sprintf("%-20s %s",
repeat_string(" ",
sizeof(parts)-1) + parts[<1],
name);
}
);
more(result);
}
private nomask void rcv_add_skill(string skill_name)
{
string * result;
skill_name = lower_case(trim_spaces(skill_name));
if ( skill_name == "" )
return;
result = SKILL_D->register_skill(skill_name);
if ( !result )
write("ERROR: skill already exists.\n");
else
printf("Added: %s.\n", format_list(result));
}
private nomask void rcv_remove_skill(string skill_name)
{
string * result;
skill_name = lower_case(trim_spaces(skill_name));
result = SKILL_D->remove_skill(skill_name);
if ( !result )
write("ERROR: no such skill exists.\n");
else
printf("Removed: %s.\n", format_list(result));
}
nomask class command_info array module_commands() {
return ({
new(class command_info,
key : "l",
desc : "list skills",
action : (: list_skills :)),
new(class command_info,
key : "a",
proto : "[name]",
desc : "add a skill",
args : ({ "New skill name? " }),
action : (: rcv_add_skill :)),
new(class command_info,
key : "r",
proto : "[name]",
desc : "remove a skill",
args : ({ "Remove which skill? " }),
action : (: rcv_remove_skill :))
});
}