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