Ft.Ludios entrance (fort's entry, not level entry)

The code to apply an automatic annotation to the knox level was looking
for a drawbridge like on the castle level, but knox doesn't have any
drawbridge.  Look for its door instead.  (It's initially a secret door,
so won't be revealed via magic mapping.  It needs to be found or
destroyed to get mapped as a door or empty doorway in order to trigger
the annotation.)

Also, give a tiny bit of variation to the knox level layout.  It used
to have both the throne and the secret door on the lower of two similar
rows and the door into the treasure vault on the upper one.  Now each
of the three can be on either of those two rows (independently of each
other), making eight possibilities.  This doesn't accomplish much,
other than to make the secret door locations not always be at the same
fixed spot.
This commit is contained in:
PatR
2016-04-22 02:12:10 -07:00
parent 23b3d5a126
commit 117334b20e
3 changed files with 44 additions and 3 deletions
+19 -1
View File
@@ -6,6 +6,8 @@
MAZE:"knox",' ' MAZE:"knox",' '
FLAGS: noteleport FLAGS: noteleport
GEOMETRY:center,center GEOMETRY:center,center
# Fort's entry is via a secret door rather than a drawbridge;
# the moat must be manually circumvented.
MAP MAP
---------------------------------------------------------------------------- ----------------------------------------------------------------------------
| |........|...............................................................| | |........|...............................................................|
@@ -37,11 +39,27 @@ TELEPORT_REGION:(06,16,09,17),(0,0,0,0),up
TELEPORT_REGION:(06,16,09,17),(0,0,0,0),down TELEPORT_REGION:(06,16,09,17),(0,0,0,0),down
# Throne room, with Croesus on the throne # Throne room, with Croesus on the throne
REGION:(37,08,46,11),lit,"throne" REGION:(37,08,46,11),lit,"throne"
MONSTER:('@',"Croesus"),(43,10),hostile # 50% chance each to move throne and/or fort's entry secret door up one row
IF [50%] {
MONSTER:('@',"Croesus"),(43,10),hostile
} ELSE {
MONSTER:('@',"Croesus"),(43,09),hostile
TERRAIN:(43,09), '\'
TERRAIN:(43,10), '.'
}
IF [50%] {
TERRAIN:(47,09), 'S'
TERRAIN:(47,10), '|'
}
# The Vault # The Vault
# Using unfilled morgue for # Using unfilled morgue for
# identification in mkmaze.c # identification in mkmaze.c
REGION:(21,08,35,11),lit,"morgue",unfilled REGION:(21,08,35,11),lit,"morgue",unfilled
# Vault entrance also varies
IF [50%] {
TERRAIN:(36,09), '|'
TERRAIN:(36,10), 'S'
}
# Corner towers # Corner towers
REGION:(19,06,21,06),lit,"ordinary" REGION:(19,06,21,06),lit,"ordinary"
REGION:(46,06,48,06),lit,"ordinary" REGION:(46,06,48,06),lit,"ordinary"
+2
View File
@@ -216,6 +216,8 @@ for menustyles traditional or combination, 'A' (or object ID) followed by i
exploding chest trap would destroy uchain while still worn if uball carried exploding chest trap would destroy uchain while still worn if uball carried
if monster shapechange message "<foo> turns into <bar>!" was given, <bar> if monster shapechange message "<foo> turns into <bar>!" was given, <bar>
could be "it" (if <foo> sensed telepathically and <bar> is mindless) could be "it" (if <foo> sensed telepathically and <bar> is mindless)
automatic annotation for Ft.Ludios level got applied when a drawbridge became
mapped, but entry there is a secret door rather than a drawbridge
post-3.6.0: fix "object lost" panic during pickup caused by sortloot revamp post-3.6.0: fix "object lost" panic during pickup caused by sortloot revamp
post-3.6.0: more sortloot revisions post-3.6.0: more sortloot revisions
+23 -2
View File
@@ -2465,6 +2465,9 @@ recalc_mapseen()
/* An automatic annotation is added to the Castle and /* An automatic annotation is added to the Castle and
* to Fort Ludios once their structure's main entrance * to Fort Ludios once their structure's main entrance
* has been seen (in person or via magic mapping). * has been seen (in person or via magic mapping).
* For the Fort, that entrance is just a secret door
* which will be converted into a regular one when
* located (or destroyed).
* DOOR: possibly a lowered drawbridge's open portcullis; * DOOR: possibly a lowered drawbridge's open portcullis;
* DBWALL: a raised drawbridge's "closed door"; * DBWALL: a raised drawbridge's "closed door";
* DRAWBRIDGE_DOWN: the span provided by lowered bridge, * DRAWBRIDGE_DOWN: the span provided by lowered bridge,
@@ -2474,6 +2477,26 @@ recalc_mapseen()
* the adjacent DBWALL has been seen. * the adjacent DBWALL has been seen.
*/ */
case DOOR: case DOOR:
if (Is_knox(&u.uz)) {
int ty, tx = x - 4;
/* Throne is four columns left, either directly in
* line or one row higher or lower, and doesn't have
* to have been seen yet.
* ......|}}}.
* ..\...S}...
* ..\...S}...
* ......|}}}.
* For 3.6.0 and earlier, it was always in direct line:
* both throne and door on the lower of the two rows.
*/
for (ty = y - 1; ty <= y + 1; ++ty)
if (isok(tx, ty) && IS_THRONE(levl[tx][ty].typ)) {
mptr->flags.ludios = 1;
break;
}
break;
}
if (is_drawbridge_wall(x, y) < 0) if (is_drawbridge_wall(x, y) < 0)
break; break;
/* else FALLTHRU */ /* else FALLTHRU */
@@ -2481,8 +2504,6 @@ recalc_mapseen()
case DRAWBRIDGE_DOWN: case DRAWBRIDGE_DOWN:
if (Is_stronghold(&u.uz)) if (Is_stronghold(&u.uz))
mptr->flags.castle = 1, mptr->flags.castletune = 1; mptr->flags.castle = 1, mptr->flags.castletune = 1;
else if (Is_knox(&u.uz))
mptr->flags.ludios = 1;
break; break;
default: default:
break; break;