Merge branch 'NetHack-3.6'

This commit is contained in:
nhmall
2019-05-23 00:12:55 -04:00
4 changed files with 23 additions and 31 deletions
+3 -1
View File
@@ -1,4 +1,4 @@
$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.10 $ $NHDT-Date: 1558355176 2019/05/20 12:26:16 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.12 $ $NHDT-Date: 1558562367 2019/05/22 21:59:27 $
This fixes36.3 file is here to capture information about updates in the 3.6.x This fixes36.3 file is here to capture information about updates in the 3.6.x
lineage following the release of 3.6.2 in May 2019. Please note, however, lineage following the release of 3.6.2 in May 2019. Please note, however,
@@ -16,6 +16,8 @@ when examining the map with '/' or ';', picking a symbol which is used for
billing and payment issue as a result of glob coalescing billing and payment issue as a result of glob coalescing
glob pricing did not consider weight properly glob pricing did not consider weight properly
glob shop interaction improved to handle more of the expected scenarios glob shop interaction improved to handle more of the expected scenarios
non-flying steed on Plane of Water would drown when air bubble moved hero
xans fly, but could not reach your feet if you flew
Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository
+1 -2
View File
@@ -1202,9 +1202,8 @@ register struct attack *mattk;
/* This case is too obvious to ignore, but Nethack is not in /* This case is too obvious to ignore, but Nethack is not in
* general very good at considering height--most short monsters * general very good at considering height--most short monsters
* still _can_ attack you when you're flying or mounted. * still _can_ attack you when you're flying or mounted.
* [FIXME: why can't a flying attacker overcome this?]
*/ */
if (u.usteed || Levitation || Flying) { if ((u.usteed || Levitation || Flying) && !is_flyer(mtmp->data)) {
pline("%s tries to reach your %s %s!", Monst_name, sidestr, leg); pline("%s tries to reach your %s %s!", Monst_name, sidestr, leg);
dmg = 0; dmg = 0;
} else if (mtmp->mcan) { } else if (mtmp->mcan) {
+16 -25
View File
@@ -1,4 +1,4 @@
/* NetHack 3.6 mkmaze.c $NHDT-Date: 1555022325 2019/04/11 22:38:45 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.68 $ */ /* NetHack 3.6 mkmaze.c $NHDT-Date: 1558562368 2019/05/22 21:59:28 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.70 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Pasi Kallinen, 2018. */ /*-Copyright (c) Pasi Kallinen, 2018. */
/* NetHack may be freely redistributed. See license for details. */ /* NetHack may be freely redistributed. See license for details. */
@@ -495,7 +495,7 @@ fixup_special()
case LR_UPSTAIR: case LR_UPSTAIR:
case LR_DOWNSTAIR: case LR_DOWNSTAIR:
place_it: place_it:
place_lregion(r->inarea.x1, r->inarea.y1, r->inarea.x2, place_lregion(r->inarea.x1, r->inarea.y1, r->inarea.x2,
r->inarea.y2, r->delarea.x1, r->delarea.y1, r->inarea.y2, r->delarea.x1, r->delarea.y1,
r->delarea.x2, r->delarea.y2, r->rtype, &lev); r->delarea.x2, r->delarea.y2, r->rtype, &lev);
@@ -1387,14 +1387,15 @@ STATIC_DCL void FDECL(mv_bubble, (struct bubble *, int, int, BOOLEAN_P));
void void
movebubbles() movebubbles()
{ {
static boolean up;
struct bubble *b;
int x, y, i, j;
struct trap *btrap;
static const struct rm water_pos = { cmap_to_glyph(S_water), WATER, 0, 0, static const struct rm water_pos = { cmap_to_glyph(S_water), WATER, 0, 0,
0, 0, 0, 0, 0, 0 }; 0, 0, 0, 0, 0, 0 };
static const struct rm air_pos = { cmap_to_glyph(S_cloud), AIR, 0, 0, 0, static const struct rm air_pos = { cmap_to_glyph(S_cloud), AIR, 0, 0, 0,
1, 0, 0, 0, 0 }; 1, 0, 0, 0, 0 };
static boolean up = FALSE;
struct bubble *b;
struct container *cons;
struct trap *btrap;
int x, y, i, j;
/* set up the portal the first time bubbles are moved */ /* set up the portal the first time bubbles are moved */
if (!g.wportal) if (!g.wportal)
@@ -1425,9 +1426,6 @@ movebubbles()
/* pick up objects, monsters, hero, and traps */ /* pick up objects, monsters, hero, and traps */
if (OBJ_AT(x, y)) { if (OBJ_AT(x, y)) {
struct obj *olist = (struct obj *) 0, *otmp; struct obj *olist = (struct obj *) 0, *otmp;
struct container *cons =
(struct container *) alloc(
sizeof(struct container));
while ((otmp = g.level.objects[x][y]) != 0) { while ((otmp = g.level.objects[x][y]) != 0) {
remove_object(otmp); remove_object(otmp);
@@ -1436,6 +1434,7 @@ movebubbles()
olist = otmp; olist = otmp;
} }
cons = (struct container *) alloc(sizeof *cons);
cons->x = x; cons->x = x;
cons->y = y; cons->y = y;
cons->what = CONS_OBJ; cons->what = CONS_OBJ;
@@ -1445,10 +1444,8 @@ movebubbles()
} }
if (MON_AT(x, y)) { if (MON_AT(x, y)) {
struct monst *mon = m_at(x, y); struct monst *mon = m_at(x, y);
struct container *cons =
(struct container *) alloc(
sizeof(struct container));
cons = (struct container *) alloc(sizeof *cons);
cons->x = x; cons->x = x;
cons->y = y; cons->y = y;
cons->what = CONS_MON; cons->what = CONS_MON;
@@ -1466,10 +1463,7 @@ movebubbles()
mon->mx = mon->my = 0; mon->mx = mon->my = 0;
} }
if (!u.uswallow && x == u.ux && y == u.uy) { if (!u.uswallow && x == u.ux && y == u.uy) {
struct container *cons = cons = (struct container *) alloc(sizeof *cons);
(struct container *) alloc(
sizeof(struct container));
cons->x = x; cons->x = x;
cons->y = y; cons->y = y;
cons->what = CONS_HERO; cons->what = CONS_HERO;
@@ -1479,10 +1473,7 @@ movebubbles()
b->cons = cons; b->cons = cons;
} }
if ((btrap = t_at(x, y)) != 0) { if ((btrap = t_at(x, y)) != 0) {
struct container *cons = cons = (struct container *) alloc(sizeof *cons);
(struct container *) alloc(
sizeof(struct container));
cons->x = x; cons->x = x;
cons->y = y; cons->y = y;
cons->what = CONS_TRAP; cons->what = CONS_TRAP;
@@ -1875,21 +1866,21 @@ boolean ini;
} }
case CONS_HERO: { case CONS_HERO: {
struct monst *mtmp = m_at(cons->x, cons->y);
int ux0 = u.ux, uy0 = u.uy; int ux0 = u.ux, uy0 = u.uy;
/* change u.ux0 and u.uy0? */ u_on_newpos(cons->x, cons->y);
u.ux = cons->x;
u.uy = cons->y;
newsym(ux0, uy0); /* clean up old position */ newsym(ux0, uy0); /* clean up old position */
if (MON_AT(cons->x, cons->y)) { if (mtmp) {
mnexto(m_at(cons->x, cons->y)); mnexto(mtmp);
} }
break; break;
} }
case CONS_TRAP: { case CONS_TRAP: {
struct trap *btrap = (struct trap *) cons->list; struct trap *btrap = (struct trap *) cons->list;
btrap->tx = cons->x; btrap->tx = cons->x;
btrap->ty = cons->y; btrap->ty = cons->y;
break; break;
+3 -3
View File
@@ -372,7 +372,7 @@ rc=Rc
# Visual Studio we are using. We set VSVER to 0000 to flag any version that # Visual Studio we are using. We set VSVER to 0000 to flag any version that
# is too old or untested. # is too old or untested.
# #
#NMAKE version 1414264330 is distributed with VS 15.7.5 #NMAKE version 1421277022 is distributed with latest VS 2019
#!MESSAGE $(MAKEFLAGS) #!MESSAGE $(MAKEFLAGS)
#!MESSAGE $(MAKEDIR) #!MESSAGE $(MAKEDIR)
@@ -396,9 +396,9 @@ VSVER=2013
VSVER=2015 VSVER=2015
!ELSEIF ($(MAKEVERSION) > 1411000000) && ($(MAKEVERSION) < 1416270312) !ELSEIF ($(MAKEVERSION) > 1411000000) && ($(MAKEVERSION) < 1416270312)
VSVER=2017 VSVER=2017
!ELSEIF ($(MAKEVERSION) > 1416270311) && ($(MAKEVERSION) < 1420275082) !ELSEIF ($(MAKEVERSION) > 1416270311) && ($(MAKEVERSION) < 1421277023)
VSVER=$(VSNEWEST) VSVER=$(VSNEWEST)
!ELSEIF ($(MAKEVERSION) > 1420275081) !ELSEIF ($(MAKEVERSION) > 1421277022)
VSVER=2999 #untested future version VSVER=2999 #untested future version
!ENDIF !ENDIF