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