int rate_freshness( const item &it, const item &container ) const { if( p.will_eat( it ).value() == edible_rating::ROTTEN ) { return -1; } else if( !container.type->container || !container.type->container->preserves ) { if( it.is_fresh() ) { return 1; } else if( it.is_going_bad() ) { return 3; } else if( it.goes_bad() ) { return 2; } } return 0; }