#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"
/*
* cmd_makerig()
*
* Makes an item of specific type
*/
void cmd_makerig (CHAR_DATA * ch, char *argument)
{
char arg1[MSL];
char arg2[MSL];
char arg3[MSL];
OBJ_DATA * obj;
int material;
int item;
argument = one_argument(argument, arg1);
argument = one_argument(argument, arg2);
argument = one_argument(argument, arg3);
if (arg1[0] == '\0' || arg2[0] == '\0' || arg3[0] == '\0')
{
ptc(ch, " Syntax: makerig <type> <material> <name>\n");
ptc(ch, " Valid types are:\n");
ptc(ch, " weapon, armor, wizscroll, priscroll, potion_norm\n");
ptc(ch, " potion_heal, beer, food, gem\n");
return;
}
if (!str_prefix(arg1, "weapon"))
{
material = rig_material_lookup(arg2);
item = rig_weapon_lookup(arg3);
if (material == -1 || item == -1)
{
ptc(ch, "Error, invalid material/item.\n");
return;
}
obj = create_object (get_obj_index (30), 0);
create_weapon(obj, item, material, 1, FALSE);
obj_to_char (obj, ch);
ptc(ch, "You have created a %s\n", obj->short_descr);
return;
}
if (!str_prefix(arg1, "armor"))
{
material = rig_material_lookup(arg2);
item = rig_armor_lookup(arg3);
if (material == -1 || item == -1)
{
ptc(ch, "Error, invalid material/item.\n");
return;
}
obj = create_object (get_obj_index (30), 0);
create_armor(obj, item, material, 1, FALSE);
obj_to_char (obj, ch);
ptc(ch, "You have created a %s\n", obj->short_descr);
return;
}
if (!str_prefix(arg1, "wizscroll"))
{
item = rig_wizscroll_lookup(arg2);
if (item == -1)
{
ptc(ch, "Error, invalid material/item.\n");
return;
}
obj = create_object (get_obj_index (30), 0);
create_wizscroll(obj, item);
obj_to_char (obj, ch);
ptc(ch, "You have created a %s\n", obj->short_descr);
return;
}
if (!str_prefix(arg1, "priscroll"))
{
item = rig_priscroll_lookup(arg2);
if (item == -1)
{
ptc(ch, "Error, invalid material/item.\n");
return;
}
obj = create_object (get_obj_index (30), 0);
create_priscroll(obj, item);
obj_to_char (obj, ch);
ptc(ch, "You have created a %s\n", obj->short_descr);
return;
}
if (!str_prefix(arg1, "potion_norm"))
{
item = rig_potion_lookup(arg2);
if (item == -1)
{
ptc(ch, "Error, invalid material/item.\n");
return;
}
obj = create_object (get_obj_index (30), 0);
create_potion(obj, item);
obj_to_char (obj, ch);
ptc(ch, "You have created a %s\n", obj->short_descr);
return;
}
if (!str_prefix(arg1, "potion_heal"))
{
item = rig_potion_heal_lookup(arg2);
if (item == -1)
{
ptc(ch, "Error, invalid material/item.\n");
return;
}
obj = create_object (get_obj_index (30), 0);
create_potion_heal(obj, item);
obj_to_char (obj, ch);
ptc(ch, "You have created a %s\n", obj->short_descr);
return;
}
if (!str_prefix(arg1, "beer"))
{
item = rig_beer_lookup(arg2);
if (item == -1)
{
ptc(ch, "Error, invalid material/item.\n");
return;
}
obj = create_object (get_obj_index (30), 0);
create_beer(obj, item);
obj_to_char (obj, ch);
ptc(ch, "You have created a %s\n", obj->short_descr);
return;
}
if (!str_prefix(arg1, "food"))
{
item = rig_food_lookup(arg2);
if (item == -1)
{
ptc(ch, "Error, invalid material/item.\n");
return;
}
obj = create_object (get_obj_index (30), 0);
create_food(obj, item);
obj_to_char (obj, ch);
ptc(ch, "You have created a %s\n", obj->short_descr);
return;
}
if (!str_prefix(arg1, "gem"))
{
item = atoi(arg2);
if (item == -1)
{
ptc(ch, "Error, invalid material/item.\n");
return;
}
obj = create_object (get_obj_index (30), 0);
create_gem(obj, item);
obj_to_char (obj, ch);
ptc(ch, "You have created a %s\n", obj->short_descr);
return;
}
else
{
cmd_makerig(ch, "");
return;
}
return;
}
/*
* cmd_listrig()
*
* Immortal utility to list possible objects
*/
void cmd_listrig(CHAR_DATA * ch, char *argument)
{
char arg1[MSL];
int count, i;
argument = one_argument(argument, arg1);
if (arg1[0] == '\0')
{
ptc(ch, "Syntax: listrig <type>\n");
ptc(ch, " Valid types are:\n");
ptc(ch, " Weapon, armor, material, wizscroll, food\n");
ptc(ch, " priscroll, potion_norm, potion_heal, beer\n");
ptc(ch, " clothing, clothing_exp\n");
return;
}
if (!str_prefix(arg1, "weapon"))
{
count = rig_weapon_max();
ptc(ch, " Displaying list of Weapons: (total is %d)\n", count);
ptc(ch, " Name Type Min Max Noun Wght Cost\n");
for (i = 0; rig_weapons_table[i].name != NULL; i++)
{
ptc(ch, "%-25s %-10s %-3d %-3d %-7s %-4d %-4d\n",
rig_weapons_table[i].name,
weapontype_lookup(rig_weapons_table[i].value[0]),
rig_weapons_table[i].value[1],
rig_weapons_table[i].value[2],
attack_table[rig_weapons_table[i].value[3]].noun,
rig_weapons_table[i].weight,
rig_weapons_table[i].cost);
}
return;
}
if (!str_prefix(arg1, "armor"))
{
count = rig_armor_max();
ptc(ch, " Displaying list of Armor: (total is %d)\n", count);
ptc(ch, " Name Location AC Wght Cost\n");
for (i = 0; rig_armor_table[i].name != NULL; i++)
{
ptc(ch, "%-25s %-10s %-3d%-4d %-4d\n",
rig_armor_table[i].short_descr,
wear_bit_name (rig_armor_table[i].wear_flags),
rig_armor_table[i].armor_class,
rig_armor_table[i].weight,
rig_armor_table[i].cost);
}
return;
}
if (!str_prefix(arg1, "clothing"))
{
count = rig_clothing_max();
ptc(ch, " Displaying list of Clothing: (total is %d)\n", count);
ptc(ch, " Name Location Wght Cost\n");
for (i = 0; rig_armor_table[i].name != NULL; i++)
{
ptc(ch, "%-35s %-10s %-4d %-4d\n",
rig_clothing_table[i].name,
wear_bit_name (rig_clothing_table[i].wear_flags),
rig_clothing_table[i].weight,
rig_clothing_table[i].cost);
}
return;
}
if (!str_prefix(arg1, "clothing_exp"))
{
count = rig_clothing_exp_max();
ptc(ch, " Displaying list of clothing (Expensive): (total is %d)\n", count);
ptc(ch, " Name Location Wght Cost\n");
for (i = 0; rig_armor_table[i].name != NULL; i++)
{
ptc(ch, "%-35s %-10s %-4d %-4d\n",
rig_clothing_exp_table[i].name,
wear_bit_name (rig_clothing_exp_table[i].wear_flags),
rig_clothing_exp_table[i].weight,
rig_clothing_exp_table[i].cost);
}
return;
}
if (!str_prefix(arg1, "material"))
{
count = rig_material_max();
ptc(ch, " Displaying list of Materials: (total is %d)\n", count);
ptc(ch, "Pre Name Armor Wpn Arm Material Wght Cost\n");
for (i = 0; rig_material_table[i].name != NULL; i++)
{
ptc(ch, "%-2s %-25s %-5s %-3d %-3d %-7s %-3d%s %-3d%s\n",
rig_material_table[i].prefix,
rig_material_table[i].name,
truefalse(rig_material_table[i].armor_only),
rig_material_table[i].weapon_damage,
rig_material_table[i].armor_bonus,
armortype_lookup(rig_material_table[i].armor_type),
rig_material_table[i].weight_multi, "%",
rig_material_table[i].cost_multi, "%");
}
return;
}
if (!str_prefix(arg1, "wizscroll"))
{
count = rig_wizscroll_max();
ptc(ch, " Displaying list of Wizard Scrolls : (total is %d)\n", count);
ptc(ch, "Name Cost\n");
for (i = 0; rig_wizscroll_table[i].name != NULL; i++)
{
ptc(ch, "%-25s %-5d\n",
rig_wizscroll_table[i].name,
rig_wizscroll_table[i].cost);
}
return;
}
if (!str_prefix(arg1, "priscroll"))
{
count = rig_priscroll_max();
ptc(ch, " Displaying list of Priest Scrolls : (total is %d)\n", count);
ptc(ch, "Name Cost\n");
for (i = 0; rig_priscroll_table[i].name != NULL; i++)
{
ptc(ch, "%-25s %-5d\n",
rig_priscroll_table[i].name,
rig_priscroll_table[i].cost);
}
return;
}
if (!str_prefix(arg1, "potion_norm"))
{
count = rig_potion_max();
ptc(ch, " Displaying list of Normal Potions : (total is %d)\n", count);
ptc(ch, "Name Cost\n");
for (i = 0; rig_potion_table[i].name != NULL; i++)
{
ptc(ch, "%-25s %-5d\n",
rig_potion_table[i].name,
rig_potion_table[i].cost);
}
return;
}
if (!str_prefix(arg1, "potion_heal"))
{
count = rig_potion_heal_max();
ptc(ch, " Displaying list of Healing Potions : (total is %d)\n", count);
ptc(ch, "Name Cost\n");
for (i = 0; rig_potion_heal_table[i].name != NULL; i++)
{
ptc(ch, "%-25s %-5d\n",
rig_potion_heal_table[i].name,
rig_potion_heal_table[i].cost);
}
return;
}
if (!str_prefix(arg1, "beer"))
{
count = rig_beer_max();
ptc(ch, " Displaying list of Beer : (total is %d)\n", count);
ptc(ch, "Name Cost\n");
for (i = 0; rig_beer_table[i].name != NULL; i++)
{
ptc(ch, "%-25s %-5d\n",
rig_beer_table[i].name,
rig_beer_table[i].cost);
}
return;
}
if (!str_prefix(arg1, "food"))
{
count = rig_food_max();
ptc(ch, " Displaying list of food : (total is %d)\n", count);
ptc(ch, "Name Cost\n");
for (i = 0; rig_food_table[i].name != NULL; i++)
{
ptc(ch, "%-25s %-5d\n",
rig_food_table[i].name,
rig_food_table[i].cost);
}
return;
}
if (!str_prefix(arg1, "test"))
{
OBJ_DATA * obj;
obj = create_object (get_obj_index (30), 0);
create_armor(obj, 1, rig_material_lookup("leather"), 1, FALSE);
obj_to_char (obj, ch);
/*
for (i = 0; i != 600; i++)
{
obj = create_object (get_obj_index (30), 0);
create_gem(obj, 1);
obj_to_char (obj, ch);
}
*/
stc("Done.\n", ch);
return;
}
else
{
cmd_listrig(ch, "");
return;
}
return;
}