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"

Dungeon23 – 017 Ruby Base Level 11 Key 07

Level 11 is basically a giant storage unit. There are loads of large wooden crates any way you look.

GM:At Key 7, these crates hold bulky sailing equipment, sails, canvases, ropes and that sort of gear. Bulky, unwieldy but bendy and stuff-in-able.

Dungeon23 – 016 Ruby Base Level 11 Key 06

Level 11 is basically a giant storage unit. There are loads of large wooden crates any way you look.

GM:At Key 6, this is similar to Key 5, storage inside storage. It similarly holds assorted 21st century gear and equipment of the bulkier kind. Large future batteries, bigger tools, a force field generator, that sort of thing. Rules apply to the help the same as for 5.

Dungeon23 – 015 Ruby Base Level 11 Key 05

Level 11 is basically a giant storage unit. There are loads of large wooden crates any way you look.

GM:At Key 5, spare lava armour prototypes. Looks like big wooden crates, but inside, actual metal safes with some electronic locks as per the 21st century. The safes are large enough to hold a full suit of armour each. These are known to be off-limits to staff and the Rubys are happy to shoot offenders and throw them to the sharks as an example of how to behave. Pay well, do as we say or else.

Dungeon23 – 014 Ruby Base Level 11 Key 04

Level 11 is basically a giant storage unit. There are loads of large wooden crates any way you look GM:At Key 3, general tools and equipment, for carpentry, landscaping, metalwork and other professions at a general 19th century level: useful for general ship work here and there, too.

%d bloggers like this: