1 /* NetHack 3.6 pray.c $NHDT-Date: 1573346192 2019/11/10 00:36:32 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.118 $ */
2 /* Copyright (c) Benson I. Margulies, Mike Stephenson, Steve Linhart, 1989. */
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-2020 */
8 /* JNetHack may be freely redistributed. See license for details. */
12 STATIC_PTR int NDECL(prayer_done);
13 STATIC_DCL struct obj *NDECL(worst_cursed_item);
14 STATIC_DCL int NDECL(in_trouble);
15 STATIC_DCL void FDECL(fix_worst_trouble, (int));
16 STATIC_DCL void FDECL(angrygods, (ALIGNTYP_P));
17 STATIC_DCL void FDECL(at_your_feet, (const char *));
18 STATIC_DCL void NDECL(gcrownu);
19 STATIC_DCL void FDECL(pleased, (ALIGNTYP_P));
20 STATIC_DCL void FDECL(godvoice, (ALIGNTYP_P, const char *));
21 STATIC_DCL void FDECL(god_zaps_you, (ALIGNTYP_P));
22 STATIC_DCL void FDECL(fry_by_god, (ALIGNTYP_P, BOOLEAN_P));
23 STATIC_DCL void FDECL(gods_angry, (ALIGNTYP_P));
24 STATIC_DCL void FDECL(gods_upset, (ALIGNTYP_P));
25 STATIC_DCL void FDECL(consume_offering, (struct obj *));
26 STATIC_DCL boolean FDECL(water_prayer, (BOOLEAN_P));
27 STATIC_DCL boolean FDECL(blocked_boulder, (int, int));
29 /* simplify a few tests */
30 #define Cursed_obj(obj, typ) ((obj) && (obj)->otyp == (typ) && (obj)->cursed)
33 * Logic behind deities and altars and such:
34 * + prayers are made to your god if not on an altar, and to the altar's god
35 * if you are on an altar
36 * + If possible, your god answers all prayers, which is why bad things happen
37 * if you try to pray on another god's altar
38 * + sacrifices work basically the same way, but the other god may decide to
39 * accept your allegiance, after which they are your god. If rejected,
40 * your god takes over with your punishment.
41 * + if you're in Gehennom, all messages come from Moloch
45 * Moloch, who dwells in Gehennom, is the "renegade" cruel god
46 * responsible for the theft of the Amulet from Marduk, the Creator.
47 * Moloch is unaligned.
50 static const char *Moloch = "Moloch";
52 static const char *Moloch = "
\83\82\81[
\83\8d\83b
\83N";
54 static const char *godvoices[] = {
56 "booms out", "thunders", "rings out", "booms",
58 "
\8b¿
\82«
\82í
\82½
\82Á
\82½", "
\97\8b\82Ì
\82æ
\82¤
\82É
\8b¿
\82¢
\82½", "
\82Æ
\82Ç
\82ë
\82¢
\82½", "
\8b¿
\82¢
\82½",
61 /* values calculated when prayer starts, and used when completed */
62 static aligntyp p_aligntyp;
64 static int p_type; /* (-1)-3: (-1)=really naughty, 3=really good */
72 * The actual trouble priority is determined by the order of the
73 * checks performed in in_trouble() rather than by these numeric
74 * values, so keep that code and these values synchronized in
75 * order to have the values be meaningful.
78 #define TROUBLE_STONED 14
79 #define TROUBLE_SLIMED 13
80 #define TROUBLE_STRANGLED 12
81 #define TROUBLE_LAVA 11
82 #define TROUBLE_SICK 10
83 #define TROUBLE_STARVING 9
84 #define TROUBLE_REGION 8 /* stinking cloud */
86 #define TROUBLE_LYCANTHROPE 6
87 #define TROUBLE_COLLAPSING 5
88 #define TROUBLE_STUCK_IN_WALL 4
89 #define TROUBLE_CURSED_LEVITATION 3
90 #define TROUBLE_UNUSEABLE_HANDS 2
91 #define TROUBLE_CURSED_BLINDFOLD 1
93 #define TROUBLE_PUNISHED (-1)
94 #define TROUBLE_FUMBLING (-2)
95 #define TROUBLE_CURSED_ITEMS (-3)
96 #define TROUBLE_SADDLE (-4)
97 #define TROUBLE_BLIND (-5)
98 #define TROUBLE_POISONED (-6)
99 #define TROUBLE_WOUNDED_LEGS (-7)
100 #define TROUBLE_HUNGRY (-8)
101 #define TROUBLE_STUNNED (-9)
102 #define TROUBLE_CONFUSED (-10)
103 #define TROUBLE_HALLUCINATION (-11)
106 #define ugod_is_angry() (u.ualign.record < 0)
107 #define on_altar() IS_ALTAR(levl[u.ux][u.uy].typ)
108 #define on_shrine() ((levl[u.ux][u.uy].altarmask & AM_SHRINE) != 0)
109 #define a_align(x, y) ((aligntyp) Amask2align(levl[x][y].altarmask & AM_MASK))
111 /* critically low hit points if hp <= 5 or hp <= maxhp/N for some N */
113 critically_low_hp(only_if_injured)
114 boolean only_if_injured; /* determines whether maxhp <= 5 matters */
116 int divisor, hplim, curhp = Upolyd ? u.mh : u.uhp,
117 maxhp = Upolyd ? u.mhmax : u.uhpmax;
119 if (only_if_injured && !(curhp < maxhp))
121 /* if maxhp is extremely high, use lower threshold for the division test
122 (golden glow cuts off at 11+5*lvl, nurse interaction at 25*lvl; this
123 ought to use monster hit dice--and a smaller multiplier--rather than
124 ulevel when polymorphed, but polyself doesn't maintain that) */
125 hplim = 15 * u.ulevel;
128 /* 7 used to be the unconditional divisor */
129 switch (xlev_to_rank(u.ulevel)) { /* maps 1..30 into 0..8 */
133 break; /* explvl 1 to 5 */
137 break; /* explvl 6 to 13 */
141 break; /* explvl 14 to 21 */
145 break; /* explvl 22 to 29 */
148 break; /* explvl 30+ */
150 /* 5 is a magic number in TROUBLE_HIT handling below */
151 return (boolean) (curhp <= 5 || curhp * divisor <= maxhp);
154 /* return True if surrounded by impassible rock, regardless of the state
155 of your own location (for example, inside a doorless closet) */
159 int i, j, x, y, count = 0;
163 for (i = -1; i <= 1; i++) {
165 for (j = -1; j <= 1; j++) {
170 || (IS_ROCK(levl[x][y].typ)
171 && (levl[x][y].typ != SDOOR && levl[x][y].typ != SCORR))
172 || (blocked_boulder(i, j) && !throws_rocks(youmonst.data)))
176 return (count == 8) ? TRUE : FALSE;
180 * Return 0 if nothing particular seems wrong, positive numbers for
181 * serious trouble, and negative numbers for comparative annoyances.
182 * This returns the worst problem. There may be others, and the gods
183 * may fix more than one.
185 * This could get as bizarre as noting surrounding opponents, (or
186 * hostile dogs), but that's really hard.
188 * We could force rehumanize of polyselfed people, but we can't tell
189 * unintentional shape changes from the other kind. Oh well.
190 * 3.4.2: make an exception if polymorphed into a form which lacks
191 * hands; that's a case where the ramifications override this doubt.
203 return TROUBLE_STONED;
205 return TROUBLE_SLIMED;
207 return TROUBLE_STRANGLED;
208 if (u.utrap && u.utraptype == TT_LAVA)
213 return TROUBLE_STARVING;
215 return TROUBLE_REGION;
216 if (critically_low_hp(FALSE))
218 if (u.ulycn >= LOW_PM)
219 return TROUBLE_LYCANTHROPE;
220 if (near_capacity() >= EXT_ENCUMBER && AMAX(A_STR) - ABASE(A_STR) > 3)
221 return TROUBLE_COLLAPSING;
223 return TROUBLE_STUCK_IN_WALL;
224 if (Cursed_obj(uarmf, LEVITATION_BOOTS)
225 || stuck_ring(uleft, RIN_LEVITATION)
226 || stuck_ring(uright, RIN_LEVITATION))
227 return TROUBLE_CURSED_LEVITATION;
228 if (nohands(youmonst.data) || !freehand()) {
229 /* for bag/box access [cf use_container()]...
230 make sure it's a case that we know how to handle;
231 otherwise "fix all troubles" would get stuck in a loop */
233 return TROUBLE_UNUSEABLE_HANDS;
234 if (Upolyd && nohands(youmonst.data)
235 && (!Unchanging || ((otmp = unchanger()) != 0 && otmp->cursed)))
236 return TROUBLE_UNUSEABLE_HANDS;
238 if (Blindfolded && ublindf->cursed)
239 return TROUBLE_CURSED_BLINDFOLD;
244 if (Punished || (u.utrap && u.utraptype == TT_BURIEDBALL))
245 return TROUBLE_PUNISHED;
246 if (Cursed_obj(uarmg, GAUNTLETS_OF_FUMBLING)
247 || Cursed_obj(uarmf, FUMBLE_BOOTS))
248 return TROUBLE_FUMBLING;
249 if (worst_cursed_item())
250 return TROUBLE_CURSED_ITEMS;
251 if (u.usteed) { /* can't voluntarily dismount from a cursed saddle */
252 otmp = which_armor(u.usteed, W_SADDLE);
253 if (Cursed_obj(otmp, SADDLE))
254 return TROUBLE_SADDLE;
257 if (Blinded > 1 && haseyes(youmonst.data)
259 || !attacktype_fordmg(u.ustuck->data, AT_ENGL, AD_BLND)))
260 return TROUBLE_BLIND;
261 /* deafness isn't it's own trouble; healing magic cures deafness
262 when it cures blindness, so do the same with trouble repair */
263 if ((HDeaf & TIMEOUT) > 1L)
264 return TROUBLE_BLIND;
266 for (i = 0; i < A_MAX; i++)
267 if (ABASE(i) < AMAX(i))
268 return TROUBLE_POISONED;
269 if (Wounded_legs && !u.usteed)
270 return TROUBLE_WOUNDED_LEGS;
272 return TROUBLE_HUNGRY;
274 return TROUBLE_STUNNED;
275 if (HConfusion & TIMEOUT)
276 return TROUBLE_CONFUSED;
277 if (HHallucination & TIMEOUT)
278 return TROUBLE_HALLUCINATION;
282 /* select an item for TROUBLE_CURSED_ITEMS */
283 STATIC_OVL struct obj *
286 register struct obj *otmp;
288 /* if strained or worse, check for loadstone first */
289 if (near_capacity() >= HVY_ENCUMBER) {
290 for (otmp = invent; otmp; otmp = otmp->nobj)
291 if (Cursed_obj(otmp, LOADSTONE))
294 /* weapon takes precedence if it is interfering
295 with taking off a ring or putting on a shield */
296 if (welded(uwep) && (uright || bimanual(uwep))) { /* weapon */
298 /* gloves come next, due to rings */
299 } else if (uarmg && uarmg->cursed) { /* gloves */
301 /* then shield due to two handed weapons and spells */
302 } else if (uarms && uarms->cursed) { /* shield */
304 /* then cloak due to body armor */
305 } else if (uarmc && uarmc->cursed) { /* cloak */
307 } else if (uarm && uarm->cursed) { /* suit */
309 /* if worn helmet of opposite alignment is making you an adherent
310 of the current god, he/she/it won't uncurse that for you */
311 } else if (uarmh && uarmh->cursed /* helmet */
312 && uarmh->otyp != HELM_OF_OPPOSITE_ALIGNMENT) {
314 } else if (uarmf && uarmf->cursed) { /* boots */
316 } else if (uarmu && uarmu->cursed) { /* shirt */
318 } else if (uamul && uamul->cursed) { /* amulet */
320 } else if (uleft && uleft->cursed) { /* left ring */
322 } else if (uright && uright->cursed) { /* right ring */
324 } else if (ublindf && ublindf->cursed) { /* eyewear */
325 otmp = ublindf; /* must be non-blinding lenses */
326 /* if weapon wasn't handled above, do it now */
327 } else if (welded(uwep)) { /* weapon */
329 /* active secondary weapon even though it isn't welded */
330 } else if (uswapwep && uswapwep->cursed && u.twoweap) {
332 /* all worn items ought to be handled by now */
334 for (otmp = invent; otmp; otmp = otmp->nobj) {
337 if (otmp->otyp == LOADSTONE || confers_luck(otmp))
345 fix_worst_trouble(trouble)
349 struct obj *otmp = 0;
350 const char *what = (const char *) 0;
352 static NEARDATA const char leftglow[] = "Your left ring softly glows",
353 rightglow[] = "Your right ring softly glows";
355 static NEARDATA const char leftglow[] = "
\8d¶
\82Ì
\8ew
\97Ö",
356 rightglow[] = "
\89E
\82Ì
\8ew
\97Ö";
362 make_stoned(0L, "You feel more limber.", 0, (char *) 0);
364 make_stoned(0L, "
\93î
\82ç
\82©
\82
\82È
\82Á
\82½
\82æ
\82¤
\82È
\8bC
\82ª
\82µ
\82½
\81D", 0, (char *) 0);
368 make_slimed(0L, "The slime disappears.");
370 make_slimed(0L, "
\82Ç
\82ë
\82Ç
\82ë
\8a´
\82Í
\8fÁ
\82¦
\82½
\81D");
372 case TROUBLE_STRANGLED:
373 if (uamul && uamul->otyp == AMULET_OF_STRANGULATION) {
375 Your("amulet vanishes!");
377 Your("
\96\82\8f\9c\82¯
\82Í
\8fÁ
\82¦
\82³
\82Á
\82½
\81I");
381 You("can breathe again.");
383 You("
\82Ü
\82½
\8cÄ
\8bz
\82Å
\82«
\82é
\82æ
\82¤
\82É
\82È
\82Á
\82½
\81D");
389 You("are back on solid ground.");
391 You("
\8cÅ
\82¢
\92n
\96Ê
\82É
\96ß
\82Á
\82½
\81D");
392 /* teleport should always succeed, but if not, just untrap them */
393 if (!safe_teleds(FALSE))
396 case TROUBLE_STARVING:
397 /* temporarily lost strength recovery now handled by init_uhunger() */
401 Your("%s feels content.", body_part(STOMACH));
403 Your("
\90H
\97~
\82Í
\96\9e\82½
\82³
\82ê
\82½
\81D");
411 You("
\8bC
\95ª
\82ª
\97Ç
\82
\82È
\82Á
\82½
\81D");
412 make_sick(0L, (char *) 0, FALSE, SICK_ALL);
415 /* stinking cloud, with hero vulnerable to HP loss */
419 /* "fix all troubles" will keep trying if hero has
420 5 or less hit points, so make sure they're always
421 boosted to be more than that */
423 You_feel("much better.");
425 You("
\82Æ
\82Ä
\82à
\8bC
\95ª
\82ª
\97Ç
\82
\82È
\82Á
\82½
\81D");
432 if (u.uhpmax < u.ulevel * 5 + 11)
439 case TROUBLE_COLLAPSING:
440 /* override Fixed_abil; uncurse that if feasible */
442 You_feel("%sstronger.",
443 (AMAX(A_STR) - ABASE(A_STR) > 6) ? "much " : "");
445 You_feel("%s
\8b
\82
\82È
\82Á
\82½
\82æ
\82¤
\82¾
\81D",
446 (AMAX(A_STR) - ABASE(A_STR) > 6) ? "
\82Æ
\82Ä
\82à" : "");
448 ABASE(A_STR) = AMAX(A_STR);
451 if ((otmp = stuck_ring(uleft, RIN_SUSTAIN_ABILITY)) != 0) {
454 } else if ((otmp = stuck_ring(uright, RIN_SUSTAIN_ABILITY)) != 0) {
462 case TROUBLE_STUCK_IN_WALL:
463 /* no control, but works on no-teleport levels */
464 if (safe_teleds(FALSE)) {
466 Your("surroundings change.");
468 Your("
\8aÂ
\8b«
\82ª
\95Ï
\89»
\82µ
\82½
\81D");
470 /* safe_teleds() couldn't find a safe place; perhaps the
471 level is completely full. As a last resort, confer
472 intrinsic wall/rock-phazing. Hero might get stuck
473 again fairly soon....
474 Without something like this, fix_all_troubles can get
475 stuck in an infinite loop trying to fix STUCK_IN_WALL
476 and repeatedly failing. */
477 set_itimeout(&HPasses_walls, (long) (d(4, 4) + 4)); /* 8..20 */
478 /* how else could you move between packed rocks or among
479 lattice forming "solid" rock? */
481 You_feel("much slimmer.");
483 You_feel("
\82Æ
\82Ä
\82à
\83X
\83\8a\83\80\82É
\82È
\82Á
\82½
\8bC
\82ª
\82µ
\82½
\81D");
486 case TROUBLE_CURSED_LEVITATION:
487 if (Cursed_obj(uarmf, LEVITATION_BOOTS)) {
489 } else if ((otmp = stuck_ring(uleft, RIN_LEVITATION)) != 0) {
492 } else if ((otmp = stuck_ring(uright, RIN_LEVITATION)) != 0) {
497 case TROUBLE_UNUSEABLE_HANDS:
502 if (Upolyd && nohands(youmonst.data)) {
505 Your("shape becomes uncertain.");
507 Your("
\91Ì
\8c^
\82Í
\95s
\96¾
\8am
\82É
\82È
\82Á
\82½
\81D");
508 rehumanize(); /* "You return to {normal} form." */
509 } else if ((otmp = unchanger()) != 0 && otmp->cursed) {
510 /* otmp is an amulet of unchanging */
514 if (nohands(youmonst.data) || !freehand())
515 impossible("fix_worst_trouble: couldn't cure hands.");
517 case TROUBLE_CURSED_BLINDFOLD:
520 case TROUBLE_LYCANTHROPE:
525 case TROUBLE_PUNISHED:
527 Your("chain disappears.");
529 Your("
\8d½
\82Í
\8fÁ
\82¦
\82½
\81D");
530 if (u.utrap && u.utraptype == TT_BURIEDBALL)
531 buried_ball_to_freedom();
535 case TROUBLE_FUMBLING:
536 if (Cursed_obj(uarmg, GAUNTLETS_OF_FUMBLING))
538 else if (Cursed_obj(uarmf, FUMBLE_BOOTS))
543 case TROUBLE_CURSED_ITEMS:
544 otmp = worst_cursed_item();
547 else if (otmp == uleft)
551 impossible("fix_worst_trouble: nothing to uncurse.");
554 if (otmp == uarmg && Glib) {
557 Your("%s are no longer slippery.", gloves_simple_name(uarmg));
559 Your("%s
\82Í
\82à
\82¤
\82Ê
\82é
\82Ê
\82é
\82Å
\82Í
\82È
\82
\82È
\82Á
\82½
\81D", gloves_simple_name(uarmg));
563 if (!Blind || (otmp == ublindf && Blindfolded_only)) {
566 what ? what : (const char *) Yobjnam2(otmp, "softly glow"),
569 Your("%s
\82Í%s
\82â
\82í
\82ç
\82©
\82
\8bP
\82¢
\82½
\81D",
570 what ? what : (const char *)xname(otmp),
571 jconj_adj(hcolor(NH_AMBER)));
573 iflags.last_msg = PLNMSG_OBJ_GLOWS;
574 otmp->bknown = !Hallucination; /* ok to skip set_bknown() */
579 case TROUBLE_POISONED:
580 /* override Fixed_abil; ignore items which confer that */
583 pline("There's a tiger in your tank.");
585 pline("
\82 \82È
\82½
\82Ì
\83^
\83\93\83N
\82Ì
\92\86\82É
\83g
\83\89\82ª
\82¢
\82é
\81D");
588 You_feel("in good health again.");
590 You("
\82Ü
\82½
\8c\92\8dN
\82É
\82È
\82Á
\82½
\82æ
\82¤
\82È
\8bC
\82ª
\82µ
\82½
\81D");
591 for (i = 0; i < A_MAX; i++) {
592 if (ABASE(i) < AMAX(i)) {
597 (void) encumber_msg();
599 case TROUBLE_BLIND: { /* handles deafness as well as blindness */
602 const char *eyes = body_part(EYE);
604 boolean cure_deaf = (HDeaf & TIMEOUT) ? TRUE : FALSE;
609 if (eyecount(youmonst.data) != 1)
610 eyes = makeplural(eyes);
613 Sprintf(msgbuf, "Your %s %s better", eyes, vtense(eyes, "feel"));
615 Sprintf(msgbuf, "%s
\82ª
\89ñ
\95\9c\82µ
\82½
\82æ
\82¤
\82È
\8bC
\82ª
\82µ
\82½", body_part(EYE));
618 make_blinded(0L, FALSE);
621 make_deaf(0L, FALSE);
624 Sprintf(eos(msgbuf), "%s can hear again",
625 !*msgbuf ? "You" : " and you");
627 Sprintf(eos(msgbuf), "%s
\82Ü
\82½
\95·
\82±
\82¦
\82é
\82æ
\82¤
\82É
\82È
\82Á
\82½",
628 !*msgbuf ? "" : "
\81C
\82»
\82µ
\82Ä");
633 pline("%s.", msgbuf);
635 pline("%s
\81D", msgbuf);
638 case TROUBLE_WOUNDED_LEGS:
641 case TROUBLE_STUNNED:
642 make_stunned(0L, TRUE);
644 case TROUBLE_CONFUSED:
645 make_confused(0L, TRUE);
647 case TROUBLE_HALLUCINATION:
649 pline("Looks like you are back in Kansas.");
651 pline("
\8c©
\82Ä
\81I
\83J
\83\93\83U
\83X
\82É
\96ß
\82Á
\82Ä
\82«
\82½
\82ñ
\82¾
\82í
\81D");
652 (void) make_hallucinated(0L, FALSE, 0L);
655 otmp = which_armor(u.usteed, W_SADDLE);
658 pline("%s %s.", Yobjnam2(otmp, "softly glow"), hcolor(NH_AMBER));
660 pline("%s
\82Í%s
\82â
\82í
\82ç
\82©
\82
\8bP
\82¢
\82½
\81D", y_monnam(u.usteed), hcolor(NH_AMBER));
668 /* "I am sometimes shocked by... the nuns who never take a bath without
669 * wearing a bathrobe all the time. When asked why, since no man can see them,
670 * they reply 'Oh, but you forget the good God'. Apparently they conceive of
671 * the Deity as a Peeping Tom, whose omnipotence enables Him to see through
672 * bathroom walls, but who is foiled by bathrobes." --Bertrand Russell, 1943
673 * Divine wrath, dungeon walls, and armor follow the same principle.
676 god_zaps_you(resp_god)
682 "Suddenly a bolt of lightning comes down at you from the heavens!");
684 "
\93Ë
\91R
\8bó
\82©
\82ç
\88î
\8dÈ
\82ª
\97\8e\82¿
\82Ä
\82«
\82½
\81I");
686 pline("It strikes %s!", mon_nam(u.ustuck));
688 pline("
\88î
\8dÈ
\82Í%s
\82É
\96½
\92\86\82µ
\82½
\81I", mon_nam(u.ustuck));
689 if (!resists_elec(u.ustuck)) {
691 pline("%s fries to a crisp!", Monnam(u.ustuck));
693 pline("%s
\82Í
\83p
\83\8a\83p
\83\8a\82É
\82È
\82Á
\82½
\81I", Monnam(u.ustuck));
694 /* Yup, you get experience. It takes guts to successfully
695 * pull off this trick on your god, anyway.
696 * Other credit/blame applies (luck or alignment adjustments),
697 * but not direct kill count (pacifist conduct).
699 xkilled(u.ustuck, XKILL_NOMSG | XKILL_NOCONDUCT);
702 pline("%s seems unaffected.", Monnam(u.ustuck));
704 pline("%s
\82Í
\89e
\8b¿
\82ð
\8eó
\82¯
\82È
\82¢
\82æ
\82¤
\82¾
\81D", Monnam(u.ustuck));
707 pline("Suddenly, a bolt of lightning strikes you!");
709 pline("
\93Ë
\91R
\81C
\88î
\8dÈ
\82ª
\82 \82È
\82½
\82É
\96½
\92\86\82µ
\82½
\81I");
711 shieldeff(u.ux, u.uy);
714 pline("For some reason you're unaffected.");
716 pline("
\82È
\82º
\82©
\82 \82È
\82½
\82Í
\89e
\8b¿
\82ð
\8eó
\82¯
\82È
\82¢
\81D");
719 (void) ureflects("%s reflects from your %s.", "It");
721 (void) ureflects("%s
\82Í%s
\82É
\82æ
\82Á
\82Ä
\94½
\8eË
\82³
\82ê
\82½
\81D", "
\89½
\82©");
722 } else if (Shock_resistance) {
723 shieldeff(u.ux, u.uy);
725 pline("It seems not to affect you.");
727 pline("
\88î
\8dÈ
\82Í
\89e
\8b¿
\82ð
\97^
\82¦
\82È
\82¢
\82æ
\82¤
\82¾
\81D");
729 fry_by_god(resp_god, FALSE);
733 pline("%s is not deterred...", align_gname(resp_god));
735 pline("%s
\82Í
\82 \82«
\82ç
\82ß
\82È
\82©
\82Á
\82½
\81D
\81D
\81D", align_gname(resp_god));
738 pline("A wide-angle disintegration beam aimed at you hits %s!",
740 pline("
\82 \82È
\82½
\82ð
\91_
\82Á
\82½
\8dL
\8ap
\95²
\8dÓ
\8cõ
\90ü
\82ª%s
\82É
\96½
\92\86\82µ
\82½
\81I",
742 if (!resists_disint(u.ustuck)) {
744 pline("%s disintegrates into a pile of dust!", Monnam(u.ustuck));
746 pline("%s
\82Í
\82¿
\82è
\82Ì
\8eR
\82É
\82È
\82Á
\82½
\81I", Monnam(u.ustuck));
747 xkilled(u.ustuck, XKILL_NOMSG | XKILL_NOCORPSE | XKILL_NOCONDUCT);
750 pline("%s seems unaffected.", Monnam(u.ustuck));
752 pline("%s
\82Í
\89e
\8b¿
\82ð
\8eó
\82¯
\82È
\82¢
\82æ
\82¤
\82¾
\81D", Monnam(u.ustuck));
755 pline("A wide-angle disintegration beam hits you!");
757 pline("
\8dL
\8ap
\95²
\8dÓ
\8cõ
\90ü
\82ª
\82 \82È
\82½
\82É
\96½
\92\86\82µ
\82½
\81I");
759 /* disintegrate shield and body armor before disintegrating
760 * the impudent mortal, like black dragon breath -3.
762 if (uarms && !(EReflecting & W_ARMS)
763 && !(EDisint_resistance & W_ARMS))
764 (void) destroy_arm(uarms);
765 if (uarmc && !(EReflecting & W_ARMC)
766 && !(EDisint_resistance & W_ARMC))
767 (void) destroy_arm(uarmc);
768 if (uarm && !(EReflecting & W_ARM) && !(EDisint_resistance & W_ARM)
770 (void) destroy_arm(uarm);
771 if (uarmu && !uarm && !uarmc)
772 (void) destroy_arm(uarmu);
773 if (!Disint_resistance) {
774 fry_by_god(resp_god, TRUE);
777 You("bask in its %s glow for a minute...", NH_BLACK);
779 You("
\82µ
\82Î
\82ç
\82
\81C
\82»
\82Ì%s
\8bP
\82«
\82Å
\92g
\82Ü
\82Á
\82½
\81D
\81D
\81D", NH_BLACK);
781 godvoice(resp_god, "I believe it not!");
783 godvoice(resp_god, "
\90M
\82¶
\82ç
\82ê
\82Ê
\81I");
785 if (Is_astralevel(&u.uz) || Is_sanctum(&u.uz)) {
786 /* one more try for high altars */
788 verbalize("Thou cannot escape my wrath, mortal!");
790 verbalize("
\92è
\96½
\82Ì
\8eÒ
\82æ
\81C
\93ð
\89ä
\82ª
\93{
\82è
\82©
\82ç
\93¦
\82ª
\82ê
\82é
\82±
\82Æ
\82È
\82ç
\82ñ
\81I");
791 summon_minion(resp_god, FALSE);
792 summon_minion(resp_god, FALSE);
793 summon_minion(resp_god, FALSE);
795 verbalize("Destroy %s, my servants!", uhim());
797 verbalize("%s
\82ð
\8eE
\82¹
\81C
\82í
\82ª
\89º
\96l
\82æ
\81I", uhim());
803 fry_by_god(resp_god, via_disintegration)
805 boolean via_disintegration;
808 You("%s!", !via_disintegration ? "fry to a crisp"
809 : "disintegrate into a pile of dust");
811 You("%s
\81I", !via_disintegration ? "
\83p
\83\8a\83p
\83\8a\82É
\82È
\82Á
\82½"
812 : "
\82¿
\82è
\82Ì
\8eR
\82É
\82È
\82Á
\82½");
814 killer.format = KILLED_BY;
816 Sprintf(killer.name, "the wrath of %s", align_gname(resp_god));
818 Sprintf(killer.name, "%s
\82Ì
\93{
\82è
\82É
\90G
\82ê", align_gname(resp_god));
832 /* changed from tmp = u.ugangr + abs (u.uluck) -- rph */
833 /* added test for alignment diff -dlc */
834 if (resp_god != u.ualign.type)
835 maxanger = u.ualign.record / 2 + (Luck > 0 ? -Luck / 3 : -Luck);
837 maxanger = 3 * u.ugangr + ((Luck > 0 || u.ualign.record >= STRIDENT)
841 maxanger = 1; /* possible if bad align & good luck */
842 else if (maxanger > 15)
843 maxanger = 15; /* be reasonable */
845 switch (rn2(maxanger)) {
849 You_feel("that %s is %s.", align_gname(resp_god),
850 Hallucination ? "bummed" : "displeased");
852 You("%s
\82ª%s
\82¢
\82é
\82æ
\82¤
\82È
\8bC
\82ª
\82µ
\82½
\81D", align_gname(resp_god),
853 Hallucination ? "
\82Ë
\82¾
\82Á
\82Ä" : "
\97§
\95 \82µ
\82Ä");
858 godvoice(resp_god, (char *) 0);
860 pline("\"Thou %s, %s.\"",
861 (ugod_is_angry() && resp_god == u.ualign.type)
862 ? "hast strayed from the path"
864 youmonst.data->mlet == S_HUMAN ? "mortal" : "creature");
866 pline("
\81u
\93ð%s
\81C%s
\82æ
\81D
\81v",
867 (ugod_is_angry() && resp_god == u.ualign.type)
868 ? "
\82»
\82Ì
\93¹
\82©
\82ç
\93¥
\82Ý
\8fo
\82Ä
\82¨
\82é"
869 : "
\98ü
\96\9d\82È
\82è",
870 youmonst.data->mlet == S_HUMAN ? "
\92è
\96½
\82Ì
\82à
\82Ì" : "
\90¶
\95¨");
873 verbalize("Thou must relearn thy lessons!");
875 verbalize("
\93ð
\82¢
\82Ü
\88ê
\93x
\8aw
\82Ô
\82×
\82µ
\81I");
876 (void) adjattrib(A_WIS, -1, FALSE);
881 gods_angry(resp_god);
882 punish((struct obj *) 0);
884 } /* else fall thru */
887 gods_angry(resp_god);
888 if (!Blind && !Antimagic)
890 pline("%s glow surrounds you.", An(hcolor(NH_BLACK)));
892 pline("%s
\8cõ
\82ª
\82 \82È
\82½
\82ð
\8eæ
\82è
\8aª
\82¢
\82½
\81D", An(hcolor(NH_BLACK)));
897 godvoice(resp_god, (char *) 0);
899 verbalize("Thou durst %s me?",
900 (on_altar() && (a_align(u.ux, u.uy) != resp_god))
904 verbalize("
\93ð
\81C
\89ä%s
\81H",
905 (on_altar() && (a_align(u.ux,u.uy) != resp_god))
906 ? "
\82ð
\82³
\82°
\82·
\82Ý
\82µ
\82©
\81H"
907 : "
\82É
\8bF
\82è
\82ð
\8b\81\82ß
\82µ
\82©
\81H");
909 /* [why isn't this using verbalize()?] */
911 pline("\"Then die, %s!\"",
912 (youmonst.data->mlet == S_HUMAN) ? "mortal" : "creature");
914 pline("
\81u
\8e\80\82Ë
\81C%s
\82æ
\81I
\81v",
915 (youmonst.data->mlet == S_HUMAN) ? "
\92è
\96½
\82Ì
\82à
\82Ì" : "
\90¶
\95¨");
917 summon_minion(resp_god, FALSE);
921 gods_angry(resp_god);
922 god_zaps_you(resp_god);
925 u.ublesscnt = rnz(300);
929 /* helper to print "str appears at your feet", or appropriate */
937 /* barrier between you and the floor */
939 pline("%s %s into %s %s.", str, vtense(str, "drop"),
940 s_suffix(mon_nam(u.ustuck)), mbodypart(u.ustuck, STOMACH));
942 pline("%s
\82ª%s
\82Ì%s
\82É
\97\8e\82¿
\82½
\81D", str,
943 mon_nam(u.ustuck), mbodypart(u.ustuck, STOMACH));
947 pline("%s %s %s your %s!", str,
948 Blind ? "lands" : vtense(str, "appear"),
949 Levitation ? "beneath" : "at", makeplural(body_part(FOOT)));
951 pline("%s
\82ª
\82 \82È
\82½
\82Ì%s
\82É%s
\81I", str,
952 Levitation ? "
\89º
\95û" : "
\91«
\8c³",
953 Blind ? "
\92\85\92n
\82µ
\82½" : "
\8c»
\82í
\82ê
\82½");
962 boolean already_exists, in_hand;
965 #define ok_wep(o) ((o) && ((o)->oclass == WEAPON_CLASS || is_weptool(o)))
967 HSee_invisible |= FROMOUTSIDE;
968 HFire_resistance |= FROMOUTSIDE;
969 HCold_resistance |= FROMOUTSIDE;
970 HShock_resistance |= FROMOUTSIDE;
971 HSleep_resistance |= FROMOUTSIDE;
972 HPoison_resistance |= FROMOUTSIDE;
973 godvoice(u.ualign.type, (char *) 0);
975 class_gift = STRANGE_OBJECT;
976 /* 3.3.[01] had this in the A_NEUTRAL case,
977 preventing chaotic wizards from receiving a spellbook */
978 if (Role_if(PM_WIZARD)
979 && (!uwep || (uwep->oartifact != ART_VORPAL_BLADE
980 && uwep->oartifact != ART_STORMBRINGER))
981 && !carrying(SPE_FINGER_OF_DEATH)) {
982 class_gift = SPE_FINGER_OF_DEATH;
983 } else if (Role_if(PM_MONK) && (!uwep || !uwep->oartifact)
984 && !carrying(SPE_RESTORE_ABILITY)) {
985 /* monks rarely wield a weapon */
986 class_gift = SPE_RESTORE_ABILITY;
989 obj = ok_wep(uwep) ? uwep : 0;
990 already_exists = in_hand = FALSE; /* lint suppression */
991 switch (u.ualign.type) {
993 u.uevent.uhand_of_elbereth = 1;
995 verbalize("I crown thee... The Hand of Elbereth!");
997 verbalize("
\93ð
\82É
\81D
\81D
\81D
\83G
\83\8b\83x
\83\8c\83X
\82Ì
\8cä
\8eè
\82Ì
\89h
\97_
\82ð
\82³
\82¸
\82¯
\82æ
\82¤
\81I");
1000 u.uevent.uhand_of_elbereth = 2;
1001 in_hand = (uwep && uwep->oartifact == ART_VORPAL_BLADE);
1003 exist_artifact(LONG_SWORD, artiname(ART_VORPAL_BLADE));
1005 verbalize("Thou shalt be my Envoy of Balance!");
1007 verbalize("
\93ð
\81C
\89ä
\82ª
\92²
\98a
\82Ì
\8eg
\8eÒ
\82È
\82è
\81I");
1010 u.uevent.uhand_of_elbereth = 3;
1011 in_hand = (uwep && uwep->oartifact == ART_STORMBRINGER);
1013 exist_artifact(RUNESWORD, artiname(ART_STORMBRINGER));
1015 verbalize("Thou art chosen to %s for My Glory!",
1016 ((already_exists && !in_hand)
1017 || class_gift != STRANGE_OBJECT) ? "take lives"
1020 verbalize("
\93ð
\81C
\89ä
\82ª
\89h
\8cõ
\82Ì
\82½
\82ß%s
\8eÒ
\82Æ
\82µ
\82Ä
\91I
\82Î
\82ê
\82ñ
\81I",
1021 ((already_exists && !in_hand)
1022 || class_gift != STRANGE_OBJECT) ? "
\90¶
\82«
\82È
\82ª
\82ç
\82¦
\82ñ"
1023 : "
\8d°
\82ð
\92D
\82¢
\82µ
\82½
\82ß
\82é");
1028 if (objects[class_gift].oc_class == SPBOOK_CLASS) {
1029 obj = mksobj(class_gift, TRUE, FALSE);
1031 obj->bknown = 1; /* ok to skip set_bknown() */
1033 at_your_feet("A spellbook");
1035 at_your_feet("
\96\82\96@
\8f\91");
1038 /* when getting a new book for known spell, enhance
1039 currently wielded weapon rather than the book */
1040 for (sp_no = 0; sp_no < MAXSPELL; sp_no++)
1041 if (spl_book[sp_no].sp_id == class_gift) {
1043 obj = uwep; /* to be blessed,&c */
1048 switch (u.ualign.type) {
1050 if (class_gift != STRANGE_OBJECT) {
1051 ; /* already got bonus above */
1052 } else if (obj && obj->otyp == LONG_SWORD && !obj->oartifact) {
1055 Your("sword shines brightly for a moment.");
1057 Your("
\8c\95\82Í
\82µ
\82Î
\82ç
\82
\82Ì
\8aÔ
\96¾
\82é
\82
\8bP
\82¢
\82½
\81D");
1058 obj = oname(obj, artiname(ART_EXCALIBUR));
1059 if (obj && obj->oartifact == ART_EXCALIBUR)
1062 /* acquire Excalibur's skill regardless of weapon or gift */
1063 unrestrict_weapon_skill(P_LONG_SWORD);
1064 if (obj && obj->oartifact == ART_EXCALIBUR)
1065 discover_artifact(ART_EXCALIBUR);
1068 if (class_gift != STRANGE_OBJECT) {
1069 ; /* already got bonus above */
1070 } else if (obj && in_hand) {
1072 Your("%s goes snicker-snack!", xname(obj));
1074 Your("%s
\82Í
\83T
\83N
\83T
\83N
\82É
\82È
\82Á
\82½
\81I", xname(obj));
1076 } else if (!already_exists) {
1077 obj = mksobj(LONG_SWORD, FALSE, FALSE);
1078 obj = oname(obj, artiname(ART_VORPAL_BLADE));
1081 at_your_feet("A sword");
1083 at_your_feet("
\8c\95");
1087 /* acquire Vorpal Blade's skill regardless of weapon or gift */
1088 unrestrict_weapon_skill(P_LONG_SWORD);
1089 if (obj && obj->oartifact == ART_VORPAL_BLADE)
1090 discover_artifact(ART_VORPAL_BLADE);
1093 char swordbuf[BUFSZ];
1096 Sprintf(swordbuf, "%s sword", hcolor(NH_BLACK));
1098 Sprintf(swordbuf, "%s
\8c\95", hcolor(NH_BLACK));
1099 if (class_gift != STRANGE_OBJECT) {
1100 ; /* already got bonus above */
1101 } else if (obj && in_hand) {
1103 Your("%s hums ominously!", swordbuf);
1105 Your("%s
\82Í
\8bC
\96¡
\82Ì
\88«
\82¢
\89¹
\82ð
\97§
\82Ä
\82½
\81I", swordbuf);
1107 } else if (!already_exists) {
1108 obj = mksobj(RUNESWORD, FALSE, FALSE);
1109 obj = oname(obj, artiname(ART_STORMBRINGER));
1111 at_your_feet(An(swordbuf));
1115 /* acquire Stormbringer's skill regardless of weapon or gift */
1116 unrestrict_weapon_skill(P_BROAD_SWORD);
1117 if (obj && obj->oartifact == ART_STORMBRINGER)
1118 discover_artifact(ART_STORMBRINGER);
1126 /* enhance weapon regardless of alignment or artifact status */
1129 obj->oeroded = obj->oeroded2 = 0;
1130 obj->oerodeproof = TRUE;
1131 obj->bknown = obj->rknown = 1; /* ok to skip set_bknown() */
1134 /* acquire skill in this weapon */
1135 unrestrict_weapon_skill(weapon_type(obj));
1136 } else if (class_gift == STRANGE_OBJECT) {
1137 /* opportunity knocked, but there was nobody home... */
1139 You_feel("unworthy.");
1141 You("
\89¿
\92l
\82ª
\82È
\82¢
\82Æ
\8ev
\82Á
\82½
\81D");
1145 /* lastly, confer an extra skill slot/credit beyond the
1146 up-to-29 you can get from gaining experience levels */
1147 add_weapon_skill(1);
1155 /* don't use p_trouble, worst trouble may get fixed while praying */
1156 int trouble = in_trouble(); /* what's your worst difficulty? */
1157 int pat_on_head = 0, kick_on_butt;
1160 You_feel("that %s is %s.", align_gname(g_align),
1161 (u.ualign.record >= DEVOUT)
1162 ? Hallucination ? "pleased as punch" : "well-pleased"
1163 : (u.ualign.record >= STRIDENT)
1164 ? Hallucination ? "ticklish" : "pleased"
1165 : Hallucination ? "full" : "satisfied");
1167 pline("%s
\82ª%s
\82æ
\82¤
\82È
\8bC
\82ª
\82µ
\82½
\81D", align_gname(g_align),
1168 (u.ualign.record >= DEVOUT)
1169 ? Hallucination ? "
\82
\82»
\8b@
\8c\99\82¢
\82¢" : "
\82²
\8b@
\8c\99\97í
\82µ
\82¢"
1170 : (u.ualign.record >= STRIDENT)
1171 ? Hallucination ? "
\82
\82·
\82®
\82Á
\82½
\82ª
\82Á
\82Ä
\82¢
\82é" : "
\8fã
\8b@
\8c\99\82Å
\82 \82é"
1172 : Hallucination ? "
\95 \82¢
\82Á
\82Ï
\82¢
\82Å
\82 \82é" : "
\96\9e\91«
\82µ
\82Ä
\82¢
\82é");
1175 /* not your deity */
1176 if (on_altar() && p_aligntyp != u.ualign.type) {
1179 } else if (u.ualign.record < 2 && trouble <= 0)
1183 * Depending on your luck & align level, the god you prayed to will:
1184 * - fix your worst problem if it's major;
1185 * - fix all your major problems;
1186 * - fix your worst problem if it's minor;
1187 * - fix all of your problems;
1188 * - do you a gratuitous favor.
1190 * If you make it to the last category, you roll randomly again
1191 * to see what they do for you.
1193 * If your luck is at least 0, then you are guaranteed rescued from
1194 * your worst major problem.
1196 if (!trouble && u.ualign.record >= DEVOUT) {
1197 /* if hero was in trouble, but got better, no special favor */
1201 int action, prayer_luck;
1204 /* Negative luck is normally impossible here (can_pray() forces
1205 prayer failure in that situation), but it's possible for
1206 Luck to drop during the period of prayer occupation and
1207 become negative by the time we get here. [Reported case
1208 was lawful character whose stinking cloud caused a delayed
1209 killing of a peaceful human, triggering the "murderer"
1210 penalty while successful prayer was in progress. It could
1211 also happen due to inconvenient timing on Friday 13th, but
1212 the magnitude there (-1) isn't big enough to cause trouble.]
1213 We don't bother remembering start-of-prayer luck, just make
1214 sure it's at least -1 so that Luck+2 is big enough to avoid
1215 a divide by zero crash when generating a random number. */
1216 prayer_luck = max(Luck, -1); /* => (prayer_luck + 2 > 0) */
1217 action = rn1(prayer_luck + (on_altar() ? 3 + on_shrine() : 2), 1);
1219 action = min(action, 3);
1220 if (u.ualign.record < STRIDENT)
1221 action = (u.ualign.record > 0 || !rnl(2)) ? 1 : 0;
1223 switch (min(action, 5)) {
1229 fix_worst_trouble(trouble);
1230 while ((trouble = in_trouble()) != 0);
1234 fix_worst_trouble(trouble);
1236 /* arbitrary number of tries */
1237 while ((trouble = in_trouble()) > 0 && (++tryct < 10))
1238 fix_worst_trouble(trouble);
1243 fix_worst_trouble(trouble);
1245 break; /* your god blows you off, too bad */
1249 /* note: can't get pat_on_head unless all troubles have just been
1250 fixed or there were no troubles to begin with; hallucination
1251 won't be in effect so special handling for it is superfluous */
1253 switch (rn2((Luck + 6) >> 1)) {
1257 if (uwep && (welded(uwep) || uwep->oclass == WEAPON_CLASS
1258 || is_weptool(uwep))) {
1259 char repair_buf[BUFSZ];
1262 if (uwep->oeroded || uwep->oeroded2)
1264 Sprintf(repair_buf, " and %s now as good as new",
1265 otense(uwep, "are"));
1267 Sprintf(repair_buf, "
\82³
\82ç
\82É
\90V
\95i
\93¯
\97l
\82É
\82È
\82Á
\82½
\81D");
1273 pline("%s %s%s.", Yobjnam2(uwep, "softly glow"),
1274 hcolor(NH_AMBER), repair_buf);
1276 Your("%s
\82Í%s
\82â
\82í
\82ç
\82©
\82
\8bP
\82¢
\82½
\81D%s", xname(uwep),
1277 jconj_adj(hcolor(NH_AMBER)), repair_buf);
1279 iflags.last_msg = PLNMSG_OBJ_GLOWS;
1282 You_feel("the power of %s over %s.", u_gname(),
1285 pline("%s
\82Ì
\97Í
\82ª%s
\82É
\92\8d\82ª
\82ê
\82Ä
\82¢
\82é
\82Ì
\82ð
\8a´
\82¶
\82½
\81D", u_gname(),
1289 uwep->bknown = 1; /* ok to bypass set_bknown() */
1291 } else if (!uwep->blessed) {
1294 pline("%s with %s aura%s.",
1295 Yobjnam2(uwep, "softly glow"),
1296 an(hcolor(NH_LIGHT_BLUE)), repair_buf);
1298 Your("%s
\82Í%s
\82â
\82í
\82ç
\82©
\82È
\83I
\81[
\83\89\82É
\82Â
\82Â
\82Ü
\82ê
\82½
\81D%s",
1300 an(hcolor(NH_LIGHT_BLUE)), repair_buf);
1302 iflags.last_msg = PLNMSG_OBJ_GLOWS;
1305 You_feel("the blessing of %s over %s.", u_gname(),
1308 pline("%s
\82Ì
\8fj
\95\9f\82ª%s
\82É
\92\8d\82ª
\82ê
\82Ä
\82¢
\82é
\82Ì
\82ð
\8a´
\82¶
\82½
\81D", u_gname(),
1312 uwep->bknown = 1; /* ok to bypass set_bknown() */
1316 /* fix any rust/burn/rot damage, but don't protect
1317 against future damage */
1318 if (uwep->oeroded || uwep->oeroded2) {
1319 uwep->oeroded = uwep->oeroded2 = 0;
1320 /* only give this message if we didn't just bless
1321 or uncurse (which has already given a message) */
1324 pline("%s as good as new!",
1325 Yobjnam2(uwep, Blind ? "feel" : "look"));
1327 Your("%s
\82Í
\90V
\95i
\93¯
\97l
\82É
\82È
\82Á
\82½%s
\81I",
1328 xname(uwep), Blind ? "
\82æ
\82¤
\82È
\8bC
\82ª
\82·
\82é" : "");
1335 /* takes 2 hints to get the music to enter the stronghold;
1336 skip if you've solved it via mastermind or destroyed the
1337 drawbridge (both set uopened_dbridge) or if you've already
1338 travelled past the Valley of the Dead (gehennom_entered) */
1339 if (!u.uevent.uopened_dbridge && !u.uevent.gehennom_entered) {
1340 if (u.uevent.uheard_tune < 1) {
1341 godvoice(g_align, (char *) 0);
1343 verbalize("Hark, %s!", youmonst.data->mlet == S_HUMAN
1347 verbalize("%s
\82æ
\81C
\95·
\82¯
\81I", youmonst.data->mlet == S_HUMAN
1348 ? "
\92è
\96½
\82Ì
\8eÒ"
1353 "To enter the castle, thou must play the right tune!");
1355 "
\93ð
\8fé
\82É
\93ü
\82ç
\82ñ
\82Æ
\97~
\82·
\82é
\82È
\82ç
\82Î
\81C
\90³
\82µ
\82«
\92²
\82×
\82ð
\91t
\82Å
\82é
\82×
\82µ
\81I");
1356 u.uevent.uheard_tune++;
1358 } else if (u.uevent.uheard_tune < 2) {
1360 You_hear("a divine music...");
1362 You_hear("
\90_
\82Ì
\89¹
\8ay
\82ð
\95·
\82¢
\82½
\81D
\81D
\81D");
1364 pline("It sounds like: \"%s\".", tune);
1366 pline("
\82»
\82ê
\82Í
\8e\9f\82Ì
\82æ
\82¤
\82É
\95·
\82±
\82¦
\82½:
\81u%s
\81v", tune);
1367 u.uevent.uheard_tune++;
1375 You("are surrounded by %s glow.", an(hcolor(NH_GOLDEN)));
1377 You("%s
\8bP
\82«
\82É
\82Â
\82Â
\82Ü
\82ê
\82½
\81D", hcolor(NH_GOLDEN));
1378 /* if any levels have been lost (and not yet regained),
1379 treat this effect like blessed full healing */
1380 if (u.ulevel < u.ulevelmax) {
1381 u.ulevelmax -= 1; /* see potion.c */
1391 if (ABASE(A_STR) < AMAX(A_STR)) {
1392 ABASE(A_STR) = AMAX(A_STR);
1393 context.botl = 1; /* before potential message */
1394 (void) encumber_msg();
1396 if (u.uhunger < 900)
1398 /* luck couldn't have been negative at start of prayer because
1399 the prayer would have failed, but might have been decremented
1400 due to a timed event (delayed death of peaceful monster hit
1401 by hero-created stinking cloud) during the praying interval */
1404 /* superfluous; if hero was blinded we'd be handling trouble
1405 rather than issuing a pat-on-head */
1407 make_blinded(0L, TRUE);
1411 register struct obj *otmp;
1416 You_feel("the power of %s.", u_gname());
1418 You("%s
\82Ì
\97Í
\82ð
\8a´
\82¶
\82½
\81D", u_gname());
1421 You("are surrounded by %s aura.", an(hcolor(NH_LIGHT_BLUE)));
1423 You("%s
\83I
\81[
\83\89\82É
\82Â
\82Â
\82Ü
\82ê
\82½
\81D", an(hcolor(NH_LIGHT_BLUE)));
1424 for (otmp = invent; otmp; otmp = otmp->nobj) {
1426 && (otmp != uarmh /* [see worst_cursed_item()] */
1427 || uarmh->otyp != HELM_OF_OPPOSITE_ALIGNMENT)) {
1430 pline("%s %s.", Yobjnam2(otmp, "softly glow"),
1433 Your("%s
\82Í%s
\82â
\82í
\82ç
\82©
\82
\8bP
\82¢
\82½
\81D", xname(otmp),
1434 jconj_adj(hcolor(NH_AMBER)));
1436 iflags.last_msg = PLNMSG_OBJ_GLOWS;
1437 otmp->bknown = 1; /* ok to bypass set_bknown() */
1448 static NEARDATA const char msg[] =
1450 "\"and thus I grant thee the gift of %s!\"";
1452 "
\81u
\82³
\82ç
\82É
\93ð
\82É%s
\82ð
\82³
\82¸
\82¯
\82æ
\82¤
\81I
\81v";
1454 godvoice(u.ualign.type,
1456 "Thou hast pleased me with thy progress,");
1458 "
\93ð
\82Ì
\90¬
\92·
\82Í
\94ñ
\8fí
\82É
\96]
\82Ü
\82µ
\82¢
\81C");
1459 if (!(HTelepat & INTRINSIC)) {
1460 HTelepat |= FROMOUTSIDE;
1462 pline(msg, "Telepathy");
1464 pline(msg, "
\83e
\83\8c\83p
\83V
\81[");
1467 } else if (!(HFast & INTRINSIC)) {
1468 HFast |= FROMOUTSIDE;
1470 pline(msg, "Speed");
1472 pline(msg, "
\91¬
\82³");
1473 } else if (!(HStealth & INTRINSIC)) {
1474 HStealth |= FROMOUTSIDE;
1476 pline(msg, "Stealth");
1478 pline(msg, "
\94E
\82Ì
\97Í");
1480 if (!(HProtection & INTRINSIC)) {
1481 HProtection |= FROMOUTSIDE;
1483 u.ublessed = rn1(3, 2);
1487 pline(msg, "my protection");
1489 pline(msg, "
\89ä
\82ª
\8cì
\82è");
1492 verbalize("Use it wisely in my name!");
1494 verbalize("
\89ä
\82ª
\96¼
\82É
\89\97\82¢
\82Ä
\97L
\8cø
\82É
\8eg
\82¤
\82ª
\82æ
\82¢
\81I");
1499 if (u.ualign.record >= PIOUS && !u.uevent.uhand_of_elbereth) {
1506 int sp_no, trycnt = u.ulevel + 1;
1508 /* not yet known spells given preference over already known ones
1510 /* Also, try to grant a spell for which there is a skill slot */
1511 otmp = mkobj(SPBOOK_CLASS, TRUE);
1512 while (--trycnt > 0) {
1513 if (otmp->otyp != SPE_BLANK_PAPER) {
1514 for (sp_no = 0; sp_no < MAXSPELL; sp_no++)
1515 if (spl_book[sp_no].sp_id == otmp->otyp)
1517 if (sp_no == MAXSPELL
1518 && !P_RESTRICTED(spell_skilltype(otmp->otyp)))
1519 break; /* usable, but not yet known */
1521 if (!objects[SPE_BLANK_PAPER].oc_name_known
1522 || carrying(MAGIC_MARKER))
1525 otmp->otyp = rnd_class(bases[SPBOOK_CLASS], SPE_BLANK_PAPER);
1529 at_your_feet("A spellbook");
1531 at_your_feet("
\96\82\96@
\8f\91");
1532 place_object(otmp, u.ux, u.uy);
1537 impossible("Confused deity!");
1541 u.ublesscnt = rnz(350);
1542 kick_on_butt = u.uevent.udemigod ? 1 : 0;
1543 if (u.uevent.uhand_of_elbereth)
1546 u.ublesscnt += kick_on_butt * rnz(1000);
1551 /* either blesses or curses water on the altar,
1552 * returns true if it found any water here.
1555 water_prayer(bless_water)
1556 boolean bless_water;
1558 register struct obj *otmp;
1559 register long changed = 0;
1560 boolean other = FALSE, bc_known = !(Blind || Hallucination);
1562 for (otmp = level.objects[u.ux][u.uy]; otmp; otmp = otmp->nexthere) {
1563 /* turn water into (un)holy water */
1564 if (otmp->otyp == POT_WATER
1565 && (bless_water ? !otmp->blessed : !otmp->cursed)) {
1566 otmp->blessed = bless_water;
1567 otmp->cursed = !bless_water;
1568 otmp->bknown = bc_known; /* ok to bypass set_bknown() */
1569 changed += otmp->quan;
1570 } else if (otmp->oclass == POTION_CLASS)
1573 if (!Blind && changed) {
1575 pline("%s potion%s on the altar glow%s %s for a moment.",
1576 ((other && changed > 1L) ? "Some of the"
1577 : (other ? "One of the" : "The")),
1578 ((other || changed > 1L) ? "s" : ""), (changed > 1L ? "" : "s"),
1579 (bless_water ? hcolor(NH_LIGHT_BLUE) : hcolor(NH_BLACK)));
1581 pline("%s
\8dÕ
\92d
\82Ì
\96ò
\82Í
\88ê
\8fu%s
\8bP
\82¢
\82½
\81D",
1582 (other && changed > 1L) ? "
\82¢
\82
\82Â
\82©
\82Ì"
1584 jconj_adj(bless_water ? hcolor(NH_LIGHT_BLUE) : hcolor(NH_BLACK)));
1587 return (boolean) (changed > 0L);
1591 godvoice(g_align, words)
1596 const char *quot = "";
1603 pline_The("voice of %s %s: %s%s%s", align_gname(g_align),
1604 godvoices[rn2(SIZE(godvoices))], quot, words, quot);
1607 pline("%s
\82Ì
\90º
\82ª%s:
\81u%s
\81v", align_gname(g_align),
1608 godvoices[rn2(SIZE(godvoices))], words);
1610 pline("%s
\82Ì
\90º
\82ª%s
\81F", align_gname(g_align),
1611 godvoices[rn2(SIZE(godvoices))]);
1620 godvoice(g_align, "Thou hast angered me.");
1622 godvoice(g_align, "
\93ð
\81C
\89ä
\82ð
\93{
\82ç
\82µ
\82ß
\82½
\82è
\81D");
1625 /* The g_align god is upset with you. */
1630 if (g_align == u.ualign.type)
1638 consume_offering(otmp)
1639 register struct obj *otmp;
1645 Your("sacrifice sprouts wings and a propeller and roars away!");
1647 Your("
\8c£
\8fã
\95¨
\82Í
\89H
\82ð
\82Í
\82â
\82µ
\81C
\83v
\83\8d\83y
\83\89\82ª
\82Ü
\82í
\82è
\81C
\94ò
\82ñ
\82Å
\82Á
\82½
\81I");
1651 Your("sacrifice puffs up, swelling bigger and bigger, and pops!");
1653 Your("
\8c£
\8fã
\95¨
\82Í
\95¬
\89\8c\82ð
\82 \82°
\81C
\82Ç
\82ñ
\82Ç
\82ñ
\96c
\82ê
\81C
\82»
\82µ
\82Ä
\82Í
\82¶
\82¯
\82½
\81I");
1658 "sacrifice collapses into a cloud of dancing particles and fades away!");
1660 "
\8c£
\8fã
\95¨
\82Í
\8d×
\82©
\82
\8dÓ
\82¯
\81C
\97x
\82è
\8fo
\82µ
\81C
\82Ç
\82±
\82©
\82É
\8ds
\82Á
\82Ä
\82µ
\82Ü
\82Á
\82½
\81I");
1663 else if (Blind && u.ualign.type == A_LAWFUL)
1665 Your("sacrifice disappears!");
1667 Your("
\8c£
\8fã
\95¨
\82Í
\8fÁ
\82¦
\82½
\81I");
1670 Your("sacrifice is consumed in a %s!",
1671 u.ualign.type == A_LAWFUL ? "flash of light" : "burst of flame");
1673 Your("
\8c£
\8fã
\95¨
\82Í%s
\8fÁ
\82¦
\82³
\82Á
\82½
\81I",
1674 u.ualign.type == A_LAWFUL ? "
\82Ü
\82Î
\82ä
\82¢
\8cõ
\82ð
\95ú
\82¿" : "
\89\8a\82ð
\8fã
\82°");
1680 exercise(A_WIS, TRUE);
1686 static NEARDATA const char cloud_of_smoke[] =
1688 "A cloud of %s smoke surrounds you...";
1690 "%s
\89\8c\82ª
\82 \82È
\82½
\82ð
\8eæ
\82è
\88Í
\82ñ
\82¾
\81D
\81D
\81D";
1691 register struct obj *otmp;
1694 aligntyp altaralign = a_align(u.ux, u.uy);
1696 if (!on_altar() || u.uswallow) {
1698 You("are not standing on an altar.");
1700 You("
\8dÕ
\92d
\82Ì
\8fã
\82É
\97§
\82Á
\82Ä
\82¢
\82È
\82¢
\81D");
1703 highaltar = ((Is_astralevel(&u.uz) || Is_sanctum(&u.uz))
1704 && (levl[u.ux][u.uy].altarmask & AM_SHRINE));
1706 otmp = floorfood("sacrifice", 1);
1710 * Was based on nutritional value and aging behavior (< 50 moves).
1711 * Sacrificing a food ration got you max luck instantly, making the
1712 * gods as easy to please as an angry dog!
1714 * Now only accepts corpses, based on the game's evaluation of their
1715 * toughness. Human and pet sacrifice, as well as sacrificing unicorns
1716 * of your alignment, is strongly discouraged.
1718 #define MAXVALUE 24 /* Highest corpse value (besides Wiz) */
1720 if (otmp->otyp == CORPSE) {
1721 register struct permonst *ptr = &mons[otmp->corpsenm];
1725 u.uconduct.gnostic++;
1727 /* you're handling this corpse, even if it was killed upon the altar
1729 feel_cockatrice(otmp, TRUE);
1730 if (rider_corpse_revival(otmp, FALSE))
1733 if (otmp->corpsenm == PM_ACID_BLOB
1734 || (monstermoves <= peek_at_iced_corpse_age(otmp) + 50)) {
1735 value = mons[otmp->corpsenm].difficulty + 1;
1737 value = eaten_stat(value, otmp);
1740 if (your_race(ptr)) {
1741 if (is_demon(youmonst.data)) {
1743 You("find the idea very satisfying.");
1745 You("
\82»
\82Ì
\8dl
\82¦
\82Í
\91f
\90°
\82µ
\82¢
\82Æ
\8ev
\82Á
\82½
\81D");
1746 exercise(A_WIS, TRUE);
1747 } else if (u.ualign.type != A_CHAOTIC) {
1749 pline("You'll regret this infamous offense!");
1751 pline("
\93ð
\81C
\82±
\82Ì
\95\8e\90J
\82Ì
\8ds
\82È
\82¢
\82ð
\8cã
\89÷
\82·
\82é
\82×
\82µ
\81I");
1752 exercise(A_WIS, FALSE);
1756 && (altaralign != A_CHAOTIC || u.ualign.type != A_CHAOTIC)) {
1757 goto desecrate_high_altar;
1758 } else if (altaralign != A_CHAOTIC && altaralign != A_NONE) {
1759 /* curse the lawful/neutral altar */
1761 pline_The("altar is stained with %s blood.", urace.adj);
1763 pline("
\8dÕ
\92d
\82Í%s
\82Ì
\8c\8c\82Å
\89\98\82ê
\82Ä
\82¢
\82é
\81D", urace.adj);
1764 levl[u.ux][u.uy].altarmask = AM_CHAOTIC;
1768 const char *demonless_msg;
1770 /* Human sacrifice on a chaotic or unaligned altar */
1771 /* is equivalent to demon summoning */
1772 if (altaralign == A_CHAOTIC && u.ualign.type != A_CHAOTIC) {
1775 "The blood floods the altar, which vanishes in %s cloud!",
1777 "
\8c\8c\82ª
\8dÕ
\92d
\82©
\82ç
\82 \82Ó
\82ê
\81C
\8dÕ
\92d
\82Í%s
\89_
\82Æ
\82È
\82è
\8fÁ
\82¦
\82½
\81I",
1778 an(hcolor(NH_BLACK)));
1779 levl[u.ux][u.uy].typ = ROOM;
1780 levl[u.ux][u.uy].altarmask = 0;
1784 demonless_msg = "cloud dissipates";
1786 demonless_msg = "
\89_
\82Í
\8fÁ
\82¦
\82½
\81D";
1788 /* either you're chaotic or altar is Moloch's or both */
1790 pline_The("blood covers the altar!");
1792 pline("
\8c\8c\82ª
\8dÕ
\92d
\82ð
\95¢
\82Á
\82½
\81I");
1793 change_luck(altaralign == A_NONE ? -2 : 2);
1795 demonless_msg = "blood coagulates";
1797 demonless_msg = "
\8c\8c\82ª
\82±
\82Ñ
\82è
\82Â
\82¢
\82½";
1799 if ((pm = dlord(altaralign)) != NON_PM
1800 && (dmon = makemon(&mons[pm], u.ux, u.uy, NO_MM_FLAGS))
1804 Strcpy(dbuf, a_monnam(dmon));
1806 if (!strcmpi(dbuf, "it"))
1808 if (!strcmpi(dbuf, "
\89½
\8eÒ
\82©"))
1810 Strcpy(dbuf, "something dreadful");
1812 Strcpy(dbuf, "
\89½
\82©
\8b°
\82ë
\82µ
\82¢
\82à
\82Ì");
1814 dmon->mstrategy &= ~STRAT_APPEARMSG;
1816 You("have summoned %s!", dbuf);
1818 You("%s
\82ð
\8f¢
\8a«
\82µ
\82½
\81I", dbuf);
1819 if (sgn(u.ualign.type) == sgn(dmon->data->maligntyp))
1820 dmon->mpeaceful = TRUE;
1822 You("are terrified, and unable to move.");
1824 You("
\8b°
\95|
\82Å
\93®
\82¯
\82È
\82
\82È
\82Á
\82½
\81D");
1827 multi_reason = "being terrified of a demon";
1829 multi_reason = "
\88«
\97ì
\82É
\8b°
\95|
\82µ
\82Ä
\82¢
\82é
\8e\9e\82É";
1833 pline_The("%s.", demonless_msg);
1835 pline("%s
\81D", demonless_msg);
1838 if (u.ualign.type != A_CHAOTIC) {
1841 (void) adjattrib(A_WIS, -1, TRUE);
1843 angrygods(u.ualign.type);
1852 } else if (has_omonst(otmp)
1853 && (mtmp = get_mtraits(otmp, FALSE)) != 0
1855 /* mtmp is a temporary pointer to a tame monster's attributes,
1856 * not a real monster */
1858 pline("So this is how you repay loyalty?");
1860 pline("
\82»
\82ê
\82Å
\82±
\82ê
\82ª
\82 \82È
\82½
\82Ì
\92\89\8b`
\82É
\95ñ
\82¢
\82é
\82à
\82Ì
\82©
\81H");
1863 HAggravate_monster |= FROMOUTSIDE;
1864 } else if (is_undead(ptr)) { /* Not demons--no demon corpses */
1865 if (u.ualign.type != A_CHAOTIC)
1867 } else if (is_unicorn(ptr)) {
1868 int unicalign = sgn(ptr->maligntyp);
1870 if (unicalign == altaralign) {
1871 /* When same as altar, always a very bad action.
1874 pline("Such an action is an insult to %s!",
1875 (unicalign == A_CHAOTIC) ? "chaos"
1876 : unicalign ? "law" : "balance");
1878 pline("
\82»
\82Ì
\82æ
\82¤
\82È
\8ds
\93®
\82Í
\81w%s
\81x
\82É
\94½
\82·
\82é
\81I",
1879 (unicalign == A_CHAOTIC) ? "
\8d¬
\93×"
1880 : unicalign ? "
\92\81\8f\98" : "
\92²
\98a");
1882 (void) adjattrib(A_WIS, -1, TRUE);
1884 } else if (u.ualign.type == altaralign) {
1885 /* When different from altar, and altar is same as yours,
1886 * it's a very good action.
1888 if (u.ualign.record < ALIGNLIM)
1890 You_feel("appropriately %s.", align_str(u.ualign.type));
1892 You("%s
\82É
\82Ó
\82³
\82í
\82µ
\82¢
\82Æ
\8a´
\82¶
\82½
\81D", align_str(u.ualign.type));
1895 You_feel("you are thoroughly on the right path.");
1897 You("
\8a®
\91S
\82É
\90³
\82µ
\82¢
\93¹
\82ð
\95à
\82ñ
\82Å
\82¢
\82é
\82Ì
\82ð
\8a´
\82¶
\82½
\81D");
1900 } else if (unicalign == u.ualign.type) {
1901 /* When sacrificing unicorn of your alignment to altar not of
1902 * your alignment, your god gets angry and it's a conversion.
1904 u.ualign.record = -1;
1907 /* Otherwise, unicorn's alignment is different from yours
1908 * and different from the altar's. It's an ordinary (well,
1909 * with a bonus) sacrifice on a cross-aligned altar.
1916 if (otmp->otyp == AMULET_OF_YENDOR) {
1919 if (altaralign == A_NONE && Inhell)
1920 /* hero has left Moloch's Sanctum so is in the process
1921 of getting away with the Amulet (outside of Gehennom,
1922 fall through to the "ashamed" feedback) */
1929 /* if on track, give a big hint */
1930 : (altaralign == u.ualign.type)
1931 ? "an urge to return to the surface"
1932 /* else headed towards celestial disgrace */
1937 ? "
\8cÌ
\8b½
\82ª
\97ö
\82µ
\82
\82È
\82Á
\82½"
1938 /* if on track, give a big hint */
1939 : (altaralign == u.ualign.type)
1940 ? "
\92n
\8fã
\82É
\8bA
\82è
\82½
\82¢
\8bC
\8e\9d\82É
\8bì
\82è
\97§
\82Ä
\82ç
\82ê
\82½"
1941 /* else headed towards celestial disgrace */
1942 : "
\92p
\82¸
\82©
\82µ
\82¢
\8ev
\82¢
\82ª
\82µ
\82½");
1946 /* The final Test. Did you win? */
1949 u.uevent.ascended = 1;
1951 useup(otmp); /* well, it's gone now */
1955 You("offer the Amulet of Yendor to %s...", a_gname());
1957 You("
\83C
\83F
\83\93\83_
\81[
\82Ì
\96\82\8f\9c\82¯
\82ð%s
\82É
\8c£
\8fã
\82µ
\82½
\81D
\81D
\81D",a_gname());
1958 if (altaralign == A_NONE) {
1959 /* Moloch's high altar */
1960 if (u.ualign.record > -99)
1961 u.ualign.record = -99;
1962 /*[apparently shrug/snarl can be sensed without being seen]*/
1964 pline("%s shrugs and retains dominion over %s,", Moloch,
1967 pline("%s
\82Í
\8c¨
\82ð
\82·
\82
\82ß
\81C%s
\82É
\91Î
\82·
\82é
\97D
\90¨
\82ð
\88Û
\8e\9d\82µ
\82½
\81D", Moloch,
1971 pline("then mercilessly snuffs out your life.");
1973 pline("
\82»
\82µ
\82Ä
\96³
\8e\9c\94ß
\82É
\82 \82È
\82½
\82Ì
\96½
\82ð
\92D
\82Á
\82½
\81D");
1977 Sprintf(killer.name, "%s indifference", s_suffix(Moloch));
1979 Sprintf(killer.name, "
\97â
\92W
\82È%s", Moloch);
1981 killer.format = KILLED_BY;
1983 /* life-saved (or declined to die in wizard/explore mode) */
1985 pline("%s snarls and tries again...", Moloch);
1987 pline("%s
\82Í
\82Ì
\82Ì
\82µ
\82è
\81C
\82à
\82¤
\88ê
\93x
\8e\8e\82µ
\82½
\81D
\81D
\81D", Moloch);
1988 fry_by_god(A_NONE, TRUE); /* wrath of Moloch */
1989 /* declined to die in wizard or explore mode */
1990 pline(cloud_of_smoke, hcolor(NH_BLACK));
1992 } else if (u.ualign.type != altaralign) {
1993 /* And the opposing team picks you up and
1994 carries you off on their shoulders */
1997 pline("%s accepts your gift, and gains dominion over %s...",
1998 a_gname(), u_gname());
2000 pline("%s
\82Í
\82 \82È
\82½
\82Ì
\91\97\82è
\95¨
\82ð
\8eó
\82¯
\82Æ
\82è
\81C%s
\82Ì
\8c \97Í
\82ð
\93¾
\82½
\81D
\81D
\81D",
2001 a_gname(), u_gname());
2004 pline("%s is enraged...", u_gname());
2006 pline("%s
\82Í
\8c\83\93{
\82µ
\82½
\81D
\81D
\81D", u_gname());
2008 pline("Fortunately, %s permits you to live...", a_gname());
2010 pline("
\8dK
\89^
\82É
\82à
\81C%s
\82Í
\82 \82È
\82½
\82Ì
\91¶
\8dÝ
\82ð
\8b\96\82µ
\82Ä
\82¢
\82é
\81D
\81D
\81D",a_gname());
2011 pline(cloud_of_smoke, hcolor(NH_ORANGE));
2013 } else { /* super big win */
2015 u.uachieve.ascended = 1;
2018 "An invisible choir sings, and you are bathed in radiance...");
2020 "
\82Ç
\82±
\82©
\82ç
\82Æ
\82à
\82È
\82
\90¹
\89Ì
\91à
\82Ì
\89Ì
\82ª
\95·
\82±
\82¦
\81C
\82 \82È
\82½
\82Í
\8cõ
\82É
\95ï
\82Ü
\82ê
\82½
\81D
\81D
\81D");
2022 godvoice(altaralign, "Mortal, thou hast done well!");
2024 godvoice(altaralign, "
\92è
\96½
\82Ì
\8eÒ
\82æ
\81C
\82æ
\82
\82â
\82Á
\82½
\81I");
2025 display_nhwindow(WIN_MESSAGE, FALSE);
2028 "In return for thy service, I grant thee the gift of Immortality!");
2030 "
\93ð
\82Ì
\88Ì
\8bÆ
\82É
\91Î
\82µ
\81C
\95s
\8e\80\82Ì
\91Ì
\82ð
\8eö
\82¯
\82æ
\82¤
\82¼
\81I");
2032 You("ascend to the status of Demigod%s...",
2033 flags.female ? "dess" : "");
2035 You("
\8f¸
\93V
\82µ
\81C%s
\90_
\82Æ
\82È
\82Á
\82½
\81D
\81D
\81D",
2036 flags.female ? "
\8f\97" : "");
2043 if (otmp->otyp == FAKE_AMULET_OF_YENDOR) {
2044 if (!highaltar && !otmp->known)
2047 You_hear("a nearby thunderclap.");
2049 You("
\8bß
\82
\82É
\97\8b\82ª
\97\8e\82¿
\82½
\89¹
\82ð
\95·
\82¢
\82½
\81D");
2052 You("realize you have made a %s.",
2053 Hallucination ? "boo-boo" : "mistake");
2055 You("%s
\82±
\82Æ
\82É
\8bC
\82ª
\82Â
\82¢
\82½
\81D",
2056 Hallucination ? "
\81u
\83n
\83Y
\83\8c\81v
\82¾
\82Á
\82½" : "
\8aÔ
\88á
\82¢
\82ð
\94Æ
\82µ
\82½");
2062 /* don't you dare try to fool the gods */
2065 pline("Oh, no."); /* didn't hear thunderclap */
2067 pline("
\82È
\82ñ
\82Ä
\82±
\82Á
\82½
\81D"); /* didn't hear thunderclap */
2077 pline1(nothing_happens);
2081 if (altaralign != u.ualign.type && highaltar) {
2082 desecrate_high_altar:
2084 * REAL BAD NEWS!!! High altars cannot be converted. Even an attempt
2085 * gets the god who owns it truly pissed off.
2088 You_feel("the air around you grow charged...");
2090 You("
\89ñ
\82è
\82Ì
\8bó
\8bC
\82É
\83G
\83l
\83\8b\83M
\81[
\82ª
\96\9e\82¿
\82Ä
\82¢
\82
\82æ
\82¤
\82È
\8bC
\82ª
\82µ
\82½
\81D
\81D
\81D");
2092 pline("Suddenly, you realize that %s has noticed you...", a_gname());
2094 pline("
\93Ë
\91R
\81C%s
\82ª
\82 \82È
\82½
\82ð
\82¶
\82Á
\82Æ
\8c©
\82Ä
\82¢
\82é
\82Ì
\82É
\8bC
\82ª
\82Â
\82¢
\82½
\81D
\81D
\81D",a_gname());
2095 godvoice(altaralign,
2097 "So, mortal! You dare desecrate my High Temple!");
2099 "
\92è
\96½
\82Ì
\8eÒ
\82æ
\81I
\82¨
\82Ü
\82¦
\82Í
\89ä
\82ª
\90_
\90¹
\82È
\82é
\8e\9b\89@
\82ð
\89\98\82·
\82Ì
\82©
\81I");
2100 /* Throw everything we have at the player */
2101 god_zaps_you(altaralign);
2103 < 0) { /* I don't think the gods are gonna like this... */
2104 gods_upset(altaralign);
2106 int saved_anger = u.ugangr;
2107 int saved_cnt = u.ublesscnt;
2108 int saved_luck = u.uluck;
2110 /* Sacrificing at an altar of a different alignment */
2111 if (u.ualign.type != altaralign) {
2112 /* Is this a conversion ? */
2113 /* An unaligned altar in Gehennom will always elicit rejection. */
2114 if (ugod_is_angry() || (altaralign == A_NONE && Inhell)) {
2115 if (u.ualignbase[A_CURRENT] == u.ualignbase[A_ORIGINAL]
2116 && altaralign != A_NONE) {
2118 You("have a strong feeling that %s is angry...",
2120 You("%s
\82ª
\93{
\82Á
\82Ä
\82¢
\82é
\82Ì
\82ð
\8am
\90M
\82µ
\82½
\81D
\81D
\81D",
2122 consume_offering(otmp);
2124 pline("%s accepts your allegiance.", a_gname());
2126 pline("%s
\82Í
\82 \82È
\82½
\82Ì
\91®
\90«
\82ð
\8eó
\82¯
\82¢
\82ê
\82½
\81D", a_gname());
2128 uchangealign(altaralign, 0);
2129 /* Beware, Conversion is costly */
2136 pline("%s rejects your sacrifice!", a_gname());
2138 pline("%s
\82Í
\82 \82È
\82½
\82Ì
\8c£
\8fã
\95¨
\82ð
\8eó
\82¯
\82¢
\82ê
\82È
\82¢
\81I", a_gname());
2140 godvoice(altaralign, "Suffer, infidel!");
2142 godvoice(altaralign, "
\88Ù
\92[
\8eÒ
\82æ
\81I
\8e¸
\82¹
\82ë
\81I
\81I");
2144 (void) adjattrib(A_WIS, -2, TRUE);
2146 angrygods(u.ualign.type);
2150 consume_offering(otmp);
2152 You("sense a conflict between %s and %s.", u_gname(),
2155 You("%s
\82Æ%s
\8aÔ
\82Ì
\91\88\82¢
\82ð
\8a´
\82¶
\82½
\81D", u_gname(),
2158 if (rn2(8 + u.ulevel) > 5) {
2161 You_feel("the power of %s increase.", u_gname());
2163 You("%s
\82Ì
\97Í
\82ª
\91\9d\91å
\82µ
\82½
\82æ
\82¤
\82È
\8bC
\82ª
\82µ
\82½
\81D", u_gname());
2164 exercise(A_WIS, TRUE);
2166 /* Yes, this is supposed to be &=, not |= */
2167 levl[u.ux][u.uy].altarmask &= AM_SHRINE;
2168 /* the following accommodates stupid compilers */
2169 levl[u.ux][u.uy].altarmask =
2170 levl[u.ux][u.uy].altarmask
2171 | (Align2amask(u.ualign.type));
2174 pline_The("altar glows %s.",
2175 hcolor((u.ualign.type == A_LAWFUL)
2179 : (const char *) "gray"));
2181 pline("
\8dÕ
\92d
\82Í%s
\8bP
\82¢
\82½
\81D",
2182 jconj_adj(hcolor((u.ualign.type == A_LAWFUL)
2186 : (const char *)"
\8aD
\90F
\82Ì")));
2189 if (rnl(u.ulevel) > 6 && u.ualign.record > 0
2190 && rnd(u.ualign.record) > (3 * ALIGNLIM) / 4)
2191 summon_minion(altaralign, TRUE);
2192 /* anger priest; test handles bones files */
2193 if ((pri = findpriest(temple_occupied(u.urooms)))
2194 && !p_coaligned(pri))
2198 pline("Unluckily, you feel the power of %s decrease.",
2200 pline("
\95s
\8dK
\82É
\82à
\81C%s
\82Ì
\97Í
\82ª
\8c¸
\8f
\82µ
\82½
\82Ì
\82ð
\8a´
\82¶
\82½
\81D",
2203 exercise(A_WIS, FALSE);
2204 if (rnl(u.ulevel) > 6 && u.ualign.record > 0
2205 && rnd(u.ualign.record) > (7 * ALIGNLIM) / 8)
2206 summon_minion(altaralign, TRUE);
2212 consume_offering(otmp);
2213 /* OK, you get brownie points. */
2215 u.ugangr -= ((value * (u.ualign.type == A_CHAOTIC ? 2 : 3))
2219 if (u.ugangr != saved_anger) {
2222 pline("%s seems %s.", u_gname(),
2223 Hallucination ? "groovy" : "slightly mollified");
2225 pline("%s
\82Í%s
\82É
\8c©
\82¦
\82é
\81D", u_gname(),
2226 Hallucination ? "
\91f
\93G" : "
\82¿
\82å
\82Á
\82Æ
\98a
\82ç
\82¢
\82¾
\82æ
\82¤");
2229 if ((int) u.uluck < 0)
2233 pline("%s seems %s.", u_gname(),
2234 Hallucination ? "cosmic (not a new fact)"
2237 pline("%s
\82Í%s
\82É
\8c©
\82¦
\82é
\81D", u_gname(),
2238 Hallucination ? "
\93ø
\90F(
\90V
\8e\96\8eÀ
\82Å
\82Í
\82È
\82¢)"
2239 : "
\8cy
\95Ì
\82µ
\82½
\82æ
\82¤");
2242 if ((int) u.uluck < 0)
2245 } else { /* not satisfied yet */
2248 pline_The("gods seem tall.");
2250 pline("
\90_
\82Í
\82¨
\8d\82\82
\82Æ
\82Ü
\82Á
\82Ä
\82¢
\82é
\82æ
\82¤
\82É
\8c©
\82¦
\82é
\81D");
2253 You("have a feeling of inadequacy.");
2255 You("
\82Ü
\82¾
\82Ü
\82¾
\82¾
\82Æ
\8a´
\82¶
\82½
\81D");
2257 } else if (ugod_is_angry()) {
2258 if (value > MAXVALUE)
2260 if (value > -u.ualign.record)
2261 value = -u.ualign.record;
2264 You_feel("partially absolved.");
2266 You("
\8f
\82µ
\82¾
\82¯
\82ä
\82é
\82µ
\82Ä
\82à
\82ç
\82¦
\82½
\82æ
\82¤
\82È
\8bC
\82ª
\82µ
\82½
\81D");
2267 } else if (u.ublesscnt > 0) {
2268 u.ublesscnt -= ((value * (u.ualign.type == A_CHAOTIC ? 500 : 300))
2270 if (u.ublesscnt < 0)
2272 if (u.ublesscnt != saved_cnt) {
2276 You("realize that the gods are not like you and I.");
2278 You("
\90_
\82Æ
\83c
\81[
\83J
\81[
\82Ì
\92\87\82Å
\82Í
\82È
\82¢
\82±
\82Æ
\82ð
\8cå
\82Á
\82½
\81D");
2281 You("have a hopeful feeling.");
2283 pline("
\8aó
\96]
\82ª
\8c©
\82¦
\82Ä
\82«
\82½
\82æ
\82¤
\82È
\8bC
\82ª
\82µ
\82½
\81D");
2284 if ((int) u.uluck < 0)
2289 pline("Overall, there is a smell of fried onions.");
2291 pline("
\82½
\82Ü
\82Ë
\82¬
\82ð
\97g
\82°
\82½
\93õ
\82¢
\82ª
\82µ
\82½
\81D");
2294 You("have a feeling of reconciliation.");
2296 You("
\8b\96\82³
\82ê
\82½
\8bC
\82ª
\82µ
\82½
\81D");
2297 if ((int) u.uluck < 0)
2302 int nartifacts = nartifact_exist();
2304 /* you were already in pretty good standing */
2305 /* The player can gain an artifact */
2306 /* The chance goes down as the number of artifacts goes up */
2307 if (u.ulevel > 2 && u.uluck >= 0
2308 && !rn2(10 + (2 * u.ugifts * nartifacts))) {
2309 otmp = mk_artifact((struct obj *) 0, a_align(u.ux, u.uy));
2315 otmp->oerodeproof = TRUE;
2317 at_your_feet("An object");
2319 at_your_feet("
\89½
\82©");
2322 godvoice(u.ualign.type, "Use my gift wisely!");
2324 godvoice(u.ualign.type, "
\89ä
\82ª
\97^
\82¦
\82µ
\82à
\82Ì
\8c«
\82
\8eg
\82¤
\82×
\82µ
\81I");
2326 u.ublesscnt = rnz(300 + (50 * nartifacts));
2327 exercise(A_WIS, TRUE);
2328 /* make sure we can use this weapon */
2329 unrestrict_weapon_skill(weapon_type(otmp));
2330 if (!Hallucination && !Blind) {
2332 makeknown(otmp->otyp);
2333 discover_artifact(otmp->oartifact);
2338 change_luck((value * LUCKMAX) / (MAXVALUE * 2));
2339 if ((int) u.uluck < 0)
2341 if (u.uluck != saved_luck) {
2344 You("think %s brushed your %s.", something,
2347 pline("%s
\82ª
\82 \82È
\82½
\82Ì%s
\82ð
\82
\82·
\82®
\82Á
\82½
\82æ
\82¤
\82¾
\81D", something,
2353 ? "see crabgrass at your %s. A funny thing in a dungeon."
2354 : "glimpse a four-leaf clover at your %s.",
2355 makeplural(body_part(FOOT)));
2358 ? "
\91«
\8c³
\82É
\83y
\83\93\83y
\83\93\91\90\82ð
\82Ý
\82Â
\82¯
\82½
\81D
\96À
\8b{
\82É
\82µ
\82Ä
\82Í
\92¿
\82µ
\82¢
\81D"
2359 : "
\8el
\97t
\82Ì
\83N
\83\8d\81[
\83o
\81[
\82ð
\91«
\8c³
\82É
\8c©
\82Â
\82¯
\82½
\81D");
2367 /* determine prayer results in advance; also used for enlightenment */
2370 boolean praying; /* false means no messages should be given */
2374 p_aligntyp = on_altar() ? a_align(u.ux, u.uy) : u.ualign.type;
2375 p_trouble = in_trouble();
2377 if (is_demon(youmonst.data) && (p_aligntyp != A_CHAOTIC)) {
2380 pline_The("very idea of praying to a %s god is repugnant to you.",
2381 p_aligntyp ? "lawful" : "neutral");
2383 pline("%s
\82Ì
\90_
\82É
\8bF
\82è
\82ð
\82³
\82³
\82°
\82é
\82Ì
\82Í
\8fí
\8e¯
\82É
\94w
\82
\81D",
2384 p_aligntyp ? "
\92\81\8f\98" : "
\92\86\97§");
2391 You("begin praying to %s.", align_gname(p_aligntyp));
2393 You("%s
\82É
\8bF
\82è
\82ð
\95ù
\82°
\82½
\81D", align_gname(p_aligntyp));
2395 if (u.ualign.type && u.ualign.type == -p_aligntyp)
2396 alignment = -u.ualign.record; /* Opposite alignment altar */
2397 else if (u.ualign.type != p_aligntyp)
2398 alignment = u.ualign.record / 2; /* Different alignment altar */
2400 alignment = u.ualign.record;
2402 if ((p_trouble > 0) ? (u.ublesscnt > 200) /* big trouble */
2403 : (p_trouble < 0) ? (u.ublesscnt > 100) /* minor difficulties */
2404 : (u.ublesscnt > 0)) /* not in trouble */
2405 p_type = 0; /* too soon... */
2406 else if ((int) Luck < 0 || u.ugangr || alignment < 0)
2407 p_type = 1; /* too naughty... */
2408 else /* alignment >= 0 */ {
2409 if (on_altar() && u.ualign.type != p_aligntyp)
2415 if (is_undead(youmonst.data) && !Inhell
2416 && (p_aligntyp == A_LAWFUL || (p_aligntyp == A_NEUTRAL && !rn2(10))))
2418 /* Note: when !praying, the random factor for neutrals makes the
2419 return value a non-deterministic approximation for enlightenment.
2420 This case should be uncommon enough to live with... */
2422 return !praying ? (boolean) (p_type == 3 && !Inhell) : TRUE;
2425 /* #pray commmand */
2429 /* Confirm accidental slips of Alt-P */
2431 if (ParanoidPray && yn("Are you sure you want to pray?") != 'y')
2433 if (ParanoidPray && yn("
\8bF
\82è
\82Ü
\82·
\82©
\81H") != 'y')
2436 u.uconduct.gnostic++;
2438 /* set up p_type and p_alignment */
2439 if (!can_pray(TRUE))
2442 if (wizard && p_type >= 0) {
2444 if (yn("Force the gods to be pleased?") == 'y') {
2446 if (yn("
\96³
\97\9d\96î
\97\9d\90_
\82É
\94÷
\8fÎ
\82ñ
\82Å
\82à
\82ç
\82¢
\82Ü
\82·
\82©
\81H") == 'y') {
2450 if (u.ualign.record <= 0)
2451 u.ualign.record = 1;
2459 multi_reason = "praying";
2461 multi_reason = "
\8bF
\82Á
\82Ä
\82¢
\82é
\8e\9e\82É";
2463 nomovemsg = "You finish your prayer.";
2465 nomovemsg = "
\8bF
\82è
\8fI
\82¦
\82½
\81D";
2466 afternmv = prayer_done;
2468 if (p_type == 3 && !Inhell) {
2469 /* if you've been true to your god you can't die while you pray */
2472 You("are surrounded by a shimmering light.");
2474 You("
\82©
\82·
\82©
\82È
\8cõ
\82É
\82Â
\82Â
\82Ü
\82ê
\82½
\81D");
2475 u.uinvulnerable = TRUE;
2482 prayer_done() /* M. Stephenson (1.0.3b) */
2484 aligntyp alignment = p_aligntyp;
2486 u.uinvulnerable = FALSE;
2490 (alignment == A_LAWFUL)
2491 ? "Vile creature, thou durst call upon me?"
2492 : "Walk no more, perversion of nature!");
2495 (alignment == A_LAWFUL)
2496 ? "
\94Ú
\97ò
\82È
\90¶
\95¨
\82æ
\81C
\93ð
\81C
\89ä
\82É
\8bF
\82è
\82ð
\8b\81\82ß
\82½
\82©
\81H"
2497 : "
\93®
\82
\82È
\81I
\8e\80\82É
\82¼
\82±
\82È
\82¢
\82Ì
\90¶
\95¨
\82æ
\81I");
2500 You_feel("like you are falling apart.");
2502 You("
\83o
\83\89\83o
\83\89\82É
\82È
\82Á
\82½
\82æ
\82¤
\82È
\8bC
\82ª
\82µ
\82½
\81D");
2503 /* KMH -- Gods have mastery over unchanging */
2505 /* no Half_physical_damage adjustment here */
2507 losehp(rnd(20), "residual undead turning effect", KILLED_BY_AN);
2509 losehp(rnd(20), "
\95s
\8e\80\82Ì
\90¶
\95¨
\82ð
\93y
\82É
\95Ô
\82·
\97Í
\82Å", KILLED_BY_AN);
2510 exercise(A_CON, FALSE);
2515 pline("Since you are in Gehennom, %s can't help you.",
2516 align_gname(alignment));
2518 pline("
\82 \82È
\82½
\82Í
\83Q
\83w
\83i
\82É
\82¢
\82é
\82Ì
\82Å
\81C%s
\82Í
\82 \82È
\82½
\82ð
\8f\95\82¯
\82ç
\82ê
\82È
\82¢
\81D",
2519 align_gname(alignment));
2521 /* haltingly aligned is least likely to anger */
2522 if (u.ualign.record <= 0 || rnl(u.ualign.record))
2523 angrygods(u.ualign.type);
2528 if (on_altar() && u.ualign.type != alignment)
2529 (void) water_prayer(FALSE);
2530 u.ublesscnt += rnz(250);
2532 gods_upset(u.ualign.type);
2533 } else if (p_type == 1) {
2534 if (on_altar() && u.ualign.type != alignment)
2535 (void) water_prayer(FALSE);
2536 angrygods(u.ualign.type); /* naughty */
2537 } else if (p_type == 2) {
2538 if (water_prayer(FALSE)) {
2539 /* attempted water prayer on a non-coaligned altar */
2540 u.ublesscnt += rnz(250);
2542 gods_upset(u.ualign.type);
2548 (void) water_prayer(TRUE);
2549 pleased(alignment); /* nice */
2558 /* Knights & Priest(esse)s only please */
2559 struct monst *mtmp, *mtmp2;
2561 int once, range, xlev;
2563 if (!Role_if(PM_PRIEST) && !Role_if(PM_KNIGHT)) {
2564 /* Try to use the "turn undead" spell.
2566 * This used to be based on whether hero knows the name of the
2567 * turn undead spellbook, but it's possible to know--and be able
2568 * to cast--the spell while having lost the book ID to amnesia.
2569 * (It also used to tell spelleffects() to cast at self?)
2573 for (sp_no = 0; sp_no < MAXSPELL; ++sp_no) {
2574 if (spl_book[sp_no].sp_id == NO_SPELL)
2576 else if (spl_book[sp_no].sp_id == SPE_TURN_UNDEAD)
2577 return spelleffects(sp_no, FALSE);
2580 You("don't know how to turn undead!");
2582 You("
\95s
\8e\80\82Ì
\90¶
\82«
\95¨
\82ð
\93y
\82É
\96ß
\82·
\95û
\96@
\82ð
\92m
\82ç
\82È
\82¢
\81I");
2585 u.uconduct.gnostic++;
2586 Gname = halu_gname(u.ualign.type);
2588 /* [What about needing free hands (does #turn involve any gesturing)?] */
2589 if (!can_chant(&youmonst)) {
2590 /* "evilness": "demons and undead" is too verbose and too precise */
2592 You("are %s upon %s to turn aside evilness.",
2593 Strangled ? "not able to call" : "incapable of calling", Gname);
2595 You("
\88«
\82ð
\91Þ
\82¯
\82é
\82½
\82ß
\82É%s
\82ð
\8cÄ
\82Ñ
\8fo
\82·%s
\82È
\82¢
\81D",
2596 Gname, Strangled ? "
\82±
\82Æ
\82ª
\82Å
\82«" : "
\94\
\97Í
\82ª");
2598 /* violates agnosticism due to intent; conduct tracking is not
2599 supposed to affect play but we make an exception here: use a
2600 move if this is the first time agnostic conduct has been broken */
2601 return (u.uconduct.gnostic == 1);
2603 if ((u.ualign.type != A_CHAOTIC
2604 && (is_demon(youmonst.data) || is_undead(youmonst.data)))
2605 || u.ugangr > 6) { /* "Die, mortal!" */
2607 pline("For some reason, %s seems to ignore you.", Gname);
2609 pline("
\82È
\82º
\82©
\81C%s
\82Í
\82 \82È
\82½
\82ð
\96³
\8e\8b\82µ
\82½
\82æ
\82¤
\82¾
\81D", Gname);
2611 exercise(A_WIS, FALSE);
2616 pline("Since you are in Gehennom, %s %s help you.",
2617 /* not actually calling upon Moloch but use alternate
2618 phrasing anyway if hallucinatory feedback says it's him */
2619 Gname, !strcmp(Gname, Moloch) ? "won't" : "can't");
2621 pline("
\82 \82È
\82½
\82Í
\83Q
\83w
\83i
\82É
\82¢
\82é
\82Ì
\82Å
\81C%s
\82Í
\82 \82È
\82½
\82ð
\8f\95\82¯%s
\82È
\82¢
\81D",
2622 /* not actually calling upon Moloch but use alternate
2623 phrasing anyway if hallucinatory feedback says it's him */
2624 Gname, !strcmp(Gname, Moloch) ? "" : "
\82ç
\82ê");
2630 pline("Calling upon %s, you chant an arcane formula.", Gname);
2632 pline("%s
\82É
\8bF
\82è
\82ð
\8b\81\82ß
\82é
\82Æ
\81C
\82 \82È
\82½
\82Í
\95s
\89Â
\8ev
\8bc
\82È
\8c¾
\97t
\82Ì
\90¹
\89Ì
\82ð
\95·
\82¢
\82½
\81D", Gname);
2633 exercise(A_WIS, TRUE);
2635 /* note: does not perform unturn_dead() on victims' inventories */
2636 range = BOLT_LIM + (u.ulevel / 5); /* 8 to 14 */
2639 for (mtmp = fmon; mtmp; mtmp = mtmp2) {
2641 if (DEADMONSTER(mtmp))
2643 /* 3.6.3: used to use cansee() here but the purpose is to prevent
2644 #turn operating through walls, not to require that the hero be
2645 able to see the target location */
2646 if (!couldsee(mtmp->mx, mtmp->my)
2647 || distu(mtmp->mx, mtmp->my) > range)
2650 if (!mtmp->mpeaceful
2651 && (is_undead(mtmp->data) || is_vampshifter(mtmp)
2652 || (is_demon(mtmp->data) && (u.ulevel > (MAXULEV / 2))))) {
2653 mtmp->msleeping = 0;
2657 pline("Unfortunately, your voice falters.");
2659 pline("
\8ec
\94O
\82È
\82ª
\82ç
\81C
\82 \82È
\82½
\82Ì
\90º
\82Í
\82Ç
\82à
\82Á
\82Ä
\82µ
\82Ü
\82Á
\82½
\81D");
2663 } else if (!resist(mtmp, '\0', 0, TELL)) {
2665 switch (mtmp->data->mlet) {
2666 /* this is intentional, lichs are tougher
2684 if (u.ulevel >= xlev && !resist(mtmp, '\0', 0, NOTELL)) {
2685 if (u.ualign.type == A_CHAOTIC) {
2686 mtmp->mpeaceful = 1;
2688 } else { /* damn them */
2695 monflee(mtmp, 0, FALSE, TRUE);
2703 * There is no detrimental effect on self for successful #turn
2704 * while in demon or undead form. That can only be done while
2705 * chaotic oneself (see "For some reason" above) and chaotic
2706 * turning only makes targets peaceful.
2708 * Paralysis duration probably ought to be based on the strengh
2709 * of turned creatures rather than on turner's level.
2710 * Why doesn't this honor Free_action? [Because being able to
2711 * repeat #turn every turn would be too powerful. Maybe instead
2712 * of nomul(-N) we should add the equivalent of mon->mspec_used
2713 * for the hero and refuse to #turn when it's non-zero? Or have
2714 * both and u.uspec_used only matters when Free_action prevents
2715 * the brief paralysis?]
2717 nomul(-(5 - ((u.ulevel - 1) / 6))); /* -5 .. -1 */
2719 multi_reason = "trying to turn the monsters";
2721 multi_reason = "
\89ö
\95¨
\82ð
\93y
\82É
\96ß
\82»
\82¤
\82Æ
\82µ
\82Ä
\82¢
\82é
\8e\9e\82É";
2722 nomovemsg = You_can_move_again;
2729 return a_gname_at(u.ux, u.uy);
2732 /* returns the name of an altar's deity */
2737 if (!IS_ALTAR(levl[x][y].typ))
2740 return align_gname(a_align(x, y));
2743 /* returns the name of the hero's deity */
2747 return align_gname(u.ualign.type);
2751 align_gname(alignment)
2756 switch (alignment) {
2770 impossible("unknown alignment.");
2782 static const char *hallu_gods[] = {
2784 "the Flying Spaghetti Monster", /* Church of the FSM */
2785 "Eris", /* Discordianism */
2786 "the Martians", /* every science fiction ever */
2788 "AnDoR dRaKoN", /* ADOM */
2789 "the Central Bank of Yendor", /* economics */
2790 "Tooth Fairy", /* real world(?) */
2791 "Om", /* Discworld */
2792 "Yawgmoth", /* Magic: the Gathering */
2793 "Morgoth", /* LoTR */
2794 "Cthulhu", /* Lovecraft */
2795 "the Ori", /* Stargate */
2796 "destiny", /* why not? */
2797 "your Friend the Computer", /* Paranoia */
2799 "
\8bó
\94ò
\82Ô
\83X
\83p
\83Q
\83b
\83e
\83B
\83\82\83\93\83X
\83^
\81[", /* Church of the FSM */
2800 "
\83G
\83\8a\83X", /* Discordianism */
2801 "
\89Î
\90¯
\90l", /* every science fiction ever */
2802 "
\83]
\83\80", /* Crawl */
2803 "
\83A
\83\93\83h
\81[
\83\8b\81E
\83h
\83\89\83R
\83\93", /* ADOM */
2804 "
\83C
\83F
\83\93\83_
\81[
\92\86\89\9b\8bâ
\8ds", /* economics */
2805 "
\8e\95\82Ì
\97d
\90¸", /* real world(?) */
2806 "
\83I
\83\80", /* Discworld */
2807 "
\83\88\81[
\83O
\83\82\83X", /* Magic: the Gathering */
2808 "
\83\82\83\8b\83S
\83X", /* LoTR */
2809 "
\83N
\83g
\83D
\83\8b\83t", /* Lovecraft */
2810 "
\83I
\81[
\83\89\83C", /* Stargate */
2811 "
\83l
\90\", /* why not? */
2812 "
\90e
\88¤
\82È
\82é
\83R
\83\93\83s
\83\85\81[
\83^", /* Paranoia */
2816 /* hallucination handling for priest/minion names: select a random god
2817 iff character is hallucinating */
2819 halu_gname(alignment)
2822 const char *gnam = NULL;
2826 return align_gname(alignment);
2828 /* Some roles (Priest) don't have a pantheon unless we're playing as
2829 that role, so keep trying until we get a role which does have one.
2830 [If playing a Priest, the current pantheon will be twice as likely
2831 to get picked as any of the others. That's not significant enough
2832 to bother dealing with.] */
2834 which = randrole(TRUE);
2835 while (!roles[which].lgod);
2837 switch (rn2_on_display_rng(9)) {
2840 gnam = roles[which].lgod;
2844 gnam = roles[which].ngod;
2848 gnam = roles[which].cgod;
2852 gnam = hallu_gods[rn2_on_display_rng(SIZE(hallu_gods))];
2858 impossible("rn2 broken in halu_gname?!?");
2861 impossible("No random god name?");
2863 gnam = "your Friend the Computer"; /* Paranoia */
2865 gnam = "
\90e
\88¤
\82È
\82é
\83R
\83\93\83s
\83\85\81[
\83^"; /* Paranoia */
2875 align_gtitle(alignment)
2879 const char *gnam, *result = "god";
2881 const char *gnam, *result = "
\8eå
\90_";
2883 switch (alignment) {
2897 if (gnam && *gnam == '_')
2901 result = "
\8f\97\90_";
2909 aligntyp altaralign = a_align(x, y);
2911 if (u.ualign.type == altaralign && u.ualign.record > -rn2(4)) {
2913 godvoice(altaralign, "How darest thou desecrate my altar!");
2915 godvoice(altaralign, "
\93ð
\81C
\89ä
\82ª
\8dÕ
\92d
\82ð
\89\98\82·
\82©
\81I");
2916 (void) adjattrib(A_WIS, -1, FALSE);
2921 !Deaf ? "A voice (could it be"
2922 : "Despite your deafness, you seem to hear",
2923 align_gname(altaralign),
2924 !Deaf ? "?) whispers" : " say");
2927 !Deaf ? "
\82³
\82³
\82â
\82«
\90º(
\82½
\82Ô
\82ñ"
2928 : "
\8e¨
\82Í
\95·
\82±
\82¦
\82È
\82¢
\82ª
\81C",
2929 align_gname(altaralign),
2930 !Deaf ? "
\81H)
\82ª
\95·
\82±
\82¦
\82é" : "
\82ª
\98b
\82µ
\82Ä
\82¢
\82é
\82Ì
\82ª
\95·
\82±
\82¦
\82½
\8bC
\82ª
\82µ
\82½");
2933 verbalize("Thou shalt pay, infidel!");
2935 verbalize("
\88Ù
\92[
\8eÒ
\82æ
\81I
\95ñ
\82¢
\82ð
\8eó
\82¯
\82æ
\81I");
2936 /* higher luck is more likely to be reduced; as it approaches -5
2937 the chance to lose another point drops down, eventually to 0 */
2938 if (Luck > -5 && rn2(Luck + 6))
2939 change_luck(rn2(20) ? -1 : -2);
2943 /* assumes isok() at one space away, but not necessarily at two */
2945 blocked_boulder(dx, dy)
2948 register struct obj *otmp;
2952 for (otmp = level.objects[u.ux + dx][u.uy + dy]; otmp;
2953 otmp = otmp->nexthere) {
2954 if (otmp->otyp == BOULDER)
2955 count += otmp->quan;
2958 nx = u.ux + 2 * dx, ny = u.uy + 2 * dy; /* next spot beyond boulder(s) */
2961 /* no boulders--not blocked */
2964 /* possibly blocked depending on if it's pushable */
2967 /* this is only approximate since multiple boulders might sink */
2968 if (is_pool_or_lava(nx, ny)) /* does its own isok() check */
2969 break; /* still need Sokoban check below */
2972 /* more than one boulder--blocked after they push the top one;
2973 don't force them to push it first to find out */
2977 if (dx && dy && Sokoban) /* can't push boulder diagonally in Sokoban */
2981 if (IS_ROCK(levl[nx][ny].typ))
2983 if (sobj_at(BOULDER, nx, ny))