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