Merge branch 'NetHack-3.6'
This commit is contained in:
+5
-1
@@ -1,4 +1,4 @@
|
|||||||
$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.100 $ $NHDT-Date: 1565090653 2019/08/06 11:24:13 $
|
$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.102 $ $NHDT-Date: 1565574993 2019/08/12 01:56:33 $
|
||||||
|
|
||||||
This fixes36.3 file is here to capture information about updates in the 3.6.x
|
This fixes36.3 file is here to capture information about updates in the 3.6.x
|
||||||
lineage following the release of 3.6.2 in May 2019. Please note, however,
|
lineage following the release of 3.6.2 in May 2019. Please note, however,
|
||||||
@@ -116,6 +116,10 @@ when a boulder was teleported, if it landed in a pit or trap door or hole its
|
|||||||
former location wasn't updated to show that it wasn't there anymore
|
former location wasn't updated to show that it wasn't there anymore
|
||||||
(noticed in Sokoban but not limited to there)
|
(noticed in Sokoban but not limited to there)
|
||||||
Terry Pratchett tribute, fix typo in passage #4 for Mort ("the" -> "they")
|
Terry Pratchett tribute, fix typo in passage #4 for Mort ("the" -> "they")
|
||||||
|
fix typo in end_of_input() present since 3.6.0 that would prevent compilation
|
||||||
|
for NOSAVEONHANGUP+INSURANCE configuration
|
||||||
|
when a status condition becomes fatal, keep it listed as an active condition
|
||||||
|
during disclosure and/or dumplog rather than having it already reset
|
||||||
|
|
||||||
|
|
||||||
Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository
|
Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository
|
||||||
|
|||||||
@@ -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) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/*-Copyright (c) Robert Patrick Rankin, 2013. */
|
/*-Copyright (c) Robert Patrick Rankin, 2013. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -2328,26 +2328,50 @@ int final;
|
|||||||
youhiding(TRUE, final);
|
youhiding(TRUE, final);
|
||||||
|
|
||||||
/* internal troubles, mostly in the order that prayer ranks them */
|
/* internal troubles, mostly in the order that prayer ranks them */
|
||||||
if (Stoned)
|
if (Stoned) {
|
||||||
you_are("turning to stone", "");
|
if (final && (Stoned & I_SPECIAL))
|
||||||
if (Slimed)
|
enlght_out(" You turned into stone.");
|
||||||
you_are("turning into slime", "");
|
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 (Strangled) {
|
||||||
if (u.uburied) {
|
if (u.uburied) {
|
||||||
you_are("buried", "");
|
you_are("buried", "");
|
||||||
} else {
|
} else {
|
||||||
Strcpy(buf, "being strangled");
|
if (final && (Strangled & I_SPECIAL)) {
|
||||||
if (wizard)
|
enlght_out(" You died from strangulation.");
|
||||||
Sprintf(eos(buf), " (%ld)", (Strangled & TIMEOUT));
|
} else {
|
||||||
you_are(buf, from_what(STRANGLED));
|
Strcpy(buf, "being strangled");
|
||||||
|
if (wizard)
|
||||||
|
Sprintf(eos(buf), " (%ld)", (Strangled & TIMEOUT));
|
||||||
|
you_are(buf, from_what(STRANGLED));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (Sick) {
|
if (Sick) {
|
||||||
/* prayer lumps these together; botl puts Ill before FoodPois */
|
/* the two types of sickness are lumped together; hero can be
|
||||||
if (u.usick_type & SICK_NONVOMITABLE)
|
afflicted by both but there is only one timeout; botl status
|
||||||
you_are("terminally sick from illness", "");
|
puts TermIll before FoodPois and death due to timeout reports
|
||||||
if (u.usick_type & SICK_VOMITABLE)
|
terminal illness if both are in effect, so do the same here */
|
||||||
you_are("terminally sick from food poisoning", "");
|
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)
|
if (Vomiting)
|
||||||
you_are("nauseated", "");
|
you_are("nauseated", "");
|
||||||
@@ -5843,7 +5867,7 @@ end_of_input()
|
|||||||
#ifdef NOSAVEONHANGUP
|
#ifdef NOSAVEONHANGUP
|
||||||
#ifdef INSURANCE
|
#ifdef INSURANCE
|
||||||
if (flags.ins_chkpt && g.program_state.something_worth_saving)
|
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
|
#endif
|
||||||
g.program_state.something_worth_saving = 0; /* don't save */
|
g.program_state.something_worth_saving = 0; /* don't save */
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+3
-3
@@ -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) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/*-Copyright (c) Derek S. Ray, 2015. */
|
/*-Copyright (c) Derek S. Ray, 2015. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -2640,9 +2640,9 @@ dopickup(VOID_ARGS)
|
|||||||
? g.multi + 1 : 0;
|
? g.multi + 1 : 0;
|
||||||
g.multi = 0; /* always reset */
|
g.multi = 0; /* always reset */
|
||||||
|
|
||||||
if ((ret = pickup_checks() >= 0))
|
if ((ret = pickup_checks()) >= 0) {
|
||||||
return ret;
|
return ret;
|
||||||
else if (ret == -2) {
|
} else if (ret == -2) {
|
||||||
tmpcount = -count;
|
tmpcount = -count;
|
||||||
return loot_mon(u.ustuck, &tmpcount, (boolean *) 0);
|
return loot_mon(u.ustuck, &tmpcount, (boolean *) 0);
|
||||||
} /* else ret == -1 */
|
} /* else ret == -1 */
|
||||||
|
|||||||
+26
-8
@@ -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) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/*-Copyright (c) Robert Patrick Rankin, 2018. */
|
/*-Copyright (c) Robert Patrick Rankin, 2018. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* 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(choke_dialogue);
|
||||||
static void NDECL(levitation_dialogue);
|
static void NDECL(levitation_dialogue);
|
||||||
static void NDECL(slime_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 NDECL(slip_or_trip);
|
||||||
static void FDECL(see_lamp_flicker, (struct obj *, const char *));
|
static void FDECL(see_lamp_flicker, (struct obj *, const char *));
|
||||||
static void FDECL(lantern_message, (struct obj *));
|
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 */
|
/* become a green slime; also resets youmonst.m_ap_type+.mappearance */
|
||||||
(void) polymon(PM_GREEN_SLIME);
|
(void) polymon(PM_GREEN_SLIME);
|
||||||
g.mvitals[PM_GREEN_SLIME].mvflags = save_mvflags;
|
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;
|
/* life-saved; even so, hero still has turned into green slime;
|
||||||
player may have genocided green slimes after being infected */
|
player may have genocided green slimes after being infected */
|
||||||
@@ -427,7 +428,7 @@ struct kinfo *kptr;
|
|||||||
/* follows "The medallion crumbles to dust." */
|
/* follows "The medallion crumbles to dust." */
|
||||||
pline("Unfortunately, %s", slimebuf);
|
pline("Unfortunately, %s", slimebuf);
|
||||||
/* die again; no possibility of amulet this time */
|
/* 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)
|
/* could be life-saved again (only in explore or wizard mode)
|
||||||
but green slimes are gone; just stay in current form */
|
but green slimes are gone; just stay in current form */
|
||||||
}
|
}
|
||||||
@@ -458,6 +459,23 @@ phaze_dialogue()
|
|||||||
pline1(phaze_texts[SIZE(phaze_texts) - i]);
|
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
|
void
|
||||||
nh_timeout()
|
nh_timeout()
|
||||||
{
|
{
|
||||||
@@ -543,10 +561,10 @@ nh_timeout()
|
|||||||
}
|
}
|
||||||
dealloc_killer(kptr);
|
dealloc_killer(kptr);
|
||||||
/* (unlike sliming, you aren't changing form here) */
|
/* (unlike sliming, you aren't changing form here) */
|
||||||
done(STONING);
|
done_timeout(STONING, STONED);
|
||||||
break;
|
break;
|
||||||
case SLIMED:
|
case SLIMED:
|
||||||
slimed_to_death(kptr); /* done(TURNED_SLIME) */
|
slimed_to_death(kptr); /* done_timeout(TURNED_SLIME,SLIMED) */
|
||||||
break;
|
break;
|
||||||
case VOMITING:
|
case VOMITING:
|
||||||
make_vomiting(0L, TRUE);
|
make_vomiting(0L, TRUE);
|
||||||
@@ -570,8 +588,8 @@ nh_timeout()
|
|||||||
g.killer.format = KILLED_BY;
|
g.killer.format = KILLED_BY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
done_timeout(POISONING, SICK);
|
||||||
u.usick_type = 0;
|
u.usick_type = 0;
|
||||||
done(POISONING);
|
|
||||||
break;
|
break;
|
||||||
case FAST:
|
case FAST:
|
||||||
if (!Very_fast)
|
if (!Very_fast)
|
||||||
@@ -674,7 +692,7 @@ nh_timeout()
|
|||||||
g.killer.format = KILLED_BY;
|
g.killer.format = KILLED_BY;
|
||||||
Strcpy(g.killer.name,
|
Strcpy(g.killer.name,
|
||||||
(u.uburied) ? "suffocation" : "strangulation");
|
(u.uburied) ? "suffocation" : "strangulation");
|
||||||
done(DIED);
|
done_timeout(DIED, STRANGLED);
|
||||||
/* must be declining to die in explore|wizard mode;
|
/* must be declining to die in explore|wizard mode;
|
||||||
treat like being cured of strangulation by prayer */
|
treat like being cured of strangulation by prayer */
|
||||||
if (uamul && uamul->otyp == AMULET_OF_STRANGULATION) {
|
if (uamul && uamul->otyp == AMULET_OF_STRANGULATION) {
|
||||||
|
|||||||
Reference in New Issue
Block a user