uncursing prayer vs helm of opposite alignment

Implement the suggestion that hero's current god not uncurse a worn helm
of opposite alignment when prayer result is fix-worst-cursed-item or
uncurse-all-cursed-items since doing so makes it easy for hero to switch
to another god.  The second boon will still uncurse non-worn helms of
opposite alignment since that has no effect on how easy or hard it is
for the hero to change alignments.  (The first boon only applies to worn
items plus luckstones and loadstones; non-worn helms aren't applicable.)
This commit is contained in:
PatR
2017-12-29 16:20:05 -08:00
parent 860cdf6625
commit 9f12aeb8ab
2 changed files with 20 additions and 15 deletions
+4 -1
View File
@@ -739,11 +739,14 @@ Master Key of Thievery always finds door and chest traps if used to lock or
blessed (for non-rogues); player is offered the opportunity to disarm blessed (for non-rogues); player is offered the opportunity to disarm
"Elbereth" must now be the only engraved text on a square to function "Elbereth" must now be the only engraved text on a square to function
"Elbereth" now erodes based on attacks by the player, not monsters scared "Elbereth" now erodes based on attacks by the player, not monsters scared
option herecmd_menu to make a mouse click on your character pop up add option herecmd_menu to make a mouse click on your character pop up
a context menu, and extended command #herecmdmenu to do the same a context menu, and extended command #herecmdmenu to do the same
change #adjust's behavior when collecting compatible stacks; that used to change #adjust's behavior when collecting compatible stacks; that used to
occur for any #adjust which lacked a split count, now it only happens occur for any #adjust which lacked a split count, now it only happens
when 'adjusting' into a stack's own inventory slot when 'adjusting' into a stack's own inventory slot
a prayer result which results in uncursing some or all of the hero's items
won't uncurse a worn helm of opposite alignment since that would
facilitate the hero switching to another god by taking it off
Platform- and/or Interface-Specific New Features Platform- and/or Interface-Specific New Features
+10 -8
View File
@@ -1,4 +1,4 @@
/* NetHack 3.6 pray.c $NHDT-Date: 1450577672 2015/12/20 02:14:32 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.89 $ */ /* NetHack 3.6 pray.c $NHDT-Date: 1514593198 2017/12/30 00:19:58 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.95 $ */
/* 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. */
@@ -276,7 +276,10 @@ worst_cursed_item()
otmp = uarmc; otmp = uarmc;
} else if (uarm && uarm->cursed) { /* suit */ } else if (uarm && uarm->cursed) { /* suit */
otmp = uarm; otmp = uarm;
} else if (uarmh && uarmh->cursed) { /* helmet */ /* if worn helmet of opposite alignment is making you an adherent
of the current god, he/she/it won't uncurse that for you */
} else if (uarmh && uarmh->cursed /* helmet */
&& uarmh->otyp != HELM_OF_OPPOSITE_ALIGNMENT) {
otmp = uarmh; otmp = uarmh;
} else if (uarmf && uarmf->cursed) { /* boots */ } else if (uarmf && uarmf->cursed) { /* boots */
otmp = uarmf; otmp = uarmf;
@@ -336,9 +339,7 @@ int trouble;
break; break;
case TROUBLE_LAVA: case TROUBLE_LAVA:
You("are back on solid ground."); You("are back on solid ground.");
/* teleport should always succeed, but if not, /* teleport should always succeed, but if not, just untrap them */
* just untrap them.
*/
if (!safe_teleds(FALSE)) if (!safe_teleds(FALSE))
u.utrap = 0; u.utrap = 0;
break; break;
@@ -386,8 +387,7 @@ int trouble;
if ((otmp = stuck_ring(uleft, RIN_SUSTAIN_ABILITY)) != 0) { if ((otmp = stuck_ring(uleft, RIN_SUSTAIN_ABILITY)) != 0) {
if (otmp == uleft) if (otmp == uleft)
what = leftglow; what = leftglow;
} else if ((otmp = stuck_ring(uright, RIN_SUSTAIN_ABILITY)) } else if ((otmp = stuck_ring(uright, RIN_SUSTAIN_ABILITY)) != 0) {
!= 0) {
if (otmp == uright) if (otmp == uright)
what = rightglow; what = rightglow;
} }
@@ -1070,7 +1070,9 @@ aligntyp g_align;
else else
You("are surrounded by %s aura.", an(hcolor(NH_LIGHT_BLUE))); You("are surrounded by %s aura.", an(hcolor(NH_LIGHT_BLUE)));
for (otmp = invent; otmp; otmp = otmp->nobj) { for (otmp = invent; otmp; otmp = otmp->nobj) {
if (otmp->cursed) { if (otmp->cursed
&& (otmp != uarmh /* [see worst_cursed_item()] */
|| uarmh->otyp != HELM_OF_OPPOSITE_ALIGNMENT)) {
if (!Blind) { if (!Blind) {
pline("%s %s.", Yobjnam2(otmp, "softly glow"), pline("%s %s.", Yobjnam2(otmp, "softly glow"),
hcolor(NH_AMBER)); hcolor(NH_AMBER));