diff --git a/doc/fixes34.1 b/doc/fixes34.1 index d580cec63..e43f94987 100644 --- a/doc/fixes34.1 +++ b/doc/fixes34.1 @@ -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 diff --git a/src/do_wear.c b/src/do_wear.c index df352fc2a..620b90107 100644 --- a/src/do_wear.c +++ b/src/do_wear.c @@ -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"); diff --git a/src/invent.c b/src/invent.c index 2ec4d433c..c8224d63a 100644 --- a/src/invent.c +++ b/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 diff --git a/src/uhitm.c b/src/uhitm.c index 3cad55a45..97d142943 100644 --- a/src/uhitm.c +++ b/src/uhitm.c @@ -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));