Random Dungeon Generators List

I have made a small list at this repository, mostly of things with code.

Found the Iron Arachne addition yesterday.

https://github.com/bluetyson/random-dungeon-generators

The 1000 Dungeon Project

Thanks to the AD&D Random Dungeon Generator I wrote https://github.com/bluetyson/ADnD1e-Random-Dungeon-Generator, I can parallelise, so doing this only takes less than a minute.

The basic random walk theory these talk is ‘Ahead’ is the y positive direction and always follow exits – e.g. stairs down (and can go up sometimes too).

The first 1000 dungeons I have done with 10 Periodic Checks as the DMG table calls them. e.g. a roll on the main table.

Here’s a summary :-

https://docs.google.com/spreadsheets/d/1kpZhtAO4cLtyLnh6bCCRVdigOL8jbjAFJ6CFyEZ2cX8/edit?usp=sharing

Wandering Monster Totals
Wandering Monster XP histogram
Monster numbers
Monster XP histogram
Rooms

Here you can have the situation if you find an empy room it can have secret doors – beyond which are more rooms, which can have secret doors if empty – I have it so it follows that stack down, then goes back – e.g. Rooms are the interesting thing.

So with 10 checks, a couple of rooms is likely.

In fact, here are the medians for this batch of 1000:

monster_xp                            0.0
wm_xp                                 0.0
monster_total                         0.0
wm_total                              0.0
traps                                 1.0
rooms                                 2.0
total_treasure_copper                 0.0
total_treasure_silver                 0.0
total_treasure_electrum               0.0
total_treasure_gold                   0.0
total_treasure_platinum               0.0
total_treasure_gems                   0.0
total_treasure_jewellery              0.0
total_treasure_magic                  0.0
total_treasure_monster_copper         0.0
total_treasure_monster_silver         0.0
total_treasure_monster_electrum       0.0
total_treasure_monster_gold           0.0
total_treasure_monster_platinum       0.0
total_treasure_monster_gems           0.0
total_treasure_monster_jewellery      0.0
total_treasure_monster_magic          0.0
wm_total_treasure_copper              0.0
wm_total_treasure_silver              0.0
wm_total_treasure_electrum            0.0
wm_total_treasure_gold                0.0
wm_total_treasure_platinum            0.0
wm_total_treasure_gems                0.0
wm_total_treasure_jewellery           0.0
wm_total_treasure_magic               0.0
Coins                                11.0
Gems                                  0.0
Jewellery                             0.0
Magic                                 0.0
Total Gold Equivalent                21.5
x                                    13.0
y                                    16.0
z                                     1.0

Median room size is 13 by 16 – y dimensions are likely to be bigger.

So if we call a median room an exemplar, let’s have a look:

Selecting all the 13 by 16 the medians:
monster_xp                            0.0
wm_xp                                19.0
monster_total                         0.0
wm_total                              0.5
traps                                 0.0
rooms                                 3.5
total_treasure_copper                 0.0
total_treasure_silver                 0.0
total_treasure_electrum               0.0
total_treasure_gold                   0.0
total_treasure_platinum               0.0
total_treasure_gems                   0.0
total_treasure_jewellery              0.0
total_treasure_magic                  0.0
total_treasure_monster_copper         0.0
total_treasure_monster_silver         0.0
total_treasure_monster_electrum       0.0
total_treasure_monster_gold           0.0
total_treasure_monster_platinum       0.0
total_treasure_monster_gems           0.0
total_treasure_monster_jewellery      0.0
total_treasure_monster_magic          0.0
wm_total_treasure_copper              0.0
wm_total_treasure_silver              0.0
wm_total_treasure_electrum            0.0
wm_total_treasure_gold                0.0
wm_total_treasure_platinum            0.0
wm_total_treasure_gems                0.0
wm_total_treasure_jewellery           0.0
wm_total_treasure_magic               0.0
Coins                                60.0
Gems                                  0.0
Jewellery                             0.0
Magic                                 0.0
Total Gold Equivalent                60.0
x                                    13.0
y                                    16.0
z                                     2.0
Periodic Checks                      10.0

So these are therefore likely to have an exit to level 2 – [z = 2]

The distribution of area of the Dungeons:

Dungeon area, x by y by z

Here are the individual stats for the Dungeons:

https://docs.google.com/spreadsheets/d/1rbTE5-d4ju9nuQC57Dt8rCNPvuNbW3VR-JA7iAMqyvc/edit?usp=sharing

Textmapper with Gridmapper

Making SVG maps from icons based on coordinates

Example data file: https://campaignwiki.org/contrib/gridmapper-example.txt

https://campaignwiki.org/text-mapper

GitHub

https://github.com/kensanata/hex-mapping

There’s a git repository for the perl library version at the campaignwiki link,too. I should see if my generic shared hosting here can handle that sometime.

Master Dungeon Mapping Key

From Save vs Dragon

https://savevsdragon.blogspot.com/2012/03/free-download-master-dungeon-mapping.html

AD&D 1e Random Dungeon Generator Binder

So you can run this in a browser:

https://mybinder.org/v2/gh/bluetyson/ADnD1e-Random-Dungeon-Generator/HEAD

  • click the above to fire up a web container environment that lets you run this in your browser
  • you get jupyterlab, just click on the terminal link at the lower left and then type ‘python dungeon.py 1’ [or however many rolls as you like] and the files created will also be in the main directory, one for each dungeon level. 

AD&D 1e Random Dungeon Generator Version 0.3

I just update to this and i just generated a short dungeon. For reference, this is ’10 rolls’

See the GitHub README for a bit more details.

https://github.com/bluetyson/ADnD1e-Random-Dungeon-Generator

DUNGEON
BBBBBCCHlCOCCCBB
BBCCCCCHlCBBBBBB
BBCCCCwmCBBBBBBB
BBBBBCBCBBBBBB
BBBBBCCCCBBBBB
BBBBBCCCwmBBBBB
BBBBCBBBBBBBBB
BBBCBBBBBBBBBB
BBCBBBBBBBBBBB
BBCBBBBBBBBBBB
BBCBBBBBBBBBBB
BBCBBBBBBBBBBB
BBCBBBBBBBBBBB
BBCBBBBBBBBBBB
BDsdCDBBBBBBBBBB
R2R2R1R1R1R1R1R1R1R1R1BBB
R2R2R1R1R1R1R1R1R1R1R1BBB
R2R2R1R1R1R1R1R1R1R1R1BBB
R2R2R1R1R1R1R1R1R1R1R1CCHlC
BBR1mR1R1R1R1R1R1R1R1CCHlC
BBR1R1R1R1R1R1R1R1R1BBB
BBR1R1R1R1R1R1R1R1R1BBB
BBR1R1R1R1R1R1R1R1R1BBB
BBR1R1R1R1R1R1R1R1R1BBB
BBR1R1R1R1gR1R1R1R1R1BBB
BBR1R1R1R1R1R1R1R1R1BBB
BBR1R1R1R1R1R1R1R1R1BBB
BBR1R1R1R1R1R1R1R1R1BBB
BBBBBBBBBBCBBB
BBBBBBBBBBCBBB
BBBBBBBBBBCBBB

Data: 1

{‘shape’: ‘R’, ‘size’: [9, 13], ‘water’: ‘N’, ‘fancy_shape’: ‘H’, ‘fromdoor’: ‘Y’, ‘contents’: {‘monster’: {‘level’: 1, ‘type’: ‘Orc’, ‘No’: 8, ‘XP’: 14, ‘lair’: ‘35%’, ‘treasure_individual’: [‘L’], ‘treasure_lair’: [‘C’, ‘O’, ‘Q’, ‘Q’, ‘Q’, ‘Q’, ‘Q’, ‘Q’, ‘Q’, ‘Q’, ‘Q’, ‘Q’, ‘S’]}, ‘treasure’: {‘type’: {‘copper’: 0, ‘silver’: 0, ‘electrum’: 0, ‘gold’: 275, ‘platinum’: 0, ‘gems’: 0, ‘jewellery’: 0, ‘magic’: 0}, ‘gems_list’: [], ‘jewellery_list’: [], ‘magic_list’: [], ‘magic_xp’: [], ‘magic_values’: [], ‘store’: ‘Loose’, ‘protection’: ‘hide’, ‘hide’: ‘Secret: Loose stone – in wall’}}, ‘exits’: 2, ‘exitlocations’: {1: ‘O’, 2: ‘R’}, ‘exitdirections’: {1: ‘A’, 2: ‘A’}}

Key: 1

monster:{‘level’: 1, ‘type’: ‘Orc’, ‘No’: 8, ‘XP’: 14, ‘lair’: ‘35%’, ‘treasure_individual’: [‘L’], ‘treasure_lair’: [‘C’, ‘O’, ‘Q’, ‘Q’, ‘Q’, ‘Q’, ‘Q’, ‘Q’, ‘Q’, ‘Q’, ‘Q’, ‘Q’, ‘S’]}
LairTry:32 from 35 is in lair: True
Monster Lair Treasure:
{‘copper’: 10000, ‘silver’: 0, ‘electrum’: 0, ‘gold’: 0, ‘platinum’: 0, ‘gems’: 6, ‘jewellery’: 0, ‘magic’: 0}
{‘gems’: [100, 1000, 60.0, 100, 200, 20], ‘jewellery’: [], ‘magic’: [], ‘magic_list’: [], ‘magic_xp’: [], ‘magic_values’: []}

treasure:{‘type’: {‘copper’: 0, ‘silver’: 0, ‘electrum’: 0, ‘gold’: 275, ‘platinum’: 0, ‘gems’: 0, ‘jewellery’: 0, ‘magic’: 0}, ‘gems_list’: [], ‘jewellery_list’: [], ‘magic_list’: [], ‘magic_xp’: [], ‘magic_values’: [], ‘store’: ‘Loose’, ‘protection’: ‘hide’, ‘hide’: ‘Secret: Loose stone – in wall’}

Data: 2

{‘shape’: ‘R’, ‘size’: [2, 4], ‘fromdoor’: ‘Y’, ‘contents’: {’empty’: ‘Y’}, ‘exits’: 2, ‘exitlocations’: {1: ‘R’, 2: ‘R’}, ‘exitdirections’: {1: ’45AB’, 2: ‘A’}}

Key: 2

Empty

Wandering Monster: 0

{(-3, 2, -1): {‘level’: 1, ‘type’: [‘Character’, {1: {‘class’: ‘FIGHTER’, ‘level’: 1, ‘race’: ‘Human’, ‘multi’: ‘N’, ‘magic_items’: []}, 2: {‘class’: ‘FIGHTER’, ‘level’: 1, ‘race’: ‘Human’, ‘multi’: ‘N’, ‘magic_items’: []}, 3: {‘class’: ‘FIGHTER’, ‘level’: 1, ‘race’: ‘Gnome’, ‘multi’: ‘Y’, ‘multi_no’: 2, ‘magic_items’: []}, 4: {‘class’: ‘FIGHTER’, ‘level’: 1, ‘race’: ‘Dwarf’, ‘multi’: ‘N’, ‘magic_items’: []}, 5: {‘class’: ‘MAGIC-USER’, ‘level’: 1, ‘race’: ‘Half-elf’, ‘multi’: ‘Y’, ‘multi_no’: 2, ‘magic_items’: []}, 6: {‘class’: ‘man-at-arms’}, 7: {‘class’: ‘woman-at-arms’}, 8: {‘class’: ‘woman-at-arms’}, 9: {‘class’: ‘woman-at-arms’}}], ‘No’: 9, ‘XP’: 0, ‘lair’: ‘0%’, ‘treasure_individual’: [], ‘treasure_lair’: []}}
XP:0

Wandering Monster: 1

{(0, 5, -1): {‘level’: 1, ‘type’: ‘Zombie’, ‘No’: 2, ‘XP’: 38, ‘lair’: ‘0%’, ‘treasure_individual’: [], ‘treasure_lair’: []}}
XP:76

Monster Total XP:112

Monster Total Treasure:{‘copper’: 10000, ‘silver’: 10000, ‘electrum’: 0, ‘gold’: 0, ‘platinum’: 0, ‘gems’: 6, ‘jewellery’: 0, ‘magic’: 0}

Monster Total Valuations:{‘gems’: [100, 1000, 60.0, 100, 200, 20, 100, 1000, 60.0, 100, 200, 20], ‘jewellery’: [], ‘magic’: [], ‘magic_xp’: [], ‘magic_values’: [], ‘magic_list’: []}

Wandering Monster Total XP:76

Wandering Monster Total Treasure:{‘copper’: 0, ‘silver’: 0, ‘electrum’: 0, ‘gold’: 0, ‘platinum’: 0, ‘gems’: 0, ‘jewellery’: 0, ‘magic’: 0}

Wandering Monster Subtable:[‘human-character’, ‘monster’]

Room Total Treasure:{‘copper’: 0, ‘silver’: 0, ‘electrum’: 0, ‘gold’: 275, ‘platinum’: 0, ‘gems’: 0, ‘jewellery’: 0, ‘magic’: 0}

Room Total Gems:0

Room Total Jewellery:0

Room Total Magic:0

Total Treasure: {‘copper’: 10000, ‘silver’: 10000, ‘electrum’: 0, ‘gold’: 275, ‘platinum’: 0, ‘gems’: 6, ‘jewellery’: 0, ‘magic’: 0}

Coins: 1375.0
Gems: 2960.0
Jewellery: 0
Magic: 0
Total Gold Equivalent: 4335.0

Spiders

Dungeon looks a bit spidery, too.

DUNGEON
BBBBOBBBB
BBBBCBBBB
BBBBCBBBB
BBBBCBBBB
BBBBCBBBB
BBBBCBBBB
BCCCCBBBB
BBCR1BBBBB
BBwmR1R1R1mR1BB
BBBR1R1R1R1BB
BBBR1R1R1R1BB
BBCBCCCBB
BCBCBCBCB
CBCBBCBBC

Data: 1

{‘shape’: ‘R’, ‘size’: [4, 4], ‘contents’: {‘treasure’: {‘type’: {‘copper’: 0, ‘silver’: 0, ‘electrum’: 0, ‘gold’: 0, ‘platinum’: 0, ‘gems’: 0, ‘jewellery’: 0, ‘magic’: 1}, ‘store’: ‘Chests’, ‘protection’: ‘hide’, ‘hide’: ‘Magic: Invisibility’}}, ‘exits’: 3, ‘exitlocations’: {1: ‘O’, 2: ‘L’, 3: ‘O’}, ‘exitdirections’: {1: ’45AB’, 2: ’45BA’, 3: ‘A’}}

Key: 1

treasure:{‘type’: {‘copper’: 0, ‘silver’: 0, ‘electrum’: 0, ‘gold’: 0, ‘platinum’: 0, ‘gems’: 0, ‘jewellery’: 0, ‘magic’: 1}, ‘store’: ‘Chests’, ‘protection’: ‘hide’, ‘hide’: ‘Magic: Invisibility’}

Wandering Monster: 0

{(-2, 8, -1): {‘level’: 3, ‘type’: ‘Spider-large’, ‘No’: 3, ‘XP’: 0}}

Random rivers

Some more additions to basic dungeons, should be able to get rivers and chasms in corridors:- e.g. if blue Cri = river, Cbr = river with bridge across. https://github.com/bluetyson/ADnD1e-Random-Dungeon-Generator

DUNGEON
BBCOCBB
BCriCCCCbrB
CCriCCbrCCbrC
CCriCCCCbrC
CCriCBCCbrC
CCriCBCCbrC
CCriBBBCbrC
CBBBBBC

LisaWindsong Dungeoncreator

https://github.com/lisawindsong/DungeonCreator

I remember finding this a while ago now, but I have never tried it: – job for tomorrow.

It is Python 2.7.

Will add to my Random Dungeon generator github list.

Advanced Dungeons and Dragons 1st Edition Random Dungeon Generator

I have started on this and only now and again for a few days, given ran out of holidays and had to go back to work a week or so ago.

However, it is doing the basics.

https://github.com/bluetyson/ADnD1e-Random-Dungeon-Generator

What it is not is something that generates a box image and fills it in a la donjon or others. It is a translation of the procedural tables. The TLDR version is it can do X number of rolls. If a stair/elevator or whatever goes down, it follows that and keeps going. If empty rooms have secret doors, it will fill this in recursively, but not follow any of those randomly in particular. The key output is being used for debugging, but will be turned into room descriptions. Rooms can ‘not fit’ and be chopped off, so the default size might not reflect the plot.

Definitely bugs here or there as just started, and some events are pretty rare so there will be plenty of oddball edge cases. Things I am aware on and working on eventually are here https://github.com/bluetyson/ADnD1e-Random-Dungeon-Generator/issues

e.g. no actual rolled monsters/treasure from DMG tables as yet. No Pools, that sort of thing.

Basic legend code is at the bottom

Here’s a level 1 and level 7 from a 200 ‘Rolls’ test. Level 7 being the one the players would want to get to.

DUNGEON
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBCstBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBCBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBDCDBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBDDCBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBR1R1CBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBR1R1R1OR1R1R1R1R1R1BBBBBBBBBBBBBBBBBBBBBBBBBB
BBBR1R1R1R1R1R1R1R1R1R1BBBBBBBBBBBBBBBBBBBBBBBBBB
BBBR1R1R1R1R1R1R1R1R1R1BBBBBBBBBBBBBBBBBBBBBBBBBB
BBCR1R1R1R1R1R1R1R1R1R1BBBBBBBBBBBBBBBBBBBBBBBBBB
BCBR1R1R1R1R1R1R1R1R1R1BBBBBBBBBBBBBBBBBBBBBBBBBB
CBBR1R1R1R1R1R1R1R1R1R1BBBBBBBBBBBBBBBBBBBBBBBBBB
BBBR1R1R1R1R1R1R1R1R1R1BBBBBBBBBBBBBBBBBBBBBBBBBB
BBBR1R1R1R1R1R1R1R1R1R1CCCBBBBBBBBBBBBBBBBBBBBBBB
BBBR1R1R1R1R1R1R1R1R1R1BBBBBBBBBBBBBBBBBBBBBBBBBB
BBBR1R1R1R1R1R1R1R1R1R1BBBBBBBBBBBBBBBBBBBBBBBBBB
BBBR1R1R1R1R1R1R1R1R1R1BBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

Key: 1

{‘shape’: ‘R’, ‘size’: [10, 13], ‘water’: ‘S’, ‘fancy_shape’: ‘H’, ‘contents’: {’empty’: ‘Y’}, ‘exits’: 4, ‘exitlocations’: {1: ‘R’, 2: ‘L’, 3: ‘O’, 4: ‘S’}, ‘exitdirections’: {1: ‘A’, 2: ’45BA’, 3: ‘A’, 4: ‘A’}}

Key: 2

{‘shape’: ‘R’, ‘size’: [3, 4], ‘fromdoor’: ‘Y’, ‘contents’: {‘monster’: {}, ‘treasure’: {‘type’: {‘copper’: 0, ‘silver’: 4400, ‘electrum’: 0, ‘gold’: 0, ‘platinum’: 0, ‘gems’: 0, ‘jewellery’: 0, ‘magic’: 0}, ‘store’: ‘Bloody Great Chests’, ‘protection’: ‘hide’, ‘hide’: ‘Secret room nearby’}}, ‘exits’: 1, ‘exitstype’: ‘door’, ‘exitlocations’: {1: ‘R’}, ‘exitdirections’: {1: ‘A’}}

Key: 3

{‘shape’: ‘R’, ‘size’: [9, 12], ‘water’: ‘S’, ‘fancy_shape’: ‘H’, ‘contents’: {’empty’: ‘Y’, ‘secret_door_dict’: {1: {(3, 6, -4): ‘xmin’, (2, 6, -4): {‘beyond’: ‘Room’, ‘loc’: ‘xminloc’}}, 2: {(3, 9, -4): ‘xmin’, (2, 9, -4): {‘beyond’: ‘Room’, ‘loc’: ‘xminloc’}}, 3: {(11, 0, -4): ‘xmax’, (12, 0, -4): {‘beyond’: ’45BA’, ‘loc’: ‘xmaxloc’}}, 4: {(11, 6, -4): ‘xmax’, (12, 6, -4): {‘beyond’: ‘A’, ‘loc’: ‘xmaxloc’}}, 5: {(11, 10, -4): ‘xmax’, (12, 10, -4): {‘beyond’: ’45BA’, ‘loc’: ‘xmaxloc’}}, 6: {(4, 0, -4): ‘ymin’, (4, -1, -4): {‘beyond’: ‘Room’, ‘loc’: ‘yminloc’}}, 7: {(6, 0, -4): ‘ymin’, (6, -1, -4): {‘beyond’: ‘Room’, ‘loc’: ‘yminloc’}}, 8: {(9, 0, -4): ‘ymin’, (9, -1, -4): {‘beyond’: ‘P’, ‘loc’: ‘yminloc’}}, 9: {(4, 10, -4): ‘ymax’, (4, 11, -4): {‘beyond’: ‘Room’, ‘loc’: ‘ymaxloc’}}, 10: {(8, 10, -4): ‘ymax’, (8, 11, -4): {‘beyond’: ‘P’, ‘loc’: ‘ymaxloc’}}, 11: {(9, 10, -4): ‘ymax’, (9, 11, -4): {‘beyond’: ‘A’, ‘loc’: ‘ymaxloc’}}}, ‘secret_door_count’: 11}, ‘exits’: 0, ‘secretdoors’: ‘check’, ‘exitlocations’: {}, ‘exitdirections’: {}}

Key: 4

{‘shape’: ‘R’, ‘size’: [1, 2], ‘contents’: {’empty’: ‘Y’, ‘secret_door_dict’: {1: {(2, 7, -4): ‘xmin’, (1, 7, -4): {‘beyond’: ‘Room’, ‘loc’: ‘xminloc’}}, 2: {(2, 7, -4): ‘ymax’, (2, 8, -4): {‘beyond’: ‘Room’, ‘loc’: ‘ymaxloc’}}}, ‘secret_door_count’: 2}, ‘exits’: 0, ‘secretdoors’: ‘check’, ‘exitlocations’: {}, ‘exitdirections’: {}}

Key: 5

{‘shape’: ‘R’, ‘size’: [2, 3], ‘contents’: {’empty’: ‘Y’}, ‘exits’: 3, ‘exitlocations’: {1: ‘L’, 2: ‘R’, 3: ‘O’}, ‘exitdirections’: {1: ’45AB’, 2: ‘A’, 3: ‘A’}}

Key: 6

{‘shape’: ‘R’, ‘size’: [2, 3], ‘contents’: {’empty’: ‘Y’}, ‘exits’: 2, ‘exitlocations’: {1: ‘O’, 2: ‘S’}, ‘exitdirections’: {1: ’45AB’, 2: ‘A’}}

Key: 7

{‘shape’: ‘R’, ‘size’: [1, 1], ‘fromdoor’: ‘Y’, ‘contents’: {’empty’: ‘Y’}, ‘exits’: 3, ‘exitlocations’: {1: ‘O’, 2: ‘O’, 3: ‘S’}, ‘exitdirections’: {1: ‘A’, 2: ’45AB’, 3: ‘A’}}

Key: 8

{‘shape’: ‘R’, ‘size’: [3, 3], ‘contents’: {’empty’: ‘Y’}, ‘exits’: 4, ‘exitlocations’: {1: ‘O’, 2: ‘L’, 3: ‘O’, 4: ‘O’}, ‘exitdirections’: {1: ’45BA’, 2: ‘A’, 3: ‘A’, 4: ‘A’}}

Key: 9

{‘shape’: ‘R’, ‘size’: [4, 4], ‘contents’: {‘trap’: {}}, ‘exits’: 2, ‘exitlocations’: {1: ‘O’, 2: ‘O’}, ‘exitdirections’: {1: ‘A’, 2: ‘A’}}

Key: 10

{‘shape’: ‘R’, ‘size’: [2, 2], ‘contents’: {‘monster’: {}, ‘treasure’: {‘type’: {‘copper’: 0, ‘silver’: 0, ‘electrum’: 0, ‘gold’: 0, ‘platinum’: 0, ‘gems’: 0, ‘jewellery’: 7, ‘magic’: 0}, ‘store’: ‘Stone Jars’, ‘protection’: ‘hide’, ‘hide’: ‘Magic: Invisibility’}}, ‘exits’: 1, ‘exitstype’: ‘door’, ‘exitlocations’: {1: ‘R’}, ‘exitdirections’: {1: ‘A’}}

Key: 11

{‘shape’: ‘R’, ‘size’: [3, 5], ‘contents’: {’empty’: ‘Y’}, ‘exits’: 1, ‘exitlocations’: {1: ‘O’}, ‘exitdirections’: {1: ‘A’}}

Key: 12

{‘shape’: ‘R’, ‘size’: [3, 5], ‘contents’: {’empty’: ‘Y’}, ‘exits’: 2, ‘exitlocations’: {1: ‘R’, 2: ‘S’}, ‘exitdirections’: {1: ’45BA’, 2: ‘A’}}

Key: 13

{‘shape’: ‘R’, ‘size’: [2, 3], ‘contents’: {‘treasure’: {‘type’: {‘copper’: 0, ‘silver’: 0, ‘electrum’: 0, ‘gold’: 0, ‘platinum’: 700, ‘gems’: 0, ‘jewellery’: 0, ‘magic’: 0}, ‘store’: ‘Coffers’, ‘protection’: ‘hide’, ‘hide’: ‘Secret: Loose stone – in wall’}, ‘secret_door_dict’: {1: {(13, 3, -7): ‘xmin’, (12, 3, -7): {‘beyond’: ‘Room’, ‘loc’: ‘xminloc’}}, 2: {(14, 4, -7): ‘xmax’, (15, 4, -7): {‘beyond’: ‘Room’, ‘loc’: ‘xmaxloc’}}}, ‘secret_door_count’: 2}, ‘exits’: 0, ‘secretdoors’: ‘check’, ‘exitlocations’: {}, ‘exitdirections’: {}}

Key: 14

{‘shape’: ‘R’, ‘size’: [2, 3], ‘contents’: {’empty’: ‘Y’}, ‘exits’: 1, ‘exitlocations’: {1: ‘R’}, ‘exitdirections’: {1: ‘A’}}

Key: 15

{‘shape’: ‘R’, ‘size’: [2, 2], ‘contents’: {‘treasure’: {‘type’: {‘copper’: 8000, ‘silver’: 0, ‘electrum’: 0, ‘gold’: 0, ‘platinum’: 0, ‘gems’: 0, ‘jewellery’: 0, ‘magic’: 0}, ‘store’: ‘Loose’, ‘protection’: ‘guard’, ‘guard’: ‘Poison needles: handle’}}, ‘exits’: 3, ‘exitlocations’: {1: ‘R’, 2: ‘R’, 3: ‘O’}, ‘exitdirections’: {1: ‘A’, 2: ‘A’, 3: ‘A’}}

Key: 16

{‘shape’: ‘R’, ‘size’: [4, 6], ‘contents’: {’empty’: ‘Y’, ‘secret_door_dict’: {1: {(14, 8, -7): ‘xmin’, (13, 8, -7): {‘beyond’: ’45BA’, ‘loc’: ‘xminloc’}}, 2: {(14, 6, -7): ‘ymin’, (14, 5, -7): {‘beyond’: ’45AB’, ‘loc’: ‘yminloc’}}}, ‘secret_door_count’: 2}, ‘exits’: 0, ‘secretdoors’: ‘check’, ‘exitlocations’: {}, ‘exitdirections’: {}}

Key: 17

{‘shape’: ‘R’, ‘size’: [4, 6], ‘contents’: {’empty’: ‘Y’}, ‘exits’: 3, ‘exitlocations’: {1: ‘O’, 2: ‘L’, 3: ‘O’}, ‘exitdirections’: {1: ‘A’, 2: ‘A’, 3: ‘A’}}

Key: 18

{‘shape’: ‘R’, ‘size’: [9, 13], ‘water’: ‘W’, ‘fancy_shape’: ‘H’, ‘contents’: {’empty’: ‘Y’}, ‘exits’: 1, ‘exitlocations’: {1: ‘S’}, ‘exitdirections’: {1: ‘A’}}

Key: 19

{‘shape’: ‘R’, ‘size’: [4, 6], ‘contents’: {’empty’: ‘Y’}, ‘exits’: 4, ‘exitlocations’: {1: ‘O’, 2: ‘O’, 3: ‘L’, 4: ‘O’}, ‘exitdirections’: {1: ‘A’, 2: ’45BA’, 3: ‘A’, 4: ’45AB’}}

Key: 20

{‘shape’: ‘R’, ‘size’: [2, 3], ‘contents’: {’empty’: ‘Y’, ‘secret_door_dict’: {}, ‘secret_door_count’: 0}, ‘exits’: 0, ‘secretdoors’: ‘check’, ‘exitlocations’: {}, ‘exitdirections’: {}}

Key: 21

{‘shape’: ‘R’, ‘size’: [3, 4], ‘fromdoor’: ‘Y’, ‘contents’: {‘monster’: {}, ‘treasure’: {‘type’: {‘copper’: 0, ‘silver’: 0, ‘electrum’: 0, ‘gold’: 1925, ‘platinum’: 0, ‘gems’: 0, ‘jewellery’: 0, ‘magic’: 0}, ‘store’: ‘Stone Jars’, ‘protection’: ‘hide’, ‘hide’: ‘Magic: Invisibility’}, ‘secret_door_dict’: {1: {(0, 8, -7): ‘xmin’, (-1, 8, -7): {‘beyond’: ‘Room’, ‘loc’: ‘xminloc’}}, 2: {(2, 8, -7): ‘xmax’, (3, 8, -7): {‘beyond’: ‘Room’, ‘loc’: ‘xmaxloc’}}, 3: {(0, 8, -7): ‘ymin’, (0, 7, -7): {‘beyond’: ‘A’, ‘loc’: ‘yminloc’}}, 4: {(0, 11, -7): ‘ymax’, (0, 12, -7): {‘beyond’: ’45AB’, ‘loc’: ‘ymaxloc’}}}, ‘secret_door_count’: 4}, ‘exits’: 0, ‘secretdoors’: ‘check’, ‘exitlocations’: {}, ‘exitdirections’: {}}

Key: 22

{‘shape’: ‘R’, ‘size’: [1, 2], ‘contents’: {’empty’: ‘Y’}, ‘exits’: 4, ‘exitlocations’: {1: ‘R’, 2: ‘L’, 3: ‘L’, 4: ‘S’}, ‘exitdirections’: {1: ’45BA’, 2: ‘A’, 3: ‘A’, 4: ’45BA’}}

Key: 23

{‘shape’: ‘R’, ‘size’: [2, 3], ‘contents’: {’empty’: ‘Y’}, ‘exits’: 1, ‘exitlocations’: {1: ‘R’}, ‘exitdirections’: {1: ’45AB’}}

Key: 24

{‘shape’: ‘R’, ‘size’: [1, 2], ‘fromdoor’: ‘Y’, ‘contents’: {’empty’: ‘Y’}, ‘exits’: 3, ‘exitlocations’: {1: ‘S’, 2: ‘O’, 3: ‘S’}, ‘exitdirections’: {1: ’45AB’, 2: ‘A’, 3: ‘A’}}

Key: 25

{‘shape’: ‘R’, ‘size’: [2, 3], ‘contents’: {’empty’: ‘Y’}, ‘exits’: 3, ‘exitlocations’: {1: ‘R’, 2: ‘L’, 3: ‘R’}, ‘exitdirections’: {1: ‘A’, 2: ’45AB’, 3: ‘A’}}

Key: 26

{‘shape’: ‘R’, ‘size’: [28, 39], ‘water’: ‘N’, ‘fancy_shape’: ‘H’, ‘contents’: {‘monster’: {}}, ‘exits’: 2, ‘exitlocations’: {1: ‘S’, 2: ‘L’}, ‘exitdirections’: {1: ’45BA’, 2: ‘A’}}

Key: 27

{‘shape’: ‘R’, ‘size’: [2, 2], ‘contents’: {‘treasure’: {‘type’: {‘copper’: 0, ‘silver’: 8000, ‘electrum’: 0, ‘gold’: 0, ‘platinum’: 0, ‘gems’: 0, ‘jewellery’: 0, ‘magic’: 0}, ‘store’: ‘Metal Urns’, ‘protection’: ‘hide’, ‘hide’: ‘Secret: Inside non-storage item’}}, ‘exits’: 1, ‘exitlocations’: {1: ‘O’}, ‘exitdirections’: {1: ’45BA’}}

Key: 28

{‘shape’: ‘R’, ‘size’: [4, 4], ‘contents’: {‘level’: {}}, ‘exits’: 4, ‘exitlocations’: {1: ‘O’, 2: ‘O’, 3: ‘L’, 4: ‘S’}, ‘exitdirections’: {1: ‘A’, 2: ’45BA’, 3: ‘A’, 4: ‘A’}}

Key: 29

{‘shape’: ‘R’, ‘size’: [4, 4], ‘contents’: {’empty’: ‘Y’}, ‘exits’: 2, ‘exitlocations’: {1: ‘O’, 2: ‘O’}, ‘exitdirections’: {1: ‘A’, 2: ’45BA’}}
DUNGEON
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBstCCCBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBR9R8R8R8pdBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBCCCR8R8R8CBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBR9R8R8R8CBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBR9R9CCCCCCBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBCBCR10mCBCBCBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBCCCR10R10jCBCBCBBBBBBBBBBB
BBBBBBBBBBBBBCCCpdBCwmCBCBBBCBCBBBBBBBBBB
BBBBBBBCBBCCCCR19R19wmBR14R13R13sdCCBCCCCCCCBBBBBBBB
BBCBBBCCCCBCBtdR19R19R19R19R14R13pR13R12CCdBBBR11R11R11BBBBBBBBB
BBBCBBCCCCCCCR20R19R19R19R19R17R17R16sdR12CCBBBR11R11R11BBBBBBBBB
BBBBCBCCCCCwmR24R20R19CCCR17R17R16CCCCCCR11R11R11BBBBBBBBB
BBCCCR22R21sdsdR21R21gsdR23wmtdR24BR19R19R19R19R17CR16sdR12R12R12CBCR11R11R11BBBBBBBBB
BBCCCR22R21R21R21mR23R23R25CBR19R19R19R19CR18R18R12R12R12CBBR11R11R11BBBBBBBBB
BBBBBBR21R21R21R23R23BCBBBCCBR18R18R18R18R18CBBBCBBBBBBBBBB
BBBBBBR21sdR21R21BBBCBBBBCBR18R18R18R18R18R18R18R18R18CBBBBBBBBBB
BBBBBBCBBBBBBBBBBBCR18R18R18R18R18R18R18R18R18CBBBBBBBBBB
BBBBBCBBBBBBBBBBBBBR18R18R18R18R18R18R18R18R18BBBBBBBBBBB
BBBBCBBBBBBBBBBBBBBR18R18R18R18R18R18R18R18R18BBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBR18R18R18R18R18R18R18R18R18BBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

Key: 1

{‘shape’: ‘R’, ‘size’: [10, 13], ‘water’: ‘S’, ‘fancy_shape’: ‘H’, ‘contents’: {’empty’: ‘Y’}, ‘exits’: 4, ‘exitlocations’: {1: ‘R’, 2: ‘L’, 3: ‘O’, 4: ‘S’}, ‘exitdirections’: {1: ‘A’, 2: ’45BA’, 3: ‘A’, 4: ‘A’}}

Key: 2

{‘shape’: ‘R’, ‘size’: [3, 4], ‘fromdoor’: ‘Y’, ‘contents’: {‘monster’: {}, ‘treasure’: {‘type’: {‘copper’: 0, ‘silver’: 4400, ‘electrum’: 0, ‘gold’: 0, ‘platinum’: 0, ‘gems’: 0, ‘jewellery’: 0, ‘magic’: 0}, ‘store’: ‘Bloody Great Chests’, ‘protection’: ‘hide’, ‘hide’: ‘Secret room nearby’}}, ‘exits’: 1, ‘exitstype’: ‘door’, ‘exitlocations’: {1: ‘R’}, ‘exitdirections’: {1: ‘A’}}

Key: 3

{‘shape’: ‘R’, ‘size’: [9, 12], ‘water’: ‘S’, ‘fancy_shape’: ‘H’, ‘contents’: {’empty’: ‘Y’, ‘secret_door_dict’: {1: {(3, 6, -4): ‘xmin’, (2, 6, -4): {‘beyond’: ‘Room’, ‘loc’: ‘xminloc’}}, 2: {(3, 9, -4): ‘xmin’, (2, 9, -4): {‘beyond’: ‘Room’, ‘loc’: ‘xminloc’}}, 3: {(11, 0, -4): ‘xmax’, (12, 0, -4): {‘beyond’: ’45BA’, ‘loc’: ‘xmaxloc’}}, 4: {(11, 6, -4): ‘xmax’, (12, 6, -4): {‘beyond’: ‘A’, ‘loc’: ‘xmaxloc’}}, 5: {(11, 10, -4): ‘xmax’, (12, 10, -4): {‘beyond’: ’45BA’, ‘loc’: ‘xmaxloc’}}, 6: {(4, 0, -4): ‘ymin’, (4, -1, -4): {‘beyond’: ‘Room’, ‘loc’: ‘yminloc’}}, 7: {(6, 0, -4): ‘ymin’, (6, -1, -4): {‘beyond’: ‘Room’, ‘loc’: ‘yminloc’}}, 8: {(9, 0, -4): ‘ymin’, (9, -1, -4): {‘beyond’: ‘P’, ‘loc’: ‘yminloc’}}, 9: {(4, 10, -4): ‘ymax’, (4, 11, -4): {‘beyond’: ‘Room’, ‘loc’: ‘ymaxloc’}}, 10: {(8, 10, -4): ‘ymax’, (8, 11, -4): {‘beyond’: ‘P’, ‘loc’: ‘ymaxloc’}}, 11: {(9, 10, -4): ‘ymax’, (9, 11, -4): {‘beyond’: ‘A’, ‘loc’: ‘ymaxloc’}}}, ‘secret_door_count’: 11}, ‘exits’: 0, ‘secretdoors’: ‘check’, ‘exitlocations’: {}, ‘exitdirections’: {}}

Key: 4

{‘shape’: ‘R’, ‘size’: [1, 2], ‘contents’: {’empty’: ‘Y’, ‘secret_door_dict’: {1: {(2, 7, -4): ‘xmin’, (1, 7, -4): {‘beyond’: ‘Room’, ‘loc’: ‘xminloc’}}, 2: {(2, 7, -4): ‘ymax’, (2, 8, -4): {‘beyond’: ‘Room’, ‘loc’: ‘ymaxloc’}}}, ‘secret_door_count’: 2}, ‘exits’: 0, ‘secretdoors’: ‘check’, ‘exitlocations’: {}, ‘exitdirections’: {}}

Key: 5

{‘shape’: ‘R’, ‘size’: [2, 3], ‘contents’: {’empty’: ‘Y’}, ‘exits’: 3, ‘exitlocations’: {1: ‘L’, 2: ‘R’, 3: ‘O’}, ‘exitdirections’: {1: ’45AB’, 2: ‘A’, 3: ‘A’}}

Key: 6

{‘shape’: ‘R’, ‘size’: [2, 3], ‘contents’: {’empty’: ‘Y’}, ‘exits’: 2, ‘exitlocations’: {1: ‘O’, 2: ‘S’}, ‘exitdirections’: {1: ’45AB’, 2: ‘A’}}

Key: 7

{‘shape’: ‘R’, ‘size’: [1, 1], ‘fromdoor’: ‘Y’, ‘contents’: {’empty’: ‘Y’}, ‘exits’: 3, ‘exitlocations’: {1: ‘O’, 2: ‘O’, 3: ‘S’}, ‘exitdirections’: {1: ‘A’, 2: ’45AB’, 3: ‘A’}}

Key: 8

{‘shape’: ‘R’, ‘size’: [3, 3], ‘contents’: {’empty’: ‘Y’}, ‘exits’: 4, ‘exitlocations’: {1: ‘O’, 2: ‘L’, 3: ‘O’, 4: ‘O’}, ‘exitdirections’: {1: ’45BA’, 2: ‘A’, 3: ‘A’, 4: ‘A’}}

Key: 9

{‘shape’: ‘R’, ‘size’: [4, 4], ‘contents’: {‘trap’: {}}, ‘exits’: 2, ‘exitlocations’: {1: ‘O’, 2: ‘O’}, ‘exitdirections’: {1: ‘A’, 2: ‘A’}}

Key: 10

{‘shape’: ‘R’, ‘size’: [2, 2], ‘contents’: {‘monster’: {}, ‘treasure’: {‘type’: {‘copper’: 0, ‘silver’: 0, ‘electrum’: 0, ‘gold’: 0, ‘platinum’: 0, ‘gems’: 0, ‘jewellery’: 7, ‘magic’: 0}, ‘store’: ‘Stone Jars’, ‘protection’: ‘hide’, ‘hide’: ‘Magic: Invisibility’}}, ‘exits’: 1, ‘exitstype’: ‘door’, ‘exitlocations’: {1: ‘R’}, ‘exitdirections’: {1: ‘A’}}

Key: 11

{‘shape’: ‘R’, ‘size’: [3, 5], ‘contents’: {’empty’: ‘Y’}, ‘exits’: 1, ‘exitlocations’: {1: ‘O’}, ‘exitdirections’: {1: ‘A’}}

Key: 12

{‘shape’: ‘R’, ‘size’: [3, 5], ‘contents’: {’empty’: ‘Y’}, ‘exits’: 2, ‘exitlocations’: {1: ‘R’, 2: ‘S’}, ‘exitdirections’: {1: ’45BA’, 2: ‘A’}}

Key: 13

{‘shape’: ‘R’, ‘size’: [2, 3], ‘contents’: {‘treasure’: {‘type’: {‘copper’: 0, ‘silver’: 0, ‘electrum’: 0, ‘gold’: 0, ‘platinum’: 700, ‘gems’: 0, ‘jewellery’: 0, ‘magic’: 0}, ‘store’: ‘Coffers’, ‘protection’: ‘hide’, ‘hide’: ‘Secret: Loose stone – in wall’}, ‘secret_door_dict’: {1: {(13, 3, -7): ‘xmin’, (12, 3, -7): {‘beyond’: ‘Room’, ‘loc’: ‘xminloc’}}, 2: {(14, 4, -7): ‘xmax’, (15, 4, -7): {‘beyond’: ‘Room’, ‘loc’: ‘xmaxloc’}}}, ‘secret_door_count’: 2}, ‘exits’: 0, ‘secretdoors’: ‘check’, ‘exitlocations’: {}, ‘exitdirections’: {}}

Key: 14

{‘shape’: ‘R’, ‘size’: [2, 3], ‘contents’: {’empty’: ‘Y’}, ‘exits’: 1, ‘exitlocations’: {1: ‘R’}, ‘exitdirections’: {1: ‘A’}}

Key: 15

{‘shape’: ‘R’, ‘size’: [2, 2], ‘contents’: {‘treasure’: {‘type’: {‘copper’: 8000, ‘silver’: 0, ‘electrum’: 0, ‘gold’: 0, ‘platinum’: 0, ‘gems’: 0, ‘jewellery’: 0, ‘magic’: 0}, ‘store’: ‘Loose’, ‘protection’: ‘guard’, ‘guard’: ‘Poison needles: handle’}}, ‘exits’: 3, ‘exitlocations’: {1: ‘R’, 2: ‘R’, 3: ‘O’}, ‘exitdirections’: {1: ‘A’, 2: ‘A’, 3: ‘A’}}

Key: 16

{‘shape’: ‘R’, ‘size’: [4, 6], ‘contents’: {’empty’: ‘Y’, ‘secret_door_dict’: {1: {(14, 8, -7): ‘xmin’, (13, 8, -7): {‘beyond’: ’45BA’, ‘loc’: ‘xminloc’}}, 2: {(14, 6, -7): ‘ymin’, (14, 5, -7): {‘beyond’: ’45AB’, ‘loc’: ‘yminloc’}}}, ‘secret_door_count’: 2}, ‘exits’: 0, ‘secretdoors’: ‘check’, ‘exitlocations’: {}, ‘exitdirections’: {}}

Key: 17

{‘shape’: ‘R’, ‘size’: [4, 6], ‘contents’: {’empty’: ‘Y’}, ‘exits’: 3, ‘exitlocations’: {1: ‘O’, 2: ‘L’, 3: ‘O’}, ‘exitdirections’: {1: ‘A’, 2: ‘A’, 3: ‘A’}}

Key: 18

{‘shape’: ‘R’, ‘size’: [9, 13], ‘water’: ‘W’, ‘fancy_shape’: ‘H’, ‘contents’: {’empty’: ‘Y’}, ‘exits’: 1, ‘exitlocations’: {1: ‘S’}, ‘exitdirections’: {1: ‘A’}}

Key: 19

{‘shape’: ‘R’, ‘size’: [4, 6], ‘contents’: {’empty’: ‘Y’}, ‘exits’: 4, ‘exitlocations’: {1: ‘O’, 2: ‘O’, 3: ‘L’, 4: ‘O’}, ‘exitdirections’: {1: ‘A’, 2: ’45BA’, 3: ‘A’, 4: ’45AB’}}

Key: 20

{‘shape’: ‘R’, ‘size’: [2, 3], ‘contents’: {’empty’: ‘Y’, ‘secret_door_dict’: {}, ‘secret_door_count’: 0}, ‘exits’: 0, ‘secretdoors’: ‘check’, ‘exitlocations’: {}, ‘exitdirections’: {}}

Key: 21

{‘shape’: ‘R’, ‘size’: [3, 4], ‘fromdoor’: ‘Y’, ‘contents’: {‘monster’: {}, ‘treasure’: {‘type’: {‘copper’: 0, ‘silver’: 0, ‘electrum’: 0, ‘gold’: 1925, ‘platinum’: 0, ‘gems’: 0, ‘jewellery’: 0, ‘magic’: 0}, ‘store’: ‘Stone Jars’, ‘protection’: ‘hide’, ‘hide’: ‘Magic: Invisibility’}, ‘secret_door_dict’: {1: {(0, 8, -7): ‘xmin’, (-1, 8, -7): {‘beyond’: ‘Room’, ‘loc’: ‘xminloc’}}, 2: {(2, 8, -7): ‘xmax’, (3, 8, -7): {‘beyond’: ‘Room’, ‘loc’: ‘xmaxloc’}}, 3: {(0, 8, -7): ‘ymin’, (0, 7, -7): {‘beyond’: ‘A’, ‘loc’: ‘yminloc’}}, 4: {(0, 11, -7): ‘ymax’, (0, 12, -7): {‘beyond’: ’45AB’, ‘loc’: ‘ymaxloc’}}}, ‘secret_door_count’: 4}, ‘exits’: 0, ‘secretdoors’: ‘check’, ‘exitlocations’: {}, ‘exitdirections’: {}}

Key: 22

{‘shape’: ‘R’, ‘size’: [1, 2], ‘contents’: {’empty’: ‘Y’}, ‘exits’: 4, ‘exitlocations’: {1: ‘R’, 2: ‘L’, 3: ‘L’, 4: ‘S’}, ‘exitdirections’: {1: ’45BA’, 2: ‘A’, 3: ‘A’, 4: ’45BA’}}

Key: 23

{‘shape’: ‘R’, ‘size’: [2, 3], ‘contents’: {’empty’: ‘Y’}, ‘exits’: 1, ‘exitlocations’: {1: ‘R’}, ‘exitdirections’: {1: ’45AB’}}

Key: 24

{‘shape’: ‘R’, ‘size’: [1, 2], ‘fromdoor’: ‘Y’, ‘contents’: {’empty’: ‘Y’}, ‘exits’: 3, ‘exitlocations’: {1: ‘S’, 2: ‘O’, 3: ‘S’}, ‘exitdirections’: {1: ’45AB’, 2: ‘A’, 3: ‘A’}}

Key: 25

{‘shape’: ‘R’, ‘size’: [2, 3], ‘contents’: {’empty’: ‘Y’}, ‘exits’: 3, ‘exitlocations’: {1: ‘R’, 2: ‘L’, 3: ‘R’}, ‘exitdirections’: {1: ‘A’, 2: ’45AB’, 3: ‘A’}}

Key: 26

{‘shape’: ‘R’, ‘size’: [28, 39], ‘water’: ‘N’, ‘fancy_shape’: ‘H’, ‘contents’: {‘monster’: {}}, ‘exits’: 2, ‘exitlocations’: {1: ‘S’, 2: ‘L’}, ‘exitdirections’: {1: ’45BA’, 2: ‘A’}}

Key: 27

{‘shape’: ‘R’, ‘size’: [2, 2], ‘contents’: {‘treasure’: {‘type’: {‘copper’: 0, ‘silver’: 8000, ‘electrum’: 0, ‘gold’: 0, ‘platinum’: 0, ‘gems’: 0, ‘jewellery’: 0, ‘magic’: 0}, ‘store’: ‘Metal Urns’, ‘protection’: ‘hide’, ‘hide’: ‘Secret: Inside non-storage item’}}, ‘exits’: 1, ‘exitlocations’: {1: ‘O’}, ‘exitdirections’: {1: ’45BA’}}

Key: 28

{‘shape’: ‘R’, ‘size’: [4, 4], ‘contents’: {‘level’: {}}, ‘exits’: 4, ‘exitlocations’: {1: ‘O’, 2: ‘O’, 3: ‘L’, 4: ‘S’}, ‘exitdirections’: {1: ‘A’, 2: ’45BA’, 3: ‘A’, 4: ‘A’}}

Key: 29

{‘shape’: ‘R’, ‘size’: [4, 4], ‘contents’: {’empty’: ‘Y’}, ‘exits’: 2, ‘exitlocations’: {1: ‘O’, 2: ‘O’}, ‘exitdirections’: {1: ‘A’, 2: ’45BA’}}
legend_dict =  {}
    legend_dict['O'] = "Outside Entrance"
    legend_dict['C'] = "Corridor/Passage"
    legend_dict['R'] = "Chamber/Room"
    legend_dict['D'] = "Dead End"
    legend_dict['d'] = "door"
    legend_dict[':'] = "direction of Door"
    legend_dict['wm'] = "Wandering Monster"
    legend_dict['sd'] = "Secret Door"
    legend_dict['st'] = "Stairs"
    legend_dict['ch'] = "Chute"
    legend_dict['cm'] = "Chimney"
    legend_dict['td'] = "Trapdoor"
    legend_dict['pi'] = "Pit Trap"
    legend_dict['pd'] = "Pit Trap: Secret Door"
    legend_dict['ps'] = "Pit Trap: Spikes"
    legend_dict['pc'] = "Pit Trap: Crushing Walls"
    legend_dict['el'] = "Elevator Trap"
    legend_dict['ar'] = "Arrow Trap"
    legend_dict['sp'] = "Spear Trap"
    legend_dict['df'] = "Door Falls Trap"
    legend_dict['sf'] = "Stone Falls Trap"
    legend_dict['gs'] = "Gas Trap"
    legend_dict['bw'] = "Blocked Wall Trap"
    legend_dict['ol'] = "Oil Trap"
    legend_dict['m'] = "Monster"
    legend_dict['t'] = "Treasure"
    legend_dict['p'] = "Pool"
    legend_dict['c'] = "Treasure: Copper"  
    legend_dict['s'] = "Treasure: Silver"
    legend_dict['e'] = "Treasure: Electrum"
    legend_dict['g'] = "Treasure: Gold"
    legend_dict['p'] = "Treasure: Platinum"
    legend_dict['G'] = "Treasure: Gems"
    legend_dict['j'] = "Treasure: Jewellery"
    legend_dict['M'] = "Treasure: Magic"
%d bloggers like this: