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