Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
	  
  }