@@ -1270,7 +1270,8 @@ unsigned doname_flags;
1270
1270
boolean ispoisoned = FALSE, istainted = FALSE,
1271
1271
with_price = (doname_flags & DONAME_WITH_PRICE ) != 0 ,
1272
1272
vague_quan = (doname_flags & DONAME_VAGUE_QUAN ) != 0 ,
1273
- weightshown = FALSE;
1273
+ weightshown = FALSE,
1274
+ isyours = carried (obj );
1274
1275
boolean known , dknown , cknown , bknown , lknown ;
1275
1276
long orig_opknwn = obj -> oprops_known ;
1276
1277
int omndx = obj -> corpsenm ;
@@ -1279,6 +1280,9 @@ unsigned doname_flags;
1279
1280
the start of prefix instead of the
1280
1281
end (Strcat is used on the end) */
1281
1282
register char * bp = xname (obj );
1283
+ struct monst * owner = isyours ? & youmonst
1284
+ : mcarried (obj ) ? obj -> ocarry
1285
+ : (struct monst * ) 0 ;
1282
1286
1283
1287
if (iflags .override_ID ) {
1284
1288
known = dknown = cknown = bknown = lknown = TRUE;
@@ -1426,6 +1430,7 @@ unsigned doname_flags;
1426
1430
* change to "(something; slippery)" */
1427
1431
Strcpy (rindex (bp , ')' ), "; slippery)" );
1428
1432
} else if (obj -> otyp == MUMMIFIED_HAND ) {
1433
+ /* monsters don't wear these, so assuming it's yours is fine */
1429
1434
if (Glib )
1430
1435
Sprintf (rindex (bp , ' ' ), " (merged to your left %s; slippery)" ,
1431
1436
body_part (ARM ));
@@ -1512,7 +1517,7 @@ unsigned doname_flags;
1512
1517
if (obj -> owornmask & W_RINGL )
1513
1518
Strcat (bp , " (on left " );
1514
1519
if (obj -> owornmask & W_RING ) {
1515
- Strcat (bp , body_part ( HAND ));
1520
+ Strcat (bp , mbodypart ( owner , HAND ));
1516
1521
Strcat (bp , ")" );
1517
1522
}
1518
1523
if (known && objects [obj -> otyp ].oc_charged ) {
@@ -1555,7 +1560,7 @@ unsigned doname_flags;
1555
1560
case CHAIN_CLASS :
1556
1561
add_erosion_words (obj , prefix );
1557
1562
if (obj -> owornmask & W_BALL )
1558
- Strcat ( bp , " (chained to you)" );
1563
+ Sprintf ( eos ( bp ) , " (chained to %s)" , isyours ? "you" : mon_nam ( owner ) );
1559
1564
break ;
1560
1565
case GEM_CLASS :
1561
1566
if (obj -> otyp == SLING_BULLET )
@@ -1567,7 +1572,7 @@ unsigned doname_flags;
1567
1572
if (obj -> quan != 1L ) {
1568
1573
Strcat (bp , " (wielded)" );
1569
1574
} else {
1570
- const char * hand_s = body_part ( HAND );
1575
+ const char * hand_s = mbodypart ( owner , HAND );
1571
1576
1572
1577
if (bimanual (obj ))
1573
1578
hand_s = makeplural (hand_s );
@@ -1582,7 +1587,7 @@ unsigned doname_flags;
1582
1587
}
1583
1588
if (obj -> owornmask & W_SWAPWEP ) {
1584
1589
if (u .twoweap ) {
1585
- Sprintf (eos (bp ), " (wielded in other %s)" , body_part ( HAND ));
1590
+ Sprintf (eos (bp ), " (wielded in other %s)" , mbodypart ( owner , HAND ));
1586
1591
} else {
1587
1592
Strcat (bp , " (alternate weapon; not wielded)" );
1588
1593
}
0 commit comments