public SurgicalExtraction(GameState state) { super(state); // Choose target card in a graveyard other than a basic land card. SetGenerator inGraveyards = InZone.instance(GraveyardOf.instance(Players.instance())); SetGenerator basicLands = Intersect.instance(HasSuperType.instance(SuperType.BASIC), HasType.instance(Type.LAND)); SetGenerator legalTargets = RelativeComplement.instance(inGraveyards, basicLands); Target t = this.addTarget(legalTargets, "target card in a graveyard other than a basic land card"); // Search its owner's graveyard, hand, and library for all cards with // the same name as that card and exile them. SetGenerator itsOwner = OwnerOf.instance(targetedBy(t)); SetGenerator graveyard = GraveyardOf.instance(itsOwner); SetGenerator hand = HandOf.instance(itsOwner); SetGenerator library = LibraryOf.instance(itsOwner); SetGenerator zones = Union.instance(graveyard, hand, library); EventFactory effect = new EventFactory( EventType.SEARCH_FOR_ALL_AND_PUT_INTO, "Choose target card in a graveyard other than a basic land card. Search its owner's graveyard, hand, and library for all cards with the same name as that card and exile them."); effect.parameters.put(EventType.Parameter.CAUSE, This.instance()); effect.parameters.put(EventType.Parameter.PLAYER, You.instance()); effect.parameters.put(EventType.Parameter.ZONE, zones); effect.parameters.put( EventType.Parameter.TYPE, Identity.instance(HasName.instance(NameOf.instance(targetedBy(t))))); effect.parameters.put(EventType.Parameter.TO, ExileZone.instance()); this.addEffect(effect); // Then that player shuffles his or her library. this.addEffect(shuffleLibrary(targetedBy(t), "Then that player shuffles his or her library.")); }
public EvolutionCharm(GameState state) { super(state); // Choose one // Search your library for a basic land card, reveal it, put it into // your hand, then shuffle your library { EventType.ParameterMap searchParameters = new EventType.ParameterMap(); searchParameters.put(EventType.Parameter.CAUSE, This.instance()); searchParameters.put(EventType.Parameter.PLAYER, You.instance()); searchParameters.put(EventType.Parameter.NUMBER, numberGenerator(1)); searchParameters.put( EventType.Parameter.TYPE, Identity.instance( Intersect.instance( HasSuperType.instance(SuperType.BASIC), HasType.instance(Type.LAND)))); searchParameters.put(EventType.Parameter.TO, HandOf.instance(You.instance())); this.addEffect( 1, new EventFactory( EventType.SEARCH_LIBRARY_AND_PUT_INTO, searchParameters, "Search your library for a basic land card, reveal it, put it into your hand, then shuffle your library.")); } // Return target creature card from your graveyard to your hand { SetGenerator graveyard = GraveyardOf.instance(You.instance()); Target target = this.addTarget( 2, Intersect.instance(HasType.instance(Type.CREATURE), InZone.instance(graveyard)), "target creature from your graveyard"); EventType.ParameterMap moveParameters = new EventType.ParameterMap(); moveParameters.put(EventType.Parameter.CAUSE, This.instance()); moveParameters.put(EventType.Parameter.TO, HandOf.instance(You.instance())); moveParameters.put(EventType.Parameter.OBJECT, targetedBy(target)); this.addEffect( 2, new EventFactory( EventType.MOVE_OBJECTS, moveParameters, "Return target creature card from your graveyard to your hand.")); } // Target creature gains flying until end of turn. { Target target = this.addTarget(3, CreaturePermanents.instance(), "target creature"); this.addEffect( 3, addAbilityUntilEndOfTurn( targetedBy(target), org.rnd.jmagic.abilities.keywords.Flying.class, "Target creature gains flying until end of turn.")); } }
public Mirrorweave(GameState state) { super(state); Target target = this.addTarget( RelativeComplement.instance( CreaturePermanents.instance(), HasSuperType.instance(SuperType.LEGENDARY)), "target nonlegendary creature"); // Each other creature becomes a copy of target nonlegendary creature // until end of turn. ContinuousEffect.Part part = new ContinuousEffect.Part(ContinuousEffectType.COPY_OBJECT); part.parameters.put(ContinuousEffectType.Parameter.ORIGINAL, targetedBy(target)); part.parameters.put( ContinuousEffectType.Parameter.OBJECT, RelativeComplement.instance(CreaturePermanents.instance(), targetedBy(target))); this.addEffect( createFloatingEffect( "Each other creature becomes a copy of target nonlegendary creature until end of turn.", part)); }