diff --git a/.travis.yml b/.travis.yml index e2c522f80..a2373f078 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,6 +12,12 @@ matrix: - os: linux env: HINTS=linux-x11 compiler: gcc + addons: + apt: + packages: + - libx11-dev + - libxaw7-dev + - xfonts-utils script: "cd sys/unix/ && sh setup.sh hints/$HINTS && cd ../../ && make install" - os: linux env: HINTS=linux-qt5 @@ -19,6 +25,9 @@ matrix: addons: apt: packages: + - libx11-dev + - libxaw7-dev + - xfonts-utils - qtbase5-dev - qtmultimedia5-dev - qtbase5-dev-tools diff --git a/doc/fixes36.3 b/doc/fixes36.3 index ea02fdf39..5f8b0815a 100644 --- a/doc/fixes36.3 +++ b/doc/fixes36.3 @@ -1,4 +1,4 @@ -$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.102 $ $NHDT-Date: 1565574993 2019/08/12 01:56:33 $ +$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.103 $ $NHDT-Date: 1565833748 2019/08/15 01:49:08 $ 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, @@ -120,6 +120,11 @@ fix typo in end_of_input() present since 3.6.0 that would prevent compilation for NOSAVEONHANGUP+INSURANCE configuration when a status condition becomes fatal, keep it listed as an active condition during disclosure and/or dumplog rather than having it already reset +when a shape-shifted sandestin was turned to stone, it died and reverted to + sandestin form with 0 HP; that confused known_hitum() because + sandestins are immune to stoning; net result was monster dying twice, + triggering "dmonsfree: N removed doesn't match N+1 pending" warning; + instead of dying, make it revert to sandestin form with full health Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository diff --git a/src/mon.c b/src/mon.c index b04fb07c0..3c2278c5c 100644 --- a/src/mon.c +++ b/src/mon.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 mon.c $NHDT-Date: 1560791350 2019/06/17 17:09:10 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.294 $ */ +/* NetHack 3.6 mon.c $NHDT-Date: 1565833749 2019/08/15 01:49:09 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.296 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Derek S. Ray, 2015. */ /* NetHack may be freely redistributed. See license for details. */ @@ -1361,8 +1361,8 @@ long flag; thrudoor = TRUE; } -nexttry: /* eels prefer the water, but if there is no water nearby, - they will crawl over land */ + nexttry: /* eels prefer the water, but if there is no water nearby, + they will crawl over land */ if (mon->mconf) { flag |= ALLOW_ALL; flag &= ~NOTONL; @@ -2183,7 +2183,9 @@ struct monst *mdef; xchar x = mdef->mx, y = mdef->my; boolean wasinside = FALSE; - if (!vamp_stone(mdef)) /* vampshifter reverts to vampire */ + /* vampshifter reverts to vampire; + 3.6.3: also used to unshift shape-changed sandestin */ + if (!vamp_stone(mdef)) return; /* we have to make the statue before calling mondead, to be able to @@ -2452,7 +2454,7 @@ int xkill_flags; /* 1: suppress message, 2: suppress corpse, 4: pacifist */ /* monster is gone, corpse or other object might now be visible */ newsym(x, y); -cleanup: + cleanup: /* punish bad behaviour */ if (is_human(mdat) && (!always_hostile(mdat) && mtmp->malign <= 0) @@ -2586,6 +2588,18 @@ struct monst *mtmp; newsym(mtmp->mx, mtmp->my); return FALSE; /* didn't petrify */ } + } else if (mtmp->cham >= LOW_PM + && (mons[mtmp->cham].mresists & MR_STONE)) { + /* sandestins are stoning-immune so if hit by stoning damage + they revert to innate shape rather than become a statue */ + mtmp->mcanmove = 1; + mtmp->mfrozen = 0; + if (mtmp->mhpmax <= 0) + mtmp->mhpmax = 10; + mtmp->mhp = mtmp->mhpmax; + (void) newcham(mtmp, &mons[mtmp->cham], FALSE, TRUE); + newsym(mtmp->mx, mtmp->my); + return FALSE; /* didn't petrify */ } return TRUE; } @@ -2686,7 +2700,7 @@ struct monst *mon; mtmp->mstate |= MON_OBLITERATE; mongone(mtmp); /* places in the code might still reference mtmp->mx, mtmp->my */ - /* mtmp->mx = mtmp->my = 0; */ + /* mtmp->mx = mtmp->my = 0; */ rloc_to(mon, mx, my); /* note: mon, not mtmp */ /* last resort - migrate mon to the next plane */