/*
* Item generator 2, a simpler approch to the creation system
*
* File: Prefix.armor.c
* Descr: This file holds all Armor prefixes called by the
* Armor 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_prefix_armor_hitroll (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 = number_range(1, 2);
sprintf (prefix_full, "a bronze %s", 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 = number_range(1, 2);
sprintf (prefix_full, "a bronze %s", 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 = number_range(3, 4);
sprintf (prefix_full, "an iron %s", 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 = number_range(5, 6);
sprintf (prefix_full, "a silver %s", 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 = number_range(7, 8);
sprintf (prefix_full, "a golden %s", 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 = number_range(9, 10);
sprintf (prefix_full, "a platinum %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
}
af->location = APPLY_HITROLL;
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_prefix_armor_ac (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 = number_range(-1, -5);
sprintf (prefix_full, "a sturdy %s", 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 = number_range(-1, -5);
sprintf (prefix_full, "a sturdy %s", 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 = number_range(-6, -10);
sprintf (prefix_full, "a strong %s", 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 = number_range(-11, -15);
sprintf (prefix_full, "a glorious %s", 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 = number_range(-16, -20);
sprintf (prefix_full, "a blessed %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
case 41: case 42: case 43: case 44: case 45:
mod = number_range(-21, -25);
sprintf (prefix_full, "a holy %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
case 46: case 47: case 48: case 49: case 50:
mod = number_range(-26, -30);
sprintf (prefix_full, "a godly %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
}
af->location = APPLY_AC;
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_prefix_armor_saves (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 = number_range(-1, -2);
sprintf (prefix_full, "a protected %s", 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 = number_range(-1, -2);
sprintf (prefix_full, "a protected %s", 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 = number_range(-3, -4);
sprintf (prefix_full, "an angelic %s", 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 = number_range(-5, -6);
sprintf (prefix_full, "a demi-god's %s", 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 = number_range(-7, -8);
sprintf (prefix_full, "a godly protected %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
case 46: case 47: case 48: case 49: case 50:
case 41: case 42: case 43: case 44: case 45:
mod = number_range(-9, -10);
sprintf (prefix_full, "a divinly protected %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
}
af->location = APPLY_SAVES;
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_prefix_armor_res_fire (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 = number_range(1, 2);
sprintf (prefix_full, "a crimson %s", 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:
mod = number_range(1, 2);
sprintf (prefix_full, "a crimson %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
case 16: case 17: case 18: case 19: case 20:
case 21: case 22: case 23: case 24: case 25:
case 26: case 27: case 28: case 29: case 30:
mod = number_range(3, 4);
sprintf (prefix_full, "a burgandy %s", 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:
case 41: case 42: case 43: case 44: case 45:
mod = number_range(5, 6);
sprintf (prefix_full, "a garnet %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
case 46: case 47: case 48: case 49: case 50:
mod = number_range(7, 8);
sprintf (prefix_full, "a ruby %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
}
af->location = APPLY_RES_FIRE;
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_prefix_armor_res_cold (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 = number_range(1, 2);
sprintf (prefix_full, "an azure %s", 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:
mod = number_range(1, 2);
sprintf (prefix_full, "an azure %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
case 16: case 17: case 18: case 19: case 20:
case 21: case 22: case 23: case 24: case 25:
case 26: case 27: case 28: case 29: case 30:
mod = number_range(3, 4);
sprintf (prefix_full, "a lapis %s", 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:
case 41: case 42: case 43: case 44: case 45:
mod = number_range(5, 6);
sprintf (prefix_full, "a cobalt %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
case 46: case 47: case 48: case 49: case 50:
mod = number_range(7, 8);
sprintf (prefix_full, "a sapphire %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
}
af->location = APPLY_RES_COLD;
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_prefix_armor_res_holy (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 = number_range(1, 2);
sprintf (prefix_full, "an ocher %s", 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:
mod = number_range(1, 2);
sprintf (prefix_full, "an ocher %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
case 16: case 17: case 18: case 19: case 20:
case 21: case 22: case 23: case 24: case 25:
case 26: case 27: case 28: case 29: case 30:
mod = number_range(3, 4);
sprintf (prefix_full, "a tangerine %s", 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:
case 41: case 42: case 43: case 44: case 45:
mod = number_range(5, 6);
sprintf (prefix_full, "a coral %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
case 46: case 47: case 48: case 49: case 50:
mod = number_range(7, 8);
sprintf (prefix_full, "an amber %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
}
af->location = APPLY_RES_HOLY;
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_prefix_armor_res_negi (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 = number_range(1, 2);
sprintf (prefix_full, "a blackened %s", 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:
mod = number_range(1, 2);
sprintf (prefix_full, "a blackened %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
case 16: case 17: case 18: case 19: case 20:
case 21: case 22: case 23: case 24: case 25:
case 26: case 27: case 28: case 29: case 30:
mod = number_range(3, 4);
sprintf (prefix_full, "a charcol %s", 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:
case 41: case 42: case 43: case 44: case 45:
mod = number_range(5, 6);
sprintf (prefix_full, "a grey %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
case 46: case 47: case 48: case 49: case 50:
mod = number_range(7, 8);
sprintf (prefix_full, "an onyx %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
}
af->location = APPLY_RES_NEGI;
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_prefix_armor_res_pierce (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 = number_range(1, 2);
sprintf (prefix_full, "a solid %s", 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:
mod = number_range(1, 2);
sprintf (prefix_full, "a solid %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
case 16: case 17: case 18: case 19: case 20:
case 21: case 22: case 23: case 24: case 25:
case 26: case 27: case 28: case 29: case 30:
mod = number_range(3, 4);
sprintf (prefix_full, "a un-peneatrable %s", 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:
case 41: case 42: case 43: case 44: case 45:
mod = number_range(5, 6);
sprintf (prefix_full, "a shiny %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
case 46: case 47: case 48: case 49: case 50:
mod = number_range(7, 8);
sprintf (prefix_full, "a pierce resistant %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
}
af->location = APPLY_RES_PIERCE;
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_prefix_armor_res_slash (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 = number_range(1, 2);
sprintf (prefix_full, "a green %s", 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:
mod = number_range(1, 2);
sprintf (prefix_full, "a green %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
case 16: case 17: case 18: case 19: case 20:
case 21: case 22: case 23: case 24: case 25:
case 26: case 27: case 28: case 29: case 30:
mod = number_range(3, 4);
sprintf (prefix_full, "a light green %s", 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:
case 41: case 42: case 43: case 44: case 45:
mod = number_range(5, 6);
sprintf (prefix_full, "a forest %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
case 46: case 47: case 48: case 49: case 50:
mod = number_range(7, 8);
sprintf (prefix_full, "a slash resistant %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
}
af->location = APPLY_RES_SLASH;
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_prefix_armor_res_bash (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 = number_range(1, 2);
sprintf (prefix_full, "a padded %s", 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:
mod = number_range(1, 2);
sprintf (prefix_full, "a padded %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
case 16: case 17: case 18: case 19: case 20:
case 21: case 22: case 23: case 24: case 25:
case 26: case 27: case 28: case 29: case 30:
mod = number_range(3, 4);
sprintf (prefix_full, "a blue %s", 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:
case 41: case 42: case 43: case 44: case 45:
mod = number_range(5, 6);
sprintf (prefix_full, "a sky blue %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
case 46: case 47: case 48: case 49: case 50:
mod = number_range(7, 8);
sprintf (prefix_full, "a bash resistant %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
}
af->location = APPLY_RES_BASH;
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_prefix_armor_res_magic (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 = number_range(1, 2);
sprintf (prefix_full, "an aqua %s", 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:
mod = number_range(1, 2);
sprintf (prefix_full, "an aqua %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
case 16: case 17: case 18: case 19: case 20:
case 21: case 22: case 23: case 24: case 25:
case 26: case 27: case 28: case 29: case 30:
mod = number_range(3, 4);
sprintf (prefix_full, "a light blue %s", 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:
case 41: case 42: case 43: case 44: case 45:
mod = number_range(5, 6);
sprintf (prefix_full, "a grenish blue %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
case 46: case 47: case 48: case 49: case 50:
mod = number_range(7, 8);
sprintf (prefix_full, "a magic resistant %s", obj->short_descr);
obj->short_descr = str_dup (prefix_full);
break;
}
af->location = APPLY_RES_MAGIC;
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);
}