Pull to resync.
This commit is contained in:
karnov
2015-05-03 22:08:07 -04:00
26 changed files with 494 additions and 192 deletions

4
Files
View File

@@ -322,6 +322,8 @@ include:
date.h onames.h pm.h vis_tab.h date.h onames.h pm.h vis_tab.h
(files generated by yacc (or copied from sys/share) at compile time) (files generated by yacc (or copied from sys/share) at compile time)
dgn_comp.h lev_comp.h dgn_comp.h lev_comp.h
(file for tiles support copied from win/share at compile time)
tile.h
(files for win32 that are moved into include at compile time) (files for win32 that are moved into include at compile time)
win32api.h win32api.h
@@ -342,6 +344,8 @@ nethack.ico
util: util:
(files generated by lex and yacc (or copied from sys/share) at compile time) (files generated by lex and yacc (or copied from sys/share) at compile time)
dgn_lex.c dgn_yacc.c lev_lex.c lev_yacc.c dgn_lex.c dgn_yacc.c lev_lex.c lev_yacc.c
(file generated for unix at compile time if various tiles utilities are built)
tiletxt.c
(files generated for win32 at compile time) (files generated for win32 at compile time)
uudecode.exe uudecode.exe

View File

@@ -35,6 +35,15 @@ MAP
....................................PP...PP................................. ....................................PP...PP.................................
....................................PP....PP................................ ....................................PP....PP................................
ENDMAP ENDMAP
# the forest beyond the river
REPLACE_TERRAIN:(37,0,59,19),'.','T', 5%
REPLACE_TERRAIN:(60,0,64,19),'.','T', 10%
REPLACE_TERRAIN:(65,0,75,19),'.','T', 20%
# guarantee a path and free spot for the portal
TERRAIN:(randline (37,7),(62,02),7), '.'
TERRAIN:(62,02),'.'
# Dungeon Description # Dungeon Description
REGION:(00,00,75,19),lit,"ordinary" REGION:(00,00,75,19),lit,"ordinary"
REGION:(09,05,11,05),unlit,"ordinary" REGION:(09,05,11,05),unlit,"ordinary"

View File

@@ -35,6 +35,9 @@ PP...............PPPPP................................PPPP...PPPP........PPP
PPP.............PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP....PPPPPP PPP.............PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP....PPPPPP
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
ENDMAP ENDMAP
REPLACE_TERRAIN:(01,01,74,18), 'P', '.', 10%
# Dungeon Description # Dungeon Description
REGION:(00,00,75,19),lit,"ordinary" REGION:(00,00,75,19),lit,"ordinary"
# Stairs # Stairs

View File

@@ -38,7 +38,12 @@ ENDMAP
# Dungeon Description # Dungeon Description
REGION:(00,00,75,19),lit,"ordinary" REGION:(00,00,75,19),lit,"ordinary"
REGION:(24,06,33,13),lit,"temple" REGION:(24,06,33,13),lit,"temple"
REPLACE_TERRAIN:(0,0,10,19),'.','T',10%
REPLACE_TERRAIN:(65,0,75,19),'.','T',10%
# Portal arrival point # Portal arrival point
TERRAIN:(05,04),'.'
BRANCH:(05,04,05,04),(0,0,0,0) BRANCH:(05,04,05,04),(0,0,0,0)
# Stairs # Stairs
STAIR:(52,09),down STAIR:(52,09),down
@@ -76,7 +81,7 @@ MONSTER:('@',"abbot"),(33,08)
MONSTER:('@',"abbot"),(33,11) MONSTER:('@',"abbot"),(33,11)
MONSTER:('@',"abbot"),(33,12) MONSTER:('@',"abbot"),(33,12)
# Non diggable walls # Non diggable walls
NON_DIGGABLE:(00,00,75,19) NON_DIGGABLE:(18,03,55,16)
# Random traps # Random traps
TRAP:"dart",(20,09) TRAP:"dart",(20,09)
TRAP:"dart",(20,10) TRAP:"dart",(20,10)

View File

@@ -38,6 +38,11 @@ ENDMAP
# Dungeon Description # Dungeon Description
REGION:(00,00,75,19),lit,"ordinary" REGION:(00,00,75,19),lit,"ordinary"
REGION:(24,06,33,13),lit,"temple" REGION:(24,06,33,13),lit,"temple"
REPLACE_TERRAIN:(0,0,10,19),'.','T',10%
REPLACE_TERRAIN:(65,0,75,19),'.','T',10%
TERRAIN:(05,04),'.'
# Portal arrival point # Portal arrival point
BRANCH:(05,04,05,04),(0,0,0,0) BRANCH:(05,04,05,04),(0,0,0,0)
# Stairs # Stairs
@@ -77,7 +82,7 @@ MONSTER:('@',"acolyte"),(33,08)
MONSTER:('@',"acolyte"),(33,11) MONSTER:('@',"acolyte"),(33,11)
MONSTER:('@',"acolyte"),(33,12) MONSTER:('@',"acolyte"),(33,12)
# Non diggable walls # Non diggable walls
NON_DIGGABLE:(00,00,75,19) NON_DIGGABLE:(18,03,55,16)
# Random traps # Random traps
TRAP:"dart",(20,09) TRAP:"dart",(20,09)
TRAP:"dart",(20,10) TRAP:"dart",(20,10)

View File

@@ -13,11 +13,12 @@
MAZE: "Ran-strt",'.' MAZE: "Ran-strt",'.'
FLAGS: noteleport,hardfloor,arboreal FLAGS: noteleport,hardfloor,arboreal
INIT_MAP:mines,'.','.',true,true,lit,false INIT_MAP:mines,'.','.',true,true,lit,false
REPLACE_TERRAIN:(0,0,76,19),'.', 'T', 5%
GEOMETRY:left,center GEOMETRY:left,center
#1234567890123456789012345678901234567890123456789012345678901234567890 #1234567890123456789012345678901234567890123456789012345678901234567890
MAP MAP
.. xx
................................... . ................................... x
.. .. .. ..
.. ...............F............... .. .. ...............F............... ..
. .. .F. .. . . .. .F. .. .
@@ -35,8 +36,8 @@ MAP
. .. .F. .. . . .. .F. .. .
.. ...............F............... .. .. ...............F............... ..
.. .. .. ..
................................... . ................................... x
.. xx
ENDMAP ENDMAP
# Dungeon Description # Dungeon Description
REGION:(00,00,40,20),lit,"ordinary" REGION:(00,00,40,20),lit,"ordinary"

View File

@@ -39,6 +39,10 @@ MAP
ENDMAP ENDMAP
# Dungeon Description # Dungeon Description
#REGION:(00,00,75,20),lit,"ordinary" #REGION:(00,00,75,20),lit,"ordinary"
$streets = selection: floodfill(0,12)
# The down stairs is at one of the 4 "exits". The others are mimics, # The down stairs is at one of the 4 "exits". The others are mimics,
# mimicing stairwells. # mimicing stairwells.
$place = { (33,0), (0,12), (25,20), (75,05) } $place = { (33,0), (0,12), (25,20), (75,05) }
@@ -149,26 +153,14 @@ MONSTER: ('l',"leprechaun"),(74,04),hostile
# South exit # South exit
MONSTER: ('l',"leprechaun"),(25,19),hostile MONSTER: ('l',"leprechaun"),(25,19),hostile
MONSTER: ('n',"water nymph"),(25,18),hostile MONSTER: ('n',"water nymph"),(25,18),hostile
# Wandering the streets. What I'd really like for this is a random # Wandering the streets.
# location, but make sure we're on a given type, e.g. street (if they LOOP [ 4 + 1d3 ] {
# existed, of course). MONSTER: ('n',"water nymph"),rndcoord($streets),hostile
MONSTER: ('n',"water nymph"),(07,05),hostile MONSTER: ('l',"leprechaun"),rndcoord($streets),hostile
MONSTER: ('l',"leprechaun"),(28,06),hostile }
MONSTER: ('n',"water nymph"),(38,07),hostile LOOP [ 7 + 1d3 ] {
MONSTER: ('l',"leprechaun"),(45,01),hostile MONSTER: (':',"chameleon"),rndcoord($streets),hostile
MONSTER: ('n',"water nymph"),(59,07),hostile }
MONSTER: ('l',"leprechaun"),(62,14),hostile
MONSTER: ('n',"water nymph"),(71,14),hostile
MONSTER: ('l',"leprechaun"),(39,13),hostile
MONSTER: ('n',"water nymph"),(18,14),hostile
MONSTER: (':',"chameleon"),(19,08),hostile
MONSTER: (':',"chameleon"),(22,08),hostile
MONSTER: (':',"chameleon"),(16,08),hostile
MONSTER: (':',"chameleon"),random,hostile
MONSTER: (':',"chameleon"),random,hostile
MONSTER: (':',"chameleon"),random,hostile
MONSTER: (':',"chameleon"),random,hostile
MONSTER: (':',"chameleon"),random,hostile
# #
# The "locate" level for the quest. # The "locate" level for the quest.

View File

@@ -247,7 +247,7 @@ GEOMETRY:center,center
MAP MAP
....................... .......................
......---------.---------...... ......-------------------......
......----.................----...... ......----.................----......
....----.....-------------.....----.... ....----.....-------------.....----....
....--.....----...........----.....--.... ....--.....----...........----.....--....
@@ -255,11 +255,11 @@ MAP
...|....--....---.......---....--....|... ...|....--....---.......---....--....|...
....|...||...---...--+--...---...||...|.... ....|...||...---...--+--...---...||...|....
....|...|....|....|-...-|....|....|...|.... ....|...|....|....|-...-|....|....|...|....
....|...|....|....+.....+....|........|.... ....|...|....|....+.....+....|....|...|....
....|...|....|....|-...-|....|....|...|.... ....|...|....|....|-...-|....|....|...|....
....|...||...---...--+--...---...||...|.... ....|...||...---...--+--...---...||...|....
...|....--....---.......---....--....|... ...|....--....---.......---....--....|...
...||....---....----.----....---....||... ...||....---....---------....---....||...
....--.....----...........----.....--.... ....--.....----...........----.....--....
....----.....-------------.....----.... ....----.....-------------.....----....
......----.................----...... ......----.................----......
@@ -278,6 +278,18 @@ DOOR:closed,(22,12)
DOOR:closed,(25,10) DOOR:closed,(25,10)
# Stairs # Stairs
STAIR:$place[0],up STAIR:$place[0],up
# Holes in the concentric ring walls
$place = { (22,14),(30,10),(22, 6),(14,10) }
SHUFFLE:$place
TERRAIN:$place[0],'.'
$place = { (22, 4),(35,10),(22,16),( 9,10) }
SHUFFLE:$place
TERRAIN:$place[0],'.'
$place = { (22, 2),(22,18) }
SHUFFLE:$place
TERRAIN:$place[0],'.'
# Non diggable walls # Non diggable walls
NON_DIGGABLE:(00,00,44,19) NON_DIGGABLE:(00,00,44,19)
# Objects # Objects

View File

@@ -12,28 +12,41 @@
# #
MAZE: "Val-strt",' ' MAZE: "Val-strt",' '
FLAGS: noteleport,hardfloor,icedpools FLAGS: noteleport,hardfloor,icedpools
INIT_MAP:solidfill,'I'
$pools = selection: random & random & random & random & random &
random & random & random & random & random & random &
random & random &
grow(west, random) &
grow(north, random) &
grow(random & random)
# This works because the random coordinates in $pools are evaluated once,
# when the variable is initialized.
TERRAIN:grow($pools), 'P'
TERRAIN:$pools, 'L'
GEOMETRY:center,center GEOMETRY:center,center
MAP MAP
IIIIIIPPPIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
IIIIPPPPPIIIIIIII..IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII...IIIIIIIIIIIIIIIIIIIII xxxxxxxxxxxxxxxxx..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...xxxxxxxxxxxxxxxxxxxxx
IIIIPLLPPIIIIIII..IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII..{..IIIIIIIIIIIIIIIIIIII xxxxxxxxxxxxxxxx..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx..{..xxxxxxxxxxxxxxxxxxxx
IIIIPLPPIIIIIII..IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII.....IIIIIIPPPIIIIIIIIII xxxxxxxxxxxxxxx..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.....xxxxxxxxxxxxxxxxxxx
IIIPPPPPIIIIII..IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII.IIIIIPPLPIIIIIIIIII xxxxxxxxxxxxxx..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxx
IIIIPIIIIIIII..IIIIPPPIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII.IIIIIPLPPIIIIIIIIII xxxxxxxxxxxxx..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxx
IIIIIIIIIIII..IIIIIPLPPIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII..IIIIIPPPIIIIIIIIIII xxxxxxxxxxxx..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx..xxxxxxxxxxxxxxxxxxx
IIIIIIII.....IIIIIIPPPIIII|----------------|IIIIIPPPIII.IIIIIIIIIIIIIIIIIIII xxxxxxxx.....xxxxxxxxxxxxx|----------------|xxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxx
IIIIIII..III...IIIIIIIIIII|................|IIIIIPLPII..IIIIIIIIIIIIIIIIIIII xxxxxxx..xxx...xxxxxxxxxxx|................|xxxxxxxxxx..xxxxxxxxxxxxxxxxxxxx
IIIIII..IIIIII......IIIII.|................|.IIIIPPPII.IIIIIIIIIIIIIIIIIIIII xxxxxx..xxxxxx......xxxxx.|................|.xxxxxxxxx.xxxxxxxxxxxxxxxxxxxxx
IIIII..IIIIIIIIIIII.......+................+...IIIIIII.IIIIIIIIIIIIIIIIIIIII xxxxx..xxxxxxxxxxxx.......+................+...xxxxxxx.xxxxxxxxxxxxxxxxxxxxx
IIII..IIIIIIIII.....IIIII.|................|.I...IIIII.IIIIIIIIIIIIIIIIIIIII xxxx..xxxxxxxxx.....xxxxx.|................|.x...xxxxx.xxxxxxxxxxxxxxxxxxxxx
III..IIIIIIIII..IIIIIIIIII|................|IIII.......IIIIIIIIIIIIIIIIIIIII xxx..xxxxxxxxx..xxxxxxxxxx|................|xxxx.......xxxxxxxxxxxxxxxxxxxxx
IIII..IIIIIII..IIIIIIIIIII|----------------|IIIIIIIIII...IIIIIIIIIIIIIIIIIII xxxx..xxxxxxx..xxxxxxxxxxx|----------------|xxxxxxxxxx...xxxxxxxxxxxxxxxxxxx
IIIIII..IIII..IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIPPPPIIII...IIIIIIIIIIIIIIIII xxxxxx..xxxx..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...xxxxxxxxxxxxxxxxx
IIIIIII......IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIPLLPPIIIII...IIIIIIIIIIIIIII xxxxxxx......xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...xxxxxxxxxxxxxxx
IIIIPPPIP...IIIIIIIIIIIPIIIIIIIIIIIIIIIIIIIIIIIIPPPPIIIIIIII...I......IIIIII xxxxxxxxx...xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...x......xxxxxx
IIIPPLPPIIIIIIIIIIIIIIPPPIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII.........IIIII xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.........xxxxx
IIIIPPPIIIIIIIIIIIIIIPPLPIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII.......IIIIII xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.......xxxxxx
IIIIIIIIIIIIIIIIIIIIIIPPPIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ENDMAP ENDMAP
# Dungeon Description # Dungeon Description
REGION:(00,00,75,19),lit,"ordinary" REGION:(00,00,75,19),lit,"ordinary"

View File

@@ -34,6 +34,12 @@ MAP
..........C.C.........................C............C...........}}}}}........ ..........C.C.........................C............C...........}}}}}........
......................CCC.C................................................. ......................CCC.C.................................................
ENDMAP ENDMAP
# first do cloud everywhere
REPLACE_TERRAIN:(0,0, 75,19), '.', 'C', 10%
# then replace clouds inside the tower back to floor
REPLACE_TERRAIN:(13,5, 33,15), 'C', '.', 100%
# Dungeon Description # Dungeon Description
REGION:(00,00,75,19),lit,"ordinary" REGION:(00,00,75,19),lit,"ordinary"
REGION:(35,00,49,03),unlit,"ordinary" REGION:(35,00,49,03),unlit,"ordinary"
@@ -43,6 +49,7 @@ REGION:(30,10,31,10),unlit,"ordinary"
# Stairs # Stairs
STAIR:(30,10),down STAIR:(30,10),down
# Portal arrival point # Portal arrival point
TERRAIN:(63,06),'.'
BRANCH:(63,06,63,06),(0,0,0,0) BRANCH:(63,06,63,06),(0,0,0,0)
# Doors # Doors
DOOR:closed,(31,09) DOOR:closed,(31,09)
@@ -108,46 +115,60 @@ FLAGS: hardfloor
GEOMETRY:center,center GEOMETRY:center,center
MAP MAP
............. ....................................................... ............. .......................................................
.............. .............}}}}}}}.}}}}}}}}}}}}}}}}}}}.}}}}}}}....... .............. .............}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}.......
.............. ..............}.................................}....... .............. ..............}.................................}.......
.............. ..............}.---------S---------------------.}....... .............. ..............}.-------------------------------.}.......
............... .........C....}.|.............................|.}....... ............... .........C....}.|.............................|.}.......
............... ..........C....}.|.---------------------------.|.}....... ............... ..........C....}.|.---------------------------.|.}.......
............... .........CCC.....|.|.........................|.|......... ............... .........CCC...}.|.|.........................|.|.}.......
................ ....C....CCC...}.|.|.---S-------------------.|.|.}....... ................ ....C....CCC...}.|.|.-----------------------.|.|.}.......
.......C..C..... .....C....CCC...}.|.|.|......+.......+......|.|.|.}....... .......C..C..... .....C....CCC...}.|.|.|......+.......+......|.|.|.}.......
.............C..CC.....C....CCC...}.|.|.|......|-------|......|.|.|.}....... .............C..CC.....C....CCC...}.|.|.|......|-------|......|.|.|.}.......
................ ....C....CCC...}.|.|.|......|.......S......|.|.|.}....... ................ ....C....CCC...}.|.|.|......|.......|......|.|.|.}.......
......C..C..... ....C....CCC...}.|.|.|......|-------|......|.|.|.}....... ......C..C..... ....C....CCC...}.|.|.|......|-------|......|.|.|.}.......
............C.. ...C....CCC...}.|.|.|......+.......+......|.|.|.}....... ............C.. ...C....CCC...}.|.|.|......+.......+......|.|.|.}.......
........C...... ....C....CCC...}.|.|.-----------------------.|.|.}....... ........C...... ....C....CCC...}.|.|.-----------------------.|.|.}.......
....C......C... ........CCC.....|.|.........................|.|......... ....C......C... ........CCC...}.|.|.........................|.|.}.......
......C..C.... .........C....}.|.--------------------S------.|.}....... ......C..C.... .........C....}.|.---------------------------.|.}.......
.............. .........C....}.|.............................|.}....... .............. .........C....}.|.............................|.}.......
............. ..............}.-------------------------------.}....... ............. ..............}.-------------------------------.}.......
............. .............}.................................}....... ............. .............}.................................}.......
............. .............}}}}}}}.}}}}}}}}}}}}}}}}}}}.}}}}}}}....... ............. .............}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}.......
............. ....................................................... ............. .......................................................
ENDMAP ENDMAP
REPLACE_TERRAIN:(0,0,30,20), '.', 'C', 15%
REPLACE_TERRAIN:(68,0,75,20), '.', '}', 25%
REPLACE_TERRAIN:(34,1,68,19), '}', '.', 2%
# Dungeon Description # Dungeon Description
REGION:(00,00,75,20),lit,"ordinary" REGION:(00,00,75,20),lit,"ordinary"
REGION:(37,04,65,16),unlit,"ordinary" REGION:(37,04,65,16),unlit,"ordinary",filled,irregular {
REGION:(41,08,46,12),lit,"ordinary" ROOMDOOR:true,closed,north|south|west|east,random
REGION:(56,08,61,12),lit,"ordinary" }
REGION:(39,06,63,14),unlit,"ordinary",filled,irregular {
ROOMDOOR:true,closed,north|south|west|east,random
}
REGION:(41,08,46,12),lit,"ordinary",filled,irregular {
ROOMDOOR:true,closed,north|south|west,random
}
REGION:(56,08,61,12),lit,"ordinary",filled,irregular {
ROOMDOOR:true,closed,north|south|east,random
}
REGION:(48,08,54,08),unlit,"ordinary" REGION:(48,08,54,08),unlit,"ordinary"
REGION:(48,12,54,12),unlit,"ordinary" REGION:(48,12,54,12),unlit,"ordinary"
REGION:(48,10,54,10),unlit,"ordinary" REGION:(48,10,54,10),unlit,"ordinary",filled,irregular {
ROOMDOOR:true,closed,north|south|west|east,random
}
# Doors # Doors
DOOR:locked,(45,03)
DOOR:locked,(43,07)
DOOR:locked,(58,15)
DOOR:locked,(55,10)
DOOR:locked,(55,08) DOOR:locked,(55,08)
DOOR:locked,(55,12) DOOR:locked,(55,12)
DOOR:locked,(47,08) DOOR:locked,(47,08)
DOOR:locked,(47,12) DOOR:locked,(47,12)
# Stairs # Stairs
TERRAIN:(03,17),'.'
STAIR:(03,17),up STAIR:(03,17),up
STAIR:(48,10),down STAIR:(48,10),down
# Non diggable walls # Non diggable walls

View File

@@ -30,6 +30,32 @@ MAP
|.........................................................................| |.........................................................................|
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
ENDMAP ENDMAP
$terrains = TERRAIN:{'-', 'F', 'L', 'T', 'C'}
SHUFFLE:$terrains
[50%]: SWITCH [ 4 ] {
CASE 0:
TERRAIN:line (10,8),(65, 8), $terrains[0]
BREAK
CASE 1:
TERRAIN:line (15,4),(15, 13), $terrains[0]
TERRAIN:line (59,4),(59, 13), $terrains[0]
BREAK
CASE 2:
TERRAIN:line (10,8),(38, 8), $terrains[0]
TERRAIN:line (37,8),(65, 8), $terrains[0]
TERRAIN:line (37,3),(37, 8), $terrains[0]
TERRAIN:line (37,8),(37,14), $terrains[0]
BREAK
CASE 3:
TERRAIN:rect (4,4,70,13), $terrains[0]
TERRAIN:line (25, 4),(50, 4), '.'
TERRAIN:line (25,13),(50,13), '.'
BREAK
DEFAULT:
}
# Dungeon Description # Dungeon Description
REGION:(01,01,73,16),lit,"ordinary" REGION:(01,01,73,16),lit,"ordinary"
# Stairs # Stairs
@@ -561,6 +587,12 @@ MAP
---------------------------------------------- ----------------------------------------------
ENDMAP ENDMAP
IF [40%] {
$terrain = TERRAIN:{ 'L', '}', 'T', '.', '-', 'C' }
SHUFFLE:$terrain
REPLACE_TERRAIN:(0,0,74,17),'F', $terrain[0], 100%
}
REGION:(01,01,73,16),lit,"ordinary" REGION:(01,01,73,16),lit,"ordinary"
STAIR:random,up STAIR:random,up
@@ -654,6 +686,15 @@ MAP
....................................................................... .......................................................................
ENDMAP ENDMAP
IF [33%] {
# occasionally it's not a fog maze
$terrain = TERRAIN:{ 'L', '}', 'T', '-', 'F' }
SHUFFLE:$terrain
# break it up a bit
REPLACE_TERRAIN:(0,0,70,18),'C', '.', 5%
REPLACE_TERRAIN:(0,0,70,18),'C', $terrain[0], 100%
}
REGION:(00,00,70,18),lit,"ordinary" REGION:(00,00,70,18),lit,"ordinary"
# when falling down on this level, never end up in the fog maze # when falling down on this level, never end up in the fog maze

View File

@@ -45,6 +45,9 @@ MAP
.. ..
ENDMAP ENDMAP
REPLACE_TERRAIN:(0,0,75,19), ' ', ('.', unlit), 5%
# Since there are no stairs, this forces the hero's initial placement # Since there are no stairs, this forces the hero's initial placement
TELEPORT_REGION:(69,16,69,16),(0,0,0,0) TELEPORT_REGION:(69,16,69,16),(0,0,0,0)
PORTAL:(0,0,75,19),(65,13,75,19),"air" PORTAL:(0,0,75,19),(65,13,75,19),"air"
@@ -503,6 +506,19 @@ MAP
|...............| |...............|
----------------- -----------------
ENDMAP ENDMAP
IF [75%] {
TERRAIN:fillrect (17,14, 30,18),'.'
TERRAIN:fillrect (44,14, 57,18),'.'
WALLIFY
$hall = selection:floodfill(37,18)
LOOP [6 + 3d4] {
MONSTER:('A',"Angel"),rndcoord($hall),noalign,hostile
[50%]: MONSTER:random,rndcoord($hall),hostile
}
}
# Rider locations # Rider locations
$place = { (23,9),(37,14),(51,9) } $place = { (23,9),(37,14),(51,9) }
SHUFFLE: $place SHUFFLE: $place

View File

@@ -31,6 +31,24 @@ MAP
| |..|..B...........| |.|..........|.| |.|........| | | |..|..B...........| |.|..........|.| |.|........| |
---------------------------------------------------------------------------- ----------------------------------------------------------------------------
ENDMAP ENDMAP
# Make the path somewhat unpredictable
# If you get "lucky", you may have to go through all three graveyards.
IF [50%] {
TERRAIN:line (50,8),(53,8), '-'
TERRAIN:line (40,8),(43,8), 'B'
}
IF [50%] {
TERRAIN:(27,12),'|'
TERRAIN:line (27,3),(29,3), 'B'
TERRAIN:(28,2), '-'
}
IF [50%] {
TERRAIN:line (16,10),(16,11),'|'
TERRAIN:line (9,13),(14,13), 'B'
}
# Dungeon Description # Dungeon Description
# The shrine to Moloch. # The shrine to Moloch.
REGION:(01,06,05,14),lit,"temple" REGION:(01,06,05,14),lit,"temple"

View File

@@ -193,44 +193,44 @@ ROOM: "ordinary" , lit, (3,3), (center,center), (31,15) {
FOUNTAIN: (17, 5) FOUNTAIN: (17, 5)
FOUNTAIN: (13, 8) FOUNTAIN: (13, 8)
SUBROOM: "ordinary", random, (2,0), (2,2) { [75%]: SUBROOM: "ordinary", random, (2,0), (2,2) {
ROOMDOOR: false, closed, west, random ROOMDOOR: false, closed, west, random
} }
SUBROOM: "ordinary", unlit, (5,0), (2,2) { [75%]: SUBROOM: "ordinary", unlit, (5,0), (2,2) {
ROOMDOOR: false, closed, south, random ROOMDOOR: false, closed, south, random
} }
SUBROOM: "ordinary", random, (8,0), (2,2) { [75%]: SUBROOM: "ordinary", random, (8,0), (2,2) {
ROOMDOOR: false, closed, east, random ROOMDOOR: false, closed, east, random
} }
SUBROOM: "ordinary", lit, (16,0), (2,2) { [75%]: SUBROOM: "ordinary", lit, (16,0), (2,2) {
ROOMDOOR: false, closed, west, random ROOMDOOR: false, closed, west, random
} }
SUBROOM: "ordinary", unlit, (19,0), (2,2) { [75%]: SUBROOM: "ordinary", unlit, (19,0), (2,2) {
ROOMDOOR: false, closed, south, random ROOMDOOR: false, closed, south, random
} }
SUBROOM: "ordinary", random, (22,0), (2,2) { [75%]: SUBROOM: "ordinary", random, (22,0), (2,2) {
ROOMDOOR: false, locked, south, random ROOMDOOR: false, locked, south, random
MONSTER: ('G', "gnome"), random MONSTER: ('G', "gnome"), random
} }
SUBROOM: "ordinary", unlit, (25,0), (2,2) { [75%]: SUBROOM: "ordinary", unlit, (25,0), (2,2) {
ROOMDOOR: false, closed, east, random ROOMDOOR: false, closed, east, random
} }
SUBROOM: "ordinary", lit, (2,5), (2,2) { [75%]: SUBROOM: "ordinary", lit, (2,5), (2,2) {
ROOMDOOR: false, closed, north, random ROOMDOOR: false, closed, north, random
} }
SUBROOM: "ordinary", lit, (5,5), (2,2) { [75%]: SUBROOM: "ordinary", lit, (5,5), (2,2) {
ROOMDOOR: false, closed, south, random ROOMDOOR: false, closed, south, random
} }
SUBROOM: "ordinary", random, (8,5), (2,2) { [75%]: SUBROOM: "ordinary", random, (8,5), (2,2) {
ROOMDOOR: false, locked, north, random ROOMDOOR: false, locked, north, random
MONSTER: ('G', "gnome"), random MONSTER: ('G', "gnome"), random
} }
@@ -251,7 +251,7 @@ SUBROOM: "candle shop", lit, (11,10), (4,3) {
ROOMDOOR: false, closed, east, random ROOMDOOR: false, closed, east, random
} }
SUBROOM: "ordinary", unlit, (7,10), (3,3) { [75%]: SUBROOM: "ordinary", unlit, (7,10), (3,3) {
ROOMDOOR: false, locked, north, random ROOMDOOR: false, locked, north, random
MONSTER: ('G', "gnome"), random MONSTER: ('G', "gnome"), random
} }
@@ -263,7 +263,7 @@ SUBROOM: "temple", lit, (19,5), (4,4) {
MONSTER: ('G', "gnomish wizard"), random MONSTER: ('G', "gnomish wizard"), random
} }
SUBROOM: "ordinary", lit, (18,10), (4,3) { [75%]: SUBROOM: "ordinary", lit, (18,10), (4,3) {
ROOMDOOR: false, locked, west, random ROOMDOOR: false, locked, west, random
MONSTER: ('G', "gnome lord"), random MONSTER: ('G', "gnome lord"), random
} }
@@ -534,6 +534,32 @@ MAP
----- ------ ------- --------------- ----- ------ ------- ---------------
ENDMAP ENDMAP
IF [75%] {
IF [50%] {
TERRAIN:line (25,8),(25,9), '|'
} ELSE {
TERRAIN:line (16,13),(17,13), '-'
}
}
IF [75%] {
IF [50%] {
TERRAIN:line (36,10),(36,11), '|'
} ELSE {
TERRAIN:line (32,15),(33,15), '-'
}
}
IF [50%] {
TERRAIN:fillrect (21,4,22,5), '.'
TERRAIN:line (14,9),(14,10), '|'
}
IF [50%] {
TERRAIN:(46,13), '|'
TERRAIN:line (43,5),(47,5), '-'
TERRAIN:line (42,6),(46,6), '.'
TERRAIN:line (46,7),(47,7), '.'
}
[50%]: TERRAIN:fillrect (69,11,71,11), '-'
STAIR:(01,01),up STAIR:(01,01),up
STAIR:(46,03),down STAIR:(46,03),down
FOUNTAIN:(50,09) FOUNTAIN:(50,09)
@@ -693,19 +719,19 @@ ROOM: "ordinary" , lit, (3,3), (center,center), (30,15) {
FOUNTAIN: (12, 07) FOUNTAIN: (12, 07)
FOUNTAIN: (11, 13) FOUNTAIN: (11, 13)
SUBROOM: "ordinary", random, (2,2), (4,2) { [75%]: SUBROOM: "ordinary", random, (2,2), (4,2) {
ROOMDOOR: false, closed, south, random ROOMDOOR: false, closed, south, random
} }
SUBROOM: "ordinary", random, (7,2), (2,2) { [75%]: SUBROOM: "ordinary", random, (7,2), (2,2) {
ROOMDOOR: false, closed, north, random ROOMDOOR: false, closed, north, random
} }
SUBROOM: "ordinary", random, (7,5), (2,2) { [75%]: SUBROOM: "ordinary", random, (7,5), (2,2) {
ROOMDOOR: false, closed, south, random ROOMDOOR: false, closed, south, random
} }
SUBROOM: "ordinary", lit, (10,2), (3,4) { [75%]: SUBROOM: "ordinary", lit, (10,2), (3,4) {
MONSTER:('G',"gnome"),random MONSTER:('G',"gnome"),random
MONSTER:('Y',"monkey"),random MONSTER:('Y',"monkey"),random
MONSTER:('Y',"monkey"),random MONSTER:('Y',"monkey"),random
@@ -713,16 +739,16 @@ SUBROOM: "ordinary", lit, (10,2), (3,4) {
ROOMDOOR: false, closed, south, random ROOMDOOR: false, closed, south, random
} }
SUBROOM: "ordinary", random, (14,2), (4,2) { [75%]: SUBROOM: "ordinary", random, (14,2), (4,2) {
ROOMDOOR: false, closed, south, 0 ROOMDOOR: false, closed, south, 0
MONSTER: 'n', random MONSTER: 'n', random
} }
SUBROOM: "ordinary", random, (16,5), (2,2) { [75%]: SUBROOM: "ordinary", random, (16,5), (2,2) {
ROOMDOOR: false, closed, south, random ROOMDOOR: false, closed, south, random
} }
SUBROOM: "ordinary", unlit, (19,2), (2,2) { [75%]: SUBROOM: "ordinary", unlit, (19,2), (2,2) {
ROOMDOOR: false, locked, east, random ROOMDOOR: false, locked, east, random
MONSTER: ('G',"gnome king"),random MONSTER: ('G',"gnome king"),random
} }
@@ -731,7 +757,7 @@ SUBROOM: "food shop" [50%], lit, (19,5), (2,3) {
ROOMDOOR: false, closed, south, random ROOMDOOR: false, closed, south, random
} }
SUBROOM: "ordinary", random, (2,7), (2,2) { [75%]: SUBROOM: "ordinary", random, (2,7), (2,2) {
ROOMDOOR: false, closed, east, random ROOMDOOR: false, closed, east, random
} }
@@ -743,7 +769,7 @@ SUBROOM: "candle shop", lit, (5,10),(3,3) {
ROOMDOOR: false, closed, north, random ROOMDOOR: false, closed, north, random
} }
SUBROOM: "ordinary", random, (11,10), (2,2) { [75%]: SUBROOM: "ordinary", random, (11,10), (2,2) {
ROOMDOOR: false, locked, west, random ROOMDOOR: false, locked, west, random
MONSTER: 'G',random MONSTER: 'G',random
} }
@@ -752,11 +778,11 @@ SUBROOM: "shop" [60%], lit, (14,10), (2,3) {
ROOMDOOR: false, closed, north, random ROOMDOOR: false, closed, north, random
} }
SUBROOM: "ordinary", random, (17,11), (4,2) { [75%]: SUBROOM: "ordinary", random, (17,11), (4,2) {
ROOMDOOR: false, closed, north, random ROOMDOOR: false, closed, north, random
} }
SUBROOM: "ordinary", random, (22,11), (2,2) { [75%]: SUBROOM: "ordinary", random, (22,11), (2,2) {
ROOMDOOR: false, closed, south, random ROOMDOOR: false, closed, south, random
SINK: (00,00) SINK: (00,00)
} }
@@ -953,6 +979,31 @@ MAP
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
ENDMAP ENDMAP
IF [50%] {
TERRAIN:(55,14),'-'
TERRAIN:(56,14),'-'
TERRAIN:(61,15),'|'
TERRAIN:(52,5), 'S'
DOOR:locked, (52,5)
}
IF [50%] {
TERRAIN:(18,1), '|'
TERRAIN:rect (7,12, 8,13), '.'
}
IF [50%] {
TERRAIN:(49,4), '|'
TERRAIN:(21,5), '.'
}
IF [50%] {
IF [50%] {
TERRAIN:(22,1), '|'
} ELSE {
TERRAIN:(50,7), '-'
TERRAIN:(51,7), '-'
}
}
# Dungeon Description # Dungeon Description
FOUNTAIN:(14,13) FOUNTAIN:(14,13)
REGION:(23,03,48,06),lit,"ordinary" REGION:(23,03,48,06),lit,"ordinary"

View File

@@ -162,7 +162,7 @@ MAP
|..---|.}--.--}.|..|.......|. |..---|.}--.--}.|..|.......|.
|.....|.}}---}}.|..|.......|. |.....|.}}---}}.|..|.......|.
|.....S.}}}}}}}.|..|.......|. |.....S.}}}}}}}.|..|.......|.
|.....|.........|..S.......|. |.....|.........|..|.......|.
----------------------------. ----------------------------.
ENDMAP ENDMAP
STAIR:levregion(01,00,79,20),(0,0,28,12),up STAIR:levregion(01,00,79,20),(0,0,28,12),up
@@ -175,9 +175,10 @@ REGION:(07,03,15,11),unlit,"morgue",unfilled
REGION:(17,06,18,11),unlit,"beehive" REGION:(17,06,18,11),unlit,"beehive"
# make the entry chamber a real room; it affects monster arrival; # make the entry chamber a real room; it affects monster arrival;
# `unfilled' is a kludge to force an ordinary room to remain a room # `unfilled' is a kludge to force an ordinary room to remain a room
REGION:(20,06,26,11),unlit,"ordinary",unfilled REGION:(20,06,26,11),unlit,"ordinary",unfilled {
ROOMDOOR:true, closed, north|west, random
}
DOOR:closed,(18,05) DOOR:closed,(18,05)
DOOR:closed,(19,11)
LADDER:(11,07),up LADDER:(11,07),up
# Non diggable walls # Non diggable walls
# Walls inside the moat stay diggable # Walls inside the moat stay diggable

View File

@@ -1,4 +1,4 @@
/* NetHack 3.5 cmd.c $NHDT-Date$ $NHDT-Branch$:$NHDT-Revision$ */ /* NetHack 3.5 cmd.c $NHDT-Date: 1430534601 2015/05/02 02:43:21 $ $NHDT-Branch: master $:$NHDT-Revision: 1.186 $ */
/* NetHack 3.5 cmd.c $Date: 2013/03/16 01:44:28 $ $Revision: 1.162 $ */ /* NetHack 3.5 cmd.c $Date: 2013/03/16 01:44:28 $ $Revision: 1.162 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */ /* NetHack may be freely redistributed. See license for details. */
@@ -1935,27 +1935,54 @@ int final;
} }
if (Half_physical_damage) enlght_halfdmg(HALF_PHDAM, final); if (Half_physical_damage) enlght_halfdmg(HALF_PHDAM, final);
if (Half_spell_damage) enlght_halfdmg(HALF_SPDAM, final); if (Half_spell_damage) enlght_halfdmg(HALF_SPDAM, final);
/* polymorph and other shape change */
if (Protection_from_shape_changers) if (Protection_from_shape_changers)
you_are("protected from shape changers", you_are("protected from shape changers",
from_what(PROT_FROM_SHAPE_CHANGERS)); from_what(PROT_FROM_SHAPE_CHANGERS));
if (Polymorph) you_are("polymorphing", from_what(POLYMORPH)); if (Unchanging) {
const char *what = 0;
if (!Upolyd) /* Upolyd handled below after current form */
you_can("not change from your current form",
from_what(UNCHANGING));
/* blocked shape changes */
if (Polymorph)
what = !final ? "polymorph" : "have polymorphed";
else if (u.ulycn >= LOW_PM)
what = !final ? "change shape" : "have changed shape";
if (what) {
Sprintf(buf, "would %s periodically", what);
/* omit from_what(UNCHANGING); too verbose */
enl_msg(You_, buf, buf,
" if not locked into your current form", "");
}
} else if (Polymorph) {
you_are("polymorphing periodically", from_what(POLYMORPH));
}
if (Polymorph_control) if (Polymorph_control)
you_have("polymorph control",from_what(POLYMORPH_CONTROL)); you_have("polymorph control",from_what(POLYMORPH_CONTROL));
if (u.ulycn >= LOW_PM) { if (Upolyd && u.umonnum != u.ulycn) {
Strcpy(buf, an(mons[u.ulycn].mname)); /* foreign shape (except were-form which is handled below) */
Sprintf(buf, "polymorphed into %s", an(youmonst.data->mname));
if (wizard) Sprintf(eos(buf), " (%d)", u.mtimedone);
you_are(buf,""); you_are(buf,"");
} }
if (Upolyd) { if (lays_eggs(youmonst.data) && flags.female) /* Upolyd */
if (u.umonnum == u.ulycn) Strcpy(buf, "in beast form");
else Sprintf(buf, "polymorphed into %s", an(youmonst.data->mname));
if (wizard) Sprintf(eos(buf), " (%d)", u.mtimedone);
you_are(buf,"");
if (lays_eggs(youmonst.data) && flags.female)
you_can("lay eggs", ""); you_can("lay eggs", "");
if (u.ulycn >= LOW_PM) {
/* "you are a werecreature [in beast form]" */
Strcpy(buf, an(mons[u.ulycn].mname));
if (u.umonnum == u.ulycn) {
Strcat(buf, " in beast form");
if (wizard) Sprintf(eos(buf), " (%d)", u.mtimedone);
}
you_are(buf,"");
} }
if (Unchanging) you_can("not change from your current form", if (Unchanging && Upolyd) /* !Upolyd handled above */
from_what(UNCHANGING)); you_can("not change from your current form",
from_what(UNCHANGING));
if (Hate_silver) you_are("harmed by silver",""); if (Hate_silver) you_are("harmed by silver","");
/* movement and non-armor-based protection */
if (Fast) you_are(Very_fast ? "very fast" : "fast",from_what(FAST)); if (Fast) you_are(Very_fast ? "very fast" : "fast",from_what(FAST));
if (Reflecting) you_have("reflection",from_what(REFLECTING)); if (Reflecting) you_have("reflection",from_what(REFLECTING));
if (Free_action) you_have("free action",from_what(FREE_ACTION)); if (Free_action) you_have("free action",from_what(FREE_ACTION));

View File

@@ -1,4 +1,4 @@
/* NetHack 3.5 dig.c $NHDT-Date: 1426465434 2015/03/16 00:23:54 $ $NHDT-Branch: debug $:$NHDT-Revision: 1.73 $ */ /* NetHack 3.5 dig.c $NHDT-Date: 1430697288 2015/05/03 23:54:48 $ $NHDT-Branch: master $:$NHDT-Revision: 1.86 $ */
/* NetHack 3.5 dig.c $Date: 2012/02/16 03:01:37 $ $Revision: 1.67 $ */ /* NetHack 3.5 dig.c $Date: 2012/02/16 03:01:37 $ $Revision: 1.67 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */ /* NetHack may be freely redistributed. See license for details. */
@@ -1862,6 +1862,10 @@ long timeout; /* unused */
setmnotwielded(obj->ocarry,obj); setmnotwielded(obj->ocarry,obj);
MON_NOWEP(obj->ocarry); MON_NOWEP(obj->ocarry);
} }
} else if (obj->where == OBJ_MIGRATING) {
/* clear destination flag so that obfree()'s check for
freeing a worn object doesn't get a false hit */
obj->owornmask = 0L;
} }
rot_organic(arg, timeout); rot_organic(arg, timeout);
if (on_floor) { if (on_floor) {

View File

@@ -1111,7 +1111,30 @@ register const char *let,*word;
} }
return(allownone ? &zeroobj : (struct obj *) 0); return(allownone ? &zeroobj : (struct obj *) 0);
} }
if(ilet == def_oc_syms[COIN_CLASS].sym) { /* since gold is now kept in inventory, we need to do processing for
select-from-invent before checking whether gold has been picked */
if (ilet == '?' || ilet == '*') {
char *allowed_choices = (ilet == '?') ? lets : (char *)0;
long ctmp = 0;
if (ilet == '?' && !*lets && *altlets)
allowed_choices = altlets;
ilet = display_pickinv(allowed_choices, TRUE,
allowcnt ? &ctmp : (long *)0);
if (!ilet) continue;
if (allowcnt && ctmp >= 0) {
cnt = ctmp;
if (!cnt) prezero = TRUE;
allowcnt = 2;
}
if (ilet == '\033') {
if (flags.verbose)
pline1(Never_mind);
return (struct obj *)0;
}
/* they typed a letter (not a space) at the prompt */
}
if (ilet == def_oc_syms[COIN_CLASS].sym) {
if (!usegold) { if (!usegold) {
You("cannot %s gold.", word); You("cannot %s gold.", word);
return(struct obj *)0; return(struct obj *)0;
@@ -1124,43 +1147,21 @@ register const char *let,*word;
*/ */
if (allowcnt == 2 && cnt <= 0) { if (allowcnt == 2 && cnt <= 0) {
if (cnt < 0 || !prezero) if (cnt < 0 || !prezero)
pline_The( pline_The(
"LRS would be very interested to know you have that much."); "LRS would be very interested to know you have that much.");
return (struct obj *)0; return (struct obj *)0;
} }
} }
if(ilet == '?' || ilet == '*') { if (allowcnt == 2 && !strcmp(word,"throw")) {
char *allowed_choices = (ilet == '?') ? lets : (char *)0;
long ctmp = 0;
if (ilet == '?' && !*lets && *altlets)
allowed_choices = altlets;
ilet = display_pickinv(allowed_choices, TRUE,
allowcnt ? &ctmp : (long *)0);
if(!ilet) continue;
if (allowcnt && ctmp >= 0) {
cnt = ctmp;
if (!cnt) prezero = TRUE;
allowcnt = 2;
}
if(ilet == '\033') {
if(flags.verbose)
pline1(Never_mind);
return((struct obj *)0);
}
/* they typed a letter (not a space) at the prompt */
}
if(allowcnt == 2 && !strcmp(word,"throw")) {
/* permit counts for throwing gold, but don't accept /* permit counts for throwing gold, but don't accept
* counts for other things since the throw code will * counts for other things since the throw code will
* split off a single item anyway */ * split off a single item anyway */
if (ilet != def_oc_syms[COIN_CLASS].sym) if (ilet != def_oc_syms[COIN_CLASS].sym)
allowcnt = 1; allowcnt = 1;
if(cnt == 0 && prezero) return((struct obj *)0); if (cnt == 0 && prezero) return (struct obj *)0;
if(cnt > 1) { if (cnt > 1) {
You("can only throw one item at a time."); You("can only throw one item at a time.");
continue; continue;
} }
} }
context.botl = 1; /* May have changed the amount of money */ context.botl = 1; /* May have changed the amount of money */
@@ -1913,8 +1914,8 @@ long* out_cnt;
/* wiz_identify stuffed the wiz_identify cmd character /* wiz_identify stuffed the wiz_identify cmd character
into iflags.override_ID */ into iflags.override_ID */
Sprintf(prompt, "Debug Identify (%s to permanently identify)", Sprintf(prompt, "Debug Identify (%s to permanently identify)",
visctrl(iflags.override_ID)); visctrl(iflags.override_ID));
add_menu(win, NO_GLYPH, &any,' ', iflags.override_ID, ATR_NONE, add_menu(win, NO_GLYPH, &any,'_', iflags.override_ID, ATR_NONE,
prompt, MENU_UNSELECTED); prompt, MENU_UNSELECTED);
} }
nextclass: nextclass:

View File

@@ -1,4 +1,4 @@
/* NetHack 3.5 mkobj.c $NHDT-Date: 1430472720 2015/05/01 09:32:00 $ $NHDT-Branch: master $:$NHDT-Revision: 1.95 $ */ /* NetHack 3.5 mkobj.c $NHDT-Date: 1430697424 2015/05/03 23:57:04 $ $NHDT-Branch: master $:$NHDT-Revision: 1.97 $ */
/* NetHack 3.5 mkobj.c $Date: 2012/03/10 02:49:08 $ $Revision: 1.70 $ */ /* NetHack 3.5 mkobj.c $Date: 2012/03/10 02:49:08 $ $Revision: 1.70 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */ /* NetHack may be freely redistributed. See license for details. */
@@ -2032,9 +2032,12 @@ const char *mesg;
switch (obj->where) { switch (obj->where) {
case OBJ_INVENT: case OBJ_INVENT:
case OBJ_MINVENT: case OBJ_MINVENT:
case OBJ_MIGRATING:
sanity_check_worn(obj); sanity_check_worn(obj);
break; break;
case OBJ_MIGRATING:
/* migrating objects overload the owornmask field
with a destination code; skip attempt to check it */
break;
case OBJ_FLOOR: case OBJ_FLOOR:
/* note: ball and chain can also be OBJ_FREE, but not across /* note: ball and chain can also be OBJ_FREE, but not across
turns so this sanity check shouldn't encounter that */ turns so this sanity check shouldn't encounter that */
@@ -2180,32 +2183,44 @@ struct obj *obj;
/* [W_ART,W_ARTI are property bits for items which aren't worn] */ /* [W_ART,W_ARTI are property bits for items which aren't worn] */
}; };
char maskbuf[60]; char maskbuf[60];
unsigned long allmask = 0L; const char *what;
unsigned long owornmask, allmask = 0L;
int i, n = 0; int i, n = 0;
/* use owornmask for testing and bit twiddling, but use original
obj->owornmask for printing */
owornmask = obj->owornmask;
/* figure out how many bits are set, and also which are viable */
for (i = 0; wearbits[i]; ++i) { for (i = 0; wearbits[i]; ++i) {
if ((owornmask & wearbits[i]) != 0L) ++n;
allmask |= wearbits[i]; allmask |= wearbits[i];
if ((obj->owornmask & wearbits[i]) != 0L) ++n; }
if (n == 2 && carried(obj) && obj == uball && (owornmask & W_BALL) != 0L
&& (owornmask & (W_WEP|W_SWAPWEP|W_QUIVER)) != 0L) {
/* chained ball can be wielded/alt-wielded/quivered; if so,
pretend it's not chained in order to check the weapon pointer
(we've already verified the ball pointer by successfully passing
the if-condition to get here...) */
owornmask &= ~W_BALL;
n = 1;
} }
if (n > 1) { if (n > 1) {
/* multiple bits set */ /* multiple bits set */
Sprintf(maskbuf, "worn mask (multiple) 0x%08lx", obj->owornmask); Sprintf(maskbuf, "worn mask (multiple) 0x%08lx", obj->owornmask);
insane_object(obj, ofmt0, maskbuf, (struct monst *)0); insane_object(obj, ofmt0, maskbuf, (struct monst *)0);
} }
if ((obj->owornmask & ~allmask) != 0L if ((owornmask & ~allmask) != 0L
|| (carried(obj) && (obj->owornmask & W_SADDLE) != 0L)) { || (carried(obj) && (owornmask & W_SADDLE) != 0L)) {
/* non-wearable bit(s) set */ /* non-wearable bit(s) set */
Sprintf(maskbuf, "worn mask (bogus)) 0x%08lx", obj->owornmask); Sprintf(maskbuf, "worn mask (bogus)) 0x%08lx", obj->owornmask);
insane_object(obj, ofmt0, maskbuf, (struct monst *)0); insane_object(obj, ofmt0, maskbuf, (struct monst *)0);
} }
if (n == 1 && (carried(obj) if (n == 1 && (carried(obj) || (owornmask & (W_BALL|W_CHAIN)) != 0L)) {
|| (obj->owornmask & (W_BALL|W_CHAIN)) != 0L)) { what = 0;
const char *what = 0;
/* verify that obj in hero's invent (or ball/chain elsewhere) /* verify that obj in hero's invent (or ball/chain elsewhere)
with owornmask of W_foo is the object pointed to by ufoo */ with owornmask of W_foo is the object pointed to by ufoo */
switch (obj->owornmask) { switch (owornmask) {
case W_ARM: if (obj != uarm) what = "armor"; /* suit */ case W_ARM: if (obj != uarm) what = "suit";
break; break;
case W_ARMC: if (obj != uarmc) what = "cloak"; case W_ARMC: if (obj != uarmc) what = "cloak";
break; break;
@@ -2246,6 +2261,50 @@ struct obj *obj;
insane_object(obj, ofmt0, maskbuf, (struct monst *)0); insane_object(obj, ofmt0, maskbuf, (struct monst *)0);
} }
} }
if (n == 1 && (carried(obj) || (owornmask & (W_BALL|W_CHAIN)) != 0L
|| mcarried(obj))) {
/* check for items worn in invalid slots; practically anything can
be wielded/alt-wielded/quivered, so tests on those are limited */
what = 0;
if (owornmask & W_ARMOR) {
if (obj->oclass != ARMOR_CLASS) what = "armor";
} else if (owornmask & (W_WEP|W_SWAPWEP|W_QUIVER)) {
/* monsters don't maintain alternate weapon or quiver */
if (mcarried(obj) && (owornmask & (W_SWAPWEP|W_QUIVER)) != 0L)
what = (owornmask & W_SWAPWEP) != 0L ? "monst alt weapon?"
: "monst quiver?";
/* hero can quiver gold but not wield it (hence not alt-wield
it either); also catches monster wielding gold */
else if (obj->oclass == COIN_CLASS
&& (owornmask & (W_WEP|W_SWAPWEP)) != 0L)
what = (owornmask & W_WEP) != 0L ? "weapon" : "alt weapon";
} else if (owornmask & W_AMUL) {
if (obj->oclass != AMULET_CLASS) what = "amulet";
} else if (owornmask & W_RING) {
if (obj->oclass != RING_CLASS && obj->otyp != MEAT_RING)
what = "ring";
} else if (owornmask & W_TOOL) {
if (obj->otyp != BLINDFOLD && obj->otyp != TOWEL
&& obj->otyp != LENSES) what = "blindfold";
} else if (owornmask & W_BALL) {
if (obj->oclass != BALL_CLASS) what = "chained ball";
} else if (owornmask & W_CHAIN) {
if (obj->oclass != CHAIN_CLASS) what = "chain";
} else if (owornmask & W_SADDLE) {
if (obj->otyp != SADDLE) what = "saddle";
}
if (what) {
char oclassname[30];
struct monst *mon = mcarried(obj) ? obj->ocarry : 0;
/* if we've found a potion worn in the amulet slot,
this yields "worn (potion amulet)" */
Strcpy(oclassname, def_oc_syms[(uchar)obj->oclass].name);
Sprintf(maskbuf, "worn (%s %s)",
makesingular(oclassname), what);
insane_object(obj, ofmt0, maskbuf, mon);
}
}
#else /* not (BETA || DEBUG) */ #else /* not (BETA || DEBUG) */
/* dummy use of obj to avoid "arg not used" complaint */ /* dummy use of obj to avoid "arg not used" complaint */
if (!obj) insane_object(obj, ofmt0, "<null>", (struct monst *)0); if (!obj) insane_object(obj, ofmt0, "<null>", (struct monst *)0);

View File

@@ -895,7 +895,7 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */ /* YYFINAL -- State number of the termination state. */
#define YYFINAL 9 #define YYFINAL 9
/* YYLAST -- Last index in YYTABLE. */ /* YYLAST -- Last index in YYTABLE. */
#define YYLAST 1031 #define YYLAST 1033
/* YYNTOKENS -- Number of terminals. */ /* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 194 #define YYNTOKENS 194
@@ -1176,9 +1176,9 @@ static const yytype_int16 yypact[] =
-654, 309, 387, 555, 556, 558, 733, 733, -654, -654, -654, 309, 387, 555, 556, 558, 733, 733, -654, -654,
66, -31, 671, 46, 698, 571, 567, 672, 573, 66, 66, -31, 671, 46, 698, 571, 567, 672, 573, 66,
215, 700, 566, 581, 66, 587, 359, 589, 66, 359, 215, 700, 566, 581, 66, 587, 359, 589, 66, 359,
-18, -18, 672, 663, 664, -654, -654, 541, 544, 521, -18, -18, 672, 663, 664, -654, -654, 592, 593, 521,
-654, -18, -18, 307, -654, 595, 590, 672, 597, 66, -654, -18, -18, 307, -654, 598, 596, 672, 597, 66,
67, 186, 659, 730, 604, 669, -1, 8, -654, 606, 67, 186, 660, 730, 604, 669, -1, 8, -654, 606,
607, -1, -1, -1, 66, 609, 89, -18, 141, 12, 607, -1, -1, -1, 66, 609, 89, -18, 141, 12,
57, 665, -654, 52, 52, -654, 156, 605, -38, 697, 57, 665, -654, 52, 52, -654, 156, 605, -38, 697,
-654, -654, 331, 347, 168, 168, -654, -654, -654, 56, -654, -654, 331, 347, 168, 168, -654, -654, -654, 56,
@@ -1339,9 +1339,9 @@ static const yytype_int16 yypgoto[] =
-654, -654, -654, -654, -654, -654, -654, -654, -654, -654, -654, -654, -654, -654, -654, -654, -654, -654, -654, -654,
-654, -654, -654, -654, -654, -654, -654, 421, -653, 200, -654, -654, -654, -654, -654, -654, -654, 421, -653, 200,
-654, -385, -492, -654, -654, -654, 369, 682, -168, -136, -654, -385, -492, -654, -654, -654, 369, 682, -168, -136,
-312, 583, 150, -308, -386, -485, -418, -473, 596, -459, -312, 583, 150, -308, -386, -485, -418, -473, 602, -459,
-132, -55, -654, 396, -654, -654, 610, -654, -654, 781, -132, -55, -654, 396, -654, -654, 610, -654, -654, 778,
-135, 576, -392, -654, -654, -654, -654, -654, -124, -654 -135, 575, -392, -654, -654, -654, -654, -654, -124, -654
}; };
/* YYDEFGOTO[NTERM-NUM]. */ /* YYDEFGOTO[NTERM-NUM]. */
@@ -1442,8 +1442,8 @@ static const yytype_int16 yytable[] =
433, 719, 720, 721, 722, 723, 724, 725, 726, 727, 433, 719, 720, 721, 722, 723, 724, 725, 726, 727,
728, 442, 443, 444, 446, 451, 452, 310, 311, 312, 728, 442, 443, 444, 446, 451, 452, 310, 311, 312,
313, 314, 453, 310, 311, 312, 313, 314, 455, 857, 313, 314, 453, 310, 311, 312, 313, 314, 455, 857,
457, 463, 464, 480, 481, 864, 493, 465, 483, 819, 457, 463, 464, 465, 466, 864, 480, 493, 483, 819,
466, 202, 203, 193, 494, 495, 496, 501, 502, 16, 481, 202, 203, 193, 494, 495, 496, 501, 502, 16,
507, 526, -159, 537, 194, 195, 554, 17, 845, 552, 507, 526, -159, 537, 194, 195, 554, 17, 845, 552,
18, 19, 20, 21, 22, 23, 24, 25, 26, 555, 18, 19, 20, 21, 22, 23, 24, 25, 26, 555,
557, 853, 27, 28, 29, 558, 561, 586, 30, 31, 557, 853, 27, 28, 29, 558, 561, 586, 30, 31,
@@ -1472,8 +1472,8 @@ static const yytype_int16 yytable[] =
839, 840, 833, 841, 843, 846, 848, 850, 849, 10, 839, 840, 833, 841, 843, 846, 848, 850, 849, 10,
851, 172, 855, 856, 434, 861, 863, 339, 166, 865, 851, 172, 855, 856, 434, 861, 863, 339, 166, 865,
508, 807, 560, 292, 796, 802, 753, 299, 826, 222, 508, 807, 560, 292, 796, 802, 753, 299, 826, 222,
847, 838, 731, 437, 668, 698, 556, 547, 0, 535, 847, 838, 731, 437, 668, 698, 556, 374, 0, 535,
374, 581 581, 0, 0, 547
}; };
static const yytype_int16 yycheck[] = static const yytype_int16 yycheck[] =
@@ -1550,8 +1550,8 @@ static const yytype_int16 yycheck[] =
132, 97, 98, 99, 100, 101, 102, 103, 104, 105, 132, 97, 98, 99, 100, 101, 102, 103, 104, 105,
106, 3, 131, 136, 131, 5, 140, 185, 186, 187, 106, 3, 131, 136, 131, 5, 140, 185, 186, 187,
188, 189, 131, 185, 186, 187, 188, 189, 131, 855, 188, 189, 131, 185, 186, 187, 188, 189, 131, 855,
131, 58, 58, 128, 134, 861, 67, 186, 131, 784, 131, 58, 58, 131, 131, 861, 128, 67, 131, 784,
186, 59, 60, 139, 4, 131, 67, 131, 131, 6, 134, 59, 60, 139, 4, 131, 67, 131, 131, 6,
131, 136, 77, 131, 150, 151, 3, 14, 831, 138, 131, 136, 77, 131, 150, 151, 3, 14, 831, 138,
17, 18, 19, 20, 21, 22, 23, 24, 25, 131, 17, 18, 19, 20, 21, 22, 23, 24, 25, 131,
134, 844, 29, 30, 31, 4, 139, 131, 35, 36, 134, 844, 29, 30, 31, 4, 139, 131, 35, 36,
@@ -1580,8 +1580,8 @@ static const yytype_int16 yycheck[] =
4, 134, 192, 134, 134, 131, 134, 134, 129, 5, 4, 134, 192, 134, 134, 131, 134, 134, 129, 5,
134, 55, 131, 131, 336, 131, 860, 192, 49, 134, 134, 55, 131, 131, 336, 131, 860, 192, 49, 134,
396, 767, 450, 164, 754, 762, 678, 169, 795, 139, 396, 767, 450, 164, 754, 762, 678, 169, 795, 139,
833, 821, 653, 341, 603, 629, 443, 431, -1, 419, 833, 821, 653, 341, 603, 629, 443, 249, -1, 419,
249, 455 455, -1, -1, 431
}; };
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1634,7 +1634,7 @@ static const yytype_uint16 yystos[] =
335, 132, 132, 132, 209, 207, 335, 321, 3, 3, 335, 132, 132, 132, 209, 207, 335, 321, 3, 3,
133, 297, 3, 131, 136, 344, 131, 335, 64, 65, 133, 297, 3, 131, 136, 344, 131, 335, 64, 65,
271, 5, 140, 131, 335, 131, 208, 131, 335, 208, 271, 5, 140, 131, 335, 131, 208, 131, 335, 208,
323, 323, 344, 58, 58, 186, 186, 58, 267, 344, 323, 323, 344, 58, 58, 131, 131, 58, 267, 344,
323, 323, 3, 7, 133, 158, 159, 328, 329, 344, 323, 323, 3, 7, 133, 158, 159, 328, 329, 344,
128, 134, 344, 131, 335, 55, 59, 316, 59, 61, 128, 134, 344, 131, 335, 55, 59, 316, 59, 61,
62, 317, 320, 67, 4, 131, 67, 352, 59, 133, 62, 317, 320, 67, 4, 131, 67, 352, 59, 133,

View File

@@ -1,5 +1,5 @@
# Makefile for NetHack's utility programs. # Makefile for NetHack's utility programs.
# NetHack 3.5 Makefile.utl $NHDT-Date$ $NHDT-Branch$:$NHDT-Revision$ # NetHack 3.5 Makefile.utl $NHDT-Date: 1430639195 2015/05/03 07:46:35 $ $NHDT-Branch: master $:$NHDT-Revision: 1.19 $
# NetHack 3.5 Makefile.utl $Date: 2012/01/10 17:47:30 $ $Revision: 1.18 $ # NetHack 3.5 Makefile.utl $Date: 2012/01/10 17:47:30 $ $Revision: 1.18 $
# Root of source tree: # Root of source tree:
@@ -325,8 +325,13 @@ xpm2img.ttp: xpm2img.o bitmfile.o
tile2beos: tile2beos.o $(TEXT_IO) tile2beos: tile2beos.o $(TEXT_IO)
$(CC) $(LFLAGS) -o tile2beos tile2beos.o $(TEXT_IO) -lbe $(CC) $(LFLAGS) -o tile2beos tile2beos.o $(TEXT_IO) -lbe
tilemap: ../win/share/tilemap.c $(HACK_H) #--compiling and linking in one step leaves extra debugging files (in their
$(CC) $(CFLAGS) $(LFLAGS) -o tilemap ../win/share/tilemap.c $(LIBS) # own subdirectories!) on OSX; compile and link separately to suppress
# that without mucking about with extra OS-specific CFLAGS and/or LFLAGS
#tilemap: ../win/share/tilemap.c $(HACK_H)
# $(CC) $(CFLAGS) $(LFLAGS) -o tilemap ../win/share/tilemap.c $(LIBS)
tilemap: tilemap.o
$(CC) $(LFLAGS) -o tilemap tilemap.o $(LIBS)
../src/tile.c: tilemap ../src/tile.c: tilemap
./tilemap ./tilemap
@@ -334,9 +339,17 @@ tilemap: ../win/share/tilemap.c $(HACK_H)
cp ../win/share/tile.h ../include/tile.h cp ../win/share/tile.h ../include/tile.h
tiletext.o: ../win/share/tiletext.c $(CONFIG_H) ../include/tile.h tiletext.o: ../win/share/tiletext.c $(CONFIG_H) ../include/tile.h
$(CC) $(CFLAGS) -c ../win/share/tiletext.c $(CC) $(CFLAGS) -c ../win/share/tiletext.c
tiletxt.o: ../win/share/tilemap.c $(HACK_H) tiletxt.c: ./Makefile
$(CC) $(CFLAGS) -c -DTILETEXT ../win/share/tilemap.c echo '/* alternate compilation for tilemap.c to create tiletxt.o' > tiletxt.c
mv tilemap.o tiletxt.o echo ' that does not rely on "cc -c -o tiletxt.o tilemap.c"' >> tiletxt.c
echo ' since many pre-POSIX compilers did not support that */' >> tiletxt.c
echo '#define TILETEXT' >> tiletxt.c
echo '#include "../win/share/tilemap.c"' >> tiletxt.c
echo '/*tiletxt.c*/' >> tiletxt.c
tiletxt.o: tiletxt.c ../win/share/tilemap.c $(HACK_H)
$(CC) $(CFLAGS) -c tiletxt.c
tilemap.o: ../win/share/tilemap.c $(HACK_H)
$(CC) $(CFLAGS) -c ../win/share/tilemap.c
gifread.o: ../win/share/gifread.c $(CONFIG_H) ../include/tile.h gifread.o: ../win/share/gifread.c $(CONFIG_H) ../include/tile.h
$(CC) $(CFLAGS) -c ../win/share/gifread.c $(CC) $(CFLAGS) -c ../win/share/gifread.c
@@ -402,7 +415,7 @@ clean:
spotless: clean spotless: clean
-rm -f lev_lex.c lev_yacc.c dgn_lex.c dgn_yacc.c -rm -f lev_lex.c lev_yacc.c dgn_lex.c dgn_yacc.c
-rm -f ../include/lev_comp.h ../include/dgn_comp.h -rm -f ../include/lev_comp.h ../include/dgn_comp.h
-rm -f ../include/tile.h -rm -f ../include/tile.h tiletxt.c
-rm -f makedefs lev_comp dgn_comp recover dlb -rm -f makedefs lev_comp dgn_comp recover dlb
-rm -f gif2txt txt2ppm tile2x11 tile2img.ttp xpm2img.ttp tilemap -rm -f gif2txt txt2ppm tile2x11 tile2img.ttp xpm2img.ttp tilemap

20
util/.gitignore vendored
View File

@@ -1,13 +1,19 @@
dgn_yacc.c
dgn_lex.c dgn_lex.c
makedefs dgn_yacc.c
tilemap
dgn_comp
lev_lex.c lev_lex.c
lev_yacc.c lev_yacc.c
tile2x11 tiletxt.c
makedefs
dgn_comp
lev_comp lev_comp
tileedit
tile2bmp
dlb dlb
recover recover
tilemap
tileedit
tile2x11
tile2bmp
tile2beos
gif2txt
txt2ppm
tile2img.ttp
xpm2ppm.ttp

View File

@@ -2450,11 +2450,11 @@ ter_selection_x : coord_or_var
{ {
add_opvars(splev, "o", VA_PASS1(SPO_SEL_FILLRECT)); add_opvars(splev, "o", VA_PASS1(SPO_SEL_FILLRECT));
} }
| line_ID coord_or_var '-' coord_or_var | line_ID coord_or_var ',' coord_or_var
{ {
add_opvars(splev, "o", VA_PASS1(SPO_SEL_LINE)); add_opvars(splev, "o", VA_PASS1(SPO_SEL_LINE));
} }
| randline_ID coord_or_var '-' coord_or_var ',' math_expr_var | randline_ID coord_or_var ',' coord_or_var ',' math_expr_var
{ {
/* randline (x1,y1),(x2,y2), roughness */ /* randline (x1,y1),(x2,y2), roughness */
add_opvars(splev, "o", VA_PASS1(SPO_SEL_RNDLINE)); add_opvars(splev, "o", VA_PASS1(SPO_SEL_RNDLINE));

View File

@@ -1,10 +1,10 @@
/* $NHDT-Date: 1430640199 2015/05/03 08:03:19 $ $NHDT-Branch: master $:$NHDT-Revision: 1.3 $ */
/* $Date: 2002/03/17 20:02:47 $ $Revision: 1.2 $ */
/* /*
* Convert the given input files into an output file that is expected * Convert the given input files into an output file that is expected
* by nethack. * by nethack.
* *
* $NHDT-Date$ $NHDT-Branch$:$NHDT-Revision$
* $Date: 2002/03/17 20:02:47 $ $Revision: 1.2 $
*
* Assumptions: * Assumptions:
* + Two dimensional byte arrays are in row order and are not padded * + Two dimensional byte arrays are in row order and are not padded
* between rows (x11_colormap[][]). * between rows (x11_colormap[][]).
@@ -28,7 +28,7 @@ static unsigned char
pix_to_colormap(pix) pix_to_colormap(pix)
pixel pix; pixel pix;
{ {
int i; unsigned i;
for (i = 0; i < header.ncolors; i++) { for (i = 0; i < header.ncolors; i++) {
if (pix.r == ColorMap[CM_RED][i] && if (pix.r == ColorMap[CM_RED][i] &&
@@ -80,9 +80,9 @@ convert_tiles(tb_ptr, total)
static void static void
merge_text_colormap() merge_text_colormap()
{ {
int i, j; unsigned i, j;
for (i = 0; i < colorsinmap; i++) { for (i = 0; i < (unsigned)colorsinmap; i++) {
for (j = 0; j < header.ncolors; j++) for (j = 0; j < header.ncolors; j++)
if (x11_colormap[j][CM_RED] == ColorMap[CM_RED][i] && if (x11_colormap[j][CM_RED] == ColorMap[CM_RED][i] &&
x11_colormap[j][CM_GREEN] == ColorMap[CM_GREEN][i] && x11_colormap[j][CM_GREEN] == ColorMap[CM_GREEN][i] &&

View File

@@ -1,4 +1,4 @@
/* NetHack 3.5 tilemap.c $NHDT-Date: 1429464668 2015/04/19 17:31:08 $ $NHDT-Branch: master $:$NHDT-Revision: 1.18 $ */ /* NetHack 3.5 tilemap.c $NHDT-Date: 1430621065 2015/05/03 02:44:25 $ $NHDT-Branch: master $:$NHDT-Revision: 1.19 $ */
/* SCCS Id: @(#)tilemap.c 3.5 2000/06/04 */ /* SCCS Id: @(#)tilemap.c 3.5 2000/06/04 */
/* NetHack may be freely redistributed. See license for details. */ /* NetHack may be freely redistributed. See license for details. */
@@ -177,7 +177,7 @@ int set, entry;
i = entry - tilenum; i = entry - tilenum;
if (i < (MAXEXPCHARS * EXPL_MAX)) { if (i < (MAXEXPCHARS * EXPL_MAX)) {
if (set == OTH_GLYPH) { if (set == OTH_GLYPH) {
static char *explosion_types[] = { /* hack.h */ static const char *explosion_types[] = { /* hack.h */
"dark", "noxious", "muddy", "wet", "dark", "noxious", "muddy", "wet",
"magical", "fiery", "frosty" "magical", "fiery", "frosty"
}; };

View File

@@ -1,4 +1,4 @@
/* NetHack 3.5 tiletext.c $NHDT-Date: 1429484196 2015/04/19 22:56:36 $ $NHDT-Branch: master $:$NHDT-Revision: 1.6 $ */ /* NetHack 3.5 tiletext.c $NHDT-Date: 1430640200 2015/05/03 08:03:20 $ $NHDT-Branch: master $:$NHDT-Revision: 1.7 $ */
/* NetHack 3.5 tiletext.c $Date: 2009/05/06 10:59:03 $ $Revision: 1.4 $ */ /* NetHack 3.5 tiletext.c $Date: 2009/05/06 10:59:03 $ $Revision: 1.4 $ */
/* SCCS Id: @(#)tiletext.c 3.5 1999/10/24 */ /* SCCS Id: @(#)tiletext.c 3.5 1999/10/24 */
/* NetHack may be freely redistributed. See license for details. */ /* NetHack may be freely redistributed. See license for details. */
@@ -286,8 +286,8 @@ const char *type;
/* Fill placeholder with noise */ /* Fill placeholder with noise */
if ( !placeholder_init ) { if ( !placeholder_init ) {
placeholder_init++; placeholder_init++;
for ( i=0; i<sizeof(placeholder); i++ ) for (i = 0; i < (int)sizeof placeholder; i++)
((char*)placeholder)[i]=i%256; ((char *)placeholder)[i] = i % 256;
} }
read_text_colormap(tile_file); read_text_colormap(tile_file);