commit entity-modify-player-inventory

This commit is contained in:
2026-01-29 22:05:56 +01:00
parent 7b5c411c8d
commit fc5076d054
4 changed files with 56 additions and 14 deletions

View File

@@ -16,7 +16,9 @@ class Entity(Serializable):
self.hp = hp
self.armor = armor
self.speed = speed
self.equipped_item = equipped_item
self.equipped_item = None
if equipped_item:
self.set_equipped_item(equipped_item)
def get_id(self):
return self.id
@@ -74,4 +76,44 @@ 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,7 @@
from inventory import Inventory
from entity import Entity
class Player(Entity):
def __init__(self, name, strength, dexterity, intelligence, wisdom, charisma, hp, armor, speed, item=None):
super().__init__(name, strength, dexterity, intelligence, wisdom, charisma, hp, armor, speed)
self.inventory = Inventory()
if item:
self.inventory.add_item(item)
def __init__(self, name, strength, dexterity, intelligence, wisdom, charisma, hp, armor, speed, equipped_item=None):
super().__init__(name, strength, dexterity, intelligence, wisdom, charisma, hp, armor, speed, equipped_item)

View File

@@ -9,6 +9,9 @@ class Inventory(Serializable):
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 = ''

View File

@@ -100,16 +100,15 @@ async def throw_a_dice(n_faces: int) -> Any:
n_faces: Number of faces of the dice
"""
logging.info(f"Throwing a dice with {n_faces} faces")
dice = Dice(n_faces)
if n_faces < 1:
raise ValueError("Number of faces must be at least 1")
elif n_faces == 1:
return 1
elif n_faces == 2:
return dice.head_or_tails()
return Dice.head_or_tails()
else:
return dice.roll()
return Dice.roll(n_faces)
@@ -133,7 +132,7 @@ async def create_player(name: str, strength: int, dexterity: int, intelligence:
logging.info(f"Creating player with name={name}")
player = Player(name, strength, dexterity, intelligence, wisdom, charisma, hp, armor, speed)
logging.info(f"Created player: {player}")
game.players.append(player)
game.active_players.append(player)
return player.serialize_dict()
@mcp.tool()
@@ -156,7 +155,7 @@ async def create_npc(name: str, strength: int, dexterity: int, intelligence: int
logging.info(f"Creating NPC with name={name}")
npc = NPC(name, strength, dexterity, intelligence, wisdom, charisma, hp, armor, speed)
logging.info(f"Created NPC: {npc}")
game.npcs.append(npc)
game.active_npcs.append(npc)
return npc.serialize_dict()
@mcp.tool()
@@ -171,7 +170,7 @@ async def create_item(name: str, description: str, bonus: str) -> Dict[str, Any]
logging.info(f"Creating item with name={name}")
item = Item(name, description, bonus)
logging.info(f"Created item: {item}")
game.items.append(item)
game.active_items.append(item)
return item.serialize_dict()
@mcp.tool()