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