示例#1
0
 def __init__(self, *args, **kwargs):
     self._name = None
     if 'quality' in kwargs.keys():
         self._quality = kwargs['quality']
     else:
         self._quality = 1
     self.equiped = False
     self.features = []
     self.modifiers = ModifiersStorage()
     self.features_data_dict = 'item_features'
示例#2
0
class Item(object):
    type_ = 'item'

    def __init__(self, *args, **kwargs):
        self._name = None
        if 'quality' in kwargs.keys():
            self._quality = kwargs['quality']
        else:
            self._quality = 1
        self.equiped = False
        self.features = []
        self.modifiers = ModifiersStorage()
        self.features_data_dict = 'item_features'

    def add_feature(self, id_):
        Feature(self, id_, self.features_data_dict)

    def remove_feature(self, feature):
        if isinstance(feature, str):
            for feature in self.features:
                if feature.id == feature:
                    feature.remove()
        else:
            try:
                i = self.features.index(feature)
                self.features[i].remove()
            except ValueError:
                return

    def feature_by_slot(self, slot):
        for feature in self.features:
            if feature.slot == slot:
                return feature

    def count_modifiers(self, attribute):
        return self.modifiers.count_modifiers(attribute)

    def set_name(self, name):
        self._name = name

    def set_quality(self, quality):
        self._quality = quality

    def make(self):
        try:
            self._init_features()
        except AttributeError:
            pass

    def make_from_dict(self, properties_dict):
        for key, value in properties_dict.items():
            setter = 'set_' + key
            try:
                getattr(self, setter)(value)
            except AttributeError:
                pass

    @property
    def quality(self):
        return min(5, self._quality + self.count_modifiers('quality'))

    @property
    def name(self):
        return self._name

    @property
    def type(self):
        return self.type_

    def equip(self):
        self.equiped = True

    def unequip(self):
        self.equiped = False