From 62cfbdc4a09199988bb4aaf4f19715e21115c23a Mon Sep 17 00:00:00 2001 From: Alex Smith Date: Wed, 29 Apr 2026 04:16:56 +0100 Subject: [PATCH 1/3] Fix the new rolling boulder traps for when monsters step on them The traps don't disappear when stepped on any more; that should be true even when monsters step on them. (This bug was reported privately to me via IRC, rather than via the devteam's email address, so there isn't a ticket number to close.) --- src/trap.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/trap.c b/src/trap.c index a97706fe8..0358e3520 100644 --- a/src/trap.c +++ b/src/trap.c @@ -2698,9 +2698,6 @@ trapeffect_rolling_boulder_trap( trap->tseen = TRUE; if (DEADMONSTER(mtmp)) trapkilled = TRUE; - } else { - deltrap(trap); - newsym(mtmp->mx, mtmp->my); } return trapkilled ? Trap_Killed_Mon : mtmp->mtrapped ? Trap_Caught_Mon : Trap_Effect_Finished; From a3fdf22153e73206b447e98bdc3784a777039635 Mon Sep 17 00:00:00 2001 From: Pasi Kallinen Date: Wed, 29 Apr 2026 15:43:55 +0300 Subject: [PATCH 2/3] Fix monster postmove moving off-map monster --- src/monmove.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/monmove.c b/src/monmove.c index fe3040da3..773fa3011 100644 --- a/src/monmove.c +++ b/src/monmove.c @@ -1511,6 +1511,8 @@ postmov( if (mtmp->mx) newsym(mtmp->mx, mtmp->my); return MMOVE_DIED; /* it died */ + } else if (mon_offmap(mtmp)) { + return MMOVE_DONE; } ptr = mtmp->data; /* in case mintrap() caused polymorph */ From 0be07d2816a5be9918525b85853c59b91a308bd2 Mon Sep 17 00:00:00 2001 From: Pasi Kallinen Date: Wed, 29 Apr 2026 15:45:12 +0300 Subject: [PATCH 3/3] Fix migrating object trying to newsym invalid location --- src/teleport.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/teleport.c b/src/teleport.c index 48fa7da78..3384fa204 100644 --- a/src/teleport.c +++ b/src/teleport.c @@ -2139,9 +2139,10 @@ rloco(struct obj *obj) svd.dndest.nhx, svd.dndest.nhy))); if (flooreffects(obj, tx, ty, "fall")) { - /* update old location since flooreffects() couldn't; + /* update old location (if any) since flooreffects() couldn't; unblock_point() for boulder handled by obj_extract_self() */ - newsym(otx, oty); + if (!(otx == 0 && oty == 0)) + newsym(otx, oty); return FALSE; } else if (otx == 0 && oty == 0) { ; /* fell through a trap door; no update of old loc needed */