Major amnesia revamp
Instead of forgetting maps and objects, make amnesia forget skills. Forgetting maps and objects could be circumvented with taking notes, or by using an external tool to remember the forgotten levels. Forgetting skills allows the player to optionally go down another skill path, if they trained the wrong weapon in the early game. Amnesia still forgets spells. As a replacement for the deja vu messages when entering a forgotten level, those messages will now indicate a ghost with your own name existing on the level, given only when the level is entered for the first time. These changes based on fiqhack, with some adjustments.
This commit is contained in:
13
src/do.c
13
src/do.c
@@ -1461,12 +1461,14 @@ boolean at_stairs, falling, portal;
|
||||
|
||||
if (!(g.level_info[new_ledger].flags & LFILE_EXISTS)) {
|
||||
/* entering this level for first time; make it now */
|
||||
if (g.level_info[new_ledger].flags & (FORGOTTEN | VISITED)) {
|
||||
if (g.level_info[new_ledger].flags & (VISITED)) {
|
||||
impossible("goto_level: returning to discarded level?");
|
||||
g.level_info[new_ledger].flags &= ~(FORGOTTEN | VISITED);
|
||||
g.level_info[new_ledger].flags &= ~(VISITED);
|
||||
}
|
||||
mklev();
|
||||
new = TRUE; /* made the level */
|
||||
|
||||
familiar = (find_ghost_with_name(g.plname) != (struct monst *) 0);
|
||||
} else {
|
||||
/* returning to previously visited level; reload it */
|
||||
nhfp = open_levelfile(new_ledger, whynot);
|
||||
@@ -1606,13 +1608,6 @@ boolean at_stairs, falling, portal;
|
||||
else if (Is_firelevel(&u.uz))
|
||||
fumaroles();
|
||||
|
||||
if (g.level_info[new_ledger].flags & FORGOTTEN) {
|
||||
forget_map(ALL_MAP); /* forget the map */
|
||||
forget_traps(); /* forget all traps too */
|
||||
familiar = TRUE;
|
||||
g.level_info[new_ledger].flags &= ~FORGOTTEN;
|
||||
}
|
||||
|
||||
/* Reset the screen. */
|
||||
vision_reset(); /* reset the blockages */
|
||||
g.glyphmap_perlevel_flags = 0L; /* force per-level mapglyph() changes */
|
||||
|
||||
Reference in New Issue
Block a user