@Override public int getConvertedManaCost() { if (isTransformed()) { // 711.4b While a double-faced permanent's back face is up, it has only the characteristics of its back face. // However, its converted mana cost is calculated using the mana cost of its front face. This is a change from previous rules. // If a permanent is copying the back face of a double-faced card (even if the card representing that copy // is itself a double-faced card), the converted mana cost of that permanent is 0. return getCard().getConvertedManaCost(); } if (faceDown) { // game not neccessary return getManaCost().convertedManaCost(); } return super.getConvertedManaCost(); }
@Override public void loadCards(Set<Card> cards, UUID ownerId) { for (Card card : cards) { if (card instanceof PermanentCard) { card = ((PermanentCard) card).getCard(); } card.setOwnerId(ownerId); gameCards.put(card.getId(), card); state.addCard(card); if (card.isSplitCard()) { Card leftCard = ((SplitCard) card).getLeftHalfCard(); leftCard.setOwnerId(ownerId); gameCards.put(leftCard.getId(), leftCard); state.addCard(leftCard); Card rightCard = ((SplitCard) card).getRightHalfCard(); rightCard.setOwnerId(ownerId); gameCards.put(rightCard.getId(), rightCard); state.addCard(rightCard); } } }
PermanentCard permanent = (PermanentCard) object; if (permanent.isTransformable() && event.getType() == GameEvent.EventType.TRANSFORMED) { exists = permanent.getCard().getAbilities().contains(ability);
@Override public boolean apply(Game game, Ability source) { MageObject sourceObject = source.getSourceObjectIfItStillExists(game); // Transform only if it's the same object as the effect was put on the stack if (sourceObject instanceof Permanent) { Permanent sourcePermanent = (Permanent) sourceObject; if (sourcePermanent.canTransform(source, game)) { // check not to transform twice the same side if (sourcePermanent.isTransformed() != fromDayToNight) { if (withoutTrigger) { sourcePermanent.setTransformed(fromDayToNight); } else { sourcePermanent.transform(game); } if (!game.isSimulation()) { if (fromDayToNight) { if (sourcePermanent.getSecondCardFace() != null) { if (sourcePermanent instanceof PermanentCard) { game.informPlayers(((PermanentCard) sourcePermanent).getCard().getLogName() + " transforms into " + sourcePermanent.getSecondCardFace().getLogName()); } } } else { game.informPlayers(sourcePermanent.getSecondCardFace().getLogName() + " transforms into " + sourcePermanent.getLogName()); } } } } } return true; }
permanentCard.setZone(Zone.BATTLEFIELD, this); permanentCard.setOwnerId(ownerId); PermanentCard newPermanent = new PermanentCard(permanentCard.getCard(), ownerId, this); getPermanentsEntering().put(newPermanent.getId(), newPermanent); newPermanent.entersBattlefield(newPermanent.getId(), this, Zone.OUTSIDE, false);
Card card = game.getCard(stackObject.getSourceId()); if (card == null && (object instanceof PermanentCard)) { card = ((PermanentCard) object).getCard();
for (Card exiled : toExile) { if (exiled instanceof PermanentMeld) { MeldCard meldCard = (MeldCard) ((PermanentCard) exiled).getCard(); Card topCard = meldCard.getTopHalfCard(); Card bottomCard = meldCard.getBottomHalfCard();
@Override public boolean apply(Game game, Ability source) { Permanent permanent = game.getPermanent(getTargetPointer().getFirst(game, source)); if (permanent != null) { if (permanent.canTransform(source, game)) { // check not to transform twice the same side if (withoutTrigger) { permanent.setTransformed(!permanent.isTransformed()); } else { permanent.transform(game); } if (!game.isSimulation()) { if (permanent.isTransformed()) { if (permanent.getSecondCardFace() != null) { if (permanent instanceof PermanentCard) { game.informPlayers(((PermanentCard) permanent).getCard().getLogName() + " transforms into " + permanent.getSecondCardFace().getLogName()); } } } else { game.informPlayers(permanent.getSecondCardFace().getLogName() + " transforms into " + permanent.getLogName()); } } } return true; } return false; }
permanent.setCardNumber(((PermanentCard) copyFromObject).getCard().getCardNumber()); permanent.setExpansionSetCode(((PermanentCard) copyFromObject).getCard().getExpansionSetCode()); } else if (copyFromObject instanceof PermanentToken || copyFromObject instanceof Card) { permanent.setCardNumber(((Card) copyFromObject).getCardNumber());
sourceObj = ((PermanentCard) source).getSecondCardFace(); } else { sourceObj = ((PermanentCard) source).getCard();