eldhamud_2.3.3/clans/
eldhamud_2.3.3/councils/
eldhamud_2.3.3/doc/
eldhamud_2.3.3/doc/DIKU/
eldhamud_2.3.3/doc/DIKU/.svn/
eldhamud_2.3.3/doc/DIKU/.svn/prop-base/
eldhamud_2.3.3/doc/DIKU/.svn/text-base/
eldhamud_2.3.3/doc/MERC/
eldhamud_2.3.3/doc/MERC/.svn/
eldhamud_2.3.3/doc/SMAUG/.svn/
eldhamud_2.3.3/doc/SMAUG/mudprogs/
eldhamud_2.3.3/doc/SMAUG/mudprogs/.svn/
eldhamud_2.3.3/doc/mudprogs/
eldhamud_2.3.3/gods/
eldhamud_2.3.3/houses/
eldhamud_2.3.3/player/a/
/****************************************************************************
 *			Eldhamud Codebase V2.0				    *
 * ------------------------------------------------------------------------ *
 *          EldhaMUD code (C) 2003-2008 by Robert Powell (Tommi)            *
 * ------------------------------------------------------------------------ *
 *                       Random Armor Drop Module                           *
 ****************************************************************************/
#include "./Headers/mud.h"

#define OBJ_VNUM_RND_ARMOR  92
#define PRE_LAST_ROW 3
#define ARM_LAST_ROW 6
#define SUF_LAST_ROW 39

struct random_armor_prefix
{
   short row_number; 	/* row number in the table */
   char *name; 		/* Name, keywords          */
   int anti_1;  	/* anti flags              */
   int anti_2;
   int anti_3;
};
const struct random_armor_prefix random_armor_prefix_table[] = {
//Row  Name          Anti_1           Anti_2            Anti_3
   {0, "brigandine", ITEM_ANTI_LIFE,  ITEM_ANTI_DECAY, ITEM_ANTI_GROWTH},
   {1, "lamellar",   ITEM_ANTI_DEATH, ITEM_ANTI_DECAY, ITEM_ANTI_GROWTH},
   {2, "dhenuka",    ITEM_ANTI_DEATH, ITEM_ANTI_LIFE,  ITEM_ANTI_GROWTH},
   {3, "ashigaru",   ITEM_ANTI_DEATH, ITEM_ANTI_LIFE,  ITEM_ANTI_DECAY}
};

struct random_armor
{
   short row_number; 	/* row number in the table */
   char *prefix; 	/* Prefix, keywords        */
   char *prefix2; 	/* Prefix, keywords        */
   char *name; 		/* Name, keywords          */
   int wear_loc;  	/* Wear Location           */
   short cost;		/* Base cost of item       */
   short weight;  	/* Base weight of item     */
};
const struct random_armor random_armor_table[] = {
//Row         Prefixes              Name        Wear              Cost Weight
   {0, "A",	     "a", 	 "helmet",     ITEM_WEAR_HEAD,    100, 10},
   {1, "A",	    "a", 	 "chestplate", ITEM_WEAR_BODY,    100, 10},
   {2, "A pair of", "a pair of", "sleeves",    ITEM_WEAR_ARMS,    100, 10},
   {3, "A pair of", "a pair of", "gloves",     ITEM_WEAR_HANDS,   100, 10},
   {4, "A",	    "a",	 "shield",     ITEM_WEAR_SHIELD,  100, 10},
   {5, "A pair of", "a pair of", "leggings",   ITEM_WEAR_LEGS,    100, 10},
   {6, "A pair of", "a pair of", "boots",      ITEM_WEAR_FEET,    100, 10},
};

struct random_armor_suffix
{
   short row_number; /* row number in the table */
   char *suffix;     /* Suffix, keywords        */
};
const struct random_armor_suffix random_armor_suffix_table[] = {
	//Row  Name
	{0, "of the Mantis"},
	{1, "of the Ox"},
	{2, "of the Tiger"},
	{3, "of the Monkey"},
	{4, "of the Tiger"},
	{5, "of the Snake"},
	{6, "of the Crane"},
	{7, "of the Bear"},
	{8, "of the Dragon"},
	{9, "of the Crab"},
	{10, "of the Horse"},
	{11, "of the Eagle"},
	{12, "of Thunder"},
	{13, "of the Sun"},
	{14, "of Wind"},
	{15, "of Rain"},
	{16, "of Stars"},
	{17, "of Death"},
	{18, "of Life"},
	{19, "of Earthquakes"},
	{20, "of Ghouls"},
	{21, "of Fire"},
	{22, "of Nature"},
	{23, "of Water"},
	{24, "of Air"},
	{25, "of Night"},
	{26, "of Day"},
	{27, "of War"},
	{28, "of Truth"},
	{29, "of Glory"},
	{30, "of the Panda"},
	{31, "of Fate"},
	{32, "of Ascendance"},
	{33, "of the Fist"},
	{34, "of the Foot"},
	{35, "of Heart"},
	{36, "of Battle"},
	{37, "of the Gods"},
	{38, "of the Lion"},
	{39, "of the Scorpian"},
};

void do_random_armor( CHAR_DATA * ch )
{
   OBJ_DATA *created_armor;
   char buf[MAX_INPUT_LENGTH];
   short prefix_rownumber, armor_rownumber, suffix_rownumber, random_number;

   prefix_rownumber = number_range( 0, PRE_LAST_ROW );
   armor_rownumber  = number_range( 0, ARM_LAST_ROW );
   suffix_rownumber = number_range( 0, SUF_LAST_ROW );

   created_armor = create_object( get_obj_index( OBJ_VNUM_RND_ARMOR ), ch->level);//random_armor_table[armor_rownumber].level );

   sprintf( buf, "%s %s %s",  random_armor_prefix_table[prefix_rownumber].name,
                              random_armor_table[armor_rownumber].name,
                              random_armor_suffix_table[suffix_rownumber].suffix );
   STRFREE( created_armor->name );
   created_armor->name = STRALLOC( buf );
 
   sprintf( buf, "%s %s %s of the %s", random_armor_table[armor_rownumber].prefix2,
	                               random_armor_prefix_table[prefix_rownumber].name,
                                       random_armor_table[armor_rownumber].name,
                                       random_armor_suffix_table[suffix_rownumber].suffix );
   STRFREE( created_armor->short_descr );
   created_armor->short_descr = STRALLOC( buf );
 
   sprintf( buf, "%s %s %s of the %s.", random_armor_table[armor_rownumber].prefix,
	                                random_armor_prefix_table[prefix_rownumber].name,
                                        random_armor_table[armor_rownumber].name,
                                        random_armor_suffix_table[suffix_rownumber].suffix );
   STRFREE( created_armor->description );
   created_armor->description = STRALLOC( buf );
 
   created_armor->value[3] = 13;
   created_armor->value[1] = ch->level;
   created_armor->value[0] = ch->level;
   created_armor->cost = ch->level * 100;
   created_armor->weight = random_armor_table[armor_rownumber].weight;
   SET_BIT( created_armor->wear_flags, random_armor_table[armor_rownumber].wear_loc );

   xSET_BIT( created_armor->extra_flags, random_armor_prefix_table[prefix_rownumber].anti_1 );
   xSET_BIT( created_armor->extra_flags, random_armor_prefix_table[prefix_rownumber].anti_2 );
   xSET_BIT( created_armor->extra_flags, random_armor_prefix_table[prefix_rownumber].anti_3 );

   random_number = number_range( 0, 100 );
   if( random_number > 65 && random_number < 85 )
   {
      xSET_BIT( created_armor->extra_flags, ITEM_REFINED );
      created_armor->value[0] += 2;
      created_armor->value[1] += 2;
   }
   else if( random_number > 84 && random_number < 95 )
   {
      xSET_BIT( created_armor->extra_flags, ITEM_UNIQUE );
      created_armor->value[0] += 4;
      created_armor->value[1] += 4;
   }
   else if( random_number > 94 && random_number < 101 )
   {
      xSET_BIT( created_armor->extra_flags, ITEM_ELITE );
      created_armor->value[0] += 8;
      created_armor->value[1] += 8;
   }
   obj_to_char( created_armor, ch );
   return;
}