@Override public MultipliedValue copy() { return new MultipliedValue(this); }
DamiaSageOfStoneTriggeredAbility() { super(new DrawCardSourceControllerEffect(new IntPlusDynamicValue(7, new MultipliedValue(CardsInControllerHandCount.instance, -1))), TargetController.YOU, false); }
public PresenceOfTheWise(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}{W}"); // You gain 2 life for each card in your hand. this.getSpellAbility().addEffect(new GainLifeEffect( new MultipliedValue(CardsInControllerHandCount.instance, 2),"You gain 2 life for each card in your hand")); }
public GerrardsWisdom(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{W}{W}"); // You gain 2 life for each card in your hand. this.getSpellAbility().addEffect(new GainLifeEffect(new MultipliedValue(CardsInControllerHandCount.instance, 2), "You gain 2 life for each card in your hand")); }
public JohtullWurm(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}"); this.subtype.add(SubType.WURM); this.power = new MageInt(6); this.toughness = new MageInt(6); // Whenever Johtull Wurm becomes blocked, it gets -2/-1 until end of turn for each creature blocking it beyond the first. DynamicValue blockedCreatureCount = new BlockedCreatureCount("each creature blocking it beyond the first", true); Effect effect = new BoostSourceEffect(new MultipliedValue(blockedCreatureCount, -2), new MultipliedValue(blockedCreatureCount, -1), Duration.EndOfTurn, true); effect.setText("it gets -2/-1 until end of turn for each creature blocking it beyond the first"); this.addAbility(new BecomesBlockedTriggeredAbility(effect, false)); }
public WanderingStream(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{G}"); // Domain - You gain 2 life for each basic land type among lands you control. Effect effect = new GainLifeEffect(new MultipliedValue(new DomainValue(), 2)); effect.setText("Domain - You gain 2 life for each basic land type among lands you control"); this.getSpellAbility().addEffect(effect); }
public BelbesArmor(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}"); // {X}, {tap}: Target creature gets -X/+X until end of turn. Ability ability = new SimpleActivatedAbility( Zone.BATTLEFIELD, new BoostTargetEffect( new MultipliedValue(ManacostVariableValue.instance, -1), ManacostVariableValue.instance, Duration.EndOfTurn ), new ManaCostsImpl("{X}")); ability.addCost(new TapSourceCost()); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); }
public RuneSnag(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}"); // Counter target spell unless its controller pays {2} plus an additional {2} for each card named Rune Snag in each graveyard. Effect effect = new CounterUnlessPaysEffect(new IntPlusDynamicValue(2, new MultipliedValue(new CardsInAllGraveyardsCount(filter), 2))); effect.setText("Counter target spell unless its controller pays {2} plus an additional {2} for each card named Rune Snag in each graveyard"); this.getSpellAbility().addEffect(effect); this.getSpellAbility().addTarget(new TargetSpell()); }
public LightkeeperOfEmeria(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}"); this.subtype.add(SubType.ANGEL); this.power = new MageInt(2); this.toughness = new MageInt(4); // Multikicker (You may pay an additional {W} any number of times as you cast this spell.) this.addAbility(new MultikickerAbility("{W}")); // Flying this.addAbility(FlyingAbility.getInstance()); // When Lightkeeper of Emeria enters the battlefield, you gain 2 life for each time it was kicked. Effect effect = new GainLifeEffect(new MultipliedValue(MultikickerCount.instance, 2)); effect.setText("you gain 2 life for each time it was kicked"); this.addAbility(new EntersBattlefieldTriggeredAbility(effect, false)); }
public PhyrexianEtchings(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{B}{B}{B}"); // Cumulative upkeep-Pay {B}. this.addAbility(new CumulativeUpkeepAbility(new ManaCostsImpl("{B}"))); // At the beginning of your end step, draw a card for each age counter on Phyrexian Etchings. this.addAbility(new BeginningOfYourEndStepTriggeredAbility(new DrawCardSourceControllerEffect(new CountersSourceCount(CounterType.AGE)), false)); // When Phyrexian Etchings is put into a graveyard from the battlefield, you lose 2 life for each age counter on it. this.addAbility(new PutIntoGraveFromBattlefieldSourceTriggeredAbility(new LoseLifeSourceControllerEffect(new MultipliedValue(new CountersSourceCount(CounterType.AGE), 2)) .setText("you lose 2 life for each age counter on it") )); }
public LifeBurst(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{W}"); // Target player gains 4 life, then gains 4 life for each card named Life Burst in each graveyard. this.getSpellAbility().addEffect(new GainLifeTargetEffect(4)); Effect effect = new GainLifeTargetEffect(new MultipliedValue(new CardsInAllGraveyardsCount(filter), 4)); effect.setText(", then gains 4 life for each card named {source} in each graveyard"); this.getSpellAbility().addEffect(effect); this.getSpellAbility().addTarget(new TargetPlayer()); }
public JungleWurm(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}"); this.subtype.add(SubType.WURM); this.power = new MageInt(5); this.toughness = new MageInt(5); // Whenever Jungle Wurm becomes blocked, it gets -1/-1 until end of turn for each creature blocking it beyond the first. BlockedCreatureCount blockedCreatureCount = new BlockedCreatureCount("each creature blocking it beyond the first", true); DynamicValue value = new MultipliedValue(blockedCreatureCount, -1); Effect effect = new BoostSourceEffect(value, value, Duration.EndOfTurn, true); effect.setText("it gets -1/-1 until end of turn for each creature blocking it beyond the first"); this.addAbility(new BecomesBlockedTriggeredAbility(effect, false)); }
public MasumaroFirstToLive(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}{G}{G}"); addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.SPIRIT); this.power = new MageInt(0); this.toughness = new MageInt(0); // Masumaro, First to Live's power and toughness are each equal to twice the number of cards in your hand. DynamicValue xValue= new MultipliedValue(CardsInControllerHandCount.instance, 2); Effect effect = new SetPowerToughnessSourceEffect(xValue, Duration.EndOfGame); effect.setText("{this}'s power and toughness are each equal to twice the number of cards in your hand"); this.addAbility(new SimpleStaticAbility(Zone.ALL, effect)); }
public MartyrOfSands(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}"); this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.CLERIC); this.power = new MageInt(1); this.toughness = new MageInt(1); // {1}, Reveal X white cards from your hand, Sacrifice Martyr of Sands: You gain three times X life. Effect effect = new GainLifeEffect(new MultipliedValue(RevealTargetFromHandCostCount.instance, 3)); effect.setText("You gain three times X life."); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{1}")); ability.addCost(new RevealTargetFromHandCost(new TargetCardInHand(0, Integer.MAX_VALUE, filter))); ability.addCost(new SacrificeSourceCost()); this.addAbility(ability); }
public DreadSlag(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{R}"); this.subtype.add(SubType.HORROR); this.power = new MageInt(9); this.toughness = new MageInt(9); // Trample this.addAbility(TrampleAbility.getInstance()); // Dread Slag gets -4/-4 for each card in your hand. DynamicValue amount = new MultipliedValue(CardsInControllerHandCount.instance, -4); Effect effect = new BoostSourceEffect(amount, amount, Duration.WhileOnBattlefield); effect.setText("{this} gets -4/-4 for each card in your hand"); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); }
public RenewingDawn(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{1}{W}"); // You gain 2 life for each Mountain target opponent controls. DynamicValue amount = new MultipliedValue(new PermanentsTargetOpponentControlsCount(filter), 2); Effect effect = new GainLifeEffect(amount); effect.setText("You gain 2 life for each Mountain target opponent controls"); this.getSpellAbility().addEffect(effect); this.getSpellAbility().addTarget(new TargetOpponent()); }
public RabidElephant(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}"); this.subtype.add(SubType.ELEPHANT); this.power = new MageInt(3); this.toughness = new MageInt(4); // Whenever Rabid Elephant becomes blocked, it gets +2/+2 until end of turn for each creature blocking it. DynamicValue value = new MultipliedValue(new BlockedCreatureCount(), 2); Effect effect = new BoostSourceEffect(value, value, Duration.EndOfTurn, true); effect.setText("it gets +2/+2 until end of turn for each creature blocking it"); this.addAbility(new BecomesBlockedTriggeredAbility(effect, false)); }
public GangOfElk(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{G}"); this.subtype.add(SubType.ELK); this.subtype.add(SubType.BEAST); this.power = new MageInt(5); this.toughness = new MageInt(4); // Whenever Gang of Elk becomes blocked, it gets +2/+2 until end of turn for each creature blocking it. DynamicValue value = new MultipliedValue(new BlockedCreatureCount(), 2); Effect effect = new BoostSourceEffect(value, value, Duration.EndOfTurn, true); effect.setText("it gets +2/+2 until end of turn for each creature blocking it"); this.addAbility(new BecomesBlockedTriggeredAbility(effect, false)); }
public BarrelDownSokenzan(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}"); this.subtype.add(SubType.ARCANE); // Sweep - Return any number of Mountains you control to their owner's hand. Barrel Down Sokenzan deals damage to target creature equal to twice the number of Mountains returned this way. this.getSpellAbility().addEffect(new SweepEffect(SubType.MOUNTAIN)); DynamicValue sweepValue = new MultipliedValue(new SweepNumber("Mountain"), 2); this.getSpellAbility().addEffect(new DamageTargetEffect(sweepValue)); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); }
public KrovikanWhispers(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}"); this.subtype.add(SubType.AURA); // Enchant creature TargetPermanent auraTarget = new TargetCreaturePermanent(); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.GainControl)); Ability ability = new EnchantAbility(auraTarget.getTargetName()); this.addAbility(ability); // Cumulative upkeep-Pay {U} or {B}. this.addAbility(new CumulativeUpkeepAbility(new OrCost(new ManaCostsImpl("{U}"), new ManaCostsImpl("{B}"), "{U} or {B}"))); // You control enchanted creature. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ControlEnchantedEffect())); // When Krovikan Whispers is put into a graveyard from the battlefield, you lose 2 life for each age counter on it. this.addAbility(new PutIntoGraveFromBattlefieldSourceTriggeredAbility(new LoseLifeSourceControllerEffect(new MultipliedValue(new CountersSourceCount(CounterType.AGE), 2)) .setText("you lose 2 life for each age counter on it.") )); }