diff -Naur nethack-3.4.3/dat/Tourist.des nethackdib-3.4.3/dat/Tourist.des --- nethack-3.4.3/dat/Tourist.des Mon Dec 8 12:39:12 2003 +++ nethackdib-3.4.3/dat/Tourist.des Sat Feb 14 16:44:06 2004 @@ -173,12 +173,12 @@ REGION:(53,11,59,14),lit,"zoo" REGION:(63,14,72,16),lit,"barracks" REGION:(32,14,40,16),lit,"temple" +REGION:(53,01,58,02),lit,"food shop" # REGION:(06,01,11,02),random,"ordinary" REGION:(24,01,29,02),random,"ordinary" REGION:(31,01,36,02),random,"ordinary" REGION:(42,01,45,03),random,"ordinary" -REGION:(53,01,58,02),random,"ordinary" REGION:(24,04,26,05),random,"ordinary" REGION:(30,06,34,07),random,"ordinary" REGION:(73,05,74,05),unlit,"ordinary" @@ -259,6 +259,17 @@ # Toilet paper OBJECT:'?',"blank paper",(71,12) OBJECT:'?',"blank paper",(71,12) +# Dibbler's main fare +OBJECT:'%',"sausage-inna-bun",(58,02),random,0 +OBJECT:'%',"sausage-inna-bun",(58,02),random,0 +OBJECT:'%',"sausage-inna-bun",(53,02),random,0 +OBJECT:'%',"sausage-inna-bun",(53,02),random,0 +CONTAINER:'(',"ice box",(54,02) +# Rat! Rat-onna-stick! +OBJECT:'%',"corpse",contained,cursed,"sewer rat",0 +OBJECT:'%',"corpse",contained,cursed,"sewer rat",0 +OBJECT:'%',"corpse",contained,cursed,"rabid rat",0 +OBJECT:'%',"corpse",contained,cursed,"giant rat",0 # Random traps TRAP:random,random TRAP:random,random diff -Naur nethack-3.4.3/dat/data.base nethackdib-3.4.3/dat/data.base --- nethack-3.4.3/dat/data.base Mon Dec 8 12:39:13 2003 +++ nethackdib-3.4.3/dat/data.base Sat Feb 14 16:35:39 2004 @@ -3480,6 +3480,20 @@ a Sasquatch -- not Burns's giant Indian, but the hairy apelike creature that we have all come to know. [ The Encyclopedia of Monsters, by Daniel Cohen ] +sausage*bun +dibbler + Victor eyed the glistening tubes in the tray around Dibbler's + neck. They smelled appetizing. They always did. And then you + bit into them, and learned once again that Cut-me-own-Throat + Dibbler could find a use for bits of an animal that the animal + didn't know it had got. Dibbler had worked out that with enough + fried onions and mustard people would eat anything. + + [...] + + "The thing is that Mr. Dibbler can even sell sausages to people + who have bought them off him *before*." + [Moving Pictures, Terry Pratchett] *sceptre of might This mace was created aeons ago in some unknown cave, and has been passed down from generation to generation of diff -Naur nethack-3.4.3/include/config.h nethackdib-3.4.3/include/config.h --- nethack-3.4.3/include/config.h Mon Dec 8 12:39:13 2003 +++ nethackdib-3.4.3/include/config.h Sat Feb 14 16:40:39 2004 @@ -325,6 +325,7 @@ #define SEDUCE /* Succubi/incubi seduction, by KAA, suggested by IM */ #define STEED /* Riding steeds */ #define TOURIST /* Tourist players with cameras and Hawaiian shirts */ +#define DIBBLER /* CMOT Dibbler and his sausages-inna-bun - DJC */ /* difficulty */ #define ELBERETH /* Engraving the E-word repels monsters */ /* I/O */ diff -Naur nethack-3.4.3/src/eat.c nethackdib-3.4.3/src/eat.c --- nethack-3.4.3/src/eat.c Mon Dec 8 12:39:13 2003 +++ nethackdib-3.4.3/src/eat.c Mon Feb 16 12:56:28 2004 @@ -1407,6 +1407,10 @@ case MEAT_RING: goto give_feedback; /* break; */ +#ifdef DIBBLER + case SAUSAGE_INNA_BUN: + break; +#endif case CLOVE_OF_GARLIC: if (is_undead(youmonst.data)) { make_vomiting((long)rn1(victual.reqtime, 5), FALSE); @@ -1711,6 +1715,66 @@ } if(!otmp->cursed) heal_legs(); break; +ifdef DIBBLER + case SAUSAGE_INNA_BUN: + { + exercise(A_WIS, FALSE); /* eating Dibbler's food isn't wise */ + roll = d(5 + bcsign(otmp), 2); + switch(roll); + + case 12: + /* gain poison resistance */ + pline("That was surprisingly tasty!"); + if(!(HPoison_resistance & FROMOUTSIDE)) { + You_feel(Poison_resistance ? + "especially healthy." : "healthy."); + HPoison_resistance |= FROMOUTSIDE; + } + break; + case 11: + case 10: + { + /* Dibbler's sausages are a unique experience... */ + pline("That's an experience you won't forget in a hurry."); + more_experienced(1,0); + newexplevel(); + } + break; + case 9: + case 8: + /* base case - no effect */ + pline("For some reason, you feel like another..."); + break; + case 7: + case 6: + { + /* makes you vomit */ + Your("%s churns...", body_part(STOMACH)); + make_vomiting(Vomiting+d(10,4), TRUE); + } + break; + case 5: + case 4: + /* food poisoning */ + pline("Now that's a sausage you won't live to regret."); + if (Sick_resistance) { + pline("Needs mustard."); + } else { + char buf[BUFSZ]; + long sick_time; + sick_time = (long) rn1(10, 10); + if (Sick && (sick_time > Sick)) + sick_time = (Sick > 1L) ? Sick - 1L : 1L; + Sprintf(buf, "one of Mr. Dibbler's sausages") + make_sick(sick_time, buf, TRUE, SICK_VOMITABLE); + } + return(2); + break; + default: + impossible("bad sausage roll %d", roll); + } + break; +#endif case EGG: if (touch_petrifies(&mons[otmp->corpsenm])) { if (!Stone_resistance && @@ -1817,6 +1881,14 @@ if (yn_function(buf,ynchars,'n')=='n') return 1; else return 2; } +#ifdef DIBBLER + if otmp->otyp == SAUSAGE_INNA_BUN { + Sprintf(buf, "%s rather suspicious. %s", + foodsmell, eat_it_anyway); + if (yn_function(buf,ynchars,'n')=='n') return 1; + else return 2; + } +#endif if (cadaver && acidic(&mons[mnum]) && !Acid_resistance) { Sprintf(buf, "%s rather acidic. %s", foodsmell, eat_it_anyway); diff -Naur nethack-3.4.3/src/mkobj.c nethackdib-3.4.3/src/mkobj.c --- nethack-3.4.3/src/mkobj.c Mon Dec 8 12:39:13 2003 +++ nethackdib-3.4.3/src/mkobj.c Sat Feb 14 16:24:08 2004 @@ -443,6 +443,12 @@ } blessorcurse(otmp, 10); break; +#ifdef DIBBLER + case SAUSAGE_INNA_BUN: + if !rn2(10) otmp->blessed = 1; + else if rn2(3) otmp->cursed = 1; + break; +#endif case SLIME_MOLD: otmp->spe = current_fruit; break; diff -Naur nethack-3.4.3/src/objects.c nethackdib-3.4.3/src/objects.c --- nethack-3.4.3/src/objects.c Mon Dec 8 12:39:13 2003 +++ nethackdib-3.4.3/src/objects.c Sat Feb 14 22:23:01 2004 @@ -681,7 +681,12 @@ /* meatballs/sticks/rings are only created from objects via stone to flesh */ /* meat */ +#ifdef DIBBLER +FOOD("tripe ration", 135, 2, 10, 0, FLESH, 200, CLR_BROWN), +FOOD("sausage-inna-bun", 5, 1, 5, 0, FLESH, 80, CLR_BROWN), +#else FOOD("tripe ration", 140, 2, 10, 0, FLESH, 200, CLR_BROWN), +#endif FOOD("corpse", 0, 1, 0, 0, FLESH, 0, CLR_BROWN), FOOD("egg", 85, 1, 1, 1, FLESH, 80, CLR_WHITE), FOOD("meatball", 0, 1, 1, 0, FLESH, 5, CLR_BROWN), diff -Naur nethack-3.4.3/src/objnam.c nethackdib-3.4.3/src/objnam.c --- nethack-3.4.3/src/objnam.c Mon Dec 8 12:39:13 2003 +++ nethackdib-3.4.3/src/objnam.c Wed Feb 11 13:57:17 2004 @@ -1302,6 +1302,8 @@ || !strncmp(spot, " from ", 6) || !strncmp(spot, " in ", 4) || !strncmp(spot, " on ", 4) + || !strncmp(spot, "-inna-", 6) + || !strncmp(spot, "-onna-", 6) || !strncmp(spot, " a la ", 6) || !strncmp(spot, " with", 5) /* " with "? */ || !strncmp(spot, " de ", 4) @@ -1735,6 +1737,9 @@ { "kelp", KELP_FROND }, { "eucalyptus", EUCALYPTUS_LEAF }, { "grapple", GRAPPLING_HOOK }, +#ifdef DIBBLER + {"sausage in a bun", SAUSAGE_INNA_BUN}, +#endif { (const char *)0, 0 }, }; diff -Naur nethack-3.4.3/src/shk.c nethackdib-3.4.3/src/shk.c --- nethack-3.4.3/src/shk.c Mon Dec 8 12:39:13 2003 +++ nethackdib-3.4.3/src/shk.c Mon Feb 16 11:43:21 2004 @@ -2281,6 +2281,8 @@ obj->quan = 1L; /* fool xname() into giving singular */ pline("%s; only %ld %s %s.\"", buf, ltmp, (quan > 1L) ? "per" : "for this", xname(obj)); + if (!rn2(3) && strcmp(shkname(shkp), "Dibbler") == 0) + pline("And that's cutting me own throat."); obj->quan = quan; } else pline("%s will cost you %ld %s%s.", @@ -3698,6 +3700,8 @@ if (choice == 0) choice = (cost < 100L ? 1 : cost < 500L ? 2 : 3); switch (choice) { case 4: + if (strcmp(shkname(shkp), "Dibbler") == 0) + return ", and that's cutting me own throat."; if (cost < 10L) break; else o = itm->oclass; if (o == FOOD_CLASS) return ", gourmets' delight!"; if (objects[itm->otyp].oc_name_known diff -Naur nethack-3.4.3/src/shknam.c nethackdib-3.4.3/src/shknam.c --- nethack-3.4.3/src/shknam.c Mon Dec 8 12:39:13 2003 +++ nethackdib-3.4.3/src/shknam.c Sat Feb 14 16:28:33 2004 @@ -286,6 +286,13 @@ /* special-case minetown lighting shk */ shname = "Izchak"; shk->female = FALSE; +#ifdef TOURIST + } else + if (nlp == shkfoods && Is_qlocate(&u.uz) && Role_if(PM_TOURIST)) { + /* Cut-Me-Own-Throat Dibbler - on Tourist Quest */ + shname = "Dibbler"; + shk->female = FALSE; +#endif } else { /* We want variation from game to game, without needing the save and restore support which would be necessary for randomization; diff -Naur nethack-3.4.3/util/makedefs.c nethackdib-3.4.3/util/makedefs.c --- nethack-3.4.3/util/makedefs.c Mon Dec 8 12:39:13 2003 +++ nethackdib-3.4.3/util/makedefs.c Sat Feb 14 16:41:46 2004 @@ -705,6 +705,9 @@ #ifdef STEED "saddles and riding", #endif +#ifdef DIBBLER + "sausages-inna-bun", +#endif #ifdef SCORE_ON_BOTL "score on status line", #endif diff -Naur nethack-3.4.3/win/share/objects.txt nethackdib-3.4.3/win/share/objects.txt --- nethack-3.4.3/win/share/objects.txt Mon Dec 8 12:39:14 2003 +++ nethackdib-3.4.3/win/share/objects.txt Sat Feb 14 16:37:55 2004 @@ -4612,6 +4612,25 @@ MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM } +# tile 435 (sausage-inna-bun) +{ + MMMMMMMMMMMMMMMM + MMMMMMMMMMMMMMMM + MMMMMMMMMMMMMMMM + MMMMMMMMMMJCDMMM + MMMMMMMMMJCDJAMM + MMMMMMMMJLDJAMMM + MMMMMMJDLKJAMMMM + MMMMMJLCKJAMMMMM + MMMMJLCKJAMMMMMM + MMMJLLKJAMMMMMMM + MMJDCKJAMMMMMMMM + MMMCKJAMMMMMMMMM + MMMMJAMMMMMMMMMM + MMMMMMMMMMMMMMMM + MMMMMMMMMMMMMMMM + MMMMMMMMMMMMMMMM +} # tile 242 (corpse) { MMMMMMMMMMMMMMMM diff -Naur nethack-3.4.3/win/share/tilemap.c nethackdib-3.4.3/win/share/tilemap.c --- nethack-3.4.3/win/share/tilemap.c Mon Dec 8 12:39:14 2003 +++ nethackdib-3.4.3/win/share/tilemap.c Sat Feb 14 16:39:10 2004 @@ -83,6 +83,9 @@ #ifndef STEED { OBJ_GLYPH, TOWEL, "saddle" }, #endif +#ifndef DIBBLER + { OBJ_GLYPH, TRIPE_RATION, "sausage-inna-bun" }, +#endif /* allow slime mold to look like slice of pizza, since we * don't know what a slime mold should look like when renamed anyway */