CleverRaven / Cataclysm-DDA

Cataclysm - Dark Days Ahead. A turn-based survival game set in a post-apocalyptic world.
http://cataclysmdda.org
Other
10.11k stars 4.11k forks source link

Gizzard mutation is weird; prevents fullness. #15603

Closed aWinglessMonkey closed 7 years ago

aWinglessMonkey commented 8 years ago

Things I have noticed about the Gizzard mutation:

Edit: Because I forgot: a version about which to anchor this: 9ccc9ff. (Sorry.)

WizardOfOoo commented 8 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.

WizardOfOoo commented 8 years ago

Does the description need to be changed or the effect changed?

aWinglessMonkey commented 8 years ago

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.)

WizardOfOoo commented 8 years ago

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.

aWinglessMonkey commented 8 years ago

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.

aWinglessMonkey commented 8 years ago

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.)

WizardOfOoo commented 8 years ago

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.

aWinglessMonkey commented 8 years ago

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.

secretfire42 commented 8 years ago

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.

WizardOfOoo commented 8 years ago

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.

aWinglessMonkey commented 8 years ago

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.

Leland commented 7 years ago

Closing - old and no movement. Feel free to ping me here if there's still interest, or make a new issue.