-# SCCS Id: @(#)endgame.des 3.5 2002/01/19
+# SCCS Id: @(#)endgame.des 3.5 2007/03/02
# Copyright (c) 1989 by Jean-Christophe Collet
# Copyright (c) 1992,1993 by Izchak Miller, David Cohrs,
# and Timo Hakulinen
MAZE:"astral",' '
FLAGS: noteleport,hardfloor,nommap,shortsighted
MESSAGE: "You arrive on the Astral Plane!"
-MESSAGE: "Here the High Temples of the aligned gods are located."
+MESSAGE: "Here the High Temple of %d is located."
MESSAGE: "You sense alarm, hostility, and excitement in the air!"
GEOMETRY:center,center
MAP
as a personal name (to avoid "the Barney") instead of a description
avoid giving misleading or redundant feedback when reading scrolls
custom arrival message for special levels could be delivered too soon
+custom arrival message for special levels now supports quest text substitution
prevent scroll of charging that has already disappeared from showing in the
picklist of things to charge
doors break instead of absorbing the blast of a broken wand of striking
-/* SCCS Id: @(#)mkmaze.c 3.5 2006/05/09 */
+/* SCCS Id: @(#)mkmaze.c 3.5 2007/03/02 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
#include "lev.h" /* save & restore info */
/* from sp_lev.c, for fixup_special() */
-extern char *lev_message;
extern lev_region *lregions;
extern int num_lregions;
num_lregions = 0;
}
-/* special levels can include a custom arrival message; display it */
-void
-deliver_splev_message()
-{
- char *str, *nl;
-
- /* this used to be inline within fixup_special(),
- but then the message ended up being given too soon */
- if (lev_message) {
- for (str = lev_message; (nl = index(str, '\n')) != 0; str = nl + 1) {
- *nl = '\0';
- pline("%s", str);
- }
- if (*str)
- pline("%s", str);
- free((genericptr_t)lev_message);
- lev_message = 0;
- }
-}
-
void
makemaz(s)
register const char *s;
-/* SCCS Id: @(#)questpgr.c 3.5 2004/11/22 */
+/* SCCS Id: @(#)questpgr.c 3.5 2007/03/02 */
/* Copyright 1991, M. Stephenson */
/* NetHack may be freely redistributed. See license for details. */
/* #define DEBUG */ /* uncomment for debugging */
+/* from sp_lev.c, for deliver_splev_message() */
+extern char *lev_message;
+
static void FDECL(Fread, (genericptr_t,int,int,dlb *));
STATIC_DCL struct qtmsg * FDECL(construct_qtlist, (long));
STATIC_DCL const char * NDECL(intermed);
for (size = 0; size < qt_msg->size; size += (long)strlen(in_line)) {
(void) dlb_fgets(in_line, 80, msg_file);
convert_line();
- pline(out_line);
+ pline("%s", out_line);
}
}
return (mkclass(urole.enemy2sym, 0));
}
+/* special levels can include a custom arrival message; display it */
+void
+deliver_splev_message()
+{
+ char *str, *nl;
+
+ /* there's no provision for delivering via window instead of pline */
+ if (lev_message) {
+ /* lev_message can span multiple lines using embedded newline chars;
+ any segments too long to fit within in_line[] will be truncated */
+ for (str = lev_message; *str; str = nl + 1) {
+ (void)strncpy(in_line, str, sizeof in_line - 1);
+ in_line[sizeof in_line - 1] = '\0';
+ if ((nl = index(in_line, '\n')) != 0) *nl = '\0';
+
+ /* convert_line() expects encrypted input;
+ it reads from in_line[] and writes to out_line[] */
+ (void)xcrypt(in_line, in_line);
+ convert_line();
+ pline("%s", out_line);
+
+ if ((nl = index(str, '\n')) == 0) break; /* done if no newline */
+ }
+
+ free((genericptr_t)lev_message);
+ lev_message = 0;
+ }
+}
+
/*questpgr.c*/