Make HoOA confuse the hero, summon erinyes

A helmet psychically reaching inside your head and twiddling knobs in
your brain must be a confusing experience.  And the instant rejection of
your god (not to mention the vow that you made to find the amulet for
them), perhaps on the very cusp of their ascendance over the other gods,
is sort of the ultimate oathbreaking, so it interests the erinyes.
This commit is contained in:
Michael Meyer
2023-11-21 12:07:13 -05:00
committed by PatR
parent f930a12fba
commit 0c9e34832c
3 changed files with 18 additions and 5 deletions

View File

@@ -1426,6 +1426,7 @@ extern int mbirth_limit(int);
extern void mkmonmoney(struct monst *, long) NONNULLARG1;
extern int bagotricks(struct obj *, boolean, int *);
extern boolean propagate(int, boolean, boolean);
extern void summon_furies(int);
/* ### mcastu.c ### */

View File

@@ -1257,18 +1257,19 @@ uchangealign(int newalign,
(u.ualign.type != oldalign) ? "sudden " : "");
} else {
/* putting on or taking off a helm of opposite alignment */
u.ualign.type = (aligntyp) newalign;
if (reason == 1) {
Your("mind oscillates %s.", Hallucination ? "wildly" : "briefly");
make_confused(rn1(2, 3), FALSE);
summon_furies(Is_astralevel(&u.uz) ? 0 : 1);
/* don't livelog taking it back off */
livelog_printf(LL_ALIGNMENT, "used a helm to turn %s",
aligns[1 - newalign].adj);
}
u.ualign.type = (aligntyp) newalign;
if (reason == 1)
Your("mind oscillates %s.", Hallucination ? "wildly" : "briefly");
else if (reason == 2)
} else if (reason == 2) {
Your("mind is %s.", Hallucination
? "much of a muchness"
: "back in sync with your body");
}
}
if (u.ualign.type != oldalign) {
u.ualign.record = 0; /* slate is wiped clean */

View File

@@ -2452,4 +2452,15 @@ bagotricks(
return moncount;
}
/* create some or all remaining erinyes around the player */
void
summon_furies(int limit) /* number to create, or 0 to create until extinct */
{
int i = 0;
while (mk_gen_ok(PM_ERINYS, G_GONE, 0U) && (i < limit || !limit)) {
makemon(&mons[PM_ERINYS], u.ux, u.uy, MM_ADJACENTOK | MM_NOWAIT);
i++;
}
}
/*makemon.c*/