diff --git a/doc/fixes36.3 b/doc/fixes36.3 index 07257e74b..93b708797 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,8 @@ 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 +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 12f9f7a7a..5265743e9 100644 --- a/src/mhitu.c +++ b/src/mhitu.c @@ -1202,9 +1202,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) { diff --git a/src/mkmaze.c b/src/mkmaze.c index e1c176a94..f835d5ca1 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. */ @@ -495,7 +495,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); @@ -1387,14 +1387,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 (!g.wportal) @@ -1425,9 +1426,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 = g.level.objects[x][y]) != 0) { remove_object(otmp); @@ -1436,6 +1434,7 @@ movebubbles() olist = otmp; } + cons = (struct container *) alloc(sizeof *cons); cons->x = x; cons->y = y; cons->what = CONS_OBJ; @@ -1445,10 +1444,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; @@ -1466,10 +1463,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; @@ -1479,10 +1473,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; @@ -1875,21 +1866,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; diff --git a/sys/winnt/Makefile.msc b/sys/winnt/Makefile.msc index 04407f38c..9dd5ea594 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