public Unmelded(ZoneChangeInfo info, Game game) { super(info.event); MeldCard meld = game.getMeldCard(info.event.getTargetId()); if (meld != null) { if (meld.hasTopHalf(game)) { ZoneChangeEvent topEvent = new ZoneChangeEvent(meld.getTopHalfCard().getId(), event.getSourceId(), event.getPlayerId(), event.getFromZone(), event.getToZone(), event.getAppliedEffects()); ZoneChangeInfo topInfo = info.copy(); topInfo.event = topEvent; subInfo.add(topInfo); } if (meld.hasBottomHalf(game)) { ZoneChangeEvent bottomEvent = new ZoneChangeEvent(meld.getBottomHalfCard().getId(), event.getSourceId(), event.getPlayerId(), event.getFromZone(), event.getToZone(), event.getAppliedEffects()); ZoneChangeInfo bottomInfo = info.copy(); bottomInfo.event = bottomEvent; subInfo.add(bottomInfo); } } } }
} else if (Objects.equals(subInfo.event.getTargetId(), meld.getTopHalfCard().getId())) { meld.setTopLastZoneChangeCounter(meld.getTopHalfCard().getZoneChangeCounter(game)); } else if (Objects.equals(subInfo.event.getTargetId(), meld.getBottomHalfCard().getId())) { meld.setBottomLastZoneChangeCounter(meld.getBottomHalfCard().getZoneChangeCounter(game));
@Override public boolean apply(Game game, Ability source) { Card card = game.getCard(objectToReturn.getSourceId()); if (card != null && objectToReturn.refersTo(card, game)) { Player owner = game.getPlayer(card.getOwnerId()); if (owner != null) { if (card instanceof MeldCard) { MeldCard meldCard = (MeldCard) card; game.addEffect(new LongRoadHomeEntersBattlefieldEffect(new MageObjectReference(meldCard.getTopHalfCard(), game)), source); game.addEffect(new LongRoadHomeEntersBattlefieldEffect(new MageObjectReference(meldCard.getBottomHalfCard(), game)), source); } else { game.addEffect(new LongRoadHomeEntersBattlefieldEffect(objectToReturn), source); } owner.moveCards(card, Zone.BATTLEFIELD, source, game, false, false, true, null); } } return true; } }
MeldCard meldCard = (MeldCard) ((PermanentCard) exiled).getCard(); Card topCard = meldCard.getTopHalfCard(); Card bottomCard = meldCard.getBottomHalfCard(); if (topCard.getZoneChangeCounter(game) == meldCard.getTopLastZoneChangeCounter()) { cardsToReturn.add(topCard);
MeldCard meldCard = (MeldCard) card; Card topCard = meldCard.getTopHalfCard(); Card bottomCard = meldCard.getBottomHalfCard(); if (topCard.getZoneChangeCounter(game) == meldCard.getTopLastZoneChangeCounter() && exileZone.contains(topCard.getId())) { cardsToBattlefield.add(topCard);
MeldCard meldCard = (MeldCard) card; Card topCard = meldCard.getTopHalfCard(); Card bottomCard = meldCard.getBottomHalfCard(); if (topCard.getZoneChangeCounter(game) == meldCard.getTopLastZoneChangeCounter() && exileZone.contains(topCard.getId())) { cardsToBattlefield.add(topCard);
MeldCard meldCard = (MeldCard) card; Card topCard = meldCard.getTopHalfCard(); Card bottomCard = meldCard.getBottomHalfCard(); if (topCard.getZoneChangeCounter(game) == meldCard.getTopLastZoneChangeCounter() && exileZone.contains(topCard.getId())) { cardsToBattlefield.add(topCard);
MeldCard meldCard = (MeldCard) card; Card topCard = meldCard.getTopHalfCard(); Card bottomCard = meldCard.getBottomHalfCard(); if (topCard.getZoneChangeCounter(game) == meldCard.getTopLastZoneChangeCounter() && exileZone.contains(topCard.getId())) { cardsToBattlefield.add(topCard);