Merge branch 'NetHack-3.6.2'

This commit is contained in:
nhmall
2018-11-30 20:25:40 -05:00
31 changed files with 1189 additions and 793 deletions

View File

@@ -229,44 +229,44 @@ particularly intriguing modification to help out with the game. The gods
of the dungeon sometimes make note of the names of the worst of these
miscreants in this, the list of Dungeoneers:
Adam Aronow J. Ali Harlow Mikko Juola
Alex Kompel Janet Walz Nathan Eady
Alex Smith Janne Salmijarvi Norm Meluch
Andreas Dorn Jean-Christophe Collet Olaf Seibert
Andy Church Jeff Bailey Pasi Kallinen
Andy Swanson Jochen Erwied Pat Rankin
Ari Huttunen John Kallen Patric Mueller
Barton House John Rupley Paul Winner
Benson I. Margulies John S. Bien Pierre Martineau
Bill Dyer Johnny Lee Ralf Brown
Boudewijn Waijers Jon W{tte Ray Chason
Bruce Cox Jonathan Handler Richard Addison
Bruce Holloway Joshua Delahunty Richard Beigel
Bruce Mewborne Keizo Yamamoto Richard P. Hughey
Carl Schelin Ken Arnold Rob Menke
Chris Russo Ken Arromdee Robin Bandy
David Cohrs Ken Lorber Robin Johnson
David Damerell Ken Washikita Roderick Schertler
David Gentzel Kevin Darcy Roland McGrath
David Hairston Kevin Hugo Ron Van Iwaarden
Dean Luick Kevin Sitze Ronnen Miller
Del Lamb Kevin Smolkowski Ross Brown
Derek S. Ray Kevin Sweet Sascha Wostmann
Deron Meranda Lars Huttar Scott Bigham
Dion Nicolaas Leon Arnott Scott R. Turner
Dylan O'Donnell M. Drew Streib Sean Hunt
Eric Backus Malcolm Ryan Stephen Spackman
Eric Hendrickson Mark Gooderum Stefan Thielscher
Eric R. Smith Mark Modrall Stephen White
Eric S. Raymond Marvin Bressler Steve Creps
Erik Andersen Matthew Day Steve Linhart
Frederick Roeber Merlyn LeRoy Steve VanDevender
Gil Neiger Michael Allison Teemu Suikki
Greg Laskin Michael Feir Tim Lennan
Greg Olson Michael Hamel Timo Hakulinen
Gregg Wonderly Michael Sokolov Tom Almy
Hao-yang Wang Mike Engber Tom West
Helge Hafting Mike Gallop Warren Cheung
Irina Rempt-Drijfhout Mike Passaretti Warwick Allison
Izchak Miller Mike Stephenson Yitzhak Sapir
Adam Aronow Janet Walz Nathan Eady
Alex Kompel Janne Salmijarvi Norm Meluch
Alex Smith Jean-Christophe Collet Olaf Seibert
Andreas Dorn Jeff Bailey Pasi Kallinen
Andy Church Jochen Erwied Pat Rankin
Andy Swanson John Kallen Patric Mueller
Ari Huttunen John Rupley Paul Winner
Barton House John S. Bien Pierre Martineau
Benson I. Margulies Johnny Lee Ralf Brown
Bill Dyer Jon W{tte Ray Chason
Boudewijn Waijers Jonathan Handler Richard Addison
Bruce Cox Joshua Delahunty Richard Beigel
Bruce Holloway Karl Garrison Richard P. Hughey
Bruce Mewborne Keizo Yamamoto Rob Menke
Carl Schelin Ken Arnold Robin Bandy
Chris Russo Ken Arromdee Robin Johnson
David Cohrs Ken Lorber Roderick Schertler
David Damerell Ken Washikita Roland McGrath
David Gentzel Kevin Darcy Ron Van Iwaarden
David Hairston Kevin Hugo Ronnen Miller
Dean Luick Kevin Sitze Ross Brown
Del Lamb Kevin Smolkowski Sascha Wostmann
Derek S. Ray Kevin Sweet Scott Bigham
Deron Meranda Lars Huttar Scott R. Turner
Dion Nicolaas Leon Arnott Sean Hunt
Dylan O'Donnell M. Drew Streib Stephen Spackman
Eric Backus Malcolm Ryan Stefan Thielscher
Eric Hendrickson Mark Gooderum Stephen White
Eric R. Smith Mark Modrall Steve Creps
Eric S. Raymond Marvin Bressler Steve Linhart
Erik Andersen Matthew Day Steve VanDevender
Frederick Roeber Merlyn LeRoy Teemu Suikki
Gil Neiger Michael Allison Tim Lennan
Greg Laskin Michael Feir Timo Hakulinen
Greg Olson Michael Hamel Tom Almy
Gregg Wonderly Michael Sokolov Tom West
Hao-yang Wang Mike Engber Warren Cheung
Helge Hafting Mike Gallop Warwick Allison
Irina Rempt-Drijfhout Mike Passaretti Yitzhak Sapir
Izchak Miller Mike Stephenson
J. Ali Harlow Mikko Juola

View File

@@ -24,7 +24,7 @@
.ds vr "NetHack 3.6
.ds f0 "\*(vr
.ds f1
.ds f2 "November 27, 2018
.ds f2 "November 29, 2018
.
.\" A note on some special characters:
.\" \(lq = left double quote
@@ -4950,46 +4950,47 @@ in this, the list of Dungeoneers:
center;
c c c.
.\"TABLE_START
Adam Aronow J. Ali Harlow Mikko Juola
Alex Kompel Janet Walz Nathan Eady
Alex Smith Janne Salmijarvi Norm Meluch
Andreas Dorn Jean-Christophe Collet Olaf Seibert
Andy Church Jeff Bailey Pasi Kallinen
Andy Swanson Jochen Erwied Pat Rankin
Ari Huttunen John Kallen Patric Mueller
Barton House John Rupley Paul Winner
Benson I. Margulies John S. Bien Pierre Martineau
Bill Dyer Johnny Lee Ralf Brown
Boudewijn Waijers Jon W{tte Ray Chason
Bruce Cox Jonathan Handler Richard Addison
Bruce Holloway Joshua Delahunty Richard Beigel
Bruce Mewborne Keizo Yamamoto Richard P. Hughey
Carl Schelin Ken Arnold Rob Menke
Chris Russo Ken Arromdee Robin Bandy
David Cohrs Ken Lorber Robin Johnson
David Damerell Ken Washikita Roderick Schertler
David Gentzel Kevin Darcy Roland McGrath
David Hairston Kevin Hugo Ron Van Iwaarden
Dean Luick Kevin Sitze Ronnen Miller
Del Lamb Kevin Smolkowski Ross Brown
Derek S. Ray Kevin Sweet Sascha Wostmann
Deron Meranda Lars Huttar Scott Bigham
Dion Nicolaas Leon Arnott Scott R. Turner
Dylan O'Donnell M. Drew Streib Sean Hunt
Eric Backus Malcolm Ryan Stephen Spackman
Eric Hendrickson Mark Gooderum Stefan Thielscher
Eric R. Smith Mark Modrall Stephen White
Eric S. Raymond Marvin Bressler Steve Creps
Erik Andersen Matthew Day Steve Linhart
Frederick Roeber Merlyn LeRoy Steve VanDevender
Gil Neiger Michael Allison Teemu Suikki
Greg Laskin Michael Feir Tim Lennan
Greg Olson Michael Hamel Timo Hakulinen
Gregg Wonderly Michael Sokolov Tom Almy
Hao-yang Wang Mike Engber Tom West
Helge Hafting Mike Gallop Warren Cheung
Irina Rempt-Drijfhout Mike Passaretti Warwick Allison
Izchak Miller Mike Stephenson Yitzhak Sapir
Adam Aronow Janet Walz Nathan Eady
Alex Kompel Janne Salmijarvi Norm Meluch
Alex Smith Jean-Christophe Collet Olaf Seibert
Andreas Dorn Jeff Bailey Pasi Kallinen
Andy Church Jochen Erwied Pat Rankin
Andy Swanson John Kallen Patric Mueller
Ari Huttunen John Rupley Paul Winner
Barton House John S. Bien Pierre Martineau
Benson I. Margulies Johnny Lee Ralf Brown
Bill Dyer Jon W{tte Ray Chason
Boudewijn Waijers Jonathan Handler Richard Addison
Bruce Cox Joshua Delahunty Richard Beigel
Bruce Holloway Karl Garrison Richard P. Hughey
Bruce Mewborne Keizo Yamamoto Rob Menke
Carl Schelin Ken Arnold Robin Bandy
Chris Russo Ken Arromdee Robin Johnson
David Cohrs Ken Lorber Roderick Schertler
David Damerell Ken Washikita Roland McGrath
David Gentzel Kevin Darcy Ron Van Iwaarden
David Hairston Kevin Hugo Ronnen Miller
Dean Luick Kevin Sitze Ross Brown
Del Lamb Kevin Smolkowski Sascha Wostmann
Derek S. Ray Kevin Sweet Scott Bigham
Deron Meranda Lars Huttar Scott R. Turner
Dion Nicolaas Leon Arnott Sean Hunt
Dylan O'Donnell M. Drew Streib Stephen Spackman
Eric Backus Malcolm Ryan Stefan Thielscher
Eric Hendrickson Mark Gooderum Stephen White
Eric R. Smith Mark Modrall Steve Creps
Eric S. Raymond Marvin Bressler Steve Linhart
Erik Andersen Matthew Day Steve VanDevender
Frederick Roeber Merlyn LeRoy Teemu Suikki
Gil Neiger Michael Allison Tim Lennan
Greg Laskin Michael Feir Timo Hakulinen
Greg Olson Michael Hamel Tom Almy
Gregg Wonderly Michael Sokolov Tom West
Hao-yang Wang Mike Engber Warren Cheung
Helge Hafting Mike Gallop Warwick Allison
Irina Rempt-Drijfhout Mike Passaretti Yitzhak Sapir
Izchak Miller Mike Stephenson
J. Ali Harlow Mikko Juola
.\"TABLE_END Do not delete this line.
.TE
.pg

View File

@@ -45,7 +45,7 @@
%.au
\author{Original version - Eric S. Raymond\\
(Edited and expanded for 3.6 by Mike Stephenson and others)}
\date{November 27, 2018}
\date{November 29, 2018}
\maketitle
@@ -5523,46 +5523,47 @@ in this, the list of Dungeoneers:
\begin{center}
\begin{tabular}{llll}
%TABLE_START
Adam Aronow & J. Ali Harlow & Mikko Juola\\
Alex Kompel & Janet Walz & Nathan Eady\\
Alex Smith & Janne Salmij\"{a}rvi & Norm Meluch\\
Andreas Dorn & Jean-Christophe Collet & Olaf Seibert\\
Andy Church & Jeff Bailey & Pasi Kallinen\\
Andy Swanson & Jochen Erwied & Pat Rankin\\
Ari Huttunen & John Kallen & Patric Mueller\\
Barton House & John Rupley & Paul Winner\\
Benson I. Margulies & John S. Bien & Pierre Martineau\\
Bill Dyer & Johnny Lee & Ralf Brown\\
Boudewijn Waijers & Jon W\{tte & Ray Chason\\
Bruce Cox & Jonathan Handler & Richard Addison\\
Bruce Holloway & Joshua Delahunty & Richard Beigel\\
Bruce Mewborne & Keizo Yamamoto & Richard P. Hughey\\
Carl Schelin & Ken Arnold & Rob Menke\\
Chris Russo & Ken Arromdee & Robin Bandy\\
David Cohrs & Ken Lorber & Robin Johnson\\
David Damerell & Ken Washikita & Roderick Schertler\\
David Gentzel & Kevin Darcy & Roland McGrath\\
David Hairston & Kevin Hugo & Ron Van Iwaarden\\
Dean Luick & Kevin Sitze & Ronnen Miller\\
Del Lamb & Kevin Smolkowski & Ross Brown\\
Derek S. Ray & Kevin Sweet & Sascha Wostmann\\
Deron Meranda & Lars Huttar & Scott Bigham\\
Dion Nicolaas & Leon Arnott & Scott R. Turner\\
Dylan O'Donnell & M. Drew Streib & Sean Hunt\\
Eric Backus & Malcolm Ryan & Stephen Spackman\\
Eric Hendrickson & Mark Gooderum & Stefan Thielscher\\
Eric R. Smith & Mark Modrall & Stephen White\\
Eric S. Raymond & Marvin Bressler & Steve Creps\\
Erik Andersen & Matthew Day & Steve Linhart\\
Frederick Roeber & Merlyn LeRoy & Steve VanDevender\\
Gil Neiger & Michael Allison & Teemu Suikki\\
Greg Laskin & Michael Feir & Tim Lennan\\
Greg Olson & Michael Hamel & Timo Hakulinen\\
Gregg Wonderly & Michael Sokolov & Tom Almy\\
Hao-yang Wang & Mike Engber & Tom West\\
Helge Hafting & Mike Gallop & Warren Cheung\\
Irina Rempt-Drijfhout & Mike Passaretti & Warwick Allison\\
Izchak Miller & Mike Stephenson & Yitzhak Sapir
Adam Aronow & Janet Walz & Nathan Eady\\
Alex Kompel & Janne Salmij\"{a}rvi & Norm Meluch\\
Alex Smith & Jean-Christophe Collet & Olaf Seibert\\
Andreas Dorn & Jeff Bailey & Pasi Kallinen\\
Andy Church & Jochen Erwied & Pat Rankin\\
Andy Swanson & John Kallen & Patric Mueller\\
Ari Huttunen & John Rupley & Paul Winner\\
Barton House & John S. Bien & Pierre Martineau\\
Benson I. Margulies & Johnny Lee & Ralf Brown\\
Bill Dyer & Jon W\{tte & Ray Chason\\
Boudewijn Waijers & Jonathan Handler & Richard Addison\\
Bruce Cox & Joshua Delahunty & Richard Beigel\\
Bruce Holloway & Karl Garrison & Richard P. Hughey\\
Bruce Mewborne & Keizo Yamamoto & Rob Menke\\
Carl Schelin & Ken Arnold & Robin Bandy\\
Chris Russo & Ken Arromdee & Robin Johnson\\
David Cohrs & Ken Lorber & Roderick Schertler\\
David Damerell & Ken Washikita & Roland McGrath\\
David Gentzel & Kevin Darcy & Ron Van Iwaarden\\
David Hairston & Kevin Hugo & Ronnen Miller\\
Dean Luick & Kevin Sitze & Ross Brown\\
Del Lamb & Kevin Smolkowski & Sascha Wostmann\\
Derek S. Ray & Kevin Sweet & Scott Bigham\\
Deron Meranda & Lars Huttar & Scott R. Turner\\
Dion Nicolaas & Leon Arnott & Sean Hunt\\
Dylan O'Donnell & M. Drew Streib & Stephen Spackman\\
Eric Backus & Malcolm Ryan & Stefan Thielscher\\
Eric Hendrickson & Mark Gooderum & Stephen White\\
Eric R. Smith & Mark Modrall & Steve Creps\\
Eric S. Raymond & Marvin Bressler & Steve Linhart\\
Erik Andersen & Matthew Day & Steve VanDevender\\
Frederick Roeber & Merlyn LeRoy & Teemu Suikki\\
Gil Neiger & Michael Allison & Tim Lennan\\
Greg Laskin & Michael Feir & Timo Hakulinen\\
Greg Olson & Michael Hamel & Tom Almy\\
Gregg Wonderly & Michael Sokolov & Tom West\\
Hao-yang Wang & Mike Engber & Warren Cheung\\
Helge Hafting & Mike Gallop & Warwick Allison\\
Irina Rempt-Drijfhout & Mike Passaretti & Yitzhak Sapir\\
Izchak Miller & Mike Stephenson\\
J. Ali Harlow & Mikko Juola
%TABLE_END Do not delete this line.
\end{tabular}
\end{center}

View File

@@ -225,6 +225,15 @@ scattering of objects might leave source location with wrong thing displayed
for configurations with 'long int' larger than 'int', lev_comp wrote some
garbage into the *.lev files, but nethack seemed unaffected by that
(at least on little-endian hardare) and loaded the levels successfully
stinking cloud placed near water could kill underwater creatures
applying--rather than wielding--a cursed polearm or weapon-tool didn't report
that it had become welded to hero's hand(s)
the message when riding a steed into a pit was composed but not shown
dismount that kills steed because there is no room to put it on map blamed the
hero; change that to only blame hero if dismount was voluntary
to emphasize that it's not a light source, change description of wielded Sting
from "(glowing light blue)" to "(light blue aura)" when sighted and
from "(glowing)" to nothing (not warm enough to feel) when blind
Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository
@@ -242,6 +251,8 @@ ensure tmp_at() structures are initialized for all code paths when swallowed
trapped-vs-levitation/flying change broke Sting releasing hero from web
life-saving while poly'd and Unchanging wasn't restoring u.mh (HP as monster)
change in searching stopped finding unseen monsters except hiders and eels
buliding with EXTRA_SANITY_CHECKS enabled would issue "no monster to remove"
warning if steed was killed out from under the hero
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
@@ -263,6 +274,8 @@ windows-gui: In nethackw, there could be conflicts between menu accelerators
and an extra choice accelerator to fix H7132.
windows-gui: recognize new BL_RESET in status_update; no change in behavior yet
windows-gui: align hpbar behavior at zero hit points with tty behavior
windows-gui: add support for status_hilites for the player condition field
such as stone, slime, strngl, blind, deaf, stun, conf, etc.
windows-tty: Specify both width and height when creating font for width testing
windows-tty: To counter lag problems that were occuring with the Win32 console
port, implement a console back buffer to reduce the number of calls
@@ -281,9 +294,14 @@ windows-tty: augment codepage850-to-Unicode mappings that are not displayable
with codepage437-to-Unicode mappings that are, to help ensure
that rogue-level characters in the status line match their appearance
on the map
windows-tty: add support for mouse_support:0 (disabled), mouse_support:1
(fully-functional including disabling QuickEdit on Windows console
because QuickEdit intercepts the mouse clicks so NetHack never sees
them), or mouse_support:2 (NetHack support on but QuickEdit left as is)
windows: Added ntassert() mechanism for Windows based port use
windows: heed OPTIONS=symset:default in config file if it is present
windows: add curses window port
windows: add curses window port which can co-exist with tty in exe and be
selectable in user config file via OPTIONS=windowtype:curses
tty: significant optimizations for performance and per field rendering
tty: use WC2_FLUSH_STATUS to buffer changes until BL_FLUSH is received
tty: support BL_RESET in status_update to force an update to all status fields
@@ -315,6 +333,9 @@ X11: don't reuse perm_invent window for picking an object
X11: obey mouse_support and allow toggling it in game
X11: obey menu movement keys
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
General New Features

View File

@@ -94,6 +94,15 @@ extern void FDECL(interject, (int));
*===============================================
*/
#ifdef __MINGW32__
#ifdef strncasecmp
#undef strncasecmp
#endif
#ifdef strcasecmp
#undef strcasecmp
#endif
#endif
#ifdef _MSC_VER
#if (_MSC_VER > 1000)
/* Visual C 8 warning elimination */

View File

@@ -165,6 +165,7 @@ struct menu_info_t {
boolean cancelled; /* Menu has been explicitly cancelled. */
boolean counting; /* true when menu_count has a valid value */
boolean permi;
boolean disable_mcolors; /* disable menucolors */
int permi_x, permi_y; /* perm_invent window x,y */
int permi_w, permi_h; /* perm_invent window wid, hei */

View File

@@ -7,16 +7,11 @@
/* Global declarations for curses interface */
int term_rows, term_cols; /* size of underlying terminal */
WINDOW *base_term; /* underlying terminal window */
WINDOW *mapwin, *statuswin, *messagewin; /* Main windows */
int orig_cursor; /* Preserve initial cursor state */
boolean counting; /* Count window is active */
extern int term_rows, term_cols; /* size of underlying terminal */
extern int orig_cursor; /* Preserve initial cursor state */
extern WINDOW *base_term; /* underlying terminal window */
extern boolean counting; /* Count window is active */
extern WINDOW *mapwin, *statuswin, *messagewin; /* Main windows */
#define TEXTCOLOR /* Allow color */
#define NHW_END 19

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 mon.c $NHDT-Date: 1543100460 2018/11/24 23:01:00 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.271 $ */
/* NetHack 3.6 mon.c $NHDT-Date: 1543455827 2018/11/29 01:43:47 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.272 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Derek S. Ray, 2015. */
/* NetHack may be freely redistributed. See license for details. */
@@ -483,13 +483,18 @@ register struct monst *mtmp;
/* [what about ceiling clingers?] */
inpool = (is_pool(mtmp->mx, mtmp->my)
&& !(is_flyer(mtmp->data) || is_floater(mtmp->data)));
&& (!(is_flyer(mtmp->data) || is_floater(mtmp->data))
/* there's no "above the surface" on the plane of water */
|| Is_waterlevel(&u.uz)));
inlava = (is_lava(mtmp->mx, mtmp->my)
&& !(is_flyer(mtmp->data) || is_floater(mtmp->data)));
infountain = IS_FOUNTAIN(levl[mtmp->mx][mtmp->my].typ);
/* Flying and levitation keeps our steed out of the liquid */
/* (but not water-walking or swimming) */
/* Flying and levitation keeps our steed out of the liquid
(but not water-walking or swimming; note: if hero is in a
water location on the Plane of Water, flight and levitating
are blocked so this (Flying || Levitation) test fails there
and steed will be subject to water effects, as intended) */
if (mtmp == u.usteed && (Flying || Levitation))
return 0;

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 mondata.c $NHDT-Date: 1539938825 2018/10/19 08:47:05 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.67 $ */
/* NetHack 3.6 mondata.c $NHDT-Date: 1543545188 2018/11/30 02:33:08 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.69 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2011. */
/* NetHack may be freely redistributed. See license for details. */
@@ -739,6 +739,10 @@ const char *in_str;
/* Outdated names */
{ "invisible stalker", PM_STALKER },
{ "high-elf", PM_ELVENKING }, /* PM_HIGH_ELF is obsolete */
/* other misspellings or incorrect words */
{ "wood-elf", PM_WOODLAND_ELF },
{ "wood elf", PM_WOODLAND_ELF },
{ "woodland nymph", PM_WOOD_NYMPH },
{ "halfling", PM_HOBBIT }, /* potential guess for polyself */
{ "genie", PM_DJINNI }, /* potential guess for ^G/#wizgenesis */
/* Hyphenated names -- it would be nice to handle these via

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 objnam.c $NHDT-Date: 1539938837 2018/10/19 08:47:17 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.214 $ */
/* NetHack 3.6 objnam.c $NHDT-Date: 1543544340 2018/11/30 02:19:00 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.226 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2011. */
/* NetHack may be freely redistributed. See license for details. */
@@ -1154,11 +1154,11 @@ unsigned doname_flags;
(obj->otyp == AKLYS) ? "tethered " : "", hand_s);
if (warn_obj_cnt && obj == uwep && (EWarn_of_mon & W_WEP) != 0L) {
/* presumably can be felt when blind */
Strcat(bp, " (glowing");
/* this used to be "(glowing <color>)" when sighted or
"(glowing)" when blind (via feeling warmth), but it
isn't a light source so describe something fainter */
if (!Blind)
Sprintf(eos(bp), " %s", glow_color(obj->oartifact));
Strcat(bp, ")");
Sprintf(eos(bp), " (%s aura)", glow_color(obj->oartifact));
}
}
}

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 region.c $NHDT-Date: 1542765361 2018/11/21 01:56:01 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.42 $ */
/* NetHack 3.6 region.c $NHDT-Date: 1543455828 2018/11/29 01:43:48 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.43 $ */
/* Copyright (c) 1996 by Jean-Christophe Collet */
/* NetHack may be freely redistributed. See license for details. */
@@ -947,10 +947,16 @@ genericptr_t p2;
struct monst *mtmp;
int dam;
/*
* Gas clouds can't be targetted at water locations, but they can
* start next to water and spread over it.
*/
reg = (NhRegion *) p1;
dam = reg->arg.a_int;
if (p2 == (genericptr_t) 0) { /* This means *YOU* Bozo! */
if (u.uinvulnerable || nonliving(youmonst.data) || Breathless)
if (u.uinvulnerable || nonliving(youmonst.data) || Breathless
|| Underwater)
return FALSE;
if (!Blind) {
Your("%s sting.", makeplural(body_part(EYE)));
@@ -973,6 +979,11 @@ genericptr_t p2;
adult green dragon is not affected by gas cloud, baby one is */
if (!(nonliving(mtmp->data) || is_vampshifter(mtmp))
&& !breathless(mtmp->data)
/* not is_swimmer(); assume that non-fish are swimming on
the surface and breathing the air above it periodically
unless located at water spot on plane of water */
&& !((mtmp->data->mlet == S_EEL || Is_waterlevel(&u.uz))
&& is_pool(mtmp->mx, mtmp->my))
/* exclude monsters with poison gas breath attack:
adult green dragon and Chromatic Dragon (and iron golem,
but nonliving() and breathless() tests also catch that) */

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 steed.c $NHDT-Date: 1542765364 2018/11/21 01:56:04 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.57 $ */
/* NetHack 3.6 steed.c $NHDT-Date: 1543543362 2018/11/30 02:02:42 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.59 $ */
/* Copyright (c) Kevin Hugo, 1998-1999. */
/* NetHack may be freely redistributed. See license for details. */
@@ -481,7 +481,7 @@ int reason; /* Player was thrown off etc. */
{
struct monst *mtmp;
struct obj *otmp;
coord cc;
coord cc, steedcc;
const char *verb = "fall";
boolean repair_leg_damage = (Wounded_legs != 0L);
unsigned save_utrap = u.utrap;
@@ -548,19 +548,55 @@ int reason; /* Player was thrown off etc. */
/* Release the steed and saddle */
u.usteed = 0;
u.ugallop = 0L;
/* Set player and steed's position. Try moving the player first
unless we're in the midst of creating a bones file. */
if (reason == DISMOUNT_BONES) {
/* move the steed to an adjacent square */
if (enexto(&cc, u.ux, u.uy, mtmp->data))
rloc_to(mtmp, cc.x, cc.y);
else /* evidently no room nearby; move steed elsewhere */
(void) rloc(mtmp, FALSE);
return;
/*
* rloc(), rloc_to(), and monkilled()->mondead()->m_detach() all
* expect mtmp to be on the map or else have mtmp->mx be 0, but
* setting the latter to 0 here would interfere with dropping
* the saddle. Prior to 3.6.2, being off the map didn't matter.
*
* place_monster() expects mtmp to be alive and not be u.usteed.
*
* Unfortunately, <u.ux,u.uy> (former steed's implicit location)
* might now be occupied by an engulfer, so we can't just put mtmp
* at that spot. An engulfer's previous spot will be unoccupied
* but we don't know where that was and even if we did, it might
* be hostile terrain.
*/
steedcc.x = u.ux, steedcc.y = u.uy;
if (m_at(u.ux, u.uy)) {
/* hero's spot has a monster in it; hero must have been plucked
from saddle as engulfer moved into his spot--other dismounts
shouldn't run into this situation; find nearest viable spot */
if (!enexto(&steedcc, u.ux, u.uy, mtmp->data)
/* no spot? must have been engulfed by a lurker-above over
water or lava; try requesting a location for a flyer */
&& !enexto(&steedcc, u.ux, u.uy, &mons[PM_BAT]))
/* still no spot; last resort is any spot within bounds */
(void) enexto(&steedcc, u.ux, u.uy, &mons[PM_GHOST]);
}
if (!m_at(steedcc.x, steedcc.y)) {
if (mtmp->mhp < 1)
mtmp->mhp = 0; /* make sure it isn't negative */
mtmp->mhp++; /* force at least one hit point, possibly resurrecting */
place_monster(mtmp, steedcc.x, steedcc.y);
mtmp->mhp--; /* take the extra hit point away: cancel resurrection */
} else {
impossible("Dismounting: can't place former steed on map.");
}
if (!DEADMONSTER(mtmp)) {
place_monster(mtmp, u.ux, u.uy);
/* if for bones, there's no reason to place the hero;
we want to make room for potential ghost, so move steed */
if (reason == DISMOUNT_BONES) {
/* move the steed to an adjacent square */
if (enexto(&cc, u.ux, u.uy, mtmp->data))
rloc_to(mtmp, cc.x, cc.y);
else /* evidently no room nearby; move steed elsewhere */
(void) rloc(mtmp, FALSE);
return;
}
/* Set hero's and/or steed's positions. Try moving the hero first. */
if (!u.uswallow && !u.ustuck && have_spot) {
struct permonst *mdat = mtmp->data;
@@ -614,20 +650,29 @@ int reason; /* Player was thrown off etc. */
if (save_utrap)
(void) mintrap(mtmp);
}
/* Couldn't... try placing the steed */
/* Couldn't move hero... try moving the steed. */
} else if (enexto(&cc, u.ux, u.uy, mtmp->data)) {
/* Keep player here, move the steed to cc */
rloc_to(mtmp, cc.x, cc.y);
/* Player stays put */
/* Otherwise, kill the steed */
} else {
killed(mtmp);
adjalign(-1);
}
}
/* Return the player to the floor */
if (reason != DISMOUNT_ENGULFED) {
/* Otherwise, kill the steed. */
} else {
if (reason == DISMOUNT_BYCHOICE) {
/* [un]#ride: hero gets credit/blame for killing steed */
killed(mtmp);
adjalign(-1);
} else {
/* other dismount: kill former steed with no penalty;
damage type is just "neither AD_DGST nor -AD_RBRE" */
monkilled(mtmp, "", -AD_PHYS);
}
}
} /* !DEADMONST(mtmp) */
/* usually return the hero to the surface */
if (reason != DISMOUNT_ENGULFED && reason != DISMOUNT_BONES) {
in_steed_dismounting = TRUE;
(void) float_down(0L, W_SADDLE);
in_steed_dismounting = FALSE;

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 trap.c $NHDT-Date: 1543100476 2018/11/24 23:01:16 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.311 $ */
/* NetHack 3.6 trap.c $NHDT-Date: 1543515862 2018/11/29 18:24:22 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.312 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2013. */
/* NetHack may be freely redistributed. See license for details. */
@@ -1185,6 +1185,7 @@ unsigned trflags;
if (!Sokoban) {
char verbbuf[BUFSZ];
*verbbuf = '\0';
if (u.usteed) {
if ((trflags & RECURSIVETRAP) != 0)
Sprintf(verbbuf, "and %s fall",
@@ -1202,8 +1203,9 @@ unsigned trflags;
} else {
Strcpy(verbbuf,
!plunged ? "fall" : (Flying ? "dive" : "plunge"));
You("%s into %s pit!", verbbuf, a_your[trap->madeby_u]);
}
if (*verbbuf)
You("%s into %s pit!", verbbuf, a_your[trap->madeby_u]);
}
/* wumpus reference */
if (Role_if(PM_RANGER) && !trap->madeby_u && !trap->once

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 wield.c $NHDT-Date: 1525012623 2018/04/29 14:37:03 $ $NHDT-Branch: master $:$NHDT-Revision: 1.56 $ */
/* NetHack 3.6 wield.c $NHDT-Date: 1543492132 2018/11/29 11:48:52 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.58 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2009. */
/* NetHack may be freely redistributed. See license for details. */
@@ -575,8 +575,13 @@ const char *verb; /* "rub",&c */
} else {
struct obj *oldwep = uwep;
You("now wield %s.", doname(obj));
setuwep(obj);
if (will_weld(obj)) {
/* hope none of ready_weapon()'s early returns apply here... */
(void) ready_weapon(obj);
} else {
You("now wield %s.", doname(obj));
setuwep(obj);
}
if (flags.pushweapon && oldwep && uwep != oldwep)
setuswapwep(oldwep);
}

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 pcmain.c $NHDT-Date: 1524413707 2018/04/22 16:15:07 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.74 $ */
/* NetHack 3.6 pcmain.c $NHDT-Date: 1543465755 2018/11/29 04:29:15 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.101 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Derek S. Ray, 2015. */
/* NetHack may be freely redistributed. See license for details. */
@@ -87,9 +87,12 @@ unsigned _stklen = STKSIZ;
* to help MinGW decide which entry point to choose. If both main and
* WinMain exist, the resulting executable won't work correctly.
*/
#ifndef __MINGW32__
int
#ifndef __MINGW32__
main(argc, argv)
#else
mingw_main(argc, argv)
#endif
int argc;
char *argv[];
{
@@ -115,7 +118,6 @@ char *argv[];
/*NOTREACHED*/
return 0;
}
#endif
boolean
pcmain(argc, argv)
@@ -177,7 +179,7 @@ _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);*/
choose_windows(DEFAULT_WINDOW_SYS);
#else
choose_windows(default_window_sys);
if (argc > 1
if (argc >= 1
&& !strcmpi(default_window_sys, "mswin")
&& strstri(argv[0], "nethackw.exe"))
iflags.windowtype_locked = TRUE;

View File

@@ -1,5 +1,5 @@
# NetHack Makefile (VMS) - for building nethack itself.
# NetHack 3.6 Makefile.src $NHDT-Date: 1542388601 2018/11/16 17:16:41 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.31 $
# NetHack 3.6 Makefile.src $NHDT-Date: 1543545915 2018/11/30 02:45:15 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.32 $
# Copyright (c) 2011 by Robert Patrick Rankin
# NetHack may be freely redistributed. See license for details.
@@ -140,9 +140,9 @@ VERSOURCES = $(HACKCSRC) $(SYSSRC) $(WINSRC) $(RANDSRC) $(GENCSRC)
HACKINCL = align.h amiconf.h artifact.h artilist.h attrib.h beconf.h color.h \
config.h config1.h context.h coord.h decl.h def_os2.h display.h \
dlb.h dungeon.h engrave.h extern.h flag.h func_tab.h global.h \
hack.h lev.h macconf.h mextra.h mfndpos.h micro.h \
mkroom.h monattk.h mondata.h monflag.h monst.h monsym.h obj.h \
objclass.h os2conf.h patchlevel.h pcconf.h permonst.h prop.h rect.h \
hack.h lev.h macconf.h mextra.h mfndpos.h micro.h mkroom.h \
monattk.h mondata.h monflag.h monst.h monsym.h obj.h objclass.h \
os2conf.h patchlevel.h pcconf.h permonst.h prop.h rect.h \
region.h rm.h sp_lev.h spell.h sys.h system.h tcap.h timeout.h \
tosconf.h tradstdc.h trampoli.h trap.h unixconf.h vision.h \
vmsconf.h wintty.h winX.h winprocs.h wintype.h you.h youprop.h
@@ -206,8 +206,8 @@ nethack.opt : $(MAKEFILE) # this file
@ write f f$edit("$(HOBJ5)","COLLAPSE")
@ write f f$edit("$(HOBJ6)","COLLAPSE")
@ write f "sys$library:starlet.olb/Include=(lib$initialize)
@ write f \
"psect_attr=lib$initialize, Con,Usr,noPic,Rel,Gbl,noShr,noExe,Rd,noWrt,Long"
@ write f "! psect_attributes Usr, noPic, and Long removed"
@ write f "psect_attr=lib$initialize, Con,Rel,Gbl,noShr,noExe,Rd,noWrt"
@ write f "iosegment=128"
close f
@@ -378,7 +378,7 @@ attrib.obj : attrib.c $(HACK_H)
ball.obj : ball.c $(HACK_H)
bones.obj : bones.c $(HACK_H) $(INC)lev.h
botl.obj : botl.c $(HACK_H)
cmd.obj : cmd.c $(HACK_H) $(INC)func_tab.h
cmd.obj : cmd.c $(HACK_H) $(INC)lev.h $(INC)func_tab.h
dbridge.obj : dbridge.c $(HACK_H)
decl.obj : decl.c $(HACK_H)
detect.obj : detect.c $(HACK_H) $(INC)artifact.h

File diff suppressed because it is too large Load Diff

View File

@@ -71,8 +71,7 @@ DEBUGINFO = Y
#
# You'll have to set PDCURSES_H to the correct location of the
# PDCurses header (.h) files and PDCURSES_C to the location
# of your PDCurses C files which must already be resident on
# your machine.
# of your PDCurses C files.
#
ADD_CURSES=Y
PDCURSES_TOP=..\..\pdcurses
@@ -90,9 +89,13 @@ PDCURSES_TOP=..\..\pdcurses
# Nothing below here should have to be changed.#
# #
################################################
#
#==============================================================================
# Set the gamedir according to your preference.
# If not present prior to compilation it gets created.
#
# Source directories. Makedefs hardcodes these, don't change them.
#
@@ -115,10 +118,11 @@ WSHR = ..\win\share # Tile support files
OBJ = o
cc=cl
link=link
rc=Rc
#
#==========================================
# Exe File Info.
#==========================================
#
#
# Optional high-quality BSD random number generation routines
@@ -151,93 +155,6 @@ DLBFLG =
#ZLIB = zlib.lib
#==========================================
#==========================================
# Setting up the compiler and linker
#==========================================
#==========================================
# Before we get started, this section is used to determine the version of
# Visual Studio we are using. We set VSVER to 0000 to flag any version that
# is too old or untested.
#
#NMAKE version 1414264330 is distributed with VS 15.7.5
#!MESSAGE $(MAKEFLAGS)
#!MESSAGE $(MAKEDIR)
#!MESSAGE $(MAKE)
MAKEVERSION=$(_NMAKE_VER:.= )
MAKEVERSION=$(MAKEVERSION: =)
#!MESSAGE $(_NMAKE_VER)
#!MESSAGE $(MAKEVERSION)
VSNEWEST=2017
!IF ($(MAKEVERSION) < 1000000000)
VSVER=0000 #untested ancient version
!ELSEIF ($(MAKEVERSION) > 1000000000) && ($(MAKEVERSION) < 1100000000)
VSVER=2010
!ELSEIF ($(MAKEVERSION) > 1100000000) && ($(MAKEVERSION) < 1200000000)
VSVER=2012
!ELSEIF ($(MAKEVERSION) > 1200000000) && ($(MAKEVERSION) < 1400000000)
VSVER=2013
!ELSEIF ($(MAKEVERSION) > 1400000000) && ($(MAKEVERSION) < 1411000000)
VSVER=2015
!ELSEIF ($(MAKEVERSION) > 1411000000) && ($(MAKEVERSION) < 1414264331)
VSVER=$(VSNEWEST)
!ELSEIF ($(MAKEVERSION) > 1414264330)
VSVER=2999 #untested future version
!ENDIF
!IF ($(VSVER) >= 2012)
!MESSAGE Autodetected Visual Studio $(VSVER)
!ELSEIF ($(VSVER) == 2999
!MESSAGE The version of Visual Studio is newer than the most recent at
!MESSAGE the time this Makefile was crafted (Visual Studio $(VSNEWEST)).
!MESSAGE Because it is newer we'll proceed expecting that the
!MESSAGE VS$(VSNEWEST) processing will still work.
!ELSEIF ($(VSVER) == 0000)
!MESSAGE The version of Visual Studio appears to be quite old, older
!MESSAGE than VS2010 which is the oldest supported version by this
!MESSAGE Makefile, so we'll stop now.
!ERROR Untested old Visual Studio version with NMAKE $(_NMAKE_VER).
!ENDIF
!IF ($(VSVER) == 2010)
# For VS2010 use "setenv /x86" or "setenv /x64" before invoking make process
# DO NOT DELETE THE FOLLOWING LINE
!include <win32.mak>
! ENDIF
#These will be in the environment variables with one of the VS2017
#developer command prompts.
#VSCMD_ARG_HOST_ARCH=x64
#VSCMD_ARG_TGT_ARCH=x86
!IFDEF VSCMD_ARG_HOST_ARCH
!MESSAGE Host architecture is $(VSCMD_ARG_HOST_ARCH)
!MESSAGE Target architecture is $(VSCMD_ARG_TGT_ARCH)
! IFNDEF TARGET_CPU
! IF "$(VSCMD_ARG_TGT_ARCH)"=="x64"
TARGET_CPU=x64
! ELSE
TARGET_CPU=x86
! ENDIF
! ENDIF
!ENDIF
!IF "$(TARGET_CPU)" == ""
TARGET_CPU=x86
!ENDIF
!IF ($(VSVER) == 2010)
CL_RECENT=
!ELSE
! IF ($(VSVER) > 2010)
CL_RECENT=-sdl
! ENDIF
!ENDIF
#==========================================
#================ MACROS ==================
@@ -272,7 +189,7 @@ RECOVOBJS = $(O)recover.o
TILEFILES = $(WSHR)\monsters.txt $(WSHR)\objects.txt $(WSHR)\other.txt
#
# These are not invoked during a normal game build in 3.4+
# These are not invoked during a normal game build in 3.4
#
TEXT_IO = $(O)tiletext.o $(O)tiletxt.o $(O)drawing.o \
$(O)decl.o $(O)monst.o $(O)objects.o
@@ -298,19 +215,19 @@ VOBJ06 = $(O)dothrow.o $(O)drawing.o $(O)dungeon.o $(O)eat.o
VOBJ07 = $(O)end.o $(O)engrave.o $(O)exper.o $(O)explode.o
VOBJ08 = $(O)extralev.o $(O)files.o $(O)fountain.o $(O)hack.o
VOBJ09 = $(O)hacklib.o $(O)invent.o $(O)light.o $(O)lock.o
VOBJ10 = $(O)mail.o $(O)pcmain.o $(O)makemon.o $(O)mapglyph.o
VOBJ11 = $(O)mcastu.o $(O)mhitm.o $(O)mhitu.o $(O)minion.o
VOBJ12 = $(O)mklev.o $(O)mkmap.o $(O)mkmaze.o $(O)mkobj.o
VOBJ13 = $(O)mkroom.o $(O)mon.o $(O)mondata.o $(O)monmove.o
VOBJ14 = $(O)monst.o $(O)mplayer.o $(O)mthrowu.o $(O)muse.o
VOBJ15 = $(O)music.o $(O)o_init.o $(O)objects.o $(O)objnam.o
VOBJ16 = $(O)options.o $(O)pager.o $(O)pickup.o $(O)pline.o
VOBJ17 = $(O)polyself.o $(O)potion.o $(O)pray.o $(O)priest.o
VOBJ18 = $(O)quest.o $(O)questpgr.o $(RANDOM) $(O)read.o
VOBJ19 = $(O)rect.o $(O)region.o $(O)restore.o $(O)rip.o
VOBJ20 = $(O)rnd.o $(O)role.o $(O)rumors.o $(O)save.o
VOBJ21 = $(O)shk.o $(O)shknam.o $(O)sit.o $(O)sounds.o
VOBJ22 = $(O)sp_lev.o $(O)spell.o $(O)steal.o $(O)steed.o
VOBJ10 = $(O)mail.o $(O)pcmain.o $(O)makemon.o $(O)mapglyph.o $(O)mcastu.o
VOBJ11 = $(O)mhitm.o $(O)mhitu.o $(O)minion.o $(O)mklev.o
VOBJ12 = $(O)mkmap.o $(O)mkmaze.o $(O)mkobj.o $(O)mkroom.o
VOBJ13 = $(O)mon.o $(O)mondata.o $(O)monmove.o $(O)monst.o
VOBJ14 = $(O)mplayer.o $(O)mthrowu.o $(O)muse.o
VOBJ15 = $(O)music.o $(O)o_init.o $(O)objects.o $(O)objnam.o
VOBJ16 = $(O)options.o $(O)pager.o $(O)pickup.o $(O)pline.o
VOBJ17 = $(O)polyself.o $(O)potion.o $(O)pray.o $(O)priest.o
VOBJ18 = $(O)quest.o $(O)questpgr.o $(RANDOM) $(O)read.o
VOBJ19 = $(O)rect.o $(O)region.o $(O)restore.o $(O)rip.o
VOBJ20 = $(O)rnd.o $(O)role.o $(O)rumors.o $(O)save.o
VOBJ21 = $(O)shk.o $(O)shknam.o $(O)sit.o $(O)sounds.o
VOBJ22 = $(O)sp_lev.o $(O)spell.o $(O)steal.o $(O)steed.o
VOBJ23 = $(O)sys.o $(O)teleport.o $(O)timeout.o $(O)topten.o
VOBJ24 = $(O)track.o $(O)trap.o $(O)u_init.o $(O)uhitm.o
VOBJ25 = $(O)vault.o $(O)vis_tab.o $(O)vision.o $(O)weapon.o
@@ -354,8 +271,7 @@ GUIHDR = $(MSWIN)\mhaskyn.h $(MSWIN)\mhdlg.h $(MSWIN)\mhfont.h \
COMCTRL = comctl32.lib
KEYDLLS = $(GAMEDIR)\nhdefkey.dll $(GAMEDIR)\nh340key.dll \
$(GAMEDIR)\nhraykey.dll
KEYDLLS = $(GAMEDIR)\nhdefkey.dll $(GAMEDIR)\nh340key.dll $(GAMEDIR)\nhraykey.dll
TILEUTIL16 = $(UTIL)\tile2bmp.exe
TILEBMP16 = $(SRC)\tiles.bmp
@@ -437,31 +353,109 @@ TILE_H = ..\win\share\tile.h
DATABASE = $(DAT)\data.base
#==========================================
#==========================================
# Setting up the compiler and linker
#==========================================
#==========================================
cc=cl
link=link
rc=Rc
# Before we get started, this section is used to determine the version of
# Visual Studio we are using. We set VSVER to 0000 to flag any version that
# is too old or untested.
#
#NMAKE version 1414264330 is distributed with VS 15.7.5
#!MESSAGE $(MAKEFLAGS)
#!MESSAGE $(MAKEDIR)
#!MESSAGE $(MAKE)
MAKEVERSION=$(_NMAKE_VER:.= )
MAKEVERSION=$(MAKEVERSION: =)
#!MESSAGE $(_NMAKE_VER)
#!MESSAGE $(MAKEVERSION)
VSNEWEST=2017
!IF ($(MAKEVERSION) < 1000000000)
VSVER=0000 #untested ancient version
!ELSEIF ($(MAKEVERSION) > 1000000000) && ($(MAKEVERSION) < 1100000000)
VSVER=2010
!ELSEIF ($(MAKEVERSION) > 1100000000) && ($(MAKEVERSION) < 1200000000)
VSVER=2012
!ELSEIF ($(MAKEVERSION) > 1200000000) && ($(MAKEVERSION) < 1400000000)
VSVER=2013
!ELSEIF ($(MAKEVERSION) > 1400000000) && ($(MAKEVERSION) < 1411000000)
VSVER=2015
!ELSEIF ($(MAKEVERSION) > 1411000000) && ($(MAKEVERSION) < 1414264331)
VSVER=$(VSNEWEST)
!ELSEIF ($(MAKEVERSION) > 1414264330)
VSVER=2999 #untested future version
!ENDIF
!IF ($(VSVER) >= 2012)
!MESSAGE Autodetected Visual Studio $(VSVER)
!ELSEIF ($(VSVER) == 2999
!MESSAGE The version of Visual Studio is newer than the most recent at
!MESSAGE the time this Makefile was crafted (Visual Studio $(VSNEWEST)).
!MESSAGE Because it is newer we'll proceed expecting that the
!MESSAGE VS$(VSNEWEST) processing will still work.
!ELSEIF ($(VSVER) == 0000)
!MESSAGE The version of Visual Studio appears to be quite old, older
!MESSAGE than VS2010 which is the oldest supported version by this
!MESSAGE Makefile, so we'll stop now.
!ERROR Untested old Visual Studio version with NMAKE $(_NMAKE_VER).
!ENDIF
!IF ($(VSVER) == 2010)
# For VS2010 use "setenv /x86" or "setenv /x64" before invoking make process
# DO NOT DELETE THE FOLLOWING LINE
!include <win32.mak>
! ENDIF
#These will be in the environment variables with one of the VS2017
#developer command prompts.
#VSCMD_ARG_HOST_ARCH=x64
#VSCMD_ARG_TGT_ARCH=x86
!IFDEF VSCMD_ARG_HOST_ARCH
!MESSAGE Host architecture is $(VSCMD_ARG_HOST_ARCH)
!MESSAGE Target architecture is $(VSCMD_ARG_TGT_ARCH)
! IFNDEF TARGET_CPU
! IF "$(VSCMD_ARG_TGT_ARCH)"=="x64"
TARGET_CPU=x64
! ELSE
TARGET_CPU=x86
! ENDIF
! ENDIF
!ENDIF
!IF "$(TARGET_CPU)" == ""
TARGET_CPU=x86
!ENDIF
!IF ($(VSVER) == 2010)
CL_RECENT=
!ELSE
! IF ($(VSVER) > 2010)
CL_RECENT=-sdl
! ENDIF
!ENDIF
#==========================================
# More compiler setup post-macros
#==========================================
#----------------------------------------------------------------
!IF "$(ADD_CURSES)" == "Y"
#CURSESDEF=-D"PDC_DLL_BUILD" -D"CURSES_GRAPHICS" -D"CURSES_BRIEF_INCLUDE"
CURSESDEF=-D"CURSES_GRAPHICS" -D"CURSES_BRIEF_INCLUDE"
CURSESINCL=..\win\curses
!ELSE
CURSDEF=
CURSESLIB=
CURSESINCL=
!ENDIF
!IFNDEF ADD_CURSES
INCLDIR= /I..\include /I..\sys\winnt
!ELSE
INCLDIR= /I..\include /I..\sys\winnt /I$(CURSESINCL)
!ENDIF
#===========================================
#---- start of Visual Studio Specific macros
#===========================================
ccommon= -c -nologo -D"_CONSOLE" -D"_CRT_NONSTDC_NO_DEPRECATE" -D"_CRT_SECURE_NO_DEPRECATE" \
-D"_LIB" -D"_SCL_SECURE_NO_DEPRECATE" -D"_VC80_UPGRADE=0x0600" -D"DLB" -D"_MBCS" \
-DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -D"NDEBUG" -D"YY_NO_UNISTD_H" $(CURSESDEF) \
@@ -531,6 +525,12 @@ conlibs = $(baselibs)
guilibs = $(winlibs)
#
!IFNDEF ADD_CURSES
INCLDIR= /I..\include /I..\sys\winnt
!ELSE
INCLDIR= /I..\include /I..\sys\winnt
!ENDIF
#==========================================
# Util builds
#==========================================
@@ -550,10 +550,6 @@ DLB = nhdat
DLB =
! ENDIF
#==========================================
#---- end of Visual Studio Specific macros
#==========================================
#==========================================
#================ RULES ==================
#==========================================
@@ -632,6 +628,9 @@ DLB =
{$(WCURSES)}.c{$(OBJ)}.o:
@$(cc) $(PDCINCL) $(cflagsBuild) -Fo$@ $<
#{$(WCURSES)}.txt{$(DAT)}.txt:
# @copy $< $@
#==========================================
# Rules for files in PDCurses
#==========================================
@@ -683,12 +682,10 @@ $(O)install.tag: $(DAT)\data $(DAT)\rumors $(DAT)\dungeon \
if exist $(DAT)\symbols copy $(DAT)\symbols $(GAMEDIR)
if exist $(DOC)\guidebook.txt copy $(DOC)\guidebook.txt $(GAMEDIR)\Guidebook.txt
if exist $(DOC)\nethack.txt copy $(DOC)\nethack.txt $(GAMEDIR)\NetHack.txt
$(U)makedefs -c
-if not exist $(GAMEDIR)\defaults.nh copy fixed_defaults.nh $(GAMEDIR)\defaults.nh
-if not exist $(GAMEDIR)\defaults.nh copy $(MSWSYS)\defaults.nh $(GAMEDIR)\defaults.nh
-if not exist $(GAMEDIR)\record. goto>$(GAMEDIR)\record.
@if exist $(GAMEDIR)\NetHack.PDB echo NOTE: You may want to remove $(GAMEDIR:\=/)/NetHack.PDB to conserve space
@if exist $(GAMEDIR)\NetHackW.PDB echo NOTE: You may want to remove $(GAMEDIR:\=/)/NetHackW.PDB to conserve space
-if not exist $(GAMEDIR)\defaults.nh copy $(MSWSYS)\defaults.nh $(GAMEDIR)\defaults.nh
-if not exist $(GAMEDIR)\record. goto>$(GAMEDIR)\record.
echo install done > $@
# copy $(MSWSYS)\winnt.hlp $(GAMEDIR)
@@ -753,10 +750,10 @@ $(O)console.res: $(MSWSYS)\console.rc $(MSWSYS)\NetHack.ico
@$(rc) -r -fo$@ -i$(MSWSYS) -dNDEBUG $(MSWSYS)\console.rc
#==========================================================================
#==========================================
# The game targets.
#==========================================================================
#[VS-start] Visual C
#==========================================
# The section for linking the NetHack image looks a little strange at
# first, especially if you are used to UNIX makes, or NDMAKE. It is
# Microsoft nmake specific, and it gets around the problem of the
@@ -778,8 +775,6 @@ $(O)console.res: $(MSWSYS)\console.rc $(MSWSYS)\NetHack.ico
# with ^ as we have done below. Every occurence
# of a <tab> in $(ALLOBJ) is replaced by
# <+><return><tab>.
#[VS-end]
#==========================================================================
GAMEOBJ=$(ALLOBJ:^ =^
)
@@ -898,14 +893,20 @@ $(GAMEDIR)\nhraykey.dll : $(O)$(@B).o $(O)gamedir.tag $(O)$(@B).def
/PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).map" /DEF:$(O)$(@B).def \
/IMPLIB:$(O)$(@B).lib -out:$@ $(O)$(@B).o
#==========================================
#=========== SECONDARY TARGETS ============
#==========================================
#
# Secondary Targets.
#
#==========================================
# Makedefs Stuff
#==========================================
$(U)nhsizes.exe: $(O)nhsizes.o
@echo Linking $(@:\=/)
$(link) $(lflagsBuild) -out:$@ $(O)nhsizes.o $(O)panic.o $(O)alloc.o
$(O)nhsizes.o: $(CONFIG_H) nhsizes.c
@$(cc) $(cflagsBuild) -Fo$@ nhsizes.c
$(U)makedefs.exe: $(MAKEOBJS)
@echo Linking $(@:\=/)
@$(link) $(lflagsBuild) /PDB:"$(O)$(@B).PDB" /MAP:"$(O)$(@B).MAP" -out:$@ $(MAKEOBJS)
@@ -1057,24 +1058,6 @@ $(U)dgncomp.exe: $(DGNCOMPOBJS)
)
<<
#=================================================
# For a couple of devteam utilities
#=================================================
$(U)nhsizes.exe: $(O)nhsizes.o
@echo Linking $(@:\=/)
$(link) $(lflagsBuild) -out:$@ $(O)nhsizes.o $(O)panic.o $(O)alloc.o
$(U)nhsizes2.exe: $(O)nhsizes2.o
@echo Linking $(@:\=/)
$(link) $(lflagsBuild) -out:$@ $(O)nhsizes2.o $(O)panic.o $(O)alloc.o
$(O)nhsizes.o: $(CONFIG_H) nhsizes.c
@$(cc) $(cflagsBuild) -Fo$@ nhsizes.c
$(O)nhsizes2.o: $(CONFIG_H) nhsizes2.c
@$(cc) $(cflagsBuild) -Fo$@ nhsizes2.c
#=================================================
# Create directory for holding object files
#=================================================
@@ -1084,6 +1067,34 @@ $(O)obj.tag:
@if not exist $(OBJ)\*.* mkdir $(OBJ)
@echo directory created >$@
#==========================================
# Notify of any CL environment variables
# in effect since they change the compiler
# options.
#==========================================
$(O)envchk.tag: $(O)obj.tag
! IF "$(TARGET_CPU)"=="x64"
@echo Windows x64 64-bit target build
! ELSE
@echo Windows x86 32-bit target build
! ENDIF
!IFDEF TTYOBJ
@echo tty window support included
! IF "$(ADD_CURSES)"=="Y"
@echo curses window support also included
! ENDIF
!ENDIF
! IF "$(CL)"!=""
# @echo Warning, the CL Environment variable is defined:
# @echo CL=$(CL)
! ENDIF
echo envchk >$@
#==========================================
#=========== SECONDARY TARGETS ============
#==========================================
#==========================================
# DLB utility and nhdat file creation
#==========================================
@@ -1244,40 +1255,19 @@ $(O)tile2bmp.o: $(WSHR)\tile2bmp.c $(HACK_H) $(TILE_H) $(MSWSYS)\win32api.h
$(O)til2bm32.o: $(WSHR)\tile2bmp.c $(HACK_H) $(TILE_H) $(MSWSYS)\win32api.h
@$(cc) $(cflagsBuild) -I$(WSHR) /DPACKED_FILE /DTILE_X=32 /DTILE_Y=32 /Fo$@ $(WSHR)\tile2bmp.c
#==========================================
# PDCurses Library
#==========================================
#===============================================================================
# PDCurses
#===============================================================================
$(O)pdcurses.lib : $(PDCLIBOBJS) $(PDCOBJS)
lib -nologo /out:$@ $(PDCLIBOBJS) $(PDCOBJS)
#==========================================
# Notify of any CL environment variables
# in effect since they change the compiler
# options.
#==========================================
$(O)pdcscrn.o : $(PDCURSES_HEADERS) $(PDCWINCON)\pdcscrn.c $(MSWSYS)\stub-pdcscrn.c
$(cc) $(PDCINCL) $(cflagsBuild) -Fo$@ $(MSWSYS)\stub-pdcscrn.c
$(O)envchk.tag: $(O)obj.tag
! IF "$(TARGET_CPU)"=="x64"
@echo Windows x64 64-bit target build
! ELSE
@echo Windows x86 32-bit target build
! ENDIF
!IFDEF TTYOBJ
@echo tty window support included
! IF "$(ADD_CURSES)"=="Y"
@echo curses window support also included
! ENDIF
!ENDIF
! IF "$(CL)"!=""
# @echo Warning, the CL Environment variable is defined:
# @echo CL=$(CL)
! ENDIF
echo envchk >$@
#==========================================
#===============================================================================
# Housekeeping
#==========================================
#===============================================================================
spotless: clean
! IF ("$(OBJ)"!="")
@@ -1370,7 +1360,6 @@ clean:
if exist $(U)dgncomp.exe del $(U)dgncomp.exe
if exist $(SRC)\*.lnk del $(SRC)\*.lnk
if exist $(SRC)\*.map del $(SRC)\*.map
if exist $(SRC)\fixed_defaults.nh del $(SRC)\fixed_defaults.nh
if exist $(O)install.tag del $(O)install.tag
if exist $(O)console.res del $(O)console.res
if exist $(O)dgncomp.MAP del $(O)dgncomp.MAP
@@ -1480,8 +1469,6 @@ $(O)winhack.o: $(HACK_H) $(MSWIN)\winhack.c
$(O)ttystub.o: $(HACK_H) $(MSWSYS)\stubs.c
@$(cc) $(cflagsBuild) -DTTYSTUB -Fo$@ $(MSWSYS)\stubs.c
$(O)tile.o: $(SRC)\tile.c $(HACK_H)
#
# util dependencies
#
@@ -1495,21 +1482,18 @@ $(O)panic.o: $(U)panic.c $(CONFIG_H)
(O)cppregex.o: $(O)cppregex.cpp $(HACK_H)
@$(CC) $(cflagsBuild) -Fo$@ ..\sys\share\cppregex.cpp
#
# Other dependencies needed by some ports
#
# curses window port dependencies
$(O)cursdial.o: $(WCURSES)\cursdial.c $(WCURSES)\cursdial.h $(INCL)\wincurs.h
$(O)cursinit.c: $(WCURSES)\cursinit.c $(WCURSES)\cursinit.h $(INCL)\wincurs.h
$(O)cursinvt.c: $(WCURSES)\cursinvt.c $(WCURSES)\cursinvt.h $(INCL)\wincurs.h
$(O)cursmain.c: $(WCURSES)\cursmain.c $(WCURSES)\cursmain.h $(INCL)\wincurs.h
$(O)cursmesg.c: $(WCURSES)\cursmesg.c $(WCURSES)\cursmesg.h $(INCL)\wincurs.h
$(O)cursmisc.c: $(WCURSES)\cursmisc.c $(WCURSES)\cursmisc.h $(INCL)\wincurs.h
$(O)cursstat.c: $(WCURSES)\cursstat.c $(WCURSES)\cursstat.h $(INCL)\wincurs.h
$(O)curswins.c: $(WCURSES)\curswins.c $(WCURSES)\curswins.h $(INCL)\wincurs.h
#
$(O)\cursdial.o: $(WCURSES)\cursdial.c $(WCURSES)\cursdial.h $(INCL)\wincurs.h
$(O)\cursinit.c: $(WCURSES)\cursinit.c $(WCURSES)\cursinit.h $(INCL)\wincurs.h
$(O)\cursinvt.c: $(WCURSES)\cursinvt.c $(WCURSES)\cursinvt.h $(INCL)\wincurs.h
$(O)\cursmain.c: $(WCURSES)\cursmain.c $(WCURSES)\cursmain.h $(INCL)\wincurs.h
$(O)\cursmesg.c: $(WCURSES)\cursmesg.c $(WCURSES)\cursmesg.h $(INCL)\wincurs.h
$(O)\cursmisc.c: $(WCURSES)\cursmisc.c $(WCURSES)\cursmisc.h $(INCL)\wincurs.h
$(O)\cursstat.c: $(WCURSES)\cursstat.c $(WCURSES)\cursstat.h $(INCL)\wincurs.h
$(O)\curswins.c: $(WCURSES)\curswins.c $(WCURSES)\curswins.h $(INCL)\wincurs.h
#
# The rest are stolen from sys/unix/Makefile.src,
# with the following changes:
@@ -1582,6 +1566,7 @@ $(O)wintext.o: ..\win\X11\wintext.c $(HACK_H) $(INCL)\winX.h $(INCL)\xwindow.h
@$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\wintext.c
$(O)winval.o: ..\win\X11\winval.c $(HACK_H) $(INCL)\winX.h
@$(CC) $(cflagsBuild) -Fo$@ ..\win\X11\winval.c
$(O)tile.o: $(SRC)\tile.c $(HACK_H)
$(O)gnaskstr.o: ..\win\gnome\gnaskstr.c ..\win\gnome\gnaskstr.h \
..\win\gnome\gnmain.h
@$(CC) $(cflagsBuild) $(GNOMEINC) -Fo$@ ..\win\gnome\gnaskstr.c

View File

@@ -1889,7 +1889,7 @@ void nethack_enter_nttty()
error("Unable to load nhraykey.dll");
}
}
#endif TTY_GRAPHICS
#endif /* TTY_GRAPHICS */
/* this is used as a printf() replacement when the window
* system isn't initialized yet

15
sys/winnt/stub-pdcscrn.c Normal file
View File

@@ -0,0 +1,15 @@
/*
* Use this stub to insert a needed pragma prior
* to compiling $(PDCWINCON)\pdcscrn.c in the
* PDCurses distribution.
*
* We don't want to ask NetHack builders to
* modify the PDCurses distribution in any way,
* we only ask that they have the original intact
* PDCurses source tree available during the build.
*
*/
#pragma warning(disable : 4996)
#include "pdcscrn.c"

View File

@@ -7,7 +7,7 @@
#ifdef GUISTUB
#ifdef TTYSTUB
#error You can't compile this with both GUISTUB and TTYSTUB defined.
#error You cannot compile this with both GUISTUB and TTYSTUB defined.
#endif
int GUILaunched;
@@ -29,6 +29,7 @@ mswin_destroy_reg()
*/
#ifdef __MINGW32__
extern char default_window_sys[];
extern int mingw_main(int argc, char **argv);
int
main(argc, argv)
@@ -37,10 +38,7 @@ char *argv[];
{
boolean resuming;
sys_early_init();
Strcpy(default_window_sys, "tty");
resuming = pcmain(argc, argv);
moveloop(resuming);
resuming = mingw_main(argc, argv);
nethack_exit(EXIT_SUCCESS);
/*NOTREACHED*/
return 0;

View File

@@ -1962,6 +1962,7 @@ boolean complain;
wp->title = dupstr(str);
wp->menu_information->permi = FALSE;
wp->menu_information->disable_mcolors = TRUE;
(void) X11_select_menu(newwin, PICK_NONE, &menu_list);
X11_destroy_nhwindow(newwin);
}

View File

@@ -1162,7 +1162,7 @@ struct menu *curr_menu;
XtSetArg(args[num_args], nhStr(XtNborderWidth), 0); num_args++;
XtSetArg(args[num_args], nhStr(XtNvertDistance), 0); num_args++;
if (!iflags.use_menu_color
if (!iflags.use_menu_color || wp->menu_information->disable_mcolors
|| !get_menu_coloring(curr->str, &color, &attr))
attr = curr->attr;

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 wintext.c $NHDT-Date: 1450453309 2015/12/18 15:41:49 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.15 $ */
/* 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 $ */
/* Copyright (c) Dean Luick, 1992 */
/* NetHack may be freely redistributed. See license for details. */
@@ -281,11 +281,9 @@ struct xwindow *wp;
#endif
num_args = 0;
XtSetArg(args[num_args], XtNallowShellResize, True);
num_args++;
XtSetArg(args[num_args], XtNallowShellResize, True), num_args++;
XtSetArg(args[num_args], XtNtranslations,
XtParseTranslationTable(text_translations));
num_args++;
XtParseTranslationTable(text_translations)), num_args++;
#ifdef TRANSIENT_TEXT
wp->popup = XtCreatePopupShell("text", transientShellWidgetClass,
@@ -299,8 +297,9 @@ struct xwindow *wp;
XtParseTranslationTable("<Message>WM_PROTOCOLS: delete_text()"));
num_args = 0;
XtSetArg(args[num_args], XtNallowShellResize, True);
num_args++;
XtSetArg(args[num_args], XtNallowShellResize, True), num_args++;
XtSetArg(args[num_args], XtNtranslations,
XtParseTranslationTable(text_translations)), num_args++;
form = XtCreateManagedWidget("form", formWidgetClass, wp->popup, args,
num_args);

View File

@@ -80,6 +80,16 @@ struct window_procs curses_procs = {
genl_can_suspend_yes,
};
/*
* Global variables for curses interface
*/
int term_rows, term_cols; /* size of underlying terminal */
int orig_cursor; /* Preserve initial cursor state */
WINDOW *base_term; /* underlying terminal window */
boolean counting; /* Count window is active */
WINDOW *mapwin, *statuswin, *messagewin; /* Main windows */
/* Track if we're performing an update to the permanent window.
Needed since we aren't using the normal menu functions to handle
the inventory window. */

View File

@@ -371,12 +371,12 @@ curses_message_win_getline(const char *prompt, char *answer, int buffer)
char *tmpstr; /* for free() */
int maxy, maxx; /* linewrap / scroll */
int ch;
WINDOW *win = curses_get_nhwin(MESSAGE_WIN);
int border_space = 0;
int len = 0; /* of answer string */
boolean border = curses_window_has_border(MESSAGE_WIN);
int orig_cursor = curs_set(0);
orig_cursor = curs_set(0);
curses_get_window_size(MESSAGE_WIN, &height, &width);
if (border) {

View File

@@ -0,0 +1,93 @@
# $NHDT-Date: 1524689255 2018/04/25 20:47:35 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.12 $
# Copyright (c) 2018 by Michael Allison
# NetHack may be freely redistributed. See license for details.
# Set all of these or none of them.
#
# bison and flex are the ones found in GnuWin32, which
# is probably the easiest set of these tools to find
# on Windows.
#
#YACC = bison.exe -y
#LEX = flex.exe
#YTABC = y.tab.c
#YTABH = y.tab.h
#LEXYYC = lex.yy.c
SHELL=cmd.exe
default: all
all: tools ../util/dgn_yacc.c ../util/dgn_lex.c
rebuild: clean all
clean:
-del ..\util\dgn_lex.c
-del ..\util\dgn_yacc.c
-del ..\include\dgn_comp.h
tools:
ifneq "$(YACC)" ""
@echo Yacc-alike set to $(YACC)
@echo YTABC set to $(YTABC)
@echo YTABH set to $(YTABH)
endif
ifneq "$(LEX)" ""
@echo Lex-alike set to $(LEX)
@echo LEXYYC set to $(LEXYYC)
endif
#==========================================
# Dungeon Compiler Stuff
#==========================================
../include/dgn_comp.h : ../util/dgn_comp.y
ifeq "$(YACC)" ""
@echo Using pre-built dgn_comp.h
chdir ..\include
copy /y ..\sys\share\dgn_comp.h
copy /b dgn_comp.h+,,
chdir ..\src
else
chdir ..\util
$(YACC) -d dgn_comp.y
copy $(YTABC) $@
copy $(YTABH) ..\include\dgn_comp.h
@del $(YTABC)
@del $(YTABH)
chdir ..\build
endif
../util/dgn_yacc.c : ../util/dgn_comp.y
ifeq "$(YACC)" ""
@echo Using pre-built dgn_yacc.c
chdir ..\util
copy /y ..\sys\share\dgn_yacc.c
copy /b dgn_yacc.c+,,
chdir ..\src
else
chdir ..\util
$(YACC) -d dgn_comp.y
copy $(YTABC) $@
copy $(YTABH) ..\include\dgn_comp.h
@del $(YTABC)
@del $(YTABH)
chdir ..\build
endif
../util/dgn_lex.c: ../util/dgn_comp.l
ifeq "$(LEX)" ""
@echo Using pre-built dgn_lex.c
chdir ..\util
copy /y ..\sys\share\dgn_lex.c
copy /b dgn_lex.c+,,
chdir ..\src
else
chdir ..\util
$(LEX) dgn_comp.l
copy $(LEXYYC) $@
@del $(LEXYYC)
chdir ..\build
endif

View File

@@ -0,0 +1,100 @@
# $NHDT-Date: 1524689255 2018/04/25 20:47:35 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.12 $
# Copyright (c) 2018 by Michael Allison
# NetHack may be freely redistributed. See license for details.
# Set all of these or none of them.
#
# bison and flex are the ones found in GnuWin32, which
# is probably the easiest set of these tools to find
# on Windows.
#
#YACC = bison.exe -y
#LEX = flex.exe
#YTABC = y.tab.c
#YTABH = y.tab.h
#LEXYYC = lex.yy.c
SHELL = cmd.exe
default: all
all: tools ../util/lev_yacc.c ../util/lev_lex.c
rebuild: clean all
clean:
-del ..\util\lev_lex.c
-del ..\util\lev_yacc.c
-del ..\include\lev_comp.h
tools:
ifneq "$(YACC)" ""
@echo Yacc-alike set to "$(YACC)"
@echo YTABC set to $(YTABC)
@echo YTABH set to $(YTABH)
endif
ifneq "$(LEX)" ""
@echo Lex-alike set to "$(LEX)"
@echo LEXYYC set to $(LEXYYC)
endif
#==========================================
# Level Compiler Stuff
#==========================================
../include/lev_comp.h: ../util/lev_comp.y
@echo Yacc-alike set to "$(YACC)"
ifeq "$(YACC)" ""
@echo Using pre-built lev_comp.h
chdir ..\include
copy /y ..\sys\share\lev_comp.h
copy /b lev_comp.h+,,
chdir ..\src
else
@echo Generating lev_yacc.c and lev_comp.h
chdir ..\util
$(YACC) -d lev_comp.y
copy $(YTABC) $@
copy $(YTABH) ..\include\lev_comp.h
@del $(YTABC)
@del $(YTABH)
chdir ..\src
endif
../util/lev_yacc.c: ../util/lev_comp.y
@echo Yacc-alike set to "$(YACC)"
ifeq "$(YACC)" ""
@echo Using pre-built lev_yacc.c
chdir ..\util
copy /y ..\sys\share\lev_yacc.c
copy /b lev_yacc.c+,,
chdir ..\src
else
@echo Generating lev_yacc.c and lev_comp.h
chdir ..\util
$(YACC) -d lev_comp.y
copy $(YTABC) $@
copy $(YTABH) ..\include\lev_comp.h
@del $(YTABC)
@del $(YTABH)
chdir ..\src
endif
../util/lev_lex.c: ../util/lev_comp.l
@echo Lex-alike set to "$(LEX)"
ifeq "$(LEX)" ""
@echo Using pre-built lev_lex.c
chdir ..\util
copy /y ..\sys\share\lev_lex.c
copy /b lev_lex.c+,,
chdir ..\src
else
@echo Generating lev_lex.c
chdir ..\util
$(LEX) lev_comp.l
copy $(LEXYYC) $@
@del $(LEXYYC)
chdir ..\src
endif

View File

@@ -0,0 +1,27 @@
#$NHDT-Date: 1524689255 2018/04/25 20:47:35 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.4 $
# Copyright (c) 2002 by Michael Allison
# NetHack may be freely redistributed. See license for details.
SHELL=cmd.exe
default: all
all: ../win/win32/tiles.bmp
clean:
-del ..\src\win\win32\tiles.bmp
-del ..\win\win32\tiles.bmp
#==========================================
# Building the tiles file tile.bmp
#==========================================
../src/tiles.bmp : ../win/share/monsters.txt ../win/share/objects.txt \
../win/share/other.txt
chdir ..\src
..\util\tile2bmp.exe tiles.bmp
chdir ..\build
..\win\win32\tiles.bmp: ..\src\tiles.bmp
@copy ..\src\tiles.bmp ..\win\win32\tiles.bmp

View File

@@ -31,7 +31,7 @@
<AdditionalDependencies>comctl32.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<Manifest>
<AdditionalManifestFiles>NethackW.exe.manifest;%(AdditionalManifestFiles)</AdditionalManifestFiles>
<AdditionalManifestFiles>$(WinWin32Dir)NethackW.exe.manifest;%(AdditionalManifestFiles)</AdditionalManifestFiles>
</Manifest>
</ItemDefinitionGroup>
<ItemGroup>
@@ -184,4 +184,4 @@
<Target Name="AfterRebuild">
<MSBuild Projects="afternethack.proj" Targets="Build" Properties="Configuration=$(Configuration)" />
</Target>
</Project>
</Project>