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-2022 */
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");
257 pline("%s earnestly %s %s %s!",
259 nolimbs(mtmp->data) ? "shakes" : "waves",
262 ? mbodypart(mtmp, HEAD)
263 : makeplural(mbodypart(mtmp, ARM)));
265 pline("%s
\82Í
\90^
\8c\95\82É%s
\82ð
\90U
\82Á
\82½
\81I",
268 ? mbodypart(mtmp, HEAD)
269 : makeplural(mbodypart(mtmp, ARM)));
275 /* You can see or hear this effect */
278 pline_The("flow reduces to a trickle.");
280 pline("
\97¬
\82ê
\82Í
\82¿
\82å
\82ë
\82¿
\82å
\82ë
\82É
\82È
\82Á
\82½
\81D");
283 if (isyou && wizard) {
285 if (yn("Dry up fountain?") == 'n')
287 if (yn("
\90ò
\82ð
\8a±
\8fã
\82ª
\82ç
\82¹
\82Ü
\82·
\82©
\81H") == 'n')
290 /* replace the fountain with ordinary floor */
291 levl[x][y].typ = ROOM, levl[x][y].flags = 0;
292 levl[x][y].blessedftn = 0;
295 pline_The("fountain dries up!");
297 pline("
\90ò
\82Í
\8a±
\8fã
\82ª
\82Á
\82½
\81I");
298 /* The location is seen if the hero/monster is invisible
299 or felt if the hero is blind. */
301 level.flags.nfountains--;
302 if (isyou && in_town(x, y))
303 (void) angry_guards(FALSE);
310 /* What happens when you drink from a fountain? */
311 register boolean mgkftn = (levl[u.ux][u.uy].blessedftn == 1);
312 register int fate = rnd(30);
316 floating_above("fountain");
318 floating_above("
\90ò");
322 if (mgkftn && u.uluck >= 0 && fate >= 10) {
323 int i, ii, littleluck = (u.uluck < 4);
326 pline("Wow! This makes you feel great!");
328 pline("
\83\8f\83H
\81I
\82Æ
\82Ä
\82à
\8bC
\8e\9d\82¿
\82æ
\82
\82È
\82Á
\82½
\81I");
329 /* blessed restore ability */
330 for (ii = 0; ii < A_MAX; ii++)
331 if (ABASE(ii) < AMAX(ii)) {
332 ABASE(ii) = AMAX(ii);
335 /* gain ability, blessed if "natural" luck is high */
336 i = rn2(A_MAX); /* start at a random attribute */
337 for (ii = 0; ii < A_MAX; ii++) {
338 if (adjattrib(i, 1, littleluck ? -1 : 0) && littleluck)
343 display_nhwindow(WIN_MESSAGE, FALSE);
345 pline("A wisp of vapor escapes the fountain...");
347 pline("
\89\8c\82Ì
\82©
\82½
\82Ü
\82è
\82ª
\90ò
\82©
\82ç
\93¦
\82°
\82½
\81D
\81D
\81D");
348 exercise(A_WIS, TRUE);
349 levl[u.ux][u.uy].blessedftn = 0;
355 pline_The("cool draught refreshes you.");
357 pline("
\97â
\82½
\82¢
\88ê
\94t
\82Å
\82³
\82Á
\82Ï
\82è
\82µ
\82½
\81D");
358 u.uhunger += rnd(10); /* don't choke on water */
364 case 19: /* Self-knowledge */
366 You_feel("self-knowledgeable...");
368 You("
\8e©
\95ª
\8e©
\90g
\82ª
\94»
\82é
\82æ
\82¤
\82È
\8bC
\82ª
\82µ
\82½
\81D
\81D
\81D");
369 display_nhwindow(WIN_MESSAGE, FALSE);
370 enlightenment(MAGICENLIGHTENMENT, ENL_GAMEINPROGRESS);
371 exercise(A_WIS, TRUE);
373 pline_The("feeling subsides.");
375 pline("
\82»
\82Ì
\8a´
\82¶
\82Í
\82È
\82
\82È
\82Á
\82½
\81D");
377 case 20: /* Foul water */
379 pline_The("water is foul! You gag and vomit.");
381 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");
382 morehungry(rn1(20, 11));
385 case 21: /* Poisonous */
387 pline_The("water is contaminated!");
389 pline("
\90\85\82Í
\89\98\90õ
\82³
\82ê
\82Ä
\82¢
\82é
\81I");
390 if (Poison_resistance) {
392 pline("Perhaps it is runoff from the nearby %s farm.",
394 pline("
\82½
\82Ô
\82ñ
\81C
\82±
\82ê
\82Í
\8bß
\82
\82Ì%s
\82Ì
\94_
\8fê
\82©
\82ç
\97¬
\82ê
\82Ä
\82¢
\82é
\81D",
397 losehp(rnd(4), "unrefrigerated sip of juice", KILLED_BY_AN);
399 losehp(rnd(4),"
\95\85\82Á
\82½
\89Ê
\8f`
\82Ì
\82µ
\82½
\82½
\82è
\82Å", KILLED_BY_AN);
404 losehp(rnd(10), "contaminated water", KILLED_BY);
406 losehp(rnd(10),"
\89\98\90õ
\82³
\82ê
\82½
\90\85\82Å", KILLED_BY);
407 exercise(A_CON, FALSE);
409 case 22: /* Fountain of snakes! */
412 case 23: /* Water demon */
415 case 24: /* Curse an item */ {
416 register struct obj *obj;
419 pline("This water's no good!");
421 pline("
\82±
\82Ì
\90\85\82Í
\82Æ
\82Ä
\82à
\82Ü
\82¸
\82¢
\81I");
422 morehungry(rn1(20, 11));
423 exercise(A_CON, FALSE);
424 for (obj = invent; obj; obj = obj->nobj)
429 case 25: /* See invisible */
433 You("feel transparent.");
435 You("
\93§
\96¾
\82É
\82È
\82Á
\82½
\8bC
\82ª
\82·
\82é
\81D");
438 You("feel very self-conscious.");
440 You("
\8e©
\88Ó
\8e¯
\89ß
\8fè
\82É
\8a´
\82¶
\82½
\81D");
442 pline("Then it passes.");
444 pline("
\82»
\82Ì
\8a´
\82¶
\82Í
\8fÁ
\82¦
\82½
\81D");
448 You_see("an image of someone stalking you.");
450 You("
\89½
\82©
\82ª
\8e©
\95ª
\82Ì
\8cã
\82ð
\82Â
\82¯
\82Ä
\82¢
\82é
\89f
\91\9c\82ð
\8c©
\82½
\81D");
452 pline("But it disappears.");
454 pline("
\82µ
\82©
\82µ
\81C
\82»
\82ê
\82Í
\8fÁ
\82¦
\82Ä
\82µ
\82Ü
\82Á
\82½
\81D");
456 HSee_invisible |= FROMOUTSIDE;
458 exercise(A_WIS, TRUE);
460 case 26: /* See Monsters */
461 (void) monster_detect((struct obj *) 0, 0);
462 exercise(A_WIS, TRUE);
464 case 27: /* Find a gem in the sparkling waters. */
465 if (!FOUNTAIN_IS_LOOTED(u.ux, u.uy)) {
470 case 28: /* Water Nymph */
475 register struct monst *mtmp;
478 pline("This %s gives you bad breath!",
481 pline("%s
\82ð
\88ù
\82ñ
\82¾
\82ç
\91§
\82ª
\8fL
\82
\82È
\82Á
\82½
\81I",
484 for (mtmp = fmon; mtmp; mtmp = mtmp->nmon) {
485 if (DEADMONSTER(mtmp))
487 monflee(mtmp, 0, FALSE, FALSE);
491 case 30: /* Gushing forth in this room */
496 pline("This tepid %s is tasteless.",
499 pline("
\82±
\82Ì
\82È
\82Ü
\82Ê
\82é
\82¢%s
\82Í
\96¡
\82ª
\82È
\82¢
\81D",
505 dryup(u.ux, u.uy, TRUE);
510 register struct obj *obj;
514 floating_above("fountain");
516 floating_above("
\90ò");
520 /* Don't grant Excalibur when there's more than one object. */
521 /* (quantity could be > 1 if merged daggers got polymorphed) */
522 if (obj->otyp == LONG_SWORD && obj->quan == 1L && u.ulevel >= 5 && !rn2(6)
524 && !exist_artifact(LONG_SWORD, artiname(ART_EXCALIBUR))) {
525 if (u.ualign.type != A_LAWFUL) {
526 /* Ha! Trying to cheat her. */
528 pline("A freezing mist rises from the %s and envelopes the sword.",
531 pline("
\97â
\82½
\82¢
\96¶
\82ª%s
\82©
\82ç
\97§
\82¿
\8f¸
\82è
\81C
\8c\95\82ð
\82Â
\82Â
\82ñ
\82¾
\81D",
535 pline_The("fountain disappears!");
537 pline("
\90ò
\82Í
\8fÁ
\82¦
\82Ä
\82µ
\82Ü
\82Á
\82½
\81I");
539 if (obj->spe > -6 && !rn2(3))
541 obj->oerodeproof = FALSE;
542 exercise(A_WIS, FALSE);
544 /* The lady of the lake acts! - Eric Backus */
548 "From the murky depths, a hand reaches up to bless the sword.");
550 "
\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");
552 pline("As the hand retreats, the fountain disappears!");
554 pline("
\8eè
\82ª
\91Þ
\82
\82Æ
\81C
\90ò
\82Í
\8fÁ
\82¦
\82Ä
\82µ
\82Ü
\82Á
\82½
\81I");
555 obj = oname(obj, artiname(ART_EXCALIBUR));
556 discover_artifact(ART_EXCALIBUR);
558 obj->oeroded = obj->oeroded2 = 0;
559 obj->oerodeproof = TRUE;
560 exercise(A_WIS, TRUE);
563 levl[u.ux][u.uy].typ = ROOM, levl[u.ux][u.uy].flags = 0;
565 level.flags.nfountains--;
566 if (in_town(u.ux, u.uy))
567 (void) angry_guards(FALSE);
570 int er = water_damage(obj, NULL, TRUE);
572 if (obj->otyp == POT_ACID
573 && er != ER_DESTROYED) { /* Acid and water don't mix */
576 } else if (er != ER_NOTHING && !rn2(2)) { /* no further effect */
582 case 16: /* Curse the item */
588 case 20: /* Uncurse the item */
592 pline_The("%s glows for a moment.", hliquid("water"));
594 pline_The("%s
\82Í
\8bP
\82«
\82¾
\82µ
\82½
\81D", hliquid("
\90\85"));
598 pline("A feeling of loss comes over you.");
600 pline("
\8aï
\96
\82È
\92E
\97Í
\8a´
\82ª
\82 \82È
\82½
\82ð
\82¨
\82»
\82Á
\82½
\81D");
603 case 21: /* Water Demon */
606 case 22: /* Water Nymph */
609 case 23: /* an Endless Stream of Snakes */
612 case 24: /* Find a gem */
613 if (!FOUNTAIN_IS_LOOTED(u.ux, u.uy)) {
618 case 25: /* Water gushes forth */
621 case 26: /* Strange feeling */
623 pline("A strange tingling runs up your %s.", body_part(ARM));
625 pline("
\8aï
\96
\82È
\82µ
\82Ñ
\82ê
\82ª
\82 \82È
\82½
\82Ì%s
\82É
\91\96\82Á
\82½
\81D", body_part(ARM));
627 case 27: /* Strange feeling */
629 You_feel("a sudden chill.");
631 You("
\93Ë
\91R
\8a¦
\82¯
\82ð
\8a´
\82¶
\82½
\81D");
633 case 28: /* Strange feeling */
635 pline("An urge to take a bath overwhelms you.");
637 pline("
\95\97\98C
\82É
\93ü
\82è
\82½
\82¢
\82Æ
\82¢
\82¤
\97~
\96]
\82É
\82©
\82ç
\82ê
\82½
\81D");
639 long money = money_cnt(invent);
642 /* Amount to lose. Might get rounded up as fountains don't
644 money = somegold(money) / 10;
645 for (otmp = invent; otmp && money > 0; otmp = otmp->nobj)
646 if (otmp->oclass == COIN_CLASS) {
647 int denomination = objects[otmp->otyp].oc_cost;
649 (money + denomination - 1) / denomination;
650 coin_loss = min(coin_loss, otmp->quan);
651 otmp->quan -= coin_loss;
652 money -= coin_loss * denomination;
657 You("lost some of your money in the fountain!");
659 You("
\8bà
\89Ý
\82ð
\90\94\96\87\81C
\90ò
\82É
\97\8e\82Æ
\82µ
\82Ä
\82µ
\82Ü
\82Á
\82½
\81I");
660 CLEAR_FOUNTAIN_LOOTED(u.ux, u.uy);
661 exercise(A_WIS, FALSE);
665 case 29: /* You see coins */
666 /* We make fountains have more coins the closer you are to the
667 * surface. After all, there will have been more people going
668 * by. Just like a shopping mall! Chris Woodbury */
670 if (FOUNTAIN_IS_LOOTED(u.ux, u.uy))
672 SET_FOUNTAIN_LOOTED(u.ux, u.uy);
673 (void) mkgold((long) (rnd((dunlevs_in_dungeon(&u.uz) - dunlev(&u.uz)
678 pline("Far below you, you see coins glistening in the %s.",
681 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",
684 exercise(A_WIS, TRUE);
689 dryup(u.ux, u.uy, TRUE);
696 if (cansee(x, y) || (x == u.ux && y == u.uy))
698 pline_The("pipes break! Water spurts out!");
700 pline("
\94z
\8aÇ
\82ª
\89ó
\82ê
\90\85\82ª
\95¬
\8fo
\82µ
\82½
\81I");
701 level.flags.nsinks--;
702 levl[x][y].typ = FOUNTAIN, levl[x][y].looted = 0;
703 levl[x][y].blessedftn = 0;
704 SET_FOUNTAIN_LOOTED(x, y);
705 level.flags.nfountains++;
717 floating_above("sink");
719 floating_above("
\97¬
\82µ
\91ä");
725 You("take a sip of very cold %s.", hliquid("water"));
727 You("
\82Æ
\82Ä
\82à
\97â
\82½
\82¢%s
\82ð
\88ê
\8cû
\88ù
\82ñ
\82¾
\81D", hliquid("
\90\85"));
731 You("take a sip of very warm %s.", hliquid("water"));
733 You("
\82Æ
\82Ä
\82à
\82 \82½
\82½
\82©
\82¢%s
\82ð
\88ê
\8cû
\88ù
\82ñ
\82¾
\81D", hliquid("
\90\85"));
737 You("take a sip of scalding hot %s.", hliquid("water"));
739 You("
\82Æ
\82Ä
\82à
\94M
\82¢%s
\82ð
\88ê
\8cû
\88ù
\82ñ
\82¾
\81D", hliquid("
\93\92"));
742 pline("It seems quite tasty.");
744 pline("
\82Æ
\82Ä
\82à
\82¨
\82¢
\82µ
\82¢
\90\85\82¾
\81D");
747 losehp(rnd(6), "sipping boiling water", KILLED_BY);
749 losehp(rnd(6), "
\95¦
\93«
\82µ
\82½
\90\85\82ð
\88ù
\82ñ
\82Å", KILLED_BY);
750 /* boiling water burns considered fire damage */
753 if (mvitals[PM_SEWER_RAT].mvflags & G_GONE)
755 pline_The("sink seems quite dirty.");
757 pline("
\97¬
\82µ
\91ä
\82Í
\82Æ
\82Ä
\82à
\89\98\82È
\82ç
\82µ
\82¢
\81D");
759 mtmp = makemon(&mons[PM_SEWER_RAT], u.ux, u.uy, NO_MM_FLAGS);
762 pline("Eek! There's %s in the sink!",
763 (Blind || !canspotmon(mtmp)) ? "something squirmy"
766 pline("
\82°
\81I
\97¬
\82µ
\91ä
\82É%s
\82ª
\82¢
\82é
\81I",
767 (Blind || !canspotmon(mtmp)) ? "
\90g
\82à
\82¾
\82¦
\82·
\82é
\82æ
\82¤
\82È
\82à
\82Ì"
774 otmp = mkobj(POTION_CLASS, FALSE);
775 if (otmp->otyp == POT_WATER) {
776 obfree(otmp, (struct obj *) 0);
777 otmp = (struct obj *) 0;
780 otmp->cursed = otmp->blessed = 0;
782 pline("Some %s liquid flows from the faucet.",
783 Blind ? "odd" : hcolor(OBJ_DESCR(objects[otmp->otyp])));
785 pline("
\8eÖ
\8cû
\82©
\82ç%s
\89t
\91Ì
\82ª
\97¬
\82ê
\82½
\81D",
786 Blind ? "
\8aï
\96
\82È" :
787 hcolor(OBJ_DESCR(objects[otmp->otyp])));
789 otmp->dknown = !(Blind || Hallucination);
790 otmp->quan++; /* Avoid panic upon useup() */
791 otmp->fromsink = 1; /* kludge for docall() */
792 (void) dopotion(otmp);
793 obfree(otmp, (struct obj *) 0);
796 if (!(levl[u.ux][u.uy].looted & S_LRING)) {
798 You("find a ring in the sink!");
800 You("
\97¬
\82µ
\91ä
\82É
\8ew
\97Ö
\82ð
\82Ý
\82Â
\82¯
\82½
\81I");
801 (void) mkobj_at(RING_CLASS, u.ux, u.uy, TRUE);
802 levl[u.ux][u.uy].looted |= S_LRING;
803 exercise(A_WIS, TRUE);
807 pline("Some dirty %s backs up in the drain.", hliquid("water"));
809 pline("
\89\98\82¢%s
\82ª
\94r
\90\85\8cû
\82©
\82ç
\8bt
\97¬
\82µ
\82Ä
\82«
\82½
\81D", hliquid("
\90\85"));
812 breaksink(u.ux, u.uy);
816 pline_The("%s moves as though of its own will!", hliquid("water"));
818 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"));
819 if ((mvitals[PM_WATER_ELEMENTAL].mvflags & G_GONE)
820 || !makemon(&mons[PM_WATER_ELEMENTAL], u.ux, u.uy, NO_MM_FLAGS))
822 pline("But it quiets down.");
824 pline("
\82µ
\82©
\82µ
\81C
\90Ã
\82©
\82É
\82È
\82Á
\82½
\81D");
828 pline("Yuk, this %s tastes awful.", hliquid("water"));
830 pline("
\83I
\83F
\81C
\82±
\82Ì%s
\82Í
\82Æ
\82Ä
\82à
\82Ð
\82Ç
\82¢
\96¡
\82ª
\82·
\82é
\81D", hliquid("
\90\85"));
831 more_experienced(1, 0);
836 pline("Gaggg... this tastes like sewage! You vomit.");
838 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");
839 morehungry(rn1(30 - ACURR(A_CON), 11));
844 pline("This %s contains toxic wastes!", hliquid("water"));
846 pline("
\82±
\82Ì%s
\82Í
\97L
\93Å
\82È
\94p
\8aü
\95¨
\82ð
\8aÜ
\82ñ
\82Å
\82¢
\82é
\81I", hliquid("
\90\85"));
849 You("undergo a freakish metamorphosis!");
851 You("
\8aï
\8c`
\82È
\95Ï
\89»
\82ð
\82µ
\82Í
\82¶
\82ß
\82½
\81I");
855 /* more odd messages --JJB */
858 You_hear("clanking from the pipes...");
860 You_hear("
\94z
\8aÇ
\82Ì
\83J
\83`
\83\93\82Æ
\82¢
\82¤
\89¹
\82ð
\95·
\82¢
\82½
\81D
\81D
\81D");
864 You_hear("snatches of song from among the sewers...");
866 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");
871 pline("From the murky drain, a hand reaches up... --oops--");
873 pline("
\88Ã
\82¢
\94r
\90\85\8cû
\82©
\82ç
\81C
\8eè
\82ª
\90L
\82Ñ
\82Ä
\82«
\82½
\81D
\81D--
\82¨
\82Á
\82Æ--");
879 You("take a sip of %s %s.",
880 rn2(3) ? (rn2(2) ? "cold" : "warm") : "hot",
883 You("%s%s
\82ð
\88ê
\8cû
\88ù
\82ñ
\82¾
\81D",
884 rn2(3) ? (rn2(2) ? "
\97â
\82½
\82¢" : "
\82 \82½
\82½
\82©
\82¢") : "
\94M
\82¢",