Eldhamud_2.5.83/clans/
Eldhamud_2.5.83/classes/
Eldhamud_2.5.83/doc/
Eldhamud_2.5.83/doc/DIKU/
Eldhamud_2.5.83/doc/MERC/
Eldhamud_2.5.83/doc/mudprogs/
Eldhamud_2.5.83/houses/
/****************************************************************************
 *			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  14
#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          */
};
const struct random_armor_prefix random_armor_prefix_table[] = {
   //Row  Name
   {0, "brigandine"},
   {1, "lamellar"},
   {2, "dhenuka"},
   {3, "ashigaru"}
};

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 %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 %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->level = ch->level;
   created_armor->value[5] = ch->level;
   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->timer = 5;
   created_armor->weight = random_armor_table[armor_rownumber].weight;
   SET_BIT( created_armor->wear_flags, random_armor_table[armor_rownumber].wear_loc );


   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_room ( created_armor, ch->in_room, ch );
   return;
}