symbol set reorganization

Change the way symbol sets are loaded to make them have the same order
as they appear in the symbols file rather than being reversed.

Revise dat/symbols so that the new ordering yields a result similar
to the old ordering, more or less.  I've added a few set descriptions.
The only substantive change is marking DECgraphics as primary-only
(not available on rogue level) and adding new set DECgraphics_2 which
is commented out near the end.

Define symbol handling H_MAC since one of the sets specifies
'handling: MAC'.  All H_MAC is used for now is to avoid showing
MACgraphics as a symset when compiled without MAC_GRAPHICS_ENV (which
was used for pre-OSX Mac by the old code in sys/mac/), so it will be
hidden for everyone.

I left handling H_CURS even though curses doesn't implement anything
for it.  It could do something when rendering the map or assign a
function to 'cursesgraphics_mode_callback' for special init or both
but hasn't needed to.  Since curses is now supporting DECgraphics,
define 'decgraphics_mode_callback' for it.  No value is being
assigned so that doesn't do anything; curses seems to be setting up
the primary character set as text and secondary one as line-drawing
without the need for that hook.

With the added set descriptions, 'O's symset menu looked horrible for
curses due to the way curses decides to set the width of menus and
the resulting line wrapping which took place because of a too-narrow
menu.  I've added a chunk of code to the options handling code which
shouldn't really be there but makes the menu much easier to read.

Lastly, do some formatting cleanup in files.c.
This commit is contained in:
PatR
2019-10-17 05:00:58 -07:00
parent 33d33fcf19
commit 3e368b9a51
6 changed files with 474 additions and 364 deletions

View File

@@ -1,4 +1,4 @@
# NetHack 3.6 symbols $NHDT-Date: 1570919632 2019/10/12 22:33:52 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.17 $
# NetHack 3.6 symbols $NHDT-Date: 1571313649 2019/10/17 12:00:49 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.19 $
# Copyright (c) 2006 by Michael Allison
# NetHack may be freely redistributed. See license for details.
#
@@ -14,325 +14,35 @@
# of ordinary printable characters in the lowercase letter range.
# NetHack encodes the request to use the alternate font here by
# having the high bit set (in hexadecimal, \x80 is combined with
# a character code between \x60 and \x7f).
# a character code between \x5f and \x7e) (not 0x60 to 0x7f as was
# previously claimed).
#
# curses is an approximation of IBMgraphics which relies on DEC
# mode of operation, with a few characters missing. It is based
# on an old graphics mode for the Curses mode and is the default
# on that windowport if no symset is specified.
# mode of operation, with a few characters missing. It is based
# on an old graphics mode for the Curses interface and is the default
# on that windowport if no symset is specified. The Curses interface
# can also use DECgraphics as-is; IBMgraphics probably won't work.
start: DECgraphics
Handling: DEC
S_vwall: \xf8 # meta-x, vertical rule
S_hwall: \xf1 # meta-q, horizontal rule
S_tlcorn: \xec # meta-l, top left corner
S_trcorn: \xeb # meta-k, top right corner
S_blcorn: \xed # meta-m, bottom left
S_brcorn: \xea # meta-j, bottom right
S_crwall: \xee # meta-n, cross
S_tuwall: \xf6 # meta-v, T up
S_tdwall: \xf7 # meta-w, T down
S_tlwall: \xf5 # meta-u, T left
S_trwall: \xf4 # meta-t, T right
S_ndoor: \xfe # meta-~, centered dot
S_vodoor: \xe1 # meta-a, solid block
S_hodoor: \xe1 # meta-a, solid block
S_bars: \xfb # meta-{, small pi
S_tree: \xe7 # meta-g, plus-or-minus
S_room: \xfe # meta-~, centered dot
S_upladder: \xf9 # meta-y, less-than-or-equals
S_dnladder: \xfa # meta-z, greater-than-or-equals
S_pool: \xe0 # meta-\, diamond
S_ice: \xfe # meta-~, centered dot
S_lava: \xe0 # meta-\, diamond
S_vodbridge: \xfe # meta-~, centered dot
S_hodbridge: \xfe # meta-~, centered dot
S_water: \xe0 # meta-\, diamond
S_vbeam: \xf8 # meta-x, vertical rule
S_hbeam: \xf1 # meta-q, horizontal rule
S_sw_tc: \xef # meta-o, high horizontal line
S_sw_ml: \xf8 # meta-x, vertical rule
S_sw_mr: \xf8 # meta-x, vertical rule
S_sw_bc: \xf3 # meta-s, low horizontal line
S_explode2: \xef # meta-o, high horizontal line
S_explode4: \xf8 # meta-x, vertical rule
S_explode6: \xf8 # meta-x, vertical rule
S_explode8: \xf3 # meta-s, low horizontal line
finish
# plain looks decent for wall+corridor levels where there aren't a lot
# of room corners and ones present tend to be spread out, but it looks
# awful for wallified mazes
start: plain
Description: same as default symbols, except '+' for corner walls
S_tlcorn: '+'
S_trcorn: '+'
S_blcorn: '+'
S_brcorn: '+'
S_crwall: '+'
S_tuwall: '+'
S_tdwall: '+'
S_tlwall: '+'
S_trwall: '+'
finish #plain -- other symbols implicitly retain their default values
start: curses
Handling: DEC
S_vwall: \xf8 # meta-x, vertical rule
S_hwall: \xf1 # meta-q, horizontal rule
S_tlcorn: \xec # meta-l, top left corner
S_trcorn: \xeb # meta-k, top right corner
S_blcorn: \xed # meta-m, bottom left
S_brcorn: \xea # meta-j, bottom right
S_crwall: \xee # meta-n, cross
S_tuwall: \xf6 # meta-v, T up
S_tdwall: \xf7 # meta-w, T down
S_tlwall: \xf5 # meta-u, T left
S_trwall: \xf4 # meta-t, T right
S_ndoor: \xfe # meta-z, centered dot
S_tree: \xf1 # plus or minus symbol
S_room: \xfe # meta-z, centered dot
S_corr: \xe1 # meta-a, solid block
S_litcorr: \xe1 # meta-a, solid block
S_ice: \xfe # meta-z, centered dot
S_vodbridge: \xfe # meta-z, centered dot
S_hodbridge: \xfe # meta-z, centered dot
S_vbeam: \xf8 # meta-3, vertical rule
S_hbeam: \xf1 # meta-D, horizontal rule
S_sw_ml: \xf8 # meta-3, vertical rule
S_sw_mr: \xf8 # meta-3, vertical rule
S_explode4: \xf8 # meta-3, vertical rule
S_explode6: \xf8 # meta-3, vertical rule
finish
start: IBMgraphics
Handling: IBM
S_vwall: \xb3 # meta-3, vertical rule
S_hwall: \xc4 # meta-D, horizontal rule
S_tlcorn: \xda # meta-Z, top left corner
S_trcorn: \xbf # meta-?, top right corner
S_blcorn: \xc0 # meta-@, bottom left
S_brcorn: \xd9 # meta-Y, bottom right
S_crwall: \xc5 # meta-E, cross
S_tuwall: \xc1 # meta-A, T up
S_tdwall: \xc2 # meta-B, T down
S_tlwall: \xb4 # meta-4, T left
S_trwall: \xc3 # meta-C, T right
S_ndoor: \xfa # meta-z, centered dot
S_vodoor: \xfe # meta-~, small centered square
S_hodoor: \xfe # meta-~, small centered square
S_bars: \xf0 # equivalence symbol
S_tree: \xf1 # plus or minus symbol
S_room: \xfa # meta-z, centered dot
S_corr: \xb0 # meta-0, light shading
S_litcorr: \xb1 # meta-1, medium shading
S_fountain: \xf4 # meta-t, integral top half
S_pool: \xf7 # meta-w, approx. equals
S_ice: \xfa # meta-z, centered dot
S_lava: \xf7 # meta-w, approx. equals
S_vodbridge: \xfa # meta-z, centered dot
S_hodbridge: \xfa # meta-z, centered dot
S_water: \xf7 # meta-w, approx. equals
S_vbeam: \xb3 # meta-3, vertical rule
S_hbeam: \xc4 # meta-D, horizontal rule
S_sw_ml: \xb3 # meta-3, vertical rule
S_sw_mr: \xb3 # meta-3, vertical rule
S_explode4: \xb3 # meta-3, vertical rule
S_explode6: \xb3 # meta-3, vertical rule
finish
start: IBMGraphics_1
Handling: IBM
S_vwall: \xb3 # meta-3, vertical rule
S_hwall: \xc4 # meta-D, horizontal rule
S_tlcorn: \xda # meta-Z, top left corner
S_trcorn: \xbf # meta-?, top right corner
S_blcorn: \xc0 # meta-@, bottom left
S_brcorn: \xd9 # meta-Y, bottom right
S_crwall: \xc5 # meta-E, cross
S_tuwall: \xc1 # meta-A, T up
S_tdwall: \xc2 # meta-B, T down
S_tlwall: \xb4 # meta-4, T left
S_trwall: \xc3 # meta-C, T right
S_vbeam: \xb3 # meta-3, vertical rule
S_hbeam: \xc4 # meta-D, horizontal rule
S_sw_ml: \xb3 # meta-3, vertical rule
S_sw_mr: \xb3 # meta-3, vertical rule
S_explode4: \xb3 # meta-3, vertical rule
S_explode6: \xb3 # meta-3, vertical rule
finish
start: IBMGraphics_2
Handling: IBM
S_vwall: \xb3 # meta-3, vertical rule
S_hwall: \xc4 # meta-D, horizontal rule
S_tlcorn: \xda # meta-Z, top left corner
S_trcorn: \xbf # meta-?, top right corner
S_blcorn: \xc0 # meta-@, bottom left
S_brcorn: \xd9 # meta-Y, bottom right
S_crwall: \xc5 # meta-E, cross
S_tuwall: \xc1 # meta-A, T up
S_tdwall: \xc2 # meta-B, T down
S_tlwall: \xb4 # meta-4, T left
S_trwall: \xc3 # meta-C, T right
S_vodoor: \xfe # meta-~, small centered square
S_hodoor: \xfe # meta-~, small centered square
S_corr: \xb0 # meta-0, light shading
S_litcorr: \xb1 # meta-1, medium shading
S_vbeam: \xb3 # meta-3, vertical rule
S_hbeam: \xc4 # meta-D, horizontal rule
S_sw_ml: \xb3 # meta-3, vertical rule
S_sw_mr: \xb3 # meta-3, vertical rule
S_explode4: \xb3 # meta-3, vertical rule
S_explode6: \xb3 # meta-3, vertical rule
finish
start: MACgraphics
Handling: MAC
S_vwall: \xba
S_hwall: \xcd
S_tlcorn: \xc9
S_trcorn: \xbb
S_blcorn: \xc8
S_brcorn: \xbc
S_crwall: \xce
S_tuwall: \xca
S_tdwall: \xcb
S_tlwall: \xb9
S_trwall: \xcc
S_ndoor: \xb0
S_vodoor: \xee
S_hodoor: \xee
S_vcdoor: \xef
S_hcdoor: \xef
S_bars: \xf0 # equivalency symbol
S_tree: \xf1 # plus-or-minus
S_corr: \xb0
S_grave: \xef # same as open door
S_pool: \xe0
finish
start: RogueIBM
Handling: IBM
Restrictions: rogue
S_weapon: \x29
S_amulet: \x2c
S_food: \x3a
S_potion: \xad
S_scroll: \x3f
S_book: \x2b
S_wand: \xe7
S_vwall: \xba # all walls now use
S_hwall: \xcd # double line graphics
S_tlcorn: \xc9
S_trcorn: \xbb
S_blcorn: \xc8
S_brcorn: \xbc
S_crwall: \xce
S_tuwall: \xca
S_tdwall: \xcb
S_tlwall: \xb9
S_trwall: \xcc
S_ndoor: \xce
S_vodoor: \xce
S_hodoor: \xce
S_room: \xfa # centered dot
S_corr: \xb1
S_litcorr: \xb2
S_upstair: \xf0 # Greek Xi
S_dnstair: \xf0
finish
start: RogueEpyx
Description: Rogue level color symbol set like Epyx Rogue
Restrictions: rogue
Handling: IBM
Color: Yes
S_vwall: \xba # all walls now use
S_hwall: \xcd # double line graphics
S_tlcorn: \xc9
S_trcorn: \xbb
S_blcorn: \xc8
S_brcorn: \xbc
S_crwall: \xce
S_tuwall: \xca
S_tdwall: \xcb
S_tlwall: \xb9
S_trwall: \xcc
S_ndoor: \xce
S_vodoor: \xce
S_hodoor: \xce
S_room: \xfa # centered dot
S_corr: \xb1
S_litcorr: \xb2
S_upstair: \xf0 # Greek Xi
S_dnstair: \xf0
S_arrow_trap: \x04 # diamond (cards)
S_dart_trap: \x04
S_falling_rock_trap: \x04
S_squeaky_board: \x04
S_bear_trap: \x04
S_land_mine: \x04
S_rolling_boulder_trap: \x04
S_sleeping_gas_trap: \x04
S_rust_trap: \x04
S_fire_trap: \x04
S_pit: \x04
S_spiked_pit: \x04
S_hole: \x04
S_trap_door: \x04
S_teleportation_trap: \x04
S_level_teleporter: \x04
S_magic_portal: \x04
S_web: \x04
S_statue_trap: \x04
S_magic_trap: \x04
S_anti_magic_trap: \x04
S_polymorph_trap: \x04
S_weapon: \x18 # up arrow
# ^J S_armor: \x0a # Vert rect with o
S_armor: \x5b # default: '['
# ^I S_ring: \x09 # circle with arrow
S_ring: \x3d # default: '='
S_amulet: \x0c # "female" symbol
S_tool: \x28 # default: '('
S_food: \x05 # club (as in cards)
S_potion: \xad # upside down '!'
S_scroll: \x0e # musical note
S_book: \x2b # default: '+'
S_wand: \xe7 # greek tau
S_coin: \x0f # yes it's the same as gems
S_gem: \x0f # fancy '*'
S_rock: \x60
S_ball: \x30
S_chain: \x5f
S_venom: \x2e
S_rock: \x60
S_ball: \x30
S_chain: \x5f
S_venom: \x2e
S_human: \x01
finish
start: RogueWindows
Restrictions: rogue
Handling: IBM
S_weapon: \x29
S_amulet: \x2c
S_food: \x3a
S_potion: \xad
S_scroll: \x3f
S_book: \x2b
S_wand: \xe7
S_vwall: \xba # all walls now use
S_hwall: \xcd # double line graphics
S_tlcorn: \xc9
S_trcorn: \xbb
S_blcorn: \xc8
S_brcorn: \xbc
S_crwall: \xce
S_tuwall: \xca
S_tdwall: \xcb
S_tlwall: \xb9
S_trwall: \xcc
S_ndoor: \xce
S_vodoor: \xce
S_hodoor: \xce
S_room: \xfa # centered dot
S_corr: \xb1
S_litcorr: \xb2
S_upstair: \xf0 # Greek Xi
S_dnstair: \xf0
finish
# Recommended symset for blind players
# Recommended symset for blind players
# courtesy Michael Feir
start: NHAccess
Description: Recommended for blind players
Description: recommended for blind players
S_stone: \032
S_vwall: \124
S_hwall: \045
@@ -342,7 +52,7 @@ start: NHAccess
S_brcorn: \124
S_crwall: \045
S_tuwall: \045
S_tdwall: \045
S_tdwall: \045
S_tlwall: \124
S_trwall: \124
S_ndoor: \046
@@ -354,7 +64,7 @@ start: NHAccess
S_tree: \035
S_room: \035
S_corr: \060
S_litcorr: \062
S_litcorr: \062
S_upstair: \060
S_dnstair: \062
S_upladder: \095
@@ -363,35 +73,35 @@ start: NHAccess
S_grave: \126
S_throne: \126
S_sink: \126
S_fountain: \126
S_fountain: \126
S_pool: \042
S_ice: \042
S_lava: \035
S_vodbridge: \035
S_hodbridge: \032
S_hodbridge: \032
S_vcdbridge: \035
S_hcdbridge: \126
S_arrow_trap: \094
S_dart_trap: \094
S_falling_rock_trap: \094
S_falling_rock_trap: \094
S_squeaky_board: \094
S_bear_trap: \094
S_land_mine: \094
S_rolling_boulder_trap: \094
S_rolling_boulder_trap: \094
S_sleeping_gas_trap: \094
S_rust_trap: \094
S_fire_trap: \094
S_pit: \094
S_spiked_pit: \094
S_hole: \094
S_trap_door: \094
S_trap_door: \094
S_teleportation_trap: \094
S_level_teleporter: \094
S_magic_portal: \094
S_web: \094
S_statue_trap: \094
S_statue_trap: \094
S_magic_trap: \094
S_anti_magic_trap: \094
S_anti_magic_trap: \094
S_polymorph_trap: \094
S_vbeam: \124
S_hbeam: \095
@@ -413,7 +123,7 @@ start: NHAccess
S_sw_bl: \092
S_sw_bc: \045
S_sw_br: \047
S_explode1: \047
S_explode1: \047
S_explode2: \045
S_explode3: \092
S_explode4: \058
@@ -426,7 +136,7 @@ finish
# All symbols are spaces
start: Blank
Description: Completely blank symbols
Description: completely blank symbols
S_air: \032
S_altar: \032
S_amulet: \032
@@ -603,15 +313,343 @@ start: Blank
S_zruty: \032
finish
start: plain
Description: Same as Default symbols, except '+' for corner walls
S_tlcorn: '+'
S_trcorn: '+'
S_blcorn: '+'
S_brcorn: '+'
S_crwall: '+'
S_tuwall: '+'
S_tdwall: '+'
S_tlwall: '+'
S_trwall: '+'
finish #plain -- other symbols implicitly retain their default values
start: IBMgraphics
Description: special line-drawing characters used for walls
# Restrictions: primary
Handling: IBM
S_vwall: \xb3 # meta-3, vertical rule
S_hwall: \xc4 # meta-D, horizontal rule
S_tlcorn: \xda # meta-Z, top left corner
S_trcorn: \xbf # meta-?, top right corner
S_blcorn: \xc0 # meta-@, bottom left
S_brcorn: \xd9 # meta-Y, bottom right
S_crwall: \xc5 # meta-E, cross
S_tuwall: \xc1 # meta-A, T up
S_tdwall: \xc2 # meta-B, T down
S_tlwall: \xb4 # meta-4, T left
S_trwall: \xc3 # meta-C, T right
S_ndoor: \xfa # meta-z, centered dot
S_vodoor: \xfe # meta-~, small centered square
S_hodoor: \xfe # meta-~, small centered square
S_bars: \xf0 # equivalence symbol
S_tree: \xf1 # plus or minus symbol
S_room: \xfa # meta-z, centered dot
S_corr: \xb0 # meta-0, light shading
S_litcorr: \xb1 # meta-1, medium shading
S_fountain: \xf4 # meta-t, integral top half
S_pool: \xf7 # meta-w, approx. equals
S_ice: \xfa # meta-z, centered dot
S_lava: \xf7 # meta-w, approx. equals
S_vodbridge: \xfa # meta-z, centered dot
S_hodbridge: \xfa # meta-z, centered dot
S_water: \xf7 # meta-w, approx. equals
S_vbeam: \xb3 # meta-3, vertical rule
S_hbeam: \xc4 # meta-D, horizontal rule
S_sw_ml: \xb3 # meta-3, vertical rule
S_sw_mr: \xb3 # meta-3, vertical rule
S_explode4: \xb3 # meta-3, vertical rule
S_explode6: \xb3 # meta-3, vertical rule
finish
start: IBMGraphics_1
# Restrictions: primary
Handling: IBM
S_vwall: \xb3 # meta-3, vertical rule
S_hwall: \xc4 # meta-D, horizontal rule
S_tlcorn: \xda # meta-Z, top left corner
S_trcorn: \xbf # meta-?, top right corner
S_blcorn: \xc0 # meta-@, bottom left
S_brcorn: \xd9 # meta-Y, bottom right
S_crwall: \xc5 # meta-E, cross
S_tuwall: \xc1 # meta-A, T up
S_tdwall: \xc2 # meta-B, T down
S_tlwall: \xb4 # meta-4, T left
S_trwall: \xc3 # meta-C, T right
S_vbeam: \xb3 # meta-3, vertical rule
S_hbeam: \xc4 # meta-D, horizontal rule
S_sw_ml: \xb3 # meta-3, vertical rule
S_sw_mr: \xb3 # meta-3, vertical rule
S_explode4: \xb3 # meta-3, vertical rule
S_explode6: \xb3 # meta-3, vertical rule
finish
start: IBMGraphics_2
# Restrictions: primary
Handling: IBM
S_vwall: \xb3 # meta-3, vertical rule
S_hwall: \xc4 # meta-D, horizontal rule
S_tlcorn: \xda # meta-Z, top left corner
S_trcorn: \xbf # meta-?, top right corner
S_blcorn: \xc0 # meta-@, bottom left
S_brcorn: \xd9 # meta-Y, bottom right
S_crwall: \xc5 # meta-E, cross
S_tuwall: \xc1 # meta-A, T up
S_tdwall: \xc2 # meta-B, T down
S_tlwall: \xb4 # meta-4, T left
S_trwall: \xc3 # meta-C, T right
S_vodoor: \xfe # meta-~, small centered square
S_hodoor: \xfe # meta-~, small centered square
S_corr: \xb0 # meta-0, light shading
S_litcorr: \xb1 # meta-1, medium shading
S_vbeam: \xb3 # meta-3, vertical rule
S_hbeam: \xc4 # meta-D, horizontal rule
S_sw_ml: \xb3 # meta-3, vertical rule
S_sw_mr: \xb3 # meta-3, vertical rule
S_explode4: \xb3 # meta-3, vertical rule
S_explode6: \xb3 # meta-3, vertical rule
finish
start: RogueIBM
Handling: IBM
Restrictions: rogue
S_weapon: \x29
S_amulet: \x2c
S_food: \x3a
S_potion: \xad
S_scroll: \x3f
S_book: \x2b
S_wand: \xe7
S_vwall: \xba # all walls now use
S_hwall: \xcd # double line graphics
S_tlcorn: \xc9
S_trcorn: \xbb
S_blcorn: \xc8
S_brcorn: \xbc
S_crwall: \xce
S_tuwall: \xca
S_tdwall: \xcb
S_tlwall: \xb9
S_trwall: \xcc
S_ndoor: \xce
S_vodoor: \xce
S_hodoor: \xce
S_room: \xfa # centered dot
S_corr: \xb1
S_litcorr: \xb2
S_upstair: \xf0 # Greek Xi
S_dnstair: \xf0
finish
start: RogueEpyx
Description: rogue level color symbol set like Epyx Rogue
Restrictions: rogue
Handling: IBM
Color: Yes
S_vwall: \xba # all walls now use
S_hwall: \xcd # double line graphics
S_tlcorn: \xc9
S_trcorn: \xbb
S_blcorn: \xc8
S_brcorn: \xbc
S_crwall: \xce
S_tuwall: \xca
S_tdwall: \xcb
S_tlwall: \xb9
S_trwall: \xcc
S_ndoor: \xce
S_vodoor: \xce
S_hodoor: \xce
S_room: \xfa # centered dot
S_corr: \xb1
S_litcorr: \xb2
S_upstair: \xf0 # Greek Xi
S_dnstair: \xf0
S_arrow_trap: \x04 # diamond (cards)
S_dart_trap: \x04
S_falling_rock_trap: \x04
S_squeaky_board: \x04
S_bear_trap: \x04
S_land_mine: \x04
S_rolling_boulder_trap: \x04
S_sleeping_gas_trap: \x04
S_rust_trap: \x04
S_fire_trap: \x04
S_pit: \x04
S_spiked_pit: \x04
S_hole: \x04
S_trap_door: \x04
S_teleportation_trap: \x04
S_level_teleporter: \x04
S_magic_portal: \x04
S_web: \x04
S_statue_trap: \x04
S_magic_trap: \x04
S_anti_magic_trap: \x04
S_polymorph_trap: \x04
S_weapon: \x18 # up arrow
# ^J S_armor: \x0a # Vert rect with o
S_armor: \x5b # default: '['
# ^I S_ring: \x09 # circle with arrow
S_ring: \x3d # default: '='
S_amulet: \x0c # "female" symbol
S_tool: \x28 # default: '('
S_food: \x05 # club (as in cards)
S_potion: \xad # upside down '!'
S_scroll: \x0e # musical note
S_book: \x2b # default: '+'
S_wand: \xe7 # greek tau
S_coin: \x0f # yes it's the same as gems
S_gem: \x0f # fancy '*'
S_rock: \x60
S_ball: \x30
S_chain: \x5f
S_venom: \x2e
S_rock: \x60
S_ball: \x30
S_chain: \x5f
S_venom: \x2e
S_human: \x01
finish
start: RogueWindows
Restrictions: rogue
Handling: IBM
S_weapon: \x29
S_amulet: \x2c
S_food: \x3a
S_potion: \xad
S_scroll: \x3f
S_book: \x2b
S_wand: \xe7
S_vwall: \xba # all walls now use
S_hwall: \xcd # double line graphics
S_tlcorn: \xc9
S_trcorn: \xbb
S_blcorn: \xc8
S_brcorn: \xbc
S_crwall: \xce
S_tuwall: \xca
S_tdwall: \xcb
S_tlwall: \xb9
S_trwall: \xcc
S_ndoor: \xce
S_vodoor: \xce
S_hodoor: \xce
S_room: \xfa # centered dot
S_corr: \xb1
S_litcorr: \xb2
S_upstair: \xf0 # Greek Xi
S_dnstair: \xf0
finish
start: curses
Description: approximation of IBMgraphics using DECgraphics
Restrictions: primary
Handling: DEC
S_vwall: \xf8 # meta-x, vertical rule
S_hwall: \xf1 # meta-q, horizontal rule
S_tlcorn: \xec # meta-l, top left corner
S_trcorn: \xeb # meta-k, top right corner
S_blcorn: \xed # meta-m, bottom left
S_brcorn: \xea # meta-j, bottom right
S_crwall: \xee # meta-n, cross
S_tuwall: \xf6 # meta-v, T up
S_tdwall: \xf7 # meta-w, T down
S_tlwall: \xf5 # meta-u, T left
S_trwall: \xf4 # meta-t, T right
S_ndoor: \xfe # meta-z, centered dot
S_tree: \xf1 # plus or minus symbol
S_room: \xfe # meta-z, centered dot
S_corr: \xe1 # meta-a, solid block
S_litcorr: \xe1 # meta-a, solid block
S_ice: \xfe # meta-z, centered dot
S_vodbridge: \xfe # meta-z, centered dot
S_hodbridge: \xfe # meta-z, centered dot
S_vbeam: \xf8 # meta-3, vertical rule
S_hbeam: \xf1 # meta-D, horizontal rule
S_sw_ml: \xf8 # meta-3, vertical rule
S_sw_mr: \xf8 # meta-3, vertical rule
S_explode4: \xf8 # meta-3, vertical rule
S_explode6: \xf8 # meta-3, vertical rule
finish
start: DECgraphics
Description: special line-drawing characters used for walls
Restrictions: primary
Handling: DEC
S_vwall: \xf8 # meta-x, vertical rule
S_hwall: \xf1 # meta-q, horizontal rule
S_tlcorn: \xec # meta-l, top left corner
S_trcorn: \xeb # meta-k, top right corner
S_blcorn: \xed # meta-m, bottom left
S_brcorn: \xea # meta-j, bottom right
S_crwall: \xee # meta-n, cross
S_tuwall: \xf6 # meta-v, T up
S_tdwall: \xf7 # meta-w, T down
S_tlwall: \xf5 # meta-u, T left
S_trwall: \xf4 # meta-t, T right
S_ndoor: \xfe # meta-~, centered dot
S_vodoor: \xe1 # meta-a, solid block
S_hodoor: \xe1 # meta-a, solid block
S_bars: \xfb # meta-{, small pi
S_tree: \xe7 # meta-g, plus-or-minus
S_room: \xfe # meta-~, centered dot
S_upladder: \xf9 # meta-y, less-than-or-equals
S_dnladder: \xfa # meta-z, greater-than-or-equals
S_pool: \xe0 # meta-\, diamond
S_ice: \xfe # meta-~, centered dot
S_lava: \xe0 # meta-\, diamond
S_vodbridge: \xfe # meta-~, centered dot
S_hodbridge: \xfe # meta-~, centered dot
S_water: \xe0 # meta-\, diamond
S_vbeam: \xf8 # meta-x, vertical rule
S_hbeam: \xf1 # meta-q, horizontal rule
S_sw_tc: \xef # meta-o, high horizontal line
S_sw_ml: \xf8 # meta-x, vertical rule
S_sw_mr: \xf8 # meta-x, vertical rule
S_sw_bc: \xf3 # meta-s, low horizontal line
S_explode2: \xef # meta-o, high horizontal line
S_explode4: \xf8 # meta-x, vertical rule
S_explode6: \xf8 # meta-x, vertical rule
S_explode8: \xf3 # meta-s, low horizontal line
finish
#
# This is commented out because specifying alternate default set isn't
# implemented.
#
# DECgraphics_2: underscore (default for altar) can be hard to see if
# hero or highlighted pet is on the spot below (south of) it, making
# it look like part of slightly bigger block cursor. Bars are usually
# within walls and we have something else for doorless doorway so '#'
# for bars shouldn't be mistaken for the corridor symbol even by someone
# used to DECgraphics, at least not often enough to pose a problem.
# The pi symbol is small like lowercase but flat-topped like uppercase
# so could represent a side view of a raised platform or table.
#
# start: DECgraphics_2
# Defaults: DECgraphics # includes 'Handling: DEC'
# Description: variation of DECgraphics (iron bars:#, altar:pi)
# S_bars: '#' # (switch from pi to plain '#')
# S_altar: \xfb # meta-{, pi (switch from underscore)
# finish
#
start: MACgraphics
# Description: (pre-OSX: obsolete?)
# Restrictions: primary
Handling: MAC
S_vwall: \xba
S_hwall: \xcd
S_tlcorn: \xc9
S_trcorn: \xbb
S_blcorn: \xc8
S_brcorn: \xbc
S_crwall: \xce
S_tuwall: \xca
S_tdwall: \xcb
S_tlwall: \xb9
S_trwall: \xcc
S_ndoor: \xb0
S_vodoor: \xee
S_hodoor: \xee
S_vcdoor: \xef
S_hcdoor: \xef
S_bars: \xf0 # equivalency symbol
S_tree: \xf1 # plus-or-minus
S_corr: \xb0
S_grave: \xef # same as open door
S_pool: \xe0
finish
# symbols EOF

View File

@@ -1,4 +1,4 @@
$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.138 $ $NHDT-Date: 1571267989 2019/10/16 23:19:49 $
$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.139 $ $NHDT-Date: 1571313651 2019/10/17 12:00:51 $
This fixes36.3 file is here to capture information about updates in the 3.6.x
lineage following the release of 3.6.2 in May 2019. Please note, however,
@@ -185,6 +185,8 @@ fix hero still hiding under a statue shattered by a land mine
fix helping a monster out of a pit addressing a deleted trap
fix launched rolling boulder code accessing deleted trap
fix monster stepping on a land mine code accessing deleted trap
revise 'O' to show symbol sets in the same order they appear in the symbols
file and order the sets in dat/symbols to yield a sensible symset menu
Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository
@@ -280,6 +282,8 @@ curses: support symset:DECgraphics for map display
curses: enable the 'use_inverse' boolean option (via wincap WC_INVERSE flag)
for extended monster detection and black&white lava; forced to True
to override default of False (for tty's benefit)
curses: force 'O' command's menus for 'symset' and 'roguesymset' options to
be wider so that fewer entries with set descriptions will wrap
curses+'perm_invent': entries were wrapping without any control; usually not
noticeable because next entry overwrote, but visible for final entry
when whole inventory fit within the available height; looked ok with

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 rm.h $NHDT-Date: 1559994624 2019/06/08 11:50:24 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.61 $ */
/* NetHack 3.6 rm.h $NHDT-Date: 1571313651 2019/10/17 12:00:51 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.63 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Pasi Kallinen, 2017. */
/* NetHack may be freely redistributed. See license for details. */
@@ -299,6 +299,8 @@ struct symsetentry {
#define H_IBM 1
#define H_DEC 2
#define H_CURS 3
#define H_MAC 4 /* obsolete; needed so that the listing of available
* symsets by 'O' can skip it for !MAC_GRAPHICS_ENV */
extern const struct symdef defsyms[MAXPCHARS]; /* defaults */
extern const struct symdef def_warnsyms[WARNCOUNT];

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 drawing.c $NHDT-Date: 1546656404 2019/01/05 02:46:44 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.59 $ */
/* NetHack 3.6 drawing.c $NHDT-Date: 1571313651 2019/10/17 12:00:51 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.61 $ */
/* Copyright (c) NetHack Development Team 1992. */
/* NetHack may be freely redistributed. See license for details. */
@@ -255,9 +255,9 @@ static const uchar def_r_oc_syms[MAXOCLASSES] = {
#undef C
#ifdef TERMLIB
#if defined(TERMLIB) || defined(CURSES_GRAPHICS)
void NDECL((*decgraphics_mode_callback)) = 0; /* set in tty_start_screen() */
#endif /* TERMLIB */
#endif /* TERMLIB || CURSES */
#ifdef PC9800
void NDECL((*ibmgraphics_mode_callback)) = 0; /* set in tty_start_screen() */
@@ -496,17 +496,22 @@ int nondefault;
#ifdef PC9800
if (SYMHANDLING(H_IBM) && ibmgraphics_mode_callback)
(*ibmgraphics_mode_callback)();
else if (!symset[currentgraphics].name && ascgraphics_mode_callback)
else if (SYMHANDLING(H_UNK) && ascgraphics_mode_callback)
(*ascgraphics_mode_callback)();
#endif
#ifdef TERMLIB
#if defined(TERMLIB) || defined(CURSES_GRAPHICS)
/* curses doesn't assign any routine to dec..._callback but
probably does the expected initialization under the hood
for terminals capable of rendering DECgraphics */
if (SYMHANDLING(H_DEC) && decgraphics_mode_callback)
(*decgraphics_mode_callback)();
#endif
# ifdef CURSES_GRAPHICS
/* there aren't any symbol sets with CURS handling, and the
curses interface never assigns a routine to curses..._callback */
if (SYMHANDLING(H_CURS) && cursesgraphics_mode_callback)
(*cursesgraphics_mode_callback)();
# endif
#endif
} else {
init_l_symbols();
init_showsyms();
@@ -563,6 +568,7 @@ const char *known_handling[] = {
"IBM", /* H_IBM */
"DEC", /* H_DEC */
"CURS", /* H_CURS */
"MAC", /* H_MAC -- pre-OSX MACgraphics */
(const char *) 0,
};

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 files.c $NHDT-Date: 1562719337 2019/07/10 00:42:17 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.252 $ */
/* NetHack 3.6 files.c $NHDT-Date: 1571313652 2019/10/17 12:00:52 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.253 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Derek S. Ray, 2015. */
/* NetHack may be freely redistributed. See license for details. */
@@ -2111,7 +2111,7 @@ const char *name; /* name of option for error message */
break;
default:
gi_error:
gi_error:
raw_printf("Syntax error in %s", name);
wait_synch();
return count;
@@ -3063,9 +3063,10 @@ boolean FDECL((*proc), (char *));
}
ep = inbuf;
while (*ep == ' ' || *ep == '\t') ep++;
while (*ep == ' ' || *ep == '\t')
++ep;
/* lines beginning with '#' are comments. ignore empty lines. */
/* ingore empty lines and full-line comment lines */
if (!*ep || *ep == '#')
ignoreline = TRUE;
@@ -3074,9 +3075,9 @@ boolean FDECL((*proc), (char *));
/* merge now read line with previous ones, if necessary */
if (!ignoreline) {
len = strlen(inbuf) + 1;
len = (int) strlen(inbuf) + 1;
if (buf)
len += strlen(buf);
len += (int) strlen(buf);
tmpbuf = (char *) alloc(len);
if (buf) {
Sprintf(tmpbuf, "%s %s", buf, inbuf);
@@ -3100,6 +3101,7 @@ boolean FDECL((*proc), (char *));
if (match_varname(buf, "CHOOSE", 6)) {
char *section;
char *bufp = find_optparam(buf);
if (!bufp) {
config_error_add(
"Format is CHOOSE=section1,section2,...");
@@ -3259,13 +3261,19 @@ int which_set;
building a pick-list of possible symset
values from the file, so only do that */
if (symp->range == SYM_CONTROL) {
struct symsetentry *tmpsp;
struct symsetentry *tmpsp, *lastsp;
for (lastsp = symset_list; lastsp; lastsp = lastsp->next)
if (!lastsp->next)
break;
switch (symp->idx) {
case 0:
tmpsp = (struct symsetentry *) alloc(sizeof *tmpsp);
tmpsp->next = symset_list;
symset_list = tmpsp;
tmpsp->next = (struct symsetentry *) 0;
if (!lastsp)
symset_list = tmpsp;
else
lastsp->next = tmpsp;
tmpsp->idx = symset_count++;
tmpsp->name = dupstr(bufp);
tmpsp->desc = (char *) 0;
@@ -3277,21 +3285,22 @@ int which_set;
break;
case 2:
/* handler type identified */
tmpsp = symset_list; /* most recent symset */
tmpsp = lastsp; /* most recent symset */
for (i = 0; known_handling[i]; ++i)
if (!strcmpi(known_handling[i], bufp)) {
tmpsp->handling = i;
break; /* for loop */
}
break;
case 3: /* description:something */
tmpsp = symset_list; /* most recent symset */
case 3:
/* description:something */
tmpsp = lastsp; /* most recent symset */
if (tmpsp && !tmpsp->desc)
tmpsp->desc = dupstr(bufp);
break;
case 5:
/* restrictions: xxxx*/
tmpsp = symset_list; /* most recent symset */
tmpsp = lastsp; /* most recent symset */
for (i = 0; known_restrictions[i]; ++i) {
if (!strcmpi(known_restrictions[i], bufp)) {
switch (i) {
@@ -4103,7 +4112,7 @@ unsigned oid; /* book identifier */
}
}
cleanup:
cleanup:
(void) dlb_fclose(fp);
if (nowin_buf) {
/* one-line buffer */

View File

@@ -1,4 +1,4 @@
/* NetHack 3.6 options.c $NHDT-Date: 1571045295 2019/10/14 09:28:15 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.376 $ */
/* NetHack 3.6 options.c $NHDT-Date: 1571313653 2019/10/17 12:00:53 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.378 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Michael Allison, 2008. */
/* NetHack may be freely redistributed. See license for details. */
@@ -5336,8 +5336,8 @@ boolean setinitial, setfromfile;
MENU_UNSELECTED);
for (i = 0; i < numapes && ape; i++) {
any.a_void = (opt_idx == 1) ? 0 : ape;
/* length of pattern plus quotes (plus '<'/'>') is less than
BUFSZ */
/* length of pattern plus quotes (plus '<'/'>') is
less than BUFSZ */
Sprintf(apebuf, "\"%c%s\"", ape->grab ? '<' : '>',
ape->pattern);
add_menu(tmpwin, NO_GLYPH, &any, 0, 0, ATR_NONE, apebuf,
@@ -5383,18 +5383,27 @@ boolean setinitial, setfromfile;
symset[which_set].name = symset_name;
if (res && symset_list) {
int thissize, biggest = 0;
int thissize,
biggest = (int) (sizeof "Default Symbols" - sizeof ""),
big_desc = 0;
for (sl = symset_list; sl; sl = sl->next) {
/* check restrictions */
if (rogueflag ? sl->primary : sl->rogue)
continue;
#ifndef MAC_GRAPHICS_ENV
if (sl->handling == H_MAC)
continue;
#endif
setcount++;
/* find biggest name */
thissize = sl->name ? (int) strlen(sl->name) : 0;
if (thissize > biggest)
biggest = thissize;
thissize = sl->desc ? (int) strlen(sl->desc) : 0;
if (thissize > big_desc)
big_desc = thissize;
}
if (!setcount) {
pline("There are no appropriate %s symbol sets available.",
@@ -5402,10 +5411,48 @@ boolean setinitial, setfromfile;
return TRUE;
}
Sprintf(fmtstr, "%%-%ds %%s", biggest + 5);
Sprintf(fmtstr, "%%-%ds %%s", biggest + 2);
tmpwin = create_nhwindow(NHW_MENU);
start_menu(tmpwin);
any = zeroany;
#ifdef CURSES_GRAPHICS /* this ought to be handled within curses... */
/*
* Symbol sets are formatted in two columns, "name description",
* on selectable lines. curses bases menu width on the length
* of non-selectable lines (main header, separators if present,
* with trailing spaces ignored) and defaults to half the map.
* Without something like this separator (shown after the menu
* title and a blank line which follows that) to force a wider
* menu, entries with long descriptions wrap. That would be
* ok if wrapping operated on the same two columns, but the
* menu doesn't know anything about those and the description
* is wrapping into the next line's name column, making long
* descriptions--and menus containing them--hard to read.
*/
if (WINDOWPORT("curses")) {
char tmp1[BUFSZ], tmp2[BUFSZ], bigbuf[BUFSZ + 1 + BUFSZ];
/* 4: room for space+letter+paren+space, fake selector;
2: added to 'biggest' when constructing 'fmtstr';
1: space between symset name+2 and symset description */
if (4 + biggest + 2 + 1 > (int) sizeof tmp1 - 1)
biggest = (int) sizeof tmp1 - 1 - (4 + 2 + 1);
(void) memset((genericptr_t) tmp1, '-', biggest);
tmp1[biggest] = '\0';
if (big_desc > (int) sizeof tmp2 - 1)
big_desc = (int) sizeof tmp2 - 1;
(void) memset((genericptr_t) tmp2, '-', big_desc);
tmp2[big_desc] = '\0';
Sprintf(bigbuf, "%4s", "");
Sprintf(eos(bigbuf), fmtstr, tmp1, tmp2);
bigbuf[BUFSZ - 1] = '\0';
any.a_int = 0;
add_menu(tmpwin, NO_GLYPH, &any, 0, 0, ATR_NONE,
bigbuf, MENU_UNSELECTED);
}
#else
nhUse(big_desc);
#endif
any.a_int = 1;
add_menu(tmpwin, NO_GLYPH, &any, 0, 0, ATR_NONE,
"Default Symbols", MENU_UNSELECTED);
@@ -5414,6 +5461,10 @@ boolean setinitial, setfromfile;
/* check restrictions */
if (rogueflag ? sl->primary : sl->rogue)
continue;
#ifndef MAC_GRAPHICS_ENV
if (sl->handling == H_MAC)
continue;
#endif
if (sl->name) {
any.a_int = sl->idx + 2;