diff --git a/doc/fixes36.2 b/doc/fixes36.2 index fed918d0f..7e1b29810 100644 --- a/doc/fixes36.2 +++ b/doc/fixes36.2 @@ -355,6 +355,8 @@ a config file line with OPTIONS=symset:default, roguesymset:RogueEpyx avoid potential segfault when doing 'more information' lookup when built with STATUS_HILITES enabled (the default), gold on status line was missing '$' prefix for symset:Blank +wizard mode ^G, creating a monster of class 'I' yielded impossible "mkclass + found no class 35 monsters" tty: turn off an optimization that is the suspected cause of Windows reported partial status lines following level changes tty: ensure that current status fields are always copied to prior status @@ -441,6 +443,7 @@ X11: enable menu [cancel] button for PICK_NONE menus X11: text popups on OSX wouldn't accept keyboard input unless the 'autofocus' resource was enabled; most noticeable when trying to dismiss 'things that are here' while walking over object piles +X11: default to using XPM format tile file and rip screen General New Features diff --git a/src/cmd.c b/src/cmd.c index 85b53a6e0..27ef6cbea 100644 --- a/src/cmd.c +++ b/src/cmd.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 cmd.c $NHDT-Date: 1545128652 2018/12/18 10:24:12 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.322 $ */ +/* NetHack 3.6 cmd.c $NHDT-Date: 1546038393 2018/12/28 23:06:33 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.323 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Robert Patrick Rankin, 2013. */ /* NetHack may be freely redistributed. See license for details. */ @@ -3649,18 +3649,18 @@ STATIC_OVL int size_obj(otmp) struct obj *otmp; { - int sz = (int) sizeof(struct obj); + int sz = (int) sizeof (struct obj); if (otmp->oextra) { - sz += (int) sizeof(struct oextra); + sz += (int) sizeof (struct oextra); if (ONAME(otmp)) sz += (int) strlen(ONAME(otmp)) + 1; if (OMONST(otmp)) - sz += (int) sizeof(struct monst); + sz += size_monst(OMONST(otmp), FALSE); if (OMID(otmp)) - sz += (int) sizeof(unsigned); + sz += (int) sizeof (unsigned); if (OLONG(otmp)) - sz += (int) sizeof(long); + sz += (int) sizeof (long); if (OMAILCMD(otmp)) sz += (int) strlen(OMAILCMD(otmp)) + 1; } diff --git a/src/read.c b/src/read.c index f3c98626c..43a6da8b3 100644 --- a/src/read.c +++ b/src/read.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 read.c $NHDT-Date: 1526728750 2018/05/19 11:19:10 $ $NHDT-Branch: NetHack-3.6.2 $:$NHDT-Revision: 1.155 $ */ +/* NetHack 3.6 read.c $NHDT-Date: 1546053040 2018/12/29 03:10:40 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.163 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Robert Patrick Rankin, 2012. */ /* NetHack may be freely redistributed. See license for details. */ @@ -2488,9 +2488,14 @@ struct _create_particular_data *d; if (d->which >= LOW_PM) return TRUE; /* got one */ d->monclass = name_to_monclass(bufp, &d->which); + if (d->which >= LOW_PM) { d->monclass = MAXMCLASSES; /* matters below */ return TRUE; + } else if (d->monclass == S_invisible) { /* not an actual monster class */ + d->which = PM_STALKER; + d->monclass = MAXMCLASSES; + return TRUE; } else if (d->monclass > 0) { d->which = g.urole.malenum; /* reset from NON_PM */ return TRUE; diff --git a/sys/unix/Makefile.src b/sys/unix/Makefile.src index 3150bbdd4..40892e1ed 100644 --- a/sys/unix/Makefile.src +++ b/sys/unix/Makefile.src @@ -287,7 +287,7 @@ WINBEOBJ = # # libraries for X11 # If USE_XPM is defined in config.h, you will also need -lXpm here. -WINX11LIB = -lXaw -lXmu -lXext -lXt -lX11 +#WINX11LIB = -lXaw -lXmu -lXext -lXt -lX11 # WINX11LIB = -lXaw -lXmu -lXt -lX11 # WINX11LIB = -lXaw -lXmu -lXext -lXt -lXpm -lX11 -lm # WINX11LIB = -lXaw -lXmu -lXpm -lXext -lXt -lX11 -lSM -lICE -lm # BSD/OS 2.0 diff --git a/sys/unix/hints/linux-x11 b/sys/unix/hints/linux-x11 index 05d7e7304..d8e29aa85 100644 --- a/sys/unix/hints/linux-x11 +++ b/sys/unix/hints/linux-x11 @@ -35,7 +35,7 @@ WINLIB = $(WINX11LIB) VARDATND = x11tiles NetHack.ad pet_mark.xbm pilemark.xbm -#WINTTYLIB=-lcurses +WINX11LIB = -lXaw -lXmu -lXext -lXt -lX11 CHOWN=true CHGRP=true @@ -43,4 +43,9 @@ VARDIRPERM = 0755 VARFILEPERM = 0600 GAMEPERM = 0755 +# Use XPM format tile file +CFLAGS+=-DUSE_XPM +WINX11LIB+=-lXpm +VARDATND+=rip.xpm + # note: needs libxt-dev libxaw7-dev libx11-dev bdftopcf diff --git a/sys/unix/hints/macosx10.10 b/sys/unix/hints/macosx10.10 index a08b27acc..7cc444dce 100644 --- a/sys/unix/hints/macosx10.10 +++ b/sys/unix/hints/macosx10.10 @@ -1,5 +1,5 @@ # -# NetHack 3.6 macosx10.11 $NHDT-Date: 1515549543 2018/01/10 01:59:03 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.48 $ +# NetHack 3.6 macosx10.11 $NHDT-Date: 1546082880 2018/12/29 11:28:00 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.50 $ # Copyright (c) Kenneth Lorber, Kensington, Maryland, 2015. # NetHack may be freely redistributed. See license for details. # @@ -106,15 +106,21 @@ WINLIB += -lncurses endif ifdef WANT_WIN_X11 -WINSRC += $(WINX11SRC) -WINOBJ += $(WINX11OBJ) -WINLIB += $(WINX11LIB) -LFLAGS=-L/opt/X11/lib +WINX11LIB = -lXaw -lXmu -lXext -lXt -lX11 VARDATND = x11tiles NetHack.ad pet_mark.xbm pilemark.xbm POSTINSTALL+= bdftopcf win/X11/nh10.bdf > $(HACKDIR)/nh10.pcf; (cd $(HACKDIR); mkfontdir); CFLAGS += -DX11_GRAPHICS -I/opt/X11/include # avoid repeated complaints about _X_NONNULL(args...) in CFLAGS += -Wno-variadic-macros +ifdef USE_XPM +CFLAGS += -DUSE_XPM +WINX11LIB += -lXpm +VARDATND += rip.xpm +endif +WINSRC += $(WINX11SRC) +WINOBJ += $(WINX11OBJ) +WINLIB += $(WINX11LIB) +LFLAGS=-L/opt/X11/lib endif # WANT_WIN_X11 ifdef WANT_WIN_QT diff --git a/sys/unix/hints/macosx10.14 b/sys/unix/hints/macosx10.14 index 6c5019d9f..f118d9c4f 100644 --- a/sys/unix/hints/macosx10.14 +++ b/sys/unix/hints/macosx10.14 @@ -1,5 +1,5 @@ # -# NetHack 3.6 macosx10.11 $NHDT-Date: 1515549543 2018/01/10 01:59:03 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.48 $ +# NetHack 3.6 macosx10.11 $NHDT-Date: 1546082881 2018/12/29 11:28:01 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.55 $ # Copyright (c) Kenneth Lorber, Kensington, Maryland, 2015. # NetHack may be freely redistributed. See license for details. # @@ -106,15 +106,21 @@ WINLIB += -lncurses endif ifdef WANT_WIN_X11 -WINSRC += $(WINX11SRC) -WINOBJ += $(WINX11OBJ) -WINLIB += $(WINX11LIB) -LFLAGS=-L/opt/X11/lib +WINX11LIB = -lXaw -lXmu -lXext -lXt -lX11 VARDATND = x11tiles NetHack.ad pet_mark.xbm pilemark.xbm POSTINSTALL+= bdftopcf win/X11/nh10.bdf > $(HACKDIR)/nh10.pcf; (cd $(HACKDIR); mkfontdir); CFLAGS += -DX11_GRAPHICS -I/opt/X11/include # avoid repeated complaints about _X_NONNULL(args...) in CFLAGS += -Wno-variadic-macros +ifdef USE_XPM +CFLAGS += -DUSE_XPM +WINX11LIB += -lXpm +VARDATND += rip.xpm +endif +WINSRC += $(WINX11SRC) +WINOBJ += $(WINX11OBJ) +WINLIB += $(WINX11LIB) +LFLAGS=-L/opt/X11/lib endif # WANT_WIN_X11 ifdef WANT_WIN_QT diff --git a/sys/unix/hints/macosx10.5 b/sys/unix/hints/macosx10.5 index d87649671..668b6b2b5 100644 --- a/sys/unix/hints/macosx10.5 +++ b/sys/unix/hints/macosx10.5 @@ -1,5 +1,5 @@ # -# NetHack 3.6 macosx10.5 $NHDT-Date: 1447844587 2015/11/18 11:03:07 $ $NHDT-Branch: master $:$NHDT-Revision: 1.27 $ +# NetHack 3.6 macosx10.5 $NHDT-Date: 1546082882 2018/12/29 11:28:02 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.30 $ # Copyright (c) Kenneth Lorber, Kensington, Maryland, 2009. # NetHack may be freely redistributed. See license for details. # @@ -76,13 +76,19 @@ CFLAGS += -DNOTTYGRAPHICS endif # !WANT_WIN_TTY ifdef WANT_WIN_X11 +WINX11LIB = -lXaw -lXmu -lXext -lXt -lX11 +VARDATND = x11tiles NetHack.ad pet_mark.xbm pilemark.xbm +POSTINSTALL+= bdftopcf win/X11/nh10.bdf > $(INSTDIR)/nh10.pcf; (cd $(INSTDIR); mkfontdir); +CFLAGS += -DX11_GRAPHICS +ifdef USE_XPM +CFLAGS += -DUSE_XPM +WINX11LIB += -lXpm +VARDATND += rip.xpm +endif WINSRC += $(WINX11SRC) WINOBJ += $(WINX11OBJ) WINLIB += $(WINX11LIB) LFLAGS=-L/usr/X11R6/lib -VARDATND = x11tiles NetHack.ad pet_mark.xbm pilemark.xbm -POSTINSTALL+= bdftopcf win/X11/nh10.bdf > $(INSTDIR)/nh10.pcf; (cd $(INSTDIR); mkfontdir); -CFLAGS += -DX11_GRAPHICS endif # WANT_WIN_X11 ifdef WANT_WIN_QT diff --git a/sys/unix/hints/macosx10.7 b/sys/unix/hints/macosx10.7 index 707c67da2..cc9216884 100644 --- a/sys/unix/hints/macosx10.7 +++ b/sys/unix/hints/macosx10.7 @@ -1,5 +1,5 @@ # -# NetHack 3.6 macosx10.7 $NHDT-Date: 1447844589 2015/11/18 11:03:09 $ $NHDT-Branch: master $:$NHDT-Revision: 1.31 $ +# NetHack 3.6 macosx10.7 $NHDT-Date: 1546082882 2018/12/29 11:28:02 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.34 $ # Copyright (c) Kenneth Lorber, Kensington, Maryland, 2009. # NetHack may be freely redistributed. See license for details. # @@ -93,13 +93,19 @@ CFLAGS += -DNOTTYGRAPHICS endif # !WANT_WIN_TTY ifdef WANT_WIN_X11 +WINX11LIB = -lXaw -lXmu -lXext -lXt -lX11 +VARDATND = x11tiles NetHack.ad pet_mark.xbm pilemark.xbm +POSTINSTALL+= bdftopcf win/X11/nh10.bdf > $(INSTDIR)/nh10.pcf; (cd $(INSTDIR); mkfontdir); +CFLAGS += -DX11_GRAPHICS +ifdef USE_XPM +CFLAGS += -DUSE_XPM +WINX11LIB += -lXpm +VARDATND += rip.xpm +endif WINSRC += $(WINX11SRC) WINOBJ += $(WINX11OBJ) WINLIB += $(WINX11LIB) LFLAGS=-L/usr/X11R6/lib -VARDATND = x11tiles NetHack.ad pet_mark.xbm pilemark.xbm -POSTINSTALL+= bdftopcf win/X11/nh10.bdf > $(INSTDIR)/nh10.pcf; (cd $(INSTDIR); mkfontdir); -CFLAGS += -DX11_GRAPHICS endif # WANT_WIN_X11 ifdef WANT_WIN_QT diff --git a/sys/unix/hints/macosx10.8 b/sys/unix/hints/macosx10.8 index d2c503432..e85f5a3bb 100644 --- a/sys/unix/hints/macosx10.8 +++ b/sys/unix/hints/macosx10.8 @@ -1,5 +1,5 @@ # -# NetHack 3.6 macosx10.8 $NHDT-Date: 1455397109 2016/02/13 20:58:29 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.0 $ +# NetHack 3.6 macosx10.8 $NHDT-Date: 1546082883 2018/12/29 11:28:03 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.35 $ # Copyright (c) Kenneth Lorber, Kensington, Maryland, 2009. # NetHack may be freely redistributed. See license for details. # @@ -101,15 +101,21 @@ CFLAGS += -DNOTTYGRAPHICS endif # !WANT_WIN_TTY ifdef WANT_WIN_X11 -WINSRC += $(WINX11SRC) -WINOBJ += $(WINX11OBJ) -WINLIB += $(WINX11LIB) -LFLAGS=-L/opt/X11/lib +WINX11LIB = -lXaw -lXmu -lXext -lXt -lX11 VARDATND = x11tiles NetHack.ad pet_mark.xbm pilemark.xbm POSTINSTALL+= bdftopcf win/X11/nh10.bdf > $(INSTDIR)/nh10.pcf; (cd $(INSTDIR); mkfontdir); CFLAGS += -DX11_GRAPHICS -I/opt/X11/include # avoid repeated complaints about _X_NONNULL(args...) in CFLAGS += -Wno-variadic-macros +ifdef USE_XPM +CFLAGS += -DUSE_XPM +WINX11LIB += -lXpm +VARDATND += rip.xpm +endif +WINSRC += $(WINX11SRC) +WINOBJ += $(WINX11OBJ) +WINLIB += $(WINX11LIB) +LFLAGS=-L/opt/X11/lib endif # WANT_WIN_X11 ifdef WANT_WIN_QT diff --git a/util/makedefs.c b/util/makedefs.c index 504a0d424..8ea91a9f2 100644 --- a/util/makedefs.c +++ b/util/makedefs.c @@ -1661,6 +1661,12 @@ static const char *build_opts[] = { "terminal capability library", #endif #endif +#ifdef USE_XPM + "tile_file in XPM format", +#endif +#ifdef GRAPHIC_TOMBSTONE + "graphical RIP screen", +#endif #ifdef TIMED_DELAY "timed wait for display effects", #endif diff --git a/win/X11/tile2x11.c b/win/X11/tile2x11.c index 750f12ae4..774b6e636 100644 --- a/win/X11/tile2x11.c +++ b/win/X11/tile2x11.c @@ -1,4 +1,4 @@ -/* $NHDT-Date: 1524689304 2018/04/25 20:48:24 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.11 $ */ +/* $NHDT-Date: 1546081295 2018/12/29 11:01:35 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.12 $ */ /* Copyright (c) 2017 by Pasi Kallinen */ /* NetHack may be freely redistributed. See license for details. */ @@ -27,10 +27,11 @@ static unsigned char pix_to_colormap(pix) pixel pix; { - unsigned i; + unsigned long i; for (i = 0; i < header.ncolors; i++) { - if (pix.r == ColorMap[CM_RED][i] && pix.g == ColorMap[CM_GREEN][i] + if (pix.r == ColorMap[CM_RED][i] + && pix.g == ColorMap[CM_GREEN][i] && pix.b == ColorMap[CM_BLUE][i]) break; } @@ -129,7 +130,8 @@ static int xpm_write(fp) FILE *fp; { - int i, j, n; + unsigned long i, j; + unsigned n; if (header.ncolors > 64) { Fprintf(stderr, "Sorry, only configured for up to 64 colors\n"); @@ -144,7 +146,7 @@ FILE *fp; header.ncolors, 1 /* char per color */); for (i = 0; i < header.ncolors; i++) Fprintf(fp, "\"%c c #%02x%02x%02x\",\n", - i + '0', /* just one char per color */ + (char) (i + '0'), /* just one char per color */ x11_colormap[i][0], x11_colormap[i][1], x11_colormap[i][2]); n = 0; @@ -179,7 +181,9 @@ char **argv; header.per_row = TILES_PER_ROW; if (argc == 1) { - Fprintf(stderr, "usage: %s txt_file1 [txt_file2 ...] [-grayscale txt_fileN]\n", argv[0]); + Fprintf(stderr, + "usage: %s txt_file1 [txt_file2 ...] [-grayscale txt_fileN]\n", + argv[0]); exit(1); } diff --git a/win/X11/winX.c b/win/X11/winX.c index 89cbc631e..99412cd15 100644 --- a/win/X11/winX.c +++ b/win/X11/winX.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 winX.c $NHDT-Date: 1539392992 2018/10/13 01:09:52 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.57 $ */ +/* NetHack 3.6 winX.c $NHDT-Date: 1546081304 2018/12/29 11:01:44 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.71 $ */ /* Copyright (c) Dean Luick, 1992 */ /* NetHack may be freely redistributed. See license for details. */ @@ -1440,16 +1440,16 @@ static XtResource resources[] = { sizeof(XtRPixel), XtOffset(AppResources *, pilemark_color), XtRString, nhStr("Green") }, #ifdef GRAPHIC_TOMBSTONE - { nhStr("tombstone"), "Tombstone", XtRString, sizeof(String), - XtOffset(AppResources *, tombstone), XtRString, "rip.xpm" }, - { nhStr("tombtext_x"), "Tombtext_x", XtRInt, sizeof(int), - XtOffset(AppResources *, tombtext_x), XtRString, "155" }, - { nhStr("tombtext_y"), "Tombtext_y", XtRInt, sizeof(int), - XtOffset(AppResources *, tombtext_y), XtRString, "78" }, - { nhStr("tombtext_dx"), "Tombtext_dx", XtRInt, sizeof(int), - XtOffset(AppResources *, tombtext_dx), XtRString, "0" }, - { nhStr("tombtext_dy"), "Tombtext_dy", XtRInt, sizeof(int), - XtOffset(AppResources *, tombtext_dy), XtRString, "13" }, + { nhStr("tombstone"), nhStr("Tombstone"), XtRString, sizeof(String), + XtOffset(AppResources *, tombstone), XtRString, nhStr("rip.xpm") }, + { nhStr("tombtext_x"), nhStr("Tombtext_x"), XtRInt, sizeof(int), + XtOffset(AppResources *, tombtext_x), XtRString, nhStr("155") }, + { nhStr("tombtext_y"), nhStr("Tombtext_y"), XtRInt, sizeof(int), + XtOffset(AppResources *, tombtext_y), XtRString, nhStr("78") }, + { nhStr("tombtext_dx"), nhStr("Tombtext_dx"), XtRInt, sizeof(int), + XtOffset(AppResources *, tombtext_dx), XtRString, nhStr("0") }, + { nhStr("tombtext_dy"), nhStr("Tombtext_dy"), XtRInt, sizeof(int), + XtOffset(AppResources *, tombtext_dy), XtRString, nhStr("13") }, #endif }; diff --git a/win/X11/wintext.c b/win/X11/wintext.c index 4b696b97a..c52b956d8 100644 --- a/win/X11/wintext.c +++ b/win/X11/wintext.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 wintext.c $NHDT-Date: 1543622533 2018/12/01 00:02:13 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.16 $ */ +/* NetHack 3.6 wintext.c $NHDT-Date: 1546081305 2018/12/29 11:01:45 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.17 $ */ /* Copyright (c) Dean Luick, 1992 */ /* NetHack may be freely redistributed. See license for details. */ @@ -204,7 +204,7 @@ boolean blocking; #ifdef GRAPHIC_TOMBSTONE if (text_info->is_rip) { Widget rip = create_ripout_widget(XtParent(wp->w)); - XtSetArg(args[num_args], XtNfromVert, rip); + XtSetArg(args[num_args], nhStr(XtNfromVert), rip); num_args++; } #endif @@ -533,7 +533,7 @@ calculate_rip_text(int how, time_t when) static void rip_exposed(w, client_data, widget_data) Widget w; -XtPointer client_data; /* unused */ +XtPointer client_data UNUSED; XtPointer widget_data; /* expose event from Window widget */ { XExposeEvent *event = (XExposeEvent *) widget_data; diff --git a/win/curses/cursinvt.c b/win/curses/cursinvt.c index c88889355..6e66d539d 100644 --- a/win/curses/cursinvt.c +++ b/win/curses/cursinvt.c @@ -43,15 +43,6 @@ curses_update_inv(void) /* Clear the window as it is at the moment. */ werase(win); - wmove(win, y, x); - wattron(win, attr); - wprintw(win, "Inventory:"); - wattroff(win, attr); - - /* The actual inventory will override this if we do carry stuff */ - wmove(win, y + 1, x); - wprintw(win, "Not carrying anything"); - display_inventory(NULL, FALSE); if (border) @@ -73,7 +64,6 @@ curses_add_inv(int y, /* Figure out where to draw the line */ if (curses_window_has_border(INV_WIN)) { x++; - y++; } wmove(win, y, x);