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.2				    *
 * ------------------------------------------------------------------------ *
 *          EldhaMUD code (C) 2003-2008 by Robert Powell (Tommi)            *
 * ------------------------------------------------------------------------ *
 *                  Random Weapons Drop Module                              *
 ****************************************************************************/
#include "./Headers/mud.h"

#define OBJ_VNUM_RND_WEAPON  96
#define PRE_LAST_ROW 0
#define SUF_LAST_ROW 0
#define LAST_ROW 3

struct random_weapon_prefix
{
   short row_number; 	/* row number in the table         */
   char *prefix_up;     /* upper case suffix for long desc */
   char *prefix_lo;     /* lower case suffix for short desc*/
   char *prefix_name; 	/* prefix, keywords                */
};
const struct random_weapon_prefix random_weapon_prefix_table[] = {
//Row Up  Lo   Name
   {0,"An", "an", "Iron"},
};

struct random_weapon_suffix
{
   short row_number; 	/* row number in the table */
   char *suffix_name; 		/* prefix, keywords          */
};
const struct random_weapon_suffix random_weapon_suffix_table[] = {
        //Row  Name
	{0, "of the Mantis"},
};

struct random_weapons
{
   short row_number; /* row number in the table */
   char *name;       /* Name, keywords       */
   short itemvalue4; /* Weapon Type          */
   short itemvalue3; /* Damge Type           */
   short weight;     /* Base weight of item  */
};
const struct random_weapons random_weapons_table[] = {
     // row  name                 V4 V3  Weight
	{0, "Dagger",  	 	  2, 6, 5 },
	{1, "Sword",   	  	  1, 1, 10},
	{2, "War Hammer",   	  5, 4, 15},
	{3, "Polearm", 	 	 12, 0, 15},
	
};


void do_random_weapon( CHAR_DATA * ch )
{
   OBJ_DATA *created_weapon;
   char buf[MAX_INPUT_LENGTH];
   short rownumber, pre_rownumber, suf_rownumber, random_number;

   pre_rownumber = number_range( 0, PRE_LAST_ROW );
   suf_rownumber = number_range( 0, SUF_LAST_ROW );
   rownumber     = number_range( 0, LAST_ROW );


   created_weapon = create_object( get_obj_index( OBJ_VNUM_RND_WEAPON ), ch->level );

   sprintf( buf, "%s %s %s",
                            random_weapon_prefix_table[pre_rownumber].prefix_name,
                            random_weapons_table[rownumber].name,
                            random_weapon_suffix_table[suf_rownumber].suffix_name
          );
   STRFREE( created_weapon->name );
   created_weapon->name = STRALLOC( buf );

   sprintf( buf, "%s %s %s %s",
			    random_weapon_prefix_table[pre_rownumber].prefix_lo, 
                            random_weapon_prefix_table[pre_rownumber].prefix_name,
                            random_weapons_table[rownumber].name,
                            random_weapon_suffix_table[suf_rownumber].suffix_name
          );
   STRFREE( created_weapon->short_descr );
   created_weapon->short_descr = STRALLOC( buf );

   sprintf( buf, "%s %s %s %s",
			    random_weapon_prefix_table[pre_rownumber].prefix_up, 
                            random_weapon_prefix_table[pre_rownumber].prefix_name,
                            random_weapons_table[rownumber].name,
                            random_weapon_suffix_table[suf_rownumber].suffix_name
          );
   STRFREE( created_weapon->description );
   created_weapon->description = STRALLOC( buf );


   created_weapon->value[4] = random_weapons_table[rownumber].itemvalue4;
   created_weapon->value[3] = random_weapons_table[rownumber].itemvalue3;
   created_weapon->value[2] = number_fuzzy( 6 + ch->level * 2  );
   created_weapon->value[1] = number_fuzzy( 2 + ch->level );
   created_weapon->value[0] = 13;

   created_weapon->cost = number_fuzzy(ch->level * 100);
   created_weapon->weight = random_weapons_table[rownumber].weight;

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