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.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 3
#define SUF_LAST_ROW 39
#define LAST_ROW 39

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"},
   {1, "A",   "a","Steel"},
   {2, "A",   "a","Bronze"},
   {3, "A",   "a","Gold"}
};

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

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, "Sai",  	 	  2, 6, 5},
	{2, "Tanto",  	 	  2, 6, 5},
	{3, "Emi Peircers",  	  2, 6, 5},
	{4, "Tamo Daggers",  	  2, 6, 5},
	{5, "Butterfly Knives",   2, 6, 5},
	{6, "Sacrificial Dagger", 2, 6, 5},
	{7, "Knife",  	 	  2, 6, 5},
	{8, "Blade",  	 	  2, 6, 5},
	{9, "Dagger",  	 	  2, 6, 10},
	{10, "Sword",   	  1, 1, 10},
	{11, "Katana",   	  1, 1, 10},
	{12, "Twin Hook Sword",   1, 1, 10},
	{13, "Archaic Sword",     1, 1, 10},
	{14, "Kang Si Sword",     1, 1, 10},
	{15, "Dadao",   	  1, 1, 10},
	{16, "Odachi",    	  1, 1, 10},
	{17, "9 Ring Sword", 	  1, 1, 10},
	{18, "Wakizashi",    	  1, 1, 10},
	{19, "Jintachi",    	  1, 1, 10},
	{20, "Hammer",   	  5, 4, 15},
	{21, "Mace",   		  5, 4, 15},
	{22, "War Hammer",   	  5, 4, 15},
	{23, "Jitte",   	  5, 4, 15},
	{24, "Masakari",   	  5, 4, 15},
	{25, "War Scythe",   	  5, 4, 15},
	{26, "Muck Rake",   	  5, 4, 15},
	{27, "Monk Cudgel",   	  5, 4, 15},
	{28, "Hammer",   	  5, 4, 15},
	{29, "Hammer",   	  5, 4, 15},
	{30, "Polearm", 	 12, 0, 15},
	{31, "Bo Stick", 	 12, 0, 15},
	{32, "Jo Stick", 	 12, 0, 15},
	{33, "Escrima Stick",    12, 0, 15},
	{34, "Naginata", 	 12, 0, 15},
	{35, "Sodegarami", 	 12, 0, 15},
	{36, "Long Yari", 	 12, 0, 15},
	{37, "Wushu Kwadao", 	 12, 0, 15},
	{38, "Water Staff", 	 12, 0, 15},
	{39, "Short Yari", 	 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;
}