Пример #1
0
    def equip_item(self, inventory_item_id):
        """Marks the item as equipped which will add to a character's stats
        
        Arguments:
            inventory_item_id {string} -- Identifies the item in the inventory
        """
        if self.inventory is None:
            self.inventory = []
        
        item = Enumerable(self.inventory).first_or_default(lambda x: x.inv_id == inventory_item_id)

        if item is None:
            raise Exception("The item does not exist in the inventory")
        
        if not self.can_use_2h and item.slot == 14:
            raise Exception("Cannot equip a two-handed weapon")
        # else:
        #     self.attack_speed = damage_base[self.player_class]['speed'] * 1.25

        if not self.can_dual_wield and item.slot == 13:
            raise Exception("Cannot equip a weapon in the off hand")

        existing_item = Enumerable(self.inventory).first_or_default(lambda x: x.slot == item.slot and x.equipped)
        
        if existing_item is not None:
            self.unequip_item(existing_item.inv_id)
            #existing_item.equipped = False

        item.equipped = True    
        self.calc_stats()
        self.updated_at = datetime.utcnow()
        super(CharacterModel, self).save()
Пример #2
0
    def unequip_item(self, inventory_item_id):
        """Unequips the item preventing it from being used in stat calculations
        
        Arguments:
            inventory_item_id {string} -- The inventory item id
        """
        if self.inventory is None:
            self.inventory = []

        item = Enumerable(self.inventory).first_or_default(lambda x: x.inv_id == inventory_item_id)

        if item is not None:
            item.equipped = False

        self.calc_stats()
        self.updated_at = datetime.utcnow()
        super(CharacterModel, self).save()