Merge branch 'NetHack-3.6.0'
This commit is contained in:
+3
-4
@@ -178,10 +178,9 @@ Dean Luick, Pat Rankin, Mike Stephenson, Janet Walz, and Paul Winner.
|
|||||||
Leading up to the release of 3.6.0 in early 2015, new members Sean Hunt,
|
Leading up to the release of 3.6.0 in early 2015, new members Sean Hunt,
|
||||||
Pasi Kallinen, and Derek S. Ray joined the NetHack development team.
|
Pasi Kallinen, and Derek S. Ray joined the NetHack development team.
|
||||||
|
|
||||||
The 3.6 versions of the game are special in a particular way. Near the end
|
Near the end of the development of 3.6.0, one of the significant inspirations
|
||||||
of the development of 3.6.0, one of the significant inspirations for many
|
for many of the humorous and fun features found in the game, author
|
||||||
of the humorous and fun features found in the game, author Terry Pratchett,
|
Terry Pratchett, passed away. NetHack 3.6.0 introduced a tribute to him.
|
||||||
passed away. The 3.6 versions of the game include a tribute to him.
|
|
||||||
|
|
||||||
3.6.0 was released in December 2015, and merged work done by the development
|
3.6.0 was released in December 2015, and merged work done by the development
|
||||||
team since the release of 3.4.3 with some of the beloved community patches.
|
team since the release of 3.4.3 with some of the beloved community patches.
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
# NetHack 3.6.0 tribute to:
|
# A tribute introduced in NetHack 3.6.0 to:
|
||||||
#
|
#
|
||||||
# Sir Terence David John "Terry" Pratchett
|
# Sir Terence David John "Terry" Pratchett
|
||||||
# April 28, 1948 - March 12, 2015
|
# April 28, 1948 - March 12, 2015
|
||||||
|
|||||||
+123
-65
@@ -1,4 +1,4 @@
|
|||||||
.\" $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.258 $ $NHDT-Date: 1524190235 2018/04/20 02:10:35 $
|
.\" $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.262 $ $NHDT-Date: 1524524932 2018/04/23 23:08:52 $
|
||||||
.\"
|
.\"
|
||||||
.\" This is an excerpt from the 'roff' man page from the 'groff' package.
|
.\" This is an excerpt from the 'roff' man page from the 'groff' package.
|
||||||
.\" NetHack's Guidebook.mn currently does *not* adhere to these guidelines.
|
.\" NetHack's Guidebook.mn currently does *not* adhere to these guidelines.
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
.ds vr "NetHack 3.6
|
.ds vr "NetHack 3.6
|
||||||
.ds f0 "\*(vr
|
.ds f0 "\*(vr
|
||||||
.ds f1
|
.ds f1
|
||||||
.ds f2 "April 19, 2018
|
.ds f2 "April 23, 2018
|
||||||
.
|
.
|
||||||
.\" labeled paragraph start (should be part of tmac.n, but I don't want to
|
.\" labeled paragraph start (should be part of tmac.n, but I don't want to
|
||||||
.\" make changes to that file)
|
.\" make changes to that file)
|
||||||
@@ -84,6 +84,14 @@
|
|||||||
.\}
|
.\}
|
||||||
..
|
..
|
||||||
.
|
.
|
||||||
|
.\" A note on some special characters:
|
||||||
|
.\" \(dq = double quote character
|
||||||
|
.\" - = hyphen \- = minus sign
|
||||||
|
.\" \(em = M-sized dash
|
||||||
|
.\" ^ = small circumflex punctuation \(ha = larger circumflex character
|
||||||
|
.\" ~ = small tilde punctuation \(ti = larger tilde character
|
||||||
|
.
|
||||||
|
.
|
||||||
.\" finally, start the actual Guidebook...
|
.\" finally, start the actual Guidebook...
|
||||||
.
|
.
|
||||||
.mt
|
.mt
|
||||||
@@ -410,7 +418,7 @@ The message line (top)
|
|||||||
.pg
|
.pg
|
||||||
The top line of the screen is reserved for messages that describe
|
The top line of the screen is reserved for messages that describe
|
||||||
things that are impossible to represent visually. If you see a
|
things that are impossible to represent visually. If you see a
|
||||||
``\fB--More--\fP'' on the top line, this means that NetHack has
|
``\fB\-\-More\-\-\fP'' on the top line, this means that NetHack has
|
||||||
another message to display on the screen, but it wants to make certain
|
another message to display on the screen, but it wants to make certain
|
||||||
that you've read the one that is there first. To read the next message,
|
that you've read the one that is there first. To read the next message,
|
||||||
just press the space bar.
|
just press the space bar.
|
||||||
@@ -427,7 +435,7 @@ so far. Each symbol on the screen represents something. You can set
|
|||||||
various graphics options to change some of the symbols the game uses;
|
various graphics options to change some of the symbols the game uses;
|
||||||
otherwise, the game will use default symbols. Here is a list of what the
|
otherwise, the game will use default symbols. Here is a list of what the
|
||||||
default symbols mean:
|
default symbols mean:
|
||||||
.lp "- and | "
|
.lp "\\- and | "
|
||||||
The walls of a room, or an open door. Or a grave (|).
|
The walls of a room, or an open door. Or a grave (|).
|
||||||
.lp .
|
.lp .
|
||||||
The floor of a room, ice, or a doorless doorway.
|
The floor of a room, ice, or a doorless doorway.
|
||||||
@@ -444,7 +452,7 @@ A closed door, or a spellbook containing a spell you may be able to learn.
|
|||||||
Your character or a human.
|
Your character or a human.
|
||||||
.lp $
|
.lp $
|
||||||
A pile of gold.
|
A pile of gold.
|
||||||
.lp ^
|
.lp \(ha \" ^
|
||||||
A trap (once you have detected it).
|
A trap (once you have detected it).
|
||||||
.lp )
|
.lp )
|
||||||
A weapon.
|
A weapon.
|
||||||
@@ -507,8 +515,8 @@ you are presented with will depend chiefly on how you have set the
|
|||||||
option.
|
option.
|
||||||
.pg
|
.pg
|
||||||
For example, a common question, in the form ``What do you want to
|
For example, a common question, in the form ``What do you want to
|
||||||
use?\ [a-zA-Z\ ?*]'', asks you to choose an object you are carrying.
|
use?\ [a\-zA\-Z\ ?*]'', asks you to choose an object you are carrying.
|
||||||
Here, ``a-zA-Z'' are the inventory letters of your possible choices.
|
Here, ``a\-zA\-Z'' are the inventory letters of your possible choices.
|
||||||
Typing `?' gives you an inventory list of these items, so you can see
|
Typing `?' gives you an inventory list of these items, so you can see
|
||||||
what each letter refers to. In this example, there is also a `*'
|
what each letter refers to. In this example, there is also a `*'
|
||||||
indicating that you may choose an object not on the list, if you
|
indicating that you may choose an object not on the list, if you
|
||||||
@@ -927,8 +935,8 @@ May be preceded by `m' to force a selection menu.
|
|||||||
Toggle the
|
Toggle the
|
||||||
.op autopickup
|
.op autopickup
|
||||||
option on and off.
|
option on and off.
|
||||||
.lp ^
|
.lp \(ha \" ^
|
||||||
Ask for the type of a trap you found earlier.
|
Ask for the type of an adjacent trap you found earlier.
|
||||||
.lp )
|
.lp )
|
||||||
Tell what weapon you are wielding.
|
Tell what weapon you are wielding.
|
||||||
.lp [
|
.lp [
|
||||||
@@ -1203,7 +1211,8 @@ List and reorder known spells. Default key is '+'.
|
|||||||
.lp #seetools
|
.lp #seetools
|
||||||
Show the tools currently in use. Default key is '('.
|
Show the tools currently in use. Default key is '('.
|
||||||
.lp #seetrap
|
.lp #seetrap
|
||||||
Show the type of a trap near you. Default key is '^'.
|
Show the type of an adjacent trap.
|
||||||
|
Default key is '\(ha'.
|
||||||
.lp #seeweapon
|
.lp #seeweapon
|
||||||
Show the weapon currently wielded. Default key is ')'.
|
Show the weapon currently wielded. Default key is ')'.
|
||||||
.lp #shell
|
.lp #shell
|
||||||
@@ -1438,7 +1447,7 @@ doors).
|
|||||||
Secret doors are hidden. You can find them with the `s' (search)
|
Secret doors are hidden. You can find them with the `s' (search)
|
||||||
command. Once found they are in all ways equivalent to normal doors.
|
command. Once found they are in all ways equivalent to normal doors.
|
||||||
.hn 2
|
.hn 2
|
||||||
Traps (`^')
|
Traps (`\(ha')
|
||||||
.pg
|
.pg
|
||||||
There are traps throughout the dungeon to snare the unwary delver.
|
There are traps throughout the dungeon to snare the unwary delver.
|
||||||
For example, you may suddenly fall into a pit and be stuck for a few
|
For example, you may suddenly fall into a pit and be stuck for a few
|
||||||
@@ -1635,6 +1644,24 @@ however, they are likely to be cursed. Beware of whatever killed the
|
|||||||
former player; it is probably still lurking around, gloating over its
|
former player; it is probably still lurking around, gloating over its
|
||||||
last victory.
|
last victory.
|
||||||
.
|
.
|
||||||
|
.hn 2
|
||||||
|
Persistence of Monsters
|
||||||
|
.pg
|
||||||
|
Monsters (a generic reference which also includes humans and pets) are only
|
||||||
|
shown while they can be seen or otherwise sensed.
|
||||||
|
Moving to a location where you can't see or sense a monster any more
|
||||||
|
will result in it disappearing from your map, similarly if it is the
|
||||||
|
one who moved rather than you.
|
||||||
|
.pg
|
||||||
|
However, if you encounter a monster which you can't see or sense \(em
|
||||||
|
perhaps it is invisible and has just tapped you on the noggin \(em
|
||||||
|
a special ``remembered, unseen monster'' marker will be displayed at
|
||||||
|
the location where you think it is.
|
||||||
|
That will persist until you have
|
||||||
|
proven that there is no monster there, even if the unseen monster
|
||||||
|
moves to another location or you move to a spot where the marker's
|
||||||
|
location ordinarily wouldn't be seen any more.
|
||||||
|
.
|
||||||
.hn 1
|
.hn 1
|
||||||
Objects
|
Objects
|
||||||
.pg
|
.pg
|
||||||
@@ -2180,6 +2207,30 @@ There are a number
|
|||||||
of monsters in the dungeon that may be influenced by the amount of gold
|
of monsters in the dungeon that may be influenced by the amount of gold
|
||||||
you are carrying (shopkeepers aside).
|
you are carrying (shopkeepers aside).
|
||||||
.
|
.
|
||||||
|
.hn 2
|
||||||
|
Persistence of Objects
|
||||||
|
.pg
|
||||||
|
Normally, if you have seen an object at a particular map location and
|
||||||
|
move to another location which can't directly see that object any
|
||||||
|
more, if will continue to be displayed on your map.
|
||||||
|
That remains the case even if it is not actually there any more \(em
|
||||||
|
perhaps a monster has picked it up or it has rotted away \(em
|
||||||
|
until you can see or feel that location again.
|
||||||
|
One notable exception is that if the object gets covered by the
|
||||||
|
``remembered, unseen monster'' marker and that marker is later removed
|
||||||
|
after you've verified that no monster is there, you will forget that
|
||||||
|
there was any object there regardless of whether the unseen monster
|
||||||
|
actually took the object.
|
||||||
|
If the object is still there, then once you see or feel that location
|
||||||
|
again you will re-discover the object and resume remembering it.
|
||||||
|
.pg
|
||||||
|
The situation is the same for a pile of objects, except that only the
|
||||||
|
top item of the pile is displayed.
|
||||||
|
The
|
||||||
|
.op hilite_pile
|
||||||
|
option can be enabled in order to show an item differently when is
|
||||||
|
the top one of a pile.
|
||||||
|
.
|
||||||
.hn 1
|
.hn 1
|
||||||
Conduct
|
Conduct
|
||||||
.pg
|
.pg
|
||||||
@@ -2431,7 +2482,7 @@ by the function that handles wishing.
|
|||||||
.pg
|
.pg
|
||||||
Example:
|
Example:
|
||||||
.sd
|
.sd
|
||||||
\fBWIZKIT=~/wizkit.txt\fP
|
\fBWIZKIT=\(ti/wizkit.txt\fP \" \(ti == '~'
|
||||||
.ed
|
.ed
|
||||||
.lp SOUNDDIR
|
.lp SOUNDDIR
|
||||||
Define the directory that contains the sound files.
|
Define the directory that contains the sound files.
|
||||||
@@ -2741,11 +2792,11 @@ Default '-'.
|
|||||||
.lp menu_deselect_page
|
.lp menu_deselect_page
|
||||||
Menu character accelerator to deselect all items on this page of a menu.
|
Menu character accelerator to deselect all items on this page of a menu.
|
||||||
Implemented by the Amiga, Gem and tty ports.
|
Implemented by the Amiga, Gem and tty ports.
|
||||||
Default '\e'.
|
Default '\\'.
|
||||||
.lp menu_first_page
|
.lp menu_first_page
|
||||||
Menu character accelerator to jump to the first page in a menu.
|
Menu character accelerator to jump to the first page in a menu.
|
||||||
Implemented by the Amiga, Gem and tty ports.
|
Implemented by the Amiga, Gem and tty ports.
|
||||||
Default '^'.
|
Default '\(ha'.
|
||||||
.lp menu_headings
|
.lp menu_headings
|
||||||
Controls how the headings in a menu are highlighted.
|
Controls how the headings in a menu are highlighted.
|
||||||
Values are 'none', 'bold', 'dim', 'underline', 'blink', or 'inverse'.
|
Values are 'none', 'bold', 'dim', 'underline', 'blink', or 'inverse'.
|
||||||
@@ -2757,7 +2808,7 @@ Default '@'.
|
|||||||
.lp menu_invert_page
|
.lp menu_invert_page
|
||||||
Menu character accelerator to invert all items on this page of a menu.
|
Menu character accelerator to invert all items on this page of a menu.
|
||||||
Implemented by the Amiga, Gem and tty ports.
|
Implemented by the Amiga, Gem and tty ports.
|
||||||
Default '~'.
|
Default '\(ti'. \" ~
|
||||||
.lp menu_last_page
|
.lp menu_last_page
|
||||||
Menu character accelerator to jump to the last page in a menu.
|
Menu character accelerator to jump to the last page in a menu.
|
||||||
Implemented by the Amiga, Gem and tty ports.
|
Implemented by the Amiga, Gem and tty ports.
|
||||||
@@ -2810,9 +2861,9 @@ defaults to `full'), or it can be negated (which defaults to `single').
|
|||||||
Set your character's name (defaults to your user name). You can also
|
Set your character's name (defaults to your user name). You can also
|
||||||
set your character's role by appending a dash and one or more letters of
|
set your character's role by appending a dash and one or more letters of
|
||||||
the role (that is, by suffixing one of
|
the role (that is, by suffixing one of
|
||||||
.op "-A -B -C -H -K -M -P -Ra -Ro -S -T -V -W" ).
|
.op "\-A \-B \-C \-H \-K \-M \-P \-Ra \-Ro \-S \-T \-V \-W" ).
|
||||||
If
|
If
|
||||||
.op "-@"
|
.op "\-@"
|
||||||
is used for the role, then a random one will be automatically chosen.
|
is used for the role, then a random one will be automatically chosen.
|
||||||
Cannot be set with the `O' command.
|
Cannot be set with the `O' command.
|
||||||
.lp "news "
|
.lp "news "
|
||||||
@@ -3033,7 +3084,7 @@ Persistent.
|
|||||||
Display a sparkly effect when a monster (including yourself) is hit by an
|
Display a sparkly effect when a monster (including yourself) is hit by an
|
||||||
attack to which it is resistant (default on). Persistent.
|
attack to which it is resistant (default on). Persistent.
|
||||||
.lp standout
|
.lp standout
|
||||||
Boldface monsters and ``\fB--More--\fP'' (default off). Persistent.
|
Boldface monsters and ``\fB\-\-More\-\-\fP'' (default off). Persistent.
|
||||||
.lp statushilites
|
.lp statushilites
|
||||||
Controls how many turns status hilite behaviors highlight
|
Controls how many turns status hilite behaviors highlight
|
||||||
the field. If negated or set to zero, disables status hiliting.
|
the field. If negated or set to zero, disables status hiliting.
|
||||||
@@ -3785,14 +3836,14 @@ Set the name of the symbol set that you want to load for display
|
|||||||
on the rogue level.
|
on the rogue level.
|
||||||
.pg
|
.pg
|
||||||
You can also override one or more symbols using the SYMBOLS config
|
You can also override one or more symbols using the SYMBOLS config
|
||||||
file option. Symbols are specified as name:value pairs. Note that
|
file option. Symbols are specified as name:value pairs.
|
||||||
|
Note that
|
||||||
NetHack escape-processes the value string in conventional C fashion.
|
NetHack escape-processes the value string in conventional C fashion.
|
||||||
This means that \e is a prefix to take the following character literally. Thus
|
This means that \\ is a prefix to take the following character literally.
|
||||||
\e needs to be represented as \e\e.
|
Thus \\ needs to be represented as \\\\.
|
||||||
The special escape form
|
The special prefix form \\m switches on the meta bit in the symbol value,
|
||||||
\em switches on the meta bit in the symbol value, and the \e^ prefix causes the
|
and the \(ha prefix causes the following character to be treated as a
|
||||||
following character to be treated as a control
|
control character.
|
||||||
character.
|
|
||||||
.pg
|
.pg
|
||||||
.TS S
|
.TS S
|
||||||
center;
|
center;
|
||||||
@@ -3810,30 +3861,30 @@ Default Symbol Name Description
|
|||||||
\(dq S_amulet (amulet)
|
\(dq S_amulet (amulet)
|
||||||
A S_angel (angelic being)
|
A S_angel (angelic being)
|
||||||
a S_ant (ant or other insect)
|
a S_ant (ant or other insect)
|
||||||
^ S_anti_magic_trap (anti-magic field)
|
\(ha S_anti_magic_trap (anti-magic field)
|
||||||
[ S_armor (suit or piece of armor)
|
[ S_armor (suit or piece of armor)
|
||||||
[ S_armour (suit or piece of armor)
|
[ S_armour (suit or piece of armor)
|
||||||
^ S_arrow_trap (arrow trap)
|
\(ha S_arrow_trap (arrow trap)
|
||||||
0 S_ball (iron ball)
|
0 S_ball (iron ball)
|
||||||
# S_bars (iron bars)
|
# S_bars (iron bars)
|
||||||
B S_bat (bat or bird)
|
B S_bat (bat or bird)
|
||||||
^ S_bear_trap (bear trap)
|
\(ha S_bear_trap (bear trap)
|
||||||
- S_blcorn (bottom left corner)
|
\- S_blcorn (bottom left corner)
|
||||||
b S_blob (blob)
|
b S_blob (blob)
|
||||||
+ S_book (spellbook)
|
+ S_book (spellbook)
|
||||||
) S_boomleft (boomerang open left)
|
) S_boomleft (boomerang open left)
|
||||||
( S_boomright (boomerang open right)
|
( S_boomright (boomerang open right)
|
||||||
\` S_boulder (boulder)
|
\` S_boulder (boulder)
|
||||||
- S_brcorn (bottom right corner)
|
\- S_brcorn (bottom right corner)
|
||||||
C S_centaur (centaur)
|
C S_centaur (centaur)
|
||||||
\&_ S_chain (iron chain)
|
\&_ S_chain (iron chain)
|
||||||
# S_cloud (cloud)
|
# S_cloud (cloud)
|
||||||
c S_cockatrice (cockatrice)
|
c S_cockatrice (cockatrice)
|
||||||
$ S_coin (pile of coins)
|
$ S_coin (pile of coins)
|
||||||
# S_corr (corridor)
|
# S_corr (corridor)
|
||||||
- S_crwall (wall)
|
\- S_crwall (wall)
|
||||||
# S_darkroom (dark room)
|
# S_darkroom (dark room)
|
||||||
^ S_dart_trap (dart trap)
|
\(ha S_dart_trap (dart trap)
|
||||||
& S_demon (major demon)
|
& S_demon (major demon)
|
||||||
* S_digbeam (dig beam)
|
* S_digbeam (dig beam)
|
||||||
> S_dnladder (ladder down)
|
> S_dnladder (ladder down)
|
||||||
@@ -3843,18 +3894,18 @@ D S_dragon (dragon)
|
|||||||
; S_eel (sea monster)
|
; S_eel (sea monster)
|
||||||
E S_elemental (elemental)
|
E S_elemental (elemental)
|
||||||
/ S_explode1 (explosion top left)
|
/ S_explode1 (explosion top left)
|
||||||
- S_explode2 (explosion top center)
|
\- S_explode2 (explosion top center)
|
||||||
\\ S_explode3 (explosion top right)
|
\\ S_explode3 (explosion top right)
|
||||||
| S_explode4 (explosion middle left)
|
| S_explode4 (explosion middle left)
|
||||||
\ S_explode5 (explosion middle center)
|
\ S_explode5 (explosion middle center)
|
||||||
| S_explode6 (explosion middle right)
|
| S_explode6 (explosion middle right)
|
||||||
\\ S_explode7 (explosion bottom left)
|
\\ S_explode7 (explosion bottom left)
|
||||||
- S_explode8 (explosion bottom center)
|
\- S_explode8 (explosion bottom center)
|
||||||
/ S_explode9 (explosion bottom right)
|
/ S_explode9 (explosion bottom right)
|
||||||
e S_eye (eye or sphere)
|
e S_eye (eye or sphere)
|
||||||
^ S_falling_rock_trap (falling rock trap)
|
\(ha S_falling_rock_trap (falling rock trap)
|
||||||
f S_feline (cat or other feline)
|
f S_feline (cat or other feline)
|
||||||
^ S_fire_trap (fire trap)
|
\(ha S_fire_trap (fire trap)
|
||||||
! S_flashbeam (flash beam)
|
! S_flashbeam (flash beam)
|
||||||
% S_food (piece of food)
|
% S_food (piece of food)
|
||||||
{ S_fountain (fountain)
|
{ S_fountain (fountain)
|
||||||
@@ -3866,15 +3917,15 @@ G S_gnome (gnome)
|
|||||||
' S_golem (golem)
|
' S_golem (golem)
|
||||||
| S_grave (grave)
|
| S_grave (grave)
|
||||||
g S_gremlin (gremlin)
|
g S_gremlin (gremlin)
|
||||||
- S_hbeam (horizontal beam [zap animation])
|
\- S_hbeam (horizontal beam [zap animation])
|
||||||
# S_hcdbridge (horizontal raised drawbridge)
|
# S_hcdbridge (horizontal raised drawbridge)
|
||||||
+ S_hcdoor (closed door in horizontal wall)
|
+ S_hcdoor (closed door in horizontal wall)
|
||||||
\. S_hodbridge (horizontal lowered drawbridge)
|
\. S_hodbridge (horizontal lowered drawbridge)
|
||||||
| S_hodoor (open door in horizontal wall)
|
| S_hodoor (open door in horizontal wall)
|
||||||
^ S_hole (hole)
|
\(ha S_hole (hole)
|
||||||
@ S_human (human or elf)
|
@ S_human (human or elf)
|
||||||
h S_humanoid (humanoid)
|
h S_humanoid (humanoid)
|
||||||
- S_hwall (horizontal wall)
|
\- S_hwall (horizontal wall)
|
||||||
\. S_ice (ice)
|
\. S_ice (ice)
|
||||||
i S_imp (imp or minor demon)
|
i S_imp (imp or minor demon)
|
||||||
I S_invisible (invisible monster)
|
I S_invisible (invisible monster)
|
||||||
@@ -3882,17 +3933,17 @@ J S_jabberwock (jabberwock)
|
|||||||
j S_jelly (jelly)
|
j S_jelly (jelly)
|
||||||
k S_kobold (kobold)
|
k S_kobold (kobold)
|
||||||
K S_kop (Keystone Kop)
|
K S_kop (Keystone Kop)
|
||||||
^ S_land_mine (land mine)
|
\(ha S_land_mine (land mine)
|
||||||
} S_lava (molten lava)
|
} S_lava (molten lava)
|
||||||
l S_leprechaun (leprechaun)
|
l S_leprechaun (leprechaun)
|
||||||
^ S_level_teleporter (level teleporter)
|
\(ha S_level_teleporter (level teleporter)
|
||||||
L S_lich (lich)
|
L S_lich (lich)
|
||||||
y S_light (light)
|
y S_light (light)
|
||||||
# S_litcorr (lit corridor)
|
# S_litcorr (lit corridor)
|
||||||
: S_lizard (lizard)
|
: S_lizard (lizard)
|
||||||
\\ S_lslant (diagonal beam [zap animation])
|
\\ S_lslant (diagonal beam [zap animation])
|
||||||
^ S_magic_portal (magic portal)
|
\(ha S_magic_portal (magic portal)
|
||||||
^ S_magic_trap (magic trap)
|
\(ha S_magic_trap (magic trap)
|
||||||
m S_mimic (mimic)
|
m S_mimic (mimic)
|
||||||
] S_mimic_def (mimic)
|
] S_mimic_def (mimic)
|
||||||
M S_mummy (mummy)
|
M S_mummy (mummy)
|
||||||
@@ -3902,9 +3953,9 @@ n S_nymph (nymph)
|
|||||||
O S_ogre (ogre)
|
O S_ogre (ogre)
|
||||||
o S_orc (orc)
|
o S_orc (orc)
|
||||||
p S_piercer (piercer)
|
p S_piercer (piercer)
|
||||||
^ S_pit (pit)
|
\(ha S_pit (pit)
|
||||||
# S_poisoncloud (poison cloud)
|
# S_poisoncloud (poison cloud)
|
||||||
^ S_polymorph_trap (polymorph trap)
|
\(ha S_polymorph_trap (polymorph trap)
|
||||||
} S_pool (water)
|
} S_pool (water)
|
||||||
! S_potion (potion)
|
! S_potion (potion)
|
||||||
P S_pudding (pudding or ooze)
|
P S_pudding (pudding or ooze)
|
||||||
@@ -3913,46 +3964,46 @@ Q S_quantmech (quantum mechanic)
|
|||||||
\&= S_ring (ring)
|
\&= S_ring (ring)
|
||||||
\` S_rock (boulder or statue)
|
\` S_rock (boulder or statue)
|
||||||
r S_rodent (rodent)
|
r S_rodent (rodent)
|
||||||
^ S_rolling_boulder_trap (rolling boulder trap)
|
\(ha S_rolling_boulder_trap (rolling boulder trap)
|
||||||
\. S_room (floor of a room)
|
\. S_room (floor of a room)
|
||||||
/ S_rslant (diagonal beam [zap animation])
|
/ S_rslant (diagonal beam [zap animation])
|
||||||
^ S_rust_trap (rust trap)
|
\(ha S_rust_trap (rust trap)
|
||||||
R S_rustmonst (rust monster or disenchanter)
|
R S_rustmonst (rust monster or disenchanter)
|
||||||
? S_scroll (scroll)
|
? S_scroll (scroll)
|
||||||
# S_sink (sink)
|
# S_sink (sink)
|
||||||
^ S_sleeping_gas_trap (sleeping gas trap)
|
\(ha S_sleeping_gas_trap (sleeping gas trap)
|
||||||
S S_snake (snake)
|
S S_snake (snake)
|
||||||
s S_spider (arachnid or centipede)
|
s S_spider (arachnid or centipede)
|
||||||
^ S_spiked_pit (spiked pit)
|
\(ha S_spiked_pit (spiked pit)
|
||||||
^ S_squeaky_board (squeaky board)
|
\(ha S_squeaky_board (squeaky board)
|
||||||
0 S_ss1 (magic shield 1 of 4)
|
0 S_ss1 (magic shield 1 of 4)
|
||||||
# S_ss2 (magic shield 2 of 4)
|
# S_ss2 (magic shield 2 of 4)
|
||||||
@ S_ss3 (magic shield 3 of 4)
|
@ S_ss3 (magic shield 3 of 4)
|
||||||
* S_ss4 (magic shield 4 of 4)
|
* S_ss4 (magic shield 4 of 4)
|
||||||
^ S_statue_trap (statue trap)
|
\(ha S_statue_trap (statue trap)
|
||||||
\ S_stone (dark part of a room)
|
\ S_stone (dark part of a room)
|
||||||
] S_strange_obj (strange object)
|
] S_strange_obj (strange object)
|
||||||
- S_sw_bc (swallow bottom center)
|
\- S_sw_bc (swallow bottom center)
|
||||||
\\ S_sw_bl (swallow bottom left)
|
\\ S_sw_bl (swallow bottom left)
|
||||||
/ S_sw_br (swallow bottom right)
|
/ S_sw_br (swallow bottom right)
|
||||||
| S_sw_ml (swallow middle left)
|
| S_sw_ml (swallow middle left)
|
||||||
| S_sw_mr (swallow middle right)
|
| S_sw_mr (swallow middle right)
|
||||||
- S_sw_tc (swallow top center)
|
\- S_sw_tc (swallow top center)
|
||||||
/ S_sw_tl (swallow top left)
|
/ S_sw_tl (swallow top left)
|
||||||
\\ S_sw_tr (swallow top right)
|
\\ S_sw_tr (swallow top right)
|
||||||
- S_tdwall (wall)
|
\- S_tdwall (wall)
|
||||||
^ S_teleportation_trap (teleportation trap)
|
\(ha S_teleportation_trap (teleportation trap)
|
||||||
\\ S_throne (opulent throne)
|
\\ S_throne (opulent throne)
|
||||||
- S_tlcorn (top left corner)
|
\- S_tlcorn (top left corner)
|
||||||
| S_tlwall (wall)
|
| S_tlwall (wall)
|
||||||
( S_tool (useful item (pick-axe\, key\, lamp...))
|
( S_tool (useful item (pick-axe\, key\, lamp...))
|
||||||
^ S_trap_door (trap door)
|
\(ha S_trap_door (trap door)
|
||||||
t S_trapper (trapper or lurker above)
|
t S_trapper (trapper or lurker above)
|
||||||
- S_trcorn (top right corner)
|
\- S_trcorn (top right corner)
|
||||||
# S_tree (tree)
|
# S_tree (tree)
|
||||||
T S_troll (troll)
|
T S_troll (troll)
|
||||||
| S_trwall (wall)
|
| S_trwall (wall)
|
||||||
- S_tuwall (wall)
|
\- S_tuwall (wall)
|
||||||
U S_umber (umber hulk)
|
U S_umber (umber hulk)
|
||||||
u S_unicorn (unicorn or horse)
|
u S_unicorn (unicorn or horse)
|
||||||
< S_upladder (ladder up)
|
< S_upladder (ladder up)
|
||||||
@@ -3962,9 +4013,9 @@ V S_vampire (vampire)
|
|||||||
# S_vcdbridge (vertical raised drawbridge)
|
# S_vcdbridge (vertical raised drawbridge)
|
||||||
+ S_vcdoor (closed door in vertical wall)
|
+ S_vcdoor (closed door in vertical wall)
|
||||||
\. S_venom (splash of venom)
|
\. S_venom (splash of venom)
|
||||||
^ S_vibrating_square (vibrating square)
|
\(ha S_vibrating_square (vibrating square)
|
||||||
\. S_vodbridge (vertical lowered drawbridge)
|
\. S_vodbridge (vertical lowered drawbridge)
|
||||||
- S_vodoor (open door in vertical wall)
|
\- S_vodoor (open door in vertical wall)
|
||||||
v S_vortex (vortex)
|
v S_vortex (vortex)
|
||||||
| S_vwall (vertical wall)
|
| S_vwall (vertical wall)
|
||||||
/ S_wand (wand)
|
/ S_wand (wand)
|
||||||
@@ -3972,7 +4023,7 @@ v S_vortex (vortex)
|
|||||||
) S_weapon (weapon)
|
) S_weapon (weapon)
|
||||||
\(dq S_web (web)
|
\(dq S_web (web)
|
||||||
w S_worm (worm)
|
w S_worm (worm)
|
||||||
~ S_worm_tail (long worm tail)
|
\(ti S_worm_tail (long worm tail)
|
||||||
W S_wraith (wraith)
|
W S_wraith (wraith)
|
||||||
x S_xan (xan or other mythical/fantastic insect)
|
x S_xan (xan or other mythical/fantastic insect)
|
||||||
X S_xorn (xorn)
|
X S_xorn (xorn)
|
||||||
@@ -3982,6 +4033,13 @@ z S_zruty (zruty)
|
|||||||
.\"TABLE_END Do not delete this line.
|
.\"TABLE_END Do not delete this line.
|
||||||
.TE
|
.TE
|
||||||
.pg
|
.pg
|
||||||
|
There is one additional class of object, described as ``strange object'',
|
||||||
|
which will occasionally be the shape taken on by mimics and shown as `]'
|
||||||
|
for maps displayed as text characters.
|
||||||
|
Although the displayed character is the same as the default value for
|
||||||
|
`S_mimic_def', it is a different symbol and there is no corresponding
|
||||||
|
`S_strange_object' symbol nor any way to assign an alternate value for it.
|
||||||
|
.pg
|
||||||
.hn 2
|
.hn 2
|
||||||
Configuring NetHack for Play by the Blind
|
Configuring NetHack for Play by the Blind
|
||||||
.pg
|
.pg
|
||||||
@@ -4162,7 +4220,7 @@ live, or quit and stop with whatever you have. If you quit, you keep
|
|||||||
all your gold, but if you swing and live, you might find more.
|
all your gold, but if you swing and live, you might find more.
|
||||||
.pg
|
.pg
|
||||||
If you just want to see what the current top players/games list is, you
|
If you just want to see what the current top players/games list is, you
|
||||||
can type \fBnethack -s all\fP on most versions.
|
can type \fBnethack \-s all\fP on most versions.
|
||||||
.
|
.
|
||||||
.hn 1
|
.hn 1
|
||||||
Explore mode
|
Explore mode
|
||||||
@@ -4175,7 +4233,7 @@ paltry cost of not getting on the high score list.
|
|||||||
.pg
|
.pg
|
||||||
There are two ways of enabling explore mode. One is to start the game
|
There are two ways of enabling explore mode. One is to start the game
|
||||||
with the
|
with the
|
||||||
.op -X
|
.op \-X
|
||||||
command-line switch or with the
|
command-line switch or with the
|
||||||
.op playmode:explore
|
.op playmode:explore
|
||||||
option. The other is to issue the ``#exploremode'' extended command while
|
option. The other is to issue the ``#exploremode'' extended command while
|
||||||
@@ -4192,7 +4250,7 @@ brief description. It is intended for tracking down problems within the
|
|||||||
program rather than to provide god-like powers to your character, and
|
program rather than to provide god-like powers to your character, and
|
||||||
players who attempt debugging are expected to figure out how to use it
|
players who attempt debugging are expected to figure out how to use it
|
||||||
themselves. It is initiated by starting the game with the
|
themselves. It is initiated by starting the game with the
|
||||||
.op -D
|
.op \-D
|
||||||
command-line switch or with the
|
command-line switch or with the
|
||||||
.op playmode:debug
|
.op playmode:debug
|
||||||
option.
|
option.
|
||||||
|
|||||||
+62
-5
@@ -45,7 +45,7 @@
|
|||||||
%.au
|
%.au
|
||||||
\author{Original version - Eric S. Raymond\\
|
\author{Original version - Eric S. Raymond\\
|
||||||
(Edited and expanded for 3.6 by Mike Stephenson and others)}
|
(Edited and expanded for 3.6 by Mike Stephenson and others)}
|
||||||
\date{April 19, 2018}
|
\date{April 23, 2018}
|
||||||
|
|
||||||
\maketitle
|
\maketitle
|
||||||
|
|
||||||
@@ -1028,7 +1028,7 @@ May be preceded by `{\tt m}' to force a selection menu.
|
|||||||
Toggle the {\it autopickup\/} option on and off.
|
Toggle the {\it autopickup\/} option on and off.
|
||||||
%.lp
|
%.lp
|
||||||
\item[\tb{\^{}}]
|
\item[\tb{\^{}}]
|
||||||
Ask for the type of a trap you found earlier.
|
Ask for the type of an adjacent trap you found earlier.
|
||||||
%.lp
|
%.lp
|
||||||
\item[\tb{)}]
|
\item[\tb{)}]
|
||||||
Tell what weapon you are wielding.
|
Tell what weapon you are wielding.
|
||||||
@@ -1364,7 +1364,7 @@ List and reorder known spells. Default key is '{\tt +}'.
|
|||||||
Show the tools currently in use. Default key is '{\tt (}'.
|
Show the tools currently in use. Default key is '{\tt (}'.
|
||||||
%.lp
|
%.lp
|
||||||
\item[\tb{\#seetrap}]
|
\item[\tb{\#seetrap}]
|
||||||
Show the type of a trap near you. Default key is '{\tt \^{}}'.
|
Show the type of an adjacent trap. Default key is '{\tt \^{}}'.
|
||||||
%.lp
|
%.lp
|
||||||
\item[\tb{\#seeweapon}]
|
\item[\tb{\#seeweapon}]
|
||||||
Show the weapon currently wielded. Default key is '{\tt )}'.
|
Show the weapon currently wielded. Default key is '{\tt )}'.
|
||||||
@@ -1915,6 +1915,26 @@ however, they are likely to be cursed. Beware of whatever killed the
|
|||||||
former player; it is probably still lurking around, gloating over its
|
former player; it is probably still lurking around, gloating over its
|
||||||
last victory.
|
last victory.
|
||||||
|
|
||||||
|
%.hn 2
|
||||||
|
\subsection*{Persistence of Monsters}
|
||||||
|
|
||||||
|
%.pg
|
||||||
|
Monsters (a generic reference which also includes humans and pets) are only
|
||||||
|
shown while they can be seen or otherwise sensed.
|
||||||
|
Moving to a location where you can't see or sense a monster any more
|
||||||
|
will result in it disappearing from your map, similarly if it is the
|
||||||
|
one who moved rather than you.
|
||||||
|
|
||||||
|
%.pg
|
||||||
|
However, if you encounter a monster which you can't see or sense--
|
||||||
|
perhaps it is invisible and has just tapped you on the noggin--
|
||||||
|
a special ``remembered, unseen monster'' marker will be displayed at
|
||||||
|
the location where you think it is.
|
||||||
|
That will persist until you have
|
||||||
|
proven that there is no monster there, even if the unseen monster
|
||||||
|
moves to another location or you move to a spot where the marker's
|
||||||
|
location ordinarily wouldn't be seen any more.
|
||||||
|
|
||||||
%.hn 1
|
%.hn 1
|
||||||
\section{Objects}
|
\section{Objects}
|
||||||
|
|
||||||
@@ -2545,6 +2565,32 @@ There are a number
|
|||||||
of monsters in the dungeon that may be influenced by the amount of gold
|
of monsters in the dungeon that may be influenced by the amount of gold
|
||||||
you are carrying (shopkeepers aside).
|
you are carrying (shopkeepers aside).
|
||||||
|
|
||||||
|
%.hn 2
|
||||||
|
\subsection*{Persistence of Objects}
|
||||||
|
|
||||||
|
%.pg
|
||||||
|
Normally, if you have seen an object at a particular map location and
|
||||||
|
move to another location which can't directly see that object any
|
||||||
|
more, if will continue to be displayed on your map.
|
||||||
|
That remains the case even if it is not actually there any more--
|
||||||
|
perhaps a monster has picked it up or it has rotted away--
|
||||||
|
until you can see or feel that location again.
|
||||||
|
One notable exception is that if the object gets covered by the
|
||||||
|
``remembered, unseen monster'' marker and that marker is later removed
|
||||||
|
after you've verified that no monster is there, you will forget that
|
||||||
|
there was any object there regardless of whether the unseen monster
|
||||||
|
actually took the object.
|
||||||
|
If the object is still there, then once you see or feel that location
|
||||||
|
again you will re-discover the object and resume remembering it.
|
||||||
|
|
||||||
|
%.pg
|
||||||
|
The situation is the same for a pile of objects, except that only the
|
||||||
|
top item of the pile is displayed.
|
||||||
|
The
|
||||||
|
{\it hilite\verb+_+pile\/}
|
||||||
|
option can be enabled in order to show an item differently when is
|
||||||
|
the top one of a pile.
|
||||||
|
|
||||||
%.hn 1
|
%.hn 1
|
||||||
\section{Conduct}
|
\section{Conduct}
|
||||||
|
|
||||||
@@ -4443,7 +4489,7 @@ file option. Symbols are specified as {\it name:value\/} pairs. Note that
|
|||||||
{\it NetHack\/} escape-processes the {\it value\/} string in conventional C
|
{\it NetHack\/} escape-processes the {\it value\/} string in conventional C
|
||||||
fashion. This means that `\verb+\+' is a prefix to take the following
|
fashion. This means that `\verb+\+' is a prefix to take the following
|
||||||
character literally. Thus `\verb+\+' needs to be represented as `\verb+\\+'.
|
character literally. Thus `\verb+\+' needs to be represented as `\verb+\\+'.
|
||||||
The special escape form
|
The special prefix
|
||||||
`\verb+\m+' switches on the meta bit in the symbol value, and the
|
`\verb+\m+' switches on the meta bit in the symbol value, and the
|
||||||
`{\tt \^{}}' prefix causes the following character to be treated as a control
|
`{\tt \^{}}' prefix causes the following character to be treated as a control
|
||||||
character.
|
character.
|
||||||
@@ -4632,7 +4678,18 @@ Default & Symbol Name & Description\\
|
|||||||
\end{longtable}%
|
\end{longtable}%
|
||||||
}
|
}
|
||||||
|
|
||||||
%.lp
|
%.pg
|
||||||
|
There is one additional class of object, described as ``strange object'',
|
||||||
|
which will occasionally be the shape taken on by mimics and shown as
|
||||||
|
`{\tt \verb+]+}'
|
||||||
|
for maps displayed as text characters.
|
||||||
|
Although the displayed character is the same as the default value for
|
||||||
|
`S\verb+_+mimic\verb+_+def', it is a different symbol and there is no
|
||||||
|
corresponding
|
||||||
|
`S\verb+_+strange\verb+_+object' symbol nor any way to assign an
|
||||||
|
alternate value for it.
|
||||||
|
|
||||||
|
%.pg
|
||||||
%.hn 2
|
%.hn 2
|
||||||
\subsection*{Configuring {\it NetHack\/} for Play by the Blind}
|
\subsection*{Configuring {\it NetHack\/} for Play by the Blind}
|
||||||
|
|
||||||
|
|||||||
+5372
-4218
File diff suppressed because it is too large
Load Diff
@@ -540,6 +540,8 @@ wizard mode 'sanity_check' gave spurious "mon not on map" warnings when mounted
|
|||||||
at the prompt for entering a level annotation, responding with <return>
|
at the prompt for entering a level annotation, responding with <return>
|
||||||
erroneously removed old annotation; use <space><return> to do that
|
erroneously removed old annotation; use <space><return> to do that
|
||||||
reorder the #droptype menu and add some separator lines
|
reorder the #droptype menu and add some separator lines
|
||||||
|
moving from a pit to an adjacent pit with uncleared debris shouldn't be a fall
|
||||||
|
open drawbridge spanning ice would vanish if the ice melted
|
||||||
|
|
||||||
|
|
||||||
Fixes to Post-3.6.0 Problems that Were Exposed Via git Repository
|
Fixes to Post-3.6.0 Problems that Were Exposed Via git Repository
|
||||||
|
|||||||
+2
-2
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 sp_lev.h $NHDT-Date: 1501803105 2017/08/03 23:31:45 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.21 $ */
|
/* NetHack 3.6 sp_lev.h $NHDT-Date: 1524287214 2018/04/21 05:06:54 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.23 $ */
|
||||||
/* Copyright (c) 1989 by Jean-Christophe Collet */
|
/* Copyright (c) 1989 by Jean-Christophe Collet */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
@@ -351,7 +351,7 @@ typedef struct {
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
packed_coord coord;
|
packed_coord coord;
|
||||||
xchar x, y, type;
|
xchar x, y, type;
|
||||||
} trap;
|
} spltrap;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
Str_or_Len name, appear_as;
|
Str_or_Len name, appear_as;
|
||||||
|
|||||||
+1
-1
@@ -738,7 +738,7 @@ STATIC_DCL void
|
|||||||
interrupt_multi(msg)
|
interrupt_multi(msg)
|
||||||
const char *msg;
|
const char *msg;
|
||||||
{
|
{
|
||||||
if (multi > 0 && !context.travel) {
|
if (multi > 0 && !context.travel && !context.run) {
|
||||||
nomul(0);
|
nomul(0);
|
||||||
if (flags.verbose && msg)
|
if (flags.verbose && msg)
|
||||||
Norep("%s", msg);
|
Norep("%s", msg);
|
||||||
|
|||||||
@@ -1278,6 +1278,7 @@ wiz_intrinsic(VOID_ARGS)
|
|||||||
}
|
}
|
||||||
if (n >= 1)
|
if (n >= 1)
|
||||||
free((genericptr_t) pick_list);
|
free((genericptr_t) pick_list);
|
||||||
|
doredraw();
|
||||||
} else
|
} else
|
||||||
pline("Unavailable command '%s'.",
|
pline("Unavailable command '%s'.",
|
||||||
visctrl((int) cmd_from_func(wiz_intrinsic)));
|
visctrl((int) cmd_from_func(wiz_intrinsic)));
|
||||||
|
|||||||
+25
-1
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 files.c $NHDT-Date: 1503309020 2017/08/21 09:50:20 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.215 $ */
|
/* NetHack 3.6 files.c $NHDT-Date: 1524413723 2018/04/22 16:15:23 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.235 $ */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
@@ -3469,6 +3469,30 @@ const char *dir UNUSED_if_not_OS2_CODEVIEW;
|
|||||||
Strcpy(tmp, RECORD);
|
Strcpy(tmp, RECORD);
|
||||||
fq_record = fqname(RECORD, SCOREPREFIX, 0);
|
fq_record = fqname(RECORD, SCOREPREFIX, 0);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef WIN32
|
||||||
|
/* If dir is NULL it indicates create but
|
||||||
|
only if it doesn't already exist */
|
||||||
|
if (!dir) {
|
||||||
|
char buf[BUFSZ];
|
||||||
|
|
||||||
|
buf[0] = '\0';
|
||||||
|
fd = open(fq_record, O_RDWR);
|
||||||
|
if (!(fd == -1 && errno == ENOENT)) {
|
||||||
|
if (fd >= 0) {
|
||||||
|
(void) nhclose(fd);
|
||||||
|
} else {
|
||||||
|
/* explanation for failure other than missing file */
|
||||||
|
Sprintf(buf, "error \"%s\", (errno %d).",
|
||||||
|
fq_record, errno);
|
||||||
|
paniclog("scorefile", buf);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Sprintf(buf, "missing \"%s\", creating new scorefile.",
|
||||||
|
fq_record);
|
||||||
|
paniclog("scorefile", buf);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if ((fd = open(fq_record, O_RDWR)) < 0) {
|
if ((fd = open(fq_record, O_RDWR)) < 0) {
|
||||||
/* try to create empty 'record' */
|
/* try to create empty 'record' */
|
||||||
|
|||||||
+4
-1
@@ -857,8 +857,11 @@ int mode;
|
|||||||
|
|
||||||
if (sobj_at(BOULDER, x, y) && (Sokoban || !Passes_walls)) {
|
if (sobj_at(BOULDER, x, y) && (Sokoban || !Passes_walls)) {
|
||||||
if (!(Blind || Hallucination) && (context.run >= 2)
|
if (!(Blind || Hallucination) && (context.run >= 2)
|
||||||
&& mode != TEST_TRAV)
|
&& mode != TEST_TRAV) {
|
||||||
|
if (mode == DO_MOVE && iflags.mention_walls)
|
||||||
|
pline("A boulder blocks your path.");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
}
|
||||||
if (mode == DO_MOVE) {
|
if (mode == DO_MOVE) {
|
||||||
/* tunneling monsters will chew before pushing */
|
/* tunneling monsters will chew before pushing */
|
||||||
if (tunnels(youmonst.data) && !needspick(youmonst.data)
|
if (tunnels(youmonst.data) && !needspick(youmonst.data)
|
||||||
|
|||||||
+4
-4
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 sp_lev.c $NHDT-Date: 1522701334 2018/04/02 20:35:34 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.97 $ */
|
/* NetHack 3.6 sp_lev.c $NHDT-Date: 1524287226 2018/04/21 05:07:06 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.98 $ */
|
||||||
/* Copyright (c) 1989 by Jean-Christophe Collet */
|
/* Copyright (c) 1989 by Jean-Christophe Collet */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
@@ -69,7 +69,7 @@ STATIC_DCL void FDECL(get_free_room_loc, (schar *, schar *,
|
|||||||
STATIC_DCL boolean FDECL(create_subroom, (struct mkroom *, XCHAR_P, XCHAR_P,
|
STATIC_DCL boolean FDECL(create_subroom, (struct mkroom *, XCHAR_P, XCHAR_P,
|
||||||
XCHAR_P, XCHAR_P, XCHAR_P, XCHAR_P));
|
XCHAR_P, XCHAR_P, XCHAR_P, XCHAR_P));
|
||||||
STATIC_DCL void FDECL(create_door, (room_door *, struct mkroom *));
|
STATIC_DCL void FDECL(create_door, (room_door *, struct mkroom *));
|
||||||
STATIC_DCL void FDECL(create_trap, (trap *, struct mkroom *));
|
STATIC_DCL void FDECL(create_trap, (spltrap *, struct mkroom *));
|
||||||
STATIC_DCL int FDECL(noncoalignment, (ALIGNTYP_P));
|
STATIC_DCL int FDECL(noncoalignment, (ALIGNTYP_P));
|
||||||
STATIC_DCL boolean FDECL(m_bad_boulder_spot, (int, int));
|
STATIC_DCL boolean FDECL(m_bad_boulder_spot, (int, int));
|
||||||
STATIC_DCL int FDECL(pm_to_humidity, (struct permonst *));
|
STATIC_DCL int FDECL(pm_to_humidity, (struct permonst *));
|
||||||
@@ -1486,7 +1486,7 @@ xchar walls; /* any of W_NORTH | W_SOUTH | W_EAST | W_WEST (or W_ANY) */
|
|||||||
*/
|
*/
|
||||||
STATIC_OVL void
|
STATIC_OVL void
|
||||||
create_trap(t, croom)
|
create_trap(t, croom)
|
||||||
trap *t;
|
spltrap *t;
|
||||||
struct mkroom *croom;
|
struct mkroom *croom;
|
||||||
{
|
{
|
||||||
schar x = -1, y = -1;
|
schar x = -1, y = -1;
|
||||||
@@ -3580,7 +3580,7 @@ struct sp_coder *coder;
|
|||||||
static const char nhFunc[] = "spo_trap";
|
static const char nhFunc[] = "spo_trap";
|
||||||
struct opvar *type;
|
struct opvar *type;
|
||||||
struct opvar *tcoord;
|
struct opvar *tcoord;
|
||||||
trap tmptrap;
|
spltrap tmptrap;
|
||||||
|
|
||||||
if (!OV_pop_i(type) || !OV_pop_c(tcoord))
|
if (!OV_pop_i(type) || !OV_pop_c(tcoord))
|
||||||
return;
|
return;
|
||||||
|
|||||||
+39
-13
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 trap.c $NHDT-Date: 1514855666 2018/01/02 01:14:26 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.284 $ */
|
/* NetHack 3.6 trap.c $NHDT-Date: 1524312044 2018/04/21 12:00:44 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.290 $ */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
@@ -31,6 +31,8 @@ STATIC_DCL char *FDECL(trapnote, (struct trap *, BOOLEAN_P));
|
|||||||
STATIC_DCL void FDECL(join_adjacent_pits, (struct trap *));
|
STATIC_DCL void FDECL(join_adjacent_pits, (struct trap *));
|
||||||
#endif
|
#endif
|
||||||
STATIC_DCL void FDECL(clear_conjoined_pits, (struct trap *));
|
STATIC_DCL void FDECL(clear_conjoined_pits, (struct trap *));
|
||||||
|
STATIC_DCL boolean FDECL(adj_nonconjoined_pit, (struct trap *));
|
||||||
|
|
||||||
STATIC_DCL int FDECL(steedintrap, (struct trap *, struct obj *));
|
STATIC_DCL int FDECL(steedintrap, (struct trap *, struct obj *));
|
||||||
STATIC_DCL boolean FDECL(keep_saddle_with_steedcorpse, (unsigned,
|
STATIC_DCL boolean FDECL(keep_saddle_with_steedcorpse, (unsigned,
|
||||||
struct obj *,
|
struct obj *,
|
||||||
@@ -851,7 +853,8 @@ unsigned trflags;
|
|||||||
forcebungle = (trflags & FORCEBUNGLE) != 0,
|
forcebungle = (trflags & FORCEBUNGLE) != 0,
|
||||||
plunged = (trflags & TOOKPLUNGE) != 0,
|
plunged = (trflags & TOOKPLUNGE) != 0,
|
||||||
viasitting = (trflags & VIASITTING) != 0,
|
viasitting = (trflags & VIASITTING) != 0,
|
||||||
adj_pit = conjoined_pits(trap, t_at(u.ux0, u.uy0), TRUE);
|
conj_pit = conjoined_pits(trap, t_at(u.ux0, u.uy0), TRUE),
|
||||||
|
adj_pit = adj_nonconjoined_pit(trap);
|
||||||
int oldumort;
|
int oldumort;
|
||||||
int steed_article = ARTICLE_THE;
|
int steed_article = ARTICLE_THE;
|
||||||
|
|
||||||
@@ -879,10 +882,11 @@ unsigned trflags;
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!Fumbling && ttype != MAGIC_PORTAL && ttype != VIBRATING_SQUARE
|
if (!Fumbling && ttype != MAGIC_PORTAL && ttype != VIBRATING_SQUARE
|
||||||
&& ttype != ANTI_MAGIC && !forcebungle && !plunged && !adj_pit
|
&& ttype != ANTI_MAGIC && !forcebungle && !plunged
|
||||||
|
&& !conj_pit && !adj_pit
|
||||||
&& (!rn2(5) || ((ttype == PIT || ttype == SPIKED_PIT)
|
&& (!rn2(5) || ((ttype == PIT || ttype == SPIKED_PIT)
|
||||||
&& is_clinger(youmonst.data)))) {
|
&& is_clinger(youmonst.data)))) {
|
||||||
You("escape %s %s.", (ttype == ARROW_TRAP && !trap->madeby_u)
|
You("escape %s %s.", (ttype == ARROW_TRAP && !trap->madeby_u)
|
||||||
? "an"
|
? "an"
|
||||||
: a_your[trap->madeby_u],
|
: a_your[trap->madeby_u],
|
||||||
defsyms[trap_to_defsym(ttype)].explanation);
|
defsyms[trap_to_defsym(ttype)].explanation);
|
||||||
@@ -1154,8 +1158,11 @@ unsigned trflags;
|
|||||||
Sprintf(verbbuf, "lead %s",
|
Sprintf(verbbuf, "lead %s",
|
||||||
x_monnam(u.usteed, steed_article, "poor",
|
x_monnam(u.usteed, steed_article, "poor",
|
||||||
SUPPRESS_SADDLE, FALSE));
|
SUPPRESS_SADDLE, FALSE));
|
||||||
} else if (adj_pit) {
|
} else if (conj_pit) {
|
||||||
You("move into an adjacent pit.");
|
You("move into an adjacent pit.");
|
||||||
|
} else if (adj_pit) {
|
||||||
|
You("stumble over debris%s.",
|
||||||
|
!rn2(5) ? " between the pits" : "");
|
||||||
} else {
|
} else {
|
||||||
Strcpy(verbbuf,
|
Strcpy(verbbuf,
|
||||||
!plunged ? "fall" : (Flying ? "dive" : "plunge"));
|
!plunged ? "fall" : (Flying ? "dive" : "plunge"));
|
||||||
@@ -1177,33 +1184,34 @@ unsigned trflags;
|
|||||||
pline("%s %s %s!",
|
pline("%s %s %s!",
|
||||||
upstart(x_monnam(u.usteed, steed_article, "poor",
|
upstart(x_monnam(u.usteed, steed_article, "poor",
|
||||||
SUPPRESS_SADDLE, FALSE)),
|
SUPPRESS_SADDLE, FALSE)),
|
||||||
adj_pit ? "steps" : "lands", predicament);
|
conj_pit ? "steps" : "lands", predicament);
|
||||||
} else
|
} else
|
||||||
You("%s %s!", adj_pit ? "step" : "land", predicament);
|
You("%s %s!", conj_pit ? "step" : "land", predicament);
|
||||||
}
|
}
|
||||||
u.utrap = rn1(6, 2);
|
u.utrap = rn1(6, 2);
|
||||||
u.utraptype = TT_PIT;
|
u.utraptype = TT_PIT;
|
||||||
if (!steedintrap(trap, (struct obj *) 0)) {
|
if (!steedintrap(trap, (struct obj *) 0)) {
|
||||||
if (ttype == SPIKED_PIT) {
|
if (ttype == SPIKED_PIT) {
|
||||||
oldumort = u.umortality;
|
oldumort = u.umortality;
|
||||||
losehp(Maybe_Half_Phys(rnd(adj_pit ? 6 : 10)),
|
losehp(Maybe_Half_Phys(rnd(conj_pit ? 4 : adj_pit ? 6 : 10)),
|
||||||
plunged
|
plunged
|
||||||
? "deliberately plunged into a pit of iron spikes"
|
? "deliberately plunged into a pit of iron spikes"
|
||||||
: adj_pit ? "stepped into a pit of iron spikes"
|
: conj_pit ? "stepped into a pit of iron spikes"
|
||||||
|
: adj_pit ? "stumbled into a pit of iron spikes"
|
||||||
: "fell into a pit of iron spikes",
|
: "fell into a pit of iron spikes",
|
||||||
NO_KILLER_PREFIX);
|
NO_KILLER_PREFIX);
|
||||||
if (!rn2(6))
|
if (!rn2(6))
|
||||||
poisoned("spikes", A_STR,
|
poisoned("spikes", A_STR,
|
||||||
adj_pit ? "stepping on poison spikes"
|
(conj_pit || adj_pit) ? "stepping on poison spikes"
|
||||||
: "fall onto poison spikes",
|
: "fall onto poison spikes",
|
||||||
/* if damage triggered life-saving,
|
/* if damage triggered life-saving,
|
||||||
poison is limited to attrib loss */
|
poison is limited to attrib loss */
|
||||||
(u.umortality > oldumort) ? 0 : 8, FALSE);
|
(u.umortality > oldumort) ? 0 : 8, FALSE);
|
||||||
} else {
|
} else {
|
||||||
/* plunging flyers take spike damage but not pit damage */
|
/* plunging flyers take spike damage but not pit damage */
|
||||||
if (!adj_pit
|
if (!conj_pit
|
||||||
&& !(plunged && (Flying || is_clinger(youmonst.data))))
|
&& !(plunged && (Flying || is_clinger(youmonst.data))))
|
||||||
losehp(Maybe_Half_Phys(rnd(6)),
|
losehp(Maybe_Half_Phys(rnd(adj_pit ? 3 : 6)),
|
||||||
plunged ? "deliberately plunged into a pit"
|
plunged ? "deliberately plunged into a pit"
|
||||||
: "fell into a pit",
|
: "fell into a pit",
|
||||||
NO_KILLER_PREFIX);
|
NO_KILLER_PREFIX);
|
||||||
@@ -1213,7 +1221,7 @@ unsigned trflags;
|
|||||||
ballfall();
|
ballfall();
|
||||||
placebc();
|
placebc();
|
||||||
}
|
}
|
||||||
if (!adj_pit)
|
if (!conj_pit)
|
||||||
selftouch("Falling, you");
|
selftouch("Falling, you");
|
||||||
vision_full_recalc = 1; /* vision limits change */
|
vision_full_recalc = 1; /* vision limits change */
|
||||||
exercise(A_STR, FALSE);
|
exercise(A_STR, FALSE);
|
||||||
@@ -4909,6 +4917,24 @@ struct trap *trap;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean
|
||||||
|
adj_nonconjoined_pit(adjtrap)
|
||||||
|
struct trap *adjtrap;
|
||||||
|
{
|
||||||
|
struct trap *trap_with_u = t_at(u.ux0, u.uy0);
|
||||||
|
|
||||||
|
if (trap_with_u && adjtrap && u.utrap && u.utraptype == TT_PIT &&
|
||||||
|
(trap_with_u->ttyp == PIT || trap_with_u->ttyp == SPIKED_PIT) &&
|
||||||
|
(adjtrap->ttyp == PIT || adjtrap->ttyp == SPIKED_PIT)) {
|
||||||
|
int idx;
|
||||||
|
for (idx = 0; idx < 8; idx++) {
|
||||||
|
if (xdir[idx] == u.dx && ydir[idx] == u.dy)
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
/*
|
/*
|
||||||
* Mark all neighboring pits as conjoined pits.
|
* Mark all neighboring pits as conjoined pits.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 zap.c $NHDT-Date: 1520705645 2018/03/10 18:14:05 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.271 $ */
|
/* NetHack 3.6 zap.c $NHDT-Date: 1524470244 2018/04/23 07:57:24 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.275 $ */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
@@ -4180,7 +4180,7 @@ const char *msg;
|
|||||||
|
|
||||||
if (!msg)
|
if (!msg)
|
||||||
msg = "The ice crackles and melts.";
|
msg = "The ice crackles and melts.";
|
||||||
if (lev->typ == DRAWBRIDGE_UP) {
|
if (lev->typ == DRAWBRIDGE_UP || lev->typ == DRAWBRIDGE_DOWN) {
|
||||||
lev->drawbridgemask &= ~DB_ICE; /* revert to DB_MOAT */
|
lev->drawbridgemask &= ~DB_ICE; /* revert to DB_MOAT */
|
||||||
} else { /* lev->typ == ICE */
|
} else { /* lev->typ == ICE */
|
||||||
#ifdef STUPID
|
#ifdef STUPID
|
||||||
|
|||||||
+2
-1
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 pcmain.c $NHDT-Date: 1457207045 2016/03/05 19:44:05 $ $NHDT-Branch: chasonr $:$NHDT-Revision: 1.69 $ */
|
/* NetHack 3.6 pcmain.c $NHDT-Date: 1524413707 2018/04/22 16:15:07 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.74 $ */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
@@ -307,6 +307,7 @@ _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);*/
|
|||||||
save_getreturn_status = getreturn_enabled;
|
save_getreturn_status = getreturn_enabled;
|
||||||
raw_clear_screen();
|
raw_clear_screen();
|
||||||
getreturn_enabled = TRUE;
|
getreturn_enabled = TRUE;
|
||||||
|
check_recordfile((char *) 0);
|
||||||
#endif
|
#endif
|
||||||
initoptions();
|
initoptions();
|
||||||
|
|
||||||
|
|||||||
@@ -22,11 +22,12 @@ preserving permissions to put the NetHack files in /usr/games/nethack and
|
|||||||
home directory you might perform these steps.
|
home directory you might perform these steps.
|
||||||
% su
|
% su
|
||||||
# cd /
|
# cd /
|
||||||
# tar xpvzf ~yourlogin/nethack-360-linux-X11.tgz
|
# tar xpvzf ~yourlogin/nethack-361-linux-X11.tgz
|
||||||
|
|
||||||
If you have old record and logfile entries from a previous NetHack version,
|
If you have old record and logfile entries from a previous NetHack version,
|
||||||
you might want to save copies before they get overwritten by the new empty
|
you might want to save copies before they get overwritten by the new empty
|
||||||
files; old saved games and bones files from 3.4.x will not work with 3.6.0.
|
files; old saved games and bones files from 3.6.0 should work with 3.6.1
|
||||||
|
but even older saved games and bones files from 3.4.3 will not.
|
||||||
If you are installing from the RPM, there is no need to save the old record
|
If you are installing from the RPM, there is no need to save the old record
|
||||||
and logfile; they are automatically preserved.
|
and logfile; they are automatically preserved.
|
||||||
|
|
||||||
|
|||||||
+3
-2
@@ -1,4 +1,4 @@
|
|||||||
Instructions for Building and Installing NetHack 3.6.0
|
Instructions for Building and Installing NetHack 3.6.1
|
||||||
on a VMS (aka OpenVMS) system
|
on a VMS (aka OpenVMS) system
|
||||||
=========================================
|
=========================================
|
||||||
|
|
||||||
@@ -137,7 +137,8 @@ Notes:
|
|||||||
0. Version 3.5.x was never publicly released.
|
0. Version 3.5.x was never publicly released.
|
||||||
|
|
||||||
1. Save files and bones files from 3.4.x and earlier versions
|
1. Save files and bones files from 3.4.x and earlier versions
|
||||||
will not work with 3.6.0. The scoreboard file (RECORD) from
|
will not work with 3.6.1, but save files and bones file from 3.6.0
|
||||||
|
should work. The scoreboard file (RECORD) from 3.6.0 or
|
||||||
3.4.x or 3.3.x will work.
|
3.4.x or 3.3.x will work.
|
||||||
|
|
||||||
2. To specify user-preference options in your environment, define the
|
2. To specify user-preference options in your environment, define the
|
||||||
|
|||||||
@@ -284,8 +284,8 @@ END
|
|||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 3,5,0,0
|
FILEVERSION 3,6,1,0
|
||||||
PRODUCTVERSION 3,5,0,0
|
PRODUCTVERSION 3,6,1,0
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x9L
|
FILEFLAGS 0x9L
|
||||||
@@ -300,17 +300,17 @@ BEGIN
|
|||||||
BEGIN
|
BEGIN
|
||||||
BLOCK "040904b0"
|
BLOCK "040904b0"
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "Comments", "NetHack 3.6.0 for Windows CE\0"
|
VALUE "Comments", "NetHack 3.6.1 for Windows CE\0"
|
||||||
VALUE "CompanyName", " \0"
|
VALUE "CompanyName", " \0"
|
||||||
VALUE "FileDescription", "nethackm\0"
|
VALUE "FileDescription", "nethackm\0"
|
||||||
VALUE "FileVersion", "3, 5, 0, 0\0"
|
VALUE "FileVersion", "3, 6, 1, 0\0"
|
||||||
VALUE "InternalName", "nethackm\0"
|
VALUE "InternalName", "nethackm\0"
|
||||||
VALUE "LegalCopyright", "Copyright © 1985-2009\0"
|
VALUE "LegalCopyright", "Copyright © 1985-2018\0"
|
||||||
VALUE "LegalTrademarks", "\0"
|
VALUE "LegalTrademarks", "\0"
|
||||||
VALUE "OriginalFilename", "nethackm.exe\0"
|
VALUE "OriginalFilename", "nethackm.exe\0"
|
||||||
VALUE "PrivateBuild", "090914\0"
|
VALUE "PrivateBuild", "090914\0"
|
||||||
VALUE "ProductName", "NetHack\0"
|
VALUE "ProductName", "NetHack\0"
|
||||||
VALUE "ProductVersion", "3, 5, 0, 0\0"
|
VALUE "ProductVersion", "3, 6, 1, 0\0"
|
||||||
VALUE "SpecialBuild", "\0"
|
VALUE "SpecialBuild", "\0"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
|
|||||||
@@ -260,8 +260,8 @@ END
|
|||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 3,5,0,0
|
FILEVERSION 3,6,1,0
|
||||||
PRODUCTVERSION 3,5,0,0
|
PRODUCTVERSION 3,6,1,0
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x9L
|
FILEFLAGS 0x9L
|
||||||
@@ -276,17 +276,17 @@ BEGIN
|
|||||||
BEGIN
|
BEGIN
|
||||||
BLOCK "040904b0"
|
BLOCK "040904b0"
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "Comments", "NetHack 3.6.0 for Smartphone 2002\0"
|
VALUE "Comments", "NetHack 3.6.1 for Smartphone 2002\0"
|
||||||
VALUE "CompanyName", " \0"
|
VALUE "CompanyName", " \0"
|
||||||
VALUE "FileDescription", "nethackm\0"
|
VALUE "FileDescription", "nethackm\0"
|
||||||
VALUE "FileVersion", "3, 5, 0, 0\0"
|
VALUE "FileVersion", "3, 6, 1, 0\0"
|
||||||
VALUE "InternalName", "nethackm\0"
|
VALUE "InternalName", "nethackm\0"
|
||||||
VALUE "LegalCopyright", "Copyright © 1985-2010\0"
|
VALUE "LegalCopyright", "Copyright © 1985-2018\0"
|
||||||
VALUE "LegalTrademarks", "\0"
|
VALUE "LegalTrademarks", "\0"
|
||||||
VALUE "OriginalFilename", "nethackm.exe\0"
|
VALUE "OriginalFilename", "nethackm.exe\0"
|
||||||
VALUE "PrivateBuild", "090914\0"
|
VALUE "PrivateBuild", "090914\0"
|
||||||
VALUE "ProductName", "NetHack For Smartphone\0"
|
VALUE "ProductName", "NetHack For Smartphone\0"
|
||||||
VALUE "ProductVersion", "3, 5, 0, 0\0"
|
VALUE "ProductVersion", "3, 6, 1, 0\0"
|
||||||
VALUE "SpecialBuild", "\0"
|
VALUE "SpecialBuild", "\0"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
|
|||||||
+19
-12
@@ -1,11 +1,11 @@
|
|||||||
Copyright (c) NetHack Development Team 1990-2017
|
Copyright (c) NetHack Development Team 1990-2018
|
||||||
NetHack may be freely redistributed. See license for details.
|
NetHack may be freely redistributed. See license for details.
|
||||||
==============================================================
|
==============================================================
|
||||||
Instructions for compiling and installing
|
Instructions for compiling and installing
|
||||||
NetHack 3.6 on a Windows system
|
NetHack 3.6 on a Windows system
|
||||||
(Windows 7/8.x/10 or later only. XP may work but is untested)
|
(Windows 7/8.x/10 or later only. XP may work but is untested)
|
||||||
==============================================================
|
==============================================================
|
||||||
Last revision: $NHDT-Date: 1450306349 2015/12/16 22:52:29 $
|
Last revision: $NHDT-Date: 1524317622 2018/04/21 13:33:42 $
|
||||||
|
|
||||||
Credit for the porting of NetHack to the Win32 Console Subsystem goes to
|
Credit for the porting of NetHack to the Win32 Console Subsystem goes to
|
||||||
the NT Porting Team started by Michael Allison.
|
the NT Porting Team started by Michael Allison.
|
||||||
@@ -56,9 +56,13 @@ The Visual Studio 2017 NetHack solution file can be found here:
|
|||||||
So the steps are:
|
So the steps are:
|
||||||
1. Launch the IDE.
|
1. Launch the IDE.
|
||||||
2. Open the appropriate solution file.
|
2. Open the appropriate solution file.
|
||||||
3. Select the build configuration you wish to use.
|
3. If you have a newer version of Visual Studio than what was used to build
|
||||||
4. From build menu, select build solution.
|
the solution and project files distributed with the NetHack sources, you
|
||||||
5. Type F5 to start debugging.
|
can easily retarget the solution before the next step. Refer to the
|
||||||
|
"Note about the Windows SDK version" a couple of paragraphs below.
|
||||||
|
4. Select the build configuration you wish to use (Release, Debug, etc.).
|
||||||
|
5. From the build menu, select build solution.
|
||||||
|
6. Type F5 to start debugging.
|
||||||
|
|
||||||
You can also build all the projects for all platforms and configurations
|
You can also build all the projects for all platforms and configurations
|
||||||
using a "build.bat" batch file found in the same directory as the solution.
|
using a "build.bat" batch file found in the same directory as the solution.
|
||||||
@@ -66,10 +70,13 @@ using a "build.bat" batch file found in the same directory as the solution.
|
|||||||
Change to the appropriate directory (i.e. win\win32\vs2015 for VS2015 builds,
|
Change to the appropriate directory (i.e. win\win32\vs2015 for VS2015 builds,
|
||||||
win\win32\vs2017 for VS2017 builds) and run "build.bat".
|
win\win32\vs2017 for VS2017 builds) and run "build.bat".
|
||||||
|
|
||||||
Note: The Visual Studio project files distributed for NetHack 3.6.1 are configured for the
|
-----------------------------------
|
||||||
Windows SDK version 10.0.15063.0. At the time of writing, the Windows SDK version that
|
Note about the WINDOWS SDK Version:
|
||||||
is distributed with VS2017 Community Edition is a newer 10.0.16299.0. If you have a build
|
-----------------------------------
|
||||||
error MSB8036, you will simply need to change the expected SDK version as follows:
|
The Visual Studio project files distributed for NetHack 3.6.1 are configured for the
|
||||||
|
Windows SDK version 10.0.15063.0. At the time of writing, the Windows SDK version that
|
||||||
|
is distributed with VS2017 Community Edition is a newer 10.0.16299.0. If you have a build
|
||||||
|
error MSB8036, you will simply need to change the expected SDK version as follows:
|
||||||
|
|
||||||
o Open the solution in the IDE and in the project property pages, right-click the
|
o Open the solution in the IDE and in the project property pages, right-click the
|
||||||
solution and select "Retarget solution".
|
solution and select "Retarget solution".
|
||||||
@@ -203,9 +210,9 @@ Setting Up
|
|||||||
| | |
|
| | |
|
||||||
share winnt win32
|
share winnt win32
|
||||||
|
|
||||||
Check the file "Files" in your top level directory for an exact
|
Check the file "Files" in your top level directory for a more
|
||||||
listing of what file is in which directory. In order for the
|
complete listing of what file is in which directory. In order for
|
||||||
Makefiles to work, all the source files must be in the proper
|
the Makefiles to work, all the source files must be in the proper
|
||||||
locations.
|
locations.
|
||||||
|
|
||||||
If you downloaded or ftp'd the sources from a UNIX system, the lines
|
If you downloaded or ftp'd the sources from a UNIX system, the lines
|
||||||
|
|||||||
+3
-4
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 winnt.c $NHDT-Date: 1431737068 2015/05/16 00:44:28 $ $NHDT-Branch: master $:$NHDT-Revision: 1.26 $ */
|
/* NetHack 3.6 winnt.c $NHDT-Date: 1524321419 2018/04/21 14:36:59 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.30 $ */
|
||||||
/* Copyright (c) NetHack PC Development Team 1993, 1994 */
|
/* Copyright (c) NetHack PC Development Team 1993, 1994 */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
@@ -329,14 +329,13 @@ char *buf;
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
char *tmp = buf;
|
char *tmp = buf;
|
||||||
HWND hwndConsole = GetConsoleHandle();
|
|
||||||
HGLOBAL hglbCopy;
|
HGLOBAL hglbCopy;
|
||||||
WCHAR *w, w2[2];
|
WCHAR *w, w2[2];
|
||||||
int cc, rc, abytes;
|
int cc, rc, abytes;
|
||||||
LPWSTR lpwstrCopy;
|
LPWSTR lpwstrCopy;
|
||||||
HANDLE hresult;
|
HANDLE hresult;
|
||||||
|
|
||||||
if (!buf || (hwndConsole == NULL))
|
if (!buf)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
cc = strlen(buf);
|
cc = strlen(buf);
|
||||||
@@ -353,7 +352,7 @@ char *buf;
|
|||||||
free(w);
|
free(w);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!OpenClipboard(hwndConsole)) {
|
if (!OpenClipboard(NULL)) {
|
||||||
free(w);
|
free(w);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user