From 0414c09c7a658efb1538407c038f12f866264ef5 Mon Sep 17 00:00:00 2001 From: cohrs Date: Fri, 21 May 2004 21:20:16 +0000 Subject: [PATCH] U917 - floating above unknown stairs Attempting to go > while blind and floating over unknown stairs/ladder would refer to the stairs in the "high above" message (however, the stairs/ladder remained unidentified on the map). Change this case so it only refers to stairs/ladder if that's what the hero remembers on the map. --- doc/fixes35.0 | 1 + src/do.c | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/doc/fixes35.0 b/doc/fixes35.0 index 4e5255888..106aeae16 100644 --- a/doc/fixes35.0 +++ b/doc/fixes35.0 @@ -64,6 +64,7 @@ keep score from wrapping around and becoming negative by capping it kicked objects do not slide when on the air or water levels when a giant carrying a boulder dies in a pit, ensure that the corpse is buried under the filled pit +when blind and levitating > shouldn't say "stairs" if player has not seen them Platform- and/or Interface-Specific Fixes diff --git a/src/do.c b/src/do.c index 9bb52b0ed..3f379e49f 100644 --- a/src/do.c +++ b/src/do.c @@ -770,6 +770,18 @@ dodown() if (float_down(I_SPECIAL|TIMEOUT, W_ARTI)) return (1); /* came down, so moved */ } + if (Blind) { + /* Avoid alerting player to an unknown stair or ladder. + * Changes the message for a covered, known staircase + * too; staircase knowledge is not stored anywhere. + */ + if (stairs_down) + stairs_down = + (glyph_to_cmap(levl[u.ux][u.uy].glyph) == S_dnstair); + else if (ladder_down) + ladder_down = + (glyph_to_cmap(levl[u.ux][u.uy].glyph) == S_dnladder); + } floating_above(stairs_down ? "stairs" : ladder_down ? "ladder" : surface(u.ux, u.uy)); return (0); /* didn't move */