/**
* This is an inheritable file to deal with the more dynamic nature of
* craft skills. So we can add in new ones without disturbing the balance
* everything.
* @author Pinkfish
* @started Thu Nov 11 18:51:01 PST 1999
*/
#include <skills.h>
private string *_craft_skill_tree;
void add_craft_skill(string name);
void create() {
_craft_skill_tree = ({ });
add_craft_skill("crafts.smithing.gold");
add_craft_skill("crafts.smithing.silver");
add_craft_skill("crafts.smithing.black.tool");
add_craft_skill("crafts.smithing.black.weapon");
add_craft_skill("crafts.smithing.black.armour");
add_craft_skill("crafts.smithing.gem.cutting");
add_craft_skill("crafts.smithing.gem.polishing");
add_craft_skill("crafts.smithing.gem.setting");
add_craft_skill("crafts.mining.gem");
add_craft_skill("crafts.mining.ore.panning");
add_craft_skill("crafts.mining.mineral");
add_craft_skill("crafts.hunting.tracking");
add_craft_skill("crafts.hunting.fishing");
add_craft_skill("crafts.hunting.trapping");
add_craft_skill("crafts.carpentry.furniture");
add_craft_skill("crafts.carpentry.coopering");
add_craft_skill("crafts.carpentry.turning");
add_craft_skill("crafts.carpentry.whittling");
add_craft_skill("crafts.pottery.forming.throwing");
add_craft_skill("crafts.pottery.forming.shaping");
add_craft_skill("crafts.pottery.glazing");
add_craft_skill("crafts.pottery.staining");
add_craft_skill("crafts.pottery.firing");
add_craft_skill("crafts.materials.leatherwork");
add_craft_skill("crafts.materials.weaving");
add_craft_skill("crafts.materials.skinning");
add_craft_skill("crafts.materials.spinning");
add_craft_skill("crafts.materials.needlework");
add_craft_skill("crafts.materials.dyeing");
add_craft_skill("crafts.husbandry.plant.edible");
add_craft_skill("crafts.husbandry.plant.herbal");
add_craft_skill("crafts.husbandry.plant.milling");
add_craft_skill("crafts.husbandry.plant.tree");
add_craft_skill("crafts.husbandry.animal.grooming");
add_craft_skill("crafts.husbandry.animal.breeding");
add_craft_skill("crafts.culinary.cooking");
add_craft_skill("crafts.culinary.baking");
add_craft_skill("crafts.culinary.butchering");
add_craft_skill("crafts.culinary.preserving");
add_craft_skill("crafts.culinary.brewing");
add_craft_skill("crafts.culinary.distilling");
add_craft_skill("crafts.arts.design");
add_craft_skill("crafts.arts.calligraphy");
add_craft_skill("crafts.arts.drawing");
add_craft_skill("crafts.arts.painting");
add_craft_skill("crafts.arts.printing");
add_craft_skill("crafts.arts.sculpture");
add_craft_skill("crafts.points");
} /* create() */
private mixed *add_craft_skill_int(string *bits,
mixed *arr) {
int pos;
pos = member_array(bits[0], arr);
if (pos == -1) {
pos = sizeof(arr);
arr += ({ bits[0], 0, 0, ({ }) });
}
if (sizeof(bits) > 1) {
arr[pos + SKILL_BIT] = add_craft_skill_int(bits[1..],
arr[pos + SKILL_BIT]);
}
return arr;
} /* add_craft_skill_int() */
private void add_craft_skill(string name) {
string *bits;
bits = explode(name, ".");
_craft_skill_tree = add_craft_skill_int(bits, _craft_skill_tree);
} /* add_craft_skill() */
/**
* This method returns the craft skill tree.
* @return the crafts skill tree.
*/
mixed *query_crafts_skill_tree() {
return _craft_skill_tree;
} /* query_crafts_skill_tree() */