removed inventory and item modules and moved item

to utils. Updated imports accordingly.
decentralized entity stats-item coordination.
This commit is contained in:
2026-01-29 22:23:32 +01:00
parent fc5076d054
commit f16388dda4
7 changed files with 36 additions and 119 deletions

View File

@@ -24,27 +24,43 @@ class Entity(Serializable):
return self.id
def get_strength(self):
if self.equipped_item and "strength" in self.equipped_item.stat_modifier.keys():
return self.strength + self.equipped_item.stat_modifier["strength"]
return self.strength
def get_dexterity(self):
if self.equipped_item and "dexterity" in self.equipped_item.stat_modifier.keys():
return self.dexterity + self.equipped_item.stat_modifier["dexterity"]
return self.dexterity
def get_intelligence(self):
if self.equipped_item and "intelligence" in self.equipped_item.stat_modifier.keys():
return self.intelligence + self.equipped_item.stat_modifier["intelligence"]
return self.intelligence
def get_wisdom(self):
if self.equipped_item and "wisdom" in self.equipped_item.stat_modifier.keys():
return self.wisdom + self.equipped_item.stat_modifier["wisdom"]
return self.wisdom
def get_charisma(self):
if self.equipped_item and "charisma" in self.equipped_item.stat_modifier.keys():
return self.charisma + self.equipped_item.stat_modifier["charisma"]
return self.charisma
def get_hp(self):
if self.equipped_item and "hp" in self.equipped_item.stat_modifier.keys():
return self.hp + self.equipped_item.stat_modifier["hp"]
return self.hp
def get_armor(self):
if self.equipped_item and "armor" in self.equipped_item.stat_modifier.keys():
return self.armor + self.equipped_item.stat_modifier["armor"]
return self.armor
def get_speed(self):
if self.equipped_item and "speed" in self.equipped_item.stat_modifier.keys():
return self.speed + self.equipped_item.stat_modifier["speed"]
return self.speed
def get_equipped_item(self):
@@ -76,44 +92,4 @@ class Entity(Serializable):
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)

View File

@@ -1,9 +1,9 @@
from serializable import Serializable
from dice import Dice
from utils.dice import Dice
from events.event import Event
from entities.player import Player
from entities.npc import NPC
from items.item import Item
from utils.item import Item
class Game(Serializable):
def __init__(self, seed:int=42):

View File

@@ -1,40 +0,0 @@
from serializable import Serializable
from items.item import Item
class Inventory(Serializable):
def __init__(self, max_capacity:int = 5):
super().__init__()
self.items:list[Item] = []
self.max_capacity = max_capacity # Maximum umber of items
def current_capacity(self):
return len(self.items)
def is_full(self):
return self.current_capacity() >= self.max_capacity
def list_items(self):
s_items = ''
for item in self.items:
s_items += item.__str__() + '; '
return s_items
def add_item(self, added_item:Item):
if self.current_capacity() == self.max_capacity:
return f'The inventory is full!'
else:
self.items.append(added_item)
return f'{added_item.name} added to inventory. Current number of items: {self.current_capacity()}/{self.max_capacity}'
def remove_item(self, item_id:str):
searched_item = self.get_item(item_id=item_id)
if searched_item:
return f'{searched_item.name} was removed from the inventory.'
raise ValueError(f'Item #{item_id} is not present within the inventory!')
def get_item(self, item_id:str):
for item in self.items:
if item.id == item_id:
return item
# The item was not found
return None

View File

@@ -1,35 +0,0 @@
from serializable import Serializable
import uuid
class Item(Serializable):
def __init__(self,name:str, description:str, stat_modifier:str):
super().__init__()
self.id = str(uuid.uuid4())
self.name = name
self.description = description
self.stat_modifier = stat_modifier
def __str__(self):
return f"{self.name}: {self.description}"
class Equippable(Item):
def __init__(self, name, description, stat_modifier, equipped:bool):
super().__init__(name, description, stat_modifier)
self.equipped = equipped
def equip(self):
self.equipped = True
def unequip(self):
self.equipped = False
class Consummable(Item):
def __init__(self, name, description, stat_modifier, nb_of_uses:int):
super().__init__(name, description, stat_modifier)
self.nb_of_uses = nb_of_uses
def consumme(self):
if self.nb_of_uses > 0:
self.nb_of_uses -= 1

View File

@@ -2,7 +2,7 @@ from typing import Any, Dict
import logging
import httpx
from mcp.server.fastmcp import FastMCP
from dice import Dice
from utils.dice import Dice
from entities.player import Player
from items.item import Item
from game import Game

16
utils/item.py Normal file
View File

@@ -0,0 +1,16 @@
from typing import Dict
from serializable import Serializable
import uuid
class Item(Serializable):
def __init__(self,name:str, description:str, stat_modifier:Dict[str, int]):
super().__init__()
self.id = str(uuid.uuid4())
self.name = name
self.description = description
self.stat_modifier = stat_modifier
def __str__(self):
return f"{self.name}: {self.description}"