give locations inside that room preference when choosing destination
tame/peaceful grabber/engulfer will release hero after conflict ends
make changes in hallucination be reflected by changes in mimickery feedback
+add Unaware pseudo-property to suppress various messages while unconscious
Platform- and/or Interface-Specific Fixes
-/* SCCS Id: @(#)youprop.h 3.5 1999/07/02 */
+/* SCCS Id: @(#)youprop.h 3.5 2006/09/01 */
/* Copyright (c) 1989 Mike Threepoint */
/* NetHack may be freely redistributed. See license for details. */
#define Lifesaved u.uprops[LIFESAVED].extrinsic
+/* unconscious() includes u.usleep but not is_fainted(); the multi test is
+ redundant but allows the function calls to be skipped most of the time */
+#define Unaware (multi < 0 && (unconscious() || is_fainted()))
#endif /* YOUPROP_H */
mdef->mundetected = 0;
newsym(mdef->mx, mdef->my);
if(canseemon(mdef) && !sensemon(mdef)) {
- if (u.usleep) You("dream of %s.",
+ if (Unaware) You("dream of %s.",
(mdef->data->geno & G_UNIQ) ?
a_monnam(mdef) : makeplural(m_monnam(mdef)));
else pline("Suddenly, you notice %s.", a_monnam(mdef));
boolean is_you = (mon == &youmonst);
struct obj *o;
- if (is_you ? (Blind || u.usleep || is_fainted()) :
+ if (is_you ? (Blind || Unaware) :
(mon->mblinded || !mon->mcansee || !haseyes(ptr) ||
/* BUG: temporary sleep sets mfrozen, but since
paralysis does too, we can't check it */
break;
case AT_ENGL:
- if (is_you && (Blindfolded || u.usleep || u.ucreamed))
+ if (is_you && (Blindfolded || Unaware || u.ucreamed))
return FALSE;
if (!is_you && mdef->msleeping)
return FALSE;
register struct monst *mtmp;
{
if (flags.verbose) {
- if (cansee(mtmp->mx, mtmp->my) && !u.usleep)
+ if (cansee(mtmp->mx, mtmp->my) && !Unaware)
pline("KABOOM!! You see a door explode.");
else if (!Deaf)
You_hear("a distant explosion.");
-/* SCCS Id: @(#)pline.c 3.5 2006/02/20 */
+/* SCCS Id: @(#)pline.c 3.5 2006/08/30 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
char *tmp;
VA_START(line);
VA_INIT(line, const char *);
- vpline(YouMessage(tmp, "You feel ", line), VA_ARGS);
+ if (Unaware)
+ YouPrefix(tmp, "You dream that you feel ", line);
+ else
+ YouPrefix(tmp, "You feel ", line);
+ vpline(strcat(tmp, line), VA_ARGS);
VA_END();
}
VA_INIT(line, const char *);
if (Underwater)
YouPrefix(tmp, "You barely hear ", line);
- else if (u.usleep)
+ else if (Unaware)
YouPrefix(tmp, "You dream that you hear ", line);
else
YouPrefix(tmp, "You hear ", line);
VA_START(line);
VA_INIT(line, const char *);
- if (u.usleep)
+ if (Unaware)
YouPrefix(tmp, "You dream that you see ", line);
else if (Blind) /* caller should have caught this... */
YouPrefix(tmp, "You sense ", line);
{
long old = HConfusion;
+ if (Unaware) talk = FALSE;
+
if (!xtime && old) {
if (talk)
You_feel("less %s now.",
{
long old = HStun;
+ if (Unaware) talk = FALSE;
+
if (!xtime && old) {
if (talk)
You_feel("%s now.",
{
long old = Sick;
+#if 0
+ if (Unaware) talk = FALSE;
+#endif
+
if (xtime > 0L) {
if (Sick_resistance) return;
if (!old) {
if (talk) You_feel("somewhat better.");
set_itimeout(&Sick, Sick * 2); /* approximation */
} else {
- if (talk) pline("What a relief!");
+ if (talk) You_feel("cured. What a relief!");
Sick = 0L; /* set_itimeout(&Sick, 0L) */
}
context.botl = TRUE;
{
long old = Slimed;
+#if 0
+ if (Unaware) msg = 0;
+#endif
+
if ((!xtime && old) || (xtime && !old)) {
if (msg) pline("%s", msg);
context.botl = 1;
{
long old = Stoned;
+#if 0
+ if (Unaware) msg = 0;
+#endif
+
if ((!xtime && old) || (xtime && !old)) {
if (msg) pline("%s", msg);
/* context.botl = 1; --- Stoned is not a status line item */
{
long old = Vomiting;
+ if (Unaware) talk = FALSE;
+
if(!xtime && old)
if(talk) You_feel("much less nauseated now.");
can_see_now = !Blind;
Blinded = old; /* restore */
- if (u.usleep) talk = FALSE;
+ if (Unaware) talk = FALSE;
if (can_see_now && !u_could_see) { /* regaining sight */
if (talk) {
boolean changed = 0;
const char *message, *verb;
+ if (Unaware) talk = FALSE;
+
message = (!xtime) ? "Everything %s SO boring now." :
"Oh wow! Everything %s so cosmic!";
verb = (!Blind) ? "looks" : "feels";
exercise(A_DEX, TRUE);
break;
case POT_BLINDNESS:
- if (!Blind && !u.usleep) {
+ if (!Blind && !Unaware) {
kn++;
pline("It suddenly gets dark.");
}
make_blinded(itimeout_incr(Blinded, rnd(5)), FALSE);
- if (!Blind && !u.usleep) Your(vision_clears);
+ if (!Blind && !Unaware) Your(vision_clears);
break;
case POT_WATER:
if(u.umonnum == PM_GREMLIN) {
return(FALSE);
}
if ((Teleportation || can_teleport(youmonst.data)) &&
- !u.usleep && (Teleport_control || rn2(3) < Luck+2)) {
+ !Unaware && (Teleport_control || rn2(3) < Luck+2)) {
You("attempt a teleport spell."); /* utcsri!carroll */
if (!level.flags.noteleport) {
(void) dotele();
while still asleep; we can't do that the same way that waking
due to combat is handled; note unmul() clears u.usleep */
if (u.usleep) unmul("Suddenly you wake up!");
+ /* being doused will revive from fainting */
+ if (is_fainted()) reset_faint();
/* can't crawl if unable to move (crawl_ok flag stays false) */
if (multi < 0 || (Upolyd && !youmonst.data->mmove)) goto crawl;
/* look around for a place to crawl to */