#include <sys/types.h> #include <stdio.h> #include <string.h> #include <time.h> #include "merc.h" #include "interp.h" #include "tables.h" #include "rig_tables.h" #include "rig.h" /* * create_armor() * * Generates a piece of armor!! * * force_type - If set to random, will generate a random armor * force_material - If set, will force that material * quaility - If previous unset, determine quaility (poor = iron/steel, decent = steel/sivler, etc) * is_for_shop - Flags ITEM_INVENTORY Flag */ OBJ_DATA * create_armor(OBJ_DATA * obj, int force_type, int force_material, int quaility, bool is_for_shop) { char name_set[MSL]; /* Used for naming purposes */ char shor_set[MSL]; char long_set[MSL]; char mate_set[MSL]; char temp[MSL]; int obj_type = -1; /* Used for generation type */ int material_type = -1; free_string(obj->name); free_string(obj->short_descr); free_string(obj->description); free_string(obj->material); /* Ok determine if forced, if not random */ if (force_type == RIG_RANDOM) obj_type = number_range(0, rig_armor_max()); else obj_type = force_type; if (force_material == RIG_RANDOM) material_type = number_range(0, rig_material_max() - 1); else material_type = force_material; sprintf(name_set, rig_armor_table[obj_type].name, rig_material_table[material_type].name); sprintf(temp, "%s %s", rig_material_table[material_type].prefix, rig_material_table[material_type].name); sprintf(shor_set, rig_armor_table[obj_type].short_descr, temp); sprintf(long_set, rig_armor_table[obj_type].long_descr, temp); sprintf(mate_set, rig_material_table[material_type].name); obj->name = str_dup (name_set); obj->short_descr = str_dup (shor_set); obj->description = str_dup (long_set); obj->material = str_dup (mate_set); obj->item_type = ITEM_ARMOR; obj->wear_flags = rig_armor_table[obj_type].wear_flags; obj->cost = 1 + rig_armor_table[obj_type].cost * rig_material_table[material_type].cost_multi / 100; obj->weight = 1 + rig_armor_table[obj_type].weight * rig_material_table[material_type].weight_multi / 100; obj->value[0] = rig_armor_table[obj_type].armor_class; obj->value[0] += rig_material_table[material_type].armor_bonus; /* Add the material bonuses to the armor */ fix_material_bonus(obj, material_type); /* Cant be too careful*/ name_set[0] = '\0'; shor_set[0] = '\0'; long_set[0] = '\0'; mate_set[0] = '\0'; temp[0] = '\0'; return obj; } /* * create_clothing() * * Generates a piece of normal clothing */ OBJ_DATA * create_clothing(OBJ_DATA * obj, int force_type, bool expensive, bool is_for_shop) { char name_set[MSL]; /* Used for naming purposes */ char shor_set[MSL]; char long_set[MSL]; char mate_set[MSL]; char temp[MSL]; int obj_type = -1; /* Used for generation type */ free_string(obj->name); free_string(obj->short_descr); free_string(obj->description); free_string(obj->material); /* Ok determine if forced, if not random */ if (force_type == RIG_RANDOM) obj_type = number_range(0, rig_clothing_max()); else obj_type = force_type; if (expensive) { sprintf(name_set, "%s", rig_clothing_exp_table[obj_type].name); sprintf(shor_set, "%s", rig_clothing_exp_table[obj_type].name); sprintf(long_set, "%s is on the ground here.", rig_clothing_exp_table[obj_type].name); sprintf(mate_set, "%s", rig_clothing_exp_table[obj_type].name); obj->wear_flags = rig_clothing_exp_table[obj_type].wear_flags; obj->cost = rig_clothing_exp_table[obj_type].cost; obj->weight = rig_clothing_exp_table[obj_type].weight; } else { sprintf(name_set, "%s", rig_clothing_table[obj_type].name); sprintf(shor_set, "%s", rig_clothing_table[obj_type].name); sprintf(long_set, "%s is on the ground here.", rig_clothing_table[obj_type].name); sprintf(mate_set, "%s", rig_clothing_table[obj_type].name); obj->wear_flags = rig_clothing_table[obj_type].wear_flags; obj->cost = rig_clothing_table[obj_type].cost; obj->weight = rig_clothing_table[obj_type].weight; } obj->name = str_dup (name_set); obj->short_descr = str_dup (shor_set); obj->description = str_dup (long_set); obj->material = str_dup (mate_set); obj->item_type = ITEM_CLOTHING; /* Cant be too careful*/ name_set[0] = '\0'; shor_set[0] = '\0'; long_set[0] = '\0'; mate_set[0] = '\0'; temp[0] = '\0'; return obj; }