static public CardList chooseSacrificeType(String type, Card activate, Card target, int amount) {
        CardList typeList = AllZoneUtil.getPlayerCardsInPlay(AllZone.getComputerPlayer());
        typeList = typeList.getValidCards(type.split(","), activate.getController(), activate);
        if (target != null && target.getController().isComputer() && typeList.contains(target))
            typeList.remove(target);        // don't sacrifice the card we're pumping

        if (typeList.size() == 0)
            return null;

        CardList sacList = new CardList();
        int count = 0;

        while (count < amount) {
            Card prefCard = getCardPreference(activate, "SacCost", typeList);
            if (prefCard != null) {
                sacList.add(prefCard);
                typeList.remove(prefCard);
                count++;
            } else
                break;
        }

        CardListUtil.sortAttackLowFirst(typeList);

        for (int i = count; i < amount; i++) sacList.add(typeList.get(i));
        return sacList;
    }