Merge branch 'fix-pray-goto' of https://github.com/argrath/NetHack into pr765-767
This commit is contained in:
+39
-28
@@ -7,6 +7,7 @@
|
|||||||
static int prayer_done(void);
|
static int prayer_done(void);
|
||||||
static struct obj *worst_cursed_item(void);
|
static struct obj *worst_cursed_item(void);
|
||||||
static int in_trouble(void);
|
static int in_trouble(void);
|
||||||
|
static void fix_curse_trouble(struct obj *, const char *);
|
||||||
static void fix_worst_trouble(int);
|
static void fix_worst_trouble(int);
|
||||||
static void angrygods(aligntyp);
|
static void angrygods(aligntyp);
|
||||||
static void at_your_feet(const char *);
|
static void at_your_feet(const char *);
|
||||||
@@ -328,6 +329,30 @@ worst_cursed_item(void)
|
|||||||
return otmp;
|
return otmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
fix_curse_trouble(struct obj *otmp, const char *what)
|
||||||
|
{
|
||||||
|
if (!otmp) {
|
||||||
|
impossible("fix_curse_trouble: nothing to uncurse.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (otmp == uarmg && Glib) {
|
||||||
|
make_glib(0);
|
||||||
|
Your("%s are no longer slippery.", gloves_simple_name(uarmg));
|
||||||
|
if (!otmp->cursed)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!Blind || (otmp == ublindf && Blindfolded_only)) {
|
||||||
|
pline("%s %s.",
|
||||||
|
what ? what : (const char *) Yobjnam2(otmp, "softly glow"),
|
||||||
|
hcolor(NH_AMBER));
|
||||||
|
iflags.last_msg = PLNMSG_OBJ_GLOWS;
|
||||||
|
otmp->bknown = !Hallucination; /* ok to skip set_bknown() */
|
||||||
|
}
|
||||||
|
uncurse(otmp);
|
||||||
|
update_inventory();
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
fix_worst_trouble(int trouble)
|
fix_worst_trouble(int trouble)
|
||||||
{
|
{
|
||||||
@@ -409,8 +434,10 @@ fix_worst_trouble(int trouble)
|
|||||||
if (otmp == uright)
|
if (otmp == uright)
|
||||||
what = rightglow;
|
what = rightglow;
|
||||||
}
|
}
|
||||||
if (otmp)
|
if (otmp) {
|
||||||
goto decurse;
|
fix_curse_trouble(otmp, what);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case TROUBLE_STUCK_IN_WALL:
|
case TROUBLE_STUCK_IN_WALL:
|
||||||
@@ -441,11 +468,13 @@ fix_worst_trouble(int trouble)
|
|||||||
if (otmp == uright)
|
if (otmp == uright)
|
||||||
what = rightglow;
|
what = rightglow;
|
||||||
}
|
}
|
||||||
goto decurse;
|
fix_curse_trouble(otmp, what);
|
||||||
|
break;
|
||||||
case TROUBLE_UNUSEABLE_HANDS:
|
case TROUBLE_UNUSEABLE_HANDS:
|
||||||
if (welded(uwep)) {
|
if (welded(uwep)) {
|
||||||
otmp = uwep;
|
otmp = uwep;
|
||||||
goto decurse;
|
fix_curse_trouble(otmp, what);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if (Upolyd && nohands(g.youmonst.data)) {
|
if (Upolyd && nohands(g.youmonst.data)) {
|
||||||
if (!Unchanging) {
|
if (!Unchanging) {
|
||||||
@@ -453,7 +482,8 @@ fix_worst_trouble(int trouble)
|
|||||||
rehumanize(); /* "You return to {normal} form." */
|
rehumanize(); /* "You return to {normal} form." */
|
||||||
} else if ((otmp = unchanger()) != 0 && otmp->cursed) {
|
} else if ((otmp = unchanger()) != 0 && otmp->cursed) {
|
||||||
/* otmp is an amulet of unchanging */
|
/* otmp is an amulet of unchanging */
|
||||||
goto decurse;
|
fix_curse_trouble(otmp, what);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (nohands(g.youmonst.data) || !freehand())
|
if (nohands(g.youmonst.data) || !freehand())
|
||||||
@@ -461,7 +491,8 @@ fix_worst_trouble(int trouble)
|
|||||||
break;
|
break;
|
||||||
case TROUBLE_CURSED_BLINDFOLD:
|
case TROUBLE_CURSED_BLINDFOLD:
|
||||||
otmp = ublindf;
|
otmp = ublindf;
|
||||||
goto decurse;
|
fix_curse_trouble(otmp, what);
|
||||||
|
break;
|
||||||
case TROUBLE_LYCANTHROPE:
|
case TROUBLE_LYCANTHROPE:
|
||||||
you_unwere(TRUE);
|
you_unwere(TRUE);
|
||||||
break;
|
break;
|
||||||
@@ -479,8 +510,7 @@ fix_worst_trouble(int trouble)
|
|||||||
otmp = uarmg;
|
otmp = uarmg;
|
||||||
else if (Cursed_obj(uarmf, FUMBLE_BOOTS))
|
else if (Cursed_obj(uarmf, FUMBLE_BOOTS))
|
||||||
otmp = uarmf;
|
otmp = uarmf;
|
||||||
goto decurse;
|
fix_curse_trouble(otmp, what);
|
||||||
/*NOTREACHED*/
|
|
||||||
break;
|
break;
|
||||||
case TROUBLE_CURSED_ITEMS:
|
case TROUBLE_CURSED_ITEMS:
|
||||||
otmp = worst_cursed_item();
|
otmp = worst_cursed_item();
|
||||||
@@ -488,26 +518,7 @@ fix_worst_trouble(int trouble)
|
|||||||
what = rightglow;
|
what = rightglow;
|
||||||
else if (otmp == uleft)
|
else if (otmp == uleft)
|
||||||
what = leftglow;
|
what = leftglow;
|
||||||
decurse:
|
fix_curse_trouble(otmp, what);
|
||||||
if (!otmp) {
|
|
||||||
impossible("fix_worst_trouble: nothing to uncurse.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (otmp == uarmg && Glib) {
|
|
||||||
make_glib(0);
|
|
||||||
Your("%s are no longer slippery.", gloves_simple_name(uarmg));
|
|
||||||
if (!otmp->cursed)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (!Blind || (otmp == ublindf && Blindfolded_only)) {
|
|
||||||
pline("%s %s.",
|
|
||||||
what ? what : (const char *) Yobjnam2(otmp, "softly glow"),
|
|
||||||
hcolor(NH_AMBER));
|
|
||||||
iflags.last_msg = PLNMSG_OBJ_GLOWS;
|
|
||||||
otmp->bknown = !Hallucination; /* ok to skip set_bknown() */
|
|
||||||
}
|
|
||||||
uncurse(otmp);
|
|
||||||
update_inventory();
|
|
||||||
break;
|
break;
|
||||||
case TROUBLE_POISONED:
|
case TROUBLE_POISONED:
|
||||||
/* override Fixed_abil; ignore items which confer that */
|
/* override Fixed_abil; ignore items which confer that */
|
||||||
|
|||||||
Reference in New Issue
Block a user