@Override public void adjustCosts(Ability ability, Game game) { Player controller = game.getPlayer(ability.getControllerId()); if (controller == null) { return; } for (VariableCost variableCost : ability.getManaCostsToPay().getVariableCosts()) { if (variableCost instanceof VariableManaCost) { ((VariableManaCost) variableCost).setMaxX(controller.getGraveyard().size()); } } } }
@Override public void adjustCosts(Ability ability, Game game) { if (ability instanceof SimpleActivatedAbility && ability.getModes().size() == 3) { Permanent sourcePermanent = game.getPermanent(ability.getSourceId()); if (sourcePermanent != null) { int amount = sourcePermanent.getCounters(game).getCount(CounterType.P1P1); if (amount > 0) { for (VariableCost cost : ability.getManaCostsToPay().getVariableCosts()) { if (cost instanceof VariableManaCost) { ((VariableManaCost) cost).setMaxX(amount); break; } } } } } }
public VoodooDoll(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{6}"); // At the beginning of your upkeep, put a pin counter on Voodoo Doll. this.addAbility(new BeginningOfUpkeepTriggeredAbility(new AddCountersSourceEffect(CounterType.PIN.createInstance()), TargetController.YOU, false)); // At the beginning of your end step, if Voodoo Doll is untapped, destroy Voodoo Doll and it deals damage to you equal to the number of pin counters on it. Ability ability = new BeginningOfEndStepTriggeredAbility(Zone.BATTLEFIELD, new DestroySourceEffect(), TargetController.YOU, new InvertCondition(SourceTappedCondition.instance), false); ability.addEffect(new DamageControllerEffect(new CountersSourceCount(CounterType.PIN))); this.addAbility(ability); // {X}{X}, {T}: Voodoo Doll deals damage equal to the number of pin counters on it to any target. X is the number of pin counters on Voodoo Doll. Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(new CountersSourceCount(CounterType.PIN)), new ManaCostsImpl("{X}{X}")); ability2.addCost(new TapSourceCost()); ability2.addTarget(new TargetAnyTarget()); for (VariableCost cost : ability2.getManaCosts().getVariableCosts()) { if (cost instanceof VariableManaCost) { ((VariableManaCost) cost).setMaxX(0); break; } } this.addAbility(ability2); }