wishing could attempt to place one)
opening/unlocking magic zapped at monster holding the hero will release hold
(zap at engulfer already expels hero); zapping at self has same effect
+when riding, allow scroll of remove curse to affect to affect steed's saddle
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
/* handle item dipped into water potion or steed saddle splashed by same */
static boolean
-H2Opotion_dip(struct obj *potion, struct obj *targobj,
- boolean useeit,
- const char *objphrase) /* "Your widget glows" or "Steed's saddle
- glows" */
+H2Opotion_dip(struct obj *potion, /* water */
+ struct obj *targobj, /* item being dipped into the water */
+ boolean useeit, /* will hero see the glow/aura? */
+ const char *objphrase) /* "Your widget glows" or
+ * "Steed's saddle glows" */
{
- void (*func)(OBJ_P) = 0;
+ void (*func)(struct obj *) = 0;
const char *glowcolor = 0;
#define COST_alter (-2)
#define COST_none (-1)
/* scroll effects; return 1 if we use up the scroll and possibly make it
become discovered, 0 if caller should take care of those side-effects */
int
-seffects(struct obj* sobj) /* sobj - scroll, or fake spellbook object for scroll-like spell */
+seffects(struct obj *sobj) /* sobj - scroll or fake spellbook for spell */
{
int cval, otyp = sobj->otyp;
boolean confused = (Confusion != 0), sblessed = sobj->blessed,
known not to be, make the scroll known; it's
trivial to identify anyway by comparing inventory
before and after */
- if (obj->bknown && otyp == SCR_REMOVE_CURSE) {
+ if (obj->bknown && otyp == SCR_REMOVE_CURSE)
learnscrolltyp(SCR_REMOVE_CURSE);
- }
+ }
+ }
+ }
+ /* if riding, treat steed's saddle as if part of hero's invent */
+ if (u.usteed && (obj = which_armor(u.usteed, W_SADDLE)) != 0) {
+ if (confused) {
+ blessorcurse(obj, 2);
+ obj->bknown = 0; /* skip set_bknown() */
+ } else if (obj->cursed) {
+ uncurse(obj);
+ /* like rndcurse(sit.c), effect on regular inventory
+ doesn't show things glowing but saddle does */
+ if (!Blind) {
+ pline("%s %s.", Yobjnam2(obj, "glow"),
+ hcolor("amber"));
+ obj->bknown = Hallucination ? 0 : 1;
+ } else {
+ obj->bknown = 0; /* skip set_bknown() */
}
}
}
if (!Blind) {
pline("%s %s.", Yobjnam2(otmp, "glow"),
hcolor(otmp->cursed ? NH_BLACK : (const char *) "brown"));
- otmp->bknown = 1; /* ok to bypass set_bknown() here */
+ otmp->bknown = Hallucination ? 0 : 1; /* bypass set_bknown() */
+ } else {
+ otmp->bknown = 0; /* bypass set_bknown() */
}
}
}
}
/* Is this a valid monster? */
- if (mtmp->misc_worn_check & W_SADDLE || which_armor(mtmp, W_SADDLE)) {
+ if ((mtmp->misc_worn_check & W_SADDLE) != 0L
+ || which_armor(mtmp, W_SADDLE)) {
pline("%s doesn't need another one.", Monnam(mtmp));
return 1;
}