commit entity-modify-player-inventory
This commit is contained in:
@@ -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)
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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 = ''
|
||||
|
||||
11
server.py
11
server.py
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user