Elbereth tweaks

Don't "feel like a hypocrite" when on Elberth and attacking a monster
which isn't scared by Elbereth (exception:  peaceful creatures aren't
scared but attacking them in such situation is hypocritical anyway).
This means that players can use Elbereth to scare away some creatures
while continuing to fight others.  Elbereth won't be automatically
erased, but weapon attacks will scuff the engraving; wand zaps don't.

Reduce the -5 alignment penalty when alignment is 5 or less.  Reduced
amount is -(1..5), so -3 average.
This commit is contained in:
PatR
2018-10-13 18:14:34 -07:00
parent b2d2521289
commit e4db2b4721
2 changed files with 10 additions and 3 deletions

View File

@@ -158,6 +158,9 @@ being trapped (bear trap, web, molten or solidified lava, chained to buried
iron ball) blocks both levitation and flight (note: being stuck in a
pit ends when either of those starts so doesn't apply)
change default value for the 'autodescribe' option to 'on'
Elbereth hypocrisy penalty doesn't apply if attacking a monster which isn't
frightened by Elbereth; normal scuffing of engravings still applies
Elbereth hypocrisy penalty reduced when alignment is already low
Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 mon.c $NHDT-Date: 1526132509 2018/05/12 13:41:49 $ $NHDT-Branch: master $:$NHDT-Revision: 1.252 $ */
/* NetHack 3.6 mon.c $NHDT-Date: 1539479657 2018/10/14 01:14:17 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.260 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Derek S. Ray, 2015. */
/* NetHack may be freely redistributed. See license for details. */
@@ -2659,7 +2659,10 @@ setmangry(mtmp, via_attack)
struct monst *mtmp;
boolean via_attack;
{
if (via_attack && sengr_at("Elbereth", u.ux, u.uy, TRUE)) {
if (via_attack && sengr_at("Elbereth", u.ux, u.uy, TRUE)
/* only hypocritical if monster is vulnerable to Elbereth (or
peaceful--not vulnerable but attacking it is hypocritical) */
&& (onscary(u.ux, u.uy, mtmp) || mtmp->mpeaceful)) {
You_feel("like a hypocrite.");
/* AIS: Yes, I know alignment penalties and bonuses aren't balanced
at the moment. This is about correct relative to other "small"
@@ -2668,7 +2671,8 @@ boolean via_attack;
violating your own request. I know 5 isn't actually large, but
it's intentionally larger than the 1s and 2s that are normally
given for this sort of thing. */
adjalign(-5);
/* reduce to 3 (average) when alignment is already very low */
adjalign((u.ualign.record > 5) ? -5 : -rnd(5));
if (!Blind)
pline("The engraving beneath you fades.");