From: nethack.rankin Date: Sun, 4 Mar 2007 02:18:59 +0000 (+0000) Subject: revised ascension bonus (trunk only) X-Git-Tag: MOVE2GIT~684 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2adc83e1451288e299039b964f95da7a66311dca;p=nethack revised ascension bonus (trunk only) Part of the final score is doubled for ascension. Some players use helm of opposite alignment in order to offer and ascend at the first astral altar they reach. This limits the score doubling to ascending with your original alignment intact, penalizing (for the subset of players who care about score) alignment manipulation. Converting to a second alignment and then using a helm of opposite alignment to switch back and offer to hero's original deity yields a smaller bonus (one-and-a-half instead of doubling). Offering to either of the other deities (either via permanent conversion or temporarily switching via helm or both) gets no score bonus. --- diff --git a/doc/fixes35.0 b/doc/fixes35.0 index 42f5f9b10..5a8d683a2 100644 --- a/doc/fixes35.0 +++ b/doc/fixes35.0 @@ -288,6 +288,7 @@ worm teeth and crysknives have become stackable improved container interface acid can destroy iron bars OPTIONS=playmode:normal|explore|debug to choose mode without command-line +score bonus for ascending is reduced or denied for changing alignment Platform- and/or Interface-Specific New Features diff --git a/src/end.c b/src/end.c index 98bbe545a..f85a36d5f 100644 --- a/src/end.c +++ b/src/end.c @@ -753,7 +753,15 @@ die: if (deepest > 20) tmp += 1000L * (long)((deepest > 30) ? 10 : deepest - 20); nowrap_add(u.urexp, tmp); - if (how == ASCENDED) nowrap_add(u.urexp, u.urexp); + + /* ascension gives a score bonus iff offering to original deity */ + if (how == ASCENDED && u.ualign.type == u.ualignbase[A_ORIGINAL]) { + /* retaining original alignment: score *= 2; + converting, then using helm-of-OA to switch back: *= 1.5 */ + tmp = (u.ualignbase[A_CURRENT] == u.ualignbase[A_ORIGINAL]) ? + u.urexp : (u.urexp / 2L); + nowrap_add(u.urexp, tmp); + } } if (bones_ok) {