From d541f108f457d09b74be28d473f5118520d7f18b Mon Sep 17 00:00:00 2001 From: PatR Date: Wed, 22 May 2019 14:59:43 -0700 Subject: [PATCH 1/3] fix #H8769 - steed drowns on Plane of Water Air bubble movement on the Plane of Water manipulated directly when changing hero's coordinates, leaving steed with old coordinates, resulting in dunking it when the old spot switched from air to water. Switch to u_on_newpos() which moves the steed with the hero and also handles clipping when the screen is too small to show the whole map at once. --- doc/fixes36.3 | 3 ++- src/mkmaze.c | 41 ++++++++++++++++------------------------- 2 files changed, 18 insertions(+), 26 deletions(-) diff --git a/doc/fixes36.3 b/doc/fixes36.3 index 07257e74b..2293f0c78 100644 --- a/doc/fixes36.3 +++ b/doc/fixes36.3 @@ -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 lineage following the release of 3.6.2 in May 2019. Please note, however, @@ -16,6 +16,7 @@ when examining the map with '/' or ';', picking a symbol which is used for billing and payment issue as a result of glob coalescing glob pricing did not consider weight properly 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 Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository diff --git a/src/mkmaze.c b/src/mkmaze.c index 897830243..2a8dc226c 100644 --- a/src/mkmaze.c +++ b/src/mkmaze.c @@ -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) Pasi Kallinen, 2018. */ /* NetHack may be freely redistributed. See license for details. */ @@ -503,7 +503,7 @@ fixup_special() case LR_UPSTAIR: case LR_DOWNSTAIR: - place_it: + place_it: place_lregion(r->inarea.x1, r->inarea.y1, r->inarea.x2, r->inarea.y2, r->delarea.x1, r->delarea.y1, r->delarea.x2, r->delarea.y2, r->rtype, &lev); @@ -1399,14 +1399,15 @@ STATIC_DCL void FDECL(mv_bubble, (struct bubble *, int, int, BOOLEAN_P)); void 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, 0, 0, 0, 0, 0, 0 }; static const struct rm air_pos = { cmap_to_glyph(S_cloud), AIR, 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 */ if (!wportal) @@ -1437,9 +1438,6 @@ movebubbles() /* pick up objects, monsters, hero, and traps */ if (OBJ_AT(x, y)) { struct obj *olist = (struct obj *) 0, *otmp; - struct container *cons = - (struct container *) alloc( - sizeof(struct container)); while ((otmp = level.objects[x][y]) != 0) { remove_object(otmp); @@ -1448,6 +1446,7 @@ movebubbles() olist = otmp; } + cons = (struct container *) alloc(sizeof *cons); cons->x = x; cons->y = y; cons->what = CONS_OBJ; @@ -1457,10 +1456,8 @@ movebubbles() } if (MON_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->y = y; cons->what = CONS_MON; @@ -1478,10 +1475,7 @@ movebubbles() mon->mx = mon->my = 0; } if (!u.uswallow && x == u.ux && y == u.uy) { - struct container *cons = - (struct container *) alloc( - sizeof(struct container)); - + cons = (struct container *) alloc(sizeof *cons); cons->x = x; cons->y = y; cons->what = CONS_HERO; @@ -1491,10 +1485,7 @@ movebubbles() b->cons = cons; } if ((btrap = t_at(x, y)) != 0) { - struct container *cons = - (struct container *) alloc( - sizeof(struct container)); - + cons = (struct container *) alloc(sizeof *cons); cons->x = x; cons->y = y; cons->what = CONS_TRAP; @@ -1887,21 +1878,21 @@ boolean ini; } case CONS_HERO: { + struct monst *mtmp = m_at(cons->x, cons->y); int ux0 = u.ux, uy0 = u.uy; - /* change u.ux0 and u.uy0? */ - u.ux = cons->x; - u.uy = cons->y; + u_on_newpos(cons->x, cons->y); newsym(ux0, uy0); /* clean up old position */ - if (MON_AT(cons->x, cons->y)) { - mnexto(m_at(cons->x, cons->y)); + if (mtmp) { + mnexto(mtmp); } break; } case CONS_TRAP: { struct trap *btrap = (struct trap *) cons->list; + btrap->tx = cons->x; btrap->ty = cons->y; break; From 564dcd657600f4e3f4cfa55f1a6cdee6005c4234 Mon Sep 17 00:00:00 2001 From: nhmall Date: Wed, 22 May 2019 18:27:03 -0400 Subject: [PATCH 2/3] xans fly, but could not reach your feet if you flew --- doc/fixes36.3 | 1 + src/mhitu.c | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/fixes36.3 b/doc/fixes36.3 index 2293f0c78..93b708797 100644 --- a/doc/fixes36.3 +++ b/doc/fixes36.3 @@ -17,6 +17,7 @@ billing and payment issue as a result of glob coalescing glob pricing did not consider weight properly 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 diff --git a/src/mhitu.c b/src/mhitu.c index db9245803..a175daeab 100644 --- a/src/mhitu.c +++ b/src/mhitu.c @@ -1206,9 +1206,8 @@ register struct attack *mattk; /* This case is too obvious to ignore, but Nethack is not in * general very good at considering height--most short monsters * 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); dmg = 0; } else if (mtmp->mcan) { From 23c613c42c19c25eb6354a0aee5376f552cca078 Mon Sep 17 00:00:00 2001 From: nhmall Date: Thu, 23 May 2019 00:11:18 -0400 Subject: [PATCH 3/3] vs 2019 update bit --- sys/winnt/Makefile.msc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/winnt/Makefile.msc b/sys/winnt/Makefile.msc index 74f5fe812..38502bfd4 100644 --- a/sys/winnt/Makefile.msc +++ b/sys/winnt/Makefile.msc @@ -372,7 +372,7 @@ rc=Rc # 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 +#NMAKE version 1421277022 is distributed with latest VS 2019 #!MESSAGE $(MAKEFLAGS) #!MESSAGE $(MAKEDIR) @@ -396,9 +396,9 @@ VSVER=2013 VSVER=2015 !ELSEIF ($(MAKEVERSION) > 1411000000) && ($(MAKEVERSION) < 1416270312) VSVER=2017 -!ELSEIF ($(MAKEVERSION) > 1416270311) && ($(MAKEVERSION) < 1420275082) +!ELSEIF ($(MAKEVERSION) > 1416270311) && ($(MAKEVERSION) < 1421277023) VSVER=$(VSNEWEST) -!ELSEIF ($(MAKEVERSION) > 1420275081) +!ELSEIF ($(MAKEVERSION) > 1421277022) VSVER=2999 #untested future version !ENDIF