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

View File

@@ -6,6 +6,8 @@
MAZE:"knox",' '
FLAGS: noteleport
GEOMETRY:center,center
# Fort's entry is via a secret door rather than a drawbridge;
# the moat must be manually circumvented.
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
# Throne room, with Croesus on the 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
# Using unfilled morgue for
# identification in mkmaze.c
REGION:(21,08,35,11),lit,"morgue",unfilled
# Vault entrance also varies
IF [50%] {
TERRAIN:(36,09), '|'
TERRAIN:(36,10), 'S'
}
# Corner towers
REGION:(19,06,21,06),lit,"ordinary"
REGION:(46,06,48,06),lit,"ordinary"

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
if monster shapechange message "<foo> turns into <bar>!" was given, <bar>
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: more sortloot revisions

View File

@@ -2465,6 +2465,9 @@ recalc_mapseen()
/* An automatic annotation is added to the Castle and
* to Fort Ludios once their structure's main entrance
* 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;
* DBWALL: a raised drawbridge's "closed door";
* DRAWBRIDGE_DOWN: the span provided by lowered bridge,
@@ -2474,6 +2477,26 @@ recalc_mapseen()
* the adjacent DBWALL has been seen.
*/
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)
break;
/* else FALLTHRU */
@@ -2481,8 +2504,6 @@ recalc_mapseen()
case DRAWBRIDGE_DOWN:
if (Is_stronghold(&u.uz))
mptr->flags.castle = 1, mptr->flags.castletune = 1;
else if (Is_knox(&u.uz))
mptr->flags.ludios = 1;
break;
default:
break;