/*
 *	Item Generator version 2
 *	File Description: Generator.Armor.c
 *		This file holds the generation armor.
 *
 *	This file sets all avaible properties to the object
 *	From keyword/short_descr/long, wear flags, value
 *	weight, and AC values.
 *
 *	This generator also makes use of the prefix/suffix generator for armor
 *
 *	The names of the items have no link to anything but randomness.
 *
 *							-Thri
 */


#if defined(macintosh)
#include <types.h>
#else
#include <sys/types.h>
#endif
#include <ctype.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include "merc.h"
#include "interp.h"
#include "magic.h"
#include "recycle.h"
#include "tables.h"

OBJ_DATA *
gen_armor_rare (OBJ_DATA * obj, int level)
{
	char name_set[MSL];
	char shor_set[MSL];
	char long_set[MSL];
	int prefix_name = number_range(1, 12);
	int suffix_name = number_range(1, 10);
	char prefix[MSL];
	char suffix[MSL];
	int armor_type = number_range(1, 11);

	obj = create_object (get_obj_index (919), 0);
	obj->wear_flags = ITEM_TAKE;

	switch(number_range(1, 2))
	{
		default:
		case 1:
		gen_armor_choice (obj, level);
		gen_armor_choice (obj, level);
		break;
		case 2:
		gen_armor_choice (obj, level);
		gen_armor_choice (obj, level);
		gen_armor_choice (obj, level);
		break;
	}

	switch(prefix_name)
	{
		default:
		case 1:
		sprintf( prefix, "Ancient");
		break;
		case 2:
		sprintf( prefix, "Leather");
		break;
		case 3:
		sprintf( prefix, "Death");
		break;
		case 4:
		sprintf( prefix, "Destruction");
		break;
		case 5:
		sprintf( prefix, "Golden");
		break;
		case 6:
		sprintf( prefix, "Onyx");
		break;
		case 7:
		sprintf( prefix, "Micia");
		break;
		case 8:
		sprintf( prefix, "Jet black");
		break;
		case 9:
		sprintf( prefix, "Jeweled");
		break;
		case 10:
		sprintf( prefix, "Moonstone");
		break;
		case 11:
		sprintf( prefix, "Sapphire");
		break;
		case 12:
		sprintf( prefix, "Horseman's");
		break;

	}

	switch(suffix_name)
	{
		default:
		case 1:
		sprintf( suffix, "carpace");
		break;
		case 2:
		sprintf( suffix, "defense");
		break;
		case 3:
		sprintf( suffix, "armour");
		break;
		case 4:
		sprintf( suffix, "chainmail");
		break;
		case 5:
		sprintf( suffix, "plated mail");
		break;
		case 6:
		sprintf( suffix, "shield");
		break;
		case 7:
		sprintf( suffix, "power");
		break;
		case 8:
		sprintf( suffix, "struggle");
		break;
		case 9:
		sprintf( suffix, "spiral");
		break;
		case 10:
		sprintf( suffix, "coil");
		break;
	}

	switch(armor_type)
	{
		case GEN_ARMOR_BODY:

		obj->wear_flags += ITEM_WEAR_BODY;
		sprintf(name_set, "%s %s", prefix, suffix);
		sprintf(shor_set, "%s %s", prefix, suffix);
		sprintf(long_set, "%s %s is on the ground here.", prefix, suffix);
		obj->name        = str_dup (name_set);
		obj->short_descr = str_dup (shor_set);
		obj->description  = str_dup (long_set);
		break;

		case GEN_ARMOR_HEAD:
		obj->wear_flags += ITEM_WEAR_HEAD;
		sprintf(name_set, "%s %s", prefix, suffix);
		sprintf(shor_set, "%s %s", prefix, suffix);
		sprintf(long_set, "%s %s is on the ground here.", prefix, suffix);
		obj->name        = str_dup (name_set);
		obj->short_descr = str_dup (shor_set);
		obj->description  = str_dup (long_set);
		break;

		case GEN_ARMOR_FEET:
		obj->wear_flags += ITEM_WEAR_FEET;
		sprintf(name_set, "%s %s", prefix, suffix);
		sprintf(shor_set, "%s %s", prefix, suffix);
		sprintf(long_set, "%s %s is on the ground here.", prefix, suffix);
		obj->name        = str_dup (name_set);
		obj->short_descr = str_dup (shor_set);
		obj->description  = str_dup (long_set);
		break;

		case GEN_ARMOR_LEGS:
		obj->wear_flags += ITEM_WEAR_LEGS;
		sprintf(name_set, "%s %s", prefix, suffix);
		sprintf(shor_set, "%s %s", prefix, suffix);
		sprintf(long_set, "%s %s is on the ground here.", prefix, suffix);
		obj->name        = str_dup (name_set);
		obj->short_descr = str_dup (shor_set);
		obj->description  = str_dup (long_set);
		break;

		case GEN_ARMOR_HAND:
		obj->wear_flags += ITEM_WEAR_HANDS;
		sprintf(name_set, "%s %s", prefix, suffix);
		sprintf(shor_set, "%s %s", prefix, suffix);
		sprintf(long_set, "%s %s is on the ground here.", prefix, suffix);
		obj->name        = str_dup (name_set);
		obj->short_descr = str_dup (shor_set);
		obj->description  = str_dup (long_set);
		break;

		case GEN_ARMOR_WAIST:
		obj->wear_flags += ITEM_WEAR_WAIST;
		sprintf(name_set, "%s %s", prefix, suffix);
		sprintf(shor_set, "%s %s", prefix, suffix);
		sprintf(long_set, "%s %s is on the ground here.", prefix, suffix);
		obj->name        = str_dup (name_set);
		obj->short_descr = str_dup (shor_set);
		obj->description  = str_dup (long_set);
		break;

		case GEN_ARMOR_WRIST:
		obj->wear_flags += ITEM_WEAR_WRIST;
		sprintf(name_set, "%s %s", prefix, suffix);
		sprintf(shor_set, "%s %s", prefix, suffix);
		sprintf(long_set, "%s %s is on the ground here.", prefix, suffix);
		obj->name        = str_dup (name_set);
		obj->short_descr = str_dup (shor_set);
		obj->description  = str_dup (long_set);
		break;

		case GEN_ARMOR_ARMS:
		obj->wear_flags += ITEM_WEAR_ARMS;
		sprintf(name_set, "%s %s", prefix, suffix);
		sprintf(shor_set, "%s %s", prefix, suffix);
		sprintf(long_set, "%s %s is on the ground here.", prefix, suffix);
		obj->name        = str_dup (name_set);
		obj->short_descr = str_dup (shor_set);
		obj->description  = str_dup (long_set);
		break;

		case GEN_ARMOR_SHIELD:
		obj->wear_flags += ITEM_WEAR_SHIELD;
		sprintf(name_set, "%s %s", prefix, suffix);
		sprintf(shor_set, "%s %s", prefix, suffix);
		sprintf(long_set, "%s %s is on the ground here.", prefix, suffix);
		obj->name        = str_dup (name_set);
		obj->short_descr = str_dup (shor_set);
		obj->description  = str_dup (long_set);
		break;

		case GEN_ARMOR_FLOAT:
		obj->wear_flags += ITEM_WEAR_FLOAT;
		sprintf(name_set, "%s %s", prefix, suffix);
		sprintf(shor_set, "%s %s", prefix, suffix);
		sprintf(long_set, "%s %s is on the ground here.", prefix, suffix);
		obj->name        = str_dup (name_set);
		obj->short_descr = str_dup (shor_set);
		obj->description  = str_dup (long_set);
		break;

		case GEN_ARMOR_ABOUT:
		sprintf(name_set, "%s %s", prefix, suffix);
		sprintf(shor_set, "%s %s", prefix, suffix);
		sprintf(long_set, "%s %s is on the ground here.", prefix, suffix);
		obj->name        = str_dup (name_set);
		obj->short_descr = str_dup (shor_set);
		obj->description  = str_dup (long_set);
		break;

	  }

   obj->level    = number_range( (level -5), (level +5) );		// Level
   obj->weight   = number_range(3, 8);					// Weight
   obj->cost    = number_range(1, (level * 5) );			// Value
   int armor_1   = number_range(1, (level / 2) );
   obj->value[0] = armor_1;
   obj->value[1] = armor_1;
   obj->value[2] = armor_1;
   obj->value[3] = armor_1;
return (obj);
}