Merge branch 'NetHack-3.6'

This commit is contained in:
nhmall
2019-08-13 16:32:53 -04:00
4 changed files with 73 additions and 27 deletions

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 timeout.c $NHDT-Date: 1564269133 2019/07/27 23:12:13 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.91 $ */
/* NetHack 3.6 timeout.c $NHDT-Date: 1565574996 2019/08/12 01:56:36 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.92 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2018. */
/* NetHack may be freely redistributed. See license for details. */
@@ -13,7 +13,8 @@ static void NDECL(vomiting_dialogue);
static void NDECL(choke_dialogue);
static void NDECL(levitation_dialogue);
static void NDECL(slime_dialogue);
static void FDECL(slimed_to_death, (struct kinfo *));
static void NDECL(phaze_dialogue);
static void FDECL(done_timeout, (int, int));
static void NDECL(slip_or_trip);
static void FDECL(see_lamp_flicker, (struct obj *, const char *));
static void FDECL(lantern_message, (struct obj *));
@@ -408,7 +409,7 @@ struct kinfo *kptr;
/* become a green slime; also resets youmonst.m_ap_type+.mappearance */
(void) polymon(PM_GREEN_SLIME);
g.mvitals[PM_GREEN_SLIME].mvflags = save_mvflags;
done(TURNED_SLIME);
done_timeout(TURNED_SLIME, SLIMED);
/* life-saved; even so, hero still has turned into green slime;
player may have genocided green slimes after being infected */
@@ -427,7 +428,7 @@ struct kinfo *kptr;
/* follows "The medallion crumbles to dust." */
pline("Unfortunately, %s", slimebuf);
/* die again; no possibility of amulet this time */
done(GENOCIDED);
done(GENOCIDED); /* [should it be done_timeout(GENOCIDED, SLIMED)?] */
/* could be life-saved again (only in explore or wizard mode)
but green slimes are gone; just stay in current form */
}
@@ -458,6 +459,23 @@ phaze_dialogue()
pline1(phaze_texts[SIZE(phaze_texts) - i]);
}
/* when a status timeout is fatal, keep the status line indicator shown
during end of game rundown (and potential dumplog);
timeout has already counted down to 0 by the time we get here */
static void
done_timeout(how, which)
int how, which;
{
long *intrinsic_p = &u.uprops[which].intrinsic;
*intrinsic_p |= I_SPECIAL; /* affects final disclosure */
done(how);
/* life-saved */
*intrinsic_p &= ~I_SPECIAL;
g.context.botl = TRUE;
}
void
nh_timeout()
{
@@ -543,10 +561,10 @@ nh_timeout()
}
dealloc_killer(kptr);
/* (unlike sliming, you aren't changing form here) */
done(STONING);
done_timeout(STONING, STONED);
break;
case SLIMED:
slimed_to_death(kptr); /* done(TURNED_SLIME) */
slimed_to_death(kptr); /* done_timeout(TURNED_SLIME,SLIMED) */
break;
case VOMITING:
make_vomiting(0L, TRUE);
@@ -570,8 +588,8 @@ nh_timeout()
g.killer.format = KILLED_BY;
}
}
done_timeout(POISONING, SICK);
u.usick_type = 0;
done(POISONING);
break;
case FAST:
if (!Very_fast)
@@ -674,7 +692,7 @@ nh_timeout()
g.killer.format = KILLED_BY;
Strcpy(g.killer.name,
(u.uburied) ? "suffocation" : "strangulation");
done(DIED);
done_timeout(DIED, STRANGLED);
/* must be declining to die in explore|wizard mode;
treat like being cured of strangulation by prayer */
if (uamul && uamul->otyp == AMULET_OF_STRANGULATION) {