Changed some cards with kicker and multikicker to be more accurate.

This commit is contained in:
LevelX2 2012-11-21 23:31:32 +01:00
parent c8d9006740
commit b7fe361ca4
31 changed files with 311 additions and 215 deletions

View file

@ -29,21 +29,21 @@
package mage.sets.apocalypse;
import java.util.UUID;
import mage.Constants;
import mage.Constants.CardType;
import mage.Constants.Duration;
import mage.Constants.Rarity;
import mage.Constants.Zone;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.condition.common.KickedCostCondition;
import mage.abilities.costs.common.PayLifeCost;
import mage.abilities.costs.mana.ColoredManaCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.costs.mana.KickerManaCost;
import mage.abilities.effects.EntersBattlefieldEffect;
import mage.abilities.effects.common.RegenerateSourceEffect;
import mage.abilities.effects.common.continious.GainAbilitySourceEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.KickerAbility;
import mage.cards.CardImpl;
import mage.counters.CounterType;
@ -59,14 +59,28 @@ public class Anavolver extends CardImpl<Anavolver> {
this.color.setGreen(true);
this.power = new MageInt(3);
this.toughness = new MageInt(3);
Ability firstAbility = new KickerAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), false);
firstAbility.addEffect(new GainAbilitySourceEffect(FlyingAbility.getInstance(), Constants.Duration.WhileOnBattlefield));
firstAbility.addCost(new ManaCostsImpl("{1}{U}"));
this.addAbility(firstAbility);
Ability secondAbility = new KickerAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false);
secondAbility.addEffect(new GainAbilitySourceEffect(new SimpleActivatedAbility(Constants.Zone.BATTLEFIELD, new RegenerateSourceEffect(), new PayLifeCost(3)), Constants.Duration.WhileOnBattlefield));
secondAbility.addCost(new ColoredManaCost(Constants.ColoredManaSymbol.B));
this.addAbility(secondAbility);
// Kicker {1}{U} and/or {B} (You may pay an additional {1}{U} and/or {B} as you cast this spell.)
KickerManaCost kicker1 = new KickerManaCost("{1}{U}");
this.getSpellAbility().addOptionalCost(kicker1);
KickerManaCost kicker2 = new KickerManaCost("{B}");
this.getSpellAbility().addOptionalCost(kicker2);
// If Anavolver was kicked with its {1}{U} kicker, it enters the battlefield with two +1/+1 counters on it and with flying.
EntersBattlefieldAbility ability1 = new EntersBattlefieldAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance(2),false),
new KickedCostCondition(kicker1), true, "If {this} was kicked with its {1}{U} kicker, it enters the battlefield with two +1/+1 counters on it and with flying.",
"{this} enters the battlefield with two +1/+1 counters on it and with flying");
((EntersBattlefieldEffect)ability1.getEffects().get(0)).addEffect(new GainAbilitySourceEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield));
this.addAbility(ability1);
// If Anavolver was kicked with its {B} kicker, it enters the battlefield with a +1/+1 counter on it and with "Pay 3 life: Regenerate Anavolver."
EntersBattlefieldAbility ability2 = new EntersBattlefieldAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance(1),false), new KickedCostCondition(kicker2), true,
"If {this} was kicked with its {B} kicker, it enters the battlefield with a +1/+1 counter on it and with \"Pay 3 life: Regenerate Anavolver.\"",
"{this} enters the battlefield with a +1/+1 counter on it and with \"Pay 3 life: Regenerate Anavolver.\"");
((EntersBattlefieldEffect)ability2.getEffects().get(0)).addEffect(new GainAbilitySourceEffect(new SimpleActivatedAbility(Zone.BATTLEFIELD, new RegenerateSourceEffect(), new PayLifeCost(3)), Duration.WhileOnBattlefield));
this.addAbility(ability2);
}
public Anavolver(final Anavolver card) {
@ -77,5 +91,4 @@ public class Anavolver extends CardImpl<Anavolver> {
public Anavolver copy() {
return new Anavolver(this);
}
}

View file

@ -28,18 +28,17 @@
package mage.sets.apocalypse;
import java.util.UUID;
import mage.Constants;
import mage.Constants.CardType;
import mage.Constants.Duration;
import mage.Constants.Rarity;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.costs.mana.ColoredManaCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.condition.common.KickedCostCondition;
import mage.abilities.costs.mana.KickerManaCost;
import mage.abilities.effects.EntersBattlefieldEffect;
import mage.abilities.effects.common.continious.GainAbilitySourceEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.abilities.keyword.KickerAbility;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.counters.CounterType;
@ -57,14 +56,28 @@ public class Cetavolver extends CardImpl<Cetavolver> {
this.color.setBlue(true);
this.power = new MageInt(1);
this.toughness = new MageInt(1);
Ability firstAbility = new KickerAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), false);
firstAbility.addEffect(new GainAbilitySourceEffect(FirstStrikeAbility.getInstance(), Constants.Duration.WhileOnBattlefield));
firstAbility.addCost(new ManaCostsImpl("{1}{R}"));
this.addAbility(firstAbility);
Ability secondAbility = new KickerAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false);
secondAbility.addEffect(new GainAbilitySourceEffect(TrampleAbility.getInstance(), Constants.Duration.WhileOnBattlefield));
secondAbility.addCost(new ColoredManaCost(Constants.ColoredManaSymbol.G));
this.addAbility(secondAbility);
// Kicker {1}{R} and/or {G} (You may pay an additional {1}{R} and/or {G} as you cast this spell.)
KickerManaCost kicker1 = new KickerManaCost("{1}{R}");
this.getSpellAbility().addOptionalCost(kicker1);
KickerManaCost kicker2 = new KickerManaCost("{G}");
this.getSpellAbility().addOptionalCost(kicker2);
// If Cetavolver was kicked with its {1}{R} kicker, it enters the battlefield with two +1/+1 counters on it and with first strike.
EntersBattlefieldAbility ability1 = new EntersBattlefieldAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance(2),false),
new KickedCostCondition(kicker1), true, "If Cetavolver was kicked with its {1}{R} kicker, it enters the battlefield with two +1/+1 counters on it and with first strike.",
"{this} enters the battlefield with two +1/+1 counters on it and with first strike");
((EntersBattlefieldEffect)ability1.getEffects().get(0)).addEffect(new GainAbilitySourceEffect(FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield));
this.addAbility(ability1);
// If Cetavolver was kicked with its {G} kicker, it enters the battlefield with a +1/+1 counter on it and with trample.
EntersBattlefieldAbility ability2 = new EntersBattlefieldAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance(1),false), new KickedCostCondition(kicker2), true,
"If Cetavolver was kicked with its {G} kicker, it enters the battlefield with a +1/+1 counter on it and with trample.",
"{this} enters the battlefield with a +1/+1 counter on it and with trample");
((EntersBattlefieldEffect)ability2.getEffects().get(0)).addEffect(new GainAbilitySourceEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield));
this.addAbility(ability2);
}
public Cetavolver(final Cetavolver card) {

View file

@ -28,21 +28,22 @@
package mage.sets.apocalypse;
import java.util.UUID;
import mage.Constants;
import mage.Constants.CardType;
import mage.Constants.Duration;
import mage.Constants.Rarity;
import mage.Constants.Zone;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.condition.common.KickedCostCondition;
import mage.abilities.costs.common.PayLifeCost;
import mage.abilities.costs.mana.ColoredManaCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.costs.mana.KickerManaCost;
import mage.abilities.effects.EntersBattlefieldEffect;
import mage.abilities.effects.common.RegenerateSourceEffect;
import mage.abilities.effects.common.continious.GainAbilitySourceEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.abilities.keyword.KickerAbility;
import mage.cards.CardImpl;
import mage.counters.CounterType;
@ -59,14 +60,28 @@ public class Degavolver extends CardImpl<Degavolver> {
this.color.setWhite(true);
this.power = new MageInt(1);
this.toughness = new MageInt(1);
Ability firstAbility = new KickerAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), false);
firstAbility.addEffect(new GainAbilitySourceEffect(new SimpleActivatedAbility(Constants.Zone.BATTLEFIELD, new RegenerateSourceEffect(), new PayLifeCost(3)), Constants.Duration.WhileOnBattlefield));
firstAbility.addCost(new ManaCostsImpl("{1}{B}"));
this.addAbility(firstAbility);
Ability secondAbility = new KickerAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false);
secondAbility.addEffect(new GainAbilitySourceEffect(FirstStrikeAbility.getInstance(), Constants.Duration.WhileOnBattlefield));
secondAbility.addCost(new ColoredManaCost(Constants.ColoredManaSymbol.R));
this.addAbility(secondAbility);
// Kicker {1}{B} and/or {R} (You may pay an additional {1}{B} and/or {R} as you cast this spell.)
KickerManaCost kicker1 = new KickerManaCost("{1}{B}");
this.getSpellAbility().addOptionalCost(kicker1);
KickerManaCost kicker2 = new KickerManaCost("{R}");
this.getSpellAbility().addOptionalCost(kicker2);
// If Degavolver was kicked with its {1}{B} kicker, it enters the battlefield with two +1/+1 counters on it and with "Pay 3 life: Regenerate Degavolver."
EntersBattlefieldAbility ability1 = new EntersBattlefieldAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance(2),false),
new KickedCostCondition(kicker1), true, "If Degavolver was kicked with its {1}{B} kicker, it enters the battlefield with two +1/+1 counters on it and with \"Pay 3 life: Regenerate Degavolver.\"",
"{this} enters the battlefield with two +1/+1 counters on it and with \"Pay 3 life: Regenerate Degavolver.\"");
((EntersBattlefieldEffect)ability1.getEffects().get(0)).addEffect(new GainAbilitySourceEffect(new SimpleActivatedAbility(Zone.BATTLEFIELD, new RegenerateSourceEffect(), new PayLifeCost(3)), Constants.Duration.WhileOnBattlefield));
this.addAbility(ability1);
// If Degavolver was kicked with its {R} kicker, it enters the battlefield with a +1/+1 counter on it and with first strike.
EntersBattlefieldAbility ability2 = new EntersBattlefieldAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance(1),false), new KickedCostCondition(kicker2), true,
"If Degavolver was kicked with its {R} kicker, it enters the battlefield with a +1/+1 counter on it and with first strike.",
"{this} enters the battlefield with a +1/+1 counter on it and with first strike");
((EntersBattlefieldEffect)ability2.getEffects().get(0)).addEffect(new GainAbilitySourceEffect(FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield));
this.addAbility(ability2);
}
public Degavolver(final Degavolver card) {

View file

@ -31,7 +31,9 @@ import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Rarity;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.MultikickerCount;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.MultikickerAbility;
@ -53,10 +55,16 @@ public class ApexHawks extends CardImpl<ApexHawks> {
this.power = new MageInt(2);
this.toughness = new MageInt(2);
// Multikicker (You may pay an additional any number of times as you cast this spell.)
this.addAbility(new MultikickerAbility(new ManaCostsImpl("{1}{W}")));
// Flying
this.addAbility(FlyingAbility.getInstance());
MultikickerAbility ability = new MultikickerAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(1)), false);
ability.addManaCost(new ManaCostsImpl("{1}{W}"));
this.addAbility(ability);
// Apex Hawks enters the battlefield with a +1/+1 counter on it for each time it was kicked.
this.addAbility(new EntersBattlefieldAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance(0), new MultikickerCount(), true)
,"with a +1/+1 counter on it for each time it was kicked"));
}
public ApexHawks(final ApexHawks card) {

View file

@ -29,12 +29,13 @@
package mage.sets.worldwake;
import java.util.UUID;
import mage.Constants;
import mage.Constants.CardType;
import mage.Constants.Rarity;
import mage.MageInt;
import mage.abilities.costs.mana.ColoredManaCost;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.MultikickerCount;
import mage.abilities.effects.common.DiscardTargetEffect;
import mage.abilities.keyword.MultikickerAbility;
import mage.cards.CardImpl;
@ -55,9 +56,12 @@ public class BloodhuskRitualist extends CardImpl<BloodhuskRitualist> {
this.power = new MageInt(2);
this.toughness = new MageInt(2);
MultikickerAbility ability = new MultikickerAbility(new DiscardTargetEffect(1), false);
// Multikicker (You may pay an additional {B} any number of times as you cast this spell.)
this.addAbility(new MultikickerAbility(new ManaCostsImpl("{B}")));
// When Bloodhusk Ritualist enters the battlefield, target opponent discards a card for each time it was kicked.
Ability ability = new EntersBattlefieldTriggeredAbility(new DiscardTargetEffect(new MultikickerCount()));
ability.addTarget(new TargetOpponent());
ability.addManaCost(new ColoredManaCost(Constants.ColoredManaSymbol.B));
this.addAbility(ability);
}

View file

@ -29,13 +29,13 @@ package mage.sets.worldwake;
import java.util.List;
import java.util.UUID;
import mage.Constants;
import mage.Constants.CardType;
import mage.Constants.Outcome;
import mage.Constants.Rarity;
import mage.abilities.Ability;
import mage.abilities.common.EmptyEffect;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.keyword.MultikickerAbility;
import mage.cards.CardImpl;
import mage.game.Game;
import mage.game.permanent.Permanent;
@ -55,7 +55,7 @@ public class CometStorm extends CardImpl<CometStorm> {
this.color.setRed(true);
// Multikicker {1}
this.addAbility(new SimpleStaticAbility(Constants.Zone.ALL, new EmptyEffect("Multikicker {1}")));
this.addAbility(new MultikickerAbility(new ManaCostsImpl("{1}")));
// Choose target creature or player, then choose another target creature or player for each time Comet Storm was kicked. Comet Storm deals X damage to each of them.
this.getSpellAbility().addEffect(new CometStormEffect());
@ -74,7 +74,7 @@ public class CometStorm extends CardImpl<CometStorm> {
class CometStormEffect extends OneShotEffect<CometStormEffect> {
public CometStormEffect() {
super(Constants.Outcome.Damage);
super(Outcome.Damage);
staticText = "Choose target creature or player, then choose another target creature or player for each time Comet Storm was kicked. Comet Storm deals X damage to each of them";
}
@ -89,7 +89,7 @@ class CometStormEffect extends OneShotEffect<CometStormEffect> {
Player you = game.getPlayer(source.getControllerId());
TargetCreatureOrPlayer target = new TargetCreatureOrPlayer(amount);
if (you != null) {
if (target.canChoose(source.getControllerId(), game) && target.choose(Constants.Outcome.Damage, source.getControllerId(), source.getId(), game)) {
if (target.canChoose(source.getControllerId(), game) && target.choose(Outcome.Damage, source.getControllerId(), source.getId(), game)) {
if (!target.getTargets().isEmpty()) {
List<UUID> targets = target.getTargets();
for (UUID uuid : targets) {

View file

@ -31,7 +31,9 @@ import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Rarity;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.MultikickerCount;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.IslandwalkAbility;
import mage.abilities.keyword.MultikickerAbility;
@ -54,10 +56,16 @@ public class EnclaveElite extends CardImpl<EnclaveElite> {
this.power = new MageInt(2);
this.toughness = new MageInt(2);
// Multikicker (You may pay an additional any number of times as you cast this spell.)
this.addAbility(new MultikickerAbility(new ManaCostsImpl("{1}{U}")));
// Islandwalk
this.addAbility(new IslandwalkAbility());
MultikickerAbility ability = new MultikickerAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(1)), false);
ability.addManaCost(new ManaCostsImpl("{1}{U}"));
this.addAbility(ability);
// Enclave Elite enters the battlefield with a +1/+1 counter on it for each time it was kicked.
this.addAbility(new EntersBattlefieldAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance(0), new MultikickerCount(), true),
"with a +1/+1 counter on it for each time it was kicked"));
}
public EnclaveElite(final EnclaveElite card) {

View file

@ -53,21 +53,21 @@ import java.util.UUID;
*/
public class EverflowingChalice extends CardImpl<EverflowingChalice> {
protected static final String rule = "Everflowing Chalice enters the battlefield with a charge counter on it for each time it was kicked";
protected static final String rule = "Everflowing Chalice enters the battlefield with a charge counter on it for each time it was kicked.";
public EverflowingChalice(UUID ownerId) {
super(ownerId, 123, "Everflowing Chalice", Rarity.UNCOMMON, new CardType[]{CardType.ARTIFACT}, "{0}");
this.expansionSetCode = "WWK";
// Everflowing Chalice enters the battlefield with a charge counter on it for each time it was kicked.
Ability ability1 = new EntersBattlefieldAbility(new EverflowingChaliceAddCountersEffect());
this.addAbility(ability1);
// Multikicker {2} (You may pay an additional {2} any number of times as you cast this spell.)
MultikickerAbility ability = new MultikickerAbility(new EmptyEffect(rule), false);
ability.addManaCost(new GenericManaCost(2));
this.addAbility(ability);
// Everflowing Chalice enters the battlefield with a charge counter on it for each time it was kicked.
Ability ability1 = new EntersBattlefieldAbility(new EverflowingChaliceAddCountersEffect(), null, true, rule, null);
this.addAbility(ability1);
this.addAbility(new DynamicManaAbility(Mana.ColorlessMana, new CountersCount(CounterType.CHARGE)));
}
@ -86,7 +86,6 @@ class EverflowingChaliceAddCountersEffect extends OneShotEffect<EverflowingChali
public EverflowingChaliceAddCountersEffect() {
super(Constants.Outcome.Benefit);
staticText = EverflowingChalice.rule;
}
public EverflowingChaliceAddCountersEffect(final EverflowingChaliceAddCountersEffect effect) {

View file

@ -31,7 +31,9 @@ import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Rarity;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.MultikickerCount;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.MultikickerAbility;
import mage.cards.CardImpl;
@ -52,9 +54,13 @@ public class GnarlidPack extends CardImpl<GnarlidPack> {
this.power = new MageInt(2);
this.toughness = new MageInt(2);
MultikickerAbility ability = new MultikickerAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(1)), false);
ability.addManaCost(new ManaCostsImpl("{1}{G}"));
this.addAbility(ability);
// Multikicker (You may pay an additional any number of times as you cast this spell.)
this.addAbility(new MultikickerAbility(new ManaCostsImpl("{1}{G}")));
// Gnarlid Pack enters the battlefield with a +1/+1 counter on it for each time it was kicked.
this.addAbility(new EntersBattlefieldAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance(0), new MultikickerCount(), true),
"with a +1/+1 counter on it for each time it was kicked"));
}
public GnarlidPack(final GnarlidPack card) {

View file

@ -33,14 +33,14 @@ import mage.Constants.CardType;
import mage.Constants.Rarity;
import mage.Constants.TargetController;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EmptyEffect;
import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.CountersCount;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.dynamicvalue.common.MultikickerCount;
import mage.abilities.effects.common.continious.BoostAllEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.MultikickerAbility;
import mage.cards.CardImpl;
import mage.counters.CounterType;
@ -48,8 +48,6 @@ import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.SubtypePredicate;
import mage.filter.predicate.permanent.AnotherPredicate;
import mage.filter.predicate.permanent.ControllerPredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
/**
*
@ -78,12 +76,13 @@ public class JoragaWarcaller extends CardImpl<JoragaWarcaller> {
this.toughness = new MageInt(1);
// Multikicker {1}{G}
MultikickerAbility ability = new MultikickerAbility(new EmptyEffect(""), false);
ability.addManaCost(new ManaCostsImpl("{1}{G}"));
this.addAbility(ability);
this.addAbility(new MultikickerAbility(new ManaCostsImpl("{1}{G}")));
// Joraga Warcaller enters the battlefield with a +1/+1 counter on it for each time it was kicked.
this.addAbility(new EntersBattlefieldAbility(new JoragaWarcallerEffect()));
this.addAbility(new EntersBattlefieldAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance(0), new MultikickerCount(), true),
"with a +1/+1 counter on it for each time it was kicked"));
// Other Elf creatures you control get +1/+1 for each +1/+1 counter on Joraga Warcaller.
this.addAbility(new SimpleStaticAbility(Constants.Zone.BATTLEFIELD, new BoostAllEffect(new CountersCount(CounterType.P1P1), new CountersCount(CounterType.P1P1), Constants.Duration.WhileOnBattlefield, filter, true, rule)));
@ -99,37 +98,3 @@ public class JoragaWarcaller extends CardImpl<JoragaWarcaller> {
return new JoragaWarcaller(this);
}
}
class JoragaWarcallerEffect extends OneShotEffect<JoragaWarcallerEffect> {
public JoragaWarcallerEffect() {
super(Constants.Outcome.Benefit);
staticText = "with a +1/+1 counter on it for each time it was kicked";
}
public JoragaWarcallerEffect(final JoragaWarcallerEffect effect) {
super(effect);
}
@Override
public boolean apply(Game game, Ability source) {
Permanent permanent = game.getPermanent(source.getSourceId());
if (permanent != null) {
for (Ability ability : permanent.getAbilities()) {
if (ability instanceof MultikickerAbility) {
int count = ((MultikickerAbility)ability).getActivateCount();
if (count > 0) {
permanent.addCounters(CounterType.P1P1.createInstance(count), game);
}
}
}
}
return true;
}
@Override
public JoragaWarcallerEffect copy() {
return new JoragaWarcallerEffect(this);
}
}

View file

@ -31,7 +31,9 @@ import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Rarity;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.MultikickerCount;
import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.MultikickerAbility;
@ -52,10 +54,14 @@ public class LightkeeperOfEmeria extends CardImpl<LightkeeperOfEmeria> {
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(new ManaCostsImpl("{W}")));
// Flying
this.addAbility(FlyingAbility.getInstance());
MultikickerAbility ability = new MultikickerAbility(new GainLifeEffect(2), false);
ability.addManaCost(new ManaCostsImpl("{W}"));
this.addAbility(ability);
// When Lightkeeper of Emeria enters the battlefield, you gain 2 life for each time it was kicked.
this.addAbility(new EntersBattlefieldTriggeredAbility(new GainLifeEffect(new MultikickerCount())));
}
public LightkeeperOfEmeria(final LightkeeperOfEmeria card) {

View file

@ -31,7 +31,9 @@ import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Rarity;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.MultikickerCount;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.MultikickerAbility;
import mage.abilities.keyword.SwampwalkAbility;
@ -54,10 +56,16 @@ public class QuagVampires extends CardImpl<QuagVampires> {
this.power = new MageInt(1);
this.toughness = new MageInt(1);
// Multikicker (You may pay an additional {1}{B} any number of times as you cast this spell.)
this.addAbility(new MultikickerAbility(new ManaCostsImpl("{1}{B}")));
// Swampwalk
this.addAbility(new SwampwalkAbility());
MultikickerAbility ability = new MultikickerAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(1)), false);
ability.addManaCost(new ManaCostsImpl("{1}{B}"));
this.addAbility(ability);
// Quag Vampires enters the battlefield with a +1/+1 counter on it for each time it was kicked.
this.addAbility(new EntersBattlefieldAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance(0), new MultikickerCount(), true),
"with a +1/+1 counter on it for each time it was kicked"));
}
public QuagVampires(final QuagVampires card) {

View file

@ -1,4 +1,4 @@
/*
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
@ -31,7 +31,10 @@ import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Rarity;
import mage.MageInt;
import mage.abilities.common.EmptyEffect;
import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.MultikickerCount;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.HasteAbility;
import mage.abilities.keyword.MultikickerAbility;
@ -53,10 +56,17 @@ public class SkitterOfLizards extends CardImpl<SkitterOfLizards> {
this.power = new MageInt(1);
this.toughness = new MageInt(1);
// Multikicker (You may pay an additional {1}{R} any number of times as you cast this spell.)
this.addAbility(new MultikickerAbility(new ManaCostsImpl("{1}{R}")));
// Haste
this.addAbility(HasteAbility.getInstance());
MultikickerAbility ability = new MultikickerAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(1)), false);
ability.addManaCost(new ManaCostsImpl("{1}{R}"));
this.addAbility(ability);
// Skitter of Lizards enters the battlefield with a +1/+1 counter on it for each time it was kicked.
this.addAbility(new EntersBattlefieldAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance(0), new MultikickerCount(), true),
"with a +1/+1 counter on it for each time it was kicked"));
}
public SkitterOfLizards(final SkitterOfLizards card) {

View file

@ -27,12 +27,9 @@
*/
package mage.sets.worldwake;
import mage.Constants;
import mage.Constants.CardType;
import mage.Constants.Rarity;
import mage.abilities.Ability;
import mage.abilities.common.EmptyEffect;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl;
@ -43,6 +40,9 @@ import mage.game.permanent.Permanent;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
import mage.Constants.Outcome;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.keyword.MultikickerAbility;
/**
* @author noxx
@ -55,12 +55,9 @@ public class StrengthOfTheTajuru extends CardImpl<StrengthOfTheTajuru> {
this.color.setGreen(true);
// Multikicker {1}
//MultikickerAbility ability = new MultikickerAbility(new EmptyEffect(""), false);
//ability.addManaCost(new GenericManaCost(1));
//this.addAbility(ability);
this.addAbility(new SimpleStaticAbility(Constants.Zone.ALL, new EmptyEffect("Multikicker {1}")));
// Multikicker (You may pay an additional {1} any number of times as you cast this spell.)
this.addAbility(new MultikickerAbility(new ManaCostsImpl("{1}")));
// Choose target creature, then choose another target creature for each time Strength of the Tajuru was kicked. Put X +1/+1 counters on each of them.
this.getSpellAbility().addEffect(new StrengthOfTheTajuruAddCountersTargetEffect());
@ -88,7 +85,7 @@ public class StrengthOfTheTajuru extends CardImpl<StrengthOfTheTajuru> {
class StrengthOfTheTajuruAddCountersTargetEffect extends OneShotEffect<StrengthOfTheTajuruAddCountersTargetEffect> {
public StrengthOfTheTajuruAddCountersTargetEffect() {
super(Constants.Outcome.BoostCreature);
super(Outcome.BoostCreature);
staticText = "Choose target creature, then choose another target creature for each time Strength of the Tajuru was kicked. Put X +1/+1 counters on each of them.";
}

View file

@ -33,7 +33,10 @@ import mage.Constants.CardType;
import mage.Constants.ColoredManaSymbol;
import mage.Constants.Rarity;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.costs.mana.ColoredManaCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.MultikickerCount;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.keyword.MultikickerAbility;
import mage.cards.CardImpl;
@ -53,9 +56,11 @@ public class WolfbriarElemental extends CardImpl<WolfbriarElemental> {
this.power = new MageInt(4);
this.toughness = new MageInt(4);
MultikickerAbility ability = new MultikickerAbility(new CreateTokenEffect(new WolfToken()), false);
ability.addManaCost(new ColoredManaCost(ColoredManaSymbol.G));
this.addAbility(ability);
// Multikicker (You may pay an additional {G} any number of times as you cast this spell.)
this.addAbility(new MultikickerAbility(new ManaCostsImpl("{G}")));
// When Wolfbriar Elemental enters the battlefield, put a 2/2 green Wolf creature token onto the battlefield for each time it was kicked.
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new WolfToken(), new MultikickerCount())));
}
public WolfbriarElemental(final WolfbriarElemental card) {

View file

@ -48,7 +48,7 @@ import java.util.UUID;
*/
public class AetherFigment extends CardImpl<AetherFigment> {
private final static String staticText = "If AEther Figment was kicked, it enters the battlefield with two +1/+1 counters on it";
private final static String staticText = "with two +1/+1 counters on it, if it was kicked";
public AetherFigment(UUID ownerId) {
super(ownerId, 40, "AEther Figment", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{1}{U}");

View file

@ -27,12 +27,13 @@
*/
package mage.sets.zendikar;
import mage.Constants;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Duration;
import mage.Constants.Rarity;
import mage.abilities.Ability;
import mage.abilities.condition.common.KickedCondition;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.costs.mana.KickerManaCost;
import mage.abilities.decorator.ConditionalContinousEffect;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.effects.ContinuousEffect;
@ -43,7 +44,6 @@ import mage.cards.CardImpl;
import mage.filter.common.FilterCreaturePermanent;
import mage.game.Game;
import java.util.UUID;
/**
* @author nantuko, Loki
@ -58,11 +58,11 @@ public class BoldDefense extends CardImpl<BoldDefense> {
this.color.setWhite(true);
DynamicValue dn = new BoldDefensePTCount();
this.getSpellAbility().addEffect(new BoostControlledEffect(dn, dn, Constants.Duration.EndOfTurn));
this.getSpellAbility().addEffect(new BoostControlledEffect(dn, dn, Duration.EndOfTurn));
this.getSpellAbility().addOptionalCost(new ManaCostsImpl("{3}{W}"));
this.getSpellAbility().addOptionalCost(new KickerManaCost("{3}{W}"));
ContinuousEffect effect = new GainAbilityControlledEffect(FirstStrikeAbility.getInstance(), Constants.Duration.EndOfTurn, new FilterCreaturePermanent(), false);
ContinuousEffect effect = new GainAbilityControlledEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn, new FilterCreaturePermanent(), false);
this.getSpellAbility().addEffect(new ConditionalContinousEffect(effect, KickedCondition.getInstance(), staticText));
}
@ -90,13 +90,19 @@ class BoldDefensePTCount implements DynamicValue {
}
}
@Override
public DynamicValue clone() {
return new BoldDefensePTCount();
}
@Override
public String toString() {
return "1";
}
@Override
public String getMessage() {
return "";
return "1";
}
}

View file

@ -71,7 +71,7 @@ public class GatekeeperOfMalakir extends CardImpl<GatekeeperOfMalakir> {
EntersBattlefieldTriggeredAbility ability =
new EntersBattlefieldTriggeredAbility(new SacrificeEffect(filter, 1, "target player"));
Ability conditionalAbility = new ConditionalTriggeredAbility(ability, KickedCondition.getInstance(), "When {this} enters the battlefield, if it was kicked, target player sacrifices a creature");
Ability conditionalAbility = new ConditionalTriggeredAbility(ability, KickedCondition.getInstance(), "When {this} enters the battlefield, if it was kicked, target player sacrifices a creature.");
conditionalAbility.addTarget(new TargetPlayer());
this.addAbility(conditionalAbility);
}

View file

@ -32,11 +32,13 @@ import mage.Constants.CardType;
import mage.Constants.Duration;
import mage.Constants.Rarity;
import mage.MageInt;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.common.KickedCondition;
import mage.abilities.costs.mana.KickerManaCost;
import mage.abilities.decorator.ConditionalTriggeredAbility;
import mage.abilities.effects.common.continious.BoostControlledEffect;
import mage.abilities.effects.common.continious.GainAbilityControlledEffect;
import mage.abilities.keyword.HasteAbility;
import mage.abilities.keyword.KickerAbility;
import mage.cards.CardImpl;
/**
@ -55,10 +57,13 @@ public class GoblinBushwhacker extends CardImpl<GoblinBushwhacker> {
this.power = new MageInt(1);
this.toughness = new MageInt(1);
KickerAbility ability = new KickerAbility(new BoostControlledEffect(1, 0, Duration.EndOfTurn), false);
// Kicker {R} (You may pay an additional {R} as you cast this spell.)
this.getSpellAbility().addOptionalCost(new KickerManaCost("{R}"));
// When Goblin Bushwhacker enters the battlefield, if it was kicked, creatures you control get +1/+0 and gain haste until end of turn.
EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new BoostControlledEffect(1, 0, Duration.EndOfTurn), false);
ability.addEffect(new GainAbilityControlledEffect(HasteAbility.getInstance(), Duration.EndOfTurn));
ability.addCost(new ManaCostsImpl("{R}"));
this.addAbility(ability);
this.addAbility(new ConditionalTriggeredAbility(ability, KickedCondition.getInstance(), "When {this} enters the battlefield, if it was kicked, creatures you control get +1/+0 and gain haste until end of turn."));
}
public GoblinBushwhacker(final GoblinBushwhacker card) {

View file

@ -28,20 +28,16 @@
package mage.sets.zendikar;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.ColoredManaSymbol;
import mage.Constants.Duration;
import mage.Constants.Rarity;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.costs.mana.ColoredManaCost;
import mage.abilities.condition.common.KickedCondition;
import mage.abilities.costs.mana.KickerManaCost;
import mage.abilities.decorator.ConditionalTriggeredAbility;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.abilities.effects.common.continious.GainAbilitySourceEffect;
import mage.abilities.keyword.HasteAbility;
import mage.abilities.keyword.KickerAbility;
import mage.cards.CardImpl;
import mage.target.common.TargetNonBasicLandPermanent;
@ -59,13 +55,17 @@ public class GoblinRuinblaster extends CardImpl<GoblinRuinblaster> {
this.subtype.add("Shaman");
this.power = new MageInt(2);
this.toughness = new MageInt(1);
this.addAbility(HasteAbility.getInstance());
Ability ability1 = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect());
ability1.addTarget(new TargetNonBasicLandPermanent());
KickerAbility ability2 = new KickerAbility(new GainAbilitySourceEffect(ability1, Duration.WhileOnBattlefield), false);
ability2.addManaCost(new ColoredManaCost(ColoredManaSymbol.R));
this.addAbility(ability2);
// Kicker {R} (You may pay an additional {R} as you cast this spell.)
this.getSpellAbility().addOptionalCost(new KickerManaCost("{R}"));
// Haste
this.addAbility(HasteAbility.getInstance());
// When Goblin Ruinblaster enters the battlefield, if it was kicked, destroy target nonbasic land.
EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), false);
ability.addTarget(new TargetNonBasicLandPermanent());
this.addAbility(new ConditionalTriggeredAbility(ability, KickedCondition.getInstance(), "When {this} enters the battlefield, if it was kicked, destroy target nonbasic land."));
}
public GoblinRuinblaster(final GoblinRuinblaster card) {

View file

@ -31,10 +31,12 @@ import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Rarity;
import mage.MageInt;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.common.KickedCondition;
import mage.abilities.costs.mana.KickerManaCost;
import mage.abilities.decorator.ConditionalTriggeredAbility;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.KickerAbility;
import mage.cards.CardImpl;
import mage.target.common.TargetCreaturePermanent;
@ -53,11 +55,16 @@ public class HeartstabberMosquito extends CardImpl<HeartstabberMosquito> {
this.power = new MageInt(2);
this.toughness = new MageInt(2);
// Kicker {2}{B} (You may pay an additional {2}{B} as you cast this spell.)
this.getSpellAbility().addOptionalCost(new KickerManaCost("{2}{B}"));
// Flying
this.addAbility(FlyingAbility.getInstance());
KickerAbility ability = new KickerAbility(new DestroyTargetEffect(), false);
ability.addManaCost(new ManaCostsImpl("{2}{B}"));
// When Heartstabber Mosquito enters the battlefield, if it was kicked, destroy target creature.
EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), false);
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
this.addAbility(new ConditionalTriggeredAbility(ability, KickedCondition.getInstance(), "When {this} enters the battlefield, if it was kicked, destroy target creature."));
}
public HeartstabberMosquito(final HeartstabberMosquito card) {

View file

@ -31,10 +31,11 @@ package mage.sets.zendikar;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Rarity;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.condition.common.KickedCondition;
import mage.abilities.costs.mana.KickerManaCost;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.effects.common.DrawCardControllerEffect;
import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.abilities.keyword.KickerAbility;
import mage.cards.CardImpl;
import mage.target.common.TargetNonlandPermanent;
@ -48,11 +49,17 @@ public class IntoTheRoil extends CardImpl<IntoTheRoil> {
super(ownerId, 48, "Into the Roil", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{1}{U}");
this.expansionSetCode = "ZEN";
this.color.setBlue(true);
this.getSpellAbility().addTarget(new TargetNonlandPermanent());
// Kicker {1}{U} (You may pay an additional {1}{U} as you cast this spell.)
this.getSpellAbility().addOptionalCost(new KickerManaCost("{1}{U}"));
// Return target nonland permanent to its owner's hand. If Into the Roil was kicked, draw a card.
this.getSpellAbility().addEffect(new ReturnToHandTargetEffect());
KickerAbility ability = new KickerAbility(new DrawCardControllerEffect(1), false);
ability.addManaCost(new ManaCostsImpl("{1}{U}"));
this.addAbility(ability);
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new DrawCardControllerEffect(1),
KickedCondition.getInstance(),
"If {this} was kicked, draw a card"));
this.getSpellAbility().addTarget(new TargetNonlandPermanent());
}
public IntoTheRoil(final IntoTheRoil card) {

View file

@ -62,7 +62,7 @@ public class KorAeronaut extends CardImpl<KorAeronaut> {
EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn), false);
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(new ConditionalTriggeredAbility(ability, KickedCondition.getInstance(), "When {this} enters the battlefield, if it was kicked, target creature gains flying until end of turn"));
this.addAbility(new ConditionalTriggeredAbility(ability, KickedCondition.getInstance(), "When {this} enters the battlefield, if it was kicked, target creature gains flying until end of turn."));
}
public KorAeronaut(final KorAeronaut card) {

View file

@ -29,7 +29,6 @@
package mage.sets.zendikar;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Rarity;
import mage.MageInt;
@ -65,11 +64,14 @@ public class KorSanctifiers extends CardImpl<KorSanctifiers> {
this.color.setWhite(true);
this.power = new MageInt(2);
this.toughness = new MageInt(3);
// Kicker {W} (You may pay an additional {W} as you cast this spell.)
this.getSpellAbility().addOptionalCost(new KickerManaCost("{W}"));
// When Kor Sanctifiers enters the battlefield, if it was kicked, destroy target artifact or enchantment.
EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), false);
ability.addTarget(new TargetPermanent(filter));
this.addAbility(new ConditionalTriggeredAbility(ability, KickedCondition.getInstance(), "When {this} enters the battlefield, if it was kicked, destroy target artifact or enchantment"));
this.addAbility(new ConditionalTriggeredAbility(ability, KickedCondition.getInstance(), "When {this} enters the battlefield, if it was kicked, destroy target artifact or enchantment."));
}
public KorSanctifiers (final KorSanctifiers card) {

View file

@ -48,7 +48,7 @@ import java.util.UUID;
*/
public class MarshCasualties extends CardImpl<MarshCasualties> {
private static final String ruleText = "Creatures target player controls get -1/-1 until end of turn. If {this} was kicked, those creatures get -2/-2 until end of turn instead.";
private static final String ruleText = "Creatures target player controls get -1/-1 until end of turn. If {this} was kicked, those creatures get -2/-2 until end of turn instead";
public MarshCasualties(UUID ownerId) {
super(ownerId, 101, "Marsh Casualties", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{B}{B}");

View file

@ -31,9 +31,11 @@ import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Rarity;
import mage.MageInt;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.common.KickedCondition;
import mage.abilities.costs.mana.KickerManaCost;
import mage.abilities.decorator.ConditionalTriggeredAbility;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.abilities.keyword.KickerAbility;
import mage.cards.CardImpl;
import mage.filter.FilterPermanent;
import mage.filter.predicate.Predicates;
@ -62,10 +64,13 @@ public class MoldShambler extends CardImpl<MoldShambler> {
this.power = new MageInt(3);
this.toughness = new MageInt(3);
KickerAbility ability = new KickerAbility(new DestroyTargetEffect(), false);
ability.addManaCost(new ManaCostsImpl("{1}{G}"));
// Kicker {1}{G} (You may pay an additional {1}{G} as you cast this spell.)
this.getSpellAbility().addOptionalCost(new KickerManaCost("{1}{G}"));
// When Mold Shambler enters the battlefield, if it was kicked, destroy target noncreature permanent.
EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), false);
ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability);
this.addAbility(new ConditionalTriggeredAbility(ability, KickedCondition.getInstance(), "When {this} enters the battlefield, if it was kicked, destroy target noncreature permanent."));
}
public MoldShambler(final MoldShambler card) {

View file

@ -29,16 +29,14 @@ package mage.sets.zendikar;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Duration;
import mage.Constants.Rarity;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.condition.common.KickedCondition;
import mage.abilities.costs.mana.KickerManaCost;
import mage.abilities.decorator.ConditionalTriggeredAbility;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.abilities.effects.common.continious.GainAbilitySourceEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.KickerAbility;
import mage.abilities.keyword.ReachAbility;
import mage.cards.CardImpl;
import mage.filter.common.FilterCreaturePermanent;
@ -66,14 +64,16 @@ public class OranRiefRecluse extends CardImpl<OranRiefRecluse> {
this.power = new MageInt(1);
this.toughness = new MageInt(3);
// Kicker {2}{G} (You may pay an additional {2}{G} as you cast this spell.)
this.getSpellAbility().addOptionalCost(new KickerManaCost("{2}{G}"));
// Reach (This creature can block creatures with flying.)
this.addAbility(ReachAbility.getInstance());
Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect());
// When Oran-Rief Recluse enters the battlefield, if it was kicked, destroy target creature with flying.
EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), false);
ability.addTarget(new TargetCreaturePermanent(filter));
KickerAbility kickerAbility = new KickerAbility(new GainAbilitySourceEffect(ability, Duration.WhileOnBattlefield), false);
kickerAbility.addManaCost(new ManaCostsImpl("{2}{G}"));
this.addAbility(kickerAbility);
this.addAbility(new ConditionalTriggeredAbility(ability, KickedCondition.getInstance(), "When {this} enters the battlefield, if it was kicked, destroy target creature with flying."));
}
public OranRiefRecluse(final OranRiefRecluse card) {

View file

@ -31,10 +31,12 @@ import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Rarity;
import mage.MageInt;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.common.KickedCondition;
import mage.abilities.costs.mana.KickerManaCost;
import mage.abilities.decorator.ConditionalTriggeredAbility;
import mage.abilities.effects.common.TapTargetEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.KickerAbility;
import mage.cards.CardImpl;
import mage.filter.FilterPermanent;
import mage.target.TargetPermanent;
@ -54,13 +56,16 @@ public class TempestOwl extends CardImpl<TempestOwl> {
this.power = new MageInt(1);
this.toughness = new MageInt(2);
// Flying
this.addAbility(FlyingAbility.getInstance());
// Kicker {4}{U}
this.getSpellAbility().addOptionalCost(new KickerManaCost("{4}{U}"));
// When Tempest Owl enters the battlefield, if it was kicked, tap up to three target permanents.
KickerAbility kickerAbility = new KickerAbility(new TapTargetEffect(), false);
kickerAbility.addTarget(new TargetPermanent(0, 3, new FilterPermanent(), false));
kickerAbility.addManaCost(new ManaCostsImpl("{4}{U}"));
this.addAbility(kickerAbility);
EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new TapTargetEffect(), false);
ability.addTarget(new TargetPermanent(0, 3, new FilterPermanent(), false));
this.addAbility(new ConditionalTriggeredAbility(ability, KickedCondition.getInstance(), "When {this} enters the battlefield, if it was kicked, tap up to three target permanents."));
}
public TempestOwl(final TempestOwl card) {

View file

@ -29,15 +29,13 @@ package mage.sets.zendikar;
import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Duration;
import mage.Constants.Rarity;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.condition.common.KickedCondition;
import mage.abilities.costs.mana.KickerManaCost;
import mage.abilities.decorator.ConditionalTriggeredAbility;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.continious.GainAbilitySourceEffect;
import mage.abilities.keyword.KickerAbility;
import mage.cards.CardImpl;
import mage.target.common.TargetCreaturePermanent;
@ -57,12 +55,13 @@ public class TorchSlinger extends CardImpl<TorchSlinger> {
this.power = new MageInt(2);
this.toughness = new MageInt(2);
Ability ability = new EntersBattlefieldTriggeredAbility(new DamageTargetEffect(2));
ability.addTarget(new TargetCreaturePermanent());
// Kicker {1}{R} (You may pay an additional {1}{R} as you cast this spell.)
this.getSpellAbility().addOptionalCost(new KickerManaCost("{1}{R}"));
KickerAbility kickerAbility = new KickerAbility(new GainAbilitySourceEffect(ability, Duration.WhileOnBattlefield), false);
kickerAbility.addManaCost(new ManaCostsImpl("{1}{R}"));
this.addAbility(kickerAbility);
// When Torch Slinger enters the battlefield, if it was kicked, it deals 2 damage to target creature.
EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new DamageTargetEffect(2), false);
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(new ConditionalTriggeredAbility(ability, KickedCondition.getInstance(), "When {this} enters the battlefield, if it was kicked, it deals 2 damage to target creature."));
}
public TorchSlinger(final TorchSlinger card) {

View file

@ -31,10 +31,12 @@ import java.util.UUID;
import mage.Constants.CardType;
import mage.Constants.Duration;
import mage.Constants.Rarity;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.condition.common.KickedCondition;
import mage.abilities.costs.mana.KickerManaCost;
import mage.abilities.decorator.ConditionalContinousEffect;
import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.common.continious.BoostTargetEffect;
import mage.abilities.effects.common.continious.GainAbilityTargetEffect;
import mage.abilities.keyword.KickerAbility;
import mage.abilities.keyword.LifelinkAbility;
import mage.cards.CardImpl;
import mage.target.common.TargetCreaturePermanent;
@ -51,13 +53,14 @@ public class VampiresBite extends CardImpl<VampiresBite> {
this.color.setBlack(true);
TargetCreaturePermanent target = new TargetCreaturePermanent();
this.getSpellAbility().addTarget(target);
// Kicker {2}{B} (You may pay an additional {2}{B} as you cast this spell.)
this.getSpellAbility().addOptionalCost(new KickerManaCost("{2}{B}"));
// Target creature gets +3/+0 until end of turn. If Vampire's Bite was kicked, that creature gains lifelink until end of turn.
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
this.getSpellAbility().addEffect(new BoostTargetEffect(3, 0, Duration.EndOfTurn));
KickerAbility ability = new KickerAbility(new GainAbilityTargetEffect(LifelinkAbility.getInstance(), Duration.EndOfTurn), false);
ability.addTarget(target);
ability.addManaCost(new ManaCostsImpl("{2}{B}"));
this.addAbility(ability);
ContinuousEffect effect = new GainAbilityTargetEffect(LifelinkAbility.getInstance(), Duration.EndOfTurn);
this.getSpellAbility().addEffect(new ConditionalContinousEffect(effect, KickedCondition.getInstance(), "If {this} was kicked, that creature gains lifelink until end of turn"));
}
public VampiresBite(final VampiresBite card) {

View file

@ -47,7 +47,7 @@ import mage.target.common.TargetCreaturePermanent;
*/
public class VinesOfVastwood extends CardImpl<VinesOfVastwood> {
private static final String staticText = "If Vines of Vastwood was kicked, that creature gets +4/+4 until end of turn.";
private static final String staticText = "If Vines of Vastwood was kicked, that creature gets +4/+4 until end of turn";
public VinesOfVastwood(UUID ownerId) {
super(ownerId, 193, "Vines of Vastwood", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{G}");