Example #1
0
 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
Example #2
0
 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, {})