/*
 *	Item generator 2, a simpler approch to the creation system
 *
 *	File: Suffix.weapon.c
 *	Descr: This file holds all weapon suffixes called by the
 *		weapon prefix/suffix generator.
 */

#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_suffix_weapon_force (OBJ_DATA * obj, int level) 
{
  AFFECT_DATA *af = new_affect ();	// aff data
  char prefix_full[MSL];

  if (level >= 50)		// Quick hack for range
    {
      level = 50;
    }

  int selection = number_range (1, level);	// Switch on level range
  int mod;

  // Now the selection of the modifier
  switch (selection)
    {
    default:
      mod = 1;
      sprintf (prefix_full, "%s of power", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      break;
    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:
      mod = 1;
      sprintf (prefix_full, "%s of power", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      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:
    case 36:
    case 37:
    case 38:
    case 39:
    case 40:
      mod = 2;
      sprintf (prefix_full, "%s of force", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      break;
    case 41:
    case 42:
    case 43:
    case 44:
    case 45:
    case 46:
    case 47:
    case 48:
    case 49:
    case 50:
      mod = 3;
      sprintf (prefix_full, "%s of destruction", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      break;
    }

  
af->location = APPLY_FORCE;
  
af->modifier = mod;
  
af->where = TO_OBJECT;
  
af->type = 10;
  
af->duration = -1;
  
af->bitvector = 0;
  
af->level = mod;
  
af->next = obj->affected;
  
obj->affected = af;
  


return (obj);
}

OBJ_DATA *
gen_suffix_weapon_speed (OBJ_DATA * obj, int level) 
{
  AFFECT_DATA *af = new_affect ();	// aff data
  char prefix_full[MSL];

  if (level >= 50)		// Quick hack for range
    {
      level = 50;
    }

  int selection = number_range (1, level);	// Switch on level range
  int mod;

  // Now the selection of the modifier
  switch (selection)
    {
    default:
      mod = 1;
      sprintf (prefix_full, "%s of nimblness", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      break;
    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:
      mod = 1;
      sprintf (prefix_full, "%s of nimblness", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      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:
    case 36:
    case 37:
    case 38:
    case 39:
    case 40:
      mod = 2;
      sprintf (prefix_full, "%s of speed", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      break;
    case 41:
    case 42:
    case 43:
    case 44:
    case 45:
    case 46:
    case 47:
    case 48:
    case 49:
    case 50:
      mod = 3;
      sprintf (prefix_full, "%s of haste", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      break;
    }

  
af->location = APPLY_SPEED;
  
af->modifier = mod;
  
af->where = TO_OBJECT;
  
af->type = 10;
  
af->duration = -1;
  
af->bitvector = 0;
  
af->level = mod;
  
af->next = obj->affected;
  
obj->affected = af;
  


return (obj);
}

OBJ_DATA *
gen_suffix_weapon_luck (OBJ_DATA * obj, int level) 
{
  AFFECT_DATA *af = new_affect ();	// aff data
  char prefix_full[MSL];

  if (level >= 50)		// Quick hack for range
    {
      level = 50;
    }

  int selection = number_range (1, level);	// Switch on level range
  int mod;

  // Now the selection of the modifier
  switch (selection)
    {
    default:
      mod = 1;
      sprintf (prefix_full, "%s of fortune", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      break;
    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:
      mod = 1;
      sprintf (prefix_full, "%s of fortune", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      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:
    case 36:
    case 37:
    case 38:
    case 39:
    case 40:
      mod = 2;
      sprintf (prefix_full, "%s of luck", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      break;
    case 41:
    case 42:
    case 43:
    case 44:
    case 45:
    case 46:
    case 47:
    case 48:
    case 49:
    case 50:
      mod = 3;
      sprintf (prefix_full, "%s of kismet", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      break;
    }

  
af->location = APPLY_LUCK;
  
af->modifier = mod;
  
af->where = TO_OBJECT;
  
af->type = 10;
  
af->duration = -1;
  
af->bitvector = 0;
  
af->level = mod;
  
af->next = obj->affected;
  
obj->affected = af;
  


return (obj);
}

OBJ_DATA *
gen_suffix_weapon_damroll (OBJ_DATA * obj, int level) 
{
  
AFFECT_DATA * af = new_affect ();	// aff data                             // Hack to save item's stats
  char prefix_full[MSL];

  if (level >= 50)		// Quick hack for range
    {
      level = 50;
    }

  int selection = number_range (1, level);	// Switch on level range
  int mod;

  // Now the selection of the modifier
  switch (selection)
    {
    default:
      mod = 1;
      sprintf (prefix_full, "%s of maiming", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      break;
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
      mod = 1;
      sprintf (prefix_full, "%s of maiming", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      break;
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:
      mod = 2;
      sprintf (prefix_full, "%s of maiming", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      break;
    case 11:
    case 12:
    case 13:
    case 14:
    case 15:
      mod = 3;
      sprintf (prefix_full, "%s of carnage", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      break;
    case 16:
    case 17:
    case 18:
    case 19:
    case 20:
      mod = 4;
      sprintf (prefix_full, "%s of carnage", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      break;
    case 21:
    case 22:
    case 23:
    case 24:
    case 25:
      mod = 5;
      sprintf (prefix_full, "%s of massacaring", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      break;
    case 26:
    case 27:
    case 28:
    case 29:
    case 30:
      mod = 6;
      sprintf (prefix_full, "%s of massacaring", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      break;
    case 31:
    case 32:
    case 33:
    case 34:
    case 35:
      mod = 7;
      sprintf (prefix_full, "%s of gore", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      break;
    case 36:
    case 37:
    case 38:
    case 39:
    case 40:
      mod = 8;
      sprintf (prefix_full, "%s of gore", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      break;
    case 41:
    case 42:
    case 43:
    case 44:
    case 45:
      mod = 9;
      sprintf (prefix_full, "%s of carnage", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      break;
    case 46:
    case 47:
    case 48:
    case 49:
    case 50:
      mod = 10;
      sprintf (prefix_full, "%s of carnage", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      break;
    }
  

af->location = APPLY_DAMROLL;
  
af->modifier = mod;
  
af->where = TO_OBJECT;
  
af->type = 10;
  
af->duration = -1;
  
af->bitvector = 0;
  
af->level = mod;
  
af->next = obj->affected;
  
obj->affected = af;
  

return (obj);
}



OBJ_DATA *
gen_suffix_weapon_min_dam (OBJ_DATA * obj, int level) 
{
  char prefix_full[MSL];

  if (level >= 50)		// Quick hack for range
    {
      level = 50;
    }

  int selection = number_range (1, level);	// Switch on level range
  int mod;

  // Now the selection of the modifier
  switch (selection)
    {
    default:
      mod = 1;
      sprintf (prefix_full, "%s of performance", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      break;
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:
      mod = 1;
      sprintf (prefix_full, "%s of performance", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      break;
    case 11:
    case 12:
    case 13:
    case 14:
    case 15:
    case 16:
    case 17:
    case 18:
    case 19:
    case 20:
      mod = 2;
      sprintf (prefix_full, "%s of craftmanship", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      break;
    case 21:
    case 22:
    case 23:
    case 24:
    case 25:
    case 26:
    case 27:
    case 28:
    case 29:
    case 30:
      mod = 3;
      sprintf (prefix_full, "%s of quaility", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      break;
    case 31:
    case 32:
    case 33:
    case 34:
    case 35:
    case 36:
    case 37:
    case 38:
    case 39:
    case 40:
      mod = 4;
      sprintf (prefix_full, "%s of measure", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      break;
    case 41:
    case 42:
    case 43:
    case 44:
    case 45:
    case 46:
    case 47:
    case 48:
    case 49:
    case 50:
      mod = 5;
      sprintf (prefix_full, "%s of execlence", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      break;
    }

  obj->value[1] += mod;
  


return (obj);
}


OBJ_DATA *
gen_suffix_weapon_waitstate (OBJ_DATA * obj, int level) 
{
  AFFECT_DATA *af = new_affect ();	// aff data
  char prefix_full[MSL];

  if (level >= 50)		// Quick hack for range
    {
      level = 50;
    }

  int selection = number_range (1, level);	// Switch on level range
  int mod;

  // Now the selection of the modifier
  switch (selection)
    {
    default:
      mod = 1;
      sprintf (prefix_full, "%s of readiness", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      break;
    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:
      mod = 1;
      sprintf (prefix_full, "%s of readiness", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      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:
    case 36:
    case 37:
    case 38:
    case 39:
    case 40:
      mod = 2;
      sprintf (prefix_full, "%s of swiftness", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      break;
    case 41:
    case 42:
    case 43:
    case 44:
    case 45:
    case 46:
    case 47:
    case 48:
    case 49:
    case 50:
      mod = 3;
      sprintf (prefix_full, "%s of quickness", obj->short_descr);
      
obj->short_descr = str_dup (prefix_full);
      break;
    }

  
af->location = APPLY_WAITSTATE;
  
af->modifier = mod;
  
af->where = TO_OBJECT;
  
af->type = 10;
  
af->duration = -1;
  
af->bitvector = 0;
  
af->level = mod;
  
af->next = obj->affected;
  
obj->affected = af;
  


return (obj);
}