making the ui nicer
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
#!/usr/bin/python3
|
||||
import random
|
||||
from equipment import *
|
||||
from spells import *
|
||||
|
||||
# functions
|
||||
def roll_dice(count, sides):
|
||||
@@ -22,7 +23,7 @@ class Adventurer:
|
||||
self.gold= roll_dice(3,6)
|
||||
self.torches = roll_dice(1,6)
|
||||
self.rations = roll_dice(1,6)
|
||||
self.equipment = [ 'backpack', 'tinderbox', 'waterskin' ]
|
||||
self.equipment = self.roll_equipment()
|
||||
# all armor, individual classes may have overrides
|
||||
self.possible_armor = list(armor.keys())
|
||||
# all weapons, individual classes may have overrides
|
||||
@@ -32,6 +33,11 @@ class Adventurer:
|
||||
# each character should get 1 melee and 1 random (missle or melee)
|
||||
self.weapons = [ random.choice(self.possible_melee_weapons), random.choice(self.possible_weapons) ]
|
||||
self.armor = random.choice(self.possible_armor)
|
||||
# special abilities
|
||||
self.spells = None
|
||||
self.spell_book = None
|
||||
self.thief_skills = None
|
||||
self.turn_undead = None
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.player_class}"
|
||||
@@ -51,6 +57,9 @@ class Adventurer:
|
||||
sheet.append('{0: <28}'.format(f"| {self.weapons[0]['name'].title()}"))
|
||||
sheet.append('{0: <28}'.format(f"| {self.weapons[1]['name'].title()}"))
|
||||
sheet.append('{0: <28}'.format(f"| Equipment:"))
|
||||
for item in self.equipment:
|
||||
item_string = "| " + '{0:22}'.format(f"{item}").title()
|
||||
sheet += ['{0: <28}'.format(item_string)]
|
||||
sheet.append('{0: <28}'.format(f"| "))
|
||||
sheet.append('{0: <28}'.format(f"| Gold: {self.gold}"))
|
||||
sheet.append('| ------------------------- ')
|
||||
@@ -58,6 +67,9 @@ class Adventurer:
|
||||
key_string = "| " + '{0:22}'.format(f"{key}").title() + f" {val}"
|
||||
sheet += ['{0: <28}'.format(key_string)]
|
||||
sheet.append('| ------------------------- ')
|
||||
#if self.spells:
|
||||
# sheet.append('{0: <28}'.format("| Spellbook: "))
|
||||
# sheet += ['{0: <28}'.format(f"| {spell.title()}") for spell in self.spell_book ]
|
||||
# append a | to each string, after the formatted whitespace
|
||||
sheet = [ line + "|" for line in sheet ]
|
||||
return sheet
|
||||
@@ -73,7 +85,24 @@ class Adventurer:
|
||||
return max(prime_attributes, key=prime_attributes.get)
|
||||
|
||||
def roll_equipment(self):
|
||||
print("testing!")
|
||||
equipment = [ 'backpack', 'tinderbox', 'waterskin' ]
|
||||
random_items = [ random.choice(adventuring_gear) for i in range(2) ]
|
||||
for item in random_items:
|
||||
equipment += item.split("+")
|
||||
while len(equipment) < 7:
|
||||
equipment.append("")
|
||||
return equipment
|
||||
|
||||
def select_spells(self):
|
||||
spell_book = []
|
||||
for spell_level, count in self.spells.items():
|
||||
if count != "-":
|
||||
for i in range(count):
|
||||
random_spell = ""
|
||||
while random_spell not in spell_book:
|
||||
random_spell = random.choice(magic_user_spells[spell_level])
|
||||
spell_book.append(random_spell)
|
||||
return spell_book
|
||||
|
||||
|
||||
class Fighter(Adventurer):
|
||||
@@ -101,6 +130,7 @@ class Fighter(Adventurer):
|
||||
self.progression = Fighter.progression
|
||||
self.hp = roll_dice(self.level, 8)
|
||||
self.ac = armor[self.armor]
|
||||
self.vertical_sheet = self.character_sheet()
|
||||
|
||||
class MagicUser(Adventurer):
|
||||
prime_requisite = "intelligence"
|
||||
@@ -121,6 +151,22 @@ class MagicUser(Adventurer):
|
||||
{ "level" : 13, "xp" : 900000, "hit-dice" : 9, "thac0" : 14, "saves" : { "death / poison" : 8, "wands" : 9, "paralysis / petrify" : 8, "breath attack" : 8, "spells / rods / staves" : 8 }},
|
||||
{ "level" : 14, "xp" : 1050000, "hit-dice" : 9, "thac0" : 14, "saves" : { "death / poison" : 8, "wands" : 9, "paralysis / petrify" : 8, "breath attack" : 8, "spells / rods / staves" : 8 }}
|
||||
]
|
||||
spells = {
|
||||
1: { 1: 1, 2: '-', 3: '-', 4: '-', 5: '-', 6: '-'},
|
||||
2: { 1: 2, 2: '-', 3: '-', 4: '-', 5: '-', 6: '-'},
|
||||
3: { 1: 2, 2: 1, 3: '-', 4: '-', 5: '-', 6: '-'},
|
||||
4: { 1: 2, 2: 2, 3: '-', 4: '-', 5: '-', 6: '-'},
|
||||
5: { 1: 2, 2: 2, 3: 1, 4: '-', 5: '-', 6: '-'},
|
||||
6: { 1: 2, 2: 2, 3: 2, 4: '-', 5: '-', 6: '-'},
|
||||
7: { 1: 3, 2: 2, 3: 2, 4: 1, 5: '-', 6: '-'},
|
||||
8: { 1: 3, 2: 3, 3: 2, 4: 2, 5: '-', 6: '-'},
|
||||
9: { 1: 3, 2: 3, 3: 3, 4: 2, 5: 1, 6: '-'},
|
||||
10: { 1: 3, 2: 3, 3: 3, 4: 3, 5: 2, 6: '-'},
|
||||
11: { 1: 4, 2: 3, 3: 3, 4: 3, 5: 2, 6: 1 },
|
||||
12: { 1: 4, 2: 4, 3: 3, 4: 3, 5: 2, 6: 1 },
|
||||
13: { 1: 4, 2: 4, 3: 4, 4: 3, 5: 3, 6: 3 },
|
||||
14: { 1: 4, 2: 4, 3: 4, 4: 4, 5: 3, 6: 3 }
|
||||
}
|
||||
def __init__(self, level, attributes={}) -> None:
|
||||
Adventurer.__init__(self, level, attributes)
|
||||
self.player_class = "magic user"
|
||||
@@ -129,6 +175,9 @@ class MagicUser(Adventurer):
|
||||
self.armor = "None"
|
||||
self.ac = armor[self.armor]
|
||||
self.weapons = [ list(filter(lambda d: 'silver dagger' in d['name'],weapons))[0], { "name" : "" } ]
|
||||
self.spells = MagicUser.spells[self.level]
|
||||
self.spell_book = self.select_spells()
|
||||
self.vertical_sheet = self.character_sheet()
|
||||
|
||||
|
||||
class Cleric(Adventurer):
|
||||
@@ -150,6 +199,22 @@ class Cleric(Adventurer):
|
||||
{ "level" : 13, "xp" : 600000, "hit-dice" : 9, "thac0" : 12, "saves" : { "death / poison" : 3, "wands" : 5, "paralysis / petrify" : 7, "breath attack" : 8, "spells / rods / staves" : 7 }},
|
||||
{ "level" : 14, "xp" : 700000, "hit-dice" : 9, "thac0" : 12, "saves" : { "death / poison" : 3, "wands" : 5, "paralysis / petrify" : 7, "breath attack" : 8, "spells / rods / staves" : 7 }}
|
||||
]
|
||||
spells = {
|
||||
1: { 1: '-', 2: '-', 3: '-', 4: '-', 5: '-'},
|
||||
2: { 1: 1, 2: '-', 3: '-', 4: '-', 5: '-'},
|
||||
3: { 1: 2, 2: '-', 3: '-', 4: '-', 5: '-'},
|
||||
4: { 1: 2, 2: 1, 3: '-', 4: '-', 5: '-'},
|
||||
5: { 1: 2, 2: 2, 3: '-', 4: '-', 5: '-'},
|
||||
6: { 1: 2, 2: 2, 3: 1, 4: 1, 5: '-'},
|
||||
7: { 1: 2, 2: 2, 3: 2, 4: 1, 5: 1 },
|
||||
8: { 1: 3, 2: 3, 3: 2, 4: 2, 5: 1 },
|
||||
9: { 1: 3, 2: 3, 3: 3, 4: 2, 5: 2 },
|
||||
10: { 1: 4, 2: 4, 3: 3, 4: 3, 5: 2 },
|
||||
11: { 1: 4, 2: 4, 3: 4, 4: 3, 5: 3 },
|
||||
12: { 1: 5, 2: 5, 3: 4, 4: 4, 5: 3 },
|
||||
13: { 1: 5, 2: 5, 3: 4, 4: 4, 5: 4 },
|
||||
14: { 1: 6, 2: 5, 3: 5, 4: 5, 5: 4 }
|
||||
}
|
||||
def __init__(self, level, attributes={}) -> None:
|
||||
Adventurer.__init__(self, level, attributes)
|
||||
self.player_class = "cleric"
|
||||
@@ -161,6 +226,9 @@ class Cleric(Adventurer):
|
||||
self.possible_melee_weapons = list(filter(lambda d: 'blunt' in d['traits'] and 'melee' in d['traits'], weapons))
|
||||
self.possible_weapons = list(filter(lambda d: 'blunt' in d['traits'], weapons))
|
||||
self.weapons = [ random.choice(self.possible_melee_weapons), random.choice(self.possible_weapons) ]
|
||||
self.spells = Cleric.spells[self.level]
|
||||
self.spell_book = self.select_spells()
|
||||
self.vertical_sheet = self.character_sheet()
|
||||
|
||||
class Thief(Adventurer):
|
||||
prime_requisite = "dexterity"
|
||||
@@ -188,6 +256,7 @@ class Thief(Adventurer):
|
||||
self.hp = roll_dice(self.level, 4)
|
||||
self.armor = random.choice(list(armor.keys()))
|
||||
self.ac = armor[self.armor]
|
||||
self.vertical_sheet = self.character_sheet()
|
||||
|
||||
class Dwarf(Adventurer):
|
||||
prime_requisite = "strength"
|
||||
@@ -213,6 +282,7 @@ class Dwarf(Adventurer):
|
||||
self.hp = roll_dice(self.level, 8)
|
||||
self.armor = random.choice(list(armor.keys()))
|
||||
self.ac = armor[self.armor]
|
||||
self.vertical_sheet = self.character_sheet()
|
||||
|
||||
class Elf(Adventurer):
|
||||
prime_requisite = "intellgence"
|
||||
@@ -229,6 +299,18 @@ class Elf(Adventurer):
|
||||
{ "level" : 9, "xp" : 400000, "hit-dice" : 9, "thac0" : 14, "saves" : { "death / poison" : 8, "wands" : 9, "paralysis / petrify" : 9, "breath attack" : 10, "spells / rods / staves" : 10 }},
|
||||
{ "level" : 10, "xp" : 600000, "hit-dice" : 9, "thac0" : 12, "saves" : { "death / poison" : 6, "wands" : 7, "paralysis / petrify" : 8, "breath attack" : 8, "spells / rods / staves" : 8 }}
|
||||
]
|
||||
spells = {
|
||||
1: { 1: 1, 2: '-', 3: '-', 4: '-', 5: '-', 6: '-'},
|
||||
2: { 1: 2, 2: '-', 3: '-', 4: '-', 5: '-', 6: '-'},
|
||||
3: { 1: 2, 2: 1, 3: '-', 4: '-', 5: '-', 6: '-'},
|
||||
4: { 1: 2, 2: 2, 3: '-', 4: '-', 5: '-', 6: '-'},
|
||||
5: { 1: 2, 2: 2, 3: 1, 4: '-', 5: '-', 6: '-'},
|
||||
6: { 1: 2, 2: 2, 3: 2, 4: '-', 5: '-', 6: '-'},
|
||||
7: { 1: 3, 2: 2, 3: 2, 4: 1, 5: '-', 6: '-'},
|
||||
8: { 1: 3, 2: 3, 3: 2, 4: 2, 5: '-', 6: '-'},
|
||||
9: { 1: 3, 2: 3, 3: 3, 4: 2, 5: 1, 6: '-'},
|
||||
10: { 1: 3, 2: 3, 3: 3, 4: 3, 5: 2, 6: '-'}
|
||||
}
|
||||
def __init__(self, level, attributes={}) -> None:
|
||||
Adventurer.__init__(self, level, attributes)
|
||||
self.player_class = "elf"
|
||||
@@ -236,6 +318,9 @@ class Elf(Adventurer):
|
||||
self.hp = roll_dice(self.level, 6)
|
||||
self.armor = random.choice(list(armor.keys()))
|
||||
self.ac = armor[self.armor]
|
||||
self.spells = Elf.spells[self.level]
|
||||
self.spell_book = self.select_spells()
|
||||
self.vertical_sheet = self.character_sheet()
|
||||
|
||||
class Halfling(Adventurer):
|
||||
prime_requisite = "dexterity"
|
||||
@@ -257,3 +342,4 @@ class Halfling(Adventurer):
|
||||
self.hp = roll_dice(self.level, 6)
|
||||
self.armor = random.choice(list(armor.keys()))
|
||||
self.ac = armor[self.armor]
|
||||
self.vertical_sheet = self.character_sheet()
|
||||
|
||||
Reference in New Issue
Block a user