Merge branch 'win-wip3.7' into win-wip3.7-bart

Conflicts:
	src/end.c
This commit is contained in:
Bart House
2018-12-24 12:09:42 -08:00
16 changed files with 158 additions and 78 deletions
+12 -3
View File
@@ -156,9 +156,6 @@ a wand of polymorph lost its magical ability for the turn just because the
much sense
floating eye is classified as a flyer but flying is blocked while levitating,
so don't set intrinsic flying if hero is polymorphed into one
being trapped (bear trap, web, molten or solidified lava, chained to buried
iron ball) blocks both levitation and flight (note: being stuck in a
pit ends when either of those starts so doesn't apply)
change default value for the 'autodescribe' option to 'on'
Elbereth hypocrisy penalty doesn't apply if attacking a monster which isn't
frightened by Elbereth; normal scuffing of engravings still applies
@@ -300,6 +297,12 @@ identifying or forgetting gem types now adjusts prices for gems already on
when fire converts an ice location into a water location, dunk any monster on
that spot immediately instead of waiting until its next move
training riding skill had an off-by-one bug when counting turns riding
message sequencing when vampire shifts to fog cloud to pass under closed door:
when in sight, give form change message before moving to door spot
limit carrying heavy loads from water to land
failing to carry a wished-for item behaved differenctly from dropping one
life-saving while weak/starving/fainting boosted nutrition without restoring
lost point of strength, making temporary loss be permanent
Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository
@@ -333,6 +336,7 @@ a config file line with OPTIONS=symset:default, roguesymset:RogueEpyx
meant to have color; that was due to an errant init_symbols() call
during the processing of symset:default done after RogueEpyx had
already been processed
avoid potential segfault when doing 'more information' lookup
tty: turn off an optimization that is the suspected cause of Windows reported
partial status lines following level changes
tty: ensure that current status fields are always copied to prior status
@@ -447,6 +451,11 @@ for ^X and enlightenment, display the information in a menu rather than a
needed for interfaces (tty) without text popup scrollbar support;
end of game disclosure of attributes remains single-forward-pass
for ^X, include current state of 'autopickup'
being trapped (bear trap, web, molten or solidified lava, chained to buried
iron ball) blocks both levitation and flight (note: being stuck in a
pit ends when either of those starts so doesn't apply)
early level traps are sometimes covered by the remains of fake players
fake player characters resist Conflict
NetHack Community Patches (or Variation) Included
+2 -2
View File
@@ -1,4 +1,4 @@
/* NetHack 3.6 extern.h $NHDT-Date: 1545439142 2018/12/22 00:39:02 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.676 $ */
/* NetHack 3.6 extern.h $NHDT-Date: 1545597403 2018/12/23 20:36:43 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.676 $ */
/* Copyright (c) Steve Creps, 1988. */
/* NetHack may be freely redistributed. See license for details. */
@@ -536,7 +536,7 @@ E void FDECL(impact_drop, (struct obj *, XCHAR_P, XCHAR_P, XCHAR_P));
E int NDECL(dothrow);
E int NDECL(dofire);
E void FDECL(endmultishot, (BOOLEAN_P));
E void FDECL(hitfloor, (struct obj *));
E void FDECL(hitfloor, (struct obj *, BOOLEAN_P));
E void FDECL(hurtle, (int, int, int, BOOLEAN_P));
E void FDECL(mhurtle, (struct monst *, int, int, int));
E boolean FDECL(throwing_weapon, (struct obj *));
+5 -3
View File
@@ -1,4 +1,4 @@
/* NetHack 3.6 artifact.c $NHDT-Date: 1543745353 2018/12/02 10:09:13 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.127 $ */
/* NetHack 3.6 artifact.c $NHDT-Date: 1545597414 2018/12/23 20:36:54 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.128 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2013. */
/* NetHack may be freely redistributed. See license for details. */
@@ -1469,6 +1469,7 @@ struct obj *obj;
}
case ENERGY_BOOST: {
int epboost = (u.uenmax + 1 - u.uen) / 2;
if (epboost > 120)
epboost = 120; /* arbitrary */
else if (epboost < 12)
@@ -1587,6 +1588,7 @@ struct obj *obj;
otmp->owt = weight(otmp);
otmp = hold_another_object(otmp, "Suddenly %s out.",
aobjnam(otmp, "fall"), (char *) 0);
nhUse(otmp);
break;
}
}
@@ -1610,7 +1612,7 @@ struct obj *obj;
}
if ((eprop & ~W_ARTI) || iprop) {
nothing_special:
nothing_special:
/* you had the property from some other source too */
if (carried(obj))
You_feel("a surge of power, but nothing seems to happen.");
@@ -1964,7 +1966,7 @@ boolean loseit; /* whether to drop it if hero can longer touch it */
if (loseit && obj) {
if (Levitation) {
freeinv(obj);
hitfloor(obj);
hitfloor(obj, TRUE);
} else {
/* dropx gives a message iff item lands on an altar */
if (!IS_ALTAR(levl[u.ux][u.uy].typ))
+2 -2
View File
@@ -1,4 +1,4 @@
/* NetHack 3.6 do.c $NHDT-Date: 1545043771 2018/12/17 10:49:31 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.181 $ */
/* NetHack 3.6 do.c $NHDT-Date: 1545597418 2018/12/23 20:36:58 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.182 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Derek S. Ray, 2015. */
/* NetHack may be freely redistributed. See license for details. */
@@ -610,7 +610,7 @@ register struct obj *obj;
if (obj->oclass == COIN_CLASS)
context.botl = 1;
freeinv(obj);
hitfloor(obj);
hitfloor(obj, TRUE);
if (levhack)
float_down(I_SPECIAL | TIMEOUT, W_ARTI | W_ART);
return 1;
+11 -11
View File
@@ -1,4 +1,4 @@
/* NetHack 3.6 dothrow.c $NHDT-Date: 1545044705 2018/12/17 11:05:05 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.154 $ */
/* NetHack 3.6 dothrow.c $NHDT-Date: 1545597420 2018/12/23 20:37:00 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.155 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2013. */
/* NetHack may be freely redistributed. See license for details. */
@@ -413,21 +413,21 @@ boolean verbose;
}
}
/*
* Object hits floor at hero's feet. Called from drop() and throwit().
*/
/* Object hits floor at hero's feet.
Called from drop(), throwit(), hold_another_object(). */
void
hitfloor(obj)
register struct obj *obj;
hitfloor(obj, verbosely)
struct obj *obj;
boolean verbosely; /* usually True; False if caller has given drop message */
{
if (IS_SOFT(levl[u.ux][u.uy].typ) || u.uinwater) {
if (IS_SOFT(levl[u.ux][u.uy].typ) || u.uinwater || u.uswallow) {
dropy(obj);
return;
}
if (IS_ALTAR(levl[u.ux][u.uy].typ))
doaltarobj(obj);
else
pline("%s hit%s the %s.", Doname2(obj), (obj->quan == 1L) ? "s" : "",
else if (verbosely)
pline("%s %s the %s.", Doname2(obj), otense(obj, "hit"),
surface(u.ux, u.uy));
if (hero_breaks(obj, u.ux, u.uy, TRUE))
@@ -1045,7 +1045,7 @@ boolean hitsroof;
done(STONING);
return obj ? TRUE : FALSE;
}
hitfloor(obj);
hitfloor(obj, TRUE);
thrownobj = 0;
losehp(Maybe_Half_Phys(dmg), "falling object", KILLED_BY_AN);
}
@@ -1166,7 +1166,7 @@ boolean twoweap; /* used to restore twoweapon mode if wielded weapon returns */
for dealing with cursed saddle: throw holy water > */
potionhit(u.usteed, obj, POTHIT_HERO_THROW);
} else {
hitfloor(obj);
hitfloor(obj, TRUE);
}
thrownobj = (struct obj *) 0;
return;
+8 -8
View File
@@ -1,4 +1,4 @@
/* NetHack 3.6 end.c $NHDT-Date: 1545172226 2018/12/18 22:30:26 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.159 $ */
/* NetHack 3.6 end.c $NHDT-Date: 1545646111 2018/12/24 10:08:31 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.160 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2012. */
/* NetHack may be freely redistributed. See license for details. */
@@ -836,16 +836,13 @@ int how;
u.uhp = u.uhpmax;
if (Upolyd) /* Unchanging, or death which bypasses losing hit points */
u.mh = u.mhmax;
if (u.uhunger < 500) {
u.uhunger = 500;
newuhs(FALSE);
if (u.uhunger < 500 || how == CHOKING) {
init_uhunger();
}
/* cure impending doom of sickness hero won't have time to fix */
if ((Sick & TIMEOUT) == 1L) {
make_sick(0L, (char *) 0, FALSE, SICK_ALL);
}
if (how == CHOKING)
init_uhunger();
g.nomovemsg = "You survived that attempt on your life.";
context.move = 0;
if (g.multi > 0)
@@ -1037,9 +1034,12 @@ int how;
if (iflags.debug_fuzzer) {
if (!(program_state.panicking || how == PANICKED)) {
savelife(how);
/* periodically restore characteristics and lost exp levels */
/* periodically restore characteristics and lost exp levels
or cure lycanthropy */
if (!rn2(10)) {
struct obj *potion = mksobj(POT_RESTORE_ABILITY, TRUE, FALSE);
struct obj *potion = mksobj((u.ulycn > LOW_PM && !rn2(3))
? POT_WATER : POT_RESTORE_ABILITY,
TRUE, FALSE);
bless(potion);
(void) peffects(potion); /* always -1 for restore ability */
+15 -1
View File
@@ -1,4 +1,4 @@
/* NetHack 3.6 hack.c $NHDT-Date: 1544401269 2018/12/10 00:21:09 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.201 $ */
/* NetHack 3.6 hack.c $NHDT-Date: 1545530973 2018/12/23 02:09:33 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.202 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Derek S. Ray, 2015. */
/* NetHack may be freely redistributed. See license for details. */
@@ -1427,6 +1427,19 @@ domove()
}
x = u.ux + u.dx;
y = u.uy + u.dy;
/* are we trying to move out of water while carrying too much? */
if (isok(x, y) && !is_pool(x, y) && !Is_waterlevel(&u.uz)
&& wtcap > (Swimming ? MOD_ENCUMBER : SLT_ENCUMBER)) {
/* when escaping from drowning you need to be unencumbered
in order to crawl out of water, but when not drowning,
doing so while encumbered is feasible; if in an aquatic
form, stressed or less is allowed; otherwise (magical
breathing), only burdened is allowed */
You("are carrying too much to climb out of the water.");
nomul(0);
return;
}
}
if (!isok(x, y)) {
nomul(0);
@@ -1439,6 +1452,7 @@ domove()
if (iflags.mention_walls) {
if (trap && trap->tseen) {
int tt = what_trap(trap->ttyp);
You("stop in front of %s.",
an(defsyms[trap_to_defsym(tt)].explanation));
} else if (is_pool_or_lava(x,y) && levl[x][y].seenv) {
+17 -7
View File
@@ -1,4 +1,4 @@
/* NetHack 3.6 invent.c $NHDT-Date: 1545043772 2018/12/17 10:49:32 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.244 $ */
/* NetHack 3.6 invent.c $NHDT-Date: 1545597422 2018/12/23 20:37:02 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.245 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Derek S. Ray, 2015. */
/* NetHack may be freely redistributed. See license for details. */
@@ -970,9 +970,9 @@ const char *drop_fmt, *drop_arg, *hold_msg;
}
}
if (Fumbling) {
if (drop_fmt)
pline(drop_fmt, drop_arg);
dropy(obj);
obj->nomerge = 1;
obj = addinv(obj); /* dropping expects obj to be in invent */
goto drop_it;
} else {
long oquan = obj->quan;
int prev_encumbr = near_capacity(); /* before addinv() */
@@ -989,12 +989,10 @@ const char *drop_fmt, *drop_arg, *hold_msg;
obj = addinv(obj);
if (inv_cnt(FALSE) > 52 || ((obj->otyp != LOADSTONE || !obj->cursed)
&& near_capacity() > prev_encumbr)) {
if (drop_fmt)
pline(drop_fmt, drop_arg);
/* undo any merge which took place */
if (obj->quan > oquan)
obj = splitobj(obj, oquan);
dropx(obj);
goto drop_it;
} else {
if (flags.autoquiver && !uquiver && !obj->owornmask
&& (is_missile(obj) || ammo_and_launcher(obj, uwep)
@@ -1005,6 +1003,18 @@ const char *drop_fmt, *drop_arg, *hold_msg;
}
}
return obj;
drop_it:
if (drop_fmt)
pline(drop_fmt, drop_arg);
obj->nomerge = 0;
if (can_reach_floor(TRUE)) {
dropx(obj);
} else {
freeinv(obj);
hitfloor(obj, FALSE);
}
return (struct obj *) 0; /* might be gone */
}
/* useup() all of an item regardless of its quantity */
+9 -7
View File
@@ -1,4 +1,4 @@
/* NetHack 3.6 mail.c $NHDT-Date: 1542765359 2018/11/21 01:55:59 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.37 $ */
/* NetHack 3.6 mail.c $NHDT-Date: 1545597424 2018/12/23 20:37:04 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.39 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Pasi Kallinen, 2018. */
/* NetHack may be freely redistributed. See license for details. */
@@ -186,7 +186,7 @@ coord *startp;
*/
lax = 0; /* be picky */
max_distance = -1;
retry:
retry:
for (row = 0; row < ROWNO; row++) {
if (viz_rmin[row] < viz_rmax[row]) {
/* There are valid positions on this row. */
@@ -418,15 +418,17 @@ struct mail_info *info;
display_nhwindow(WIN_MESSAGE, FALSE);
obj = hold_another_object(obj, "Oops!", (const char *) 0,
(const char *) 0);
nhUse(obj);
}
/* zip back to starting location */
go_back:
go_back:
/* zip back to starting location */
if (!md_rush(md, start.x, start.y))
md->mx = md->my = 0; /* for mongone, md is not on map */
mongone(md);
/* deliver some classes of messages even if no daemon ever shows up */
give_up:
give_up:
/* deliver some classes of messages even if no daemon ever shows up */
if (!message_seen && info->message_typ == MSG_OTHER)
pline("Hark! \"%s.\"", info->display_txt);
}
@@ -609,7 +611,7 @@ boolean adminmsg;
else
unlink(mailbox);
return;
bail:
bail:
/* bail out _professionally_ */
if (!adminmsg)
pline("It appears to be all gibberish.");
+13 -10
View File
@@ -1,4 +1,4 @@
/* NetHack 3.6 mkobj.c $NHDT-Date: 1542798624 2018/11/21 11:10:24 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.136 $ */
/* NetHack 3.6 mkobj.c $NHDT-Date: 1545597425 2018/12/23 20:37:05 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.137 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Derek S. Ray, 2015. */
/* NetHack may be freely redistributed. See license for details. */
@@ -2168,18 +2168,21 @@ boolean tipping; /* caller emptying entire contents; affects shop handling */
being included in its formatted name during next message */
iflags.suppress_price++;
if (!tipping) {
obj = hold_another_object(
obj, u.uswallow ? "Oops! %s out of your reach!"
: (Is_airlevel(&u.uz) || Is_waterlevel(&u.uz)
|| levl[u.ux][u.uy].typ < IRONBARS
|| levl[u.ux][u.uy].typ >= ICE)
? "Oops! %s away from you!"
: "Oops! %s to the floor!",
The(aobjnam(obj, "slip")), (const char *) 0);
obj = hold_another_object(obj,
u.uswallow
? "Oops! %s out of your reach!"
: (Is_airlevel(&u.uz)
|| Is_waterlevel(&u.uz)
|| levl[u.ux][u.uy].typ < IRONBARS
|| levl[u.ux][u.uy].typ >= ICE)
? "Oops! %s away from you!"
: "Oops! %s to the floor!",
The(aobjnam(obj, "slip")), (char *) 0);
nhUse(obj);
} else {
/* assumes this is taking place at hero's location */
if (!can_reach_floor(TRUE)) {
hitfloor(obj); /* does altar check, message, drop */
hitfloor(obj, TRUE); /* does altar check, message, drop */
} else {
if (IS_ALTAR(levl[u.ux][u.uy].typ))
doaltarobj(obj); /* does its own drop message */
+46 -14
View File
@@ -1,4 +1,4 @@
/* NetHack 3.6 monmove.c $NHDT-Date: 1545439153 2018/12/22 00:39:13 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.110 $ */
/* NetHack 3.6 monmove.c $NHDT-Date: 1545596010 2018/12/23 20:13:30 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.111 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Michael Allison, 2006. */
/* NetHack may be freely redistributed. See license for details. */
@@ -944,7 +944,7 @@ register int after;
mmoved = 1;
goto postmov;
}
not_special:
not_special:
if (u.uswallow && !mtmp->mflee && u.ustuck != mtmp)
return 1;
omx = mtmp->mx;
@@ -1205,7 +1205,7 @@ not_special:
chi = i;
mmoved = 1;
}
nxti:
nxti:
;
}
}
@@ -1249,6 +1249,7 @@ not_special:
if ((info[chi] & ALLOW_M) || (nix == mtmp->mux && niy == mtmp->muy)) {
struct monst *mtmp2;
int mstatus;
mtmp2 = m_at(nix, niy);
g.notonhead = mtmp2 && (nix != mtmp2->mx || niy != mtmp2->my);
@@ -1272,6 +1273,7 @@ not_special:
if ((info[chi] & ALLOW_MDISP)) {
struct monst *mtmp2;
int mstatus;
mtmp2 = m_at(nix, niy);
mstatus = mdisplacem(mtmp, mtmp2, FALSE);
if ((mstatus & MM_AGR_DIED) || (mstatus & MM_DEF_DIED))
@@ -1283,6 +1285,7 @@ not_special:
if (!m_in_out_region(mtmp, nix, niy))
return 3;
remove_monster(omx, omy);
place_monster(mtmp, nix, niy);
for (j = MTSZ - 1; j > 0; j--)
@@ -1300,18 +1303,51 @@ not_special:
if (mtmp->wormno)
worm_nomove(mtmp);
}
postmov:
postmov:
if (mmoved == 1 || mmoved == 3) {
boolean canseeit = cansee(mtmp->mx, mtmp->my);
if (mmoved == 1) {
/* normal monster move will already have <nix,niy>,
but pet dog_move() with 'goto postmov' won't */
nix = mtmp->mx, niy = mtmp->my;
/* sequencing issue: when monster movement decides that a
monster can move to a door location, it moves the monster
there before dealing with the door rather than after;
so a vampire/bat that is going to shift to fog cloud and
pass under the door is already there but transformation
into fog form--and its message, when in sight--has not
happened yet; we have to move monster back to previous
location before performing the vamp_shift() to make the
message happen at right time, then back to the door again
[if we did the shift above, before moving the monster,
we would need to duplicate it in dog_move()...] */
if (is_vampshifter(mtmp) && !amorphous(mtmp->data)
&& IS_DOOR(levl[nix][niy].typ)
&& ((levl[nix][niy].doormask & (D_LOCKED | D_CLOSED)) != 0)
&& can_fog(mtmp)) {
if (sawmon) {
remove_monster(nix, niy);
place_monster(mtmp, omx, omy);
newsym(nix, niy), newsym(omx, omy);
}
if (vamp_shift(mtmp, &mons[PM_FOG_CLOUD], sawmon)) {
ptr = mtmp->data; /* update cached value */
}
if (sawmon) {
remove_monster(omx, omy);
place_monster(mtmp, nix, niy);
newsym(omx, omy), newsym(nix, niy);
}
}
newsym(omx, omy); /* update the old position */
if (mintrap(mtmp) >= 2) {
if (mtmp->mx)
newsym(mtmp->mx, mtmp->my);
return 2; /* it died */
}
ptr = mtmp->data;
ptr = mtmp->data; /* in case mintrap() caused polymorph */
/* open a door, or crash through it, if 'mtmp' can */
if (IS_DOOR(levl[mtmp->mx][mtmp->my].typ)
@@ -1332,18 +1368,11 @@ postmov:
btrapped = FALSE;
}
if ((here->doormask & (D_LOCKED | D_CLOSED)) != 0
&& (amorphous(ptr)
|| (can_fog(mtmp)
&& vamp_shift(mtmp, &mons[PM_FOG_CLOUD],
sawmon)))) {
/* update cached value for vamp_shift() case */
ptr = mtmp->data;
&& amorphous(ptr)) {
if (flags.verbose && canseemon(mtmp))
pline("%s %s under the door.", Monnam(mtmp),
(ptr == &mons[PM_FOG_CLOUD]
|| ptr->mlet == S_LIGHT)
? "flows"
: "oozes");
|| ptr->mlet == S_LIGHT) ? "flows" : "oozes");
} else if (here->doormask & D_LOCKED && can_unlock) {
if (btrapped) {
here->doormask = D_NODOOR;
@@ -1732,6 +1761,9 @@ boolean domsg;
pline("You %s %s where %s was.",
!canseemon(mon) ? "now detect" : "observe",
noname_monnam(mon, ARTICLE_A), oldmtype);
/* this message is given when it turns into a fog cloud
in order to move under a closed door */
display_nhwindow(WIN_MESSAGE, FALSE);
}
return reslt;
+4 -4
View File
@@ -1,4 +1,4 @@
/* NetHack 3.6 pager.c $NHDT-Date: 1545361111 2018/12/21 02:58:31 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.143 $ */
/* NetHack 3.6 pager.c $NHDT-Date: 1545595360 2018/12/23 20:02:40 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.144 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2018. */
/* NetHack may be freely redistributed. See license for details. */
@@ -646,9 +646,9 @@ char *supplemental_name;
The Eyes of the Overworld" simplified above to "lenses named
The Eyes of the Overworld", now reduced to "The Eyes of the
Overworld", skip "The" as with base name processing) */
if (!strncmpi(alt, "a ", 2)
|| !strncmpi(alt, "an ", 3)
|| !strncmpi(alt, "the ", 4))
if (alt && (!strncmpi(alt, "a ", 2)
|| !strncmpi(alt, "an ", 3)
|| !strncmpi(alt, "the ", 4)))
alt = index(alt, ' ') + 1;
/* remove charges or "(lit)" or wizmode "(N aum)" */
if ((ep = strstri(dbase_str, " (")) != 0 && ep > dbase_str)
+3 -2
View File
@@ -1,4 +1,4 @@
/* NetHack 3.6 pickup.c $NHDT-Date: 1543188989 2018/11/25 23:36:29 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.220 $ */
/* NetHack 3.6 pickup.c $NHDT-Date: 1545597427 2018/12/23 20:37:07 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.221 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2012. */
/* NetHack may be freely redistributed. See license for details. */
@@ -2010,6 +2010,7 @@ boolean *prev_loot;
}
otmp = hold_another_object(otmp, "You drop %s!", doname(otmp),
(const char *) 0);
nhUse(otmp);
timepassed = rnd(3);
if (prev_loot)
*prev_loot = TRUE;
@@ -3175,7 +3176,7 @@ struct obj *box; /* or bag */
if (highdrop) {
/* might break or fall down stairs; handles altars itself */
hitfloor(otmp);
hitfloor(otmp, TRUE);
} else {
if (altarizing) {
doaltarobj(otmp);
+2 -1
View File
@@ -1,4 +1,4 @@
/* NetHack 3.6 potion.c $NHDT-Date: 1545182147 2018/12/19 01:15:47 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.156 $ */
/* NetHack 3.6 potion.c $NHDT-Date: 1545597429 2018/12/23 20:37:09 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.157 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2013. */
/* NetHack may be freely redistributed. See license for details. */
@@ -2234,6 +2234,7 @@ more_dips:
singlepotion =
hold_another_object(singlepotion, "You juggle and drop %s!",
doname(singlepotion), (const char *) 0);
nhUse(singlepotion);
update_inventory();
return 1;
}
+3 -2
View File
@@ -1,4 +1,4 @@
/* NetHack 3.6 uhitm.c $NHDT-Date: 1544840256 2018/12/15 02:17:36 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.196 $ */
/* NetHack 3.6 uhitm.c $NHDT-Date: 1545597432 2018/12/23 20:37:12 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.197 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2012. */
/* NetHack may be freely redistributed. See license for details. */
@@ -1541,7 +1541,8 @@ struct attack *mattk;
/* give the object to the character */
otmp = hold_another_object(otmp, "You snatched but dropped %s.",
doname(otmp), "You steal: ");
if (otmp->where != OBJ_INVENT)
/* might have dropped otmp, and it might have broken or left level */
if (!otmp || otmp->where != OBJ_INVENT)
continue;
if (theft_petrifies(otmp))
break; /* stop thieving even though hero survived */
+6 -1
View File
@@ -1,4 +1,4 @@
/* NetHack 3.6 zap.c $NHDT-Date: 1545431660 2018/12/21 22:34:20 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.303 $ */
/* NetHack 3.6 zap.c $NHDT-Date: 1545614662 2018/12/24 01:24:22 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.304 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2013. */
/* NetHack may be freely redistributed. See license for details. */
@@ -5082,6 +5082,11 @@ int damage, tell;
int resisted;
int alev, dlev;
/* fake players always pass resistance test against Conflict
(this doesn't guarantee that they're never affected by it) */
if (oclass == RING_CLASS && !damage && !tell && is_mplayer(mtmp->data))
return 1;
/* attack level */
switch (oclass) {
case WAND_CLASS: