/** * Blah, standard header, hopefully something good. :( * Fill this out when I get something actually working. */ #define MAT_DIR "/std/artisans/materials/" nosave mapping material_down; nosave mapping material_values; void create() { material_down = ([ "leather" : MAT_DIR+"leather.c" ]); material_values = ([ "leather" : 10 ]); //Units value per unit weight: may need changing. } string query_material_down(string material) { return material_down[material]; } mapping query_materials_down() { //This would be needed when? return material_down; } int query_material_value(string material) { return material_values[material]; } mapping query_materials_value() { //See query_materials_down(). return material_values; } //Ok, you think of a better name! :) mapping query_create_object_mapping(mapping material_amounts, object who) { object *inventory; object ob; string material; int amount; mapping objects = ([]); inventory = all_inventory(who); foreach(ob in inventory) { foreach(material in keys(material_amounts)) { if(ob->query_material()[material]) { amount = (ob->query_weight() * ob->query_material()[material]) / 100; //Percent * weight. if(amount >= material_amounts[material]) { objects += ([ ob : material_amounts[material] ]); map_delete(material_amounts, material); //Fullfilled. } else { objects += ([ ob : ob->query_weight() ]); material_amounts[material] -= amount; } continue; } } } if(sizeof(keys(material_amounts)) < 1) { objects += ([ "SUCCESS" : 1 ]); } else { objects += ([ "SUCCESS" : 0 ]); } return objects; }