https://github.com/bluetyson/drpg
Python code to download and sync all your purchases
Remarkable, Incredible and Amazing nerdiness
https://github.com/bluetyson/drpg
Python code to download and sync all your purchases
In January I adapted the Advanced Dungeons and Dragons 1st Edition Random Dungeon Generator to code, which is available here:-
https://github.com/bluetyson/ADnD1e-Random-Dungeon-Generator
This launches a container that you can run the code in via the simple instructions and make whatever sorts of dungeons you like.
https://mybinder.org/v2/gh/bluetyson/ADnD1e-Random-Dungeon-Generator/HEAD
Using this random dungeon generator I have made a million dungeons – all with 10 as the Periodic Check number.
So they will be quite small in general.
Here you can randomly choose one of those:-
https://cosmicheroes.space/cgi-bin/dungeoncount5.pl
and here you can pick your own from 0 to 999999
A few years ago I looked at this, have found it again, so here’s a start.
Not, many mess categories as you know, but here’s a plot from 2 that will fit on a screen.
Vermin and plants, some animals and common humanoids and your garden variety monstrous humanoids when you lump it at this very joined together level.
Kmodes method, just have to find where I put that part.
I have started looking at adapting this for HexDescribe type reasons.
For example: – https://github.com/bluetyson/Map-Generation/blob/main/src/map.py
https://chgowiz-games.blogspot.com/ is working on a epic random generator for a campaign you can read about at his blog – using HexDescribe https://campaignwiki.org/hex-describe
You can see some examples here https://docs.google.com/spreadsheets/d/1G8AZf2tBOtGYr5AEKis7_AZYpJ1_T18LFYp_mi_rikY/edit#gid=1019219400 and https://pastebin.com/raw/W9zgH3pN
Borrowing his business classifications for an example for the Map-Generation software:
The output for this program is GeoJSON, so thanks to QGIS – which is great open source software.
Randomly perturbed Voronoi generation seems to work well for the random wanderiness of towns or cities that spring up.
The original code has churches, monasteries and Cathedrals. Pretty sure our D&D type games don’t need that sort of building type overload.
As well as GeoJSON – it has a viewer script that is basically QTing a PNG, so your usual plt.savefig() before that will get you that version of the output, saved, too. Need to make one that is labelled – maybe a geopandas .
Converting this to perl directly would take a bit of work – no higher level geospatial apis like shapely around there, so would have to redo in gdal directly :- https://metacpan.org/pod/Geo::GDAL. Probably easier to wrap, for fun.
https://github.com/LAVS-TM/Map-Generation
A program that can generate cities and towns, medieval Voronoi style. Along with a viewer that can produce graphcis the base output is json, which gives you vector data to use with other things. Very nice!
Here is an example of a possible configuration for the city to be generated:
city = City(10000, 10000, has_walls=True, has_castle=True) tools.json(city, '/generated_city/city.json')
Things along these lines:
please continue as above, starting at 22
22: {
'6th Level': 'Spiritwrack',
'7th Level': None,
'8th Level': None,
'9th Level': None
},
23: {
'6th Level': 'Stone To Flesh',
'7th Level': None,
'8th Level': None,
'9th Level': None
},
24: {
'6th Level': 'Tenser's Transformation',
'7th Level': None,
'8th Level': None,
'9th Level': None
}
}
please continue as above, starting at 17
Sure, here is the python dictionary for the table starting at level 17:
python
Copy code
spells = {
6: {
'17': 'Otiluke\'s Freezing Sphere',
'18': 'Part Water',
'19': 'Project Image',
'20': 'Reincarnation',
'21': 'Repulsion',
'22': 'Spiritwrack',
'23': 'Stone To Flesh',
'24': 'Tenser\'s Transformation'
},
7: {
},
8: {
},
9: {
},
}
Please note that the numbers in the outermost dictionary are the spell level and the numbers in the innermost dictionaries are the spell numbers.
can you give me the full 7th 8th and 9th levels as above?
Sure, here is the full python dictionary for the 7th, 8th, and 9th levels:
python
Copy code
{
7th Level: {
'1': 'Anti-Magic Shell',
'2': 'Bigby's Grasping Hand',
'3': 'Bigby's Forceful Hand',
'4': 'Control Weather',
'5': 'Death Spell',
'6': 'Disintegrate',
'7': 'Enchant An Item',
'8': 'Extension III',
'9': 'Geas',
'10': 'Glassee',
'11': 'Globe Of Invulnerability',
'12': 'Guards And Wards',
'13': 'Invisible Stalker',
'14': 'Legend Lore',
'15': 'Lower Water',
'16': 'Monster Summoning IV',
'17': 'Move Earth',
'18': 'Otiluke's Freezing Sphere',
'19': 'Part Water',
'20': 'Project Image',
'21': 'Reincarnation',
'22': 'Repulsion',
'23': 'Spiritwrack',
'24': 'Stone To Flesh',
'25': 'Tenser's Transformation'
},
8th Level: {
'1': 'Antipathy/Sympathy',
'2': 'Cacodemon',
'3': 'Bigby's Clenched Fist',
'4': 'Bigby's Crushing Hand',
'5': 'Charm Plants',
'6': 'Clone',
'7': '
please finish the table from 3 responses ago that ended at 21: {
'Move Earth': '',
'Vanish': '',
'Trap The Soul': '',
},
22: {
'Otiluke's Freezing Sphere': '',
'Part Water': '',
'Project Image': '',
'Reincarnation': '',
'Repulsion': '',
'Spiritwrack': '',
'Stone To Flesh': '',
'Tenser's Transformation': '',
},
23: {
'Anti-Magic Shell': 'Bigby's Grasping Hand',
'Bigby's Forceful Hand': 'Cacodemon',
'Control Weather': 'Charm Plants',
'Death Spell': 'Delayed Blast Fireball',
'Disintegrate': "Drawmij's Instant Summons",
'Enchant An Item': 'Duo-Dimension',
'Extension III': 'Limited Wish',
'Geas': 'Mass Invisibility',
'Glassee': 'Monster Summoning V',
'Globe Of Invulnerability': "Mordenkainen's Sword",
},
The below, for if I want to rewrite to lazily add to my generic shared host here.
convert this python function to perl def random_check():
pc_dict = {}
pc = roll_dice(1,20)
if pc <= 2:
pc_dict['direction'] = 'ahead'
pc_dict['check'] = 6
elif pc >= 3 and pc <= 5:
pc_dict['direction'] = 'exit'
pc_dict['check'] = 6
elif pc >= 6 and pc <= 10:
pc_dict['direction'] = 'side'
pc_dict['check'] = 3
elif pc >= 11 and pc <= 13:
pc_dict['direction'] = 'turn'
pc_dict['check'] = 3
elif pc >= 14 and pc <= 16:
pc_dict['direction'] = 'room'
pc_dict['check'] = 3
elif pc == 17:
pc_dict['direction'] = 'level'
pc_dict['check'] = 'up_down'
if LEVEL == "N": #make this what you like or could be config
pc_dict['direction'] = 'room'
pc_dict['check'] = 3
elif pc == 18:
pc_dict['direction'] = 'stop'
pc_dict['check'] = 'spy_things'
elif pc == 19:
pc_dict['direction'] = 'bad_things'
pc_dict['check'] = 3
elif pc == 20:
pc_dict['direction'] = 'random_encounter'
pc_dict['check'] = 'roll_again'
if VERBOSITY:
print("RANDOM_CHECK",pc, pc_dict['direction'])
#test purposes
#pc_dict['direction'] = 'ahead'
return pc_dict
sub random_check {
my $pc_hash = {};
my $pc = roll_dice(1,20);
if ($pc <= 2) {
$pc_hash->{'direction'} = 'ahead';
$pc_hash->{'check'} = 6;
} elsif ($pc >= 3 && $pc <= 5) {
$pc_hash->{'direction'} = 'exit';
$pc_hash->{'check'} = 6;
} elsif ($pc >= 6 && $pc <= 10) {
$pc_hash->{'direction'} = 'side';
$pc_hash->{'check'} = 3;
} elsif ($pc >= 11 && $pc <= 13) {
$pc_hash->{'direction'} = 'turn';
$pc_hash->{'check'} = 3;
} elsif ($pc >= 14 && $pc <= 16) {
$pc_hash->{'direction'} = 'room';
$pc_hash->{'check'} = 3;
} elsif ($pc == 17) {
$pc_hash->{'direction'} = 'level';
$pc_hash->{'check'} = 'up_down';
if ($LEVEL eq "N") {
$pc_hash->{'direction'} = 'room';
$pc_hash->{'check'} = 3;
}
} elsif ($pc == 18) {
$pc_hash->{'direction'} = 'stop';
$pc_hash->{'check'} = 'spy_things';
} elsif ($pc == 19) {
$pc_hash->{'direction'} = 'bad_things';
$pc_hash->{'check'} = 3;
} elsif ($pc == 20) {
$pc_hash->{'direction'} = 'random_encounter';
$pc_hash->{'check'} = 'roll_again';
}
if ($VERBOSITY) {
print "RANDOM_CHECK $pc $pc_hash->{'direction'}\n";
}
return $pc_hash;
}
I had already done monsters before I thought of this - and they were standard mostly, so a parser did all 10 levels reasonbly well.
Did magic items and spells with ChatGPT assistance. Possibly not lots and lots quicker - but easier on the fingers and wrists.
So you can run this in a browser:
https://mybinder.org/v2/gh/bluetyson/ADnD1e-Random-Dungeon-Generator/HEAD
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
B | B | B | B | B | C | CHl | C | O | C | C | C | B | B |
B | B | C | C | C | C | CHl | C | B | B | B | B | B | B |
B | B | C | C | C | Cwm | C | B | B | B | B | B | B | B |
B | B | B | B | B | C | B | C | B | B | B | B | B | B |
B | B | B | B | B | C | C | C | C | B | B | B | B | B |
B | B | B | B | B | C | C | C | wm | B | B | B | B | B |
B | B | B | B | C | B | B | B | B | B | B | B | B | B |
B | B | B | C | B | B | B | B | B | B | B | B | B | B |
B | B | C | B | B | B | B | B | B | B | B | B | B | B |
B | B | C | B | B | B | B | B | B | B | B | B | B | B |
B | B | C | B | B | B | B | B | B | B | B | B | B | B |
B | B | C | B | B | B | B | B | B | B | B | B | B | B |
B | B | C | B | B | B | B | B | B | B | B | B | B | B |
B | B | C | B | B | B | B | B | B | B | B | B | B | B |
B | C | D | B | B | B | B | B | B | B | B | B | B | |
R2 | R2 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | B | B | B |
R2 | R2 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | B | B | B |
R2 | R2 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | B | B | B |
R2 | R2 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | C | CHl | C |
B | B | R1m | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | C | CHl | C |
B | B | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | B | B | B |
B | B | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | B | B | B |
B | B | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | B | B | B |
B | B | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | B | B | B |
B | B | R1 | R1 | R1 | R1g | R1 | R1 | R1 | R1 | R1 | B | B | B |
B | B | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | B | B | B |
B | B | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | B | B | B |
B | B | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | R1 | B | B | B |
B | B | B | B | B | B | B | B | B | B | C | B | B | B |
B | B | B | B | B | B | B | B | B | B | C | B | B | B |
B | B | B | B | B | B | B | B | B | B | C | B | B | B |
Not tried it yet, but it will certainly make doing a character generator faster.
Python 2.7
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.