recognize most instances where hallucinatory monster name should be treated
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
Platform- and/or Interface-Specific Fixes
E void FDECL(wallification, (int,int,int,int));
E void FDECL(walkfrom, (int,int));
+E void NDECL(deliver_splev_message);
E void FDECL(makemaz, (const char *));
E void FDECL(mazexy, (coord *));
E void NDECL(bound_digging);
-/* SCCS Id: @(#)do.c 3.5 2005/09/02 */
+/* SCCS Id: @(#)do.c 3.5 2006/02/15 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
* Move all plines beyond the screen reset.
*/
+ /* special levels can have a custom arrival message */
+ deliver_splev_message();
+
/* give room entrance message, if any */
check_special_room(FALSE);
}
}
- if(lev_message) {
- char *str, *nl;
- for(str = lev_message; (nl = index(str, '\n')) != 0; str = nl+1) {
+ if (lregions)
+ free((genericptr_t) lregions), lregions = 0;
+ 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)
+ if (*str)
pline("%s", str);
free((genericptr_t)lev_message);
lev_message = 0;
}
-
- if (lregions)
- free((genericptr_t) lregions), lregions = 0;
- num_lregions = 0;
}
void