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:
@@ -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
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user