fix #H4094 - shopkeeper "it" message
Most shop messages use shkname() to give the shopkeeper's accurate name (or hallucinatory substitute) even if he or she can't be seen. stolen_value() was using mon_nam(), which calls shkname() if the monster is a shopkeeper who can be seen, but produces "it" when not seen. Change it to use shkname() like the rest of the shop routines. Also, replace Monnam() (quite a few instances) with new Shknam() to do the same duty when the name is at the start of a sentence. There was also a very obscure bug where if you could see two shopkeepers at the same time, you could probe the map one spot at a time with repeated use of the 'p' command to locate monsters in general and other shopkeepers in particular. Very tedious and not very useful, but now fixed.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 extern.h $NHDT-Date: 1454033598 2016/01/29 02:13:18 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.543 $ */
|
||||
/* NetHack 3.6 extern.h $NHDT-Date: 1454485430 2016/02/03 07:43:50 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.545 $ */
|
||||
/* Copyright (c) Steve Creps, 1988. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -2147,7 +2147,8 @@ E void FDECL(free_eshk, (struct monst *));
|
||||
E void FDECL(stock_room, (int, struct mkroom *));
|
||||
E boolean FDECL(saleable, (struct monst *, struct obj *));
|
||||
E int FDECL(get_shop_item, (int));
|
||||
E const char *FDECL(shkname, (struct monst *));
|
||||
E char *FDECL(Shknam, (struct monst *));
|
||||
E char *FDECL(shkname, (struct monst *));
|
||||
E boolean FDECL(shkname_is_pname, (struct monst *));
|
||||
E boolean FDECL(is_izchak, (struct monst *, BOOLEAN_P));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user