South Park reference - gnomes' business plan

If you chat with a peaceful gnome while hallucinating, you might
get a silly message from the TV show South Park.

To make it work for non-gnome characters, I changed the speech of
monsters who normally just grunt (gnomes, orcs, ogres, a couple
of other groups) to full humanoid when the hero is hallucinating.
(It already does that for orcs if the hero--hallucinating or not--
is an orc and for gnomes when the hero is a gnome.)
This commit is contained in:
PatR
2019-10-11 18:33:32 -07:00
parent 46adb312e7
commit 6cbf10d974

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 sounds.c $NHDT-Date: 1542765362 2018/11/21 01:56:02 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.81 $ */
/* NetHack 3.6 sounds.c $NHDT-Date: 1570844005 2019/10/12 01:33:25 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.83 $ */
/* Copyright (c) 1989 Janet Walz, Mike Threepoint */
/* NetHack may be freely redistributed. See license for details. */
@@ -496,7 +496,7 @@ register struct monst *mtmp;
*verbl_msg = 0, /* verbalize() */
*verbl_msg_mcan = 0; /* verbalize() if cancelled */
struct permonst *ptr = mtmp->data;
int msound = ptr->msound;
int msound = ptr->msound, gnomeplan = 0;
/* presumably nearness and sleep checks have already been made */
if (Deaf)
@@ -512,8 +512,9 @@ register struct monst *mtmp;
msound = mons[genus(monsndx(ptr), 1)].msound;
/* some normally non-speaking types can/will speak if hero is similar */
else if (msound == MS_ORC /* note: MS_ORC is same as MS_GRUNT */
&& (same_race(ptr, youmonst.data) /* current form, */
|| same_race(ptr, &mons[Race_switch]))) /* unpoly'd form */
&& ((same_race(ptr, youmonst.data) /* current form, */
|| same_race(ptr, &mons[Race_switch])) /* unpoly'd form */
|| Hallucination))
msound = MS_HUMANOID;
/* silliness, with slight chance to interfere with shopping */
else if (Hallucination && mon_is_gecko(mtmp))
@@ -588,13 +589,14 @@ register struct monst *mtmp;
} else
verbl_msg = "I only drink... potions.";
} else {
int vampindex;
static const char *const vampmsg[] = {
/* These first two (0 and 1) are specially handled below */
"I vant to suck your %s!",
"I vill come after %s without regret!",
/* other famous vampire quotes can follow here if desired */
};
int vampindex;
if (kindred)
verbl_msg =
"This is my hunting ground that you dare to prowl!";
@@ -803,6 +805,18 @@ register struct monst *mtmp;
pline_msg = "talks about spellcraft.";
else if (ptr->mlet == S_CENTAUR)
pline_msg = "discusses hunting.";
else if (is_gnome(ptr) && Hallucination && (gnomeplan = rn2(4)) % 2)
/* skipped for rn2(4) result of 0 or 2;
gag from an early episode of South Park called "Gnomes";
initially, Tweek (introduced in that episode) is the only
one aware of the tiny gnomes after spotting them sneaking
about; they are embarked upon a three-step business plan;
a diagram of the plan shows:
Phase 1 Phase 2 Phase 3
Collect underpants ? Profit
and they never verbalize step 2 so we don't either */
verbl_msg = (gnomeplan == 1) ? "Phase one, collect underpants."
: "Phase three, profit!";
else
switch (monsndx(ptr)) {
case PM_HOBBIT: