From 508af05e422126ac38b31b157b89699437b5c05c Mon Sep 17 00:00:00 2001 From: PatR Date: Fri, 2 Aug 2019 11:51:26 -0700 Subject: [PATCH] fix #H9084 - teleported boulder left stale screen Report was for Sokoban but it applied anywhere: if a teleported boulder landed in a pit or trap door or hole and flooreffects() used it up (so returned True), rloco() didn't update the location it was teleported from and it appeared not to have moved. (Line of sight was updated to reflect its absence but map spot wasn't redrawn without it.) --- doc/fixes36.3 | 5 ++++- src/teleport.c | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/doc/fixes36.3 b/doc/fixes36.3 index bf9e7a39f..00745966a 100644 --- a/doc/fixes36.3 +++ b/doc/fixes36.3 @@ -1,4 +1,4 @@ -$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.98 $ $NHDT-Date: 1564767725 2019/08/02 17:42:05 $ +$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.99 $ $NHDT-Date: 1564771880 2019/08/02 18:51:20 $ 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, @@ -112,6 +112,9 @@ if a chaotic monk or wizard gets crowned and is given a spellbook rather than been "chosen to steal souls for [Arioch's] glory" for multi-shot shooting by monsters, a typo checked hero's weapon for compatibility with ammo when monster was wielding an elven bow +when a boulder was teleported, if it landed in a pit or trap door or hole its + former location wasn't updated to show that it wasn't there anymore + (noticed in Sokoban but not limited to there) Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository diff --git a/src/teleport.c b/src/teleport.c index 100a74d3b..9c2bd66f5 100644 --- a/src/teleport.c +++ b/src/teleport.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 teleport.c $NHDT-Date: 1561336020 2019/06/24 00:27:00 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.89 $ */ +/* NetHack 3.6 teleport.c $NHDT-Date: 1564771880 2019/08/02 18:51:20 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.92 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Robert Patrick Rankin, 2011. */ /* NetHack may be freely redistributed. See license for details. */ @@ -1450,6 +1450,9 @@ register struct obj *obj; dndest.nhx, dndest.nhy))); if (flooreffects(obj, tx, ty, "fall")) { + /* update old location since flooreffects() couldn't; + unblock_point() for boulder handled by obj_extract_self() */ + newsym(otx, oty); return FALSE; } else if (otx == 0 && oty == 0) { ; /* fell through a trap door; no update of old loc needed */ @@ -1466,6 +1469,7 @@ register struct obj *obj; newsym(otx, oty); /* update old location */ } place_object(obj, tx, ty); + /* note: block_point() for boulder handled by place_object() */ newsym(tx, ty); return TRUE; }