diff -uwr nethack-3.4.3/src/do.c nethack-indy/src/do.c --- nethack-3.4.3/src/do.c 2003-12-08 00:39:13.000000000 +0100 +++ nethack-indy/src/do.c 2008-05-14 11:18:14.000000000 +0200 @@ -1317,6 +1317,11 @@ if (new && Is_rogue_level(&u.uz)) You("enter what seems to be an older, more primitive world."); #endif + if (new && Hallucination && + Role_if(PM_ARCHEOLOGIST) && + Is_juiblex_level(&u.uz)) + pline("Ahh, Venice."); + /* Final confrontation */ if (In_endgame(&u.uz) && newdungeon && u.uhave.amulet) resurrect(); diff -uwr nethack-3.4.3/src/mkmaze.c nethack-indy/src/mkmaze.c --- nethack-3.4.3/src/mkmaze.c 2003-12-08 00:39:13.000000000 +0100 +++ nethack-indy/src/mkmaze.c 2008-05-13 22:46:36.000000000 +0200 @@ -618,6 +618,10 @@ !SPACE_POS(levl[x][y].typ) || occupied(x, y)); inv_pos.x = x; inv_pos.y = y; + + /* "'X' never, ever marks the spot" */ + if (Role_if(PM_ARCHEOLOGIST)) + make_engr_at(x, y, "X", 0L, DUST); #undef INVPOS_X_MARGIN #undef INVPOS_Y_MARGIN #undef INVPOS_DISTANCE diff -uwr nethack-3.4.3/src/potion.c nethack-indy/src/potion.c --- nethack-3.4.3/src/potion.c 2003-12-08 00:39:13.000000000 +0100 +++ nethack-indy/src/potion.c 2008-05-13 22:37:34.000000000 +0200 @@ -352,7 +352,12 @@ /* Or are you surrounded by water? */ if (Underwater) { if (yn("Drink the water around you?") == 'y') { + + if (Role_if(PM_ARCHEOLOGIST)) { + pline("No thank you, fish make love in it!"); /* Indiana Jones 3 */ + } else { pline("Do you know what lives in this water!"); + } return 1; } } diff -uwr nethack-3.4.3/src/shk.c nethack-indy/src/shk.c --- nethack-3.4.3/src/shk.c 2003-12-08 00:39:13.000000000 +0100 +++ nethack-indy/src/shk.c 2008-05-16 04:43:02.000000000 +0200 @@ -3733,6 +3733,25 @@ "%s comments about the Valley of the Dead as being a gateway." }; +/* returns TRUE if shopkeeper has at least one leather jackets in his shop. */ +boolean +shk_has_leather_jackets(shkp) +struct monst *shkp; +{ + struct eshk *eshk = ESHK(shkp); + struct mkroom *sroom = &rooms[eshk->shoproom - ROOMOFFSET]; + register struct obj *otmp; + int sx, sy; + + for (sx = sroom->lx; sx <= sroom->hx; sx++) + for (sy = sroom->ly; sy <= sroom->hy; sy++) + if (costly_spot(sx,sy)) + for (otmp = level.objects[sx][sy]; otmp; otmp = otmp->nexthere) + if ((!otmp->no_charge) && (otmp->otyp == LEATHER_JACKET)) + return TRUE; + return FALSE; +} + void shk_chat(shkp) struct monst *shkp; @@ -3795,6 +3814,11 @@ pline("%s says that business is good.", shkname(shkp)); else if (strcmp(shkname(shkp), "Izchak") == 0) pline(Izchak_speaks[rn2(SIZE(Izchak_speaks))],shkname(shkp)); + else if (Role_if(PM_ARCHEOLOGIST) && + inhishop(shkp) && + shk_has_leather_jackets(shkp)) + pline("%s says that he's selling these fine leather jackets.", + shkname(shkp)); else pline("%s talks about the problem of shoplifters.",shkname(shkp)); }