/*************************************************************************** * Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, * * Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe. * * * * Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael * * Chastain, Michael Quan, and Mitchell Tse. * * * * In order to use any part of this Merc Diku Mud, you must comply with * * both the original Diku license in 'license.doc' as well the Merc * * license in 'license.txt'. In particular, you may not remove either of * * these copyright notices. * * * * Much time and thought has gone into this software and you are * * benefitting. We hope that you share your changes too. What goes * * around, comes around. * ***************************************************************************/ /*************************************************************************** * EotS 1.3 is copyright 1993-1996 Eric Orvedal and Nathan Axtman * * * * EotS has been brought to you by us, the merry drunk mudders * * Kjodo * * Torann * * Sledge * * Nicodemous * * Tom * * By using this code, you have agreed to follow the terms of the * * blood oath of the carungatang * * * * EotS Random object functions * * I think you will enjoy :) (Ugh...935 lines [was 3000+ :)] ) * * * ***************************************************************************/ #define unix 1 #if defined(macintosh) #include <types.h> #else #include <sys/types.h> #endif #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include "merc.h" void random_affect args(( OBJ_DATA *obj, char *buf, int total )); OBJ_DATA *random_object( int level ) { OBJ_DATA *obj; OBJ_INDEX_DATA *pObjIndex; char buf[MAX_STRING_LENGTH]; bool singlename = TRUE; bool lowhigh = FALSE; char long_desc[MAX_STRING_LENGTH]; int lowdam = 0; int highdam = 0; if ((number_percent() + level) > 90 ) lowhigh = TRUE; if ( level > 100 ) level = 100; pObjIndex = get_obj_index(OBJ_VNUM_DUMMY); obj = create_object( pObjIndex, level ); switch( dice( 1, 6 ) ) { case 1: case 2: case 3: case 4: case 5: obj->item_type = ITEM_ARMOR; switch( dice( 1, 18 ) ) { case 1: /* finger */ obj->wear_flags ^= ITEM_TAKE; obj->wear_flags ^= ITEM_WEAR_FINGER; sprintf( buf, "Ring" ); break; case 2: /* neck */ obj->wear_flags ^= ITEM_TAKE; obj->wear_flags ^= ITEM_WEAR_NECK; switch( dice( 1,3)) { case 1: sprintf( buf, "Necklace" ); break; case 2: sprintf( buf, "Collar" ); break; case 3: sprintf( buf, "Talisman" ); break; } break; case 3: /* body */ obj->wear_flags ^= ITEM_TAKE; obj->wear_flags ^= ITEM_WEAR_BODY; switch( dice( 1,3)) { case 1: sprintf( buf, "Armor" ); break; case 2: sprintf( buf, "Shirt" ); break; case 3: sprintf( buf, "Breastplate" ); break; } break; case 4: /* head */ obj->wear_flags ^= ITEM_TAKE; obj->wear_flags ^= ITEM_WEAR_HEAD; switch( dice( 1,3)) { case 1: sprintf( buf, "Hat" ); break; case 2: sprintf( buf, "Helmet" ); break; case 3: sprintf( buf, "Helm" ); break; } break; case 5: /* legs */ obj->wear_flags ^= ITEM_TAKE; obj->wear_flags ^= ITEM_WEAR_LEGS; switch( dice( 1,3)) { case 1: sprintf( buf, "Leggings" ); break; case 2: sprintf( buf, "Pants" ); break; case 3: sprintf( buf, "Kilt" ); break; } break; case 6: /* feet */ obj->wear_flags ^= ITEM_TAKE; obj->wear_flags ^= ITEM_WEAR_FEET; switch( dice( 1,2)) { case 1: sprintf( buf, "Shoes" ); break; case 2: sprintf( buf, "Boots" ); break; } break; case 7: /* hands */ obj->wear_flags ^= ITEM_TAKE; obj->wear_flags ^= ITEM_WEAR_HANDS; switch( dice( 1,2)) { case 1: sprintf( buf, "Gloves" ); break; case 2: sprintf( buf, "Gauntlets" ); break; } break; case 8: /* arm */ obj->wear_flags ^= ITEM_TAKE; obj->wear_flags ^= ITEM_WEAR_ARMS; switch( dice( 1,2)) { case 1: sprintf( buf, "Sleeves" ); break; case 2: sprintf( buf, "Vambrace" ); break; } break; case 9: /* sheild */ obj->wear_flags ^= ITEM_TAKE; obj->wear_flags ^= ITEM_WEAR_SHIELD; sprintf( buf, "Shield" ); break; case 10: /* about */ obj->wear_flags ^= ITEM_TAKE; obj->wear_flags ^= ITEM_WEAR_ABOUT; switch( dice( 1,3)) { case 1: sprintf( buf, "Robe" ); break; case 2: sprintf( buf, "Cloak" ); break; case 3: sprintf( buf, "Cape" ); break; } break; case 11: /* waist */ obj->wear_flags ^= ITEM_TAKE; obj->wear_flags ^= ITEM_WEAR_WAIST; switch( dice( 1,3)) { case 1: sprintf( buf, "Belt" ); break; case 2: sprintf( buf, "Sash" ); break; case 3: sprintf( buf, "Cord" ); break; } break; case 12: /* wrist */ obj->wear_flags ^= ITEM_TAKE; obj->wear_flags ^= ITEM_WEAR_WRIST; switch( dice( 1,2)) { case 1: sprintf( buf, "Bracer" ); break; case 2: sprintf( buf, "Bracelet" ); break; } break; case 13: /* hold */ obj->wear_flags ^= ITEM_TAKE; obj->wear_flags ^= ITEM_HOLD; sprintf( buf, "Sceptre" ); break; case 14: /* orbit */ obj->wear_flags ^= ITEM_TAKE; obj->wear_flags ^= ITEM_WEAR_ORBIT; switch( dice( 1,2)) { case 1: sprintf( buf, "Orb" ); break; case 2: sprintf( buf, "Faerie" ); break; } break; case 15: /* face */ obj->wear_flags ^= ITEM_TAKE; obj->wear_flags ^= ITEM_WEAR_FACE; switch( dice( 1,2)) { case 1: sprintf( buf, "Mask" ); break; case 2: sprintf( buf, "Veil" ); break; } break; case 16: /* contact */ obj->wear_flags ^= ITEM_TAKE; obj->wear_flags ^= ITEM_WEAR_CONTACT; switch( dice( 1,3)) { case 1: sprintf( buf, "Tears" ); break; case 2: sprintf( buf, "Eyes" ); break; case 3: sprintf( buf, "Lenses" ); break; } break; case 17: /* ears */ obj->wear_flags ^= ITEM_TAKE; obj->wear_flags ^= ITEM_WEAR_EARS; sprintf( buf, "Collar" ); break; case 18: /* ankle */ obj->wear_flags ^= ITEM_TAKE; obj->wear_flags ^= ITEM_WEAR_ANKLE; switch( dice( 1,2)) { case 1: sprintf( buf, "Anklet" ); break; case 2: sprintf( buf, "Stocking" ); break; } break; } break; case 6: obj->item_type = ITEM_WEAPON; lowdam = number_range( 1, level ); highdam = number_range(lowdam, level + 5 ); obj->value[1] = lowdam; obj->value[2] = highdam; switch( dice( 1, 5 ) ) { case 1: /* bash */ obj->wear_flags ^= ITEM_TAKE; obj->wear_flags ^= ITEM_WIELD; obj->value[3] = 8; switch( dice( 1,2)) { case 1: sprintf( buf, "Hammer" ); break; case 2: sprintf( buf, "Mace" ); break; } break; case 2: /* pierce */ obj->wear_flags ^= ITEM_TAKE; obj->wear_flags ^= ITEM_WIELD; obj->value[3] = 11; switch( dice( 1,2)) { case 1: sprintf( buf, "Dagger" ); break; case 2: sprintf( buf, "Knife" ); break; } break; case 3: /* slash */ obj->wear_flags ^= ITEM_TAKE; obj->wear_flags ^= ITEM_WIELD; obj->value[3] = 3; switch( dice( 1,2)) { case 1: sprintf( buf, "Sword" ); break; case 2: sprintf( buf, "Long Sword" ); break; } break; case 4: /* pierce */ obj->wear_flags ^= ITEM_TAKE; obj->wear_flags ^= ITEM_WIELD; obj->value[3] = 13; switch( dice( 1,2)) { case 1: sprintf( buf, "Axe" ); break; case 2: sprintf( buf, "Battle Axe" ); break; } break; case 5: /* pierce */ obj->wear_flags ^= ITEM_TAKE; obj->wear_flags ^= ITEM_WIELD; obj->value[3] = 4; switch( dice( 1,2)) { case 1: sprintf( buf, "Whip" ); break; case 2: sprintf( buf, "Bull Whip" ); break; } break; } break; } /* big switch */ if ( lowhigh ) switch ( dice( 1, 10 ) ) { case 1: case 2: case 3: case 4: case 5: /* no applies */ break; case 6: singlename = FALSE; random_affect( obj, buf, 1); break; case 7: singlename = FALSE; random_affect(obj, buf, 2); break; case 8: singlename = FALSE; random_affect(obj, buf, 3); break; case 9: singlename = FALSE; random_affect(obj, buf, 4); break; case 10: singlename = FALSE; random_affect(obj, buf, 5); break; } if ( singlename ) { sprintf( long_desc, "A %s has been left here.", buf ); obj->name = str_dup( buf ); obj->short_descr = str_dup( buf ); obj->description = str_dup( long_desc ); } obj->level = level; return obj; } void random_affect( OBJ_DATA *obj, char *buf, int total ) { char long_desc[MAX_STRING_LENGTH]; AFFECT_DATA *paf; char name[MAX_STRING_LENGTH]; int number; for ( number = 0; number < total; number++ ) { switch( dice( 1, 43 ) ) { case 1: /* saving-rod */ paf = new_affect(); paf->location = flag_value( apply_flags, "saving-rod" ); paf->modifier = number_range( -50, 50 ); paf->type = skill_lookup("saving-rod"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Magical Rod Defense", buf ); break; case 2: /* saving-petri */ paf = new_affect(); paf->location = flag_value( apply_flags, "saving-petri" ); paf->modifier = number_range( -50, 50 ); paf->type = skill_lookup("saving-petri"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Magical Petrification Defense", buf ); break; case 3: /* saving-breath */ paf = new_affect(); paf->location = flag_value( apply_flags,"saving-breath"); paf->modifier = number_range( -50, 50 ); paf->type = skill_lookup("saving-breath"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Magical Breath Defense", buf ); break; case 4: /* saving-spell */ paf = new_affect(); paf->location = flag_value( apply_flags,"saving-spell"); paf->modifier = number_range( -50, 50 ); paf->type = skill_lookup("saving-spell"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Magical Spell Defense", buf ); break; case 5: /* invis */ paf = new_affect(); paf->location = flag_value( apply_flags,"invis"); paf->modifier = number_range( -1, 100 ); paf->type = skill_lookup("invis"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Invisibility", buf ); break; case 6: /* detect-invis */ paf = new_affect(); paf->location = flag_value( apply_flags,"detect-invis"); paf->modifier = number_range( -1, 100 ); paf->type = skill_lookup("detect-invis"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Detect Invisible", buf ); break; case 7: /* hide */ paf = new_affect(); paf->location = flag_value( apply_flags,"hide"); paf->modifier = number_range( -1, 100 ); paf->type = skill_lookup("hide"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Hiding", buf ); break; case 8: /* sneak */ paf = new_affect(); paf->location = flag_value( apply_flags,"sneak"); paf->modifier = number_range( -1, 100 ); paf->type = skill_lookup("sneak"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Sneaking", buf ); break; case 9: /* scry */ paf = new_affect(); paf->location = flag_value( apply_flags,"scry"); paf->modifier = number_range( -1, 100 ); paf->type = skill_lookup("scry"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Scrying", buf ); break; case 10: /* detect-hide */ paf = new_affect(); paf->location = flag_value( apply_flags,"detect-hide"); paf->modifier = number_range( -1, 100 ); paf->type = skill_lookup("detect-hide"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Detect Hidden", buf ); break; case 11: /* detect-magic */ paf = new_affect(); paf->location = flag_value( apply_flags,"detect-magic"); paf->modifier = number_range( -1, 100 ); paf->type = skill_lookup("detect-magic"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Magic Detection", buf ); break; case 12: /* detect-evil */ paf = new_affect(); paf->location = flag_value( apply_flags,"detect-evil"); paf->modifier = number_range( -1, 100 ); paf->type = skill_lookup("detect-evil"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Detect Evil", buf ); break; case 13: /* protect */ paf = new_affect(); paf->location = flag_value( apply_flags,"protect"); paf->modifier = number_range( -1, 100 ); paf->type = skill_lookup("protect"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Protection", buf ); break; case 14: /* fly */ paf = new_affect(); paf->location = flag_value( apply_flags,"fly"); paf->modifier = number_range( -1, 100 ); paf->type = skill_lookup("fly"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Flight", buf ); break; case 15: /* infrared */ paf = new_affect(); paf->location = flag_value( apply_flags,"infrared"); paf->modifier = number_range( -1, 100 ); paf->type = skill_lookup("infrared"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Infravision", buf ); break; case 16: /* sanctuary */ paf = new_affect(); paf->location = flag_value( apply_flags,"sanctuary"); paf->modifier = number_range( -1, 100 ); paf->type = skill_lookup("sanctuary"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Sanctuary", buf ); break; case 17: /* pass-door */ paf = new_affect(); paf->location = flag_value( apply_flags,"pass-door"); paf->modifier = number_range( -1, 100 ); paf->type = skill_lookup("pass-door"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Pass Door", buf ); break; case 18: /* haste */ paf = new_affect(); paf->location = flag_value( apply_flags,"haste"); paf->modifier = number_range( -1, 100 ); paf->type = skill_lookup("haste"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Speed", buf ); break; case 19: /* bless */ paf = new_affect(); paf->location = flag_value( apply_flags,"bless"); paf->modifier = number_range( -1, 100 ); paf->type = skill_lookup("bless"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Bless", buf ); break; case 20: /* poison */ paf = new_affect(); paf->location = flag_value( apply_flags,"poison"); paf->modifier = number_range( -1, 100 ); paf->type = skill_lookup("poison"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Venom", buf ); break; case 21: /* faerie-fire */ paf = new_affect(); paf->location = flag_value( apply_flags,"faerie-fire"); paf->modifier = number_range( -1, 100 ); paf->type = skill_lookup("faerie-fire"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Faerie Fire", buf ); break; case 22: /* giant-str */ paf = new_affect(); paf->location = flag_value( apply_flags,"giant-str"); paf->modifier = number_range( -1, 100 ); paf->type = skill_lookup("giant-str"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Giant Strength", buf ); break; case 23: /* strength */ paf = new_affect(); paf->location = flag_value( apply_flags,"strength"); paf->modifier = number_range( -10, 10 ); paf->type = skill_lookup("strength"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; break; sprintf( name, "%s of Strength", buf ); case 24: /* dexterity */ paf = new_affect(); paf->location = flag_value( apply_flags,"dexterity"); paf->modifier = number_range( -10, 10 ); paf->type = skill_lookup("dexterity"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Dexterity", buf ); break; case 25: /* intelligence */ paf = new_affect(); paf->location = flag_value( apply_flags,"intelligence"); paf->modifier = number_range( -10, 10 ); paf->type = skill_lookup("intelligence"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Intelligence", buf ); break; case 26: /* wisdom */ paf = new_affect(); paf->location = flag_value( apply_flags,"wisdom"); paf->modifier = number_range( -10, 10 ); paf->type = skill_lookup("wisdom"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Wisdom", buf ); break; case 27: /* constitution */ paf = new_affect(); paf->location = flag_value( apply_flags,"constitution"); paf->modifier = number_range( -10, 10 ); paf->type = skill_lookup("constitution"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Constitution", buf ); break; case 28: /* sex */ paf = new_affect(); paf->location = flag_value( apply_flags,"sex"); paf->modifier = number_range( -1, 1 ); paf->type = skill_lookup("sex"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Change Sex", buf ); break; case 29: /* age */ paf = new_affect(); paf->location = flag_value( apply_flags,"age"); paf->modifier = number_range( -10, 100 ); paf->type = skill_lookup("age"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Aging", buf ); break; case 30: /* height */ paf = new_affect(); paf->location = flag_value( apply_flags,"height"); paf->modifier = number_range( -3, 10 ); paf->type = skill_lookup("height"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Size", buf ); break; case 31: /* weight */ paf = new_affect(); paf->location = flag_value( apply_flags,"weight"); paf->modifier = number_range( -1, 100 ); paf->type = skill_lookup("weight"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Encumbrance", buf ); break; case 32: /* mana */ paf = new_affect(); paf->location = flag_value( apply_flags,"mana"); paf->modifier = number_range( -200, 200 ); paf->type = skill_lookup("mana"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Magical Energy", buf ); break; case 33: /* blood */ paf = new_affect(); paf->location = flag_value( apply_flags,"blood"); paf->modifier = number_range( -200, 200 ); paf->type = skill_lookup("blood"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Blood", buf ); break; case 34: /* anti-disarm */ paf = new_affect(); paf->location = flag_value( apply_flags,"anti-disarm"); paf->modifier = number_range( -100, 100 ); paf->type = skill_lookup("anti-disarm"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Grip", buf ); break; case 35: /* hp */ paf = new_affect(); paf->location = flag_value( apply_flags,"hp"); paf->modifier = number_range( -200, 200 ); paf->type = skill_lookup("hp"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Life", buf ); break; case 36: /* move */ paf = new_affect(); paf->location = flag_value( apply_flags,"move"); paf->modifier = number_range( -200, 200 ); paf->type = skill_lookup("move"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Endurance", buf ); break; case 37: /* ac */ paf = new_affect(); paf->location = flag_value( apply_flags,"ac"); paf->modifier = number_range( -200, 200 ); paf->type = skill_lookup("ac"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Armoring", buf ); break; case 38: /* hitroll */ paf = new_affect(); paf->location = flag_value( apply_flags,"hitroll"); paf->modifier = number_range( -200, 200 ); paf->type = skill_lookup("hitroll"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Accuracy", buf ); break; case 39: /* damroll */ paf = new_affect(); paf->location = flag_value( apply_flags,"damroll"); paf->modifier = number_range( -200, 200 ); paf->type = skill_lookup("damroll"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of the Brute", buf ); break; case 40: /* saving-para */ paf = new_affect(); paf->location = flag_value( apply_flags,"saving-para"); paf->modifier = number_range( -20, 20 ); paf->type = skill_lookup("saving-para"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Magical Paralysis Defense", buf ); break; case 41: /* heighten-senses */ paf = new_affect(); paf->location = flag_value( apply_flags,"heighten-senses"); paf->modifier = number_range( -1, 100 ); paf->type = skill_lookup("heighten-senses"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Heighten Senses", buf ); break; case 42: /* combat-mind */ paf = new_affect(); paf->location = flag_value( apply_flags,"combat-mind"); paf->modifier = number_range( -1, 100 ); paf->type = skill_lookup("combat-mind"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Combat", buf ); break; case 43: /* bio-acceleration */ paf = new_affect(); paf->location = flag_value( apply_flags,"bio-acceleration"); paf->modifier = number_range( -1, 100 ); paf->type = skill_lookup("bio-acceleration"); if ( paf->type < 0 ) paf->type = 0; paf->duration = -1; paf->bitvector = 0; paf->next = obj->affected; obj->affected = paf; sprintf( name, "%s of Psionic Defense", buf ); break; } /* aff switch */ } sprintf( long_desc, "A %s has been left here.", name ); obj->name = str_dup( name ); obj->short_descr = str_dup( name ); obj->description = str_dup( long_desc ); return; }