From 2adc83e1451288e299039b964f95da7a66311dca Mon Sep 17 00:00:00 2001 From: "nethack.rankin" Date: Sun, 4 Mar 2007 02:18:59 +0000 Subject: [PATCH] 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. --- doc/fixes35.0 | 1 + src/end.c | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) 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) {