@Override public RemoveCounterTargetEffect copy() { return new RemoveCounterTargetEffect(this); }
RemoveCounterTargetEffect effect = new RemoveCounterTargetEffect(); effect.setTargetPointer(new FixedTarget(source.getFirstTarget())); effect.apply(game, source); } else { Counter counter = selectCounterType(game, source, permanent); if (player.chooseUse(Outcome.Neutral, "Do you want to to remove a counter?", source, game)) { Counter counter = selectCounterType(game, source, card); RemoveCounterTargetEffect effect = new RemoveCounterTargetEffect(counter); effect.setTargetPointer(new FixedTarget(source.getFirstTarget())); effect.apply(game, source); } else { Counter counter = selectCounterType(game, source, card);
@Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { Choice choice = new ChoiceImpl(true); choice.setMessage("Choose mode"); choice.setChoices(choices); if (!controller.choose(outcome, choice, game)) { return false; } String chosen = choice.getChoice(); switch (chosen) { case "Remove a repair counter": new RemoveCounterTargetEffect(CounterType.REPAIR.createInstance()).apply(game, source); break; default: //"Add another repair counter" new AddCountersTargetEffect(CounterType.REPAIR.createInstance()).apply(game, source); break; } return true; } return false; }
@Override public boolean apply(Game game, Ability source) { Permanent p = game.getPermanent(targetPointer.getFirst(game, source)); if (p != null) { Counter toRemove = (counter == null ? selectCounterType(game, source, p) : counter); if (toRemove != null && p.getCounters(game).getCount(toRemove.getName()) >= toRemove.getCount()) { p.removeCounters(toRemove.getName(), toRemove.getCount(), game); if (!game.isSimulation()) { game.informPlayers("Removed " + toRemove.getCount() + ' ' + toRemove.getName() + " counter from " + p.getName()); } } } else { Card c = game.getCard(targetPointer.getFirst(game, source)); if (c != null && counter != null && c.getCounters(game).getCount(counter.getName()) >= counter.getCount()) { c.removeCounters(counter.getName(), counter.getCount(), game); if (!game.isSimulation()) { game.informPlayers(new StringBuilder("Removed ").append(counter.getCount()).append(' ').append(counter.getName()) .append(" counter from ").append(c.getName()) .append(" (").append(c.getCounters(game).getCount(counter.getName())).append(" left)").toString()); } } } return true; }
public BloodcrazedHopliteTriggeredAbility() { super(Zone.ALL, new RemoveCounterTargetEffect(CounterType.P1P1.createInstance()), false); }
DefiantGreatmawTriggeredAbility() { super(Zone.BATTLEFIELD, new RemoveCounterTargetEffect(CounterType.M1M1.createInstance(1)), false); this.addTarget(new TargetCreaturePermanent(filter)); }
public MedicineRunner(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{G/W}"); this.subtype.add(SubType.ELF); this.subtype.add(SubType.CLERIC); this.power = new MageInt(2); this.toughness = new MageInt(1); // When Medicine Runner enters the battlefield, you may remove a counter from target permanent. Ability ability = new EntersBattlefieldTriggeredAbility(new RemoveCounterTargetEffect(), true); ability.addTarget(new TargetPermanent()); this.addAbility(ability); }
public Ferropede(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}"); this.subtype.add(SubType.INSECT); this.power = new MageInt(1); this.toughness = new MageInt(1); // Ferropede is unblockable. this.addAbility(new CantBeBlockedSourceAbility()); // Whenever Ferropede deals combat damage to a player, you may remove a counter from target permanent. Ability ability = new DealsCombatDamageToAPlayerTriggeredAbility(new RemoveCounterTargetEffect(), true); ability.addTarget(new TargetPermanent()); this.addAbility(ability); }
public SpinalParasite(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}"); this.subtype.add(SubType.INSECT); this.power = new MageInt(-1); this.toughness = new MageInt(-1); // Sunburst this.addAbility(new SunburstAbility(this)); // Remove two +1/+1 counters from Spinal Parasite: Remove a counter from target permanent. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new RemoveCounterTargetEffect(), new RemoveCountersSourceCost(CounterType.P1P1.createInstance(2))); ability.addTarget(new TargetPermanent()); this.addAbility(ability); }
public ThrullParasite(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{B}"); this.subtype.add(SubType.THRULL); this.power = new MageInt(1); this.toughness = new MageInt(1); // Extort this.addAbility(new ExtortAbility()); // {tap}, Pay 2 life: Remove a counter from target nonland permanent. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new RemoveCounterTargetEffect(), new TapSourceCost()); ability.addTarget(new TargetNonlandPermanent()); ability.addCost(new PayLifeCost(2)); this.addAbility(ability); }
@Override public boolean apply(Game game, Ability source) { Permanent permanent = game.getPermanent(source.getSourceId()); if (permanent != null) { Effect effect = new RemoveCounterTargetEffect(CounterType.P1P1.createInstance()); effect.setTargetPointer(new FixedTarget(source.getSourceId(), source.getSourceObjectZoneChangeCounter())); game.addDelayedTriggeredAbility(new AtTheEndOfCombatDelayedTriggeredAbility(effect), source); return true; } return false; }
public Chainbreaker(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{2}"); this.subtype.add(SubType.SCARECROW); this.power = new MageInt(3); this.toughness = new MageInt(3); // Chainbreaker enters the battlefield with two -1/-1 counters on it. this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.M1M1.createInstance(2), false), "with two -1/-1 counters on it")); // {3}, {tap}: Remove a -1/-1 counter from target creature. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new RemoveCounterTargetEffect(CounterType.M1M1.createInstance()), new ManaCostsImpl("{3}")); ability.addCost(new TapSourceCost()); ability.addTarget(new TargetCreaturePermanent(new FilterCreaturePermanent("target creature"))); this.addAbility(ability); }
public CarboniteChamber(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}{U}"); this.subtype.add(SubType.AURA); // Enchant creature TargetPermanent auraTarget = new TargetCreaturePermanent(); this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.AddAbility)); Ability ability = new EnchantAbility(auraTarget.getTargetName()); this.addAbility(ability); // When Carbonite Chamber enters the battlefield, you may remove a bounty counter from target creature. ability = new EntersBattlefieldTriggeredAbility(new RemoveCounterTargetEffect(CounterType.BOUNTY.createInstance()), true); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); // You control enchanted creature. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ControlEnchantedEffect())); // It can't attack or block, and its activated abilities can't be activated. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBlockAttackActivateAttachedEffect())); }
@Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller == null) { return false; } Permanent target = game.getPermanent(source.getTargets().getFirstTarget()); if (target == null) { return false; } if (target.getCounters(game).getCount(CounterType.M1M1) > 0) { if (controller.chooseUse(outcome, "Remove a -1/-1 counter from " + target.getIdName() + "?", source, game)) { Effect effect = new RemoveCounterTargetEffect(CounterType.M1M1.createInstance()); effect.setTargetPointer(new FixedTarget(target.getId())); effect.apply(game, source); } } return true; }
@Override public boolean apply(Game game, Ability source) { Permanent targetCreature = game.getPermanent(getTargetPointer().getFirst(game, source)); if (targetCreature != null && targetCreature.getCounters(game).containsKey(CounterType.M1M1)) { Effect effect = new RemoveCounterTargetEffect(CounterType.M1M1.createInstance(1)); effect.setTargetPointer(targetPointer); effect.apply(game, source); } targetCreature = game.getPermanent(source.getTargets().get(1).getFirstTarget()); if (targetCreature != null) { Effect effect = new AddCountersTargetEffect(CounterType.M1M1.createInstance(1)); effect.setTargetPointer(new FixedTarget(source.getTargets().get(1).getFirstTarget())); effect.apply(game, source); } return true; }