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
def unequip_item(self, slot): """ >>> char = Character({}) >>> twohand = Item(load_yaml('items', 'halberd.yaml')) >>> twohand = char.acquire_item(twohand) >>> char.equip_item(twohand) (True, '[ ] has equiped Halberd') >>> char.unequip_item('lefthand') >>> char.weapons [<item.Item object at ...>] >>> char.weapons[0].displayname() 'Fist' >>> dagger = Item(load_yaml('items', 'mainhand_dagger.yaml')) >>> dagger = char.acquire_item(dagger) >>> char.equip_item(dagger) (True, '[ ] has equiped Dagger') >>> char.unequip_item('righthand') >>> char.weapons[0].displayname() 'Fist' """ itemdata = self.getsubtree('inventory/equiped/%s' % slot) if not itemdata: return item = Item(itemdata) currentslot = item.slot() pack = self.get('inventory/pack',[]) if item.displayname() != 'Fist': pack.append(item()) self.put('inventory/pack', pack) if currentslot.strip() == 'twohand': slots = ['lefthand','righthand'] else: slots = [slot] for s in slots: debug('Unequipping from ', slot) self().deltree('inventory/equiped/%s' %s) self.put('inventory/equiped/%s' %s, {})