diff --git a/MechFabrik/bauteile/__init__.py b/MechFabrik/bauteile/__init__.py index e2ac656..2336632 100755 --- a/MechFabrik/bauteile/__init__.py +++ b/MechFabrik/bauteile/__init__.py @@ -1,6 +1,6 @@ import enum -from MechFabrik.bauteile.items import Item, ItemStatus +from MechFabrik.bauteile.items import Gyroskope, Item, ItemStatus class ZoneNames(enum.Enum): @@ -144,11 +144,11 @@ class CriticalStrikeEvent: self.__dict__['_zone'].state = AreaStatus.DAMAGED self.__dict__['_area'].state = AreaStatus.DAMAGED item = self.__dict__['_area'].items[self.__dict__['_index']] - if item is None: + if item is None or item.state == ItemStatus.DESTROYED: self.__dict__['_item_is_empty'] = True else: self.__dict__['_item_is_empty'] = False - item.state = ItemStatus.DESTROYED + item.process_strike() return self def is_empty(self): diff --git a/MechFabrik/bauteile/items.py b/MechFabrik/bauteile/items.py index f590522..9313704 100644 --- a/MechFabrik/bauteile/items.py +++ b/MechFabrik/bauteile/items.py @@ -34,6 +34,9 @@ class Item(object): def state(self, new_state: ItemStatus): self._state = new_state + def process_strike(self): + self._state = ItemStatus.DESTROYED + class BigItem(Item): @@ -52,6 +55,14 @@ class DurableItem(Item): super().__init__(item_type) self._max_strike = max_strike + @property + def max_strike(self): + return self._max_strike + + def process_strike(self): + self._max_strike -= 1 + self._state = ItemStatus.DAMAGED if self._max_strike > 0 else ItemStatus.DESTROYED + class Gyroskope(BigItem, DurableItem): def __init__(self, tonnage: float):