Beispiel #1
0
def test_creature_equipment():
    equipment = Equipment()
    items = {
        Slot.Right_Hand: Weapon("short sword +1", 0, (1, 6, 1)),
        Slot.Left_Hand:  Weapon("short sword",    0, (1, 6, 0)),
        Slot.Head:       Armor("helmet", 0, 1, [Slot.Head]),
        Slot.Body:       Armor("armor",  0, 4, [Slot.Body], stats=[(Stat.strength, 2)]),
        Slot.Feet:       Armor("boots",  0, 1, [Slot.Feet]),
    }

    # bag items
    equipment.bag_items(items.values())
    for item in items.values():
        assert item in equipment._bag

    assert len(equipment._bag) == len(items)

    # equip items
    for slot, item in items.items():
        equipment.equip_from_bag(equipment._bag.index(item), slot)
        assert equipment.get_item(slot) is item

    assert len(equipment._bag) == 0
    assert equipment.applied_stats[Stat.armor] == 6
    assert equipment.applied_stats[Stat.strength] == 2

    # unequip items
    for slot in items:
        equipment.unequip(slot)

    assert len(equipment._bag) == len(items)

    two_hander = Weapon("two-handed sword", 0, (1, 6, 0), two_handed=True)
    equipment.equip(two_hander, two_hander.compatible_slots[0])
    equipment.unequip(two_hander.compatible_slots[1])

    for worn_item in equipment._worn_items.values():
        assert worn_item is None

    for stat_value in equipment.applied_stats.values():
        assert stat_value == 0