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