What this is: A class uses to control game characters stats and interaction for both NPCs and players.
The call method was added to create mew "mob types" that can have their stat scaling controlled based on the player level.
I am trying to use the Mob.wyvern(player_level) method to create a "Wyvern" type NPC. In this case the code flows successfully until we try to modify a_wyvern.life using the self.playerlevel call.
Error:
Traceback (most recent call last):
File "c:\Users\User\mystuff\Classes Game\Characters.py", line 74, in <module>
a_wyvern = Mobs.wyvern(player_level)
File "c:\Users\User\mystuff\Classes Game\Characters.py", line 36, in wyvern
a_wyvern.life += a_wyvern.player_level
AttributeError: 'Mobs' object has no attribute 'player_level'
#Initializer, passing variables to all
class Mobs():
def __init__(self):
self.life = 10
self.atk = 2
self.arm = 1
self.name = villains.gen()
self.playername = heroes.gen()
self.type = type
def __call__(self, player_level):
self.player_level = player_level
pass
def attack(self, enemy):
damage_amount = enemy.take_damage(self.atk)
return damage_amount
def take_damage(self, amount):
damage_amount = (amount - self.arm)
self.life -= damage_amount
return damage_amount
def wyvern(self):
a_wyvern = Mobs()
a_wyvern.type = "Wyvern"
a_wyvern.life += self.player_level
return a_wyvern
player_level = 20
a_wyvern = Mobs.wyvern(player_level)
a_wyvern.type
a_wyvern.life
a_wyvern.atk
print(a_wyvern.life)
print(a_wyvern.atk)
print(a_wyvern.name)