void do_sell( char_data* ch, char* argument ) { char_data* keeper; thing_array* array; obj_data* obj; if( ( keeper = find_keeper( ch ) ) == NULL ) return; if( is_set( &ch->in_room->room_flags, RFLAG_PET_SHOP ) ) { process_tell( keeper, ch, "We don't buy pets." ); ch->reply = keeper; return; } if( *argument == '\0' ) { send( ch, "Sell what?\r\n" ); return; } if( ( array = several_things( ch, argument, "sell", &ch->contents ) ) == NULL ) return; thing_array subset [ 5 ]; thing_func* func [ 5 ] = { cursed, stolen, uninterested, not_empty, sold }; sort_objects( ch, *array, keeper, 5, subset, func ); page_priv( ch, NULL, empty_string ); page_priv( ch, &subset[1], "don't own" ); page_priv( ch, &subset[2], "isn't interested in", keeper ); page_priv( ch, &subset[0], "can't let go of" ); page_priv( ch, &subset[3], NULL, NULL, "isn't empty", "aren't empty" ); page_publ( ch, &subset[4], "sell", keeper, "to", "for" ); for( int i = 0; i < subset[4]; i++ ) { obj = (obj_data*) subset[4][i]; obj = (obj_data*) obj->From( obj->selected ); set_bit( obj->extra_flags, OFLAG_IDENTIFIED ); set_bit( obj->extra_flags, OFLAG_KNOWN_LIQUID ); if( obj->pIndexData->item_type == ITEM_WAND || obj->pIndexData->item_type == ITEM_STAFF ) obj->value[3] = obj->pIndexData->value[3]; free_string( obj->label, MEM_OBJECT ); obj->label = empty_string; obj->owner = NULL; add_coins( ch, obj->temp ); obj->To( keeper ); consolidate( obj ); } delete array; }
BOOLEAN add_denom_to_system(struct coin c[], unsigned denom, unsigned count) { switch(denom) { case 5: add_coins(c, FIVE_CENTS,count); break; case 10: add_coins(c,TEN_CENTS,count); break; case 20: add_coins(c, TWENTY_CENTS,count); break; case 50: add_coins(c,FIFTY_CENTS,count); break; case 100: add_coins(c, ONE_DOLLAR,count); break; case 200: add_coins(c, TWO_DOLLARS,count); break; case 500: add_coins(c,FIVE_DOLLARS,count); break; case 1000: add_coins(c, TEN_DOLLARS, count); default: return FALSE; } return TRUE; }