From: Paul Shinn Subject: Embalmer buy corpses for 1-2gp and make 1000gp trophy bags. Because of how Merc is set up, you also need to change the "level" of corpses to level 1 instead of level 0, shopkeepers don't buy level 0 stuff. Add this to the spell table in CONST.C "make bag", { 37, 37, 37, 37 }, spell_make_bag, TAR_OBJ_INV, POS_STANDING, NULL, SLOT(50), 100, 24, "", "!Make Bag!"*/ Put this in MAGIC.C void spell_make_bag( int sn, int level, CHAR_DATA *ch, void *vo ) { static char *headers[] = { "corpse of the ", "corpse of The ", "corpse of an ", "corpse of An ", "corpse of a ", "corpse of A ", "corpse of " }; // (This one must be last) OBJ_DATA *obj = (OBJ_DATA *) vo; char buf[MAX_STRING_LENGTH]; int i; if ( obj->item_type != ITEM_CORPSE_NPC && obj->item_type != ITEM_CORPSE_PC ) return; for (i = 0; i < 7; i++) { int len = strlen(headers[i]); if ( memcmp(obj->short_descr, headers[i], len) == 0 ) { sprintf( buf, "bag %s", obj->short_descr+len ); free_string( obj->name ); obj->name = str_dup(buf); sprintf( buf, "A bag of fine %s hide catches your eye. ", obj->short_descr+len ); free_string( obj->description ); obj->description = str_dup( buf ); sprintf( buf, "bag made from %s hide", obj->short_descr+len ); free_string( obj->short_descr ); obj->short_descr = str_dup( buf ); break; } } obj->item_type = ITEM_CONTAINER; obj->wear_flags = ITEM_HOLD|ITEM_TAKE; obj->timer = 0; obj->weight = 5; obj->level = level/3; obj->cost = level * 50; obj->value[0] = level * 10; /* Weight capacity */ obj->value[1] = 1; /* Closeable */ obj->value[2] = -1; /* No key needed */ obj->pIndexData = get_obj_index( 5660 ); /* So it's not a corpse */ act( "Your new $p looks pretty snazzy.", ch, obj, NULL, TO_CHAR ); act( "$n's new $p looks pretty snazzy.", ch, obj, NULL, TO_ROOM ); send_to_char( "Ok.\n\r", ch ); return; } /* Put this in a zone. If you change the number change it in the code as well. #5660 bag~ a generic bag~ A generic bag generates the VNUM for the 'make purse' spell. ~ ~ 15 0 1 50 0 0 0 5 50 0 */ Put this in SPECIAL.C. Remember to add this to spec_lookup() as well. bool spec_taxidermist( CHAR_DATA *ch ) { OBJ_DATA *inv; int sn; if ( ch->position != POS_STANDING ) return FALSE; if ( ch->pIndexData->pShop == 0 || time_info.hour < ch->pIndexData->pShop->open_hour || time_info.hour > ch->pIndexData->pShop->close_hour ) return FALSE; for ( inv = ch->carrying; inv != NULL; inv = inv->next_content ) { if (inv->item_type == ITEM_CORPSE_NPC) { if ( ( sn = skill_lookup( "make bag" ) ) >= 0 ) (*skill_table[sn].spell_fun) ( sn, ch->level, ch, inv ); return TRUE; } else if (inv->wear_loc == WEAR_NONE && number_percent() < 5) { act( "$n suggests you buy $p.", ch, inv, NULL, TO_ROOM ); return TRUE; } } return FALSE; }