1 /* NetHack 3.6 fountain.c $NHDT-Date: 1455402364 2016/02/13 22:26:04 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.56 $ */
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-2018 */
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;
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;
284 levl[x][y].looted = 0;
285 levl[x][y].blessedftn = 0;
288 pline_The("fountain dries up!");
290 pline("
\90ò
\82Í
\8a±
\8fã
\82ª
\82Á
\82½
\81I");
291 /* The location is seen if the hero/monster is invisible
292 or felt if the hero is blind. */
294 level.flags.nfountains--;
295 if (isyou && in_town(x, y))
296 (void) angry_guards(FALSE);
303 /* What happens when you drink from a fountain? */
304 register boolean mgkftn = (levl[u.ux][u.uy].blessedftn == 1);
305 register int fate = rnd(30);
309 floating_above("fountain");
311 floating_above("
\90ò");
315 if (mgkftn && u.uluck >= 0 && fate >= 10) {
316 int i, ii, littleluck = (u.uluck < 4);
319 pline("Wow! This makes you feel great!");
321 pline("
\83\8f\83H
\81I
\82Æ
\82Ä
\82à
\8bC
\8e\9d\82¿
\82æ
\82
\82È
\82Á
\82½
\81I");
322 /* blessed restore ability */
323 for (ii = 0; ii < A_MAX; ii++)
324 if (ABASE(ii) < AMAX(ii)) {
325 ABASE(ii) = AMAX(ii);
328 /* gain ability, blessed if "natural" luck is high */
329 i = rn2(A_MAX); /* start at a random attribute */
330 for (ii = 0; ii < A_MAX; ii++) {
331 if (adjattrib(i, 1, littleluck ? -1 : 0) && littleluck)
336 display_nhwindow(WIN_MESSAGE, FALSE);
338 pline("A wisp of vapor escapes the fountain...");
340 pline("
\89\8c\82Ì
\82©
\82½
\82Ü
\82è
\82ª
\90ò
\82©
\82ç
\93¦
\82°
\82½
\81D
\81D
\81D");
341 exercise(A_WIS, TRUE);
342 levl[u.ux][u.uy].blessedftn = 0;
348 pline_The("cool draught refreshes you.");
350 pline("
\97â
\82½
\82¢
\88ê
\94t
\82Å
\82³
\82Á
\82Ï
\82è
\82µ
\82½
\81D");
351 u.uhunger += rnd(10); /* don't choke on water */
357 case 19: /* Self-knowledge */
359 You_feel("self-knowledgeable...");
361 You("
\8e©
\95ª
\8e©
\90g
\82ª
\94»
\82é
\82æ
\82¤
\82È
\8bC
\82ª
\82µ
\82½
\81D
\81D
\81D");
362 display_nhwindow(WIN_MESSAGE, FALSE);
363 enlightenment(MAGICENLIGHTENMENT, ENL_GAMEINPROGRESS);
364 exercise(A_WIS, TRUE);
366 pline_The("feeling subsides.");
368 pline("
\82»
\82Ì
\8a´
\82¶
\82Í
\82È
\82
\82È
\82Á
\82½
\81D");
370 case 20: /* Foul water */
372 pline_The("water is foul! You gag and vomit.");
374 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");
375 morehungry(rn1(20, 11));
378 case 21: /* Poisonous */
380 pline_The("water is contaminated!");
382 pline("
\90\85\82Í
\89\98\90õ
\82³
\82ê
\82Ä
\82¢
\82é
\81I");
383 if (Poison_resistance) {
385 pline("Perhaps it is runoff from the nearby %s farm.",
387 pline("
\82½
\82Ô
\82ñ
\81C
\82±
\82ê
\82Í
\8bß
\82
\82Ì%s
\82Ì
\94_
\8fê
\82©
\82ç
\97¬
\82ê
\82Ä
\82¢
\82é
\81D",
390 losehp(rnd(4), "unrefrigerated sip of juice", KILLED_BY_AN);
392 losehp(rnd(4),"
\95\85\82Á
\82½
\89Ê
\8f`
\82Ì
\82µ
\82½
\82½
\82è
\82Å", KILLED_BY_AN);
397 losehp(rnd(10), "contaminated water", KILLED_BY);
399 losehp(rnd(10),"
\89\98\90õ
\82³
\82ê
\82½
\90\85\82Å", KILLED_BY);
400 exercise(A_CON, FALSE);
402 case 22: /* Fountain of snakes! */
405 case 23: /* Water demon */
408 case 24: /* Curse an item */ {
409 register struct obj *obj;
412 pline("This water's no good!");
414 pline("
\82±
\82Ì
\90\85\82Í
\82Æ
\82Ä
\82à
\82Ü
\82¸
\82¢
\81I");
415 morehungry(rn1(20, 11));
416 exercise(A_CON, FALSE);
417 for (obj = invent; obj; obj = obj->nobj)
422 case 25: /* See invisible */
426 You("feel transparent.");
428 You("
\93§
\96¾
\82É
\82È
\82Á
\82½
\8bC
\82ª
\82·
\82é
\81D");
431 You("feel very self-conscious.");
433 You("
\8e©
\88Ó
\8e¯
\89ß
\8fè
\82É
\8a´
\82¶
\82½
\81D");
435 pline("Then it passes.");
437 pline("
\82»
\82Ì
\8a´
\82¶
\82Í
\8fÁ
\82¦
\82½
\81D");
441 You_see("an image of someone stalking you.");
443 You("
\89½
\82©
\82ª
\8e©
\95ª
\82Ì
\8cã
\82ð
\82Â
\82¯
\82Ä
\82¢
\82é
\89f
\91\9c\82ð
\8c©
\82½
\81D");
445 pline("But it disappears.");
447 pline("
\82µ
\82©
\82µ
\81C
\82»
\82ê
\82Í
\8fÁ
\82¦
\82Ä
\82µ
\82Ü
\82Á
\82½
\81D");
449 HSee_invisible |= FROMOUTSIDE;
451 exercise(A_WIS, TRUE);
453 case 26: /* See Monsters */
454 (void) monster_detect((struct obj *) 0, 0);
455 exercise(A_WIS, TRUE);
457 case 27: /* Find a gem in the sparkling waters. */
458 if (!FOUNTAIN_IS_LOOTED(u.ux, u.uy)) {
463 case 28: /* Water Nymph */
468 register struct monst *mtmp;
471 pline("This %s gives you bad breath!",
474 pline("%s
\82ð
\88ù
\82ñ
\82¾
\82ç
\91§
\82ª
\8fL
\82
\82È
\82Á
\82½
\81I",
477 for (mtmp = fmon; mtmp; mtmp = mtmp->nmon) {
478 if (DEADMONSTER(mtmp))
480 monflee(mtmp, 0, FALSE, FALSE);
484 case 30: /* Gushing forth in this room */
489 pline("This tepid %s is tasteless.",
492 pline("
\82±
\82Ì
\82È
\82Ü
\82Ê
\82é
\82¢%s
\82Í
\96¡
\82ª
\82È
\82¢
\81D",
498 dryup(u.ux, u.uy, TRUE);
503 register struct obj *obj;
507 floating_above("fountain");
509 floating_above("
\90ò");
513 /* Don't grant Excalibur when there's more than one object. */
514 /* (quantity could be > 1 if merged daggers got polymorphed) */
515 if (obj->otyp == LONG_SWORD && obj->quan == 1L && u.ulevel >= 5 && !rn2(6)
517 && !exist_artifact(LONG_SWORD, artiname(ART_EXCALIBUR))) {
518 if (u.ualign.type != A_LAWFUL) {
519 /* Ha! Trying to cheat her. */
521 pline("A freezing mist rises from the %s and envelopes the sword.",
524 pline("
\97â
\82½
\82¢
\96¶
\82ª%s
\82©
\82ç
\97§
\82¿
\8f¸
\82è
\81C
\8c\95\82ð
\82Â
\82Â
\82ñ
\82¾
\81D",
528 pline_The("fountain disappears!");
530 pline("
\90ò
\82Í
\8fÁ
\82¦
\82Ä
\82µ
\82Ü
\82Á
\82½
\81I");
532 if (obj->spe > -6 && !rn2(3))
534 obj->oerodeproof = FALSE;
535 exercise(A_WIS, FALSE);
537 /* The lady of the lake acts! - Eric Backus */
541 "From the murky depths, a hand reaches up to bless the sword.");
543 "
\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");
545 pline("As the hand retreats, the fountain disappears!");
547 pline("
\8eè
\82ª
\91Þ
\82
\82Æ
\81C
\90ò
\82Í
\8fÁ
\82¦
\82Ä
\82µ
\82Ü
\82Á
\82½
\81I");
548 obj = oname(obj, artiname(ART_EXCALIBUR));
549 discover_artifact(ART_EXCALIBUR);
551 obj->oeroded = obj->oeroded2 = 0;
552 obj->oerodeproof = TRUE;
553 exercise(A_WIS, TRUE);
556 levl[u.ux][u.uy].typ = ROOM;
557 levl[u.ux][u.uy].looted = 0;
559 level.flags.nfountains--;
560 if (in_town(u.ux, u.uy))
561 (void) angry_guards(FALSE);
564 int er = water_damage(obj, NULL, TRUE);
566 if (obj->otyp == POT_ACID
567 && er != ER_DESTROYED) { /* Acid and water don't mix */
570 } else if (er != ER_NOTHING && !rn2(2)) { /* no further effect */
576 case 16: /* Curse the item */
582 case 20: /* Uncurse the item */
586 pline_The("%s glows for a moment.", hliquid("water"));
588 pline_The("%s
\82Í
\8bP
\82«
\82¾
\82µ
\82½
\81D", hliquid("
\90\85"));
592 pline("A feeling of loss comes over you.");
594 pline("
\8aï
\96
\82È
\92E
\97Í
\8a´
\82ª
\82 \82È
\82½
\82ð
\82¨
\82»
\82Á
\82½
\81D");
597 case 21: /* Water Demon */
600 case 22: /* Water Nymph */
603 case 23: /* an Endless Stream of Snakes */
606 case 24: /* Find a gem */
607 if (!FOUNTAIN_IS_LOOTED(u.ux, u.uy)) {
612 case 25: /* Water gushes forth */
615 case 26: /* Strange feeling */
617 pline("A strange tingling runs up your %s.", body_part(ARM));
619 pline("
\8aï
\96
\82È
\82µ
\82Ñ
\82ê
\82ª
\82 \82È
\82½
\82Ì%s
\82É
\91\96\82Á
\82½
\81D", body_part(ARM));
621 case 27: /* Strange feeling */
623 You_feel("a sudden chill.");
625 You("
\93Ë
\91R
\8a¦
\82¯
\82ð
\8a´
\82¶
\82½
\81D");
627 case 28: /* Strange feeling */
629 pline("An urge to take a bath overwhelms you.");
631 pline("
\95\97\98C
\82É
\93ü
\82è
\82½
\82¢
\82Æ
\82¢
\82¤
\97~
\96]
\82É
\82©
\82ç
\82ê
\82½
\81D");
633 long money = money_cnt(invent);
636 /* Amount to lose. Might get rounded up as fountains don't
638 money = somegold(money) / 10;
639 for (otmp = invent; otmp && money > 0; otmp = otmp->nobj)
640 if (otmp->oclass == COIN_CLASS) {
641 int denomination = objects[otmp->otyp].oc_cost;
643 (money + denomination - 1) / denomination;
644 coin_loss = min(coin_loss, otmp->quan);
645 otmp->quan -= coin_loss;
646 money -= coin_loss * denomination;
651 You("lost some of your money in the fountain!");
653 You("
\8bà
\89Ý
\82ð
\90\94\96\87\81C
\90ò
\82É
\97\8e\82Æ
\82µ
\82Ä
\82µ
\82Ü
\82Á
\82½
\81I");
654 CLEAR_FOUNTAIN_LOOTED(u.ux, u.uy);
655 exercise(A_WIS, FALSE);
659 case 29: /* You see coins */
660 /* We make fountains have more coins the closer you are to the
661 * surface. After all, there will have been more people going
662 * by. Just like a shopping mall! Chris Woodbury */
664 if (FOUNTAIN_IS_LOOTED(u.ux, u.uy))
666 SET_FOUNTAIN_LOOTED(u.ux, u.uy);
667 (void) mkgold((long) (rnd((dunlevs_in_dungeon(&u.uz) - dunlev(&u.uz)
672 pline("Far below you, you see coins glistening in the %s.",
675 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",
678 exercise(A_WIS, TRUE);
683 dryup(u.ux, u.uy, TRUE);
690 if (cansee(x, y) || (x == u.ux && y == u.uy))
692 pline_The("pipes break! Water spurts out!");
694 pline("
\94z
\8aÇ
\82ª
\89ó
\82ê
\90\85\82ª
\95¬
\8fo
\82µ
\82½
\81I");
695 level.flags.nsinks--;
696 levl[x][y].doormask = 0;
697 levl[x][y].typ = FOUNTAIN;
698 level.flags.nfountains++;
710 floating_above("sink");
712 floating_above("
\97¬
\82µ
\91ä");
718 You("take a sip of very cold %s.", hliquid("water"));
720 You("
\82Æ
\82Ä
\82à
\97â
\82½
\82¢%s
\82ð
\88ê
\8cû
\88ù
\82ñ
\82¾
\81D", hliquid("
\90\85"));
724 You("take a sip of very warm %s.", hliquid("water"));
726 You("
\82Æ
\82Ä
\82à
\82 \82½
\82½
\82©
\82¢%s
\82ð
\88ê
\8cû
\88ù
\82ñ
\82¾
\81D", hliquid("
\90\85"));
730 You("take a sip of scalding hot %s.", hliquid("water"));
732 You("
\82Æ
\82Ä
\82à
\94M
\82¢%s
\82ð
\88ê
\8cû
\88ù
\82ñ
\82¾
\81D", hliquid("
\93\92"));
735 pline("It seems quite tasty.");
737 pline("
\82Æ
\82Ä
\82à
\82¨
\82¢
\82µ
\82¢
\90\85\82¾
\81D");
740 losehp(rnd(6), "sipping boiling water", KILLED_BY);
742 losehp(rnd(6), "
\95¦
\93«
\82µ
\82½
\90\85\82ð
\88ù
\82ñ
\82Å", KILLED_BY);
743 /* boiling water burns considered fire damage */
746 if (mvitals[PM_SEWER_RAT].mvflags & G_GONE)
748 pline_The("sink seems quite dirty.");
750 pline("
\97¬
\82µ
\91ä
\82Í
\82Æ
\82Ä
\82à
\89\98\82È
\82ç
\82µ
\82¢
\81D");
752 mtmp = makemon(&mons[PM_SEWER_RAT], u.ux, u.uy, NO_MM_FLAGS);
755 pline("Eek! There's %s in the sink!",
756 (Blind || !canspotmon(mtmp)) ? "something squirmy"
759 pline("
\82°
\81I
\97¬
\82µ
\91ä
\82É%s
\82ª
\82¢
\82é
\81I",
760 (Blind || !canspotmon(mtmp)) ? "
\90g
\82à
\82¾
\82¦
\82·
\82é
\82æ
\82¤
\82È
\82à
\82Ì"
767 otmp = mkobj(POTION_CLASS, FALSE);
768 if (otmp->otyp == POT_WATER) {
769 obfree(otmp, (struct obj *) 0);
770 otmp = (struct obj *) 0;
773 otmp->cursed = otmp->blessed = 0;
775 pline("Some %s liquid flows from the faucet.",
776 Blind ? "odd" : hcolor(OBJ_DESCR(objects[otmp->otyp])));
778 pline("
\8eÖ
\8cû
\82©
\82ç%s
\89t
\91Ì
\82ª
\97¬
\82ê
\82½
\81D",
779 Blind ? "
\8aï
\96
\82È" :
780 hcolor(OBJ_DESCR(objects[otmp->otyp])));
782 otmp->dknown = !(Blind || Hallucination);
783 otmp->quan++; /* Avoid panic upon useup() */
784 otmp->fromsink = 1; /* kludge for docall() */
785 (void) dopotion(otmp);
786 obfree(otmp, (struct obj *) 0);
789 if (!(levl[u.ux][u.uy].looted & S_LRING)) {
791 You("find a ring in the sink!");
793 You("
\97¬
\82µ
\91ä
\82É
\8ew
\97Ö
\82ð
\82Ý
\82Â
\82¯
\82½
\81I");
794 (void) mkobj_at(RING_CLASS, u.ux, u.uy, TRUE);
795 levl[u.ux][u.uy].looted |= S_LRING;
796 exercise(A_WIS, TRUE);
800 pline("Some dirty %s backs up in the drain.", hliquid("water"));
802 pline("
\89\98\82¢%s
\82ª
\94r
\90\85\8cû
\82©
\82ç
\8bt
\97¬
\82µ
\82Ä
\82«
\82½
\81D", hliquid("
\90\85"));
805 breaksink(u.ux, u.uy);
809 pline_The("%s moves as though of its own will!", hliquid("water"));
811 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"));
812 if ((mvitals[PM_WATER_ELEMENTAL].mvflags & G_GONE)
813 || !makemon(&mons[PM_WATER_ELEMENTAL], u.ux, u.uy, NO_MM_FLAGS))
815 pline("But it quiets down.");
817 pline("
\82µ
\82©
\82µ
\81C
\90Ã
\82©
\82É
\82È
\82Á
\82½
\81D");
821 pline("Yuk, this %s tastes awful.", hliquid("water"));
823 pline("
\83I
\83F
\81C
\82±
\82Ì%s
\82Í
\82Æ
\82Ä
\82à
\82Ð
\82Ç
\82¢
\96¡
\82ª
\82·
\82é
\81D", hliquid("
\90\85"));
824 more_experienced(1, 0);
829 pline("Gaggg... this tastes like sewage! You vomit.");
831 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");
832 morehungry(rn1(30 - ACURR(A_CON), 11));
837 pline("This %s contains toxic wastes!", hliquid("water"));
839 pline("
\82±
\82Ì%s
\82Í
\97L
\93Å
\82È
\94p
\8aü
\95¨
\82ð
\8aÜ
\82ñ
\82Å
\82¢
\82é
\81I", hliquid("
\90\85"));
842 You("undergo a freakish metamorphosis!");
844 You("
\8aï
\8c`
\82È
\95Ï
\89»
\82ð
\82µ
\82Í
\82¶
\82ß
\82½
\81I");
848 /* more odd messages --JJB */
851 You_hear("clanking from the pipes...");
853 You_hear("
\94z
\8aÇ
\82Ì
\83J
\83`
\83\93\82Æ
\82¢
\82¤
\89¹
\82ð
\95·
\82¢
\82½
\81D
\81D
\81D");
857 You_hear("snatches of song from among the sewers...");
859 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");
864 pline("From the murky drain, a hand reaches up... --oops--");
866 pline("
\88Ã
\82¢
\94r
\90\85\8cû
\82©
\82ç
\81C
\8eè
\82ª
\90L
\82Ñ
\82Ä
\82«
\82½
\81D
\81D--
\82¨
\82Á
\82Æ--");
872 You("take a sip of %s %s.",
873 rn2(3) ? (rn2(2) ? "cold" : "warm") : "hot",
876 You("%s%s
\82ð
\88ê
\8cû
\88ù
\82ñ
\82¾
\81D",
877 rn2(3) ? (rn2(2) ? "
\97â
\82½
\82¢" : "
\82 \82½
\82½
\82©
\82¢") : "
\94M
\82¢",