public boolean sacrificeDestroy(Card c) {
        if (!AllZoneUtil.isCardInPlay(c)) return false;

        Player owner = c.getOwner();
        if (!(owner.isComputer() || owner.isHuman()))
            throw new RuntimeException("GameAction : destroy() invalid card.getOwner() - " + c + " " + owner);

        boolean persist = (c.hasKeyword("Persist") && c.getCounters(Counters.M1M1) == 0);

        Card newCard = moveToGraveyard(c);

        // Destroy needs to be called with Last Known Information
        c.destroy();

        //System.out.println("Card " + c.getName() + " is getting sent to GY, and this turn it got damaged by: ");
        for (Card crd : c.getReceivedDamageFromThisTurn().keySet()) {
            if (c.getReceivedDamageFromThisTurn().get(crd) > 0) {
                //System.out.println(crd.getName() );
                GameActionUtil.executeVampiricEffects(crd);
            }
        }

        if (persist) {
            final Card persistCard = newCard;
            Ability persistAb = new Ability(persistCard, "0") {

                @Override
                public void resolve() {
                    if (AllZone.getZone(persistCard).is(Constant.Zone.Graveyard)) {
                        PlayerZone ownerPlay = AllZone.getZone(Constant.Zone.Battlefield, persistCard.getOwner());
                        Card card = moveTo(ownerPlay, persistCard);
                        card.addCounter(Counters.M1M1, 1);
                    }
                }
            };
            persistAb.setStackDescription(newCard.getName() + " - Returning from Persist");
            AllZone.getStack().add(persistAb);
        }
        return true;
    }//sacrificeDestroy()