def sell_item(self, itemname, buyer='shop', gold=0, silver=0, copper=0): if isinstance(itemname, int): tosell = Item(self.get('inventory/pack', [])[itemname]) else: for item in self.get('inventory/pack', []): if item.displayname() == itemname: tosell = Item(item) break if buyer != 'shop': buyer.spend_money(gold, silver, copper) buyer.acquire_item(tosell) buyer.autosave() else: gold, silver, copper = self.sell_price(*tosell.price_tuple()) self.drop_item(itemname) self.gain_money(gold, silver, copper)
def for_sale(self): """ >>> char = Character({}) >>> char.for_sale() [] >>> hp = char.acquire_item(Item(load_yaml('items', 'health_potion.yaml'))) >>> char.for_sale() [(0, 'Health Potion', 'Gold 4, Silver 10, Copper 10')] """ out = [] pack = self.get('inventory/pack', []) for i in pack: try: item = Item(i) gold, silver, copper = self.sell_price(*item.price_tuple()) moneystr = 'Gold %s, Silver %s, Copper %s' % (int(gold), int(silver), int(copper)) out.append((pack.index(i), item.displayname(), moneystr)) except Exception as e: raise Exception('Error loading %s - %s' % (self.displayname(), e)) return out