diff --git a/doc/fixes36.3 b/doc/fixes36.3 index f51350117..734272ffa 100644 --- a/doc/fixes36.3 +++ b/doc/fixes36.3 @@ -1,4 +1,4 @@ -$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.108 $ $NHDT-Date: 1567418344 2019/09/02 09:59:04 $ +$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.110 $ $NHDT-Date: 1567805962 2019/09/06 21:39:22 $ 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, @@ -136,6 +136,9 @@ have 'O' update persistent inventory window if 'implicit_uncursed', when spellcasting monster aimed at wrong spot due to not being able to see invisible hero, feedback could be erroneous if hero could see self [messages used 'if (Invisible)' test where 'if (Invis)' was meant] +prevent impossible when guard tries to relocate a monster on a full level +hallucination provides partial protection from passive gaze counterattack + against hero's attack; check for that before checking for free action Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository diff --git a/src/sp_lev.c b/src/sp_lev.c index ffb966671..f3abad22d 100644 --- a/src/sp_lev.c +++ b/src/sp_lev.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 sp_lev.c $NHDT-Date: 1553787633 2019/03/28 15:40:33 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.111 $ */ +/* NetHack 3.6 sp_lev.c $NHDT-Date: 1567805254 2019/09/06 21:27:34 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.117 $ */ /* Copyright (c) 1989 by Jean-Christophe Collet */ /* NetHack may be freely redistributed. See license for details. */ @@ -1916,7 +1916,7 @@ struct mkroom *croom; otmp->owt = weight(otmp); } - /* contents */ + /* contents (of a container or monster's inventory) */ if (o->containment & SP_OBJ_CONTENT) { if (!g.container_idx) { if (!g.invent_carrying_monster) { @@ -1928,27 +1928,10 @@ struct mkroom *croom; outside the des-file. Maybe another data file that determines what inventories monsters get by default? */ + ; /* ['otmp' remains on floor] */ } else { - int ci; - struct obj *objcheck = otmp; - int inuse = -1; - - for (ci = 0; ci < g.container_idx; ci++) - if (g.container_obj[ci] == objcheck) - inuse = ci; remove_object(otmp); - if (mpickobj(g.invent_carrying_monster, otmp)) { - if (inuse > -1) { - impossible( - "container given to monster was merged or deallocated."); - for (ci = inuse; ci < g.container_idx - 1; ci++) - g.container_obj[ci] = g.container_obj[ci + 1]; - g.container_obj[g.container_idx] = NULL; - g.container_idx--; - } - /* we lost track of it. */ - return; - } + (void) mpickobj(g.invent_carrying_monster, otmp); } } else { struct obj *cobj = g.container_obj[g.container_idx - 1]; diff --git a/src/uhitm.c b/src/uhitm.c index 6c536b61f..42259ec82 100644 --- a/src/uhitm.c +++ b/src/uhitm.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 uhitm.c $NHDT-Date: 1562876956 2019/07/11 20:29:16 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.211 $ */ +/* NetHack 3.6 uhitm.c $NHDT-Date: 1567805813 2019/09/06 21:36:53 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.212 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Robert Patrick Rankin, 2012. */ /* NetHack may be freely redistributed. See license for details. */ @@ -2849,13 +2849,16 @@ boolean wep_was_destroyed; if (ureflects("%s gaze is reflected by your %s.", s_suffix(Monnam(mon)))) { ; - } else if (Free_action) { - You("momentarily stiffen under %s gaze!", - s_suffix(mon_nam(mon))); } else if (Hallucination && rn2(4)) { + /* [it's the hero who should be getting paralyzed + and isn't; this message describes the monster's + reaction rather than the hero's escape] */ pline("%s looks %s%s.", Monnam(mon), !rn2(2) ? "" : "rather ", !rn2(2) ? "numb" : "stupified"); + } else if (Free_action) { + You("momentarily stiffen under %s gaze!", + s_suffix(mon_nam(mon))); } else { You("are frozen by %s gaze!", s_suffix(mon_nam(mon))); nomul((ACURR(A_WIS) > 12 || rn2(4)) ? -tmp : -127); diff --git a/src/vault.c b/src/vault.c index 485a322fb..1982a6271 100644 --- a/src/vault.c +++ b/src/vault.c @@ -79,7 +79,8 @@ boolean forceshow; } else if (!in_fcorridor(grd, u.ux, u.uy)) { if (mtmp->mtame) yelp(mtmp); - (void) rloc(mtmp, FALSE); + if (!rloc(mtmp, TRUE)) + m_into_limbo(mtmp); } } lev = &levl[fcx][fcy];