Merge branch 'win-wip3.7' into win-wip3.7-bart
Conflicts: src/end.c
This commit is contained in:
+12
-3
@@ -156,9 +156,6 @@ a wand of polymorph lost its magical ability for the turn just because the
|
|||||||
much sense
|
much sense
|
||||||
floating eye is classified as a flyer but flying is blocked while levitating,
|
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
|
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'
|
change default value for the 'autodescribe' option to 'on'
|
||||||
Elbereth hypocrisy penalty doesn't apply if attacking a monster which isn't
|
Elbereth hypocrisy penalty doesn't apply if attacking a monster which isn't
|
||||||
frightened by Elbereth; normal scuffing of engravings still applies
|
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
|
when fire converts an ice location into a water location, dunk any monster on
|
||||||
that spot immediately instead of waiting until its next move
|
that spot immediately instead of waiting until its next move
|
||||||
training riding skill had an off-by-one bug when counting turns riding
|
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
|
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
|
meant to have color; that was due to an errant init_symbols() call
|
||||||
during the processing of symset:default done after RogueEpyx had
|
during the processing of symset:default done after RogueEpyx had
|
||||||
already been processed
|
already been processed
|
||||||
|
avoid potential segfault when doing 'more information' lookup
|
||||||
tty: turn off an optimization that is the suspected cause of Windows reported
|
tty: turn off an optimization that is the suspected cause of Windows reported
|
||||||
partial status lines following level changes
|
partial status lines following level changes
|
||||||
tty: ensure that current status fields are always copied to prior status
|
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;
|
needed for interfaces (tty) without text popup scrollbar support;
|
||||||
end of game disclosure of attributes remains single-forward-pass
|
end of game disclosure of attributes remains single-forward-pass
|
||||||
for ^X, include current state of 'autopickup'
|
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
|
NetHack Community Patches (or Variation) Included
|
||||||
|
|||||||
+2
-2
@@ -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. */
|
/* Copyright (c) Steve Creps, 1988. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* 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(dothrow);
|
||||||
E int NDECL(dofire);
|
E int NDECL(dofire);
|
||||||
E void FDECL(endmultishot, (BOOLEAN_P));
|
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(hurtle, (int, int, int, BOOLEAN_P));
|
||||||
E void FDECL(mhurtle, (struct monst *, int, int, int));
|
E void FDECL(mhurtle, (struct monst *, int, int, int));
|
||||||
E boolean FDECL(throwing_weapon, (struct obj *));
|
E boolean FDECL(throwing_weapon, (struct obj *));
|
||||||
|
|||||||
+4
-2
@@ -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) 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. */
|
||||||
@@ -1469,6 +1469,7 @@ struct obj *obj;
|
|||||||
}
|
}
|
||||||
case ENERGY_BOOST: {
|
case ENERGY_BOOST: {
|
||||||
int epboost = (u.uenmax + 1 - u.uen) / 2;
|
int epboost = (u.uenmax + 1 - u.uen) / 2;
|
||||||
|
|
||||||
if (epboost > 120)
|
if (epboost > 120)
|
||||||
epboost = 120; /* arbitrary */
|
epboost = 120; /* arbitrary */
|
||||||
else if (epboost < 12)
|
else if (epboost < 12)
|
||||||
@@ -1587,6 +1588,7 @@ struct obj *obj;
|
|||||||
otmp->owt = weight(otmp);
|
otmp->owt = weight(otmp);
|
||||||
otmp = hold_another_object(otmp, "Suddenly %s out.",
|
otmp = hold_another_object(otmp, "Suddenly %s out.",
|
||||||
aobjnam(otmp, "fall"), (char *) 0);
|
aobjnam(otmp, "fall"), (char *) 0);
|
||||||
|
nhUse(otmp);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1964,7 +1966,7 @@ boolean loseit; /* whether to drop it if hero can longer touch it */
|
|||||||
if (loseit && obj) {
|
if (loseit && obj) {
|
||||||
if (Levitation) {
|
if (Levitation) {
|
||||||
freeinv(obj);
|
freeinv(obj);
|
||||||
hitfloor(obj);
|
hitfloor(obj, TRUE);
|
||||||
} else {
|
} else {
|
||||||
/* dropx gives a message iff item lands on an altar */
|
/* dropx gives a message iff item lands on an altar */
|
||||||
if (!IS_ALTAR(levl[u.ux][u.uy].typ))
|
if (!IS_ALTAR(levl[u.ux][u.uy].typ))
|
||||||
|
|||||||
@@ -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) 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. */
|
||||||
@@ -610,7 +610,7 @@ register struct obj *obj;
|
|||||||
if (obj->oclass == COIN_CLASS)
|
if (obj->oclass == COIN_CLASS)
|
||||||
context.botl = 1;
|
context.botl = 1;
|
||||||
freeinv(obj);
|
freeinv(obj);
|
||||||
hitfloor(obj);
|
hitfloor(obj, TRUE);
|
||||||
if (levhack)
|
if (levhack)
|
||||||
float_down(I_SPECIAL | TIMEOUT, W_ARTI | W_ART);
|
float_down(I_SPECIAL | TIMEOUT, W_ARTI | W_ART);
|
||||||
return 1;
|
return 1;
|
||||||
|
|||||||
+11
-11
@@ -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) 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. */
|
||||||
@@ -413,21 +413,21 @@ boolean verbose;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/* Object hits floor at hero's feet.
|
||||||
* Object hits floor at hero's feet. Called from drop() and throwit().
|
Called from drop(), throwit(), hold_another_object(). */
|
||||||
*/
|
|
||||||
void
|
void
|
||||||
hitfloor(obj)
|
hitfloor(obj, verbosely)
|
||||||
register struct obj *obj;
|
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);
|
dropy(obj);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (IS_ALTAR(levl[u.ux][u.uy].typ))
|
if (IS_ALTAR(levl[u.ux][u.uy].typ))
|
||||||
doaltarobj(obj);
|
doaltarobj(obj);
|
||||||
else
|
else if (verbosely)
|
||||||
pline("%s hit%s the %s.", Doname2(obj), (obj->quan == 1L) ? "s" : "",
|
pline("%s %s the %s.", Doname2(obj), otense(obj, "hit"),
|
||||||
surface(u.ux, u.uy));
|
surface(u.ux, u.uy));
|
||||||
|
|
||||||
if (hero_breaks(obj, u.ux, u.uy, TRUE))
|
if (hero_breaks(obj, u.ux, u.uy, TRUE))
|
||||||
@@ -1045,7 +1045,7 @@ boolean hitsroof;
|
|||||||
done(STONING);
|
done(STONING);
|
||||||
return obj ? TRUE : FALSE;
|
return obj ? TRUE : FALSE;
|
||||||
}
|
}
|
||||||
hitfloor(obj);
|
hitfloor(obj, TRUE);
|
||||||
thrownobj = 0;
|
thrownobj = 0;
|
||||||
losehp(Maybe_Half_Phys(dmg), "falling object", KILLED_BY_AN);
|
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 > */
|
for dealing with cursed saddle: throw holy water > */
|
||||||
potionhit(u.usteed, obj, POTHIT_HERO_THROW);
|
potionhit(u.usteed, obj, POTHIT_HERO_THROW);
|
||||||
} else {
|
} else {
|
||||||
hitfloor(obj);
|
hitfloor(obj, TRUE);
|
||||||
}
|
}
|
||||||
thrownobj = (struct obj *) 0;
|
thrownobj = (struct obj *) 0;
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -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) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/*-Copyright (c) Robert Patrick Rankin, 2012. */
|
/*-Copyright (c) Robert Patrick Rankin, 2012. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -836,16 +836,13 @@ int how;
|
|||||||
u.uhp = u.uhpmax;
|
u.uhp = u.uhpmax;
|
||||||
if (Upolyd) /* Unchanging, or death which bypasses losing hit points */
|
if (Upolyd) /* Unchanging, or death which bypasses losing hit points */
|
||||||
u.mh = u.mhmax;
|
u.mh = u.mhmax;
|
||||||
if (u.uhunger < 500) {
|
if (u.uhunger < 500 || how == CHOKING) {
|
||||||
u.uhunger = 500;
|
init_uhunger();
|
||||||
newuhs(FALSE);
|
|
||||||
}
|
}
|
||||||
/* cure impending doom of sickness hero won't have time to fix */
|
/* cure impending doom of sickness hero won't have time to fix */
|
||||||
if ((Sick & TIMEOUT) == 1L) {
|
if ((Sick & TIMEOUT) == 1L) {
|
||||||
make_sick(0L, (char *) 0, FALSE, SICK_ALL);
|
make_sick(0L, (char *) 0, FALSE, SICK_ALL);
|
||||||
}
|
}
|
||||||
if (how == CHOKING)
|
|
||||||
init_uhunger();
|
|
||||||
g.nomovemsg = "You survived that attempt on your life.";
|
g.nomovemsg = "You survived that attempt on your life.";
|
||||||
context.move = 0;
|
context.move = 0;
|
||||||
if (g.multi > 0)
|
if (g.multi > 0)
|
||||||
@@ -1037,9 +1034,12 @@ int how;
|
|||||||
if (iflags.debug_fuzzer) {
|
if (iflags.debug_fuzzer) {
|
||||||
if (!(program_state.panicking || how == PANICKED)) {
|
if (!(program_state.panicking || how == PANICKED)) {
|
||||||
savelife(how);
|
savelife(how);
|
||||||
/* periodically restore characteristics and lost exp levels */
|
/* periodically restore characteristics and lost exp levels
|
||||||
|
or cure lycanthropy */
|
||||||
if (!rn2(10)) {
|
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);
|
bless(potion);
|
||||||
(void) peffects(potion); /* always -1 for restore ability */
|
(void) peffects(potion); /* always -1 for restore ability */
|
||||||
|
|||||||
+15
-1
@@ -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) 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. */
|
||||||
@@ -1427,6 +1427,19 @@ domove()
|
|||||||
}
|
}
|
||||||
x = u.ux + u.dx;
|
x = u.ux + u.dx;
|
||||||
y = u.uy + u.dy;
|
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)) {
|
if (!isok(x, y)) {
|
||||||
nomul(0);
|
nomul(0);
|
||||||
@@ -1439,6 +1452,7 @@ domove()
|
|||||||
if (iflags.mention_walls) {
|
if (iflags.mention_walls) {
|
||||||
if (trap && trap->tseen) {
|
if (trap && trap->tseen) {
|
||||||
int tt = what_trap(trap->ttyp);
|
int tt = what_trap(trap->ttyp);
|
||||||
|
|
||||||
You("stop in front of %s.",
|
You("stop in front of %s.",
|
||||||
an(defsyms[trap_to_defsym(tt)].explanation));
|
an(defsyms[trap_to_defsym(tt)].explanation));
|
||||||
} else if (is_pool_or_lava(x,y) && levl[x][y].seenv) {
|
} else if (is_pool_or_lava(x,y) && levl[x][y].seenv) {
|
||||||
|
|||||||
+17
-7
@@ -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) 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. */
|
||||||
@@ -970,9 +970,9 @@ const char *drop_fmt, *drop_arg, *hold_msg;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (Fumbling) {
|
if (Fumbling) {
|
||||||
if (drop_fmt)
|
obj->nomerge = 1;
|
||||||
pline(drop_fmt, drop_arg);
|
obj = addinv(obj); /* dropping expects obj to be in invent */
|
||||||
dropy(obj);
|
goto drop_it;
|
||||||
} else {
|
} else {
|
||||||
long oquan = obj->quan;
|
long oquan = obj->quan;
|
||||||
int prev_encumbr = near_capacity(); /* before addinv() */
|
int prev_encumbr = near_capacity(); /* before addinv() */
|
||||||
@@ -989,12 +989,10 @@ const char *drop_fmt, *drop_arg, *hold_msg;
|
|||||||
obj = addinv(obj);
|
obj = addinv(obj);
|
||||||
if (inv_cnt(FALSE) > 52 || ((obj->otyp != LOADSTONE || !obj->cursed)
|
if (inv_cnt(FALSE) > 52 || ((obj->otyp != LOADSTONE || !obj->cursed)
|
||||||
&& near_capacity() > prev_encumbr)) {
|
&& near_capacity() > prev_encumbr)) {
|
||||||
if (drop_fmt)
|
|
||||||
pline(drop_fmt, drop_arg);
|
|
||||||
/* undo any merge which took place */
|
/* undo any merge which took place */
|
||||||
if (obj->quan > oquan)
|
if (obj->quan > oquan)
|
||||||
obj = splitobj(obj, oquan);
|
obj = splitobj(obj, oquan);
|
||||||
dropx(obj);
|
goto drop_it;
|
||||||
} else {
|
} else {
|
||||||
if (flags.autoquiver && !uquiver && !obj->owornmask
|
if (flags.autoquiver && !uquiver && !obj->owornmask
|
||||||
&& (is_missile(obj) || ammo_and_launcher(obj, uwep)
|
&& (is_missile(obj) || ammo_and_launcher(obj, uwep)
|
||||||
@@ -1005,6 +1003,18 @@ const char *drop_fmt, *drop_arg, *hold_msg;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return obj;
|
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 */
|
/* useup() all of an item regardless of its quantity */
|
||||||
|
|||||||
+9
-7
@@ -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) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/*-Copyright (c) Pasi Kallinen, 2018. */
|
/*-Copyright (c) Pasi Kallinen, 2018. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -186,7 +186,7 @@ coord *startp;
|
|||||||
*/
|
*/
|
||||||
lax = 0; /* be picky */
|
lax = 0; /* be picky */
|
||||||
max_distance = -1;
|
max_distance = -1;
|
||||||
retry:
|
retry:
|
||||||
for (row = 0; row < ROWNO; row++) {
|
for (row = 0; row < ROWNO; row++) {
|
||||||
if (viz_rmin[row] < viz_rmax[row]) {
|
if (viz_rmin[row] < viz_rmax[row]) {
|
||||||
/* There are valid positions on this row. */
|
/* There are valid positions on this row. */
|
||||||
@@ -418,15 +418,17 @@ struct mail_info *info;
|
|||||||
display_nhwindow(WIN_MESSAGE, FALSE);
|
display_nhwindow(WIN_MESSAGE, FALSE);
|
||||||
obj = hold_another_object(obj, "Oops!", (const char *) 0,
|
obj = hold_another_object(obj, "Oops!", (const char *) 0,
|
||||||
(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))
|
if (!md_rush(md, start.x, start.y))
|
||||||
md->mx = md->my = 0; /* for mongone, md is not on map */
|
md->mx = md->my = 0; /* for mongone, md is not on map */
|
||||||
mongone(md);
|
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)
|
if (!message_seen && info->message_typ == MSG_OTHER)
|
||||||
pline("Hark! \"%s.\"", info->display_txt);
|
pline("Hark! \"%s.\"", info->display_txt);
|
||||||
}
|
}
|
||||||
@@ -609,7 +611,7 @@ boolean adminmsg;
|
|||||||
else
|
else
|
||||||
unlink(mailbox);
|
unlink(mailbox);
|
||||||
return;
|
return;
|
||||||
bail:
|
bail:
|
||||||
/* bail out _professionally_ */
|
/* bail out _professionally_ */
|
||||||
if (!adminmsg)
|
if (!adminmsg)
|
||||||
pline("It appears to be all gibberish.");
|
pline("It appears to be all gibberish.");
|
||||||
|
|||||||
+9
-6
@@ -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) 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. */
|
||||||
@@ -2168,18 +2168,21 @@ boolean tipping; /* caller emptying entire contents; affects shop handling */
|
|||||||
being included in its formatted name during next message */
|
being included in its formatted name during next message */
|
||||||
iflags.suppress_price++;
|
iflags.suppress_price++;
|
||||||
if (!tipping) {
|
if (!tipping) {
|
||||||
obj = hold_another_object(
|
obj = hold_another_object(obj,
|
||||||
obj, u.uswallow ? "Oops! %s out of your reach!"
|
u.uswallow
|
||||||
: (Is_airlevel(&u.uz) || Is_waterlevel(&u.uz)
|
? "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 < IRONBARS
|
||||||
|| levl[u.ux][u.uy].typ >= ICE)
|
|| levl[u.ux][u.uy].typ >= ICE)
|
||||||
? "Oops! %s away from you!"
|
? "Oops! %s away from you!"
|
||||||
: "Oops! %s to the floor!",
|
: "Oops! %s to the floor!",
|
||||||
The(aobjnam(obj, "slip")), (const char *) 0);
|
The(aobjnam(obj, "slip")), (char *) 0);
|
||||||
|
nhUse(obj);
|
||||||
} else {
|
} else {
|
||||||
/* assumes this is taking place at hero's location */
|
/* assumes this is taking place at hero's location */
|
||||||
if (!can_reach_floor(TRUE)) {
|
if (!can_reach_floor(TRUE)) {
|
||||||
hitfloor(obj); /* does altar check, message, drop */
|
hitfloor(obj, TRUE); /* does altar check, message, drop */
|
||||||
} else {
|
} else {
|
||||||
if (IS_ALTAR(levl[u.ux][u.uy].typ))
|
if (IS_ALTAR(levl[u.ux][u.uy].typ))
|
||||||
doaltarobj(obj); /* does its own drop message */
|
doaltarobj(obj); /* does its own drop message */
|
||||||
|
|||||||
+45
-13
@@ -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) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/*-Copyright (c) Michael Allison, 2006. */
|
/*-Copyright (c) Michael Allison, 2006. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -944,7 +944,7 @@ register int after;
|
|||||||
mmoved = 1;
|
mmoved = 1;
|
||||||
goto postmov;
|
goto postmov;
|
||||||
}
|
}
|
||||||
not_special:
|
not_special:
|
||||||
if (u.uswallow && !mtmp->mflee && u.ustuck != mtmp)
|
if (u.uswallow && !mtmp->mflee && u.ustuck != mtmp)
|
||||||
return 1;
|
return 1;
|
||||||
omx = mtmp->mx;
|
omx = mtmp->mx;
|
||||||
@@ -1249,6 +1249,7 @@ not_special:
|
|||||||
if ((info[chi] & ALLOW_M) || (nix == mtmp->mux && niy == mtmp->muy)) {
|
if ((info[chi] & ALLOW_M) || (nix == mtmp->mux && niy == mtmp->muy)) {
|
||||||
struct monst *mtmp2;
|
struct monst *mtmp2;
|
||||||
int mstatus;
|
int mstatus;
|
||||||
|
|
||||||
mtmp2 = m_at(nix, niy);
|
mtmp2 = m_at(nix, niy);
|
||||||
|
|
||||||
g.notonhead = mtmp2 && (nix != mtmp2->mx || niy != mtmp2->my);
|
g.notonhead = mtmp2 && (nix != mtmp2->mx || niy != mtmp2->my);
|
||||||
@@ -1272,6 +1273,7 @@ not_special:
|
|||||||
if ((info[chi] & ALLOW_MDISP)) {
|
if ((info[chi] & ALLOW_MDISP)) {
|
||||||
struct monst *mtmp2;
|
struct monst *mtmp2;
|
||||||
int mstatus;
|
int mstatus;
|
||||||
|
|
||||||
mtmp2 = m_at(nix, niy);
|
mtmp2 = m_at(nix, niy);
|
||||||
mstatus = mdisplacem(mtmp, mtmp2, FALSE);
|
mstatus = mdisplacem(mtmp, mtmp2, FALSE);
|
||||||
if ((mstatus & MM_AGR_DIED) || (mstatus & MM_DEF_DIED))
|
if ((mstatus & MM_AGR_DIED) || (mstatus & MM_DEF_DIED))
|
||||||
@@ -1283,6 +1285,7 @@ not_special:
|
|||||||
|
|
||||||
if (!m_in_out_region(mtmp, nix, niy))
|
if (!m_in_out_region(mtmp, nix, niy))
|
||||||
return 3;
|
return 3;
|
||||||
|
|
||||||
remove_monster(omx, omy);
|
remove_monster(omx, omy);
|
||||||
place_monster(mtmp, nix, niy);
|
place_monster(mtmp, nix, niy);
|
||||||
for (j = MTSZ - 1; j > 0; j--)
|
for (j = MTSZ - 1; j > 0; j--)
|
||||||
@@ -1300,18 +1303,51 @@ not_special:
|
|||||||
if (mtmp->wormno)
|
if (mtmp->wormno)
|
||||||
worm_nomove(mtmp);
|
worm_nomove(mtmp);
|
||||||
}
|
}
|
||||||
postmov:
|
postmov:
|
||||||
if (mmoved == 1 || mmoved == 3) {
|
if (mmoved == 1 || mmoved == 3) {
|
||||||
boolean canseeit = cansee(mtmp->mx, mtmp->my);
|
boolean canseeit = cansee(mtmp->mx, mtmp->my);
|
||||||
|
|
||||||
if (mmoved == 1) {
|
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 */
|
newsym(omx, omy); /* update the old position */
|
||||||
if (mintrap(mtmp) >= 2) {
|
if (mintrap(mtmp) >= 2) {
|
||||||
if (mtmp->mx)
|
if (mtmp->mx)
|
||||||
newsym(mtmp->mx, mtmp->my);
|
newsym(mtmp->mx, mtmp->my);
|
||||||
return 2; /* it died */
|
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 */
|
/* open a door, or crash through it, if 'mtmp' can */
|
||||||
if (IS_DOOR(levl[mtmp->mx][mtmp->my].typ)
|
if (IS_DOOR(levl[mtmp->mx][mtmp->my].typ)
|
||||||
@@ -1332,18 +1368,11 @@ postmov:
|
|||||||
btrapped = FALSE;
|
btrapped = FALSE;
|
||||||
}
|
}
|
||||||
if ((here->doormask & (D_LOCKED | D_CLOSED)) != 0
|
if ((here->doormask & (D_LOCKED | D_CLOSED)) != 0
|
||||||
&& (amorphous(ptr)
|
&& amorphous(ptr)) {
|
||||||
|| (can_fog(mtmp)
|
|
||||||
&& vamp_shift(mtmp, &mons[PM_FOG_CLOUD],
|
|
||||||
sawmon)))) {
|
|
||||||
/* update cached value for vamp_shift() case */
|
|
||||||
ptr = mtmp->data;
|
|
||||||
if (flags.verbose && canseemon(mtmp))
|
if (flags.verbose && canseemon(mtmp))
|
||||||
pline("%s %s under the door.", Monnam(mtmp),
|
pline("%s %s under the door.", Monnam(mtmp),
|
||||||
(ptr == &mons[PM_FOG_CLOUD]
|
(ptr == &mons[PM_FOG_CLOUD]
|
||||||
|| ptr->mlet == S_LIGHT)
|
|| ptr->mlet == S_LIGHT) ? "flows" : "oozes");
|
||||||
? "flows"
|
|
||||||
: "oozes");
|
|
||||||
} else if (here->doormask & D_LOCKED && can_unlock) {
|
} else if (here->doormask & D_LOCKED && can_unlock) {
|
||||||
if (btrapped) {
|
if (btrapped) {
|
||||||
here->doormask = D_NODOOR;
|
here->doormask = D_NODOOR;
|
||||||
@@ -1732,6 +1761,9 @@ boolean domsg;
|
|||||||
pline("You %s %s where %s was.",
|
pline("You %s %s where %s was.",
|
||||||
!canseemon(mon) ? "now detect" : "observe",
|
!canseemon(mon) ? "now detect" : "observe",
|
||||||
noname_monnam(mon, ARTICLE_A), oldmtype);
|
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;
|
return reslt;
|
||||||
|
|||||||
+3
-3
@@ -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) 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. */
|
||||||
@@ -646,9 +646,9 @@ char *supplemental_name;
|
|||||||
The Eyes of the Overworld" simplified above to "lenses named
|
The Eyes of the Overworld" simplified above to "lenses named
|
||||||
The Eyes of the Overworld", now reduced to "The Eyes of the
|
The Eyes of the Overworld", now reduced to "The Eyes of the
|
||||||
Overworld", skip "The" as with base name processing) */
|
Overworld", skip "The" as with base name processing) */
|
||||||
if (!strncmpi(alt, "a ", 2)
|
if (alt && (!strncmpi(alt, "a ", 2)
|
||||||
|| !strncmpi(alt, "an ", 3)
|
|| !strncmpi(alt, "an ", 3)
|
||||||
|| !strncmpi(alt, "the ", 4))
|
|| !strncmpi(alt, "the ", 4)))
|
||||||
alt = index(alt, ' ') + 1;
|
alt = index(alt, ' ') + 1;
|
||||||
/* remove charges or "(lit)" or wizmode "(N aum)" */
|
/* remove charges or "(lit)" or wizmode "(N aum)" */
|
||||||
if ((ep = strstri(dbase_str, " (")) != 0 && ep > dbase_str)
|
if ((ep = strstri(dbase_str, " (")) != 0 && ep > dbase_str)
|
||||||
|
|||||||
+3
-2
@@ -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) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/*-Copyright (c) Robert Patrick Rankin, 2012. */
|
/*-Copyright (c) Robert Patrick Rankin, 2012. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* 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),
|
otmp = hold_another_object(otmp, "You drop %s!", doname(otmp),
|
||||||
(const char *) 0);
|
(const char *) 0);
|
||||||
|
nhUse(otmp);
|
||||||
timepassed = rnd(3);
|
timepassed = rnd(3);
|
||||||
if (prev_loot)
|
if (prev_loot)
|
||||||
*prev_loot = TRUE;
|
*prev_loot = TRUE;
|
||||||
@@ -3175,7 +3176,7 @@ struct obj *box; /* or bag */
|
|||||||
|
|
||||||
if (highdrop) {
|
if (highdrop) {
|
||||||
/* might break or fall down stairs; handles altars itself */
|
/* might break or fall down stairs; handles altars itself */
|
||||||
hitfloor(otmp);
|
hitfloor(otmp, TRUE);
|
||||||
} else {
|
} else {
|
||||||
if (altarizing) {
|
if (altarizing) {
|
||||||
doaltarobj(otmp);
|
doaltarobj(otmp);
|
||||||
|
|||||||
+2
-1
@@ -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) 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. */
|
||||||
@@ -2234,6 +2234,7 @@ more_dips:
|
|||||||
singlepotion =
|
singlepotion =
|
||||||
hold_another_object(singlepotion, "You juggle and drop %s!",
|
hold_another_object(singlepotion, "You juggle and drop %s!",
|
||||||
doname(singlepotion), (const char *) 0);
|
doname(singlepotion), (const char *) 0);
|
||||||
|
nhUse(singlepotion);
|
||||||
update_inventory();
|
update_inventory();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-2
@@ -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) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/*-Copyright (c) Robert Patrick Rankin, 2012. */
|
/*-Copyright (c) Robert Patrick Rankin, 2012. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -1541,7 +1541,8 @@ struct attack *mattk;
|
|||||||
/* give the object to the character */
|
/* give the object to the character */
|
||||||
otmp = hold_another_object(otmp, "You snatched but dropped %s.",
|
otmp = hold_another_object(otmp, "You snatched but dropped %s.",
|
||||||
doname(otmp), "You steal: ");
|
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;
|
continue;
|
||||||
if (theft_petrifies(otmp))
|
if (theft_petrifies(otmp))
|
||||||
break; /* stop thieving even though hero survived */
|
break; /* stop thieving even though hero survived */
|
||||||
|
|||||||
@@ -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) 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. */
|
||||||
@@ -5082,6 +5082,11 @@ int damage, tell;
|
|||||||
int resisted;
|
int resisted;
|
||||||
int alev, dlev;
|
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 */
|
/* attack level */
|
||||||
switch (oclass) {
|
switch (oclass) {
|
||||||
case WAND_CLASS:
|
case WAND_CLASS:
|
||||||
|
|||||||
Reference in New Issue
Block a user