Merge branch 'NetHack-3.6.0'
This commit is contained in:
@@ -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,
|
||||
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
|
||||
of the development of 3.6.0, one of the significant inspirations for many
|
||||
of the humorous and fun features found in the game, author Terry Pratchett,
|
||||
passed away. The 3.6 versions of the game include a tribute to him.
|
||||
Near the end of the development of 3.6.0, one of the significant inspirations
|
||||
for many of the humorous and fun features found in the game, author
|
||||
Terry Pratchett, passed away. NetHack 3.6.0 introduced a tribute to him.
|
||||
|
||||
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.
|
||||
|
||||
@@ -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
|
||||
# April 28, 1948 - March 12, 2015
|
||||
|
||||
188
doc/Guidebook.mn
188
doc/Guidebook.mn
@@ -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.
|
||||
.\" NetHack's Guidebook.mn currently does *not* adhere to these guidelines.
|
||||
@@ -21,7 +21,7 @@
|
||||
.ds vr "NetHack 3.6
|
||||
.ds f0 "\*(vr
|
||||
.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
|
||||
.\" 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...
|
||||
.
|
||||
.mt
|
||||
@@ -410,7 +418,7 @@ The message line (top)
|
||||
.pg
|
||||
The top line of the screen is reserved for messages that describe
|
||||
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
|
||||
that you've read the one that is there first. To read the next message,
|
||||
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;
|
||||
otherwise, the game will use default symbols. Here is a list of what the
|
||||
default symbols mean:
|
||||
.lp "- and | "
|
||||
.lp "\\- and | "
|
||||
The walls of a room, or an open door. Or a grave (|).
|
||||
.lp .
|
||||
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.
|
||||
.lp $
|
||||
A pile of gold.
|
||||
.lp ^
|
||||
.lp \(ha \" ^
|
||||
A trap (once you have detected it).
|
||||
.lp )
|
||||
A weapon.
|
||||
@@ -507,8 +515,8 @@ you are presented with will depend chiefly on how you have set the
|
||||
option.
|
||||
.pg
|
||||
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.
|
||||
Here, ``a-zA-Z'' are the inventory letters of your possible choices.
|
||||
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.
|
||||
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 `*'
|
||||
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
|
||||
.op autopickup
|
||||
option on and off.
|
||||
.lp ^
|
||||
Ask for the type of a trap you found earlier.
|
||||
.lp \(ha \" ^
|
||||
Ask for the type of an adjacent trap you found earlier.
|
||||
.lp )
|
||||
Tell what weapon you are wielding.
|
||||
.lp [
|
||||
@@ -1203,7 +1211,8 @@ List and reorder known spells. Default key is '+'.
|
||||
.lp #seetools
|
||||
Show the tools currently in use. Default key is '('.
|
||||
.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
|
||||
Show the weapon currently wielded. Default key is ')'.
|
||||
.lp #shell
|
||||
@@ -1438,7 +1447,7 @@ doors).
|
||||
Secret doors are hidden. You can find them with the `s' (search)
|
||||
command. Once found they are in all ways equivalent to normal doors.
|
||||
.hn 2
|
||||
Traps (`^')
|
||||
Traps (`\(ha')
|
||||
.pg
|
||||
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
|
||||
@@ -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
|
||||
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
|
||||
Objects
|
||||
.pg
|
||||
@@ -2180,6 +2207,30 @@ There are a number
|
||||
of monsters in the dungeon that may be influenced by the amount of gold
|
||||
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
|
||||
Conduct
|
||||
.pg
|
||||
@@ -2431,7 +2482,7 @@ by the function that handles wishing.
|
||||
.pg
|
||||
Example:
|
||||
.sd
|
||||
\fBWIZKIT=~/wizkit.txt\fP
|
||||
\fBWIZKIT=\(ti/wizkit.txt\fP \" \(ti == '~'
|
||||
.ed
|
||||
.lp SOUNDDIR
|
||||
Define the directory that contains the sound files.
|
||||
@@ -2741,11 +2792,11 @@ Default '-'.
|
||||
.lp menu_deselect_page
|
||||
Menu character accelerator to deselect all items on this page of a menu.
|
||||
Implemented by the Amiga, Gem and tty ports.
|
||||
Default '\e'.
|
||||
Default '\\'.
|
||||
.lp menu_first_page
|
||||
Menu character accelerator to jump to the first page in a menu.
|
||||
Implemented by the Amiga, Gem and tty ports.
|
||||
Default '^'.
|
||||
Default '\(ha'.
|
||||
.lp menu_headings
|
||||
Controls how the headings in a menu are highlighted.
|
||||
Values are 'none', 'bold', 'dim', 'underline', 'blink', or 'inverse'.
|
||||
@@ -2757,7 +2808,7 @@ Default '@'.
|
||||
.lp menu_invert_page
|
||||
Menu character accelerator to invert all items on this page of a menu.
|
||||
Implemented by the Amiga, Gem and tty ports.
|
||||
Default '~'.
|
||||
Default '\(ti'. \" ~
|
||||
.lp menu_last_page
|
||||
Menu character accelerator to jump to the last page in a menu.
|
||||
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 role by appending a dash and one or more letters 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
|
||||
.op "-@"
|
||||
.op "\-@"
|
||||
is used for the role, then a random one will be automatically chosen.
|
||||
Cannot be set with the `O' command.
|
||||
.lp "news "
|
||||
@@ -3033,7 +3084,7 @@ Persistent.
|
||||
Display a sparkly effect when a monster (including yourself) is hit by an
|
||||
attack to which it is resistant (default on). Persistent.
|
||||
.lp standout
|
||||
Boldface monsters and ``\fB--More--\fP'' (default off). Persistent.
|
||||
Boldface monsters and ``\fB\-\-More\-\-\fP'' (default off). Persistent.
|
||||
.lp statushilites
|
||||
Controls how many turns status hilite behaviors highlight
|
||||
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.
|
||||
.pg
|
||||
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.
|
||||
This means that \e is a prefix to take the following character literally. Thus
|
||||
\e needs to be represented as \e\e.
|
||||
The special escape form
|
||||
\em switches on the meta bit in the symbol value, and the \e^ prefix causes the
|
||||
following character to be treated as a control
|
||||
character.
|
||||
This means that \\ is a prefix to take the following character literally.
|
||||
Thus \\ needs to be represented as \\\\.
|
||||
The special prefix form \\m switches on the meta bit in the symbol value,
|
||||
and the \(ha prefix causes the following character to be treated as a
|
||||
control character.
|
||||
.pg
|
||||
.TS S
|
||||
center;
|
||||
@@ -3810,30 +3861,30 @@ Default Symbol Name Description
|
||||
\(dq S_amulet (amulet)
|
||||
A S_angel (angelic being)
|
||||
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_armour (suit or piece of armor)
|
||||
^ S_arrow_trap (arrow trap)
|
||||
\(ha S_arrow_trap (arrow trap)
|
||||
0 S_ball (iron ball)
|
||||
# S_bars (iron bars)
|
||||
B S_bat (bat or bird)
|
||||
^ S_bear_trap (bear trap)
|
||||
- S_blcorn (bottom left corner)
|
||||
\(ha S_bear_trap (bear trap)
|
||||
\- S_blcorn (bottom left corner)
|
||||
b S_blob (blob)
|
||||
+ S_book (spellbook)
|
||||
) S_boomleft (boomerang open left)
|
||||
( S_boomright (boomerang open right)
|
||||
\` S_boulder (boulder)
|
||||
- S_brcorn (bottom right corner)
|
||||
\- S_brcorn (bottom right corner)
|
||||
C S_centaur (centaur)
|
||||
\&_ S_chain (iron chain)
|
||||
# S_cloud (cloud)
|
||||
c S_cockatrice (cockatrice)
|
||||
$ S_coin (pile of coins)
|
||||
# S_corr (corridor)
|
||||
- S_crwall (wall)
|
||||
\- S_crwall (wall)
|
||||
# S_darkroom (dark room)
|
||||
^ S_dart_trap (dart trap)
|
||||
\(ha S_dart_trap (dart trap)
|
||||
& S_demon (major demon)
|
||||
* S_digbeam (dig beam)
|
||||
> S_dnladder (ladder down)
|
||||
@@ -3843,18 +3894,18 @@ D S_dragon (dragon)
|
||||
; S_eel (sea monster)
|
||||
E S_elemental (elemental)
|
||||
/ S_explode1 (explosion top left)
|
||||
- S_explode2 (explosion top center)
|
||||
\- S_explode2 (explosion top center)
|
||||
\\ S_explode3 (explosion top right)
|
||||
| S_explode4 (explosion middle left)
|
||||
\ S_explode5 (explosion middle center)
|
||||
| S_explode6 (explosion middle right)
|
||||
\\ S_explode7 (explosion bottom left)
|
||||
- S_explode8 (explosion bottom center)
|
||||
\- S_explode8 (explosion bottom center)
|
||||
/ S_explode9 (explosion bottom right)
|
||||
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)
|
||||
^ S_fire_trap (fire trap)
|
||||
\(ha S_fire_trap (fire trap)
|
||||
! S_flashbeam (flash beam)
|
||||
% S_food (piece of food)
|
||||
{ S_fountain (fountain)
|
||||
@@ -3866,15 +3917,15 @@ G S_gnome (gnome)
|
||||
' S_golem (golem)
|
||||
| S_grave (grave)
|
||||
g S_gremlin (gremlin)
|
||||
- S_hbeam (horizontal beam [zap animation])
|
||||
\- S_hbeam (horizontal beam [zap animation])
|
||||
# S_hcdbridge (horizontal raised drawbridge)
|
||||
+ S_hcdoor (closed door in horizontal wall)
|
||||
\. S_hodbridge (horizontal lowered drawbridge)
|
||||
| S_hodoor (open door in horizontal wall)
|
||||
^ S_hole (hole)
|
||||
\(ha S_hole (hole)
|
||||
@ S_human (human or elf)
|
||||
h S_humanoid (humanoid)
|
||||
- S_hwall (horizontal wall)
|
||||
\- S_hwall (horizontal wall)
|
||||
\. S_ice (ice)
|
||||
i S_imp (imp or minor demon)
|
||||
I S_invisible (invisible monster)
|
||||
@@ -3882,17 +3933,17 @@ J S_jabberwock (jabberwock)
|
||||
j S_jelly (jelly)
|
||||
k S_kobold (kobold)
|
||||
K S_kop (Keystone Kop)
|
||||
^ S_land_mine (land mine)
|
||||
\(ha S_land_mine (land mine)
|
||||
} S_lava (molten lava)
|
||||
l S_leprechaun (leprechaun)
|
||||
^ S_level_teleporter (level teleporter)
|
||||
\(ha S_level_teleporter (level teleporter)
|
||||
L S_lich (lich)
|
||||
y S_light (light)
|
||||
# S_litcorr (lit corridor)
|
||||
: S_lizard (lizard)
|
||||
\\ S_lslant (diagonal beam [zap animation])
|
||||
^ S_magic_portal (magic portal)
|
||||
^ S_magic_trap (magic trap)
|
||||
\(ha S_magic_portal (magic portal)
|
||||
\(ha S_magic_trap (magic trap)
|
||||
m S_mimic (mimic)
|
||||
] S_mimic_def (mimic)
|
||||
M S_mummy (mummy)
|
||||
@@ -3902,9 +3953,9 @@ n S_nymph (nymph)
|
||||
O S_ogre (ogre)
|
||||
o S_orc (orc)
|
||||
p S_piercer (piercer)
|
||||
^ S_pit (pit)
|
||||
\(ha S_pit (pit)
|
||||
# S_poisoncloud (poison cloud)
|
||||
^ S_polymorph_trap (polymorph trap)
|
||||
\(ha S_polymorph_trap (polymorph trap)
|
||||
} S_pool (water)
|
||||
! S_potion (potion)
|
||||
P S_pudding (pudding or ooze)
|
||||
@@ -3913,46 +3964,46 @@ Q S_quantmech (quantum mechanic)
|
||||
\&= S_ring (ring)
|
||||
\` S_rock (boulder or statue)
|
||||
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_rslant (diagonal beam [zap animation])
|
||||
^ S_rust_trap (rust trap)
|
||||
\(ha S_rust_trap (rust trap)
|
||||
R S_rustmonst (rust monster or disenchanter)
|
||||
? S_scroll (scroll)
|
||||
# S_sink (sink)
|
||||
^ S_sleeping_gas_trap (sleeping gas trap)
|
||||
\(ha S_sleeping_gas_trap (sleeping gas trap)
|
||||
S S_snake (snake)
|
||||
s S_spider (arachnid or centipede)
|
||||
^ S_spiked_pit (spiked pit)
|
||||
^ S_squeaky_board (squeaky board)
|
||||
\(ha S_spiked_pit (spiked pit)
|
||||
\(ha S_squeaky_board (squeaky board)
|
||||
0 S_ss1 (magic shield 1 of 4)
|
||||
# S_ss2 (magic shield 2 of 4)
|
||||
@ S_ss3 (magic shield 3 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_strange_obj (strange object)
|
||||
- S_sw_bc (swallow bottom center)
|
||||
\- S_sw_bc (swallow bottom center)
|
||||
\\ S_sw_bl (swallow bottom left)
|
||||
/ S_sw_br (swallow bottom right)
|
||||
| S_sw_ml (swallow middle left)
|
||||
| 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_tr (swallow top right)
|
||||
- S_tdwall (wall)
|
||||
^ S_teleportation_trap (teleportation trap)
|
||||
\- S_tdwall (wall)
|
||||
\(ha S_teleportation_trap (teleportation trap)
|
||||
\\ S_throne (opulent throne)
|
||||
- S_tlcorn (top left corner)
|
||||
\- S_tlcorn (top left corner)
|
||||
| S_tlwall (wall)
|
||||
( 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)
|
||||
- S_trcorn (top right corner)
|
||||
\- S_trcorn (top right corner)
|
||||
# S_tree (tree)
|
||||
T S_troll (troll)
|
||||
| S_trwall (wall)
|
||||
- S_tuwall (wall)
|
||||
\- S_tuwall (wall)
|
||||
U S_umber (umber hulk)
|
||||
u S_unicorn (unicorn or horse)
|
||||
< S_upladder (ladder up)
|
||||
@@ -3962,9 +4013,9 @@ V S_vampire (vampire)
|
||||
# S_vcdbridge (vertical raised drawbridge)
|
||||
+ S_vcdoor (closed door in vertical wall)
|
||||
\. S_venom (splash of venom)
|
||||
^ S_vibrating_square (vibrating square)
|
||||
\(ha S_vibrating_square (vibrating square)
|
||||
\. S_vodbridge (vertical lowered drawbridge)
|
||||
- S_vodoor (open door in vertical wall)
|
||||
\- S_vodoor (open door in vertical wall)
|
||||
v S_vortex (vortex)
|
||||
| S_vwall (vertical wall)
|
||||
/ S_wand (wand)
|
||||
@@ -3972,7 +4023,7 @@ v S_vortex (vortex)
|
||||
) S_weapon (weapon)
|
||||
\(dq S_web (web)
|
||||
w S_worm (worm)
|
||||
~ S_worm_tail (long worm tail)
|
||||
\(ti S_worm_tail (long worm tail)
|
||||
W S_wraith (wraith)
|
||||
x S_xan (xan or other mythical/fantastic insect)
|
||||
X S_xorn (xorn)
|
||||
@@ -3982,6 +4033,13 @@ z S_zruty (zruty)
|
||||
.\"TABLE_END Do not delete this line.
|
||||
.TE
|
||||
.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
|
||||
Configuring NetHack for Play by the Blind
|
||||
.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.
|
||||
.pg
|
||||
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
|
||||
Explore mode
|
||||
@@ -4175,7 +4233,7 @@ paltry cost of not getting on the high score list.
|
||||
.pg
|
||||
There are two ways of enabling explore mode. One is to start the game
|
||||
with the
|
||||
.op -X
|
||||
.op \-X
|
||||
command-line switch or with the
|
||||
.op playmode:explore
|
||||
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
|
||||
players who attempt debugging are expected to figure out how to use it
|
||||
themselves. It is initiated by starting the game with the
|
||||
.op -D
|
||||
.op \-D
|
||||
command-line switch or with the
|
||||
.op playmode:debug
|
||||
option.
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
%.au
|
||||
\author{Original version - Eric S. Raymond\\
|
||||
(Edited and expanded for 3.6 by Mike Stephenson and others)}
|
||||
\date{April 19, 2018}
|
||||
\date{April 23, 2018}
|
||||
|
||||
\maketitle
|
||||
|
||||
@@ -1028,7 +1028,7 @@ May be preceded by `{\tt m}' to force a selection menu.
|
||||
Toggle the {\it autopickup\/} option on and off.
|
||||
%.lp
|
||||
\item[\tb{\^{}}]
|
||||
Ask for the type of a trap you found earlier.
|
||||
Ask for the type of an adjacent trap you found earlier.
|
||||
%.lp
|
||||
\item[\tb{)}]
|
||||
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 (}'.
|
||||
%.lp
|
||||
\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
|
||||
\item[\tb{\#seeweapon}]
|
||||
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
|
||||
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
|
||||
\section{Objects}
|
||||
|
||||
@@ -2545,6 +2565,32 @@ There are a number
|
||||
of monsters in the dungeon that may be influenced by the amount of gold
|
||||
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
|
||||
\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
|
||||
fashion. This means that `\verb+\+' is a prefix to take the following
|
||||
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
|
||||
`{\tt \^{}}' prefix causes the following character to be treated as a control
|
||||
character.
|
||||
@@ -4632,7 +4678,18 @@ Default & Symbol Name & Description\\
|
||||
\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
|
||||
\subsection*{Configuring {\it NetHack\/} for Play by the Blind}
|
||||
|
||||
|
||||
9590
doc/Guidebook.txt
9590
doc/Guidebook.txt
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>
|
||||
erroneously removed old annotation; use <space><return> to do that
|
||||
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
|
||||
|
||||
@@ -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 */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -351,7 +351,7 @@ typedef struct {
|
||||
typedef struct {
|
||||
packed_coord coord;
|
||||
xchar x, y, type;
|
||||
} trap;
|
||||
} spltrap;
|
||||
|
||||
typedef struct {
|
||||
Str_or_Len name, appear_as;
|
||||
|
||||
@@ -738,7 +738,7 @@ STATIC_DCL void
|
||||
interrupt_multi(msg)
|
||||
const char *msg;
|
||||
{
|
||||
if (multi > 0 && !context.travel) {
|
||||
if (multi > 0 && !context.travel && !context.run) {
|
||||
nomul(0);
|
||||
if (flags.verbose && msg)
|
||||
Norep("%s", msg);
|
||||
|
||||
@@ -1278,6 +1278,7 @@ wiz_intrinsic(VOID_ARGS)
|
||||
}
|
||||
if (n >= 1)
|
||||
free((genericptr_t) pick_list);
|
||||
doredraw();
|
||||
} else
|
||||
pline("Unavailable command '%s'.",
|
||||
visctrl((int) cmd_from_func(wiz_intrinsic)));
|
||||
|
||||
26
src/files.c
26
src/files.c
@@ -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. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -3469,6 +3469,30 @@ const char *dir UNUSED_if_not_OS2_CODEVIEW;
|
||||
Strcpy(tmp, RECORD);
|
||||
fq_record = fqname(RECORD, SCOREPREFIX, 0);
|
||||
#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) {
|
||||
/* try to create empty 'record' */
|
||||
|
||||
@@ -857,8 +857,11 @@ int mode;
|
||||
|
||||
if (sobj_at(BOULDER, x, y) && (Sokoban || !Passes_walls)) {
|
||||
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;
|
||||
}
|
||||
if (mode == DO_MOVE) {
|
||||
/* tunneling monsters will chew before pushing */
|
||||
if (tunnels(youmonst.data) && !needspick(youmonst.data)
|
||||
|
||||
@@ -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 */
|
||||
/* 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,
|
||||
XCHAR_P, XCHAR_P, XCHAR_P, XCHAR_P));
|
||||
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 boolean FDECL(m_bad_boulder_spot, (int, int));
|
||||
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
|
||||
create_trap(t, croom)
|
||||
trap *t;
|
||||
spltrap *t;
|
||||
struct mkroom *croom;
|
||||
{
|
||||
schar x = -1, y = -1;
|
||||
@@ -3580,7 +3580,7 @@ struct sp_coder *coder;
|
||||
static const char nhFunc[] = "spo_trap";
|
||||
struct opvar *type;
|
||||
struct opvar *tcoord;
|
||||
trap tmptrap;
|
||||
spltrap tmptrap;
|
||||
|
||||
if (!OV_pop_i(type) || !OV_pop_c(tcoord))
|
||||
return;
|
||||
|
||||
52
src/trap.c
52
src/trap.c
@@ -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. */
|
||||
/* 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 *));
|
||||
#endif
|
||||
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 boolean FDECL(keep_saddle_with_steedcorpse, (unsigned,
|
||||
struct obj *,
|
||||
@@ -851,7 +853,8 @@ unsigned trflags;
|
||||
forcebungle = (trflags & FORCEBUNGLE) != 0,
|
||||
plunged = (trflags & TOOKPLUNGE) != 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 steed_article = ARTICLE_THE;
|
||||
|
||||
@@ -879,10 +882,11 @@ unsigned trflags;
|
||||
return;
|
||||
}
|
||||
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)
|
||||
&& 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"
|
||||
: a_your[trap->madeby_u],
|
||||
defsyms[trap_to_defsym(ttype)].explanation);
|
||||
@@ -1154,8 +1158,11 @@ unsigned trflags;
|
||||
Sprintf(verbbuf, "lead %s",
|
||||
x_monnam(u.usteed, steed_article, "poor",
|
||||
SUPPRESS_SADDLE, FALSE));
|
||||
} else if (adj_pit) {
|
||||
} else if (conj_pit) {
|
||||
You("move into an adjacent pit.");
|
||||
} else if (adj_pit) {
|
||||
You("stumble over debris%s.",
|
||||
!rn2(5) ? " between the pits" : "");
|
||||
} else {
|
||||
Strcpy(verbbuf,
|
||||
!plunged ? "fall" : (Flying ? "dive" : "plunge"));
|
||||
@@ -1177,33 +1184,34 @@ unsigned trflags;
|
||||
pline("%s %s %s!",
|
||||
upstart(x_monnam(u.usteed, steed_article, "poor",
|
||||
SUPPRESS_SADDLE, FALSE)),
|
||||
adj_pit ? "steps" : "lands", predicament);
|
||||
conj_pit ? "steps" : "lands", predicament);
|
||||
} else
|
||||
You("%s %s!", adj_pit ? "step" : "land", predicament);
|
||||
You("%s %s!", conj_pit ? "step" : "land", predicament);
|
||||
}
|
||||
u.utrap = rn1(6, 2);
|
||||
u.utraptype = TT_PIT;
|
||||
if (!steedintrap(trap, (struct obj *) 0)) {
|
||||
if (ttype == SPIKED_PIT) {
|
||||
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
|
||||
? "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",
|
||||
NO_KILLER_PREFIX);
|
||||
if (!rn2(6))
|
||||
poisoned("spikes", A_STR,
|
||||
adj_pit ? "stepping on poison spikes"
|
||||
(conj_pit || adj_pit) ? "stepping on poison spikes"
|
||||
: "fall onto poison spikes",
|
||||
/* if damage triggered life-saving,
|
||||
poison is limited to attrib loss */
|
||||
(u.umortality > oldumort) ? 0 : 8, FALSE);
|
||||
} else {
|
||||
/* plunging flyers take spike damage but not pit damage */
|
||||
if (!adj_pit
|
||||
if (!conj_pit
|
||||
&& !(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"
|
||||
: "fell into a pit",
|
||||
NO_KILLER_PREFIX);
|
||||
@@ -1213,7 +1221,7 @@ unsigned trflags;
|
||||
ballfall();
|
||||
placebc();
|
||||
}
|
||||
if (!adj_pit)
|
||||
if (!conj_pit)
|
||||
selftouch("Falling, you");
|
||||
vision_full_recalc = 1; /* vision limits change */
|
||||
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
|
||||
/*
|
||||
* 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. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -4180,7 +4180,7 @@ const char *msg;
|
||||
|
||||
if (!msg)
|
||||
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 */
|
||||
} else { /* lev->typ == ICE */
|
||||
#ifdef STUPID
|
||||
|
||||
@@ -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. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -307,6 +307,7 @@ _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);*/
|
||||
save_getreturn_status = getreturn_enabled;
|
||||
raw_clear_screen();
|
||||
getreturn_enabled = TRUE;
|
||||
check_recordfile((char *) 0);
|
||||
#endif
|
||||
initoptions();
|
||||
|
||||
|
||||
@@ -22,11 +22,12 @@ preserving permissions to put the NetHack files in /usr/games/nethack and
|
||||
home directory you might perform these steps.
|
||||
% su
|
||||
# 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,
|
||||
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
|
||||
and logfile; they are automatically preserved.
|
||||
|
||||
|
||||
@@ -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
|
||||
=========================================
|
||||
|
||||
@@ -137,7 +137,8 @@ Notes:
|
||||
0. Version 3.5.x was never publicly released.
|
||||
|
||||
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.
|
||||
|
||||
2. To specify user-preference options in your environment, define the
|
||||
|
||||
@@ -284,8 +284,8 @@ END
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 3,5,0,0
|
||||
PRODUCTVERSION 3,5,0,0
|
||||
FILEVERSION 3,6,1,0
|
||||
PRODUCTVERSION 3,6,1,0
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x9L
|
||||
@@ -300,17 +300,17 @@ BEGIN
|
||||
BEGIN
|
||||
BLOCK "040904b0"
|
||||
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 "FileDescription", "nethackm\0"
|
||||
VALUE "FileVersion", "3, 5, 0, 0\0"
|
||||
VALUE "FileVersion", "3, 6, 1, 0\0"
|
||||
VALUE "InternalName", "nethackm\0"
|
||||
VALUE "LegalCopyright", "Copyright © 1985-2009\0"
|
||||
VALUE "LegalCopyright", "Copyright © 1985-2018\0"
|
||||
VALUE "LegalTrademarks", "\0"
|
||||
VALUE "OriginalFilename", "nethackm.exe\0"
|
||||
VALUE "PrivateBuild", "090914\0"
|
||||
VALUE "ProductName", "NetHack\0"
|
||||
VALUE "ProductVersion", "3, 5, 0, 0\0"
|
||||
VALUE "ProductVersion", "3, 6, 1, 0\0"
|
||||
VALUE "SpecialBuild", "\0"
|
||||
END
|
||||
END
|
||||
|
||||
@@ -260,8 +260,8 @@ END
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 3,5,0,0
|
||||
PRODUCTVERSION 3,5,0,0
|
||||
FILEVERSION 3,6,1,0
|
||||
PRODUCTVERSION 3,6,1,0
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x9L
|
||||
@@ -276,17 +276,17 @@ BEGIN
|
||||
BEGIN
|
||||
BLOCK "040904b0"
|
||||
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 "FileDescription", "nethackm\0"
|
||||
VALUE "FileVersion", "3, 5, 0, 0\0"
|
||||
VALUE "FileVersion", "3, 6, 1, 0\0"
|
||||
VALUE "InternalName", "nethackm\0"
|
||||
VALUE "LegalCopyright", "Copyright © 1985-2010\0"
|
||||
VALUE "LegalCopyright", "Copyright © 1985-2018\0"
|
||||
VALUE "LegalTrademarks", "\0"
|
||||
VALUE "OriginalFilename", "nethackm.exe\0"
|
||||
VALUE "PrivateBuild", "090914\0"
|
||||
VALUE "ProductName", "NetHack For Smartphone\0"
|
||||
VALUE "ProductVersion", "3, 5, 0, 0\0"
|
||||
VALUE "ProductVersion", "3, 6, 1, 0\0"
|
||||
VALUE "SpecialBuild", "\0"
|
||||
END
|
||||
END
|
||||
|
||||
@@ -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.
|
||||
==============================================================
|
||||
Instructions for compiling and installing
|
||||
NetHack 3.6 on a Windows system
|
||||
(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
|
||||
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:
|
||||
1. Launch the IDE.
|
||||
2. Open the appropriate solution file.
|
||||
3. Select the build configuration you wish to use.
|
||||
4. From build menu, select build solution.
|
||||
5. Type F5 to start debugging.
|
||||
3. If you have a newer version of Visual Studio than what was used to build
|
||||
the solution and project files distributed with the NetHack sources, you
|
||||
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
|
||||
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,
|
||||
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
|
||||
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:
|
||||
-----------------------------------
|
||||
Note about the WINDOWS SDK Version:
|
||||
-----------------------------------
|
||||
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
|
||||
solution and select "Retarget solution".
|
||||
@@ -203,9 +210,9 @@ Setting Up
|
||||
| | |
|
||||
share winnt win32
|
||||
|
||||
Check the file "Files" in your top level directory for an exact
|
||||
listing of what file is in which directory. In order for the
|
||||
Makefiles to work, all the source files must be in the proper
|
||||
Check the file "Files" in your top level directory for a more
|
||||
complete listing of what file is in which directory. In order for
|
||||
the Makefiles to work, all the source files must be in the proper
|
||||
locations.
|
||||
|
||||
If you downloaded or ftp'd the sources from a UNIX system, the lines
|
||||
|
||||
@@ -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 */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -329,14 +329,13 @@ char *buf;
|
||||
*/
|
||||
|
||||
char *tmp = buf;
|
||||
HWND hwndConsole = GetConsoleHandle();
|
||||
HGLOBAL hglbCopy;
|
||||
WCHAR *w, w2[2];
|
||||
int cc, rc, abytes;
|
||||
LPWSTR lpwstrCopy;
|
||||
HANDLE hresult;
|
||||
|
||||
if (!buf || (hwndConsole == NULL))
|
||||
if (!buf)
|
||||
return;
|
||||
|
||||
cc = strlen(buf);
|
||||
@@ -353,7 +352,7 @@ char *buf;
|
||||
free(w);
|
||||
return;
|
||||
}
|
||||
if (!OpenClipboard(hwndConsole)) {
|
||||
if (!OpenClipboard(NULL)) {
|
||||
free(w);
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user