tastes like chicken...

Someone in the newsgroup expressed surprise that he didn't get any
special message after surviving the eating of a cockatrice corpse.  Combine
the cliche that unconventional meat inevitably tastes like chicken with
the mythology that cockatrices are a bizarre hybrid of chicken and reptile
(or whatever).  This will give a message about tasting like chicken for
corpses or smelling like chicken for tins when the hero has petrification
resistance (poly'd into a xorn, for instance) or is hallucinating.
This commit is contained in:
nethack.rankin
2004-11-20 02:39:18 +00:00
parent 6336dbbb65
commit 0600cf70ca
2 changed files with 28 additions and 15 deletions
+1
View File
@@ -84,6 +84,7 @@ when asked for a direction, a response of '?' yields help and then asks again
when adding an item to inventory, try to stack it with the quiver slot when adding an item to inventory, try to stack it with the quiver slot
before trying against other carried objects before trying against other carried objects
#adjust can be used to split an inventory stack #adjust can be used to split an inventory stack
cockatrice meat has a distinct flavor to some
Platform- and/or Interface-Specific New Features Platform- and/or Interface-Specific New Features
+27 -15
View File
@@ -1,4 +1,4 @@
/* SCCS Id: @(#)eat.c 3.4 2004/10/15 */ /* SCCS Id: @(#)eat.c 3.4 2004/11/17 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */ /* NetHack may be freely redistributed. See license for details. */
@@ -1062,7 +1062,7 @@ opentin() /* called during each move whilst opening a tin */
{ {
register int r; register int r;
const char *what; const char *what;
int which; int which, mnum;
if(!carried(context.tin.tin) && !obj_here(context.tin.tin, u.ux, u.uy)) if(!carried(context.tin.tin) && !obj_here(context.tin.tin, u.ux, u.uy))
/* perhaps it was stolen? */ /* perhaps it was stolen? */
@@ -1079,9 +1079,11 @@ opentin() /* called during each move whilst opening a tin */
costly_tin("destroyed"); costly_tin("destroyed");
goto use_me; goto use_me;
} }
You("succeed in opening the tin."); You("succeed in opening the tin.");
if(context.tin.tin->spe != 1) { if(context.tin.tin->spe != 1) {
if (context.tin.tin->corpsenm == NON_PM) { mnum = context.tin.tin->corpsenm;
if (mnum == NON_PM) {
pline("It turns out to be empty."); pline("It turns out to be empty.");
context.tin.tin->dknown = context.tin.tin->known = TRUE; context.tin.tin->dknown = context.tin.tin->known = TRUE;
costly_tin((const char*)0); costly_tin((const char*)0);
@@ -1089,17 +1091,23 @@ opentin() /* called during each move whilst opening a tin */
} }
r = tin_variety(context.tin.tin); r = tin_variety(context.tin.tin);
which = 0; /* 0=>plural, 1=>as-is, 2=>"the" prefix */ which = 0; /* 0=>plural, 1=>as-is, 2=>"the" prefix */
if (Hallucination) { if ((mnum == PM_COCKATRICE || mnum == PM_CHICKATRICE) &&
(Stone_resistance || Hallucination)) {
what = "chicken";
which = 1; /* suppress pluralization */
} else if (Hallucination) {
what = rndmonnam(); what = rndmonnam();
} else { } else {
what = mons[context.tin.tin->corpsenm].mname; what = mons[mnum].mname;
if (mons[context.tin.tin->corpsenm].geno & G_UNIQ) if (mons[mnum].geno & G_UNIQ)
which = type_is_pname(&mons[context.tin.tin->corpsenm]) ? 1 : 2; which = type_is_pname(&mons[mnum]) ? 1 : 2;
} }
if (which == 0) what = makeplural(what); if (which == 0) what = makeplural(what);
pline("It smells like %s%s.", (which == 2) ? "the " : "", what); pline("It smells like %s%s.", (which == 2) ? "the " : "", what);
if (yn("Eat it?") == 'n') { if (yn("Eat it?") == 'n') {
if (!Hallucination) context.tin.tin->dknown = context.tin.tin->known = TRUE; if (!Hallucination)
context.tin.tin->dknown = context.tin.tin->known = TRUE;
if (flags.verbose) You("discard the open tin."); if (flags.verbose) You("discard the open tin.");
costly_tin((const char*)0); costly_tin((const char*)0);
goto use_me; goto use_me;
@@ -1107,21 +1115,21 @@ opentin() /* called during each move whilst opening a tin */
/* in case stop_occupation() was called on previous meal */ /* in case stop_occupation() was called on previous meal */
context.victual.piece = (struct obj *)0; context.victual.piece = (struct obj *)0;
context.victual.o_id = 0; context.victual.o_id = 0;
context.victual.fullwarn = context.victual.eating = context.victual.doreset = FALSE; context.victual.fullwarn = context.victual.eating =
context.victual.doreset = FALSE;
You("consume %s %s.", tintxts[r].txt, You("consume %s %s.", tintxts[r].txt, mons[mnum].mname);
mons[context.tin.tin->corpsenm].mname);
/* KMH, conduct */ /* KMH, conduct */
u.uconduct.food++; u.uconduct.food++;
if (!vegan(&mons[context.tin.tin->corpsenm])) if (!vegan(&mons[mnum]))
u.uconduct.unvegan++; u.uconduct.unvegan++;
if (!vegetarian(&mons[context.tin.tin->corpsenm])) if (!vegetarian(&mons[mnum]))
violated_vegetarian(); violated_vegetarian();
context.tin.tin->dknown = context.tin.tin->known = TRUE; context.tin.tin->dknown = context.tin.tin->known = TRUE;
cprefx(context.tin.tin->corpsenm); cprefx(mnum);
cpostfx(context.tin.tin->corpsenm); cpostfx(mnum);
/* charge for one at pre-eating cost */ /* charge for one at pre-eating cost */
costly_tin((const char*)0); costly_tin((const char*)0);
@@ -1368,6 +1376,9 @@ eatcorpse(otmp) /* called when a corpse is selected as food */
} }
if (!retcode) consume_oeaten(otmp, 2); /* oeaten >>= 2 */ if (!retcode) consume_oeaten(otmp, 2); /* oeaten >>= 2 */
} else if ((mnum == PM_COCKATRICE || mnum == PM_CHICKATRICE) &&
(Stone_resistance || Hallucination)) {
pline("This tastes just like chicken!");
} else { } else {
pline("%s%s %s!", pline("%s%s %s!",
!uniq ? "This " : !type_is_pname(&mons[mnum]) ? "The " : "", !uniq ? "This " : !type_is_pname(&mons[mnum]) ? "The " : "",
@@ -1772,6 +1783,7 @@ register struct obj *otmp;
delayed_killer(STONED, KILLED_BY_AN, killer.name); delayed_killer(STONED, KILLED_BY_AN, killer.name);
} }
} }
/* note: no "tastes like chicken" message for eggs */
} }
break; break;
case EUCALYPTUS_LEAF: case EUCALYPTUS_LEAF: