Closed aWinglessMonkey closed 7 years ago
If I'm reading consumption.cpp correctly the only two functions of "gizzard" are to reduce the nutrition you get from food by 40%:
if( has_trait( "GIZZARD"
factor *= 0.6f;
and later:
mod_hunger( -nutr * factor * hunger_factor );
And make your stomach smaller.
int player::stomach_capacity() const { if( has_trait( "GIZZARD" ) ) { return 0; }
Returning 0 as opposed to -20 which is the default
I tried it and with beak, bird, and gizzard my PC can't get full now matter how much I eat or drink.
I'd recommend changing the bug to "Can't get full with Gizzard mutation"
Also the description needs to be changed since it doesn't affect your metabolic rate at all.
Does the description need to be changed or the effect changed?
It has an additional effect in player::stomach_capacity()
(also in consumption.cpp
) of lowering the capacity by "20", which it does by returning 0 instead of the default of -20 (negative values appear to be increases here, considering the HIBERNATE
and GOURMAND
flags' effects).
Reducing the efficiency of food has the same effect, balance-wise, as increasing metabolism, since the time it gains one from eating a piece of food is lowered either way. The back-end is different, and it would stack differently with the metabolism effect, though, which might matter if it didn't eat the only one in the bird line upon acquisition.
I think the effect of lowered capacity needs some debugging, and the trait itself needs revising or removal, since it makes very little sense both in its prerequisites and its theme. One might argue that some birds have fast metabolisms (hummingbirds come to mind), but much of that is a function of activity, and avian digestion is typically as good as mammalian digestion, from diet to diet.
Edit: The title has been extended to draw attention to the bug. (It might be partly an implementation quirk, since there are extra levels of fullness which no-one ever sees without high-capacity traits.)
What about changing the description to "Food is always on your mind. You get hungry frequently, and you never quite feel full." ? Maybe change "Gizzard" to "Avian digestion" ?
That might be turning a bug into a feature, not good coding practice. But I don't know the intent of the original coder.
I feel that would still be better served by just replacing it (and Light Metabolism, by extension) with Fast Metabolism, if birds just need to be hungry for balance reasons. It would make a lot more sense, especially.
To have a logical gizzard mutation, it would be something that improves digestion of certain foods (hard non-meat foods, mostly) if one has swallowed some small pebbles recently. This would have to be offset by not being able to get that exact same bonus by chewing, due to having almost certainly gained a beak. (Do bird mutants still have teeth in this game? Would effectively just be a limited mutation version of the expanded digestion CBM in that case.)
I'm fairly sure very little of the framework needed implement that (beyond a barebones CBM equivalency) is present at the moment. (Oddly, though, that CBM's implementation employs randomity where it is probably unnecessary.)
I don't think the game models chewing or ability to chew.
I think that you are right in that it's misnamed . It is a negative mutation, it needs to be bad or mostly bad.
I'm up for replacing it with one of the increased matabolism mutations, but it would take a good bit of color out of being a bird mutant. Maybe having a Gizzard just takes up space that would otherwise be your stomach, effectively making your stomach smaller. You could reduce eating time like Gourmaund does to account for the fact that your gizzard is doing the chewing.
Well, gizzards do take up space from the stomach, being chambers of the stomach, but they then have most of that taken capacity as capacity of their own, and I don't see how that ought to have an effect worth implementing at that point. (Maybe if there were pebbles actively taking up space ...)
Also, birds for which stomach capacity and, more importantly, ingestion speed is an issue tend to have crops, which flips the situation around completely.
Here's an idea. Bird mutants with the gizzard mutation can no longer eat cooked food (or most normal food) - but instead can eat fresh flesh (like from animals, like vultures), or occasionally peck at the ground when idle for small nutrient bonuses? (like chickens). It would require a beak mutation, and signify moving away from a mammalian/human diet. I mean, for some of the mutant lines it makes sense to still be able to eat human food. Uh, but for a lot of others...especially the ones that have BEAKS and LACK TEETH .... it really doesn't. And thats what a gizzard is, essentially. Internal teeth.
What about replacing gizzard with carnivore? It would make your more like a buzzard or vulture. Existing purely on meat, picking the meat out of mixed dishes, and force the PC to seek out fresh corpses just like a buzzard.
I don't see why bird mutants wouldn't be able to eat most anything we can. A gizzard is a literal replacement for molars, and I'm not even sure those have fallen out here (the beak can do the work of incisors and canines just fine, and a bit more). It has no effect on raw meat, since chewing meat, especially raw meat, is mostly redundant, since acid and pepsin can permeate most soft tissues quite well. Most carnivores don't even bother chewing, and carnivorous birds have highly reduced or repurposed gizzards (one species stuffs it with its own feathers to filter out small fish bones that haven't dissolved yet).
Replacing gizzard with carnivore would result in vampire hummingbirds. (Hummingbirds don't even need gizzards. >.> )
Honestly, though, neat as having two beak options seems on paper, I can see no reason (other than really liking hummingbirds) anyone wouldn't just chug more mutagen until the beak that doesn't suck appears. But that's another matter.
Closing - old and no movement. Feel free to ping me here if there's still interest, or make a new issue.
Things I have noticed about the Gizzard mutation:
Edit: Because I forgot: a version about which to anchor this: 9ccc9ff. (Sorry.)