diff --git a/dat/symbols b/dat/symbols index 364c6db21..8e8a6349f 100644 --- a/dat/symbols +++ b/dat/symbols @@ -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 diff --git a/doc/fixes36.3 b/doc/fixes36.3 index 809ddab65..50d7d97c8 100644 --- a/doc/fixes36.3 +++ b/doc/fixes36.3 @@ -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 diff --git a/include/rm.h b/include/rm.h index becdd21a0..de1c8cfda 100644 --- a/include/rm.h +++ b/include/rm.h @@ -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]; diff --git a/src/drawing.c b/src/drawing.c index f29dbf3a2..2ac8ad28e 100644 --- a/src/drawing.c +++ b/src/drawing.c @@ -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, }; diff --git a/src/files.c b/src/files.c index 930d36ea2..f9d2dee8e 100644 --- a/src/files.c +++ b/src/files.c @@ -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 */ diff --git a/src/options.c b/src/options.c index 220f8f483..019a4544f 100644 --- a/src/options.c +++ b/src/options.c @@ -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;