From: PatR Date: Thu, 1 Apr 2021 20:09:00 +0000 (-0700) Subject: fix pull request #478 - homemade tin nutrition X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=39bd259bd3ce35662dfc6b9996aa268a28289056;p=nethack fix pull request #478 - homemade tin nutrition Homemade tin would yield a flat 50 points of nutrition even when made from a corpse that provides less than 50 points. Take the minimum of the two amounts instead of always 50. Fixes #478 --- diff --git a/doc/fixes37.0 b/doc/fixes37.0 index 50002b954..fa7704cd8 100644 --- a/doc/fixes37.0 +++ b/doc/fixes37.0 @@ -433,7 +433,7 @@ statues representing petrified creatures on Medusa's level might be from attempt to make corpse or statue of a named player character would yield that of a random monster instead when 'record' was empty; could result in statues of non-stonable creatures in cockatrice nests -indent items in perm_invent window +homemade tin of very low nutrition corpse gave more nutrition than the corpse Fixes to 3.7.0-x Problems that Were Exposed Via git Repository @@ -615,6 +615,7 @@ curses: for vertical status, line up conditions in columns; usually two but condense to three per line if the status window isn't tall enough [at present, highlighting with inverse video includes trailing spaces used to align entries in their columns--that's a feature...] +curses: indent items in perm_invent window by one space macOS: Xcode project was failing to build if the path to the NetHack source tree contained a space; the issue was within some shell script code contained within the project diff --git a/src/eat.c b/src/eat.c index 9a57cbf93..bf78c6998 100644 --- a/src/eat.c +++ b/src/eat.c @@ -1352,10 +1352,19 @@ consume_tin(const char *mesg) /* charge for one at pre-eating cost */ tin = costly_tin(COST_OPEN); - if (tintxts[r].nut < 0) /* rotten */ + if (tintxts[r].nut < 0) { /* rotten */ make_vomiting((long) rn1(15, 10), FALSE); - else - lesshungry(tintxts[r].nut); + } else { + int nutamt = tintxts[r].nut; + + /* nutrition from a homemade tin (made from a single corpse) + shouldn't be more than nutrition from the corresponding + corpse; other tinning modes might use more than one corpse + or add extra ingredients so aren't similarly restricted */ + if (r == HOMEMADE_TIN && nutamt > mons[mnum].cnutrit) + nutamt = mons[mnum].cnutrit; + lesshungry(nutamt); + } if (tintxts[r].greasy) { /* Assume !Glib, because you can't open tins when Glib. */