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 cmd.c $NHDT-Date: 1562838823 2019/07/11 09:53:43 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.340 $ */
/* NetHack 3.6 cmd.c $NHDT-Date: 1565574994 2019/08/12 01:56:34 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.343 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2013. */
/* NetHack may be freely redistributed. See license for details. */
@@ -2328,26 +2328,50 @@ int final;
youhiding(TRUE, final);
/* internal troubles, mostly in the order that prayer ranks them */
if (Stoned)
you_are("turning to stone", "");
if (Slimed)
you_are("turning into slime", "");
if (Stoned) {
if (final && (Stoned & I_SPECIAL))
enlght_out(" You turned into stone.");
else
you_are("turning to stone", "");
}
if (Slimed) {
if (final && (Slimed & I_SPECIAL))
enlght_out(" You turned into slime.");
else
you_are("turning into slime", "");
}
if (Strangled) {
if (u.uburied) {
you_are("buried", "");
} else {
Strcpy(buf, "being strangled");
if (wizard)
Sprintf(eos(buf), " (%ld)", (Strangled & TIMEOUT));
you_are(buf, from_what(STRANGLED));
if (final && (Strangled & I_SPECIAL)) {
enlght_out(" You died from strangulation.");
} else {
Strcpy(buf, "being strangled");
if (wizard)
Sprintf(eos(buf), " (%ld)", (Strangled & TIMEOUT));
you_are(buf, from_what(STRANGLED));
}
}
}
if (Sick) {
/* prayer lumps these together; botl puts Ill before FoodPois */
if (u.usick_type & SICK_NONVOMITABLE)
you_are("terminally sick from illness", "");
if (u.usick_type & SICK_VOMITABLE)
you_are("terminally sick from food poisoning", "");
/* the two types of sickness are lumped together; hero can be
afflicted by both but there is only one timeout; botl status
puts TermIll before FoodPois and death due to timeout reports
terminal illness if both are in effect, so do the same here */
if (final && (Sick & I_SPECIAL)) {
Sprintf(buf, " %sdied from %s.", You_, /* has trailing space */
(u.usick_type & SICK_NONVOMITABLE)
? "terminal illness" : "food poisoning");
enlght_out(buf);
} else {
/* unlike death due to sickness, report the two cases separately
because it is possible to cure one without curing the other */
if (u.usick_type & SICK_NONVOMITABLE)
you_are("terminally sick from illness", "");
if (u.usick_type & SICK_VOMITABLE)
you_are("terminally sick from food poisoning", "");
}
}
if (Vomiting)
you_are("nauseated", "");
@@ -5843,7 +5867,7 @@ end_of_input()
#ifdef NOSAVEONHANGUP
#ifdef INSURANCE
if (flags.ins_chkpt && g.program_state.something_worth_saving)
program_statue.preserve_locks = 1; /* keep files for recovery */
program_state.preserve_locks = 1; /* keep files for recovery */
#endif
g.program_state.something_worth_saving = 0; /* don't save */
#endif

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 hack.c $NHDT-Date: 1559664951 2019/06/04 16:15:51 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.213 $ */
/* NetHack 3.6 hack.c $NHDT-Date: 1565288730 2019/08/08 18:25:30 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.215 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Derek S. Ray, 2015. */
/* NetHack may be freely redistributed. See license for details. */
@@ -2640,9 +2640,9 @@ dopickup(VOID_ARGS)
? g.multi + 1 : 0;
g.multi = 0; /* always reset */
if ((ret = pickup_checks() >= 0))
if ((ret = pickup_checks()) >= 0) {
return ret;
else if (ret == -2) {
} else if (ret == -2) {
tmpcount = -count;
return loot_mon(u.ustuck, &tmpcount, (boolean *) 0);
} /* else ret == -1 */

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) {