Merge branch 'NetHack-3.6'
This commit is contained in:
+47
-13
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 pray.c $NHDT-Date: 1559670608 2019/06/04 17:50:08 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.112 $ */
|
/* NetHack 3.6 pray.c $NHDT-Date: 1559785004 2019/06/06 01:36:44 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.113 $ */
|
||||||
/* Copyright (c) Benson I. Margulies, Mike Stephenson, Steve Linhart, 1989. */
|
/* Copyright (c) Benson I. Margulies, Mike Stephenson, Steve Linhart, 1989. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
@@ -1885,7 +1885,7 @@ prayer_done() /* M. Stephenson (1.0.3b) */
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if (Inhell) {
|
if (Inhell) {
|
||||||
pline("Since you are in Gehennom, %s won't help you.",
|
pline("Since you are in Gehennom, %s can't help you.",
|
||||||
align_gname(alignment));
|
align_gname(alignment));
|
||||||
/* haltingly aligned is least likely to anger */
|
/* haltingly aligned is least likely to anger */
|
||||||
if (u.ualign.record <= 0 || rnl(u.ualign.record))
|
if (u.ualign.record <= 0 || rnl(u.ualign.record))
|
||||||
@@ -1926,6 +1926,7 @@ doturn()
|
|||||||
{
|
{
|
||||||
/* Knights & Priest(esse)s only please */
|
/* Knights & Priest(esse)s only please */
|
||||||
struct monst *mtmp, *mtmp2;
|
struct monst *mtmp, *mtmp2;
|
||||||
|
const char *Gname;
|
||||||
int once, range, xlev;
|
int once, range, xlev;
|
||||||
|
|
||||||
if (!Role_if(PM_PRIEST) && !Role_if(PM_KNIGHT)) {
|
if (!Role_if(PM_PRIEST) && !Role_if(PM_KNIGHT)) {
|
||||||
@@ -1948,33 +1949,50 @@ doturn()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
u.uconduct.gnostic++;
|
u.uconduct.gnostic++;
|
||||||
|
Gname = halu_gname(u.ualign.type);
|
||||||
|
|
||||||
|
/* [What about needing free hands (does #turn involve any gesturing)?] */
|
||||||
|
if (!can_chant(&youmonst)) {
|
||||||
|
/* "evilness": "demons and undead" is too verbose and too precise */
|
||||||
|
You("are %s upon %s to turn aside evilness.",
|
||||||
|
Strangled ? "not able to call" : "incapable of calling", Gname);
|
||||||
|
/* violates agnosticism due to intent; conduct tracking is not
|
||||||
|
supposed to affect play but we make an exception here: use a
|
||||||
|
move if this is the first time agnostic conduct has been broken */
|
||||||
|
return (u.uconduct.gnostic == 1);
|
||||||
|
}
|
||||||
if ((u.ualign.type != A_CHAOTIC
|
if ((u.ualign.type != A_CHAOTIC
|
||||||
&& (is_demon(g.youmonst.data) || is_undead(g.youmonst.data)))
|
&& (is_demon(g.youmonst.data) || is_undead(g.youmonst.data)))
|
||||||
|| u.ugangr > 6) { /* "Die, mortal!" */
|
|| u.ugangr > 6) { /* "Die, mortal!" */
|
||||||
pline("For some reason, %s seems to ignore you.", u_gname());
|
pline("For some reason, %s seems to ignore you.", Gname);
|
||||||
aggravate();
|
aggravate();
|
||||||
exercise(A_WIS, FALSE);
|
exercise(A_WIS, FALSE);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if (Inhell) {
|
if (Inhell) {
|
||||||
pline("Since you are in Gehennom, %s won't help you.", u_gname());
|
pline("Since you are in Gehennom, %s %s help you.",
|
||||||
|
/* not actually calling upon Moloch but use alternate
|
||||||
|
phrasing anyway if hallucinatory feedback says it's him */
|
||||||
|
Gname, !strcmp(Gname, Moloch) ? "won't" : "can't");
|
||||||
aggravate();
|
aggravate();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
pline("Calling upon %s, you chant an arcane formula.", u_gname());
|
pline("Calling upon %s, you chant an arcane formula.", Gname);
|
||||||
exercise(A_WIS, TRUE);
|
exercise(A_WIS, TRUE);
|
||||||
|
|
||||||
/* note: does not perform unturn_dead() on victims' inventories */
|
/* note: does not perform unturn_dead() on victims' inventories */
|
||||||
range = BOLT_LIM + (u.ulevel / 5); /* 5 to 11 */
|
range = BOLT_LIM + (u.ulevel / 5); /* 8 to 14 */
|
||||||
range *= range;
|
range *= range;
|
||||||
once = 0;
|
once = 0;
|
||||||
for (mtmp = fmon; mtmp; mtmp = mtmp2) {
|
for (mtmp = fmon; mtmp; mtmp = mtmp2) {
|
||||||
mtmp2 = mtmp->nmon;
|
mtmp2 = mtmp->nmon;
|
||||||
|
|
||||||
if (DEADMONSTER(mtmp))
|
if (DEADMONSTER(mtmp))
|
||||||
continue;
|
continue;
|
||||||
if (!cansee(mtmp->mx, mtmp->my) || distu(mtmp->mx, mtmp->my) > range)
|
/* 3.6.3: used to use cansee() here but the purpose is to prevent
|
||||||
|
#turn operating through walls, not to require that the hero be
|
||||||
|
able to see the target location */
|
||||||
|
if (!couldsee(mtmp->mx, mtmp->my)
|
||||||
|
|| distu(mtmp->mx, mtmp->my) > range)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!mtmp->mpeaceful
|
if (!mtmp->mpeaceful
|
||||||
@@ -1993,15 +2011,20 @@ doturn()
|
|||||||
/* this is intentional, lichs are tougher
|
/* this is intentional, lichs are tougher
|
||||||
than zombies. */
|
than zombies. */
|
||||||
case S_LICH:
|
case S_LICH:
|
||||||
xlev += 2; /*FALLTHRU*/
|
xlev += 2;
|
||||||
|
/*FALLTHRU*/
|
||||||
case S_GHOST:
|
case S_GHOST:
|
||||||
xlev += 2; /*FALLTHRU*/
|
xlev += 2;
|
||||||
|
/*FALLTHRU*/
|
||||||
case S_VAMPIRE:
|
case S_VAMPIRE:
|
||||||
xlev += 2; /*FALLTHRU*/
|
xlev += 2;
|
||||||
|
/*FALLTHRU*/
|
||||||
case S_WRAITH:
|
case S_WRAITH:
|
||||||
xlev += 2; /*FALLTHRU*/
|
xlev += 2;
|
||||||
|
/*FALLTHRU*/
|
||||||
case S_MUMMY:
|
case S_MUMMY:
|
||||||
xlev += 2; /*FALLTHRU*/
|
xlev += 2;
|
||||||
|
/*FALLTHRU*/
|
||||||
case S_ZOMBIE:
|
case S_ZOMBIE:
|
||||||
if (u.ulevel >= xlev && !resist(mtmp, '\0', 0, NOTELL)) {
|
if (u.ulevel >= xlev && !resist(mtmp, '\0', 0, NOTELL)) {
|
||||||
if (u.ualign.type == A_CHAOTIC) {
|
if (u.ualign.type == A_CHAOTIC) {
|
||||||
@@ -2020,6 +2043,17 @@ doturn()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TODO?
|
||||||
|
* Shouldn't there be some detrimental effect on self for
|
||||||
|
* successful #turn while in demon or undead form?
|
||||||
|
*
|
||||||
|
* Paralysis duration probably ought to be based on the strengh
|
||||||
|
* of turned creatures rather than on turner's level.
|
||||||
|
* Why doesn't this honor Free_action? [Because being able to
|
||||||
|
* repeat #turn every turn would be too powerful.]
|
||||||
|
*/
|
||||||
nomul(-(5 - ((u.ulevel - 1) / 6))); /* -5 .. -1 */
|
nomul(-(5 - ((u.ulevel - 1) / 6))); /* -5 .. -1 */
|
||||||
g.multi_reason = "trying to turn the monsters";
|
g.multi_reason = "trying to turn the monsters";
|
||||||
g.nomovemsg = You_can_move_again;
|
g.nomovemsg = You_can_move_again;
|
||||||
|
|||||||
Reference in New Issue
Block a user