119 lines
4.3 KiB
Python
119 lines
4.3 KiB
Python
# Game imports
|
|
from serializable import Serializable
|
|
|
|
# Native imports
|
|
import uuid
|
|
|
|
class Entity(Serializable):
|
|
def __init__(self, name, strength, dexterity, intelligence, wisdom, charisma, hp, armor, speed, equipped_item=None):
|
|
self.id = str(uuid.uuid4())
|
|
self.name = name
|
|
self.strength = strength
|
|
self.dexterity = dexterity
|
|
self.intelligence = intelligence
|
|
self.wisdom = wisdom
|
|
self.charisma = charisma
|
|
self.hp = hp
|
|
self.armor = armor
|
|
self.speed = speed
|
|
self.equipped_item = None
|
|
if equipped_item:
|
|
self.set_equipped_item(equipped_item)
|
|
|
|
def get_id(self):
|
|
return self.id
|
|
|
|
def get_strength(self):
|
|
return self.strength
|
|
|
|
def get_dexterity(self):
|
|
return self.dexterity
|
|
|
|
def get_intelligence(self):
|
|
return self.intelligence
|
|
|
|
def get_wisdom(self):
|
|
return self.wisdom
|
|
|
|
def get_charisma(self):
|
|
return self.charisma
|
|
|
|
def get_hp(self):
|
|
return self.hp
|
|
|
|
def get_armor(self):
|
|
return self.armor
|
|
|
|
def get_speed(self):
|
|
return self.speed
|
|
|
|
def get_equipped_item(self):
|
|
return self.equipped_item
|
|
|
|
def set_strength(self, value):
|
|
self.strength = value
|
|
|
|
def set_dexterity(self, value):
|
|
self.dexterity = value
|
|
|
|
def set_intelligence(self, value):
|
|
self.intelligence = value
|
|
|
|
def set_wisdom(self, value):
|
|
self.wisdom = value
|
|
|
|
def set_charisma(self, value):
|
|
self.charisma = value
|
|
|
|
def set_hp(self, value):
|
|
self.hp = value
|
|
|
|
def set_armor(self, value):
|
|
self.armor = value
|
|
|
|
def set_speed(self, value):
|
|
self.speed = value
|
|
|
|
def set_equipped_item(self, item):
|
|
self.equipped_item = item
|
|
if item.stat_modifier == "strength":
|
|
self.set_strength(self.get_strength() + item.stat_modifier_value)
|
|
elif item.stat_modifier == "dexterity":
|
|
self.set_dexterity(self.get_dexterity() + item.stat_modifier_value)
|
|
elif item.stat_modifier == "intelligence":
|
|
self.set_intelligence(self.get_intelligence() + item.stat_modifier_value)
|
|
elif item.stat_modifier == "wisdom":
|
|
self.set_wisdom(self.get_wisdom() + item.stat_modifier_value)
|
|
elif item.stat_modifier == "charisma":
|
|
self.set_charisma(self.get_charisma() + item.stat_modifier_value)
|
|
elif item.stat_modifier == "hp":
|
|
self.set_hp(self.get_hp() + item.stat_modifier_value)
|
|
elif item.stat_modifier == "armor":
|
|
self.set_armor(self.get_armor() + item.stat_modifier_value)
|
|
elif item.stat_modifier == "speed":
|
|
self.set_speed(self.get_speed() + item.stat_modifier_value)
|
|
else:
|
|
raise ValueError(f"Unknown stat modifier: {item.stat_modifier}")
|
|
|
|
def change_equipped_item(self, new_item):
|
|
if self.equipped_item:
|
|
# Remove the stat modifier of the currently equipped item
|
|
if self.equipped_item.stat_modifier == "strength":
|
|
self.set_strength(self.get_strength() - self.equipped_item.stat_modifier_value)
|
|
elif self.equipped_item.stat_modifier == "dexterity":
|
|
self.set_dexterity(self.get_dexterity() - self.equipped_item.stat_modifier_value)
|
|
elif self.equipped_item.stat_modifier == "intelligence":
|
|
self.set_intelligence(self.get_intelligence() - self.equipped_item.stat_modifier_value)
|
|
elif self.equipped_item.stat_modifier == "wisdom":
|
|
self.set_wisdom(self.get_wisdom() - self.equipped_item.stat_modifier_value)
|
|
elif self.equipped_item.stat_modifier == "charisma":
|
|
self.set_charisma(self.get_charisma() - self.equipped_item.stat_modifier_value)
|
|
elif self.equipped_item.stat_modifier == "hp":
|
|
self.set_hp(self.get_hp() - self.equipped_item.stat_modifier_value)
|
|
elif self.equipped_item.stat_modifier == "armor":
|
|
self.set_armor(self.get_armor() - self.equipped_item.stat_modifier_value)
|
|
elif self.equipped_item.stat_modifier == "speed":
|
|
self.set_speed(self.get_speed() - self.equipped_item.stat_modifier_value)
|
|
|
|
# Equip the new item
|
|
self.set_equipped_item(new_item) |