/* * Item generator 2, a simpler approch to the creation system * * File: Generator.Ring.c * Descr: This file holds the main generation of Ring items * Makes sure Ring has magical property */ #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 * new_gen_ring (OBJ_DATA * obj, int level) { char name_set[MSL]; char shor_set[MSL]; char long_set[MSL]; obj = create_object (get_obj_index (910), 0); obj->wear_flags = ITEM_TAKE; obj->wear_flags += ITEM_WEAR_FINGER; sprintf(name_set, "ring"); sprintf(shor_set, "ring"); sprintf(long_set, "a small ring is on the ground here"); obj->name = str_dup (name_set); obj->short_descr = str_dup (shor_set); obj->description = str_dup (long_set); int prefix_suffix = number_range(1, 3); switch(prefix_suffix) { default: case 1: gen_ring_prefix (obj, level); break; case 2: /* Quick hack for visual ascetics */ sprintf(shor_set, "a ring"); obj->short_descr = str_dup (shor_set); gen_ring_suffix (obj, level); break; case 3: gen_ring_prefix (obj, level); gen_ring_suffix (obj, level); break; } return(obj); } OBJ_DATA * new_gen_ammy (OBJ_DATA * obj, int level) { char name_set[MSL]; char shor_set[MSL]; char long_set[MSL]; obj = create_object (get_obj_index (911), 0); obj->wear_flags = ITEM_TAKE; obj->wear_flags += ITEM_WEAR_NECK; sprintf(name_set, "amulet"); sprintf(shor_set, "amulet"); sprintf(long_set, "a small amulet is on the ground here."); obj->name = str_dup (name_set); obj->short_descr = str_dup (shor_set); obj->description = str_dup (long_set); int prefix_suffix = number_range(1, 3); switch(prefix_suffix) { default: case 1: gen_ring_prefix (obj, level); break; case 2: /* Quick hack for visual ascetics */ sprintf(shor_set, "an amulet"); obj->short_descr = str_dup (shor_set); gen_ring_suffix (obj, level); break; case 3: gen_ring_prefix (obj, level); gen_ring_suffix (obj, level); break; } return(obj); } OBJ_DATA * gen_ring_suffix (OBJ_DATA * obj, int level) { if (level >= 50) // Quick hack for range { level = 50; } int choices_suffix = number_range(1, level); switch(choices_suffix) { default: 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: switch(number_range(1, 3)) { default: case 1: case 2: gen_prefix_armor_ac (obj, level); break; case 3: gen_prefix_armor_hitroll (obj, level); break; } 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: switch(number_range(1, 0)) { default: case 1: case 2: gen_prefix_armor_ac (obj, level); break; case 4: gen_prefix_armor_hitroll (obj, level); break; case 5: gen_prefix_armor_res_fire (obj, level); break; case 6: gen_prefix_armor_res_cold (obj, level); break; case 7: gen_prefix_armor_res_holy (obj, level); break; case 8: gen_prefix_armor_res_negi (obj, level); break; case 9: gen_prefix_armor_res_pierce (obj, level); break; case 10: gen_prefix_armor_res_slash (obj, level); break; case 3: gen_prefix_armor_res_magic (obj, level); break; } break; case 41: case 42: case 43: case 44: case 45: case 46: case 47: case 48: case 49: case 50: switch(number_range(1, 11)) { default: case 1: case 2: gen_prefix_armor_ac (obj, level); break; case 3: gen_prefix_armor_saves (obj, level); break; case 4: gen_prefix_armor_hitroll (obj, level); break; case 5: gen_prefix_armor_res_fire (obj, level); break; case 6: gen_prefix_armor_res_cold (obj, level); break; case 7: gen_prefix_armor_res_holy (obj, level); break; case 8: gen_prefix_armor_res_negi (obj, level); break; case 9: gen_prefix_armor_res_pierce (obj, level); break; case 10: gen_prefix_armor_res_slash (obj, level); break; case 11: gen_prefix_armor_res_magic (obj, level); break; } break; } return(obj); } OBJ_DATA * gen_ring_prefix (OBJ_DATA * obj, int level) { if (level >= 50) // Quick hack for range { level = 50; } int choices_prefix = number_range(1, level); switch(choices_prefix) { default: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: switch(number_range(1, 6)) { default: case 1: gen_suffix_armor_wis(obj, level); break; case 2: gen_suffix_armor_int(obj, level); break; case 3: gen_suffix_armor_con(obj, level); break; case 4: gen_suffix_armor_str(obj, level); break; case 5: gen_suffix_armor_dex(obj, level); break; case 6: gen_suffix_weapon_damroll(obj, level); break; } break; case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 20: switch(number_range(1, 9)) { default: case 1: gen_suffix_armor_wis(obj, level); break; case 2: gen_suffix_armor_int(obj, level); break; case 3: gen_suffix_armor_con(obj, level); break; case 4: gen_suffix_armor_str(obj, level); break; case 5: gen_suffix_armor_dex(obj, level); break; case 6: gen_suffix_weapon_damroll(obj, level); break; case 7: gen_suffix_armor_hp(obj, level); break; case 8: gen_suffix_armor_mana(obj, level); break; case 9: gen_suffix_armor_move(obj, level); break; } 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: case 41: case 42: case 43: case 44: case 45: case 46: case 47: case 48: case 49: case 50: switch(number_range(1, 13)) { default: case 1: gen_suffix_armor_wis(obj, level); break; case 2: gen_suffix_armor_int(obj, level); break; case 3: gen_suffix_armor_con(obj, level); break; case 4: gen_suffix_armor_str(obj, level); break; case 5: gen_suffix_armor_dex(obj, level); break; case 6: gen_suffix_weapon_damroll(obj, level); break; case 7: gen_suffix_armor_hp(obj, level); break; case 8: gen_suffix_armor_mana(obj, level); break; case 9: gen_suffix_armor_move(obj, level); break; case 10: gen_suffix_armor_luck(obj, level); break; case 11: gen_suffix_armor_intui(obj, level); break; case 12: gen_suffix_armor_resil(obj, level); break; case 13: gen_suffix_weapon_force(obj, level); break; case 14: gen_suffix_weapon_speed(obj, level); break; } break; } return(obj); }