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:
@@ -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 ### */
|
||||
|
||||
|
||||
11
src/attrib.c
11
src/attrib.c
@@ -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 */
|
||||
|
||||
@@ -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*/
|
||||
|
||||
Reference in New Issue
Block a user