Skip to content

Instantly share code, notes, and snippets.

@m-allen-hall
Last active August 15, 2022 21:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save m-allen-hall/d2b2399022afcb9ac0900b442d9d719e to your computer and use it in GitHub Desktop.
Save m-allen-hall/d2b2399022afcb9ac0900b442d9d719e to your computer and use it in GitHub Desktop.
Character generator for MorkBorg characters that do not use the optional classes. Runs without a GUI.
#classlessSCVM v0.1
#classless character generator for MÖRK BORG
#classlessSCVM is an independent production by M. Allen Hall
#and is not affiliated with Ockult Örtmästare Games or Stockholm
#Kartell. It is published under the MÖRK BORG Third Party License.
#MÖRK BORG is copyright Ockult Örtmästare Games and Stockholm Kartell.
#
print('classlessSCVM v0.1')
print('classless character generator for MÖRK BORG')
print('classlessSCVM is an independent production by M. Allen Hall')
print('and is not affiliated with Ockult Örtmästare Games or Stockholm')
print('Kartell. It is published under the MÖRK BORG Third Party License.')
print('MÖRK BORG is copyright Ockult Örtmästare Games and Stockholm Kartell.')
print('.')
print('.')
print('.')
#random tables as lists
name_list = ['Lars', 'Torleif', 'Aesir', 'Arne', 'Aric', 'Arkyn', 'Bragi', 'Espen',
'Frey', 'Frode', 'Gisli', 'Hrafen', 'Ivar', 'Njord', 'Rune', 'Sindri',
'Tor', 'Tyr', 'Ulfar', 'Ulrik', 'Vidar', 'Ove', 'Mads', 'Øivind', 'Tiril',
'Brinter', 'Domen', 'Nal', 'Rook', 'Otmar', 'Tej', 'Meho', 'Rudi', 'Pralf',
'Fafnek', 'Hyerr', 'Skesruk', 'Brodr', 'Jorben', 'Bhili']
bag_list = [0,'your own two hands (if you are lucky).',
'a stick with a sack on the end on it for 3 normal-sized items.',
'a sling for 4 normal-sized items.',
'a haversack for 8 normal-sized items.',
'a small cart with nothing to pull it.',
'a mule. Maybe you know someone with a cart that needs pulling.']
item1_list = [0, 'silk cord 50 feet',
'Presence + 8 caltrops in a wooden box (d2 damage)',
'bulls-eye lamp with oil for Presence + 6 hours',
'bag with 30 marbles',
'random unclean scroll',
'silver hand mirror',
'cane which conceals a short blade (d4 damage)',
'glass-cutter, handled',
'climbing spikes',
'empty leather book with pen and ink',
'a bottle of yellow poison (d4 doses, DR14 Toughness or d8 damage)',
'leather tool roll with chisels, gouges, and a small mallet']
item2_list = [0, 'a bottle of metal-eating acid (d4 + 1 doses, will corrode a hinge or lock in 3d6 minutes)',
'random sacred scroll',
'd4 bundles of healing herbs, cures infection and heals d4 HP',
'wooden fife with which you are a half-decent performer',
'smoking pipe with a pouch of fine tobacco',
'bottle of napalm (d10 damage to up to 3 adjacent creatures)',
'spool of metal wire',
'trepanation set with auger, hammer, and awls',
'shield (-1 HP damage or have the shield break to ignore one attack)',
'a wooden box with a variety of spices',
'fishing tackle',
'tame falcon (it might share its food with you if you are desperate)']
weapon_list = [0, 'Walking Stick d4', 'Dagger d4', 'Sling d4', 'Hatchet d4', 'Axe d6', 'Mace d6', 'Shortbow d6, with Presence +10 arrows',
'Axe d8', 'Longbow d8, with Presence +10 bolts', 'Scythe d10']
armor_list = [0, 'no armor (tier 0)',
'light armor (−d2 damage, tier 1)',
'medium armor (−d4 damage, tier 2)',
'heavy armor (−d6 damage, tier 3)']
unclean_list = [0, 'Palms Open the Southern Gate', 'Tongue of Eris', 'Te-le-kin-esis', 'Lucy-fires Levitation', 'Daemon of Capillaries',
'Nine Violet Signs Unknot the Storm', 'Metzhuotl Blind Your Eye', 'Foul Psychopomp', 'Eyelid Blinds the Mind', 'DEATH']
sacred_list = [0, 'Grace of a Dead Saint', 'Grace for a Sinner', 'Whispers Pass the Gate', 'Aegis of Sorrow',
'Unmet Fate', 'Bestial Speech', "False Dawn/Night's Chariot", 'Hermetic Sleep', "Roskoe's Consuming Glare",
'Enochian Syntax']
import random
def new_char():
#roll stats function
def roll_stat():
stat_mod = [0,-3,-3,-3,-3,-2,-2,-1,-1,0,0,0,0,1,1,2,2,3,3]
fourd6_roll = [random.randint(1,6) for i in range (0,4)]
fourd6_roll.sort()
fourd6_d1sum = sum(fourd6_roll[1:4])
mod_final = stat_mod[fourd6_d1sum]
return mod_final
str_mod = roll_stat()
agi_mod = roll_stat()
pre_mod = roll_stat()
tou_mod = roll_stat()
#silver and food
s_roll = random.randint(1,6) + random.randint (1,6)
silver = s_roll*10
food_roll = random.randint(1,4)
print('Possessions:', silver, 'silver, a waterskin, and', food_roll, 'day(s) worth of food.')
#roll on first three lists
bag_roll = random.randint(1,6)
item1_roll = random.randint(1,12)
item2_roll = random.randint(1,12)
#roll for armor and weapon
if item1_roll == 5 or item2_roll == 2:
weapon_roll = random.randint(1,6)
armor_roll = random.randint(1,2)
else:
weapon_roll = random.randint(1,10)
armor_roll = random.randint(1,4)
#print out gear
print('For carrying your gear you have', bag_list[bag_roll])
if item1_roll == 5:
print('Unclean Scroll:', unclean_list[random.randint(1,10)])
elif item1_roll == 2:
print('Item:', pre_mod + 8, 'caltrops in a wooden box, d2 damage')
elif item1_roll == 3:
print('Item: bulls-eye lamp with oil for', pre_mod + 6, 'hours')
elif item1_roll == 11:
print('Item: a bottle of yellow poison,', random.randint(2,5), 'doses, Toughness DR14 or d8 damage')
else:
print('Item:', item1_list[item1_roll])
if item2_roll == 2:
print('Sacred Scroll:', sacred_list[random.randint(1,10)])
elif item2_roll == 1:
print('Item: a bottle of metal-eating acid,', random.randint(1,4), 'dose(s), will corrode a hinge or lock in 3d6 minutes')
elif item2_roll == 3:
print('Item:', random.randint(1,4), 'bundle(s) of healing herbs, cures infection and heals d4 HP')
else:
print('Item:', item2_list[item2_roll])
if weapon_roll == 7:
print('Weapon: Shortbow d6, with', pre_mod + 10, 'arrows')
elif weapon_roll == 3:
print('Weapon: Sling d4, with', pre_mod + 8, 'smooth, round stones')
elif weapon_roll == 9:
print('Weapon: Longbow d8, with', pre_mod + 10, 'arrows')
else:
print('Weapon:', weapon_list[weapon_roll])
print('Armor:', armor_list[armor_roll])
print('-')
#print mods
print('Strength', str_mod)
print('Agility', agi_mod)
print('Presence', pre_mod)
print('Toughness', tou_mod)
print('-')
#roll for HP
hp_roll = random.randint(1,8)
hp = hp_roll + tou_mod
if hp <= 0:
print('HP 1')
else:
print('HP', hp)
#omens
print('Omens:', random.randint(1,2))
print('-')
#name
print(random.choice(name_list), 'is your name.')
print("Don't die.")
party_size = int(input('How many classlessSCVM do you require?'))
for i in range(0,party_size):
print('-----------------------')
new_char()
new_scvm = 1
while new_scvm > 0:
print('.')
print('.')
print('.')
new_scvm = int(input('How many classlessSCVM have died?'))
for i in range(0,new_scvm):
print('-----------------------')
new_char()
print('All praise Yetsabu-Nech')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment