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