/* * Item generator 2, a simpler approch to the creation system * * File: Suffix.armor.c * Descr: This file holds all armor suffixes 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_suffix_armor_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_armor_resil (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 recovery", 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 recovery", 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 Resilience", 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 anti-change", obj->short_descr); obj->short_descr = str_dup (prefix_full); break; } af->location = APPLY_RESIL; 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_armor_intui (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 insight", 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 insight", 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 intuition", 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 second sight", obj->short_descr); obj->short_descr = str_dup (prefix_full); break; } af->location = APPLY_INTUI; 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_armor_wis (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 the gnome", 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 the gnome", 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 the Eldhan", 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 the cleric", 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 the holy sceptre", 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 kordoch", obj->short_descr); obj->short_descr = str_dup (prefix_full); break; } af->location = APPLY_WIS; 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_armor_int (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 energy", 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 energy", 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 the mind", 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 brillience", 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 sorcery", 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 wizardy", obj->short_descr); obj->short_descr = str_dup (prefix_full); break; } af->location = APPLY_INT; 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_armor_str (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 the dwarf", 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 the dwarf", 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 the ox", 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 the ogre", 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 might", 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 the corru", obj->short_descr); obj->short_descr = str_dup (prefix_full); break; } af->location = APPLY_STR; 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_armor_dex (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 dexterity", 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 dexterity", 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 skill", 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 accuracy", 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 precision", 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 perfection", obj->short_descr); obj->short_descr = str_dup (prefix_full); break; } af->location = APPLY_DEX; 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_armor_con (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 the jackal", 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 the jackal", 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 the fox", 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 the wolf", 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 the tiger", 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 tedeska", obj->short_descr); obj->short_descr = str_dup (prefix_full); break; } af->location = APPLY_CON; 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_armor_hp (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 = number_range (1, 5); sprintf (prefix_full, "%s of life", 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, "%s of life", 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, "%s of blood", 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, "%s of life force", 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, "%s of greater life force", 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, "%s of the fubashi", 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, "%s of the deurgar", obj->short_descr); obj->short_descr = str_dup (prefix_full); break; } af->location = APPLY_HIT; 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_armor_mana (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 = number_range (1, 5); sprintf (prefix_full, "%s of the apprentice", 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, "%s of the apprentice", 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, "%s of the acolyte", 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, "%s of the necroamancer", 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, "%s of the wizard", 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, "%s of the Archiwizard", 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, "%s of the Grand wizard", obj->short_descr); obj->short_descr = str_dup (prefix_full); break; } af->location = APPLY_MANA; 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_armor_move (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 = number_range (1, 5); sprintf (prefix_full, "%s of the mouse", 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, "%s of the mouse", 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, "%s of the horse", 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, "%s of the cheeta", 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, "%s of the hawk", 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, "%s of the kobald", 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, "%s of the tasoli", obj->short_descr); obj->short_descr = str_dup (prefix_full); break; } af->location = APPLY_MOVE; 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); }