Ive created a function that randomly generates mobs for a game making. The function works and produces an unique monsters, BUT, I can't seem to use the returned values as the values for the Mob Class. Code is as follows
import random as r
import math
# Define base character class amd attributes
class Base:
def __init__(self, name, lvl, hp, strength, defense, agility, wpn):
self.name = name
self.lvl = lvl
self.hp = hp
self.strength = strength
self.defense = defense
seld.agility = agility
self.wpn = wpn
# Set Mob class
class Mob(Base):
def __init__(self, *args):
super().__init__(*args)
#Mob Names
m_names = ["Goblin", "Minotaur", "Imp", "Rat", "Chimera", "Bandit"]
h_lvl = 1
def CreateMob():
stats ={}
stats["name"] = r.choice(m_names)
stats["lvl"] = r.randint(h_lvl, h_lvl+2)
stats["hp"] = r.choice(r.sample(range(stats["lvl"]*8, stats["lvl"]*16), 4))
stats["strength"] = r.randint(math.ceil(stats["lvl"]/3), math.ceil(stats["lvl"]/2))
stats["defense"] = r.randint(math.ceil(stats["hp"]/25), math.ceil(stats["hp"]/20))
stats["agility"] = r.randint(math.ceil(stats["lvl"]/4), math.ceil(stats["lvl"]/2))
stats["wpn"] = round(r.uniform(1, ((stats["lvl"]*0.0625)+1 )), 2)
return list(stats.values()) #Edited to list values, which is what I was working with
for i in range(1):
print(Mob(CreateMob()))
The traceback after says I'm missing 6 positional arguments which means it's using 'name' but not the rest. Why?