From: nethack.rankin Date: Mon, 26 May 2003 17:34:28 +0000 (+0000) Subject: cmdassist bits X-Git-Tag: MOVE2GIT~1950 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ad243c02863d5f2f631bae4104f8f5822accfa83;p=nethack cmdassist bits If the player gives the 'T' command while not wearing any armor, don't suggest "use 'R' to remove accessories" unless the character is actually wearing accessories. Likewise for 'R' while not wearing any accessories, don't suggest "use 'T' to take off armor" unless wearing some. Add missing amulet case to the silly_thing() handling for 'W' and 'T'. Also handle boots, gloves, and lenses as plural in the message there. silly_thing() has been simplified a little bit in the process. --- diff --git a/doc/fixes34.2 b/doc/fixes34.2 index babc56980..71c0a623d 100644 --- a/doc/fixes34.2 +++ b/doc/fixes34.2 @@ -81,6 +81,7 @@ any golem statue hit with stone-to-flesh spell animates as flesh golem correct invalid startup gender selection can no longer untrap floor containers during unskilled riding can no longer easily set land mines and bear traps during unskilled riding +refine cmdassist handling for armor vs accessories Platform- and/or Interface-Specific Fixes diff --git a/src/do_wear.c b/src/do_wear.c index 3599a0f12..cd97ffe67 100644 --- a/src/do_wear.c +++ b/src/do_wear.c @@ -1,4 +1,4 @@ -/* SCCS Id: @(#)do_wear.c 3.4 2003/03/10 */ +/* SCCS Id: @(#)do_wear.c 3.4 2003/05/25 */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* NetHack may be freely redistributed. See license for details. */ @@ -996,8 +996,9 @@ dotakeoff() uskin->otyp >= GRAY_DRAGON_SCALES ? "dragon scales are" : "dragon scale mail is"); else - pline("Not wearing any armor.%s", iflags.cmdassist ? - " Use 'R' command to remove accessories." : ""); + pline("Not wearing any armor.%s", (iflags.cmdassist && + (uleft || uright || uamul || ublindf)) ? + " Use 'R' command to remove accessories." : ""); return 0; } if (armorpieces > 1) @@ -1041,8 +1042,13 @@ doremring() MOREACC(ublindf); if(!Accessories) { - pline("Not wearing any accessories.%s", iflags.cmdassist ? - " Use 'T' command to take off non-accessories." : ""); + pline("Not wearing any accessories.%s", (iflags.cmdassist && + (uarm || uarmc || +#ifdef TOURIST + uarmu || +#endif + uarms || uarmh || uarmg || uarmf)) ? + " Use 'T' command to take off armor." : ""); return(0); } if (Accessories != 1) otmp = getobj(accessories, "remove"); diff --git a/src/invent.c b/src/invent.c index 6ba6aa967..f79494725 100644 --- a/src/invent.c +++ b/src/invent.c @@ -1094,32 +1094,35 @@ silly_thing(word, otmp) const char *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; - } + const char *s1, *s2, *s3, *what; + int ocls = otmp->oclass, otyp = otmp->otyp; + + s1 = s2 = s3 = 0; + /* check for attempted use of accessory commands ('P','R') on armor + and for corresponding armor commands ('W','T') on accessories */ + if (ocls == ARMOR_CLASS) { + if (!strcmp(word, "put on")) + s1 = "W", s2 = "wear", s3 = ""; + else if (!strcmp(word, "remove")) + s1 = "T", s2 = "take", s3 = " off"; + } else if ((ocls == RING_CLASS || otyp == MEAT_RING) || + ocls == AMULET_CLASS || + (otyp == BLINDFOLD || otyp == TOWEL || otyp == LENSES)) { + if (!strcmp(word, "wear")) + s1 = "P", s2 = "put", s3 = " on"; + else if (!strcmp(word, "take off")) + s1 = "R", s2 = "remove", s3 = ""; + } + if (s1) { + what = "that"; + /* quantity for armor and accessory objects is always 1, + but some things should be referred to as plural */ + if (otyp == LENSES || is_gloves(otmp) || is_boots(otmp)) + what = "those"; + pline("Use the '%s' command to %s %s%s.", s1, s2, what, s3); + } else { + pline(silly_thing_to, word); } - if (domsg) - pline("Use the '%s' command to %s %s%s.", s1, s2, what, s3); - else - pline(silly_thing_to, word); } #endif /* OVL1 */