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"

One Reply to “Advanced Dungeons and Dragons 1st Edition Random Dungeon Generator”

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: