# 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)