public ConsumingAberrationAbility1(GameState state) { super( state, "Whenever you cast a spell, each opponent reveals cards from the top of his or her library until he or she reveals a land card, then puts those cards into his or her graveyard."); this.addPattern(whenYouCastASpell()); DynamicEvaluation eachOpponent = DynamicEvaluation.instance(); SetGenerator toReveal = TopMost.instance( LibraryOf.instance(eachOpponent), numberGenerator(1), HasType.instance(Type.LAND)); EventFactory reveal = reveal( toReveal, "Each opponent reveals cards from the top of his or her library until he or she reveals a land card,"); EventFactory move = putIntoGraveyard(toReveal, "then puts those cards into his or her graveyard."); EventFactory forEach = new EventFactory( FOR_EACH_PLAYER, "Each opponent reveals cards from the top of his or her library until he or she reveals a land card, then puts those cards into his or her graveyard."); forEach.parameters.put(EventType.Parameter.PLAYER, OpponentsOf.instance(You.instance())); forEach.parameters.put(EventType.Parameter.TARGET, Identity.instance(eachOpponent)); forEach.parameters.put(EventType.Parameter.EFFECT, Identity.instance(sequence(reveal, move))); this.addEffect(forEach); }
public IllGottenGains(GameState state) { super(state); // Exile Ill-Gotten Gains. this.addEffect(exile(This.instance(), "Exile Ill-Gotten Gains.")); // Each player discards his or her hand, this.addEffect(discardHand(Players.instance(), "Each player discards his or her hand,")); // then returns up to three cards from his or her graveyard to his or // her hand. SetGenerator eachPlayer = DynamicEvaluation.instance(); SetGenerator graveyard = GraveyardOf.instance(eachPlayer); EventFactory chooseCards = new EventFactory(EventType.PLAYER_CHOOSE, "Choose up to three cards in your graveyard"); chooseCards.parameters.put(EventType.Parameter.PLAYER, eachPlayer); chooseCards.parameters.put(EventType.Parameter.NUMBER, Between.instance(0, 3)); chooseCards.parameters.put(EventType.Parameter.CHOICE, InZone.instance(graveyard)); chooseCards.parameters.put( EventType.Parameter.TYPE, Identity.instance(PlayerInterface.ChoiceType.OBJECTS, REASON)); EventFactory eachPlayerChooses = new EventFactory(FOR_EACH_PLAYER, ""); eachPlayerChooses.parameters.put(EventType.Parameter.TARGET, Identity.instance(eachPlayer)); eachPlayerChooses.parameters.put(EventType.Parameter.EFFECT, Identity.instance(chooseCards)); this.addEffect(eachPlayerChooses); SetGenerator chosenCards = ForEachResult.instance(eachPlayerChooses, eachPlayer); EventFactory returnCards = new EventFactory(EventType.MOVE_OBJECTS, "Return those cards to your hand"); returnCards.parameters.put(EventType.Parameter.CAUSE, This.instance()); returnCards.parameters.put(EventType.Parameter.TO, HandOf.instance(eachPlayer)); returnCards.parameters.put(EventType.Parameter.OBJECT, chosenCards); EventFactory effect = new EventFactory( FOR_EACH_PLAYER, "then returns up to three cards from his or her graveyard to his or her hand."); effect.parameters.put(EventType.Parameter.TARGET, Identity.instance(eachPlayer)); effect.parameters.put(EventType.Parameter.EFFECT, Identity.instance(returnCards)); this.addEffect(effect); }