/*
* Item Generator version 2
* File Description: Generator.Weapon.prefix.c
* This file holds the generation of prefixs and
* suffixs for weapons.
*
* Generator takes the level, and makes a range possible
* based on that level (anywhere from 1, level)
* after it gets that number, it selects the possible
* prefixes or suffixes avaible at that level, and then
* applies that 1 selected prefix/suffix.
* The generator has a only a 50% chance to make a prefix
* and a 50% chance to make a suffix, this making it look like this.
Nothing = 25%
Prefix only = 25%
Suffix only = 25%
Prefix & suffix = 25%
-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_choice (OBJ_DATA * obj, int level)
{
if (level >= 50) // Quick hack for range
{
level = 50;
}
int choices_prefix = number_range(1, level);
int choices_suffix = number_range(1, level);
int prefix_chance = number_range(1, 100);
int suffix_chance = number_range(1, 100);
if (prefix_chance <= 50)
{
switch(choices_prefix)
{
default:
case 1: case 2: case 3: case 4: case 5:
switch(number_range(1, 2))
{
default:
gen_prefix_weapon_hitroll (obj, level);
break;
case 1:
gen_prefix_weapon_hitroll (obj, level);
break;
case 2:
gen_prefix_weapon_maxdam (obj, level);
break;
}
break;
case 6: case 7: case 8: case 9: case 10:
case 11: case 12: case 13: case 14: case 15:
switch(number_range(1, 6))
{
default:
gen_prefix_weapon_hitroll (obj, level);
break;
case 1:
gen_prefix_weapon_hitroll (obj, level);
break;
case 2:
gen_prefix_weapon_maxdam (obj, level);
break;
case 3:
gen_prefix_weapon_poison (obj, level);
break;
case 4:
gen_prefix_weapon_flame (obj, level);
break;
case 5:
gen_prefix_weapon_frost (obj, level);
break;
case 6:
gen_prefix_weapon_electric (obj, level);
break;
}
break;
case 16: case 17: case 18: case 19: case 20:
switch(number_range(1, 7))
{
default:
gen_prefix_weapon_hitroll (obj, level);
break;
case 1:
gen_prefix_weapon_hitroll (obj, level);
break;
case 2:
gen_prefix_weapon_maxdam (obj, level);
break;
case 3:
gen_prefix_weapon_poison (obj, level);
break;
case 4:
gen_prefix_weapon_flame (obj, level);
break;
case 5:
gen_prefix_weapon_frost (obj, level);
break;
case 6:
gen_prefix_weapon_electric (obj, level);
break;
case 7:
gen_prefix_weapon_sharp (obj, level);
break;
}
break;
case 21: case 22: case 23: case 24: case 25:
switch(number_range(1, 8))
{
default:
gen_prefix_weapon_hitroll (obj, level);
break;
case 1:
gen_prefix_weapon_hitroll (obj, level);
break;
case 2:
gen_prefix_weapon_maxdam (obj, level);
break;
case 3:
gen_prefix_weapon_poison (obj, level);
break;
case 4:
gen_prefix_weapon_flame (obj, level);
break;
case 5:
gen_prefix_weapon_frost (obj, level);
break;
case 6:
gen_prefix_weapon_electric (obj, level);
break;
case 7:
gen_prefix_weapon_sharp (obj, level);
break;
case 8:
gen_prefix_weapon_hitdam (obj, level);
break;
}
break;
case 26: case 27: case 28: case 29: case 30:
case 31: case 32: case 33: case 34: case 35:
case 36: case 37: case 38: case 39: case 40:
case 41: case 42: case 43: case 44: case 45:
case 46: case 47: case 48: case 49: case 50:
switch(number_range(1, 9))
{
default:
gen_prefix_weapon_hitroll (obj, level);
break;
case 1:
gen_prefix_weapon_hitroll (obj, level);
break;
case 2:
gen_prefix_weapon_maxdam (obj, level);
break;
case 3:
gen_prefix_weapon_poison (obj, level);
break;
case 4:
gen_prefix_weapon_flame (obj, level);
break;
case 5:
gen_prefix_weapon_frost (obj, level);
break;
case 6:
gen_prefix_weapon_electric (obj, level);
break;
case 7:
gen_prefix_weapon_sharp (obj, level);
break;
case 8:
gen_prefix_weapon_hitdam (obj, level);
break;
case 9:
gen_prefix_weapon_vorpal (obj, level);
break;
}
break;
}
}
if (suffix_chance <= 50)
{
switch(choices_suffix)
{
default:
case 1: case 2: case 3: case 4: case 5:
case 6: case 7: case 8: case 9: case 10:
case 11: case 12: case 13: case 14: case 15:
case 16: case 17: case 18: case 19: case 20:
switch(number_range(1, 2))
{
default:
gen_suffix_weapon_damroll (obj, level);
break;
case 1:
gen_suffix_weapon_damroll (obj, level);
break;
case 2:
gen_suffix_weapon_min_dam (obj, level);
break;
}
break;
case 21: case 22: case 23: case 24: case 25:
case 26: case 27: case 28: case 29: case 30:
case 31: case 32: case 33: case 34: case 35:
switch(number_range(1, 5))
{
default:
gen_suffix_weapon_damroll (obj, level);
break;
case 1:
gen_suffix_weapon_damroll (obj, level);
break;
case 2:
gen_suffix_weapon_min_dam (obj, level);
break;
case 3:
gen_suffix_weapon_force (obj, level);
break;
case 4:
gen_suffix_weapon_speed (obj, level);
break;
case 5:
gen_suffix_weapon_luck (obj, level);
break;
}
break;
case 36: case 37: case 38: case 39: case 40:
case 41: case 42: case 43: case 44: case 45:
case 46: case 47: case 48: case 49: case 50:
switch(number_range(1, 6))
{
default:
gen_suffix_weapon_damroll (obj, level);
break;
case 1:
gen_suffix_weapon_damroll (obj, level);
break;
case 2:
gen_suffix_weapon_min_dam (obj, level);
break;
case 3:
gen_suffix_weapon_force (obj, level);
break;
case 4:
gen_suffix_weapon_speed (obj, level);
break;
case 5:
gen_suffix_weapon_luck (obj, level);
break;
case 6:
gen_suffix_weapon_waitstate (obj, level);
break;
}
break;
}
}
return(obj);
}