update dat src include...

This commit is contained in:
nhmall
2026-04-26 12:34:02 -04:00
parent 11ae226eeb
commit d6f8241ac1
46 changed files with 78 additions and 78 deletions
+3 -3
View File
@@ -1384,7 +1384,7 @@ dispater
Wealth". It refers to the wealth of precious stone below the Wealth". It refers to the wealth of precious stone below the
earth. earth.
[ Encyclopedia Mythica, ed. M.F. Lindemans ] [ Encyclopedia Mythica, ed. M.F. Lindemans ]
# 3.7; monster adapted from slash'em based on an AD&D Monster Manual entry; # 5.0; monster adapted from slash'em based on an AD&D Monster Manual entry;
# slash'em lacked a description so this entry has been created from scratch; # slash'em lacked a description so this entry has been created from scratch;
# the puma comparison is how the AD&D monster is described (except that # the puma comparison is how the AD&D monster is described (except that
# that creature has six legs and two tentacles!) but the actual monster's # that creature has six legs and two tentacles!) but the actual monster's
@@ -2048,7 +2048,7 @@ gem or rock
same as for jewels: it is always the false ones that look the same as for jewels: it is always the false ones that look the
most real, the most brilliant. most real, the most brilliant.
[ Salvador Dali ] [ Salvador Dali ]
# 3.7; monster derived from slash'em which lacked a description so this # 5.0; monster derived from slash'em which lacked a description so this
# entry has been created from scratch # entry has been created from scratch
genetic engineer genetic engineer
These very odd people have mastered the ability to insert gene These very odd people have mastered the ability to insert gene
@@ -2418,7 +2418,7 @@ helm of caution
A helmet which confers the "warning" property, sensing the A helmet which confers the "warning" property, sensing the
strength of threats posed by unseen hostile creatures. strength of threats posed by unseen hostile creatures.
# note: this quotation had "high of steel" but we're going to cheat--it is # note: this quotation had "high of steel" but we're going to cheat--it is
# now deliberately mistranslated as "high of crystal" to match nethack 3.7's # now deliberately mistranslated as "high of crystal" to match nethack 5.0's
# change to helm of brilliance and become more useful to players. # change to helm of brilliance and become more useful to players.
# PR #1109 wanted to change it to be for all helms but being covered with # PR #1109 wanted to change it to be for all helms but being covered with
# gems and gold is not appropriate for ordinary helmets (plus it states that # gems and gold is not appropriate for ordinary helmets (plus it states that
+1 -1
View File
@@ -185,7 +185,7 @@ dungeon = {
}, },
{ {
name = "minend", name = "minend",
-- 3.7.0: minend changed to no-bones to simplify achievement tracking -- 5.0.0: minend changed to no-bones to simplify achievement tracking
-- bonetag = "E" -- bonetag = "E"
base = -1, base = -1,
nlevels = 3 nlevels = 3
+1 -1
View File
@@ -1,4 +1,4 @@
NetHack History file for release 3.7 NetHack History file for release 5.0
Behold, mortal, the origins of NetHack... Behold, mortal, the origins of NetHack...
+2 -2
View File
@@ -2464,7 +2464,7 @@ Dibbler removed his cigar.
[Moving Pictures, by Terry Pratchett] [Moving Pictures, by Terry Pratchett]
%e passage %e passage
# #
# New for 3.7 - these are worthy but 16 passages are already more than enough. # New for 5.0 - these are worthy but 16 passages are already more than enough.
#-# #-#
#-# p. 304 #-# p. 304
#-%passage 17 #-%passage 17
@@ -4138,7 +4138,7 @@ followed by long periods of being dead."
[Interesting Times, by Terry Pratchett] [Interesting Times, by Terry Pratchett]
%e passage %e passage
# #
# 3 new passages for 3.7 # 3 new passages for 5.0
# #
# p. 45 # p. 45
%passage 11 %passage 11
+1 -1
View File
@@ -53,7 +53,7 @@ typedef long off_t;
/* data librarian defs */ /* data librarian defs */
#define DLBFILE "nhdat" /* main library */ #define DLBFILE "nhdat" /* main library */
/* nhsdat sound library not used in 3.7 */ /* nhsdat sound library not used in 5.0 */
#undef DLBFILE2 #undef DLBFILE2
#ifndef CROSS_TO_AMIGA #ifndef CROSS_TO_AMIGA
+1 -1
View File
@@ -422,7 +422,7 @@ extern struct nomakedefs_s nomakedefs;
#include "color.h" #include "color.h"
/* /*
* Version 3.7.x has aspirations of portable file formats. We * Version 5.0.x has aspirations of portable file formats. We
* make a distinction between MAIL functionality and MAIL_STRUCTURES * make a distinction between MAIL functionality and MAIL_STRUCTURES
* so that the underlying structures are consistent, whether MAIL is * so that the underlying structures are consistent, whether MAIL is
* defined or not. * defined or not.
+6 -6
View File
@@ -972,7 +972,7 @@
8, CLR_RED, SCORPION), 8, CLR_RED, SCORPION),
/* /*
* trappers, lurkers, &c * trappers, lurkers, &c
* Note: prior to 3.7, these were defined to do AD_DGST damage, * Note: prior to 5.0, these were defined to do AD_DGST damage,
* but they don't swallow their victims into their stomachs and * but they don't swallow their victims into their stomachs and
* digest, they enfold and crush or suffocate. * digest, they enfold and crush or suffocate.
* The Monster Manual states that someone engulfed by a trapper * The Monster Manual states that someone engulfed by a trapper
@@ -2031,7 +2031,7 @@
| M1_OMNIVORE, | M1_OMNIVORE,
M2_STRONG, 0, M2_STRONG, 0,
13, HI_GOLD, GOLDEN_NAGA), 13, HI_GOLD, GOLDEN_NAGA),
/* 3.7: guardian naga used to have three attacks: bite, spit, hug /* 5.0: guardian naga used to have three attacks: bite, spit, hug
but in order for the hug to succeed the two preceding attacks had but in order for the hug to succeed the two preceding attacks had
to have hit, and it's not possible to both bite and spit, hence to have hit, and it's not possible to both bite and spit, hence
the hug never hit; change to spit, bite, touch, hug; if the bite the hug never hit; change to spit, bite, touch, hug; if the bite
@@ -2132,7 +2132,7 @@
M1_HUMANOID | M1_OMNIVORE | M1_POIS | M1_TPORT, M2_HOSTILE, M1_HUMANOID | M1_OMNIVORE | M1_POIS | M1_TPORT, M2_HOSTILE,
M3_INFRAVISIBLE, M3_INFRAVISIBLE,
9, CLR_CYAN, QUANTUM_MECHANIC), 9, CLR_CYAN, QUANTUM_MECHANIC),
/* 3.7: from slash'em, to expand Q class; hit polymorphs target */ /* 5.0: from slash'em, to expand Q class; hit polymorphs target */
MON(NAM("genetic engineer"), S_QUANTMECH, MON(NAM("genetic engineer"), S_QUANTMECH,
LVL(12, 12, 3, 10, 0), (G_GENO | 1), LVL(12, 12, 3, 10, 0), (G_GENO | 1),
A(ATTK(AT_CLAW, AD_POLY, 1, 4), A(ATTK(AT_CLAW, AD_POLY, 1, 4),
@@ -2695,7 +2695,7 @@
| M2_SHAPESHIFTER, | M2_SHAPESHIFTER,
M3_INFRAVISIBLE, M3_INFRAVISIBLE,
11, HI_DOMESTIC, DOPPELGANGER), 11, HI_DOMESTIC, DOPPELGANGER),
/* 3.7: shopkeepers used to have speed 18, but if/when they were /* 5.0: shopkeepers used to have speed 18, but if/when they were
hasted they always got 2 moves per turn and had a tendency to move hasted they always got 2 moves per turn and had a tendency to move
away from blocking the door and then move right back; since they away from blocking the door and then move right back; since they
might start with a potion of speed and drink that as soon as the might start with a potion of speed and drink that as soon as the
@@ -2925,7 +2925,7 @@
#define SEDUCTION_ATTACKS_NO \ #define SEDUCTION_ATTACKS_NO \
A(ATTK(AT_CLAW, AD_PHYS, 1, 3), ATTK(AT_CLAW, AD_PHYS, 1, 3), \ A(ATTK(AT_CLAW, AD_PHYS, 1, 3), ATTK(AT_CLAW, AD_PHYS, 1, 3), \
ATTK(AT_BITE, AD_DRLI, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK) ATTK(AT_BITE, AD_DRLI, 2, 6), NO_ATTK, NO_ATTK, NO_ATTK)
/* incubus and succubus; prior to 3.7, succubus and incubus were /* incubus and succubus; prior to 5.0, succubus and incubus were
distinct monsters; "amorous demon" is considered to be a temporary distinct monsters; "amorous demon" is considered to be a temporary
placeholder but may be here to stay... */ placeholder but may be here to stay... */
MON(NAMS("incubus", "succubus", "amorous demon"), S_DEMON, MON(NAMS("incubus", "succubus", "amorous demon"), S_DEMON,
@@ -3195,7 +3195,7 @@
/* /*
* sea monsters * sea monsters
* *
* 3.7: all the fish except kraken used to specify M1_SLITHY, presumably * 5.0: all the fish except kraken used to specify M1_SLITHY, presumably
* cloned from giant eel. Using "slither" to describe their movement * cloned from giant eel. Using "slither" to describe their movement
* wasn't appropriate. Unfortunately, locomotion() isn't able to choose * wasn't appropriate. Unfortunately, locomotion() isn't able to choose
* "swim" as their movement description because it is only passed a * "swim" as their movement description because it is only passed a
+1 -1
View File
@@ -224,7 +224,7 @@ WEAPON("stiletto", NoDes,
/* 3.6: worm teeth and crysknives now stack; /* 3.6: worm teeth and crysknives now stack;
when a stack of teeth is enchanted at once, they fuse into one crysknife; when a stack of teeth is enchanted at once, they fuse into one crysknife;
when a stack of crysknives drops, the whole stack reverts to teeth */ when a stack of crysknives drops, the whole stack reverts to teeth */
/* 3.7: change crysknife from MINERAL to BONE and worm tooth from 0 to BONE */ /* 5.0: change crysknife from MINERAL to BONE and worm tooth from 0 to BONE */
WEAPON("worm tooth", NoDes, WEAPON("worm tooth", NoDes,
1, 1, 0, 0, 20, 2, 2, 2, 0, 0, P_KNIFE, BONE, CLR_WHITE, 1, 1, 0, 0, 20, 2, 2, 2, 0, 0, P_KNIFE, BONE, CLR_WHITE,
WORM_TOOTH), WORM_TOOTH),
+2 -2
View File
@@ -62,7 +62,7 @@
/*#define VERSION_COMPATIBILITY 0x03070000L*/ /*#define VERSION_COMPATIBILITY 0x03070000L*/
/****************************************************************************/ /****************************************************************************/
/* Version 3.7.x */ /* Version 5.0.x */
/* /*
* NetHack 5.0.0, <insert date here> * NetHack 5.0.0, <insert date here>
@@ -95,7 +95,7 @@
* the official 3.6.6 binary was built. * the official 3.6.6 binary was built.
* windows: switch from using keyhandling dll's to incorporating the three * windows: switch from using keyhandling dll's to incorporating the three
* variations (default, ray, 340) in sys/winnt/nttty.c * variations (default, ray, 340) in sys/winnt/nttty.c
* curses: cherry-picked selectsaved code from 3.7 for menu of save files * curses: cherry-picked selectsaved code from 5.0 for menu of save files
* NetHackW: fix delayed rendering of cursor when using farlook * NetHackW: fix delayed rendering of cursor when using farlook
*/ */
+1 -1
View File
@@ -157,7 +157,7 @@ typedef const char *vA;
[nethack's core doesn't use VA_NEXT() so doesn't use VA_SHIFT() [nethack's core doesn't use VA_NEXT() so doesn't use VA_SHIFT()
either, and this definition is just retained for completeness. either, and this definition is just retained for completeness.
lev_comp does use VA_NEXT(), but it passes all 'argX' arguments. lev_comp does use VA_NEXT(), but it passes all 'argX' arguments.
Note: as of 3.7.0, lev_comp doesn't exist anymore.] Note: as of 5.0.0, lev_comp doesn't exist anymore.]
*/ */
#define VA_SHIFT() \ #define VA_SHIFT() \
(arg1 = arg2, arg2 = arg3, arg3 = arg4, arg4 = arg5, arg5 = arg6, \ (arg1 = arg2, arg2 = arg3, arg3 = arg4, arg4 = arg5, arg5 = arg6, \
+1 -1
View File
@@ -164,7 +164,7 @@ PANICTRACE_GDB=2 #at conclusion of panic, show a call traceback and then
*/ */
/* This used to be force-defined for VMS in topten.c, but with /* This used to be force-defined for VMS in topten.c, but with
* the global variable consolidation into g in 3.7, it has to be * the global variable consolidation into g in 5.0, it has to be
* defined here so that decl.h includes the field in g. * defined here so that decl.h includes the field in g.
*/ */
#define UPDATE_RECORD_IN_PLACE #define UPDATE_RECORD_IN_PLACE
+3 -3
View File
@@ -127,7 +127,7 @@ extern
#define display_file (*windowprocs.win_display_file) #define display_file (*windowprocs.win_display_file)
#define start_menu (*windowprocs.win_start_menu) #define start_menu (*windowprocs.win_start_menu)
#define end_menu (*windowprocs.win_end_menu) #define end_menu (*windowprocs.win_end_menu)
/* 3.7: There are real add_menu() and select_menu in the core now. /* 5.0: There are real add_menu() and select_menu in the core now.
* add_menu does some common activities, such as menu_colors. * add_menu does some common activities, such as menu_colors.
* select_menu does some before and after activities. * select_menu does some before and after activities.
* add_menu() and select_menu() are in windows.c * add_menu() and select_menu() are in windows.c
@@ -151,7 +151,7 @@ extern
#define nh_poskey (*windowprocs.win_nh_poskey) #define nh_poskey (*windowprocs.win_nh_poskey)
#define nhbell (*windowprocs.win_nhbell) #define nhbell (*windowprocs.win_nhbell)
#define nh_doprev_message (*windowprocs.win_doprev_message) #define nh_doprev_message (*windowprocs.win_doprev_message)
/* 3.7: There is a real getlin() in the core now, which does /* 5.0: There is a real getlin() in the core now, which does
* some before and after activities. * some before and after activities.
* [alternative fix for menu search via ':'.] * [alternative fix for menu search via ':'.]
* getlin() is in windows.c * getlin() is in windows.c
@@ -297,7 +297,7 @@ struct wc_Opt {
/* Macro for the currently active Window Port whose function /* Macro for the currently active Window Port whose function
pointers have been loaded */ pointers have been loaded */
#if 0 #if 0
/* 3.7 The string comparison version isn't used anymore */ /* 5.0 The string comparison version isn't used anymore */
#define WINDOWPORT(wn) \ #define WINDOWPORT(wn) \
(windowprocs.name && !strncmpi((#wn), windowprocs.name, strlen((#wn)))) (windowprocs.name && !strncmpi((#wn), windowprocs.name, strlen((#wn))))
#endif #endif
+1 -1
View File
@@ -167,7 +167,7 @@ typedef struct glyphinfo {
#define MENU_ITEMFLAGS_SKIPINVERT 0x0000002U #define MENU_ITEMFLAGS_SKIPINVERT 0x0000002U
#define MENU_ITEMFLAGS_SKIPMENUCOLORS 0x0000004U #define MENU_ITEMFLAGS_SKIPMENUCOLORS 0x0000004U
/* 3.7+ enhanced menu flags that not all window ports are likely to /* 5.0+ enhanced menu flags that not all window ports are likely to
* support initially. * support initially.
* *
* As behavior and appearance modification flags are added, the various * As behavior and appearance modification flags are added, the various
+1 -1
View File
@@ -683,7 +683,7 @@ rnd_attr(void)
{ {
int i, x = rn2(100); int i, x = rn2(100);
/* 3.7: the x -= ... calculation used to have an off by 1 error that /* 5.0: the x -= ... calculation used to have an off by 1 error that
resulted in the values being biased toward Str and away from Cha */ resulted in the values being biased toward Str and away from Cha */
for (i = 0; i < A_MAX; ++i) for (i = 0; i < A_MAX; ++i)
if ((x -= gu.urole.attrdist[i]) < 0) if ((x -= gu.urole.attrdist[i]) < 0)
+1 -1
View File
@@ -455,7 +455,7 @@ dig(void)
} else if (digtyp == DIGTYP_BOULDER } else if (digtyp == DIGTYP_BOULDER
&& (obj = sobj_at(BOULDER, dpx, dpy)) != 0) { && (obj = sobj_at(BOULDER, dpx, dpy)) != 0) {
fracture_rock(obj); fracture_rock(obj);
/*[3.7: this probably isn't necessary anymore]*/ /*[5.0: this probably isn't necessary anymore]*/
if ((bobj = sobj_at(BOULDER, dpx, dpy)) != 0) { if ((bobj = sobj_at(BOULDER, dpx, dpy)) != 0) {
/* another boulder here, restack it to the top */ /* another boulder here, restack it to the top */
obj_extract_self(bobj); obj_extract_self(bobj);
+2 -2
View File
@@ -2214,7 +2214,7 @@ flush_screen(int cursor_on_u)
glyph_info bkglyphinfo = nul_glyphinfo; glyph_info bkglyphinfo = nul_glyphinfo;
int bkglyph; int bkglyph;
/* 3.7: don't update map, status, or perm_invent during save/restore */ /* 5.0: don't update map, status, or perm_invent during save/restore */
if (_suppress_map_output()) if (_suppress_map_output())
return; return;
@@ -3453,7 +3453,7 @@ t_warn(struct rm *lev)
static const char warn_str[] = "wall_angle: %s: case %d: seenv = 0x%x"; static const char warn_str[] = "wall_angle: %s: case %d: seenv = 0x%x";
const char *wname; const char *wname;
/* 3.7: non-T_wall cases added after shop repair (via breaching a wall, /* 5.0: non-T_wall cases added after shop repair (via breaching a wall,
using locking magic to put a door there, then unlocking the door; using locking magic to put a door there, then unlocking the door;
D_CLOSED carried over to the wall) triggered warning for "unknown" */ D_CLOSED carried over to the wall) triggered warning for "unknown" */
switch (lev->typ) { switch (lev->typ) {
+3 -3
View File
@@ -77,7 +77,7 @@ boulder_hits_pool(
levl[rx][ry].typ = ROOM, levl[rx][ry].flags = 0; levl[rx][ry].typ = ROOM, levl[rx][ry].flags = 0;
recalc_block_point(rx, ry); recalc_block_point(rx, ry);
} }
/* 3.7: normally DEADMONSTER() is used when traversing the fmon /* 5.0: normally DEADMONSTER() is used when traversing the fmon
list--dead monsters usually aren't still at specific map list--dead monsters usually aren't still at specific map
locations; however, if ice melts causing a giant to drown, locations; however, if ice melts causing a giant to drown,
that giant would still be on the map when it drops inventory; that giant would still be on the map when it drops inventory;
@@ -1533,7 +1533,7 @@ goto_level(
* -2 5.21 4.17 0.0 * -2 5.21 4.17 0.0
* -3 2.08 0.0 0.0 * -3 2.08 0.0 0.0
* *
* 3.7.0: the chance for the "mysterious force" to kick in goes down * 5.0.0: the chance for the "mysterious force" to kick in goes down
* as it kicks in, starting at 25% per climb attempt and dropping off * as it kicks in, starting at 25% per climb attempt and dropping off
* gradually but substantially. The drop off is greater when hero is * gradually but substantially. The drop off is greater when hero is
* sent down farther so benefits lawfuls more than chaotics this time. * sent down farther so benefits lawfuls more than chaotics this time.
@@ -2438,7 +2438,7 @@ set_wounded_legs(long side, int timex)
set_itimeout(&HWounded_legs, (long) timex); set_itimeout(&HWounded_legs, (long) timex);
/* the leg being wounded and its timeout might differ from one /* the leg being wounded and its timeout might differ from one
attack to the next, but we don't track the legs separately; attack to the next, but we don't track the legs separately;
3.7: both legs will ultimately heal together; this used to use 5.0: both legs will ultimately heal together; this used to use
direct assignment instead of bitwise-OR so getting wounded in direct assignment instead of bitwise-OR so getting wounded in
one leg mysteriously healed the other */ one leg mysteriously healed the other */
EWounded_legs |= side; EWounded_legs |= side;
+1 -1
View File
@@ -433,7 +433,7 @@ objtyp_is_callable(int i)
switch(objects[i].oc_class) { switch(objects[i].oc_class) {
case AMULET_CLASS: case AMULET_CLASS:
/* 3.7: calling these used to be allowed but that enabled the /* 5.0: calling these used to be allowed but that enabled the
player to tell whether two unID'd amulets of yendor were both player to tell whether two unID'd amulets of yendor were both
fake or one was real by calling them distinct names and then fake or one was real by calling them distinct names and then
checking discoveries to see whether first name was replaced checking discoveries to see whether first name was replaced
+1 -1
View File
@@ -2501,7 +2501,7 @@ find_ac(void)
uac -= u.ublessed; uac -= u.ublessed;
uac -= u.uspellprot; uac -= u.uspellprot;
/* put a cap on armor class [3.7: was +127,-128, now reduced to +/- 99 */ /* put a cap on armor class [5.0: was +127,-128, now reduced to +/- 99 */
if (abs(uac) > AC_MAX) if (abs(uac) > AC_MAX)
uac = sgn(uac) * AC_MAX; uac = sgn(uac) * AC_MAX;
+2 -2
View File
@@ -601,13 +601,13 @@ really_kick_object(coordxy x, coordxy y)
|| closed_door(x + u.dx, y + u.dy)) || closed_door(x + u.dx, y + u.dy))
range = 1; range = 1;
/* 3.7: this used to skip 'costly' handling if kickedobj->no_charge /* 5.0: this used to skip 'costly' handling if kickedobj->no_charge
was set but that optimization could result in no_charge staying set was set but that optimization could result in no_charge staying set
for objects kicked out of the shop */ for objects kicked out of the shop */
shkp = find_objowner(gk.kickedobj, x, y); shkp = find_objowner(gk.kickedobj, x, y);
costly = (shkp && (costly_spot(x, y) || (costly_adjacent(shkp, x, y) costly = (shkp && (costly_spot(x, y) || (costly_adjacent(shkp, x, y)
&& gk.kickedobj->unpaid))); && gk.kickedobj->unpaid)));
/* 3.7: give feedback about the item being kicked; some follow-on /* 5.0: give feedback about the item being kicked; some follow-on
messages refer to "it" */ messages refer to "it" */
Norep("You kick %s.", Norep("You kick %s.",
!isgold ? singular(gk.kickedobj, doname) : doname(gk.kickedobj)); !isgold ? singular(gk.kickedobj, doname) : doname(gk.kickedobj));
+1 -1
View File
@@ -2082,7 +2082,7 @@ thitmonst(
/* throwing real gems to co-aligned unicorns boosts Luck, /* throwing real gems to co-aligned unicorns boosts Luck,
to cross-aligned unicorns changes Luck by random amount; to cross-aligned unicorns changes Luck by random amount;
throwing worthless glass doesn't affect Luck but doesn't anger them; throwing worthless glass doesn't affect Luck but doesn't anger them;
3.7: treat rocks and gray stones as attacks rather than like glass 5.0: treat rocks and gray stones as attacks rather than like glass
and also treat gems or glass shot via sling as attacks */ and also treat gems or glass shot via sling as attacks */
if (obj->oclass == GEM_CLASS && is_unicorn(mon->data) if (obj->oclass == GEM_CLASS && is_unicorn(mon->data)
&& objects[obj->otyp].oc_material != MINERAL && !uslinging()) { && objects[obj->otyp].oc_material != MINERAL && !uslinging()) {
+6 -6
View File
@@ -839,7 +839,7 @@ cprefx(int pm)
/* life-saving needed to reach here */ /* life-saving needed to reach here */
exercise(A_WIS, FALSE); exercise(A_WIS, FALSE);
/* revive an actual corpse; can't do that if it was a tin; /* revive an actual corpse; can't do that if it was a tin;
3.7: this used to assume that such tins were impossible but 5.0: this used to assume that such tins were impossible but
they can be wished for in wizard mode; they can't make it they can be wished for in wizard mode; they can't make it
to normal play though because bones creation empties them */ to normal play though because bones creation empties them */
if (svc.context.victual.piece /* Null for tins */ if (svc.context.victual.piece /* Null for tins */
@@ -1891,7 +1891,7 @@ eatcorpse(struct obj *otmp)
rotted -= 2L; rotted -= 2L;
} }
/* 3.7: globs don't become tainted, they shrink away */ /* 5.0: globs don't become tainted, they shrink away */
if (!glob && !stoneable && !slimeable && rotted > 5L) { if (!glob && !stoneable && !slimeable && rotted > 5L) {
boolean cannibal = maybe_cannibal(mnum, FALSE); boolean cannibal = maybe_cannibal(mnum, FALSE);
@@ -2632,7 +2632,7 @@ edibility_prompts(struct obj *otmp)
*/ */
char buf[BUFSZ], foodsmell[BUFSZ], char buf[BUFSZ], foodsmell[BUFSZ],
it_or_they[QBUFSZ]; it_or_they[QBUFSZ];
/* 3.7: decaying globs don't become tainted anymore; in 3.6, they did */ /* 5.0: decaying globs don't become tainted anymore; in 3.6, they did */
boolean cadaver = (otmp->otyp == CORPSE), stoneorslime = FALSE; boolean cadaver = (otmp->otyp == CORPSE), stoneorslime = FALSE;
int material = objects[otmp->otyp].oc_material, mnum = otmp->corpsenm; int material = objects[otmp->otyp].oc_material, mnum = otmp->corpsenm;
long rotted = 0L; long rotted = 0L;
@@ -3179,7 +3179,7 @@ gethungry(void)
u.uhunger--; /* ordinary food consumption */ u.uhunger--; /* ordinary food consumption */
/* /*
* 3.7: trigger is randomized instead of (moves % N). Makes * 5.0: trigger is randomized instead of (moves % N). Makes
* ring juggling (using the 'time' option to see the turn counter * ring juggling (using the 'time' option to see the turn counter
* in order to time swapping of a pair of rings of slow digestion, * in order to time swapping of a pair of rings of slow digestion,
* wearing one on one hand, then putting on the other and taking * wearing one on one hand, then putting on the other and taking
@@ -3209,7 +3209,7 @@ gethungry(void)
* Possessing the real Amulet imposes a separate hunger penalty * Possessing the real Amulet imposes a separate hunger penalty
* from wearing an amulet (so gets a double penalty when worn). * from wearing an amulet (so gets a double penalty when worn).
* *
* 3.7.0: Worn meat rings don't affect hunger. * 5.0.0: Worn meat rings don't affect hunger.
* Same with worn cheap plastic imitation of the Amulet. * Same with worn cheap plastic imitation of the Amulet.
* +0 ring of protection might do something (enhanced "magical * +0 ring of protection might do something (enhanced "magical
* cancellation") if hero doesn't have protection from some * cancellation") if hero doesn't have protection from some
@@ -3222,7 +3222,7 @@ gethungry(void)
*/ */
switch (accessorytime) { /* note: use even cases among 0..19 only */ switch (accessorytime) { /* note: use even cases among 0..19 only */
case 0: case 0:
/* 3.7: if not wearing a ring of slow digestion, obtaining /* 5.0: if not wearing a ring of slow digestion, obtaining
that property from worn armor (white dragon scales/mail) that property from worn armor (white dragon scales/mail)
causes the armor to burn nutrition; since it's not causes the armor to burn nutrition; since it's not
actually a ring, we don't check for it on the ring actually a ring, we don't check for it on the ring
+2 -2
View File
@@ -2298,7 +2298,7 @@ domove_fight_empty(coordxy x, coordxy y)
} else if (solid) { } else if (solid) {
/* glyph might indicate unseen terrain if hero is blind; /* glyph might indicate unseen terrain if hero is blind;
unlike searching, this won't reveal what that terrain is; unlike searching, this won't reveal what that terrain is;
3.7: used to say "solid rock" for STONE, but that made it be 5.0: used to say "solid rock" for STONE, but that made it be
different from unmapped walls outside of rooms (and was wrong different from unmapped walls outside of rooms (and was wrong
on arboreal levels) */ on arboreal levels) */
if (levl[x][y].seenv || IS_STWALL(levl[x][y].typ) if (levl[x][y].seenv || IS_STWALL(levl[x][y].typ)
@@ -2310,7 +2310,7 @@ domove_fight_empty(coordxy x, coordxy y)
} }
/* note: 'solid' is misleadingly named and catches pools /* note: 'solid' is misleadingly named and catches pools
of water and lava as well as rock and walls; of water and lava as well as rock and walls;
3.7: furniture too */ 5.0: furniture too */
} else { } else {
Strcpy(buf, "thin air"); Strcpy(buf, "thin air");
} }
+1 -1
View File
@@ -93,7 +93,7 @@ staticfn void opt_out_words(char *, int *) NONNULLPTRS;
staticfn void build_savebones_compat_string(void); staticfn void build_savebones_compat_string(void);
static int idxopttext, done_runtime_opt_init_once = 0; static int idxopttext, done_runtime_opt_init_once = 0;
#define MAXOPT 60 /* 3.7: currently 40 lines get inserted into opttext[] */ #define MAXOPT 60 /* 5.0: currently 40 lines get inserted into opttext[] */
static char *opttext[MAXOPT] = { 0 }; static char *opttext[MAXOPT] = { 0 };
#define STOREOPTTEXT(line) \ #define STOREOPTTEXT(line) \
((void) ((idxopttext < MAXOPT) \ ((void) ((idxopttext < MAXOPT) \
+1 -1
View File
@@ -1312,7 +1312,7 @@ gulpmu(struct monst *mtmp, struct attack *mattk)
place_monster(mtmp, u.ux, u.uy); place_monster(mtmp, u.ux, u.uy);
set_ustuck(mtmp); set_ustuck(mtmp);
newsym(mtmp->mx, mtmp->my); newsym(mtmp->mx, mtmp->my);
/* 3.7: dismount for all engulfers, not just for purple worms */ /* 5.0: dismount for all engulfers, not just for purple worms */
if (u.usteed) { if (u.usteed) {
char buf[BUFSZ]; char buf[BUFSZ];
+3 -3
View File
@@ -957,7 +957,7 @@ mksobj_init(struct obj **obj, boolean artif)
/* for emphasis; glob quantity is always 1 and weight varies /* for emphasis; glob quantity is always 1 and weight varies
when other globs coalesce with it or this one shrinks */ when other globs coalesce with it or this one shrinks */
otmp->quan = 1L; otmp->quan = 1L;
/* 3.7: globs in 3.6.x left owt as 0 and let weight() fix /* 5.0: globs in 3.6.x left owt as 0 and let weight() fix
that up during 'obj->owt = weight(obj)' below, but now that up during 'obj->owt = weight(obj)' below, but now
we initialize glob->owt explicitly so weight() doesn't we initialize glob->owt explicitly so weight() doesn't
need to perform any fix up and returns glob->owt as-is */ need to perform any fix up and returns glob->owt as-is */
@@ -1899,7 +1899,7 @@ weight(struct obj *obj)
manage glob->owt and there is nothing for weight() to do except manage glob->owt and there is nothing for weight() to do except
return the current value as-is */ return the current value as-is */
if (obj->globby) { if (obj->globby) {
/* 3.7: in 3.6.x this checked for owt==0 and then used /* 5.0: in 3.6.x this checked for owt==0 and then used
owt as-is when non-zero or objects[].oc_weight if zero; owt as-is when non-zero or objects[].oc_weight if zero;
we don't do that anymore because it confused calculating we don't do that anymore because it confused calculating
the weight of a container when a glob inside shrank down the weight of a container when a glob inside shrank down
@@ -1964,7 +1964,7 @@ weight(struct obj *obj)
} else if (obj->oclass == FOOD_CLASS && obj->oeaten) { } else if (obj->oclass == FOOD_CLASS && obj->oeaten) {
return eaten_stat((int) obj->quan * wt, obj); return eaten_stat((int) obj->quan * wt, obj);
} else if (obj->oclass == COIN_CLASS) { } else if (obj->oclass == COIN_CLASS) {
/* 3.7: always weigh at least 1 unit; used to yield 0 for 1..49 */ /* 5.0: always weigh at least 1 unit; used to yield 0 for 1..49 */
wt = (int) ((obj->quan + 50L) / 100L); wt = (int) ((obj->quan + 50L) / 100L);
return max(wt, 1); return max(wt, 1);
} else if (obj->otyp == HEAVY_IRON_BALL && obj->owt != 0) { } else if (obj->otyp == HEAVY_IRON_BALL && obj->owt != 0) {
+2 -2
View File
@@ -1784,13 +1784,13 @@ m_move(struct monst *mtmp, int after)
* attack it. * attack it.
*/ */
if (intruder && intruder != mtmp if (intruder && intruder != mtmp
/* 3.7: this used to use 'dist2() < 2' which meant that intended /* 5.0: this used to use 'dist2() < 2' which meant that intended
attack was disallowed if they were adjacent diagonally */ attack was disallowed if they were adjacent diagonally */
&& dist2(mtmp->mx, mtmp->my, tx, ty) <= 2) { && dist2(mtmp->mx, mtmp->my, tx, ty) <= 2) {
gb.bhitpos.x = tx, gb.bhitpos.y = ty; gb.bhitpos.x = tx, gb.bhitpos.y = ty;
gn.notonhead = (intruder->mx != tx || intruder->my != ty); gn.notonhead = (intruder->mx != tx || intruder->my != ty);
covetousattack = mattackm(mtmp, intruder); covetousattack = mattackm(mtmp, intruder);
/* 3.7: this used to erroneously use '== 2' (M_ATTK_DEF_DIED) */ /* 5.0: this used to erroneously use '== 2' (M_ATTK_DEF_DIED) */
if (covetousattack & M_ATTK_AGR_DIED) if (covetousattack & M_ATTK_AGR_DIED)
return MMOVE_DIED; return MMOVE_DIED;
mmoved = MMOVE_MOVED; mmoved = MMOVE_MOVED;
+2 -2
View File
@@ -4106,9 +4106,9 @@ readobjnam_preparse(struct _readobjnam_data *d)
break; break;
d->gsize = 1; d->gsize = 1;
} else if (!strncmpi(d->bp, "medium ", l = 7)) { } else if (!strncmpi(d->bp, "medium ", l = 7)) {
/* 3.7: in 3.6, "medium" was only used during wishing and the /* 5.0: in 3.6, "medium" was only used during wishing and the
mid-size glob had no adjective when formatted, but as of mid-size glob had no adjective when formatted, but as of
3.7, "medium" has become an explicit part of the name for 5.0, "medium" has become an explicit part of the name for
combined globs of at least 5 individual ones (owt >= 100) combined globs of at least 5 individual ones (owt >= 100)
and less than 15 (owt < 300) */ and less than 15 (owt < 300) */
d->gsize = 2; d->gsize = 2;
+1 -1
View File
@@ -3679,7 +3679,7 @@ optfn_scores(
if ((op = string_for_opt(opts, FALSE)) == empty_optstr) if ((op = string_for_opt(opts, FALSE)) == empty_optstr)
return optn_err; return optn_err;
/* 3.7: earlier versions left old values for unspecified arguments /* 5.0: earlier versions left old values for unspecified arguments
if player's scores:foo option only specified some of the three; if player's scores:foo option only specified some of the three;
in particular, attempting to use 'scores:own' rather than in particular, attempting to use 'scores:own' rather than
'scores:0 top/0 around/own' didn't work as intended */ 'scores:0 top/0 around/own' didn't work as intended */
+1 -1
View File
@@ -556,7 +556,7 @@ look_at_monster(
/* describe a pool location's contents; might return a static buffer so /* describe a pool location's contents; might return a static buffer so
caller should use it or copy it before calling waterbody_name() again caller should use it or copy it before calling waterbody_name() again
[3.7: moved here from mkmaze.c] */ [5.0: moved here from mkmaze.c] */
const char * const char *
waterbody_name(coordxy x, coordxy y) waterbody_name(coordxy x, coordxy y)
{ {
+1 -1
View File
@@ -582,7 +582,7 @@ dodrink(void)
* was no longer dealing with an inventory item. Unwearing * was no longer dealing with an inventory item. Unwearing
* the current potion is intended to keep it in inventory.] * the current potion is intended to keep it in inventory.]
* *
* 3.7: switch back to relying on useup() unless the object is * 5.0: switch back to relying on useup() unless the object is
* actually worn. Otherwise drinking a stack of unpaid potions * actually worn. Otherwise drinking a stack of unpaid potions
* one by one in a shop makes each one a separate used-up item * one by one in a shop makes each one a separate used-up item
* for 'Ix' invent display and for itemized shop billing instead * for 'Ix' invent display and for itemized shop billing instead
+2 -2
View File
@@ -1505,7 +1505,7 @@ seffect_remove_curse(struct obj **sobjp)
if (scursed) { if (scursed) {
pline_The("scroll disintegrates."); pline_The("scroll disintegrates.");
} else { } else {
/* 3.7: this used to use a straight /* 5.0: this used to use a straight
for (obj = invent; obj; obj = obj->nobj) {} for (obj = invent; obj; obj = obj->nobj) {}
traversal, but for the confused case, secondary weapon might traversal, but for the confused case, secondary weapon might
become cursed and be dropped, moving it from the invent chain become cursed and be dropped, moving it from the invent chain
@@ -3212,7 +3212,7 @@ create_particular_parse(
d->which = name_to_mon(bufp, &gender_name_var); d->which = name_to_mon(bufp, &gender_name_var);
/* /*
* With the introduction of male and female monster names * With the introduction of male and female monster names
* in 3.7, preserve that detail. * in 5.0, preserve that detail.
* *
* If d->fem is already set to MALE or FEMALE at this juncture, it means * If d->fem is already set to MALE or FEMALE at this juncture, it means
* one of those terms was explicitly specified. * one of those terms was explicitly specified.
+1 -1
View File
@@ -303,7 +303,7 @@ rumor_check(void)
DISABLE_WARNING_FORMAT_NONLITERAL DISABLE_WARNING_FORMAT_NONLITERAL
/* 3.7: augments rumors_check(); test 'engrave' or 'epitaph' or 'bogusmon' */ /* 5.0: augments rumors_check(); test 'engrave' or 'epitaph' or 'bogusmon' */
staticfn void staticfn void
others_check( others_check(
const char *ftype, /* header: "{Engravings|Epitaphs|Bogus monsters}:" */ const char *ftype, /* header: "{Engravings|Epitaphs|Bogus monsters}:" */
+1 -1
View File
@@ -308,7 +308,7 @@ static long floc = 0L;
/* /*
* historical structlevel savefile writing and reading routines follow. * historical structlevel savefile writing and reading routines follow.
* These were moved here from save.c and restore.c between 3.6.3 and 3.7.0. * These were moved here from save.c and restore.c between 3.6.3 and 5.0.0,.
*/ */
staticfn int getidx(int, int); staticfn int getidx(int, int);
+2 -2
View File
@@ -1525,7 +1525,7 @@ cheapest_item(int ibillct, Bill *ibill)
long gmin = ibill[0].cost; long gmin = ibill[0].cost;
/* /*
* 3.7: old version didn't determine cheapest item correctly if it * 5.0: old version didn't determine cheapest item correctly if it
* was either the partly used or partly intact portion of a partially * was either the partly used or partly intact portion of a partially
* used stack. Rather than modify it to use bp_to_obj() in order to * used stack. Rather than modify it to use bp_to_obj() in order to
* obtain quanities for every entry on eshkp->bill_p[], switch to * obtain quanities for every entry on eshkp->bill_p[], switch to
@@ -2107,7 +2107,7 @@ pay_billed_items(
} while (via_menu); } while (via_menu);
/* /*
* 3.7: this used to make two passes through eshkp->bill_p[], * 5.0: this used to make two passes through eshkp->bill_p[],
* the first for used up items and the second for unpaid ones. * the first for used up items and the second for unpaid ones.
* Items which were partly used were processed on both passes. * Items which were partly used were processed on both passes.
* *
+1 -1
View File
@@ -214,7 +214,7 @@ throne_sit_effect(void)
You_feel("somehow out of place..."); You_feel("somehow out of place...");
} }
/* 3.7: when the random chance for removal is hit, ask for confirmation /* 5.0: when the random chance for removal is hit, ask for confirmation
if in wizard mode, and remove the throne even if hero was teleported if in wizard mode, and remove the throne even if hero was teleported
away from it. [This used to remove a throne at hero's current away from it. [This used to remove a throne at hero's current
location if there happened to be one, so for the teleport case that location if there happened to be one, so for the teleport case that
+1 -1
View File
@@ -1080,7 +1080,7 @@ domonnoise(struct monst *mtmp)
} else } else
switch (monsndx(ptr)) { switch (monsndx(ptr)) {
case PM_HOBBIT: case PM_HOBBIT:
/* 3.7: the 'complains' message used to be given if the /* 5.0: the 'complains' message used to be given if the
hobbit's current hit points were at 10 below max or hobbit's current hit points were at 10 below max or
less, but their max is normally less than 10 so it less, but their max is normally less than 10 so it
would almost never occur */ would almost never occur */
+1 -1
View File
@@ -961,7 +961,7 @@ fall_asleep(int how_long, boolean wakeup_msg)
if (wakeup_msg && gm.multi == how_long) { if (wakeup_msg && gm.multi == how_long) {
/* caller can follow with a direct call to Hear_again() if /* caller can follow with a direct call to Hear_again() if
there's a need to override this when wakeup_msg is true */ there's a need to override this when wakeup_msg is true */
/* 3.7: how_long is negative so wasn't actually incrementing the /* 5.0: how_long is negative so wasn't actually incrementing the
deafness timeout when it used to be passed as-is */ deafness timeout when it used to be passed as-is */
incr_itimeout(&HDeaf, abs(how_long)); incr_itimeout(&HDeaf, abs(how_long));
disp.botl = TRUE; disp.botl = TRUE;
+3 -3
View File
@@ -5311,7 +5311,7 @@ untrap_prob(
chance = 1; chance = 1;
/* else chance stays 3 */ /* else chance stays 3 */
} else if (!webmaker(u.umonst->data)) { } else if (!webmaker(u.umonst->data)) {
chance = 7; /* 3.7: used to be 30 */ chance = 7; /* 5.0: used to be 30 */
} }
} }
if (Confusion || Hallucination) if (Confusion || Hallucination)
@@ -5996,7 +5996,7 @@ untrap(
} /* end if */ } /* end if */
if (boxcnt) { if (boxcnt) {
/* 3.7: this used to allow searching for traps on multiple /* 5.0: this used to allow searching for traps on multiple
containers on the same move and needed to keep track of containers on the same move and needed to keep track of
whether any had been found but not attempted to untrap; whether any had been found but not attempted to untrap;
now at most one per move may be checked and we only now at most one per move may be checked and we only
@@ -6855,7 +6855,7 @@ lava_effects(void)
/* Check whether we should burn away boots *first* so we know whether to /* Check whether we should burn away boots *first* so we know whether to
* make the player sink into the lava. Assumption: water walking only * make the player sink into the lava. Assumption: water walking only
* comes from boots. * comes from boots.
* (3.7: that assumption is no longer true, but having boots be the first * (5.0: that assumption is no longer true, but having boots be the first
* thing to come into contact with lava makes sense.) * thing to come into contact with lava makes sense.)
*/ */
if (uarmf && (uarmf->in_use if (uarmf && (uarmf->in_use
+2 -2
View File
@@ -2202,7 +2202,7 @@ steal_it(struct monst *mdef, struct attack *mattk)
if (ustealo) { /* we will be taking everything */ if (ustealo) { /* we will be taking everything */
char heshe[20]; char heshe[20];
/* 3.7: this uses hero's base gender rather than nymph femininity /* 5.0: this uses hero's base gender rather than nymph femininity
but was using hardcoded pronouns She/her for target monster; but was using hardcoded pronouns She/her for target monster;
switch to dynamic pronoun */ switch to dynamic pronoun */
if (gender(mdef) == (int) u.mfemale if (gender(mdef) == (int) u.mfemale
@@ -4228,7 +4228,7 @@ mhitm_ad_ston(
pline("%s seems to grimace.", Monnam(magr)); pline("%s seems to grimace.", Monnam(magr));
} }
/* /*
* 3.7: New moon is no longer overridden by carrying a * 5.0: New moon is no longer overridden by carrying a
* lizard corpse. Having the moon's impact on terrestrial * lizard corpse. Having the moon's impact on terrestrial
* activity be affected by carrying a dead critter felt * activity be affected by carrying a dead critter felt
* silly. * silly.
+1 -1
View File
@@ -1186,7 +1186,7 @@ dump_fmtstr(
else else
Strcpy(tmpbuf, "{current date+time}"); Strcpy(tmpbuf, "{current date+time}");
break; break;
case 'v': /* version, eg. "3.7.0-0" */ case 'v': /* version, eg. "5.0.0,-0" */
Sprintf(tmpbuf, "%s", version_string(verbuf, sizeof verbuf)); Sprintf(tmpbuf, "%s", version_string(verbuf, sizeof verbuf));
break; break;
case 'u': /* UID */ case 'u': /* UID */
+1 -1
View File
@@ -620,7 +620,7 @@ nasty(struct monst *summoner)
for (i = rnd(tmp); i > 0 && count < MAXNASTIES; --i) { for (i = rnd(tmp); i > 0 && count < MAXNASTIES; --i) {
/* Of the 44 nasties[], 10 are lawful, 14 are chaotic, /* Of the 44 nasties[], 10 are lawful, 14 are chaotic,
* and 20 are neutral. [These numbers are up date for * and 20 are neutral. [These numbers are up date for
* 3.7.0; the ones in the next paragraph are not....] * 5.0.0; the ones in the next paragraph are not....]
* *
* Neutral caster, used for late-game harassment, * Neutral caster, used for late-game harassment,
* has 18/42 chance to stop the inner loop on each * has 18/42 chance to stop the inner loop on each
+1 -1
View File
@@ -224,7 +224,7 @@ worm_move(struct monst *worm)
wgrowtime[wnum] = svm.moves + rnd(5); wgrowtime[wnum] = svm.moves + rnd(5);
} else { } else {
int mmove = mcalcmove(worm, FALSE), int mmove = mcalcmove(worm, FALSE),
/* prior to 3.7.0, next-grow increment was 3..17 but since /* prior to 5.0.0,, next-grow increment was 3..17 but since
it got checked every 4th turn when the speed 3 worm got it got checked every 4th turn when the speed 3 worm got
to move, it was effectively 0..5; also, its usage was to move, it was effectively 0..5; also, its usage was
'wgrowtime += incr', so often 'wgrowtime' would be 'wgrowtime += incr', so often 'wgrowtime' would be
+3 -3
View File
@@ -198,7 +198,7 @@ bhitm(struct monst *mtmp, struct obj *otmp)
seemimic(mtmp); seemimic(mtmp);
shieldeff(mtmp->mx, mtmp->my); shieldeff(mtmp->mx, mtmp->my);
pline("Boing!"); pline("Boing!");
/* 3.7: used to 'break' to avoid setting learn_it here */ /* 5.0: used to 'break' to avoid setting learn_it here */
} else if (u.uswallow || rnd(20) < 10 + find_mac(mtmp)) { } else if (u.uswallow || rnd(20) < 10 + find_mac(mtmp)) {
if (disguised_mimic) if (disguised_mimic)
seemimic(mtmp); seemimic(mtmp);
@@ -1865,7 +1865,7 @@ poly_obj(struct obj *obj, int id)
while (otmp->otyp == SPE_POLYMORPH) while (otmp->otyp == SPE_POLYMORPH)
otmp->otyp = rnd_class(svb.bases[SPBOOK_CLASS], SPE_BLANK_PAPER); otmp->otyp = rnd_class(svb.bases[SPBOOK_CLASS], SPE_BLANK_PAPER);
/* reduce spellbook abuse; non-blank books degrade; /* reduce spellbook abuse; non-blank books degrade;
3.7: novels don't use spestudied so shouldn't degrade to blank 5.0: novels don't use spestudied so shouldn't degrade to blank
(but don't force spestudied to zero for them since a non-zero (but don't force spestudied to zero for them since a non-zero
value could get passed along to a future polymorph) */ value could get passed along to a future polymorph) */
if (otmp->otyp != SPE_BLANK_PAPER && otmp->otyp != SPE_NOVEL) { if (otmp->otyp != SPE_BLANK_PAPER && otmp->otyp != SPE_NOVEL) {
@@ -4547,7 +4547,7 @@ zhitu(
} }
/* /*
* 3.7: when fatal, this used to yield "Killed by <fltxt>." without any * 5.0: when fatal, this used to yield "Killed by <fltxt>." without any
* information about who was responsible. Now 'buzzer' is used to try * information about who was responsible. Now 'buzzer' is used to try
* to supply "zapped/cast/breathed by <mon> [imitating <other_mon>]." * to supply "zapped/cast/breathed by <mon> [imitating <other_mon>]."
* *
+1 -1
View File
@@ -1590,7 +1590,7 @@ do_oracles(void)
/* Read one line from input, up to and including the next newline /* Read one line from input, up to and including the next newline
* character. Returns a pointer to the heap-allocated string, or a * character. Returns a pointer to the heap-allocated string, or a
* null pointer if no characters were read. * null pointer if no characters were read.
* 3.7: redone to use nethack's alloc() rather than libc's malloc() * 5.0: redone to use nethack's alloc() rather than libc's malloc()
* and realloc(). * and realloc().
*/ */
static char * static char *
+1 -1
View File
@@ -195,7 +195,7 @@ main(int argc, char *argv[])
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
sz = strlen(folderbuf); sz = strlen(folderbuf);
(void) snprintf(eos(folderbuf), sizeof folderbuf - sz, (void) snprintf(eos(folderbuf), sizeof folderbuf - sz,
"\\AppData\\Local\\NetHack\\3.7\\"); "\\AppData\\Local\\NetHack\\5.0\\");
// initoptions_init(); // This allows OPTIONS in syscf on Windows. // initoptions_init(); // This allows OPTIONS in syscf on Windows.
set_default_prefix_locations(argv[0]); set_default_prefix_locations(argv[0]);
#endif #endif