Using 'P' to put on armour or 'W' to wear a ring
resulted in "That is a silly thing to [put on | wear]". But those two cases really aren't so "silly", so adjust the messages to better explain why the game objected to the action and point new players at the appropriate command. Also adds a cmdassist message for the case where 'R' or 'T' have no appropriate items to point new players to the correct command. (That can be turned off with !cmdassist, of course.) Also adds a const to a recent shade patch by request.
This commit is contained in:
@@ -433,4 +433,5 @@ applying a eucalyptus leaf produces a whistle effect (Malcolm Ryan)
|
||||
hobbits can wear elven mithril-coats
|
||||
eating mimics now has an hallucination effect
|
||||
prefix pickup command with 'm' to force menu of all objects present
|
||||
|
||||
provide feedback which states the correct command when players try to use
|
||||
'R' or 'P' for armour, or use 'W' or 'T' for accessories
|
||||
|
||||
@@ -993,7 +993,8 @@ dotakeoff()
|
||||
uskin->otyp >= GRAY_DRAGON_SCALES ?
|
||||
"dragon scales are" : "dragon scale mail is");
|
||||
else
|
||||
pline("Not wearing any armor.");
|
||||
pline("Not wearing any armor.%s", iflags.cmdassist ?
|
||||
" Use 'R' command to remove accessories." : "");
|
||||
return 0;
|
||||
}
|
||||
if (armorpieces > 1)
|
||||
@@ -1037,7 +1038,8 @@ doremring()
|
||||
MOREACC(ublindf);
|
||||
|
||||
if(!Accessories) {
|
||||
pline("Not wearing any accessories.");
|
||||
pline("Not wearing any accessories.%s", iflags.cmdassist ?
|
||||
" Use 'T' command to take off non-accessories." : "");
|
||||
return(0);
|
||||
}
|
||||
if (Accessories != 1) otmp = getobj(accessories, "remove");
|
||||
|
||||
36
src/invent.c
36
src/invent.c
@@ -20,6 +20,7 @@ STATIC_DCL boolean FDECL(putting_on, (const char *));
|
||||
STATIC_PTR int FDECL(ckunpaid,(struct obj *));
|
||||
STATIC_PTR int FDECL(ckvalidcat,(struct obj *));
|
||||
static char FDECL(display_pickinv, (const char *,BOOLEAN_P, long *));
|
||||
STATIC_DCL void FDECL(silly_thing, (const char *,const char *,struct obj *));
|
||||
#ifdef OVLB
|
||||
STATIC_DCL boolean FDECL(this_type_only, (struct obj *));
|
||||
STATIC_DCL void NDECL(dounpaid);
|
||||
@@ -1058,7 +1059,7 @@ register const char *let,*word;
|
||||
&& !(usegold && otmp->oclass == COIN_CLASS)
|
||||
#endif
|
||||
) {
|
||||
pline(silly_thing_to, word);
|
||||
silly_thing(let, word, otmp);
|
||||
return((struct obj *)0);
|
||||
}
|
||||
if(allowcnt == 2) { /* cnt given */
|
||||
@@ -1077,6 +1078,39 @@ register const char *let,*word;
|
||||
return(otmp);
|
||||
}
|
||||
|
||||
STATIC_OVL void
|
||||
silly_thing(let, word, otmp)
|
||||
const char *let, *word;
|
||||
struct obj *otmp;
|
||||
{
|
||||
int otyp = otmp->otyp;
|
||||
boolean domsg = FALSE;
|
||||
const char *s1, *s2, *s3;
|
||||
const char *what = (otmp->quan > 1L) ? "one of those" : "that";
|
||||
if ((!strcmp(word, "wear") || !strcmp(word, "take off")) &&
|
||||
(otmp->oclass == RING_CLASS ||
|
||||
(otmp->oclass == FOOD_CLASS && otmp->otyp == MEAT_RING) ||
|
||||
(otmp->oclass == TOOL_CLASS &&
|
||||
(otyp == BLINDFOLD || otyp == TOWEL || otyp == LENSES)))) {
|
||||
if (!strcmp(word, "wear")) {
|
||||
s1 = "P"; s2 = "put"; s3 = " on"; domsg = TRUE;
|
||||
} else {
|
||||
s1 = "R"; s2 = "remove"; s3 = ""; domsg = TRUE;
|
||||
}
|
||||
} else if ((!strcmp(word, "put on") || !strcmp(word, "remove")) &&
|
||||
(otmp->oclass == ARMOR_CLASS)) {
|
||||
if (!strcmp(word, "remove")) {
|
||||
s1 = "T"; s2 = "take"; s3 = " off"; domsg = TRUE;
|
||||
} else {
|
||||
s1 = "W"; s2 = "wear"; s3 = ""; domsg = TRUE;
|
||||
}
|
||||
}
|
||||
if (domsg)
|
||||
pline("Use the '%s' command to %s %s%s.", s1, s2, what, s3);
|
||||
else
|
||||
pline(silly_thing_to, word);
|
||||
}
|
||||
|
||||
#endif /* OVL1 */
|
||||
#ifdef OVLB
|
||||
|
||||
|
||||
@@ -912,7 +912,7 @@ int thrown;
|
||||
tmp = 0;
|
||||
if (mdat == &mons[PM_SHADE]) {
|
||||
if (!hittxt) {
|
||||
char *what = unconventional[0] ? unconventional : "attack";
|
||||
const char *what = unconventional[0] ? unconventional : "attack";
|
||||
Your("%s %s harmlessly through %s.",
|
||||
what, vtense(what, "pass"),
|
||||
mon_nam(mon));
|
||||
|
||||
Reference in New Issue
Block a user