private static boolean tapAllCanPlayAI(final AbilityFactory af, final SpellAbility sa) {
        // If tapping all creatures do it either during declare attackers of AIs turn
        // or during upkeep/begin combat?


        if (!ComputerUtil.canPayCost(sa))
            return false;

        Card source = sa.getSourceCard();
        HashMap<String, String> params = af.getMapParams();

        if (AllZone.getPhase().isAfter(Constant.Phase.Combat_Begin))
            return false;

        String valid = "";
        if (params.containsKey("ValidCards"))
            valid = params.get("ValidCards");

        CardList validTappables = AllZoneUtil.getCardsInPlay();
        
        Target tgt = sa.getTarget();
        
        if (sa.getTarget() != null) {
            tgt.resetTargets();
            sa.getTarget().addTarget(AllZone.getHumanPlayer());
            validTappables = AllZoneUtil.getPlayerCardsInPlay(AllZone.getHumanPlayer());
        }
        
        validTappables = validTappables.getValidCards(valid, source.getController(), source);
        validTappables = validTappables.filter(AllZoneUtil.untapped);

        Random r = MyRandom.random;
        boolean rr = false;
        if (r.nextFloat() <= Math.pow(.6667, source.getAbilityUsed()))
            rr = true;

        if (validTappables.size() > 0) {
            CardList human = validTappables.filter(new CardListFilter() {
                public boolean addCard(Card c) {
                    return c.getController().isHuman();
                }
            });
            CardList compy = validTappables.filter(new CardListFilter() {
                public boolean addCard(Card c) {
                    return c.getController().isComputer();
                }
            });
            if (human.size() > compy.size()) {
                return rr;
            }
        }
        return false;
    }