@Override public boolean apply(Game game, Ability source) { for (Iterator<MageObjectReference> it = affectedObjectList.iterator(); it.hasNext();) { Permanent permanent = it.next().getPermanent(game); if (permanent != null) { permanent.getSubtype(game).retainAll(SubType.getLandTypes(false)); } else { it.remove(); } } return true; } }
@Override public boolean apply(Game game, Ability source) { Permanent permanent = game.getPermanent(getTargetPointer().getFirst(game, source)); if (permanent != null) { permanent.setIsAllCreatureTypes(false); return permanent.getSubtype(game).retainAll(SubType.getLandTypes(false)); } return false; }
@Override public boolean apply(Layer layer, SubLayer sublayer, Ability source, Game game) { if (dynamicValue.calculate(game, source, this) >= lessThan) { return false; } Permanent permanent = game.getPermanent(source.getSourceId()); if (permanent != null) { switch (layer) { case TypeChangingEffects_4: if (sublayer == SubLayer.NA) { permanent.getCardType().remove(CardType.CREATURE); permanent.getSubtype(game).retainAll(SubType.getLandTypes(false)); if (permanent.isAttacking() || permanent.getBlocking() > 0) { permanent.removeFromCombat(game); } } break; } return true; } return false; }
@Override public boolean apply(Game game, Ability source) { Permanent equipment = game.getPermanent(source.getSourceId()); if (equipment != null && equipment.getAttachedTo() != null) { Permanent target = game.getPermanent(equipment.getAttachedTo()); if (target != null) { target.getSubtype(game).retainAll(SubType.getLandTypes(false)); target.getSubtype(game).addAll(setSubtypes); } } return true; }
@Override public boolean apply(Layer layer, SubLayer sublayer, Ability source, Game game) { for (UUID targetPermanent : targetPointer.getTargets(game, source)) { Permanent permanent = game.getPermanent(targetPermanent); if (permanent != null) { switch (layer) { case TypeChangingEffects_4: if (loseOther) { permanent.getSubtype(game).retainAll(SubType.getLandTypes(false)); permanent.getSubtype(game).addAll(subtypes); } else { for (SubType subtype : subtypes) { if (!permanent.hasSubtype(subtype, game)) { permanent.getSubtype(game).add(subtype); } } } break; } } else { if (duration == Duration.Custom) { discard(); } } } return true; }
@Override public boolean apply(Layer layer, SubLayer sublayer, Ability source, Game game) { for (Permanent permanent : game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game)) { if (permanent != null) { switch (layer) { case TypeChangingEffects_4: if (loseOther) { permanent.getSubtype(game).retainAll(SubType.getLandTypes(false)); permanent.getSubtype(game).addAll(subtypes); } else { for (SubType subtype : subtypes) { if (!permanent.hasSubtype(subtype, game)) { permanent.getSubtype(game).add(subtype); } } } break; } } else if (duration == Duration.Custom) { discard(); } } return true; }
permanent.getSubtype(game).retainAll(SubType.getLandTypes(false));
if (sublayer == SubLayer.NA) { if (loseAllAbilities) { permanent.getSubtype(game).retainAll(SubType.getLandTypes(false)); permanent.getSubtype(game).addAll(token.getSubtype(game)); } else {
permanent.addCardType(t); permanent.getSubtype(game).retainAll(SubType.getLandTypes(false)); for (SubType t : copied.getSubtype(game)) { permanent.getSubtype(game).add(t);
case ALL_BUT_COLOR: case ABILITIES_SUBTYPE: permanent.getSubtype(game).retainAll(SubType.getLandTypes(false)); break;
case ALL_BUT_COLOR: case ABILITIES_SUBTYPE_AND_PT: permanentAttachedTo.getSubtype(game).retainAll(SubType.getLandTypes(false)); break;