From e9ee20bc18e13f302553e546b987717f2bea612e Mon Sep 17 00:00:00 2001 From: PatR Date: Tue, 10 Jul 2018 16:35:50 -0700 Subject: [PATCH] fix github issue #116 - farlook at corpse Fixes #116 Farlook in 3.4.3 used xname() and just described any corpse as "corpse" whether you knew the monster type or not. 3.6.x switched to doname() and describes it as " corpse", but if it isn't there anymore, the fake object contructed for it would have a random corpse type. For corpses and statues, the map glyph provides enough information to give the fake object the same type as the original. For other items that have a monster component (figurines, tins, eggs) it does not, nor for other doname attributes of objects in general (which might be picked up by monsters rather than rot away). So this fixes the rotted-away-corpse-seems-to- become-random-corpse issue but not the general case of the details for a remembered item which isn't there anymore. --- doc/fixes36.2 | 2 ++ src/pager.c | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/doc/fixes36.2 b/doc/fixes36.2 index 5e1d1ad9d..f8af944e2 100644 --- a/doc/fixes36.2 +++ b/doc/fixes36.2 @@ -68,6 +68,8 @@ shopkeeper's position in front of shop door didn't correctly handle bottom attempting to update permanent inventory window during restore had problems with unpaid items (needed shop bill before shop and its shopkeeper were restored) and named fruit +remembered corpse which isn't there anymore would be described by farlook as + the corpse of a random monster type Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository diff --git a/src/pager.c b/src/pager.c index 308c84279..d44efb795 100644 --- a/src/pager.c +++ b/src/pager.c @@ -187,6 +187,10 @@ struct obj **obj_p; otmp->spe = context.current_fruit; /* give it a type */ if (mtmp && has_mcorpsenm(mtmp)) /* mimic as corpse/statue */ otmp->corpsenm = MCORPSENM(mtmp); + else if (otmp->otyp == CORPSE && glyph_is_body(glyph)) + otmp->corpsenm = glyph - GLYPH_BODY_OFF; + else if (otmp->otyp == STATUE && glyph_is_statue(glyph)) + otmp->corpsenm = glyph - GLYPH_STATUE_OFF; } /* if located at adjacent spot, mark it as having been seen up close (corpse type will be known even if dknown is 0, so we don't need a -- 2.49.0