From bd0541679aa38a92fef8dbbc0d21745bf8fd0b76 Mon Sep 17 00:00:00 2001 From: "nethack.allison" Date: Sat, 25 Jan 2003 18:41:25 +0000 Subject: [PATCH] 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. --- doc/fixes34.1 | 3 ++- src/do_wear.c | 6 ++++-- src/invent.c | 36 +++++++++++++++++++++++++++++++++++- src/uhitm.c | 2 +- 4 files changed, 42 insertions(+), 5 deletions(-) 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)); -- 2.40.0