Exemplo n.º 1
0
    def buy_item(self, item_id: ItemId, count: int) -> List[BoughtItems]:
        base_item = self.inventory.get(item_id)
        item_template = self.__templates_repository.get_template(base_item.tpl)
        item_stack_size = item_template.props.StackMaxSize

        bought_items_list: List[BoughtItems] = []

        while count:
            stack_size = min(count, item_stack_size)
            count -= stack_size
            item: Item = base_item.copy(deep=True)
            item.upd.StackObjectsCount = 1
            children_items: List[Item] = [
                child.copy(deep=True) for child in
                self.inventory.iter_item_children_recursively(base_item)
            ]

            all_items = children_items + [item]
            regenerate_items_ids(all_items)
            for item in all_items:
                item.upd.UnlimitedCount = False

            item.upd = ItemUpd(StackObjectsCount=stack_size)
            bought_items_list.append(
                BoughtItems(item=item, children_items=children_items))

        return bought_items_list
Exemplo n.º 2
0
    def regenerate_ids(self) -> None:
        regenerate_items_ids(list(self.items.values()))

        equipment_item = self.get_by_template(
            TemplateId("55d7217a4bdc2d86028b456d"))
        self.inventory.equipment = equipment_item.id

        quest_raid_items = self.get_by_template(
            TemplateId("5963866286f7747bf429b572"))
        self.inventory.questRaidItems = quest_raid_items.id

        quest_stash_items = self.get_by_template(
            TemplateId("5963866b86f7747bfa1c4462"))
        self.inventory.questStashItems = quest_stash_items.id

        stash = self.get_by_template(TemplateId("566abbc34bdc2d92178b4576"))
        self.inventory.stash = stash.id
Exemplo n.º 3
0
    def from_items(items: List[Item]) -> MailMessageItems:
        """
        Creates MailMessageItems from list of items
        """
        stash_id = generate_item_id()

        for item in items:
            if not item.parent_id:
                item.parent_id = stash_id
            if not item.slot_id:
                item.slot_id = "main"

        regenerate_items_ids(items)

        return MailMessageItems(
            stash=stash_id,
            data=items,
        )
Exemplo n.º 4
0
    def from_items(cls, items: List[Item]) -> MailMessageItems:
        """
        Creates MailMessageItems from list of items
        """
        # We have to remove parent_id and slot_id
        # from items that have no parent in this list of items.
        items = clean_items_relationships(items)

        stash_id = generate_item_id()
        for item in items:
            if not item.parent_id:
                item.parent_id = stash_id
            if not item.slot_id:
                item.slot_id = "main"
                item.location = None

        regenerate_items_ids(items)
        return cls(
            stash=stash_id,
            data=items,
        )
Exemplo n.º 5
0
 def get_items(self) -> Tuple[Item, List[Item]]:
     root_item = next(i for i in self.items if i.id == self.root_id).copy()
     children = [i.copy() for i in self.items if i != root_item]
     regenerate_items_ids([root_item, *children])
     return root_item, children