Talk:Food appraisal

From NetHackWiki
Jump to: navigation, search

Did some testing, and it looks like while you will never be warned for breaking vegan conduct specifically, such as eating an Egg, your messages will be different if you are going to be breaking BOTH vegan and vegetarian conduct or breaking vegetarian while previously breaking vegan. IE:

1. Player w/ FA and who is currently vegan eats orc corpse; player gets message: The corpse smells foul and unfamiliar to you. Eat it anyway?

2. Player w/ FA and who is currently vegan eats egg: player gets no message but breaks vegan conduct.

3. Player w/ FA who ate egg then eats orc corpse: player gets message: The corpse smells unfamiliar to you. Eat it anyway?

However, if you eat a CORPSE that will break your vegan conduct but NOT your vegetarian conduct, you will in fact be warned. However:

  • there are only 3 corpses corpses that count as vegetarian not vegan: brown puddings, gray oozes and green slimes.
  • all 3 have some kind of more dangerous ailment: acid/posion/sliming, thus that will show before the vegan warning does.
  • the only time message breaking vegan but not vegetarian will show is if you are immune to acid if eating gray ooze or brown pudding, or poison/acid/sliming if eating a green slime. (thus you must be a green slime eating a green slime to see the message in this case)

Is this intended? eat.c 1838-1854 seems to suggest that eating anything animal-matter related (leather/bone/dragonhide/wax) OR a nonvegan-but-vegetarian corpse will trigger this message but doesn't seem to say anything about non-corpse non-animal-matter comestible. Thus a candy bar or egg will not show this message. The only non-"flesh" animal product that triggers this message seems to be eating wax candles as a creature who can do so.

Strongsauce1 04:23, September 11, 2009 (UTC)

Looking at the source, your conclusion seems correct. The check for 'cadaver' and the specific materials exclude non-vegan processed food. Since they went out of their way to include potential comestibles that you cannot eat in your regular form, e.g. leather, I get the feeling that they intended it to warn for any kind of comestible, and simply neglected to check for non-vegan processed foods.

Also, according to line 1857 (and confirmed in wizmode), even with sickness resistance you still get a warning about tainted food, it is simply moved to the bottom of the threat list. Thus you will still lose the intrinsic if you try to eat a zombie corpse as a ghoul. Line 1799 also shows a different message for a less-rotted corpse (rotted > 3 instead of 5). I don't have the exact effect of a lower rotted value offhand, so I don't know what the difference is. Might be worth updating the page for those two; I'd do it but it's late.

Qazmlpok 04:41, September 11, 2009 (UTC)

I was going to add the sickness info to the page, but couldn't think of a situation where you wouldn't have a tainted-but-not-rotten corpse - does this happen when you kill non-Wraith undead? The corpse is "just" tainted but not rotten? Strongsauce1 15:19, September 11, 2009 (UTC)

Also apparently you are not warned if a meatball or giant chunk of meat will break either vegan or vegetarian conduct. Strongsauce1 15:47, September 11, 2009 (UTC)

When eating "fresh" giant zombie corpses, I sometimes get the message the meat is old, and it subtracts some hit points, but does not cause food poisoning. This is independent of passing out due to rotten food. Perhaps it is something different from what you have been discussing; I propose to add a clarification to the article. (Unfortunately, food appraisal is out of my area of expertise.) -Tjr 17:33, September 11, 2009 (UTC)

ok. If condition "(mnum != PM_ACID_BLOB && !stoneable && rotted > 5L)" fails but "(rotted > 5L || (rotted > 3L && rn2(5)))" passes, you take damage but do not gain sickness. This code block is at line 1299. You lose up to 8 hp, which is actually much less harmful than a regular poisonous corpse (and if the corpse is poisonous, that block will never be reached because the poison check is before it, even if you have poison resistance). rotted is calculated by the age of the corpse divided by (10 + rn2(20)). A Zombie etc corpse starts at 100, so it is possible to eat them if rn2 is at least 7. (100/7 = 5.88 = 5.0, which is not enough to trigger the > 5 condition). Blessing the corpse will remove another 2 points, allowing rn2 to be as low as 3. Such a corpse will always hit the significantly less dangerous rotten corpse code block, and as far as I can tell you can eat them normally in that case. I was just able to eat a giant zombie corpse, with strength gain, but it took me 3 tries. Honestly considering how dangerous food poisoning can be (I once ate a tainted zombie corpse, tried to eat a eucalyptus leaf to cure it, passed out because it was rotten, and died. I had a full ascension kit, too.) eating an undead corpse just isn't worth the danger.

To answer your question, tainted is the same as rotten, just moreso. The rotten variable is calculated, and if it's 6 or higher than it's tainted, if it's 4 or higher and fails a 20% chance (rn2 is even distribution, right? I can't find a page on it, just rnl), then it's simply rotten. If it fails that 20% chance then it's safe to eat. rotten is calculated differently when dealing with the Appraisal warning, namely it divides by 10 instead of (10+rn2(20)), meaning that you will get warning about tainted meat before it's actually tainted, as it assumes worst-case result from the rng.

Ok. If the food is "rotten", i.e. rotten > 3 or if it's a rotten item (e.g. leather), you get the message "<Food> smells like it could be rotten!".
If food is "tainted", rotten > 5, you get "<Food> smells like it could be tainted!".
If rotten > 5 and you have sickness resistance, "<Food> smells like it could be tainted!".

In any of these cases you will get the warning and thus lose the intrinsic. You will also get a warning before the corpse is actually rotten/tainted, and if the item is merely rotten then it won't give you food sickness, just (maybe) hp loss. Again, sickness resistance does not let you keep the intrinsic, as it is not checked at all if rotten > 3 and there's a separate (which is weird, since it should be harmless) check at the end if you do have sickness resistance.

Qazmlpok 22:33, September 11, 2009 (UTC)