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