I stated that it would make more sense to make dwarves prefer a general flavor rather than an extremely specific creature. (I.E. they like "salty foods" or "fishy flavor" instead of specifically "striped bass".)
Agreed. I assume that the specific-animal food preference was originally intended just as a temporary placeholder, until Toady got around to coding more realistic recipes for things like goulash, omelettes, and pizza (as well as other types of balanced meals that simply don't have names). Then again, people
do exhibit firm likes/dislikes for some very specific foods, especially when those foods have strong flavors (
e.g. durian, anchovies, jalapenos, etc.).
I suppose the best way would be to set up a system of variables, like Sweet / Salty / Spicy / Fruity / Meaty / Fishy / Bitter / Crunchy / Moist / Sharp / Fatty / Smoky, etc., and give each ingredient (and booze) its own value on each of those axes. For the time being, prepared meals should have have their flavor variables be the average of all their ingredients, until someone develops a better method. Meanwhile, each dwarf would also have his own value for how much he likes / dislikes each of those general tastes. Depending on how strong those likes & dislikes are (
i.e., how particular the dwarf is about food), the dwarf may have one or more preferences for specific ingredients that fit his individual pattern.
The system you suggest in the OP . . . could easily defeat the purpose of preferences in the first place: If all you serve is plump helmet biscuits, then even with only a 2% chance of switching favorites, it's an eventuality that everyone switch to loving plump helmet.
Even more complexity, then. Suppose each dwarf has TWO sets of taste preferences: A "base", permanent one, and one that fluctuates with what he's eaten lately. When he eats an item, the game looks at the item's taste properties and
decreases his perceived desire for those tastes by a proportional amount. Let's say he eats a raw plump helmet, which tastes 12% Crunchy, 16% Fruity, and 8% Bitter. His desire for those tastes at his next meal will drop by those same amounts--but over time, they will gradually creep back to their baseline values, so he would have to endure a monotonous diet for quite some time before he got really sick of it, and actual starvation would reset his preferences entirely, making him happy to eat anything.
In that case, the best way would probably be to make the preferences there, but invisible to both the player and the dwarf until they're exposed to it.
The problem with this is that secret preferences functionally mean that players need to . . . actually collect every possible food type in the game if we're going to take advantage of the preferences system at all.
Actually, no, for two reasons.
1) Say a dwarf has a hidden, "true" favorite preference. That shouldn't stop her from having a
favorite-so-far preference, chosen from among the foods that she
has eaten, and for all
she knows it's her most favoritest ever. If the happiness boost from eating a favorite-so-far ingredient isn't as good as the boost from the "true" favorite, then it should be damned close. If/when she ever encounters her true favorite, her previous preference might slowly fall off the list . . . but she'll still likely enjoy eating it, because it matches her preferred tastes.
2) If we do switch to a taste-based system, then there will be NO need for specific ingredients, only for ingredients that have a broad variety of tastes. A dwarf who likes Sweet, Fishy, and Crunchy foods might logically have shrimp as a preference, and if you don't have shrimp you might never be able to make him truly ecstatic with the menu . . . but if you've got sweet pods, cave fish, and celery, you can at least keep him moderately pleased.