mimic in health food store
Make a mimic that picks special VEGETARIAN_CLASS look like food instead of a random object. Also, at least a couple of Minetown variants are classified as mazes so had a 50% chance of not even making that choice and look like a statue instead. Override maze when 'in_town()' yields True.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 makemon.c $NHDT-Date: 1585361050 2020/03/28 02:04:10 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.162 $ */
|
||||
/* NetHack 3.6 makemon.c $NHDT-Date: 1587024537 2020/04/16 08:08:57 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.168 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/*-Copyright (c) Robert Patrick Rankin, 2012. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
@@ -2184,7 +2184,9 @@ register struct monst *mtmp;
|
||||
appear = Is_rogue_level(&u.uz) ? S_hwall : S_hcdoor;
|
||||
else
|
||||
appear = Is_rogue_level(&u.uz) ? S_vwall : S_vcdoor;
|
||||
} else if (g.level.flags.is_maze_lev && !In_sokoban(&u.uz) && rn2(2)) {
|
||||
} else if (g.level.flags.is_maze_lev
|
||||
&& !(In_mines(&u.uz) && in_town(u.ux, u.uy))
|
||||
&& !In_sokoban(&u.uz) && rn2(2)) {
|
||||
ap_type = M_AP_OBJECT;
|
||||
appear = STATUE;
|
||||
} else if (roomno < 0 && !t_at(mx, my)) {
|
||||
@@ -2215,16 +2217,26 @@ register struct monst *mtmp;
|
||||
if (s_sym < 0) {
|
||||
ap_type = M_AP_OBJECT;
|
||||
appear = -s_sym;
|
||||
} else if (rt == FODDERSHOP && s_sym > MAXOCLASSES) {
|
||||
/* health food store usually generates pseudo-class
|
||||
VEGETARIAN_CLASS which is MAXOCLASSES+1; we don't bother
|
||||
trying to select among all possible vegetarian food items */
|
||||
ap_type = M_AP_OBJECT;
|
||||
appear = rn2(2) ? LUMP_OF_ROYAL_JELLY : SLIME_MOLD;
|
||||
} else {
|
||||
if (s_sym == RANDOM_CLASS || s_sym >= MAXOCLASSES)
|
||||
s_sym = syms[rn2((int) sizeof(syms) - 2) + 2];
|
||||
s_sym = syms[rn2(SIZE(syms) - 2) + 2];
|
||||
goto assign_sym;
|
||||
}
|
||||
} else {
|
||||
s_sym = syms[rn2((int) sizeof(syms))];
|
||||
s_sym = syms[rn2(SIZE(syms))];
|
||||
assign_sym:
|
||||
if (s_sym == MAXOCLASSES) {
|
||||
const int furnsyms[] = { S_upstair, S_dnstair, S_altar, S_grave, S_throne, S_sink };
|
||||
static const int furnsyms[] = {
|
||||
S_upstair, S_upstair, S_dnstair, S_dnstair,
|
||||
S_altar, S_grave, S_throne, S_sink
|
||||
};
|
||||
|
||||
ap_type = M_AP_FURNITURE;
|
||||
appear = furnsyms[rn2(SIZE(furnsyms))];
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user