#overview enhancements (trunk only)

1) add graves to the dungeon features being tracked;
2) report on known bones (determined by seeing map spot(s) where previous
   hero(es) died since there's no guarantee of graves or ghosts);
3) add automatic annotations for oracle, sokoban, bigroom, rogue level,
   Ft.Ludios, castle, valley, and Moloch's sanctum.  For bigroom and rogue
   level you just need to visit that level, for the others you need to get
   far enough along to learn something specific (oracle: her room, sokoban:
   annotation is either "solved" or "unsolved" depending upon whether all
   the holes and pits have been filled, fort and castle: see the drawbridge,
   valley and sanctum: see inside the tended temple).  Discovering the
   relevant locations via magic mapping counts as "far enough along".

     There should probably also be automatic annotations for Medusa and the
vibrating square but I'm not sure what criteria should be used for the
former or what phrasing to use for the latter.  Demon lord/prince lairs fall
into similar category as Medusa.

     TODO: add final #overview as an end of game disclosure option.  (I was
planning this even before I saw that nitrohack has implemented it....)
This commit is contained in:
nethack.rankin
2012-02-16 02:40:24 +00:00
parent 6540843cbf
commit 337e158009
9 changed files with 409 additions and 178 deletions

View File

@@ -2067,7 +2067,9 @@ register boolean newlev;
u_entered_shop(u.ushops_entered);
for (ptr = &u.uentered[0]; *ptr; ptr++) {
register int roomno = *ptr - ROOMOFFSET, rt = rooms[roomno].rtype;
int roomno = *ptr - ROOMOFFSET,
rt = rooms[roomno].rtype;
boolean msg_given = TRUE;
/* Did we just enter some other special room? */
/* vault.c insists that a vault remain a VAULT,
@@ -2124,15 +2126,21 @@ register boolean newlev;
else
verbalize("%s, %s, welcome to Delphi!",
Hello((struct monst *) 0), plname);
}
} else
msg_given = FALSE;
break;
}
case TEMPLE:
intemple(roomno + ROOMOFFSET);
/* fall through */
/*FALLTHRU*/
default:
msg_given = (rt == TEMPLE);
rt = 0;
break;
}
#ifdef DUNGEON_OVERVIEW
if (msg_given) room_discovered(roomno);
#endif
if (rt != 0) {
rooms[roomno].rtype = OROOM;