@Override public void setZone(Zone zone, Game game) { game.setZone(getId(), zone); }
break; case EXILED: if (game.getExile().getCard(getId(), game) != null) { removed = game.getExile().removeCard(this, game); stackObject = game.getStack().getSpell(getSpellAbility().getId()); } else { stackObject = game.getStack().getSpell(this.getId()); stackObject = game.getStack().getSpell(getId()); if (isCopy()) { // copied cards have no need to be removed from a previous zone removed = true; } else if (game.getPlayer(ownerId).getSideboard().contains(this.getId())) { game.getPlayer(ownerId).getSideboard().remove(this.getId()); removed = true; } else if (game.getPhase() == null) {
@Override public boolean turnFaceDown(Game game, UUID playerId) { GameEvent event = GameEvent.getEvent(GameEvent.EventType.TURNFACEDOWN, getId(), playerId); if (!game.replaceEvent(event)) { setFaceDown(true, game); game.fireEvent(GameEvent.getEvent(GameEvent.EventType.TURNEDFACEDOWN, getId(), playerId)); return true; } return false; }
/** * Public in order to support adding abilities to SplitCardHalf's * * @param ability */ public void addAbility(Ability ability) { ability.setSourceId(this.getId()); abilities.add(ability); for (Ability subAbility : ability.getSubAbilities()) { abilities.add(subAbility); } }
@Override public ObjectColor getColor(Game game) { if (game != null) { CardAttribute cardAttribute = game.getState().getCardAttribute(getId()); if (cardAttribute != null) { return cardAttribute.getColor(); } } return super.getColor(game); }
@Override public SubTypeList getSubtype(Game game) { if (game != null) { CardAttribute cardAttribute = game.getState().getCardAttribute(getId()); if (cardAttribute != null) { return cardAttribute.getSubtype(); } } return super.getSubtype(game); }
@Override public boolean turnFaceUp(Game game, UUID playerId) { GameEvent event = GameEvent.getEvent(GameEvent.EventType.TURNFACEUP, getId(), playerId); if (!game.replaceEvent(event)) { setFaceDown(false, game); for (Ability ability : abilities) { // abilities that were set to not visible face down must be set to visible again if (ability.getWorksFaceDown() && !ability.getRuleVisible()) { ability.setRuleVisible(true); } } game.fireEvent(GameEvent.getEvent(GameEvent.EventType.TURNEDFACEUP, getId(), playerId)); return true; } return false; }
@Override public boolean addCounters(Counter counter, Ability source, Game game, List<UUID> appliedEffects, boolean isEffect) { boolean returnCode = true; UUID sourceId = getId(); if (source != null) { MageObject object = game.getObject(source.getId());