/* * Item Generator version 2 * File Description: Generator.weapon.rare.c * -Thri */ #if defined(macintosh) #include <types.h> #else #include <sys/types.h> #endif #include <ctype.h> #include <stdio.h> #include <string.h> #include <time.h> #include "merc.h" #include "interp.h" #include "magic.h" #include "recycle.h" #include "tables.h" OBJ_DATA * gen_weapon_rare (OBJ_DATA * obj, int level) { int weapon_type = number_range(1, 6); char name_set[MSL]; char shor_set[MSL]; char long_set[MSL]; char prefix[MSL]; char suffix[MSL]; int weapon_type_1_name = number_range(1, 5); int weapon_type_2_name = number_range(1, 5); int weapon_type_3_name = number_range(1, 5); // int weapon_type_4_name = number_range(1, 5); int weapon_type_5_name = number_range(1, 5); int weapon_type_6_name = number_range(1, 5); // Get the weapon type switch(weapon_type) { // case 1, slasher default: case 1: obj = create_object (get_obj_index (900), 0); // Select Prefix switch(number_range(1, 5)) { default: case 1: sprintf(prefix, "Death's"); break; case 2: sprintf(prefix, "Eternal"); break; case 3: sprintf(prefix, "Dark"); break; case 4: sprintf(prefix, "Onyx"); break; case 5: sprintf(prefix, "ancient"); break; } // Select Suffix switch(number_range(1, 5)) { default: case 1: sprintf(suffix, "sword"); break; case 2: sprintf(suffix, "slasher"); break; case 3: sprintf(suffix, "nightbringer"); break; case 4: sprintf(suffix, "blade"); break; case 5: sprintf(suffix, "blade of suffering"); break; } break; // case 2, slicer case 2: obj = create_object (get_obj_index (901), 0); // Select Prefix switch(number_range(1, 5)) { default: case 1: sprintf(prefix, "Crusader's"); break; case 2: sprintf(prefix, "Runed"); break; case 3: sprintf(prefix, "Holy"); break; case 4: sprintf(prefix, "Unholy"); break; case 5: sprintf(prefix, "Realms"); break; } // Select Suffix switch(number_range(1, 5)) { default: case 1: sprintf(suffix, "blade"); break; case 2: sprintf(suffix, "slicer"); break; case 3: sprintf(suffix, "nightbringer"); break; case 4: sprintf(suffix, "longsword"); break; case 5: sprintf(suffix, "blade of eternal suffering"); break; } break; // case 3, pound case 3: obj = create_object (get_obj_index (902), 0); // Select Prefix switch(number_range(1, 5)) { default: case 1: sprintf(prefix, "Gleaming"); break; case 2: sprintf(prefix, "Eternal"); break; case 3: sprintf(prefix, "Pitchblack"); break; case 4: sprintf(prefix, "Etherael"); break; case 5: sprintf(prefix, "Blood stained"); break; } // Select Suffix switch(number_range(1, 5)) { default: case 1: sprintf(suffix, "mace"); break; case 2: sprintf(suffix, "pounder"); break; case 3: sprintf(suffix, "mace of the sun"); break; case 4: sprintf(suffix, "club"); break; case 5: sprintf(suffix, "club of destruction"); break; } break; // case 4, crusher case 4: obj = create_object (get_obj_index (903), 0); // Select Prefix switch(number_range(1, 5)) { default: case 1: sprintf(prefix, "Mithril"); break; case 2: sprintf(prefix, "Fine"); break; case 3: sprintf(prefix, "Pitchblack"); break; case 4: sprintf(prefix, "Etherael"); break; case 5: sprintf(prefix, "Blood soaked"); break; } // Select Suffix switch(number_range(1, 5)) { default: case 1: sprintf(suffix, "mace"); break; case 2: sprintf(suffix, "crusher"); break; case 3: sprintf(suffix, "neutralizer"); break; case 4: sprintf(suffix, "bone crusher"); break; case 5: sprintf(suffix, "pain bringer"); break; } break; // case 5, piercer case 5: obj = create_object (get_obj_index (904), 0); // Select Prefix switch(number_range(1, 5)) { default: case 1: sprintf(prefix, "Gleaming"); break; case 2: sprintf(prefix, "ancient"); break; case 3: sprintf(prefix, "Onyx"); break; case 4: sprintf(prefix, "Sapphire"); break; case 5: sprintf(prefix, "Evil looking"); break; } // Select Suffix switch(number_range(1, 5)) { default: case 1: sprintf(suffix, "dagger"); break; case 2: sprintf(suffix, "stilletio"); break; case 3: sprintf(suffix, "piercer"); break; case 4: sprintf(suffix, "killer"); break; case 5: sprintf(suffix, "dagger of pain"); break; } break; // case 6, Whip case 6: obj = create_object (get_obj_index (905), 0); // Select Prefix switch(number_range(1, 5)) { default: case 1: sprintf(prefix, "Wicked"); break; case 2: sprintf(prefix, "Crackling"); break; case 3: sprintf(prefix, "Eternal"); break; case 4: sprintf(prefix, "Barbed"); break; case 5: sprintf(prefix, "Ancient"); break; } // Select Suffix switch(number_range(1, 5)) { default: case 1: sprintf(suffix, "whip"); break; case 2: sprintf(suffix, "lash"); break; case 3: sprintf(suffix, "backlash"); break; case 4: sprintf(suffix, "laso"); break; case 5: sprintf(suffix, "whip of sorrow"); break; } break; } switch(number_range(1, 2)) { default: case 1: gen_weapon_choice (obj, level); gen_weapon_choice (obj, level); break; case 2: gen_weapon_choice (obj, level); gen_weapon_choice (obj, level); gen_weapon_choice (obj, level); break; } // Now we set the name of the object as well as type /* Slashing weapons first */ if (weapon_type == 1) { switch(weapon_type_1_name) { case 1: obj->value[0] = 1; sprintf(name_set, "%s %s", prefix, suffix); sprintf(shor_set, "%s %s", prefix, suffix); sprintf(long_set, "%s %s is on the ground here", prefix, suffix); obj->name = str_dup (name_set); obj->short_descr = str_dup (shor_set); obj->description = str_dup (long_set); break; case 2: obj->value[0] = 1; sprintf(name_set, "%s %s", prefix, suffix); sprintf(shor_set, "%s %s", prefix, suffix); sprintf(long_set, "%s %s is on the ground here", prefix, suffix); obj->name = str_dup (name_set); obj->short_descr = str_dup (shor_set); obj->description = str_dup (long_set); break; case 3: obj->value[0] = 1; sprintf(name_set, "%s %s", prefix, suffix); sprintf(shor_set, "%s %s", prefix, suffix); sprintf(long_set, "%s %s is on the ground here", prefix, suffix); obj->name = str_dup (name_set); obj->short_descr = str_dup (shor_set); obj->description = str_dup (long_set); break; case 4: obj->value[0] = 1; sprintf(name_set, "%s %s", prefix, suffix); sprintf(shor_set, "%s %s", prefix, suffix); sprintf(long_set, "%s %s is on the ground here", prefix, suffix); obj->name = str_dup (name_set); obj->short_descr = str_dup (shor_set); obj->description = str_dup (long_set); break; case 5: obj->value[0] = 1; sprintf(name_set, "%s %s", prefix, suffix); sprintf(shor_set, "%s %s", prefix, suffix); sprintf(long_set, "%s %s is on the ground here", prefix, suffix); obj->name = str_dup (name_set); obj->short_descr = str_dup (shor_set); obj->description = str_dup (long_set); break; } } /* Sliceing weapons */ if (weapon_type == 2) { switch(weapon_type_2_name) { case 1: obj->value[0] = 1; sprintf(name_set, "%s %s", prefix, suffix); sprintf(shor_set, "%s %s", prefix, suffix); sprintf(long_set, "%s %s is on the ground here", prefix, suffix); obj->name = str_dup (name_set); obj->short_descr = str_dup (shor_set); obj->description = str_dup (long_set); break; case 2: obj->value[0] = 1; sprintf(name_set, "%s %s", prefix, suffix); sprintf(shor_set, "%s %s", prefix, suffix); sprintf(long_set, "%s %s is on the ground here", prefix, suffix); obj->name = str_dup (name_set); obj->short_descr = str_dup (shor_set); obj->description = str_dup (long_set); break; case 3: obj->value[0] = 1; sprintf(name_set, "%s %s", prefix, suffix); sprintf(shor_set, "%s %s", prefix, suffix); sprintf(long_set, "%s %s is on the ground here", prefix, suffix); obj->name = str_dup (name_set); obj->short_descr = str_dup (shor_set); obj->description = str_dup (long_set); break; case 4: obj->value[0] = 1; sprintf(name_set, "%s %s", prefix, suffix); sprintf(shor_set, "%s %s", prefix, suffix); sprintf(long_set, "%s %s is on the ground here", prefix, suffix); obj->name = str_dup (name_set); obj->short_descr = str_dup (shor_set); obj->description = str_dup (long_set); break; case 5: obj->value[0] = 1; sprintf(name_set, "%s %s", prefix, suffix); sprintf(shor_set, "%s %s", prefix, suffix); sprintf(long_set, "%s %s is on the ground here", prefix, suffix); obj->name = str_dup (name_set); obj->short_descr = str_dup (shor_set); obj->description = str_dup (long_set); break; } } /* Pound and crush */ if ( (weapon_type == 3) || (weapon_type == 4) ) { switch(weapon_type_3_name) { case 1: obj->value[0] = 4; sprintf(name_set, "%s %s", prefix, suffix); sprintf(shor_set, "%s %s", prefix, suffix); sprintf(long_set, "%s %s is on the ground here", prefix, suffix); obj->name = str_dup (name_set); obj->short_descr = str_dup (shor_set); obj->description = str_dup (long_set); break; case 2: obj->value[0] = 4; sprintf(name_set, "%s %s", prefix, suffix); sprintf(shor_set, "%s %s", prefix, suffix); sprintf(long_set, "%s %s is on the ground here", prefix, suffix); obj->name = str_dup (name_set); obj->short_descr = str_dup (shor_set); obj->description = str_dup (long_set); break; case 3: obj->value[0] = 4; sprintf(name_set, "%s %s", prefix, suffix); sprintf(shor_set, "%s %s", prefix, suffix); sprintf(long_set, "%s %s is on the ground here", prefix, suffix); obj->name = str_dup (name_set); obj->short_descr = str_dup (shor_set); obj->description = str_dup (long_set); break; case 4: obj->value[0] = 4; sprintf(name_set, "%s %s", prefix, suffix); sprintf(shor_set, "%s %s", prefix, suffix); sprintf(long_set, "%s %s is on the ground here", prefix, suffix); obj->name = str_dup (name_set); obj->short_descr = str_dup (shor_set); obj->description = str_dup (long_set); break; case 5: obj->value[0] = 4; sprintf(name_set, "%s %s", prefix, suffix); sprintf(shor_set, "%s %s", prefix, suffix); sprintf(long_set, "%s %s is on the ground here", prefix, suffix); obj->name = str_dup (name_set); obj->short_descr = str_dup (shor_set); obj->description = str_dup (long_set); break; } } if (weapon_type == 5) { switch(weapon_type_5_name) { case 1: obj->value[0] = 2; sprintf(name_set, "%s %s", prefix, suffix); sprintf(shor_set, "%s %s", prefix, suffix); sprintf(long_set, "%s %s is on the ground here", prefix, suffix); obj->name = str_dup (name_set); obj->short_descr = str_dup (shor_set); obj->description = str_dup (long_set); break; case 2: obj->value[0] = 2; sprintf(name_set, "%s %s", prefix, suffix); sprintf(shor_set, "%s %s", prefix, suffix); sprintf(long_set, "%s %s is on the ground here", prefix, suffix); obj->name = str_dup (name_set); obj->short_descr = str_dup (shor_set); obj->description = str_dup (long_set); break; case 3: obj->value[0] = 2; sprintf(name_set, "%s %s", prefix, suffix); sprintf(shor_set, "%s %s", prefix, suffix); sprintf(long_set, "%s %s is on the ground here", prefix, suffix); obj->name = str_dup (name_set); obj->short_descr = str_dup (shor_set); obj->description = str_dup (long_set); break; case 4: obj->value[0] = 2; sprintf(name_set, "%s %s", prefix, suffix); sprintf(shor_set, "%s %s", prefix, suffix); sprintf(long_set, "%s %s is on the ground here", prefix, suffix); obj->name = str_dup (name_set); obj->short_descr = str_dup (shor_set); obj->description = str_dup (long_set); break; case 5: obj->value[0] = 2; sprintf(name_set, "%s %s", prefix, suffix); sprintf(shor_set, "%s %s", prefix, suffix); sprintf(long_set, "%s %s is on the ground here", prefix, suffix); obj->name = str_dup (name_set); obj->short_descr = str_dup (shor_set); obj->description = str_dup (long_set); break; } } if (weapon_type == 6) { switch(weapon_type_6_name) { case 1: obj->value[0] = 7; sprintf(name_set, "%s %s", prefix, suffix); sprintf(shor_set, "%s %s", prefix, suffix); sprintf(long_set, "%s %s is on the ground here", prefix, suffix); obj->name = str_dup (name_set); obj->short_descr = str_dup (shor_set); obj->description = str_dup (long_set); break; case 2: obj->value[0] = 7; sprintf(name_set, "%s %s", prefix, suffix); sprintf(shor_set, "%s %s", prefix, suffix); sprintf(long_set, "%s %s is on the ground here", prefix, suffix); obj->name = str_dup (name_set); obj->short_descr = str_dup (shor_set); obj->description = str_dup (long_set); break; case 3: obj->value[0] = 7; sprintf(name_set, "%s %s", prefix, suffix); sprintf(shor_set, "%s %s", prefix, suffix); sprintf(long_set, "%s %s is on the ground here", prefix, suffix); obj->name = str_dup (name_set); obj->short_descr = str_dup (shor_set); obj->description = str_dup (long_set); break; case 4: obj->value[0] = 7; sprintf(name_set, "%s %s", prefix, suffix); sprintf(shor_set, "%s %s", prefix, suffix); sprintf(long_set, "%s %s is on the ground here", prefix, suffix); obj->name = str_dup (name_set); obj->short_descr = str_dup (shor_set); obj->description = str_dup (long_set); break; case 5: obj->value[0] = 7; sprintf(name_set, "%s %s", prefix, suffix); sprintf(shor_set, "%s %s", prefix, suffix); sprintf(long_set, "%s %s is on the ground here", prefix, suffix); obj->name = str_dup (name_set); obj->short_descr = str_dup (shor_set); obj->description = str_dup (long_set); break; } } /* END : Set the Damage of the weapon */ obj->value[1] = number_range( (level / 2), level); // Min dam obj->value[2] = number_range( level, (level + level) ); // Max dam obj->level = number_range( (level -5), (level +5) ); // Level obj->weight = number_range(3, 8); // Weight obj->cost = number_range(1, (level * 5) ); // Value return (obj); }