update dat src include...
This commit is contained in:
+3
-3
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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),
|
||||||
|
|||||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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)
|
||||||
|
|||||||
@@ -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
@@ -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) {
|
||||||
|
|||||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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()) {
|
||||||
|
|||||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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);
|
||||||
|
|||||||
@@ -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.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||||
|
|||||||
@@ -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
@@ -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
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user