From 359258862d7807db92d4ad3339180752ecd3b00b Mon Sep 17 00:00:00 2001 From: Timothy Warren Date: Tue, 8 Feb 2022 10:28:31 -0500 Subject: [PATCH] Calculate defense and power based on equipment --- components/fighter.py | 28 +++++++++++++++++++++++++--- components/level.py | 4 ++-- entity_factories.py | 6 +++--- 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/components/fighter.py b/components/fighter.py index 6705d0a..f0e7f06 100644 --- a/components/fighter.py +++ b/components/fighter.py @@ -13,11 +13,11 @@ if TYPE_CHECKING: class Fighter(BaseComponent): parent: Actor - def __init__(self, hp: int, defense: int, power: int): + def __init__(self, hp: int, base_defense: int, base_power: int): self.max_hp = hp self._hp = hp - self.defense = defense - self.power = power + self.base_defense = base_defense + self.base_power = base_power @property def hp(self) -> int: @@ -29,6 +29,28 @@ class Fighter(BaseComponent): if self._hp == 0 and self.parent.ai: self.die() + @property + def defense(self) -> int: + return self.base_defense + self.defense_bonus + + @property + def power(self) -> int: + return self.base_power + self.power_bonus + + @property + def defense_bonus(self) -> int: + if self.parent.equipment: + return self.parent.equipment.defense_bonuse + else: + return 0 + + @property + def power_bonus(self) -> int: + if self.parent.equipment: + return self.parent.equipment.power_bonus + else: + return 0 + def die(self) -> None: if self.engine.player is self.parent: death_message = "You died!" diff --git a/components/level.py b/components/level.py index 0513191..8863f00 100644 --- a/components/level.py +++ b/components/level.py @@ -60,14 +60,14 @@ class Level(BaseComponent): self.increase_level() def increase_power(self, amount: int = 1) -> None: - self.parent.fighter.power += amount + self.parent.fighter.base_power += amount self.engine.message_log.add_message("You feel stronger!") self.increase_level() def increase_defense(self, amount: int = 1) -> None: - self.parent.fighter.defense += amount + self.parent.fighter.base_defense += amount self.engine.message_log.add_message("Your movements are getting swifter!") diff --git a/entity_factories.py b/entity_factories.py index 6ec3aba..93c5f3e 100644 --- a/entity_factories.py +++ b/entity_factories.py @@ -12,7 +12,7 @@ player = Actor( name="Player", ai_cls=HostileEnemy, equipment=Equipment(), - fighter=Fighter(hp=30, defense=2, power=5), + fighter=Fighter(hp=30, base_defense=1, base_power=2), inventory=Inventory(capacity=26), level=Level(level_up_base=200), ) @@ -23,7 +23,7 @@ orc = Actor( name="Orc", ai_cls=HostileEnemy, equipment=Equipment(), - fighter=Fighter(hp=10, defense=0, power=3), + fighter=Fighter(hp=10, base_defense=0, base_power=3), inventory=Inventory(capacity=0), level=Level(xp_given=35), ) @@ -33,7 +33,7 @@ troll = Actor( name="Troll", ai_cls=HostileEnemy, equipment=Equipment(), - fighter=Fighter(hp=16, defense=1, power=4), + fighter=Fighter(hp=16, base_defense=1, base_power=4), inventory=Inventory(capacity=0), level=Level(xp_given=100), )