eldhamud_2.2.5/clans/
eldhamud_2.2.5/classes/
eldhamud_2.2.5/councils/
eldhamud_2.2.5/deity/
eldhamud_2.2.5/doc/
eldhamud_2.2.5/doc/DIKU/
eldhamud_2.2.5/doc/DIKU/.svn/
eldhamud_2.2.5/doc/DIKU/.svn/prop-base/
eldhamud_2.2.5/doc/DIKU/.svn/text-base/
eldhamud_2.2.5/doc/MERC/
eldhamud_2.2.5/doc/MERC/.svn/
eldhamud_2.2.5/doc/SMAUG/.svn/
eldhamud_2.2.5/doc/SMAUG/mudprogs/
eldhamud_2.2.5/doc/SMAUG/mudprogs/.svn/
eldhamud_2.2.5/gods/
eldhamud_2.2.5/houses/
eldhamud_2.2.5/player/
eldhamud_2.2.5/player/a/
eldhamud_2.2.5/races/
eldhamud_2.2.5/src/Headers/.svn/
eldhamud_2.2.5/src/ObjectFiles/.svn/
/****************************************************************************
 *			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 0
#define ARM_LAST_ROW 6
#define SUF_LAST_ROW 0

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, "ring armor", ITEM_ANTI_LIFE,  ITEM_ANTI_DECAY, ITEM_ANTI_GROWTH},
};

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 warrior"},
};

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;
}