1 /* NetHack 3.6 fountain.c $NHDT-Date: 1544442711 2018/12/10 11:51:51 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.60 $ */
2 /* Copyright Scott R. Turner, srt@ucla, 10/27/86 */
3 /* NetHack may be freely redistributed. See license for details. */
5 /* JNetHack Copyright */
6 /* (c) Issei Numata, Naoki Hamada, Shigehiro Miyashita, 1994-2000 */
7 /* For 3.4-, Copyright (c) SHIRAKATA Kentaro, 2002-2019 */
8 /* JNetHack may be freely redistributed. See license for details. */
10 /* Code for drinking from fountains. */
14 STATIC_DCL void NDECL(dowatersnakes);
15 STATIC_DCL void NDECL(dowaterdemon);
16 STATIC_DCL void NDECL(dowaternymph);
17 STATIC_PTR void FDECL(gush, (int, int, genericptr_t));
18 STATIC_DCL void NDECL(dofindgem);
20 /* used when trying to dip in or drink from fountain or sink or pool while
21 levitating above it, or when trying to move downwards in that state */
27 const char *umsg = "are floating high above the %s.";
29 const char *umsg = "%s
\82Ì
\97y
\82©
\8fã
\95û
\82É
\95\82\82¢
\82Ä
\82¢
\82é
\81D";
31 if (u.utrap && (u.utraptype == TT_INFLOOR || u.utraptype == TT_LAVA)) {
32 /* when stuck in floor (not possible at fountain or sink location,
33 so must be attempting to move down), override the usual message */
35 umsg = "are trapped in the %s.";
37 umsg = "%s
\82É
\82Â
\82©
\82Ü
\82Á
\82Ä
\82¢
\82é
\81D";
38 what = surface(u.ux, u.uy); /* probably redundant */
43 /* Fountain of snakes! */
47 register int num = rn1(5, 2);
50 if (!(mvitals[PM_WATER_MOCCASIN].mvflags & G_GONE)) {
53 pline("An endless stream of %s pours forth!",
54 Hallucination ? makeplural(rndmonnam(NULL)) : "snakes");
56 pline("%s
\82ª
\82Ç
\82Ç
\82Á
\82Æ
\97¬
\82ê
\8fo
\82Ä
\82«
\82½
\81I",
57 Hallucination ? rndmonnam(NULL) : "
\8eÖ");
61 You_hear("%s hissing!", something);
63 You_hear("
\83V
\81[
\83b
\82Æ
\82¢
\82¤
\89¹
\82ð
\95·
\82¢
\82½
\81I");
65 if ((mtmp = makemon(&mons[PM_WATER_MOCCASIN], u.ux, u.uy,
67 && t_at(mtmp->mx, mtmp->my))
71 pline_The("fountain bubbles furiously for a moment, then calms.");
73 pline("
\90ò
\82Í
\93Ë
\91R
\8c\83\82µ
\82
\96A
\82¾
\82¿
\81C
\82â
\82ª
\82Ä
\90Ã
\82©
\82É
\82È
\82Á
\82½
\81D");
82 if (!(mvitals[PM_WATER_DEMON].mvflags & G_GONE)) {
83 if ((mtmp = makemon(&mons[PM_WATER_DEMON], u.ux, u.uy,
87 You("unleash %s!", a_monnam(mtmp));
89 You("%s
\82ð
\89ð
\82«
\95ú
\82µ
\82½
\81I", a_monnam(mtmp));
92 You_feel("the presence of evil.");
94 You_feel("
\8e×
\88«
\82È
\91¶
\8dÝ
\82ð
\8a´
\82¶
\82½
\81I");
96 /* Give those on low levels a (slightly) better chance of survival
98 if (rnd(100) > (80 + level_difficulty())) {
100 pline("Grateful for %s release, %s grants you a wish!",
101 mhis(mtmp), mhe(mtmp));
103 pline("%s
\82Í
\89ð
\95ú
\82ð
\82Æ
\82Ä
\82à
\8a´
\8eÓ
\82µ
\81C
\82Ì
\82¼
\82Ý
\82ð
\82©
\82È
\82¦
\82Ä
\82
\82ê
\82é
\82æ
\82¤
\82¾
\81I",
106 /* give a wish and discard the monster (mtmp set to null) */
107 mongrantswish(&mtmp);
108 } else if (t_at(mtmp->mx, mtmp->my))
109 (void) mintrap(mtmp);
113 pline_The("fountain bubbles furiously for a moment, then calms.");
115 pline("
\90ò
\82Í
\93Ë
\91R
\8c\83\82µ
\82
\96A
\82¾
\82¿
\81C
\82â
\82ª
\82Ä
\90Ã
\82©
\82É
\82È
\82Á
\82½
\81D");
122 register struct monst *mtmp;
124 if (!(mvitals[PM_WATER_NYMPH].mvflags & G_GONE)
125 && (mtmp = makemon(&mons[PM_WATER_NYMPH], u.ux, u.uy,
126 NO_MM_FLAGS)) != 0) {
129 You("attract %s!", a_monnam(mtmp));
131 pline("%s
\82ª
\8c»
\82í
\82ê
\82½
\81I", a_monnam(mtmp));
134 You_hear("a seductive voice.");
136 You_hear("
\96£
\98f
\93I
\82È
\90º
\82ð
\95·
\82¢
\82½
\81D");
138 if (t_at(mtmp->mx, mtmp->my))
139 (void) mintrap(mtmp);
142 pline("A large bubble rises to the surface and pops.");
144 pline("
\91å
\82«
\82È
\96A
\82ª
\95¦
\82«
\8fo
\82Ä
\82Í
\82¶
\82¯
\82½
\81D");
147 You_hear("a loud pop.");
149 You_hear("
\91å
\82«
\82È
\82à
\82Ì
\82ª
\82Í
\82¶
\82¯
\82é
\89¹
\82ð
\95·
\82¢
\82½
\81D");
152 /* Gushing forth along LOS from (u.ux, u.uy) */
154 dogushforth(drinking)
159 do_clear_area(u.ux, u.uy, 7, gush, (genericptr_t) &madepool);
163 Your("thirst is quenched.");
165 Your("
\8a\89\82«
\82Í
\96ü
\82³
\82ê
\82½
\81D");
168 pline("Water sprays all over you.");
170 pline("
\90\85\82µ
\82Ô
\82«
\82ª
\82 \82È
\82½
\82É
\82©
\82©
\82Á
\82½
\81D");
177 genericptr_t poolcnt;
179 register struct monst *mtmp;
180 register struct trap *ttmp;
182 if (((x + y) % 2) || (x == u.ux && y == u.uy)
183 || (rn2(1 + distmin(u.ux, u.uy, x, y))) || (levl[x][y].typ != ROOM)
184 || (sobj_at(BOULDER, x, y)) || nexttodoor(x, y))
187 if ((ttmp = t_at(x, y)) != 0 && !delfloortrap(ttmp))
190 if (!((*(int *) poolcnt)++))
192 pline("Water gushes forth from the overflowing fountain!");
194 pline("
\90ò
\82©
\82ç
\90\85\82ª
\82Ç
\82Ç
\82Á
\82Æ
\88ì
\82ê
\8fo
\82½
\81I");
196 /* Put a pool at x, y */
197 levl[x][y].typ = POOL, levl[x][y].flags = 0;
200 water_damage_chain(level.objects[x][y], TRUE);
202 if ((mtmp = m_at(x, y)) != 0)
203 (void) minliquid(mtmp);
208 /* Find a gem in the sparkling waters. */
214 You("spot a gem in the sparkling waters!");
216 pline("
\82«
\82ç
\82ß
\82
\90\85\82Ì
\92\86\82É
\95ó
\90Î
\82ð
\8c©
\82Â
\82¯
\82½
\81I");
219 You_feel("a gem here!");
221 You_feel("
\95ó
\90Î
\82ª
\82 \82é
\82æ
\82¤
\82¾
\81I");
222 (void) mksobj_at(rnd_class(DILITHIUM_CRYSTAL, LUCKSTONE - 1), u.ux, u.uy,
224 SET_FOUNTAIN_LOOTED(u.ux, u.uy);
226 exercise(A_WIS, TRUE); /* a discovery! */
234 if (IS_FOUNTAIN(levl[x][y].typ)
235 && (!rn2(3) || FOUNTAIN_IS_WARNED(x, y))) {
236 if (isyou && in_town(x, y) && !FOUNTAIN_IS_WARNED(x, y)) {
239 SET_FOUNTAIN_WARNED(x, y);
240 /* Warn about future fountain use. */
241 for (mtmp = fmon; mtmp; mtmp = mtmp->nmon) {
242 if (DEADMONSTER(mtmp))
244 if (is_watch(mtmp->data) && couldsee(mtmp->mx, mtmp->my)
245 && mtmp->mpeaceful) {
248 pline("%s yells:", Amonnam(mtmp));
250 pline("%s
\82Í
\8b©
\82ñ
\82¾
\81F", Amonnam(mtmp));
252 verbalize("Hey, stop using that fountain!");
254 verbalize("
\82¨
\82¢
\81C
\90ò
\82ð
\89\98\82·
\82È
\81I");
256 pline("%s earnestly %s %s %s!",
258 nolimbs(mtmp->data) ? "shakes" : "waves",
261 ? mbodypart(mtmp, HEAD)
262 : makeplural(mbodypart(mtmp, ARM)));
267 /* You can see or hear this effect */
270 pline_The("flow reduces to a trickle.");
272 pline("
\97¬
\82ê
\82Í
\82¿
\82å
\82ë
\82¿
\82å
\82ë
\82É
\82È
\82Á
\82½
\81D");
275 if (isyou && wizard) {
277 if (yn("Dry up fountain?") == 'n')
279 if (yn("
\90ò
\82ð
\8a±
\8fã
\82ª
\82ç
\82¹
\82Ü
\82·
\82©
\81H") == 'n')
282 /* replace the fountain with ordinary floor */
283 levl[x][y].typ = ROOM, levl[x][y].flags = 0;
284 levl[x][y].blessedftn = 0;
287 pline_The("fountain dries up!");
289 pline("
\90ò
\82Í
\8a±
\8fã
\82ª
\82Á
\82½
\81I");
290 /* The location is seen if the hero/monster is invisible
291 or felt if the hero is blind. */
293 level.flags.nfountains--;
294 if (isyou && in_town(x, y))
295 (void) angry_guards(FALSE);
302 /* What happens when you drink from a fountain? */
303 register boolean mgkftn = (levl[u.ux][u.uy].blessedftn == 1);
304 register int fate = rnd(30);
308 floating_above("fountain");
310 floating_above("
\90ò");
314 if (mgkftn && u.uluck >= 0 && fate >= 10) {
315 int i, ii, littleluck = (u.uluck < 4);
318 pline("Wow! This makes you feel great!");
320 pline("
\83\8f\83H
\81I
\82Æ
\82Ä
\82à
\8bC
\8e\9d\82¿
\82æ
\82
\82È
\82Á
\82½
\81I");
321 /* blessed restore ability */
322 for (ii = 0; ii < A_MAX; ii++)
323 if (ABASE(ii) < AMAX(ii)) {
324 ABASE(ii) = AMAX(ii);
327 /* gain ability, blessed if "natural" luck is high */
328 i = rn2(A_MAX); /* start at a random attribute */
329 for (ii = 0; ii < A_MAX; ii++) {
330 if (adjattrib(i, 1, littleluck ? -1 : 0) && littleluck)
335 display_nhwindow(WIN_MESSAGE, FALSE);
337 pline("A wisp of vapor escapes the fountain...");
339 pline("
\89\8c\82Ì
\82©
\82½
\82Ü
\82è
\82ª
\90ò
\82©
\82ç
\93¦
\82°
\82½
\81D
\81D
\81D");
340 exercise(A_WIS, TRUE);
341 levl[u.ux][u.uy].blessedftn = 0;
347 pline_The("cool draught refreshes you.");
349 pline("
\97â
\82½
\82¢
\88ê
\94t
\82Å
\82³
\82Á
\82Ï
\82è
\82µ
\82½
\81D");
350 u.uhunger += rnd(10); /* don't choke on water */
356 case 19: /* Self-knowledge */
358 You_feel("self-knowledgeable...");
360 You("
\8e©
\95ª
\8e©
\90g
\82ª
\94»
\82é
\82æ
\82¤
\82È
\8bC
\82ª
\82µ
\82½
\81D
\81D
\81D");
361 display_nhwindow(WIN_MESSAGE, FALSE);
362 enlightenment(MAGICENLIGHTENMENT, ENL_GAMEINPROGRESS);
363 exercise(A_WIS, TRUE);
365 pline_The("feeling subsides.");
367 pline("
\82»
\82Ì
\8a´
\82¶
\82Í
\82È
\82
\82È
\82Á
\82½
\81D");
369 case 20: /* Foul water */
371 pline_The("water is foul! You gag and vomit.");
373 pline("
\90\85\82Í
\82Ð
\82Ç
\82
\95s
\89õ
\82È
\96¡
\82ª
\82µ
\82½
\81I
\82 \82È
\82½
\82Í
\93f
\82«
\96ß
\82µ
\82½
\81D");
374 morehungry(rn1(20, 11));
377 case 21: /* Poisonous */
379 pline_The("water is contaminated!");
381 pline("
\90\85\82Í
\89\98\90õ
\82³
\82ê
\82Ä
\82¢
\82é
\81I");
382 if (Poison_resistance) {
384 pline("Perhaps it is runoff from the nearby %s farm.",
386 pline("
\82½
\82Ô
\82ñ
\81C
\82±
\82ê
\82Í
\8bß
\82
\82Ì%s
\82Ì
\94_
\8fê
\82©
\82ç
\97¬
\82ê
\82Ä
\82¢
\82é
\81D",
389 losehp(rnd(4), "unrefrigerated sip of juice", KILLED_BY_AN);
391 losehp(rnd(4),"
\95\85\82Á
\82½
\89Ê
\8f`
\82Ì
\82µ
\82½
\82½
\82è
\82Å", KILLED_BY_AN);
396 losehp(rnd(10), "contaminated water", KILLED_BY);
398 losehp(rnd(10),"
\89\98\90õ
\82³
\82ê
\82½
\90\85\82Å", KILLED_BY);
399 exercise(A_CON, FALSE);
401 case 22: /* Fountain of snakes! */
404 case 23: /* Water demon */
407 case 24: /* Curse an item */ {
408 register struct obj *obj;
411 pline("This water's no good!");
413 pline("
\82±
\82Ì
\90\85\82Í
\82Æ
\82Ä
\82à
\82Ü
\82¸
\82¢
\81I");
414 morehungry(rn1(20, 11));
415 exercise(A_CON, FALSE);
416 for (obj = invent; obj; obj = obj->nobj)
421 case 25: /* See invisible */
425 You("feel transparent.");
427 You("
\93§
\96¾
\82É
\82È
\82Á
\82½
\8bC
\82ª
\82·
\82é
\81D");
430 You("feel very self-conscious.");
432 You("
\8e©
\88Ó
\8e¯
\89ß
\8fè
\82É
\8a´
\82¶
\82½
\81D");
434 pline("Then it passes.");
436 pline("
\82»
\82Ì
\8a´
\82¶
\82Í
\8fÁ
\82¦
\82½
\81D");
440 You_see("an image of someone stalking you.");
442 You("
\89½
\82©
\82ª
\8e©
\95ª
\82Ì
\8cã
\82ð
\82Â
\82¯
\82Ä
\82¢
\82é
\89f
\91\9c\82ð
\8c©
\82½
\81D");
444 pline("But it disappears.");
446 pline("
\82µ
\82©
\82µ
\81C
\82»
\82ê
\82Í
\8fÁ
\82¦
\82Ä
\82µ
\82Ü
\82Á
\82½
\81D");
448 HSee_invisible |= FROMOUTSIDE;
450 exercise(A_WIS, TRUE);
452 case 26: /* See Monsters */
453 (void) monster_detect((struct obj *) 0, 0);
454 exercise(A_WIS, TRUE);
456 case 27: /* Find a gem in the sparkling waters. */
457 if (!FOUNTAIN_IS_LOOTED(u.ux, u.uy)) {
462 case 28: /* Water Nymph */
467 register struct monst *mtmp;
470 pline("This %s gives you bad breath!",
473 pline("%s
\82ð
\88ù
\82ñ
\82¾
\82ç
\91§
\82ª
\8fL
\82
\82È
\82Á
\82½
\81I",
476 for (mtmp = fmon; mtmp; mtmp = mtmp->nmon) {
477 if (DEADMONSTER(mtmp))
479 monflee(mtmp, 0, FALSE, FALSE);
483 case 30: /* Gushing forth in this room */
488 pline("This tepid %s is tasteless.",
491 pline("
\82±
\82Ì
\82È
\82Ü
\82Ê
\82é
\82¢%s
\82Í
\96¡
\82ª
\82È
\82¢
\81D",
497 dryup(u.ux, u.uy, TRUE);
502 register struct obj *obj;
506 floating_above("fountain");
508 floating_above("
\90ò");
512 /* Don't grant Excalibur when there's more than one object. */
513 /* (quantity could be > 1 if merged daggers got polymorphed) */
514 if (obj->otyp == LONG_SWORD && obj->quan == 1L && u.ulevel >= 5 && !rn2(6)
516 && !exist_artifact(LONG_SWORD, artiname(ART_EXCALIBUR))) {
517 if (u.ualign.type != A_LAWFUL) {
518 /* Ha! Trying to cheat her. */
520 pline("A freezing mist rises from the %s and envelopes the sword.",
523 pline("
\97â
\82½
\82¢
\96¶
\82ª%s
\82©
\82ç
\97§
\82¿
\8f¸
\82è
\81C
\8c\95\82ð
\82Â
\82Â
\82ñ
\82¾
\81D",
527 pline_The("fountain disappears!");
529 pline("
\90ò
\82Í
\8fÁ
\82¦
\82Ä
\82µ
\82Ü
\82Á
\82½
\81I");
531 if (obj->spe > -6 && !rn2(3))
533 obj->oerodeproof = FALSE;
534 exercise(A_WIS, FALSE);
536 /* The lady of the lake acts! - Eric Backus */
540 "From the murky depths, a hand reaches up to bless the sword.");
542 "
\82É
\82²
\82Á
\82½
\90[
\82Ý
\82©
\82ç
\81C
\8c\95\82ð
\8fj
\95\9f\82¹
\82ñ
\82Æ
\8eè
\82ª
\90L
\82Ñ
\82Ä
\82«
\82½
\81D");
544 pline("As the hand retreats, the fountain disappears!");
546 pline("
\8eè
\82ª
\91Þ
\82
\82Æ
\81C
\90ò
\82Í
\8fÁ
\82¦
\82Ä
\82µ
\82Ü
\82Á
\82½
\81I");
547 obj = oname(obj, artiname(ART_EXCALIBUR));
548 discover_artifact(ART_EXCALIBUR);
550 obj->oeroded = obj->oeroded2 = 0;
551 obj->oerodeproof = TRUE;
552 exercise(A_WIS, TRUE);
555 levl[u.ux][u.uy].typ = ROOM, levl[u.ux][u.uy].flags = 0;
557 level.flags.nfountains--;
558 if (in_town(u.ux, u.uy))
559 (void) angry_guards(FALSE);
562 int er = water_damage(obj, NULL, TRUE);
564 if (obj->otyp == POT_ACID
565 && er != ER_DESTROYED) { /* Acid and water don't mix */
568 } else if (er != ER_NOTHING && !rn2(2)) { /* no further effect */
574 case 16: /* Curse the item */
580 case 20: /* Uncurse the item */
584 pline_The("%s glows for a moment.", hliquid("water"));
586 pline_The("%s
\82Í
\8bP
\82«
\82¾
\82µ
\82½
\81D", hliquid("
\90\85"));
590 pline("A feeling of loss comes over you.");
592 pline("
\8aï
\96
\82È
\92E
\97Í
\8a´
\82ª
\82 \82È
\82½
\82ð
\82¨
\82»
\82Á
\82½
\81D");
595 case 21: /* Water Demon */
598 case 22: /* Water Nymph */
601 case 23: /* an Endless Stream of Snakes */
604 case 24: /* Find a gem */
605 if (!FOUNTAIN_IS_LOOTED(u.ux, u.uy)) {
610 case 25: /* Water gushes forth */
613 case 26: /* Strange feeling */
615 pline("A strange tingling runs up your %s.", body_part(ARM));
617 pline("
\8aï
\96
\82È
\82µ
\82Ñ
\82ê
\82ª
\82 \82È
\82½
\82Ì%s
\82É
\91\96\82Á
\82½
\81D", body_part(ARM));
619 case 27: /* Strange feeling */
621 You_feel("a sudden chill.");
623 You("
\93Ë
\91R
\8a¦
\82¯
\82ð
\8a´
\82¶
\82½
\81D");
625 case 28: /* Strange feeling */
627 pline("An urge to take a bath overwhelms you.");
629 pline("
\95\97\98C
\82É
\93ü
\82è
\82½
\82¢
\82Æ
\82¢
\82¤
\97~
\96]
\82É
\82©
\82ç
\82ê
\82½
\81D");
631 long money = money_cnt(invent);
634 /* Amount to lose. Might get rounded up as fountains don't
636 money = somegold(money) / 10;
637 for (otmp = invent; otmp && money > 0; otmp = otmp->nobj)
638 if (otmp->oclass == COIN_CLASS) {
639 int denomination = objects[otmp->otyp].oc_cost;
641 (money + denomination - 1) / denomination;
642 coin_loss = min(coin_loss, otmp->quan);
643 otmp->quan -= coin_loss;
644 money -= coin_loss * denomination;
649 You("lost some of your money in the fountain!");
651 You("
\8bà
\89Ý
\82ð
\90\94\96\87\81C
\90ò
\82É
\97\8e\82Æ
\82µ
\82Ä
\82µ
\82Ü
\82Á
\82½
\81I");
652 CLEAR_FOUNTAIN_LOOTED(u.ux, u.uy);
653 exercise(A_WIS, FALSE);
657 case 29: /* You see coins */
658 /* We make fountains have more coins the closer you are to the
659 * surface. After all, there will have been more people going
660 * by. Just like a shopping mall! Chris Woodbury */
662 if (FOUNTAIN_IS_LOOTED(u.ux, u.uy))
664 SET_FOUNTAIN_LOOTED(u.ux, u.uy);
665 (void) mkgold((long) (rnd((dunlevs_in_dungeon(&u.uz) - dunlev(&u.uz)
670 pline("Far below you, you see coins glistening in the %s.",
673 pline("
\97y
\82©
\89º
\82Å
\81A%s
\82Ì
\92\86\82Å
\8bà
\89Ý
\82ª
\8bP
\82¢
\82Ä
\82¢
\82é
\82Ì
\82ð
\82Ý
\82Â
\82¯
\82½
\81D",
676 exercise(A_WIS, TRUE);
681 dryup(u.ux, u.uy, TRUE);
688 if (cansee(x, y) || (x == u.ux && y == u.uy))
690 pline_The("pipes break! Water spurts out!");
692 pline("
\94z
\8aÇ
\82ª
\89ó
\82ê
\90\85\82ª
\95¬
\8fo
\82µ
\82½
\81I");
693 level.flags.nsinks--;
694 levl[x][y].typ = FOUNTAIN, levl[x][y].looted = 0;
695 levl[x][y].blessedftn = 0;
696 SET_FOUNTAIN_LOOTED(x, y);
697 level.flags.nfountains++;
709 floating_above("sink");
711 floating_above("
\97¬
\82µ
\91ä");
717 You("take a sip of very cold %s.", hliquid("water"));
719 You("
\82Æ
\82Ä
\82à
\97â
\82½
\82¢%s
\82ð
\88ê
\8cû
\88ù
\82ñ
\82¾
\81D", hliquid("
\90\85"));
723 You("take a sip of very warm %s.", hliquid("water"));
725 You("
\82Æ
\82Ä
\82à
\82 \82½
\82½
\82©
\82¢%s
\82ð
\88ê
\8cû
\88ù
\82ñ
\82¾
\81D", hliquid("
\90\85"));
729 You("take a sip of scalding hot %s.", hliquid("water"));
731 You("
\82Æ
\82Ä
\82à
\94M
\82¢%s
\82ð
\88ê
\8cû
\88ù
\82ñ
\82¾
\81D", hliquid("
\93\92"));
734 pline("It seems quite tasty.");
736 pline("
\82Æ
\82Ä
\82à
\82¨
\82¢
\82µ
\82¢
\90\85\82¾
\81D");
739 losehp(rnd(6), "sipping boiling water", KILLED_BY);
741 losehp(rnd(6), "
\95¦
\93«
\82µ
\82½
\90\85\82ð
\88ù
\82ñ
\82Å", KILLED_BY);
742 /* boiling water burns considered fire damage */
745 if (mvitals[PM_SEWER_RAT].mvflags & G_GONE)
747 pline_The("sink seems quite dirty.");
749 pline("
\97¬
\82µ
\91ä
\82Í
\82Æ
\82Ä
\82à
\89\98\82È
\82ç
\82µ
\82¢
\81D");
751 mtmp = makemon(&mons[PM_SEWER_RAT], u.ux, u.uy, NO_MM_FLAGS);
754 pline("Eek! There's %s in the sink!",
755 (Blind || !canspotmon(mtmp)) ? "something squirmy"
758 pline("
\82°
\81I
\97¬
\82µ
\91ä
\82É%s
\82ª
\82¢
\82é
\81I",
759 (Blind || !canspotmon(mtmp)) ? "
\90g
\82à
\82¾
\82¦
\82·
\82é
\82æ
\82¤
\82È
\82à
\82Ì"
766 otmp = mkobj(POTION_CLASS, FALSE);
767 if (otmp->otyp == POT_WATER) {
768 obfree(otmp, (struct obj *) 0);
769 otmp = (struct obj *) 0;
772 otmp->cursed = otmp->blessed = 0;
774 pline("Some %s liquid flows from the faucet.",
775 Blind ? "odd" : hcolor(OBJ_DESCR(objects[otmp->otyp])));
777 pline("
\8eÖ
\8cû
\82©
\82ç%s
\89t
\91Ì
\82ª
\97¬
\82ê
\82½
\81D",
778 Blind ? "
\8aï
\96
\82È" :
779 hcolor(OBJ_DESCR(objects[otmp->otyp])));
781 otmp->dknown = !(Blind || Hallucination);
782 otmp->quan++; /* Avoid panic upon useup() */
783 otmp->fromsink = 1; /* kludge for docall() */
784 (void) dopotion(otmp);
785 obfree(otmp, (struct obj *) 0);
788 if (!(levl[u.ux][u.uy].looted & S_LRING)) {
790 You("find a ring in the sink!");
792 You("
\97¬
\82µ
\91ä
\82É
\8ew
\97Ö
\82ð
\82Ý
\82Â
\82¯
\82½
\81I");
793 (void) mkobj_at(RING_CLASS, u.ux, u.uy, TRUE);
794 levl[u.ux][u.uy].looted |= S_LRING;
795 exercise(A_WIS, TRUE);
799 pline("Some dirty %s backs up in the drain.", hliquid("water"));
801 pline("
\89\98\82¢%s
\82ª
\94r
\90\85\8cû
\82©
\82ç
\8bt
\97¬
\82µ
\82Ä
\82«
\82½
\81D", hliquid("
\90\85"));
804 breaksink(u.ux, u.uy);
808 pline_The("%s moves as though of its own will!", hliquid("water"));
810 pline_The("%s
\82ª
\88Ó
\8ev
\82ð
\8e\9d\82Á
\82Ä
\82¢
\82é
\82©
\82Ì
\82æ
\82¤
\82É
\93®
\82¢
\82½
\81I", hliquid("
\90\85"));
811 if ((mvitals[PM_WATER_ELEMENTAL].mvflags & G_GONE)
812 || !makemon(&mons[PM_WATER_ELEMENTAL], u.ux, u.uy, NO_MM_FLAGS))
814 pline("But it quiets down.");
816 pline("
\82µ
\82©
\82µ
\81C
\90Ã
\82©
\82É
\82È
\82Á
\82½
\81D");
820 pline("Yuk, this %s tastes awful.", hliquid("water"));
822 pline("
\83I
\83F
\81C
\82±
\82Ì%s
\82Í
\82Æ
\82Ä
\82à
\82Ð
\82Ç
\82¢
\96¡
\82ª
\82·
\82é
\81D", hliquid("
\90\85"));
823 more_experienced(1, 0);
828 pline("Gaggg... this tastes like sewage! You vomit.");
830 pline("
\83Q
\83F
\81[
\81D
\89º
\90\85\82Ì
\82æ
\82¤
\82È
\96¡
\82ª
\82·
\82é
\81I
\82 \82È
\82½
\82Í
\93f
\82«
\96ß
\82µ
\82½
\81D");
831 morehungry(rn1(30 - ACURR(A_CON), 11));
836 pline("This %s contains toxic wastes!", hliquid("water"));
838 pline("
\82±
\82Ì%s
\82Í
\97L
\93Å
\82È
\94p
\8aü
\95¨
\82ð
\8aÜ
\82ñ
\82Å
\82¢
\82é
\81I", hliquid("
\90\85"));
841 You("undergo a freakish metamorphosis!");
843 You("
\8aï
\8c`
\82È
\95Ï
\89»
\82ð
\82µ
\82Í
\82¶
\82ß
\82½
\81I");
847 /* more odd messages --JJB */
850 You_hear("clanking from the pipes...");
852 You_hear("
\94z
\8aÇ
\82Ì
\83J
\83`
\83\93\82Æ
\82¢
\82¤
\89¹
\82ð
\95·
\82¢
\82½
\81D
\81D
\81D");
856 You_hear("snatches of song from among the sewers...");
858 You_hear("
\89º
\90\85\82Ì
\92\86\82©
\82ç
\82Æ
\82¬
\82ê
\82Æ
\82¬
\82ê
\82Ì
\89Ì
\82ð
\95·
\82¢
\82½
\81D
\81D
\81D");
863 pline("From the murky drain, a hand reaches up... --oops--");
865 pline("
\88Ã
\82¢
\94r
\90\85\8cû
\82©
\82ç
\81C
\8eè
\82ª
\90L
\82Ñ
\82Ä
\82«
\82½
\81D
\81D--
\82¨
\82Á
\82Æ--");
871 You("take a sip of %s %s.",
872 rn2(3) ? (rn2(2) ? "cold" : "warm") : "hot",
875 You("%s%s
\82ð
\88ê
\8cû
\88ù
\82ñ
\82¾
\81D",
876 rn2(3) ? (rn2(2) ? "
\97â
\82½
\82¢" : "
\82 \82½
\82½
\82©
\82¢") : "
\94M
\82¢",