1
0
Fork 0
mirror of https://codeberg.org/noisytoot/notnotdnethack.git synced 2024-09-19 14:05:02 +01:00
notnotdnethack/dat/Bard.des
chris 8ffe22b69a Monster smiths, pt 2
Long delayed forge integration. Also implements treesingers.

Some smith monsters need forges to do their thing. If a monster is also a shopkeeper in their own shop, that counts as having a forge.
-Oona, Dracae, and Shadowsmiths DON'T need forges.
-Treesingers need live Trees.
-Smith monsters adopt forges if they spawn next to one. Treesingers adopt trees.
--Can be used to place smiths in des files
-1/7 of random forges have a random monster smith associated with them (goblin, dwarf, human, or more rarely mithril).
-Trees + treesingers spawn at a rate of 1/280 (1/40*1/7).
-Peaceful non-tame smiths stay by their forge/tree.

Add two treesingers to Bard quest.

Add shadowsmith to Drow Healer quest.

Check smith-ness via HAS_ESMT, add HAS_ESHK to check shopkeeper-ness.

Balance fix: remove upgrade kits from oona and mithril smith (removes a janky infinite-resource loop).
-Shadowsmiths now only accept Fossil Dark, and keep the upgrade kit option.

Oona and Dracae apply their weapon oprops to things that accepts_weapon_oprops()
2023-11-25 20:05:26 -05:00

454 lines
16 KiB
Text

# The "start" level for the quest.
#
# Here you meet your (besieged) class leader
# and receive your quest assignment.
#
MAZE: "Brd-strt",' '
FLAGS: noteleport,hardfloor
GEOMETRY:center,center
#0 1 2 3 4 5 6 7
#0123456789012345678901234567890123456789012345678901234567890123456789012345
MAP
0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,}},,,,,,,,T,,,,,,,,,,
1,,,,,T,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,T,,,}},,,,,,,,,,,,,T,,,,
2,,,,,,,,,,,------------------------,,,,,,,,,,,,,,,,,,,,,,}},,,,,,,,,,,,,,,,,
3,,,,,,,,,,,|......|.......|.......|..--...--,,,,,,,,,,,,,}},,,,,,,,,,,,,,,,,
4,,,,,,,,,,,+......|.......S...{...|..--...--,,,,,T,,,,,,}},,,,,,,,,,,,,,,,,,
5,,T,,,,,,,,|S-----|.......|.......|.........,,,,,,,,,,,,}},,,,,,,,,,,,,,,,,,
6,,,,,,,,,,,|......|.......--......|...T...--,,,,,,,T,,,,}},,,,,,T,,,,,,,,,,,
7,,,,T,T,,,,|......|........|.....--.......--,,,,,,,,,,,}},,,,,,,,,,,,,,,,,,,
8,,,,,,,,,,,|......--.......|.....|..........,,,,,,,,,,,},,,,,,,,,,,,,}}},,T,
9,,,T,,,,,,,|.......+.......|.....+........--,,,,,,,,,,}},,,,,,,,T,,,}},}}},,
0,,,,T,,,,,,|.\.....+.......|.....+........--,,,,,,,T,,}},,,,,,,,,,,,},,,}},,
1,,,,,,,,,,,|......--.......|.....|..........,,,,,,,,,,,}},,,,T,,,,,}},,,,}w,
2,,,,,,T,,,,|......|........|.....--.......--,,,T,,T,,,,,}},,,,,,,,T},,T,,w},
3,,T,,,,,,,,|......|.......--......|...T...--,,,,,,,,,T,,,}}}},,,,}},,,,,,,},
4,,,,,,,,,,,|S-----|.......|.......|.........,,,,,,,,,,,,,,,,}},,,},,,,,,,,},
5,,,,,,,,,,,+......|.......S...{...|..--...--,,,,T,,,,,,,,,,,,}},T}},,,,T,T},
6,,,,,,,,,,,|......|.......|.......|..--...--,,,,,,,,,,,,,,,,,,},,,},,,,,,w},
7,,,,,,,T,,,------------------------,,,,,,,,,,,,,,,,,,,,,,,,T,,}},}}T,,,,,}w,
8,,,,,,,,,,,,,,,,,,,,,T,,,,,,,,,,,,,,,,,,,,,T,,,,,,,,,,,,,,,,,,,}}},,,,,,}},,
9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,T,,,,,,,,,,,,,,,,,,,}}},,,
0,,T,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,}},,,,T
ENDMAP
#0123456789012345678901234567890123456789012345678901234567890123456789012345
#0 1 2 3 4 5 6 7
# Dungeon Description
REGION:(00,00,75,20),lit,"ordinary"
# Stairs
STAIR:(01,08),down
# Portal arrival point
BRANCH:(73,02,73,02),(0,0,0,0)
# Doors
DOOR:closed,(11,04)
DOOR:closed,(11,15)
DOOR:locked,(12,05)
DOOR:locked,(12,14)
DOOR:locked,(26,04)
DOOR:locked,(26,15)
DOOR:locked,(19,09)
DOOR:locked,(19,10)
DOOR:closed,(33,09)
DOOR:closed,(33,10)
REGION:(12,03,17,04),lit,"tool shop"
OBJECT:'(',"flute",(13,03)
OBJECT:'(',"tooled horn",(14,03)
OBJECT:'(',"harp",(15,03)
OBJECT:'(',"bugle",(16,03)
OBJECT:'(',"drum",(17,03)
OBJECT:'(',"flute",(13,04)
OBJECT:'(',"tooled horn",(14,04)
OBJECT:'(',"harp",(15,04)
OBJECT:'(',"bugle",(16,04)
OBJECT:'(',"drum",(17,04)
REGION:(12,15,17,16),lit,"food shop"
OBJECT:'!',"booze",(13,15)
OBJECT:'!',"booze",(14,15)
OBJECT:'!',"booze",(15,15)
OBJECT:'!',"booze",(16,15)
OBJECT:'!',"booze",(17,15)
OBJECT:'!',"booze",(13,16)
OBJECT:'!',"booze",(14,16)
OBJECT:'!',"booze",(15,16)
OBJECT:'!',"booze",(16,16)
OBJECT:'!',"booze",(17,16)
# Class leader
MONSTER:'@',"Pindar",(13,10)
CONTAINER:'(',"chest",(13,10)
OBJECT:'?',"resistance",contained
OBJECT:'?',"resistance",contained
OBJECT:'?',"resistance",contained
# Other treasures
OBJECT[33%]:'(',"chest",(14,04)
OBJECT[33%]:'(',"chest",(14,15)
# Statues
OBJECT:'`',"statue",(35,07), "human", 2
OBJECT:'`',"statue",(35,12), "human", 2
OBJECT:'`',"statue",(22,05), "human", 2
OBJECT:'`',"statue",(22,14), "human", 2
# Rhymers for the audience chamber
MONSTER:'@',"rhymer",(32,07)
MONSTER:'@',"rhymer",(22,07)
MONSTER:'@',"rhymer",(13,07)
MONSTER:'@',"rhymer",(14,07)
MONSTER:'@',"rhymer",(15,07)
MONSTER:'@',"rhymer",(22,13)
MONSTER:'@',"rhymer",(32,13)
MONSTER:'@',"rhymer",(13,13)
MONSTER:'@',"rhymer",(14,13)
MONSTER:'@',"rhymer",(15,13)
MONSTER:'@',"treesinger",(38,07), peaceful
MONSTER:'@',"treesinger",(38,12), peaceful
# Non diggable walls
NON_DIGGABLE:(00,00,75,20)
TRAP:random,random
# Nymphs next of river
MONSTER: 'n',random,(62,07),peaceful
MONSTER: 'n',random,(67,10),peaceful
MONSTER: 'n',random,(64,16),peaceful
MONSTER: 'n',random,(64,10),peaceful
MONSTER: 'n',random,(68,02),peaceful
MONSTER: 'n',random,(71,07),peaceful
MONSTER: 'n',random,(72,15),peaceful
# Wild animals tamed by the nemesis.
MONSTER: ';',"piranha",random,hostile
MONSTER: 'd',random,random,hostile
MONSTER: 'f',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: 'r',random,random,hostile
MONSTER: 'u',random,random,hostile
MONSTER: 'B',random,random,hostile
#
# The "locate" level for the quest.
#
# Here you have to reach the flowery island of Anthemoessa
# and descend into the Old Ruins to find your quest nemesis.
#
MAZE: "Brd-loca",' '
GEOMETRY:center,center
MAP
0}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}.}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
2}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
3}}}}}}}}}}}}}}}}}}},,,,,}}}}}}}}}}}}}}}},,,,,,,,,,}}}}}}}}}}}}}}}}}}}}}}},,,
4}}}}}}}}}}}}}}}}},,,,T,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,}}}}}}}}}}}}}}}}},,,,,
5}}}}}}}}}}}}}}}}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,T,,,}}}}}}}}}..}}}}},T,,
6}}}}}}}}}}}}},,,,,,,----######--###..--,,,,,,T,,,,,,,,}}}}}}}}}....}}.}},,,,
7}}}}}}}}}}},,,,,,,,,|......#......#..-#,,,,,,,,,,,,,,}}}}}}}}}}}}}}}}}}},,,,
8}}}}}}}}}},,,,,,,,,,|......|......|...,,,,,,,,,,,,,}}}}}}}}}}}}}}}}}}},,,,,,
9}}.}}}}}},,,,,,,,,,,|......+......+..-#,,,,,,,,,,,,}.}}}}}}}}}}.}}}}}},,,,,,
0}}}}}}}}},,,,,,,T,,,|......+......+..##,,,,,,,,,,,,}}}}}}}}}}}}.}}}}}},,,,,,
1}}}}}.}},,,,,,,,,,,,|......|......|..,,,,,,T,,,,,,}}}}.}}..}}}.}}}}}}}},,,T,
2}}}}}}}}}},,,,,,,,,,|......|......|..--,,,,,,,,,,}}}}}}}}..}}.}}}}}}}}},,,,,
3}}}}}}}}},,,,,,,,,,,---------------..--,,,,,,,,,,}}}}}}}}}}}}}}}}}}}}}}}}},,
4}}}}}}}}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,}}}}}}}}}}}}}}}}}}}}}}}}},,,
5}}}}}}}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},,
6}}}}}}}},,,,,T,,,,,,,,,,,,,,,,,,,,,,,}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
7}}}}}}}}},,,,,,,,,,,,,,,,,,,,}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
8}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
9}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}..}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
0}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}..}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
ENDMAP
# Dungeon Description
REGION:(00,00,75,20),lit,"ordinary"
# Doors
#DOOR:locked,(28,11)
# Stairs
STAIR:(74,08),up
STAIR:(24,10),down
# Magic Chest
OBJECT:'(',"magic chest",(24,9)
# Non diggable walls
NON_DIGGABLE:(00,00,75,19)
# Objects
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
# some boulders and stones for the ruins.
OBJECT:'`',"boulder",(38,07)
OBJECT:'`',"boulder",(37,10)
OBJECT:'*',"rock",(38,10)
OBJECT:'`',"boulder",(26,06)
OBJECT:'*',"rock",(28,06)
OBJECT:'*',"rock",(29,06)
# Random traps
TRAP:random,random
TRAP:random,random
TRAP:random,random
TRAP:random,random
TRAP:random,random
TRAP:random,random
# Random monsters.
MONSTER: ';',"piranha",random,hostile
MONSTER: ';',"piranha",random,hostile
MONSTER: ';',"piranha",random,hostile
MONSTER: 'd',random,random,hostile
MONSTER: 'd',random,random,hostile
MONSTER: 'f',random,random,hostile
MONSTER: 'f',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: 'S',random,random,hostile
MONSTER: 'r',random,random,hostile
MONSTER: 'u',random,random,hostile
MONSTER: 'B',random,random,hostile
MONSTER: 'B',random,random,hostile
#
# The "goal" level for the quest.
#
# Here you meet your nemesis. You have to
# defeat her in combat to gain the artifact you have
# been assigned to retrieve.
#
MAZE: "Brd-goal", ' '
GEOMETRY:center,center
MAP
----------------------------------------------------------------------------
|..........................................................................|
|.....................###...---...---...###...---...---....................|
|.....................#.#...|.|...|.|...#.#...|.|...|.#....................|
|.....................###...---...---...###...---...-##....................|
|..........................................................................|
|.....................---...........................---....................|
|.....................|.|...........................|.|....................|
|.....................---...........................--#....................|
|..........................................................................|
|.....................---...........................---....................|
|.....................|.|...........................|.|....................|
|.....................---...........................---....................|
|..........................................................................|
|.....................---...---...---...---...###...---....................|
|.....................|.|...|.|...|.|...|.|...|.#...|.|....................|
|.....................---...---...---...---...---...---....................|
|..........................................................................|
|..........................................................................|
----------------------------------------------------------------------------
ENDMAP
# Dungeon Description
REGION:(00,00,75,19),unlit,"ordinary"
REGION:(22,02,54,16),lit,"ordinary"
# Stairs
STAIR:(69,06),up
# Non diggable walls
NON_DIGGABLE:(00,00,75,19)
# Objects
OBJECT:'(',"magic harp",(38,10),blessed,0,"The Lyre of Orpheus"
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
OBJECT:random,random,random
# ruins
OBJECT:'`',"boulder",(22,02)
OBJECT:'`',"boulder",(23,02)
OBJECT:'`',"boulder",(24,03)
OBJECT:'*',"rock",(25,02)
OBJECT:'`',"boulder",(25,04)
OBJECT:'`',"boulder",(40,02)
OBJECT:'`',"boulder",(41,02)
OBJECT:'`',"boulder",(43,03)
OBJECT:'*',"rock",(40,02)
OBJECT:'*',"rock",(39,02)
OBJECT:'`',"boulder",(41,04)
OBJECT:'`',"boulder",(53,03)
OBJECT:'`',"boulder",(54,08)
# Quest nemesis
MONSTER:'n',"Aglaope",(38,10),asleep
OBJECT:'[',"water walking boots",(38,10)
# Monsters
MONSTER:'s',random,(33,06),hostile
MONSTER:'S',random,(33,08),hostile
MONSTER:'r',random,(33,10),hostile
MONSTER:'d',random,(33,12),hostile
MONSTER:'f',random,(33,14),hostile
MONSTER:'f',random,(43,06),hostile
MONSTER:'d',random,(43,08),hostile
MONSTER:'r',random,(43,10),hostile
MONSTER:'S',random,(43,12),hostile
MONSTER:'s',random,(43,14),hostile
# Magic treasure (Note this has some pretty good stuff to help the bard equip an army)
OBJECT:'[',"cloak of magic resistance",random
OBJECT[50%]:'[',"cloak of magic resistance",random
OBJECT[50%]:'[',"cloak of magic resistance",random
OBJECT[50%]:'[',"cloak of magic resistance",random
OBJECT[75%]:'[',"cloak of invisibility",random
OBJECT[75%]:'[',"cloak of invisibility",random
OBJECT:'[',"gray dragon scales",random
OBJECT[75%]:'[',"gray dragon scales",random
OBJECT[75%]:'[',"silver dragon scales",random
OBJECT[75%]:'[',"shimmering dragon scales",random
OBJECT[75%]:'[',"red dragon scales",random
OBJECT[75%]:'[',"deep dragon scales",random
OBJECT[75%]:'[',"white dragon scales",random
OBJECT[75%]:'[',"orange dragon scales",random
OBJECT[75%]:'[',"black dragon scales",random
OBJECT[75%]:'[',"blue dragon scales",random
OBJECT[75%]:'[',"green dragon scales",random
OBJECT[75%]:'[',"yellow dragon scales",random
OBJECT[75%]:'#',"bronze gauntlets of power",random
OBJECT[75%]:'#',"bronze gauntlets of power",random
OBJECT[75%]:'#',"bronze gauntlets of power",random
OBJECT[75%]:'[',"orihalcyon gauntlets",random
OBJECT[75%]:'[',"speed boots",random
OBJECT[75%]:'[',"speed boots",random
OBJECT[75%]:'[',"water walking boots",random
OBJECT[75%]:'[',"kicking boots",random
OBJECT[75%]:'[',"flying boots",random
OBJECT[25%]:'"',"amulet of drain resistance",random
OBJECT[25%]:'"',"amulet of ESP",random
OBJECT[25%]:'"',"amulet of life saving",random
OBJECT[25%]:'"',"amulet versus poison",random
OBJECT[25%]:'"',"amulet versus sickness",random
OBJECT[25%]:'"',"amulet versus curses",random
OBJECT[25%]:'"',"amulet of unchanging",random
OBJECT[25%]:'"',"amulet of nullify magic",random
OBJECT[25%]:'"',"amulet of reflection",random
OBJECT[25%]:'"',"amulet of magical breathing",random
OBJECT[75%]:'[',"archaic helm",random
OBJECT[75%]:'[',"archaic plate mail",random
OBJECT[75%]:'[',"roundshield",random
OBJECT[75%]:'#',"bronze short sword",random
OBJECT[75%]:'#',"bronze spear",random
OBJECT[75%]:'[',"archaic gauntlets",random
OBJECT[75%]:'[',"archaic boots",random
OBJECT[75%]:'[',"archaic helm",random
OBJECT[75%]:'[',"archaic plate mail",random
OBJECT[75%]:'[',"roundshield",random
OBJECT[75%]:'#',"bronze short sword",random
OBJECT[75%]:'#',"bronze spear",random
OBJECT[75%]:'[',"archaic gauntlets",random
OBJECT[75%]:'[',"archaic boots",random
OBJECT[75%]:'[',"archaic helm",random
OBJECT[75%]:'[',"archaic plate mail",random
OBJECT[75%]:'[',"roundshield",random
OBJECT[75%]:'#',"bronze short sword",random
OBJECT[75%]:'#',"bronze spear",random
OBJECT[75%]:'[',"archaic gauntlets",random
OBJECT[75%]:'[',"archaic boots",random
OBJECT[75%]:'[',"archaic helm",random
OBJECT[75%]:'[',"studded leather cloak",random
OBJECT[75%]:'[',"waistcloth",random
OBJECT[75%]:'#',"wood tower shield",random
OBJECT[75%]:'#',"bronze spear",random
OBJECT[75%]:'[',"archaic helm",random
OBJECT[75%]:'[',"cloak",random
OBJECT[75%]:'[',"waistcloth",random
OBJECT[75%]:'#',"wood tower shield",random
OBJECT[75%]:'#',"bronze spear",random
OBJECT[75%]:'#',"bronze khopesh",random
OBJECT[75%]:'[',"archaic helm",random
OBJECT[75%]:'[',"cloak",random
OBJECT[75%]:'[',"waistcloth",random
OBJECT[75%]:'#',"wood tower shield",random
OBJECT[75%]:'#',"bronze spear",random
OBJECT[75%]:'#',"bronze khopesh",random
#
# The "fill" levels for the quest.
#
# These levels are used to fill out any levels not occupied by specific
# levels as defined above. "filla" is the upper filler, between the
# start and locate levels, and "fillb" the lower between the locate
# and goal levels.
#
MAZE: "Brd-fila" , ' '
FLAGS: hardfloor
INIT_MAP: 'G' , 'T' , true , true , random , true
NOMAP
#
STAIR: random, up
STAIR: random, down
#
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
#
TRAP: random, random
TRAP: random, random
TRAP: random, random
TRAP: random, random
#
MONSTER: 'S', random, random, hostile
MONSTER: 's', random, random, hostile
MONSTER: 'u', random, random, hostile
MONSTER: 'd', random, random, hostile
MONSTER: 'f', random, random, hostile
MONSTER: 's', random, random, hostile
MONSTER: 'S', random, random, hostile
LEVEL: "Brd-filb"
#
ROOM: "ordinary" , random, random, random, random
STAIR: random, up
OBJECT: random,random,random
MONSTER: 'S', random, random
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
OBJECT: random,random,random
MONSTER: 'r', random, random
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
TRAP: random, random
OBJECT: random,random,random
MONSTER: 's', random, random
ROOM: "ordinary" , random, random, random, random
STAIR: random, down
OBJECT: random, random, random
TRAP: random, random
MONSTER: 'S', random, random
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
OBJECT: random, random, random
TRAP: random, random
MONSTER: 'S', random, random
ROOM: "ordinary" , random, random, random, random
OBJECT: random, random, random
TRAP: random, random
MONSTER: 's', random, random
RANDOM_CORRIDORS