From: Pasi Kallinen Date: Fri, 27 Mar 2015 14:08:06 +0000 (+0200) Subject: Show t-shirt text at end of game inventory disclose X-Git-Tag: NetHack-3.6.0_RC01~544 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2e2d020a591a9a831827f0eb44fae56d29a1a220;p=nethack Show t-shirt text at end of game inventory disclose Restricting the text display only to the end of game disclose, so it doesn't clutter the inventory during gameplay and so that the readability of t-shirts is not given away. --- diff --git a/include/extern.h b/include/extern.h index 30e6c6d43..d6347207c 100644 --- a/include/extern.h +++ b/include/extern.h @@ -1824,6 +1824,7 @@ E long NDECL(random); /* ### read.c ### */ E void FDECL(learnscroll, (struct obj *)); +E char *FDECL(tshirt_text, (struct obj *, char *)); E int NDECL(doread); E boolean FDECL(is_chargeable, (struct obj *)); E void FDECL(recharge, (struct obj *,int)); diff --git a/src/objnam.c b/src/objnam.c index 54923ce1e..f40222c3b 100644 --- a/src/objnam.c +++ b/src/objnam.c @@ -489,6 +489,11 @@ register struct obj *obj; } if (pluralize) Strcpy(buf, makeplural(buf)); + if (obj->otyp == T_SHIRT && program_state.gameover) { + char tmpbuf[BUFSZ]; + Sprintf(eos(buf), " with text \"%s\"", tshirt_text(obj, tmpbuf)); + } + if (has_oname(obj) && dknown) { Strcat(buf, " named "); nameit: diff --git a/src/read.c b/src/read.c index 9be9f9390..26e9f2f62 100644 --- a/src/read.c +++ b/src/read.c @@ -53,6 +53,39 @@ struct obj *sobj; (void) learnscrolltyp(sobj->otyp); } +char * +tshirt_text(tshirt, buf) +struct obj *tshirt; +char *buf; +{ + static const char *shirt_msgs[] = { /* Scott Bigham */ + "I explored the Dungeons of Doom and all I got was this lousy T-shirt!", + "Is that Mjollnir in your pocket or are you just happy to see me?", + "It's not the size of your sword, it's how #enhance'd you are with it.", + "Madame Elvira's House O' Succubi Lifetime Customer", + "Madame Elvira's House O' Succubi Employee of the Month", + "Ludios Vault Guards Do It In Small, Dark Rooms", + "Yendor Military Soldiers Do It In Large Groups", + "I survived Yendor Military Boot Camp", + "Ludios Accounting School Intra-Mural Lacrosse Team", + "Oracle(TM) Fountains 10th Annual Wet T-Shirt Contest", + "Hey, black dragon! Disintegrate THIS!", + "I'm With Stupid -->", + "Don't blame me, I voted for Izchak!", + "Don't Panic", /* HHGTTG */ + "Furinkan High School Athletic Dept.", /* Ranma 1/2 */ + "Hel-LOOO, Nurse!", /* Animaniacs */ + }; + int erosion; + Strcpy(buf, shirt_msgs[tshirt->o_id % SIZE(shirt_msgs)]); + erosion = greatest_erosion(tshirt); + if (erosion) + wipeout_text(buf, + (int)(strlen(buf) * erosion / (2*MAX_ERODE)), + tshirt->o_id ^ (unsigned)ubirthday); + return buf; +} + int doread() { @@ -73,27 +106,7 @@ doread() useup(scroll); return(1); } else if (scroll->otyp == T_SHIRT) { - static const char *shirt_msgs[] = { /* Scott Bigham */ - "I explored the Dungeons of Doom and all I got was this lousy T-shirt!", - "Is that Mjollnir in your pocket or are you just happy to see me?", - "It's not the size of your sword, it's how #enhance'd you are with it.", - "Madame Elvira's House O' Succubi Lifetime Customer", - "Madame Elvira's House O' Succubi Employee of the Month", - "Ludios Vault Guards Do It In Small, Dark Rooms", - "Yendor Military Soldiers Do It In Large Groups", - "I survived Yendor Military Boot Camp", - "Ludios Accounting School Intra-Mural Lacrosse Team", - "Oracle(TM) Fountains 10th Annual Wet T-Shirt Contest", - "Hey, black dragon! Disintegrate THIS!", - "I'm With Stupid -->", - "Don't blame me, I voted for Izchak!", - "Don't Panic", /* HHGTTG */ - "Furinkan High School Athletic Dept.", /* Ranma 1/2 */ - "Hel-LOOO, Nurse!", /* Animaniacs */ - }; char buf[BUFSZ]; - int erosion; - if (Blind) { You_cant("feel any Braille writing."); return 0; @@ -108,13 +121,7 @@ doread() u.uconduct.literate++; if(flags.verbose) pline("It reads:"); - Strcpy(buf, shirt_msgs[scroll->o_id % SIZE(shirt_msgs)]); - erosion = greatest_erosion(scroll); - if (erosion) - wipeout_text(buf, - (int)(strlen(buf) * erosion / (2*MAX_ERODE)), - scroll->o_id ^ (unsigned)ubirthday); - pline("\"%s\"", buf); + pline("\"%s\"", tshirt_text(scroll, buf)); return 1; } else if (scroll->oclass != SCROLL_CLASS && scroll->oclass != SPBOOK_CLASS) {