autocursing armor worn by monsters
From the newsgroup: non-cursed dunce cap or helm of opposite alignment which would glow black and become cursed if worn by the hero wasn't doing the same when worn by a monster. Fixing this gives players a new way to recognize bad hats--drop on altar, then drop in front of approaching goblin or other wimpy monster capable of wearing armor--but I think that's fair. Since helms of opposite alignment are usually already cursed it won't make much difference for them; most players seem to avoid all conical hats so it won't make much difference for dunce caps either.
This commit is contained in:
@@ -109,6 +109,7 @@ after destroying drawbridge, hero could appear to be in the wall
|
|||||||
sometimes shop items which hero is forced to buy could be sold back twice
|
sometimes shop items which hero is forced to buy could be sold back twice
|
||||||
vision was not updated when polymorphing a statue into a boulder
|
vision was not updated when polymorphing a statue into a boulder
|
||||||
`I u' when carrying single unpaid item listed its cost twice
|
`I u' when carrying single unpaid item listed its cost twice
|
||||||
|
armor which auto-curses when worn by hero should do same if worn by monster
|
||||||
|
|
||||||
|
|
||||||
Platform- and/or Interface-Specific Fixes
|
Platform- and/or Interface-Specific Fixes
|
||||||
|
|||||||
11
src/worn.c
11
src/worn.c
@@ -1,4 +1,4 @@
|
|||||||
/* SCCS Id: @(#)worn.c 3.5 2003/01/08 */
|
/* SCCS Id: @(#)worn.c 3.5 2005/04/06 */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
@@ -405,6 +405,7 @@ boolean racialexception;
|
|||||||
struct obj *old, *best, *obj;
|
struct obj *old, *best, *obj;
|
||||||
int m_delay = 0;
|
int m_delay = 0;
|
||||||
int unseen = !canseemon(mon);
|
int unseen = !canseemon(mon);
|
||||||
|
boolean autocurse;
|
||||||
char nambuf[BUFSZ];
|
char nambuf[BUFSZ];
|
||||||
|
|
||||||
if (mon->mfrozen) return; /* probably putting previous item on */
|
if (mon->mfrozen) return; /* probably putting previous item on */
|
||||||
@@ -467,6 +468,9 @@ boolean racialexception;
|
|||||||
outer_break:
|
outer_break:
|
||||||
if (!best || best == old) return;
|
if (!best || best == old) return;
|
||||||
|
|
||||||
|
/* same auto-cursing behavior as for hero */
|
||||||
|
autocurse = ((best->otyp == HELM_OF_OPPOSITE_ALIGNMENT ||
|
||||||
|
best->otyp == DUNCE_CAP) && !best->cursed);
|
||||||
/* if wearing a cloak, account for the time spent removing
|
/* if wearing a cloak, account for the time spent removing
|
||||||
and re-wearing it when putting on a suit or shirt */
|
and re-wearing it when putting on a suit or shirt */
|
||||||
if ((flag == W_ARM
|
if ((flag == W_ARM
|
||||||
@@ -492,6 +496,10 @@ outer_break:
|
|||||||
buf[0] = '\0';
|
buf[0] = '\0';
|
||||||
pline("%s%s puts on %s.", Monnam(mon),
|
pline("%s%s puts on %s.", Monnam(mon),
|
||||||
buf, distant_name(best,doname));
|
buf, distant_name(best,doname));
|
||||||
|
if (autocurse)
|
||||||
|
pline("%s %s %s %s for a moment.",
|
||||||
|
s_suffix(Monnam(mon)), simple_typename(best->otyp),
|
||||||
|
otense(best, "glow"), hcolor(NH_BLACK));
|
||||||
} /* can see it */
|
} /* can see it */
|
||||||
m_delay += objects[best->otyp].oc_delay;
|
m_delay += objects[best->otyp].oc_delay;
|
||||||
mon->mfrozen = m_delay;
|
mon->mfrozen = m_delay;
|
||||||
@@ -501,6 +509,7 @@ outer_break:
|
|||||||
update_mon_intrinsics(mon, old, FALSE, creation);
|
update_mon_intrinsics(mon, old, FALSE, creation);
|
||||||
mon->misc_worn_check |= flag;
|
mon->misc_worn_check |= flag;
|
||||||
best->owornmask |= flag;
|
best->owornmask |= flag;
|
||||||
|
if (autocurse) curse(best);
|
||||||
update_mon_intrinsics(mon, best, TRUE, creation);
|
update_mon_intrinsics(mon, best, TRUE, creation);
|
||||||
/* if couldn't see it but now can, or vice versa, */
|
/* if couldn't see it but now can, or vice versa, */
|
||||||
if (!creation && (unseen ^ !canseemon(mon))) {
|
if (!creation && (unseen ^ !canseemon(mon))) {
|
||||||
|
|||||||
Reference in New Issue
Block a user