mirror of
https://github.com/correl/mage.git
synced 2024-11-25 03:00:11 +00:00
[KLD] various text fixes
This commit is contained in:
parent
83713f36d0
commit
cc8ddbfd7c
40 changed files with 249 additions and 230 deletions
|
@ -22,10 +22,10 @@ public final class AcrobaticManeuver extends CardImpl {
|
||||||
// Exile target creature you control, then return that card to the battlefield under its owner's control.
|
// Exile target creature you control, then return that card to the battlefield under its owner's control.
|
||||||
this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent());
|
this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent());
|
||||||
this.getSpellAbility().addEffect(new ExileTargetForSourceEffect());
|
this.getSpellAbility().addEffect(new ExileTargetForSourceEffect());
|
||||||
this.getSpellAbility().addEffect(new ReturnToBattlefieldUnderOwnerControlTargetEffect(false, false));
|
this.getSpellAbility().addEffect(new ReturnToBattlefieldUnderOwnerControlTargetEffect(false, false).concatBy(","));
|
||||||
|
|
||||||
// Draw a card.
|
// Draw a card.
|
||||||
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
|
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("<br>"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private AcrobaticManeuver(final AcrobaticManeuver card) {
|
private AcrobaticManeuver(final AcrobaticManeuver card) {
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.a;
|
package mage.cards.a;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.common.SpellCastControllerTriggeredAbility;
|
import mage.abilities.common.SpellCastControllerTriggeredAbility;
|
||||||
|
@ -10,31 +8,30 @@ import mage.abilities.dynamicvalue.DynamicValue;
|
||||||
import mage.abilities.effects.Effect;
|
import mage.abilities.effects.Effect;
|
||||||
import mage.abilities.effects.common.DamageTargetEffect;
|
import mage.abilities.effects.common.DamageTargetEffect;
|
||||||
import mage.abilities.effects.common.GainLifeEffect;
|
import mage.abilities.effects.common.GainLifeEffect;
|
||||||
import mage.abilities.hint.ValueHint;
|
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.target.common.TargetAnyTarget;
|
import mage.target.common.TargetAnyTarget;
|
||||||
import mage.watchers.common.CastSpellLastTurnWatcher;
|
import mage.watchers.common.CastSpellLastTurnWatcher;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author emerald000
|
* @author emerald000
|
||||||
*/
|
*/
|
||||||
public final class AetherfluxReservoir extends CardImpl {
|
public final class AetherfluxReservoir extends CardImpl {
|
||||||
|
|
||||||
public AetherfluxReservoir(UUID ownerId, CardSetInfo setInfo) {
|
public AetherfluxReservoir(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}");
|
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{4}");
|
||||||
|
|
||||||
// Whenever you cast a spell, you gain 1 life for each spell you've cast this turn.
|
// Whenever you cast a spell, you gain 1 life for each spell you've cast this turn.
|
||||||
Ability abilityGainLife = new SpellCastControllerTriggeredAbility(new GainLifeEffect(new AetherfluxReservoirDynamicValue()), false);
|
this.addAbility(new SpellCastControllerTriggeredAbility(new GainLifeEffect(
|
||||||
abilityGainLife.addHint(new ValueHint("You've cast spells this turn", new AetherfluxReservoirDynamicValue()));
|
AetherfluxReservoirDynamicValue.instance, "you gain 1 life for each spell you've cast this turn"
|
||||||
this.addAbility(abilityGainLife);
|
), false));
|
||||||
|
|
||||||
// Pay 50 life: Aetherflux Reservoir deals 50 damage to any target.
|
// Pay 50 life: Aetherflux Reservoir deals 50 damage to any target.
|
||||||
Ability abilityPayLife = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(50), new PayLifeCost(50));
|
Ability abilityPayLife = new SimpleActivatedAbility(new DamageTargetEffect(50), new PayLifeCost(50));
|
||||||
abilityPayLife.addTarget(new TargetAnyTarget());
|
abilityPayLife.addTarget(new TargetAnyTarget());
|
||||||
this.addAbility(abilityPayLife);
|
this.addAbility(abilityPayLife);
|
||||||
}
|
}
|
||||||
|
@ -49,20 +46,20 @@ public final class AetherfluxReservoir extends CardImpl {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class AetherfluxReservoirDynamicValue implements DynamicValue {
|
enum AetherfluxReservoirDynamicValue implements DynamicValue {
|
||||||
|
instance;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int calculate(Game game, Ability sourceAbility, Effect effect) {
|
public int calculate(Game game, Ability sourceAbility, Effect effect) {
|
||||||
CastSpellLastTurnWatcher watcher = game.getState().getWatcher(CastSpellLastTurnWatcher.class);
|
return game
|
||||||
if(watcher != null) {
|
.getState()
|
||||||
return watcher.getAmountOfSpellsPlayerCastOnCurrentTurn(sourceAbility.getControllerId());
|
.getWatcher(CastSpellLastTurnWatcher.class)
|
||||||
}
|
.getAmountOfSpellsPlayerCastOnCurrentTurn(sourceAbility.getControllerId());
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AetherfluxReservoirDynamicValue copy() {
|
public AetherfluxReservoirDynamicValue copy() {
|
||||||
return new AetherfluxReservoirDynamicValue();
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -74,5 +71,4 @@ class AetherfluxReservoirDynamicValue implements DynamicValue {
|
||||||
public String getMessage() {
|
public String getMessage() {
|
||||||
return "spell you've cast this turn";
|
return "spell you've cast this turn";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -28,7 +28,7 @@ public final class BuiltToLast extends CardImpl {
|
||||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||||
this.getSpellAbility().addEffect(new ConditionalContinuousEffect(
|
this.getSpellAbility().addEffect(new ConditionalContinuousEffect(
|
||||||
new GainAbilityTargetEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn), new LockedInCondition(new TargetHasCardTypeCondition(CardType.ARTIFACT)),
|
new GainAbilityTargetEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn), new LockedInCondition(new TargetHasCardTypeCondition(CardType.ARTIFACT)),
|
||||||
"If its an artifact creature, it gains indestructible until end of turn"));
|
"If it's an artifact creature, it gains indestructible until end of turn"));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ public final class BuiltToSmash extends CardImpl {
|
||||||
this.getSpellAbility().addTarget(new TargetAttackingCreature());
|
this.getSpellAbility().addTarget(new TargetAttackingCreature());
|
||||||
this.getSpellAbility().addEffect(new ConditionalContinuousEffect(
|
this.getSpellAbility().addEffect(new ConditionalContinuousEffect(
|
||||||
new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn), new LockedInCondition(new TargetHasCardTypeCondition(CardType.ARTIFACT)),
|
new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn), new LockedInCondition(new TargetHasCardTypeCondition(CardType.ARTIFACT)),
|
||||||
"If its an artifact creature, it gains trample until end of turn"));
|
"If it's an artifact creature, it gains trample until end of turn"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private BuiltToSmash(final BuiltToSmash card) {
|
private BuiltToSmash(final BuiltToSmash card) {
|
||||||
|
|
|
@ -1,26 +1,25 @@
|
||||||
|
|
||||||
package mage.cards.c;
|
package mage.cards.c;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||||
import mage.abilities.effects.keyword.ScryEffect;
|
import mage.abilities.effects.keyword.ScryEffect;
|
||||||
import mage.abilities.keyword.LifelinkAbility;
|
import mage.abilities.keyword.LifelinkAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterControlledArtifactPermanent;
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class ContrabandKingpin extends CardImpl {
|
public final class ContrabandKingpin extends CardImpl {
|
||||||
|
|
||||||
public ContrabandKingpin(UUID ownerId, CardSetInfo setInfo) {
|
public ContrabandKingpin(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}{B}");
|
||||||
this.subtype.add(SubType.AETHERBORN);
|
this.subtype.add(SubType.AETHERBORN);
|
||||||
this.subtype.add(SubType.ROGUE);
|
this.subtype.add(SubType.ROGUE);
|
||||||
this.power = new MageInt(1);
|
this.power = new MageInt(1);
|
||||||
|
@ -30,7 +29,10 @@ public final class ContrabandKingpin extends CardImpl {
|
||||||
this.addAbility(LifelinkAbility.getInstance());
|
this.addAbility(LifelinkAbility.getInstance());
|
||||||
|
|
||||||
// Whenever an artifact enters the battlefield under your control, scry 1.
|
// Whenever an artifact enters the battlefield under your control, scry 1.
|
||||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new ScryEffect(1, false), new FilterControlledArtifactPermanent(), false, null, true));
|
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||||
|
new ScryEffect(1, false),
|
||||||
|
StaticFilters.FILTER_PERMANENT_ARTIFACT_AN
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
private ContrabandKingpin(final ContrabandKingpin card) {
|
private ContrabandKingpin(final ContrabandKingpin card) {
|
||||||
|
|
|
@ -1,14 +1,11 @@
|
||||||
|
|
||||||
package mage.cards.d;
|
package mage.cards.d;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
import mage.abilities.effects.Effect;
|
|
||||||
import mage.abilities.effects.common.DoIfCostPaid;
|
import mage.abilities.effects.common.DoIfCostPaid;
|
||||||
import mage.abilities.effects.common.counter.AddCountersAllEffect;
|
import mage.abilities.effects.common.counter.AddCountersAllEffect;
|
||||||
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
|
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
|
||||||
|
@ -18,27 +15,33 @@ import mage.constants.CardType;
|
||||||
import mage.constants.SetTargetPointer;
|
import mage.constants.SetTargetPointer;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
import mage.filter.StaticFilters;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author spjspj
|
* @author spjspj
|
||||||
*/
|
*/
|
||||||
public final class DurableHandicraft extends CardImpl {
|
public final class DurableHandicraft extends CardImpl {
|
||||||
|
|
||||||
public DurableHandicraft(UUID ownerId, CardSetInfo setInfo) {
|
public DurableHandicraft(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{G}");
|
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
|
||||||
|
|
||||||
// Whenever a creature enters the battlefield under your control, you may pay {1}. If you do, put a +1/+1 counter on that creature.
|
// Whenever a creature enters the battlefield under your control, you may pay {1}. If you do, put a +1/+1 counter on that creature.
|
||||||
Effect effect = new AddCountersTargetEffect(CounterType.P1P1.createInstance());
|
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||||
effect.setText("put a +1/+1 counter on that creature");
|
Zone.BATTLEFIELD,
|
||||||
DoIfCostPaid doIfCostPaid = new DoIfCostPaid(effect, new GenericManaCost(1));
|
new DoIfCostPaid(
|
||||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, doIfCostPaid, new FilterControlledCreaturePermanent(), false, SetTargetPointer.PERMANENT, null));
|
new AddCountersTargetEffect(CounterType.P1P1.createInstance())
|
||||||
|
.setText("put a +1/+1 counter on that creature"),
|
||||||
|
new GenericManaCost(1)
|
||||||
|
), StaticFilters.FILTER_PERMANENT_A_CREATURE,
|
||||||
|
false, SetTargetPointer.PERMANENT, null
|
||||||
|
));
|
||||||
|
|
||||||
// {5}{G}, Sacrifice Durable Handicraft: Put a +1/+1 counter on each creature you control.
|
// {5}{G}, Sacrifice Durable Handicraft: Put a +1/+1 counter on each creature you control.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
Ability ability = new SimpleActivatedAbility(new AddCountersAllEffect(
|
||||||
new AddCountersAllEffect(CounterType.P1P1.createInstance(), new FilterControlledCreaturePermanent()),
|
CounterType.P1P1.createInstance(), StaticFilters.FILTER_CONTROLLED_CREATURE
|
||||||
new ManaCostsImpl("{5}{G}"));
|
), new ManaCostsImpl<>("{5}{G}"));
|
||||||
ability.addCost(new SacrificeSourceCost());
|
ability.addCost(new SacrificeSourceCost());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
@ -52,4 +55,3 @@ public final class DurableHandicraft extends CardImpl {
|
||||||
return new DurableHandicraft(this);
|
return new DurableHandicraft(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.d;
|
package mage.cards.d;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.common.SpellCastControllerTriggeredAbility;
|
import mage.abilities.common.SpellCastControllerTriggeredAbility;
|
||||||
|
@ -12,24 +10,27 @@ import mage.abilities.effects.common.counter.GetEnergyCountersControllerEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Zone;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterInstantOrSorcerySpell;
|
|
||||||
import mage.target.common.TargetAnyTarget;
|
import mage.target.common.TargetAnyTarget;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author emerald000
|
* @author emerald000
|
||||||
*/
|
*/
|
||||||
public final class DynavoltTower extends CardImpl {
|
public final class DynavoltTower extends CardImpl {
|
||||||
|
|
||||||
public DynavoltTower(UUID ownerId, CardSetInfo setInfo) {
|
public DynavoltTower(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
|
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
|
||||||
|
|
||||||
// Whenever you cast an instant or sorcery spell, you get {E}{E}.
|
// Whenever you cast an instant or sorcery spell, you get {E}{E}.
|
||||||
this.addAbility(new SpellCastControllerTriggeredAbility(new GetEnergyCountersControllerEffect(2), new FilterInstantOrSorcerySpell(), false));
|
this.addAbility(new SpellCastControllerTriggeredAbility(
|
||||||
|
new GetEnergyCountersControllerEffect(2),
|
||||||
|
StaticFilters.FILTER_SPELL_AN_INSTANT_OR_SORCERY, false
|
||||||
|
));
|
||||||
|
|
||||||
// {T}, Pay {E}{E}{E}{E}{E}: Dynavolt Tower deals 3 damage to any target.
|
// {T}, Pay {E}{E}{E}{E}{E}: Dynavolt Tower deals 3 damage to any target.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(3), new TapSourceCost());
|
Ability ability = new SimpleActivatedAbility(new DamageTargetEffect(3), new TapSourceCost());
|
||||||
ability.addCost(new PayEnergyCost(5));
|
ability.addCost(new PayEnergyCost(5));
|
||||||
ability.addTarget(new TargetAnyTarget());
|
ability.addTarget(new TargetAnyTarget());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
@ -1,29 +1,31 @@
|
||||||
|
|
||||||
package mage.cards.e;
|
package mage.cards.e;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.costs.common.PayEnergyCost;
|
import mage.abilities.costs.common.PayEnergyCost;
|
||||||
|
import mage.abilities.dynamicvalue.DynamicValue;
|
||||||
import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount;
|
import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount;
|
||||||
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||||
import mage.abilities.effects.common.counter.GetEnergyCountersControllerEffect;
|
import mage.abilities.effects.common.counter.GetEnergyCountersControllerEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.Zone;
|
import mage.constants.SubType;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author emerald000
|
* @author emerald000
|
||||||
*/
|
*/
|
||||||
public final class ElectrostaticPummeler extends CardImpl {
|
public final class ElectrostaticPummeler extends CardImpl {
|
||||||
|
|
||||||
|
private static final DynamicValue xValue = new SourcePermanentPowerCount(false);
|
||||||
|
|
||||||
public ElectrostaticPummeler(UUID ownerId, CardSetInfo setInfo) {
|
public ElectrostaticPummeler(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{3}");
|
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}");
|
||||||
this.subtype.add(SubType.CONSTRUCT);
|
this.subtype.add(SubType.CONSTRUCT);
|
||||||
this.power = new MageInt(1);
|
this.power = new MageInt(1);
|
||||||
this.toughness = new MageInt(1);
|
this.toughness = new MageInt(1);
|
||||||
|
@ -32,7 +34,9 @@ public final class ElectrostaticPummeler extends CardImpl {
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new GetEnergyCountersControllerEffect(3)));
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new GetEnergyCountersControllerEffect(3)));
|
||||||
|
|
||||||
// Pay {E}{E}{E}: Electrostatic Pummeler gets +X/+X until end of turn, where X is its power.
|
// Pay {E}{E}{E}: Electrostatic Pummeler gets +X/+X until end of turn, where X is its power.
|
||||||
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(new SourcePermanentPowerCount(), new SourcePermanentPowerCount(), Duration.EndOfTurn, true), new PayEnergyCost(3)));
|
this.addAbility(new SimpleActivatedAbility(new BoostSourceEffect(
|
||||||
|
xValue, xValue, Duration.EndOfTurn, true
|
||||||
|
).setText("{this} gets +X/+X until end of turn, where X is its power"), new PayEnergyCost(3)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private ElectrostaticPummeler(final ElectrostaticPummeler card) {
|
private ElectrostaticPummeler(final ElectrostaticPummeler card) {
|
||||||
|
|
|
@ -52,7 +52,7 @@ class EmpyrealVoyagerEffect extends OneShotEffect {
|
||||||
|
|
||||||
public EmpyrealVoyagerEffect() {
|
public EmpyrealVoyagerEffect() {
|
||||||
super(Outcome.Benefit);
|
super(Outcome.Benefit);
|
||||||
this.staticText = "get that many {E} counters";
|
this.staticText = "you get that many {E}";
|
||||||
}
|
}
|
||||||
|
|
||||||
public EmpyrealVoyagerEffect(final EmpyrealVoyagerEffect effect) {
|
public EmpyrealVoyagerEffect(final EmpyrealVoyagerEffect effect) {
|
||||||
|
|
|
@ -1,14 +1,11 @@
|
||||||
|
|
||||||
package mage.cards.e;
|
package mage.cards.e;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.costs.common.PayEnergyCost;
|
import mage.abilities.costs.common.PayEnergyCost;
|
||||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
import mage.abilities.effects.Effect;
|
|
||||||
import mage.abilities.effects.common.DoIfCostPaid;
|
import mage.abilities.effects.common.DoIfCostPaid;
|
||||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||||
import mage.abilities.effects.common.counter.GetEnergyCountersControllerEffect;
|
import mage.abilities.effects.common.counter.GetEnergyCountersControllerEffect;
|
||||||
|
@ -16,17 +13,18 @@ import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
import mage.filter.FilterPermanent;
|
||||||
import mage.filter.common.FilterControlledPermanent;
|
import mage.filter.common.FilterControlledPermanent;
|
||||||
import mage.filter.predicate.Predicates;
|
import mage.filter.predicate.Predicates;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class EraOfInnovation extends CardImpl {
|
public final class EraOfInnovation extends CardImpl {
|
||||||
|
|
||||||
private static final FilterControlledPermanent filter = new FilterControlledPermanent("an artifact or Artificer");
|
private static final FilterPermanent filter = new FilterControlledPermanent("an artifact or Artificer");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(Predicates.or(CardType.ARTIFACT.getPredicate(),
|
filter.add(Predicates.or(CardType.ARTIFACT.getPredicate(),
|
||||||
|
@ -34,15 +32,15 @@ public final class EraOfInnovation extends CardImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
public EraOfInnovation(UUID ownerId, CardSetInfo setInfo) {
|
public EraOfInnovation(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{U}");
|
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
|
||||||
|
|
||||||
// Whenever an artifact or Artificer enters the battlefield under you control, you may pay {1}. If you do, you get {E}{E}.
|
// Whenever an artifact or Artificer enters the battlefield under you control, you may pay {1}. If you do, you get {E}{E}.
|
||||||
Effect effect = new DoIfCostPaid(new GetEnergyCountersControllerEffect(2), new GenericManaCost(1));
|
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(new DoIfCostPaid(
|
||||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(effect, filter,
|
new GetEnergyCountersControllerEffect(2), new GenericManaCost(1)
|
||||||
"Whenever an artifact or Artificer enters the battlefield under you control, you may pay {1}. If you do, you get {E}{E}."));
|
), filter));
|
||||||
|
|
||||||
// {E}{E}{E}{E}{E}{E}, Sacrifice Era of Innovation: Draw three cards.
|
// {E}{E}{E}{E}{E}{E}, Sacrifice Era of Innovation: Draw three cards.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(3), new PayEnergyCost(6));
|
Ability ability = new SimpleActivatedAbility(new DrawCardSourceControllerEffect(3), new PayEnergyCost(6));
|
||||||
ability.addCost(new SacrificeSourceCost());
|
ability.addCost(new SacrificeSourceCost());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.f;
|
package mage.cards.f;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
import mage.abilities.effects.common.continuous.AddCardTypeSourceEffect;
|
import mage.abilities.effects.common.continuous.AddCardTypeSourceEffect;
|
||||||
|
@ -14,8 +12,9 @@ import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author emerald000
|
* @author emerald000
|
||||||
*/
|
*/
|
||||||
public final class FleetwheelCruiser extends CardImpl {
|
public final class FleetwheelCruiser extends CardImpl {
|
||||||
|
@ -33,8 +32,9 @@ public final class FleetwheelCruiser extends CardImpl {
|
||||||
this.addAbility(HasteAbility.getInstance());
|
this.addAbility(HasteAbility.getInstance());
|
||||||
|
|
||||||
// When Fleetwheel Cruiser enters the battlefield, it becomes an artifact creature until the end of turn.
|
// When Fleetwheel Cruiser enters the battlefield, it becomes an artifact creature until the end of turn.
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new AddCardTypeSourceEffect(
|
||||||
new AddCardTypeSourceEffect(Duration.EndOfTurn, CardType.ARTIFACT, CardType.CREATURE)));
|
Duration.EndOfTurn, CardType.ARTIFACT, CardType.CREATURE
|
||||||
|
).setText("it becomes an artifact creature until end of turn")));
|
||||||
|
|
||||||
// Crew 2
|
// Crew 2
|
||||||
this.addAbility(new CrewAbility(2));
|
this.addAbility(new CrewAbility(2));
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
package mage.cards.f;
|
package mage.cards.f;
|
||||||
|
|
||||||
import mage.abilities.Mode;
|
import mage.abilities.Mode;
|
||||||
import mage.abilities.effects.common.ReturnToHandTargetEffect;
|
import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
|
import mage.filter.FilterCard;
|
||||||
import mage.filter.StaticFilters;
|
import mage.filter.StaticFilters;
|
||||||
import mage.filter.common.FilterArtifactCard;
|
import mage.filter.common.FilterArtifactCard;
|
||||||
import mage.target.common.TargetCardInYourGraveyard;
|
import mage.target.common.TargetCardInYourGraveyard;
|
||||||
|
@ -16,6 +17,8 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class FortuitousFind extends CardImpl {
|
public final class FortuitousFind extends CardImpl {
|
||||||
|
|
||||||
|
private static final FilterCard filter = new FilterArtifactCard("artifact card from your graveyard");
|
||||||
|
|
||||||
public FortuitousFind(UUID ownerId, CardSetInfo setInfo) {
|
public FortuitousFind(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
|
||||||
|
|
||||||
|
@ -24,12 +27,12 @@ public final class FortuitousFind extends CardImpl {
|
||||||
this.getSpellAbility().getModes().setMaxModes(2);
|
this.getSpellAbility().getModes().setMaxModes(2);
|
||||||
|
|
||||||
// Return target artifact card from your graveyard to your hand.;
|
// Return target artifact card from your graveyard to your hand.;
|
||||||
this.getSpellAbility().addEffect(new ReturnToHandTargetEffect());
|
this.getSpellAbility().addEffect(new ReturnFromGraveyardToHandTargetEffect());
|
||||||
this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(new FilterArtifactCard("artifact card from your graveyard")).withChooseHint("return to hand"));
|
this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(filter).withChooseHint("return to hand"));
|
||||||
|
|
||||||
// or Return target creature card from your graveyard to your hand.
|
// or Return target creature card from your graveyard to your hand.
|
||||||
Mode mode = new Mode();
|
Mode mode = new Mode();
|
||||||
mode.addEffect(new ReturnToHandTargetEffect());
|
mode.addEffect(new ReturnFromGraveyardToHandTargetEffect());
|
||||||
mode.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD).withChooseHint("return to hand"));
|
mode.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD).withChooseHint("return to hand"));
|
||||||
this.getSpellAbility().addMode(mode);
|
this.getSpellAbility().addMode(mode);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.g;
|
package mage.cards.g;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
|
@ -10,16 +8,16 @@ import mage.abilities.effects.common.combat.CantBeBlockedByAllTargetEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.constants.ComparisonType;
|
import mage.constants.ComparisonType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.Zone;
|
import mage.constants.SubType;
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
import mage.filter.common.FilterCreaturePermanent;
|
||||||
import mage.filter.predicate.mageobject.PowerPredicate;
|
import mage.filter.predicate.mageobject.PowerPredicate;
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.common.TargetControlledCreaturePermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class GhirapurGuide extends CardImpl {
|
public final class GhirapurGuide extends CardImpl {
|
||||||
|
@ -31,15 +29,17 @@ public final class GhirapurGuide extends CardImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
public GhirapurGuide(UUID ownerId, CardSetInfo setInfo) {
|
public GhirapurGuide(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
|
||||||
this.subtype.add(SubType.ELF);
|
this.subtype.add(SubType.ELF);
|
||||||
this.subtype.add(SubType.SCOUT);
|
this.subtype.add(SubType.SCOUT);
|
||||||
this.power = new MageInt(3);
|
this.power = new MageInt(3);
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// {2}{G}: Target creature you control can't be blocked by creatures with power 2 or less this turn.
|
// {2}{G}: Target creature you control can't be blocked by creatures with power 2 or less this turn.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CantBeBlockedByAllTargetEffect(filter, Duration.EndOfTurn), new ManaCostsImpl("{2}{G}"));
|
Ability ability = new SimpleActivatedAbility(
|
||||||
ability.addTarget(new TargetCreaturePermanent());
|
new CantBeBlockedByAllTargetEffect(filter, Duration.EndOfTurn), new ManaCostsImpl<>("{2}{G}")
|
||||||
|
);
|
||||||
|
ability.addTarget(new TargetControlledCreaturePermanent());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
package mage.cards.h;
|
package mage.cards.h;
|
||||||
|
|
||||||
import mage.abilities.effects.common.continuous.BoostAllEffect;
|
import mage.abilities.effects.common.continuous.BoostAllEffect;
|
||||||
|
@ -17,7 +16,7 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public final class HazardousConditions extends CardImpl {
|
public final class HazardousConditions extends CardImpl {
|
||||||
|
|
||||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with no counter");
|
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with no counters on them");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(Predicates.not(CounterAnyPredicate.instance));
|
filter.add(Predicates.not(CounterAnyPredicate.instance));
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.i;
|
package mage.cards.i;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.costs.mana.GenericManaCost;
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
|
@ -13,27 +11,27 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.*;
|
||||||
import mage.filter.FilterPermanent;
|
import mage.filter.FilterPermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author emerald000
|
* @author emerald000
|
||||||
*/
|
*/
|
||||||
public final class InventorsGoggles extends CardImpl {
|
public final class InventorsGoggles extends CardImpl {
|
||||||
|
|
||||||
|
private static final FilterPermanent filter = new FilterPermanent(SubType.ARTIFICER, "an Artificer");
|
||||||
|
|
||||||
public InventorsGoggles(UUID ownerId, CardSetInfo setInfo) {
|
public InventorsGoggles(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{1}");
|
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}");
|
||||||
this.subtype.add(SubType.EQUIPMENT);
|
this.subtype.add(SubType.EQUIPMENT);
|
||||||
|
|
||||||
// Equipped creature gets +1/+2.
|
// Equipped creature gets +1/+2.
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(1, 2, Duration.WhileOnBattlefield)));
|
this.addAbility(new SimpleStaticAbility(new BoostEquippedEffect(1, 2, Duration.WhileOnBattlefield)));
|
||||||
|
|
||||||
// Whenever an Artificer enters the battlefield under your control, you may attach Inventor's Goggles to it.
|
// Whenever an Artificer enters the battlefield under your control, you may attach Inventor's Goggles to it.
|
||||||
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
this.addAbility(new EntersBattlefieldControlledTriggeredAbility(
|
||||||
Zone.BATTLEFIELD,
|
Zone.BATTLEFIELD, new AttachEffect(Outcome.BoostCreature, "attach {this} to it"),
|
||||||
new AttachEffect(Outcome.BoostCreature, "attach {this} to it"),
|
filter, true, SetTargetPointer.PERMANENT, null
|
||||||
new FilterPermanent(SubType.ARTIFICER, "Artificer"),
|
));
|
||||||
true,
|
|
||||||
SetTargetPointer.PERMANENT,
|
|
||||||
null));
|
|
||||||
|
|
||||||
// Equip {2}
|
// Equip {2}
|
||||||
this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(2)));
|
this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(2)));
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.l;
|
package mage.cards.l;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.abilities.effects.common.DamageTargetEffect;
|
import mage.abilities.effects.common.DamageTargetEffect;
|
||||||
import mage.abilities.effects.common.search.SearchLibraryGraveyardPutInHandEffect;
|
import mage.abilities.effects.common.search.SearchLibraryGraveyardPutInHandEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
|
@ -11,8 +9,9 @@ import mage.filter.FilterCard;
|
||||||
import mage.filter.predicate.mageobject.NamePredicate;
|
import mage.filter.predicate.mageobject.NamePredicate;
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
*/
|
*/
|
||||||
public final class LiberatingCombustion extends CardImpl {
|
public final class LiberatingCombustion extends CardImpl {
|
||||||
|
@ -31,7 +30,7 @@ public final class LiberatingCombustion extends CardImpl {
|
||||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||||
|
|
||||||
// You may search your library and/or graveyard for a card named Chandra, Pyrogenius, reveal it, and put it into your hand. If you search your library this way, shuffle it.
|
// You may search your library and/or graveyard for a card named Chandra, Pyrogenius, reveal it, and put it into your hand. If you search your library this way, shuffle it.
|
||||||
this.getSpellAbility().addEffect(new SearchLibraryGraveyardPutInHandEffect(filter));
|
this.getSpellAbility().addEffect(new SearchLibraryGraveyardPutInHandEffect(filter, false, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
private LiberatingCombustion(final LiberatingCombustion card) {
|
private LiberatingCombustion(final LiberatingCombustion card) {
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.m;
|
package mage.cards.m;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
|
@ -12,15 +10,16 @@ import mage.abilities.keyword.EnchantAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.constants.Outcome;
|
import mage.constants.Outcome;
|
||||||
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.filter.FilterPermanent;
|
import mage.filter.FilterPermanent;
|
||||||
import mage.filter.predicate.Predicates;
|
import mage.filter.predicate.Predicates;
|
||||||
import mage.target.TargetPermanent;
|
import mage.target.TargetPermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
*/
|
*/
|
||||||
public final class Malfunction extends CardImpl {
|
public final class Malfunction extends CardImpl {
|
||||||
|
@ -34,7 +33,7 @@ public final class Malfunction extends CardImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Malfunction(UUID ownerId, CardSetInfo setInfo) {
|
public Malfunction(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{U}");
|
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}");
|
||||||
this.subtype.add(SubType.AURA);
|
this.subtype.add(SubType.AURA);
|
||||||
|
|
||||||
// Enchant artifact or creature.
|
// Enchant artifact or creature.
|
||||||
|
@ -45,7 +44,7 @@ public final class Malfunction extends CardImpl {
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
// When Malfunction enters the battlefield, tap enchanted permanent.
|
// When Malfunction enters the battlefield, tap enchanted permanent.
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new TapEnchantedEffect()));
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new TapEnchantedEffect().setText("tap enchanted permanent")));
|
||||||
|
|
||||||
// Enchanted permanent doesn't untap during its controller's untap step.
|
// Enchanted permanent doesn't untap during its controller's untap step.
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepEnchantedEffect("permanent")));
|
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepEnchantedEffect("permanent")));
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.m;
|
package mage.cards.m;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
|
@ -13,36 +11,42 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
import mage.filter.common.FilterCreaturePermanent;
|
||||||
import mage.filter.predicate.Predicates;
|
import mage.filter.predicate.Predicates;
|
||||||
import mage.game.permanent.token.ServoToken;
|
import mage.game.permanent.token.ServoToken;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class MasterTrinketeer extends CardImpl {
|
public final class MasterTrinketeer extends CardImpl {
|
||||||
|
|
||||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Servo and Thopter creatures");
|
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Servos and Thopters");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(Predicates.or(SubType.SERVO.getPredicate(),
|
filter.add(Predicates.or(
|
||||||
SubType.THOPTER.getPredicate()));
|
SubType.SERVO.getPredicate(),
|
||||||
|
SubType.THOPTER.getPredicate()
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
public MasterTrinketeer(UUID ownerId, CardSetInfo setInfo) {
|
public MasterTrinketeer(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
|
||||||
this.subtype.add(SubType.DWARF);
|
this.subtype.add(SubType.DWARF);
|
||||||
this.subtype.add(SubType.ARTIFICER);
|
this.subtype.add(SubType.ARTIFICER);
|
||||||
this.power = new MageInt(3);
|
this.power = new MageInt(3);
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// Servo and Thopter creatures you control get +1/+1.
|
// Servo and Thopter creatures you control get +1/+1.
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filter, false)));
|
this.addAbility(new SimpleStaticAbility(new BoostControlledEffect(
|
||||||
|
1, 1, Duration.WhileOnBattlefield, filter, false
|
||||||
|
)));
|
||||||
|
|
||||||
// {3}{W}: Create a 1/1 colorless Servo artifact creature token.
|
// {3}{W}: Create a 1/1 colorless Servo artifact creature token.
|
||||||
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new ServoToken(), 1), new ManaCostsImpl("{3}{W}")));
|
this.addAbility(new SimpleActivatedAbility(
|
||||||
|
new CreateTokenEffect(new ServoToken(), 1), new ManaCostsImpl<>("{3}{W}")
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
private MasterTrinketeer(final MasterTrinketeer card) {
|
private MasterTrinketeer(final MasterTrinketeer card) {
|
||||||
|
|
|
@ -38,7 +38,8 @@ public final class MidnightOil extends CardImpl {
|
||||||
|
|
||||||
// At the beginning of your draw step, draw an additional card and remove two hour counters from Midnight Oil.
|
// At the beginning of your draw step, draw an additional card and remove two hour counters from Midnight Oil.
|
||||||
Ability ability = new BeginningOfDrawTriggeredAbility(
|
Ability ability = new BeginningOfDrawTriggeredAbility(
|
||||||
new DrawCardSourceControllerEffect(1),
|
new DrawCardSourceControllerEffect(1)
|
||||||
|
.setText("draw an additional card"),
|
||||||
TargetController.YOU, false
|
TargetController.YOU, false
|
||||||
);
|
);
|
||||||
ability.addEffect(new RemoveCounterSourceEffect(
|
ability.addEffect(new RemoveCounterSourceEffect(
|
||||||
|
|
|
@ -1,34 +1,24 @@
|
||||||
package mage.cards.n;
|
package mage.cards.n;
|
||||||
|
|
||||||
import java.util.LinkedHashSet;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageObject;
|
import mage.MageObject;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.LoyaltyAbility;
|
import mage.abilities.LoyaltyAbility;
|
||||||
import mage.abilities.effects.Effect;
|
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
import mage.abilities.effects.common.GainLifeEffect;
|
import mage.abilities.effects.common.GainLifeEffect;
|
||||||
import mage.abilities.effects.common.continuous.BoostControlledEffect;
|
import mage.abilities.effects.common.continuous.BoostControlledEffect;
|
||||||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
||||||
import mage.abilities.keyword.TrampleAbility;
|
import mage.abilities.keyword.TrampleAbility;
|
||||||
import mage.cards.Card;
|
import mage.cards.*;
|
||||||
import mage.cards.CardImpl;
|
import mage.constants.*;
|
||||||
import mage.cards.CardSetInfo;
|
|
||||||
import mage.cards.Cards;
|
|
||||||
import mage.cards.CardsImpl;
|
|
||||||
import mage.constants.CardType;
|
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.constants.Duration;
|
|
||||||
import mage.constants.Outcome;
|
|
||||||
import mage.constants.SuperType;
|
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.filter.common.FilterLandCard;
|
import mage.filter.common.FilterLandCard;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
|
|
||||||
|
import java.util.LinkedHashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class NissaNaturesArtisan extends CardImpl {
|
public final class NissaNaturesArtisan extends CardImpl {
|
||||||
|
@ -48,13 +38,12 @@ public final class NissaNaturesArtisan extends CardImpl {
|
||||||
this.addAbility(new LoyaltyAbility(new NissaNaturesArtisanEffect(), -4));
|
this.addAbility(new LoyaltyAbility(new NissaNaturesArtisanEffect(), -4));
|
||||||
|
|
||||||
// -12: Creatures you control get +5/+5 and gain trample until end of turn.
|
// -12: Creatures you control get +5/+5 and gain trample until end of turn.
|
||||||
Effect effect = new BoostControlledEffect(5, 5, Duration.EndOfTurn);
|
LoyaltyAbility ability = new LoyaltyAbility(new BoostControlledEffect(
|
||||||
effect.setText("Creature you control get +5/+5");
|
5, 5, Duration.EndOfTurn
|
||||||
LoyaltyAbility ability = new LoyaltyAbility(effect, -12);
|
).setText("creatures you control get +5/+5"), -12);
|
||||||
Effect effect2 = new GainAbilityControlledEffect(
|
ability.addEffect(new GainAbilityControlledEffect(
|
||||||
TrampleAbility.getInstance(), Duration.EndOfTurn);
|
TrampleAbility.getInstance(), Duration.EndOfTurn
|
||||||
effect2.setText("and gain trample until end of turn");
|
).setText("and gain trample until end of turn"));
|
||||||
ability.addEffect(effect2);
|
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,21 +1,17 @@
|
||||||
|
|
||||||
package mage.cards.n;
|
package mage.cards.n;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.LoyaltyAbility;
|
import mage.abilities.LoyaltyAbility;
|
||||||
import mage.abilities.effects.common.GetEmblemEffect;
|
import mage.abilities.effects.common.GetEmblemEffect;
|
||||||
import mage.abilities.effects.common.ReturnToHandTargetEffect;
|
import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect;
|
||||||
import mage.abilities.effects.common.UntapTargetEffect;
|
import mage.abilities.effects.common.UntapTargetEffect;
|
||||||
import mage.abilities.effects.common.continuous.BecomesCreatureTargetEffect;
|
import mage.abilities.effects.common.continuous.BecomesCreatureTargetEffect;
|
||||||
import mage.abilities.keyword.HasteAbility;
|
import mage.abilities.keyword.HasteAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.*;
|
||||||
import mage.constants.SubType;
|
import mage.filter.FilterCard;
|
||||||
import mage.constants.Duration;
|
|
||||||
import mage.constants.SuperType;
|
|
||||||
import mage.constants.TargetController;
|
|
||||||
import mage.filter.common.FilterLandPermanent;
|
import mage.filter.common.FilterLandPermanent;
|
||||||
import mage.filter.common.FilterPermanentCard;
|
import mage.filter.common.FilterPermanentCard;
|
||||||
import mage.game.command.emblems.NissaVitalForceEmblem;
|
import mage.game.command.emblems.NissaVitalForceEmblem;
|
||||||
|
@ -23,13 +19,15 @@ import mage.game.permanent.token.TokenImpl;
|
||||||
import mage.target.common.TargetCardInYourGraveyard;
|
import mage.target.common.TargetCardInYourGraveyard;
|
||||||
import mage.target.common.TargetLandPermanent;
|
import mage.target.common.TargetLandPermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class NissaVitalForce extends CardImpl {
|
public final class NissaVitalForce extends CardImpl {
|
||||||
|
|
||||||
private static final FilterLandPermanent filter = new FilterLandPermanent("land you control");
|
private static final FilterLandPermanent filter = new FilterLandPermanent("land you control");
|
||||||
|
private static final FilterCard filter2 = new FilterPermanentCard("permanent card from your graveyard");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(TargetController.YOU.getControllerPredicate());
|
filter.add(TargetController.YOU.getControllerPredicate());
|
||||||
|
@ -44,13 +42,15 @@ public final class NissaVitalForce extends CardImpl {
|
||||||
|
|
||||||
// +1: Untap target land you control. Until your next turn, it becomes a 5/5 Elemental creature with haste. It's still a land.
|
// +1: Untap target land you control. Until your next turn, it becomes a 5/5 Elemental creature with haste. It's still a land.
|
||||||
LoyaltyAbility ability = new LoyaltyAbility(new UntapTargetEffect(), 1);
|
LoyaltyAbility ability = new LoyaltyAbility(new UntapTargetEffect(), 1);
|
||||||
ability.addEffect(new BecomesCreatureTargetEffect(new NissaVitalForceToken(), false, true, Duration.UntilYourNextTurn));
|
ability.addEffect(new BecomesCreatureTargetEffect(
|
||||||
|
new NissaVitalForceToken(), false, true, Duration.UntilYourNextTurn
|
||||||
|
).setText("Until your next turn, it becomes a 5/5 Elemental creature with haste. It's still a land"));
|
||||||
ability.addTarget(new TargetLandPermanent(filter));
|
ability.addTarget(new TargetLandPermanent(filter));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
// -3: Return target permanent card from your graveyard to your hand.
|
// -3: Return target permanent card from your graveyard to your hand.
|
||||||
ability = new LoyaltyAbility(new ReturnToHandTargetEffect(), -3);
|
ability = new LoyaltyAbility(new ReturnFromGraveyardToHandTargetEffect(), -3);
|
||||||
ability.addTarget(new TargetCardInYourGraveyard(new FilterPermanentCard("permanent card from your graveyard")));
|
ability.addTarget(new TargetCardInYourGraveyard(filter2));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
// -6: You get an emblem with "Whenever a land enters the battlefield under your control, you may draw a card."
|
// -6: You get an emblem with "Whenever a land enters the battlefield under your control, you may draw a card."
|
||||||
|
@ -78,6 +78,7 @@ class NissaVitalForceToken extends TokenImpl {
|
||||||
this.toughness = new MageInt(5);
|
this.toughness = new MageInt(5);
|
||||||
this.addAbility(HasteAbility.getInstance());
|
this.addAbility(HasteAbility.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
public NissaVitalForceToken(final NissaVitalForceToken token) {
|
public NissaVitalForceToken(final NissaVitalForceToken token) {
|
||||||
super(token);
|
super(token);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,22 +1,17 @@
|
||||||
|
|
||||||
package mage.cards.o;
|
package mage.cards.o;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||||
import mage.abilities.effects.common.ReturnToHandSourceEffect;
|
import mage.abilities.effects.common.ReturnSourceFromGraveyardToHandEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.*;
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.constants.SetTargetPointer;
|
|
||||||
import mage.constants.TargetController;
|
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.filter.FilterPermanent;
|
import mage.filter.FilterPermanent;
|
||||||
import mage.filter.common.FilterArtifactPermanent;
|
import mage.filter.common.FilterArtifactPermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class OvalchaseDaredevil extends CardImpl {
|
public final class OvalchaseDaredevil extends CardImpl {
|
||||||
|
@ -35,7 +30,10 @@ public final class OvalchaseDaredevil extends CardImpl {
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
// Whenever an artifact enters the battlefield under your control, you may return Ovalchase Daredevil from your graveyard to your hand.
|
// Whenever an artifact enters the battlefield under your control, you may return Ovalchase Daredevil from your graveyard to your hand.
|
||||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.GRAVEYARD, new ReturnToHandSourceEffect(), filter, true, SetTargetPointer.NONE, null, true));
|
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
|
||||||
|
Zone.GRAVEYARD, new ReturnSourceFromGraveyardToHandEffect(), filter,
|
||||||
|
true, SetTargetPointer.NONE, null, true
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
private OvalchaseDaredevil(final OvalchaseDaredevil card) {
|
private OvalchaseDaredevil(final OvalchaseDaredevil card) {
|
||||||
|
|
|
@ -35,7 +35,7 @@ public final class PadeemConsulOfInnovation extends CardImpl {
|
||||||
// Artifacts you control have hexproof.
|
// Artifacts you control have hexproof.
|
||||||
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
|
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
|
||||||
HexproofAbility.getInstance(), Duration.WhileOnBattlefield,
|
HexproofAbility.getInstance(), Duration.WhileOnBattlefield,
|
||||||
StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACTS, false
|
StaticFilters.FILTER_PERMANENT_ARTIFACTS, false
|
||||||
)));
|
)));
|
||||||
|
|
||||||
// At the beginning of your upkeep, if you control the artifact with the highest converted mana cost or tied for the highest converted mana cost, draw a card.
|
// At the beginning of your upkeep, if you control the artifact with the highest converted mana cost or tied for the highest converted mana cost, draw a card.
|
||||||
|
|
|
@ -23,7 +23,7 @@ public final class RenegadeTactics extends CardImpl {
|
||||||
this.getSpellAbility().addEffect(new CantBlockTargetEffect(Duration.EndOfTurn));
|
this.getSpellAbility().addEffect(new CantBlockTargetEffect(Duration.EndOfTurn));
|
||||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||||
// Draw a card.
|
// Draw a card.
|
||||||
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
|
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1).concatBy("<br>"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private RenegadeTactics(final RenegadeTactics card) {
|
private RenegadeTactics(final RenegadeTactics card) {
|
||||||
|
|
|
@ -30,7 +30,7 @@ public final class SaheelisArtistry extends CardImpl {
|
||||||
Mode mode1 = new Mode();
|
Mode mode1 = new Mode();
|
||||||
effect = new CreateTokenCopyTargetEffect();
|
effect = new CreateTokenCopyTargetEffect();
|
||||||
effect.setBecomesArtifact(true);
|
effect.setBecomesArtifact(true);
|
||||||
effect.setText("Create a token that's a copy of target creature, except that it's an artifact in addition to its other types");
|
effect.setText("Create a token that's a copy of target creature, except it's an artifact in addition to its other types");
|
||||||
mode1.addEffect(effect);
|
mode1.addEffect(effect);
|
||||||
mode1.addTarget(new TargetCreaturePermanent().withChooseHint("create copy of that, artifact type"));
|
mode1.addTarget(new TargetCreaturePermanent().withChooseHint("create copy of that, artifact type"));
|
||||||
this.getSpellAbility().addMode(mode1);
|
this.getSpellAbility().addMode(mode1);
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.s;
|
package mage.cards.s;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.CantBlockAbility;
|
import mage.abilities.common.CantBlockAbility;
|
||||||
|
@ -19,8 +17,9 @@ import mage.filter.common.FilterCreatureCard;
|
||||||
import mage.filter.predicate.mageobject.AnotherCardPredicate;
|
import mage.filter.predicate.mageobject.AnotherCardPredicate;
|
||||||
import mage.target.common.TargetCardInYourGraveyard;
|
import mage.target.common.TargetCardInYourGraveyard;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author emerald000
|
* @author emerald000
|
||||||
*/
|
*/
|
||||||
public final class ScrapheapScrounger extends CardImpl {
|
public final class ScrapheapScrounger extends CardImpl {
|
||||||
|
@ -41,7 +40,7 @@ public final class ScrapheapScrounger extends CardImpl {
|
||||||
this.addAbility(new CantBlockAbility());
|
this.addAbility(new CantBlockAbility());
|
||||||
|
|
||||||
// {1}{B}, Exile another creature card from your graveyard: Return Scrapheap Scrounger from your graveyard to the battlefield.
|
// {1}{B}, Exile another creature card from your graveyard: Return Scrapheap Scrounger from your graveyard to the battlefield.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.GRAVEYARD, new ReturnSourceFromGraveyardToBattlefieldEffect(false), new ManaCostsImpl<>("{1}{B}"));
|
Ability ability = new SimpleActivatedAbility(Zone.GRAVEYARD, new ReturnSourceFromGraveyardToBattlefieldEffect(false, false), new ManaCostsImpl<>("{1}{B}"));
|
||||||
ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(filter)));
|
ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(filter)));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.s;
|
package mage.cards.s;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
import mage.abilities.effects.Effect;
|
import mage.abilities.effects.Effect;
|
||||||
|
@ -11,22 +9,24 @@ import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.filter.FilterCard;
|
import mage.filter.FilterCard;
|
||||||
|
import mage.filter.common.FilterCreatureCard;
|
||||||
import mage.target.common.TargetCardInLibrary;
|
import mage.target.common.TargetCardInLibrary;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class SelfAssembler extends CardImpl {
|
public final class SelfAssembler extends CardImpl {
|
||||||
|
|
||||||
private static final FilterCard filter = new FilterCard("an Assembly-Worker card");
|
private static final FilterCard filter = new FilterCreatureCard("an Assembly-Worker creature card");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(SubType.ASSEMBLY_WORKER.getPredicate());
|
filter.add(SubType.ASSEMBLY_WORKER.getPredicate());
|
||||||
}
|
}
|
||||||
|
|
||||||
public SelfAssembler(UUID ownerId, CardSetInfo setInfo) {
|
public SelfAssembler(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}");
|
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{5}");
|
||||||
this.subtype.add(SubType.ASSEMBLY_WORKER);
|
this.subtype.add(SubType.ASSEMBLY_WORKER);
|
||||||
this.power = new MageInt(4);
|
this.power = new MageInt(4);
|
||||||
this.toughness = new MageInt(4);
|
this.toughness = new MageInt(4);
|
||||||
|
@ -34,7 +34,7 @@ public final class SelfAssembler extends CardImpl {
|
||||||
// When Self-Assembler enters the battlefield, you may search your library for an Assembly-Worker creature card, reveal it, put it into your hand,
|
// When Self-Assembler enters the battlefield, you may search your library for an Assembly-Worker creature card, reveal it, put it into your hand,
|
||||||
// then shuffle your library.
|
// then shuffle your library.
|
||||||
Effect effect = new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 1, filter), true, true);
|
Effect effect = new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 1, filter), true, true);
|
||||||
effect.setText("you may search your library for an Assembly-Worker card, reveal it, put it into your hand, then shuffle");
|
effect.setText("you may search your library for an Assembly-Worker creature card, reveal it, put it into your hand, then shuffle");
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(effect, true));
|
this.addAbility(new EntersBattlefieldTriggeredAbility(effect, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.s;
|
package mage.cards.s;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.SimpleActivatedAbility;
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
|
@ -13,30 +11,34 @@ import mage.abilities.keyword.IndestructibleAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.Zone;
|
import mage.constants.SubType;
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
import mage.filter.common.FilterControlledArtifactPermanent;
|
import mage.filter.StaticFilters;
|
||||||
import mage.target.common.TargetControlledPermanent;
|
import mage.target.common.TargetControlledPermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class SyndicateTrafficker extends CardImpl {
|
public final class SyndicateTrafficker extends CardImpl {
|
||||||
|
|
||||||
public SyndicateTrafficker(UUID ownerId, CardSetInfo setInfo) {
|
public SyndicateTrafficker(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
|
||||||
this.subtype.add(SubType.AETHERBORN);
|
this.subtype.add(SubType.AETHERBORN);
|
||||||
this.subtype.add(SubType.ROGUE);
|
this.subtype.add(SubType.ROGUE);
|
||||||
this.power = new MageInt(3);
|
this.power = new MageInt(3);
|
||||||
this.toughness = new MageInt(1);
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
// {1}, Sacrifice an artifact: Put a +1/+1 counter on Syndicate Trafficker. It gains indestructible until end of turn.
|
// {1}, Sacrifice an artifact: Put a +1/+1 counter on Syndicate Trafficker. It gains indestructible until end of turn.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.P1P1.createInstance()), new GenericManaCost(1));
|
Ability ability = new SimpleActivatedAbility(
|
||||||
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(new FilterControlledArtifactPermanent("an artifact"))));
|
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), new GenericManaCost(1)
|
||||||
ability.addEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn));
|
);
|
||||||
|
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT_AN)));
|
||||||
|
ability.addEffect(new GainAbilitySourceEffect(
|
||||||
|
IndestructibleAbility.getInstance(), Duration.EndOfTurn
|
||||||
|
).setText("It gains indestructible until end of turn"));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
|
|
||||||
package mage.cards.t;
|
package mage.cards.t;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.common.AttacksTriggeredAbility;
|
import mage.abilities.common.AttacksTriggeredAbility;
|
||||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
|
@ -15,24 +14,30 @@ import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
*/
|
*/
|
||||||
public final class ThrivingGrubs extends CardImpl {
|
public final class ThrivingGrubs extends CardImpl {
|
||||||
|
|
||||||
public ThrivingGrubs(UUID ownerId, CardSetInfo setInfo) {
|
public ThrivingGrubs(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
|
||||||
this.subtype.add(SubType.GREMLIN);
|
this.subtype.add(SubType.GREMLIN);
|
||||||
this.power = new MageInt(2);
|
this.power = new MageInt(2);
|
||||||
this.toughness = new MageInt(1);
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
// When Thriving Grubs enters the battlefield, you get {E}{E}.
|
// When Thriving Grubs enters the battlefield, you get {E}{E}.
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new GetEnergyCountersControllerEffect(2), false));
|
this.addAbility(new EntersBattlefieldTriggeredAbility(
|
||||||
|
new GetEnergyCountersControllerEffect(2), false
|
||||||
|
));
|
||||||
|
|
||||||
// Whenever Thriving Grubs attacks, you may pay {E}{E}. If you do, put a +1/+1 counter on it.
|
// Whenever Thriving Grubs attacks, you may pay {E}{E}. If you do, put a +1/+1 counter on it.
|
||||||
this.addAbility(new AttacksTriggeredAbility(new DoIfCostPaid(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), new PayEnergyCost(2)), false,
|
this.addAbility(new AttacksTriggeredAbility(new DoIfCostPaid(
|
||||||
"Whenever {this} attacks you may pay {E}{E}. If you do, put a +1/+1 counter on it."));
|
new AddCountersSourceEffect(CounterType.P1P1.createInstance())
|
||||||
|
.setText("put a +1/+1 counter on it"),
|
||||||
|
new PayEnergyCost(2)
|
||||||
|
), false));
|
||||||
}
|
}
|
||||||
|
|
||||||
private ThrivingGrubs(final ThrivingGrubs card) {
|
private ThrivingGrubs(final ThrivingGrubs card) {
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.t;
|
package mage.cards.t;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.common.AttacksTriggeredAbility;
|
import mage.abilities.common.AttacksTriggeredAbility;
|
||||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
|
@ -15,14 +13,15 @@ import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class ThrivingIbex extends CardImpl {
|
public final class ThrivingIbex extends CardImpl {
|
||||||
|
|
||||||
public ThrivingIbex(UUID ownerId, CardSetInfo setInfo) {
|
public ThrivingIbex(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
|
||||||
this.subtype.add(SubType.GOAT);
|
this.subtype.add(SubType.GOAT);
|
||||||
this.power = new MageInt(2);
|
this.power = new MageInt(2);
|
||||||
this.toughness = new MageInt(4);
|
this.toughness = new MageInt(4);
|
||||||
|
@ -31,8 +30,11 @@ public final class ThrivingIbex extends CardImpl {
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new GetEnergyCountersControllerEffect(2)));
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new GetEnergyCountersControllerEffect(2)));
|
||||||
|
|
||||||
// Whenever Thriving Ibex attacks, you may pay {E}{E}. If you do, put a +1/+1 counter on it.
|
// Whenever Thriving Ibex attacks, you may pay {E}{E}. If you do, put a +1/+1 counter on it.
|
||||||
this.addAbility(new AttacksTriggeredAbility(new DoIfCostPaid(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), new PayEnergyCost(2)), false,
|
this.addAbility(new AttacksTriggeredAbility(new DoIfCostPaid(
|
||||||
"Whenever {this} attacks you may pay {E}{E}. If you do, put a +1/+1 counter on it."));
|
new AddCountersSourceEffect(CounterType.P1P1.createInstance())
|
||||||
|
.setText("put a +1/+1 counter on it"),
|
||||||
|
new PayEnergyCost(2)
|
||||||
|
), false));
|
||||||
}
|
}
|
||||||
|
|
||||||
private ThrivingIbex(final ThrivingIbex card) {
|
private ThrivingIbex(final ThrivingIbex card) {
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.t;
|
package mage.cards.t;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.common.AttacksTriggeredAbility;
|
import mage.abilities.common.AttacksTriggeredAbility;
|
||||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
|
@ -15,14 +13,15 @@ import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class ThrivingRats extends CardImpl {
|
public final class ThrivingRats extends CardImpl {
|
||||||
|
|
||||||
public ThrivingRats(UUID ownerId, CardSetInfo setInfo) {
|
public ThrivingRats(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
|
||||||
this.subtype.add(SubType.RAT);
|
this.subtype.add(SubType.RAT);
|
||||||
this.power = new MageInt(1);
|
this.power = new MageInt(1);
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
@ -31,8 +30,11 @@ public final class ThrivingRats extends CardImpl {
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new GetEnergyCountersControllerEffect(2)));
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new GetEnergyCountersControllerEffect(2)));
|
||||||
|
|
||||||
// Whenever Thriving Rats attacks, you may pay {E}{E}. If you do, put a +1/+1 counter on it.
|
// Whenever Thriving Rats attacks, you may pay {E}{E}. If you do, put a +1/+1 counter on it.
|
||||||
this.addAbility(new AttacksTriggeredAbility(new DoIfCostPaid(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), new PayEnergyCost(2)), false,
|
this.addAbility(new AttacksTriggeredAbility(new DoIfCostPaid(
|
||||||
"Whenever {this} attacks you may pay {E}{E}. If you do, put a +1/+1 counter on it."));
|
new AddCountersSourceEffect(CounterType.P1P1.createInstance())
|
||||||
|
.setText("put a +1/+1 counter on it"),
|
||||||
|
new PayEnergyCost(2)
|
||||||
|
), false));
|
||||||
}
|
}
|
||||||
|
|
||||||
private ThrivingRats(final ThrivingRats card) {
|
private ThrivingRats(final ThrivingRats card) {
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.t;
|
package mage.cards.t;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.common.AttacksTriggeredAbility;
|
import mage.abilities.common.AttacksTriggeredAbility;
|
||||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
|
@ -15,14 +13,15 @@ import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
*/
|
*/
|
||||||
public final class ThrivingRhino extends CardImpl {
|
public final class ThrivingRhino extends CardImpl {
|
||||||
|
|
||||||
public ThrivingRhino(UUID ownerId, CardSetInfo setInfo) {
|
public ThrivingRhino(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
|
||||||
this.subtype.add(SubType.RHINO);
|
this.subtype.add(SubType.RHINO);
|
||||||
this.power = new MageInt(2);
|
this.power = new MageInt(2);
|
||||||
this.toughness = new MageInt(3);
|
this.toughness = new MageInt(3);
|
||||||
|
@ -31,8 +30,11 @@ public final class ThrivingRhino extends CardImpl {
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new GetEnergyCountersControllerEffect(2)));
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new GetEnergyCountersControllerEffect(2)));
|
||||||
|
|
||||||
// Whenever Thriving Rhino attacks, you may pay {E}{E}. If you do, put a +1/+1 counter on it.
|
// Whenever Thriving Rhino attacks, you may pay {E}{E}. If you do, put a +1/+1 counter on it.
|
||||||
this.addAbility(new AttacksTriggeredAbility(new DoIfCostPaid(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), new PayEnergyCost(2)), false));
|
this.addAbility(new AttacksTriggeredAbility(new DoIfCostPaid(
|
||||||
|
new AddCountersSourceEffect(CounterType.P1P1.createInstance())
|
||||||
|
.setText("put a +1/+1 counter on it"),
|
||||||
|
new PayEnergyCost(2)
|
||||||
|
), false));
|
||||||
}
|
}
|
||||||
|
|
||||||
private ThrivingRhino(final ThrivingRhino card) {
|
private ThrivingRhino(final ThrivingRhino card) {
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
|
|
||||||
package mage.cards.t;
|
package mage.cards.t;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.common.AttacksTriggeredAbility;
|
import mage.abilities.common.AttacksTriggeredAbility;
|
||||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
|
@ -15,14 +13,15 @@ import mage.constants.CardType;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
public final class ThrivingTurtle extends CardImpl {
|
public final class ThrivingTurtle extends CardImpl {
|
||||||
|
|
||||||
public ThrivingTurtle(UUID ownerId, CardSetInfo setInfo) {
|
public ThrivingTurtle(UUID ownerId, CardSetInfo setInfo) {
|
||||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}");
|
||||||
this.subtype.add(SubType.TURTLE);
|
this.subtype.add(SubType.TURTLE);
|
||||||
this.power = new MageInt(0);
|
this.power = new MageInt(0);
|
||||||
this.toughness = new MageInt(3);
|
this.toughness = new MageInt(3);
|
||||||
|
@ -31,7 +30,11 @@ public final class ThrivingTurtle extends CardImpl {
|
||||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new GetEnergyCountersControllerEffect(2)));
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new GetEnergyCountersControllerEffect(2)));
|
||||||
|
|
||||||
// Whenever Thriving Turtle attacks, you may pay {E}{E}. If you do, put a +1/+1 counter on it.
|
// Whenever Thriving Turtle attacks, you may pay {E}{E}. If you do, put a +1/+1 counter on it.
|
||||||
this.addAbility(new AttacksTriggeredAbility(new DoIfCostPaid(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), new PayEnergyCost(2)), false));
|
this.addAbility(new AttacksTriggeredAbility(new DoIfCostPaid(
|
||||||
|
new AddCountersSourceEffect(CounterType.P1P1.createInstance())
|
||||||
|
.setText("put a +1/+1 counter on it"),
|
||||||
|
new PayEnergyCost(2)
|
||||||
|
), false));
|
||||||
}
|
}
|
||||||
|
|
||||||
private ThrivingTurtle(final ThrivingTurtle card) {
|
private ThrivingTurtle(final ThrivingTurtle card) {
|
||||||
|
|
|
@ -38,7 +38,7 @@ public final class WispweaverAngel extends CardImpl {
|
||||||
|
|
||||||
// When Wispweaver Angel enters the battlefield, you may exile another target creature you control, then return that card to the battlefield under its owner's control.
|
// When Wispweaver Angel enters the battlefield, you may exile another target creature you control, then return that card to the battlefield under its owner's control.
|
||||||
Ability ability = new EntersBattlefieldTriggeredAbility(new ExileTargetForSourceEffect(), true);
|
Ability ability = new EntersBattlefieldTriggeredAbility(new ExileTargetForSourceEffect(), true);
|
||||||
ability.addEffect(new ReturnToBattlefieldUnderOwnerControlTargetEffect(false, false));
|
ability.addEffect(new ReturnToBattlefieldUnderOwnerControlTargetEffect(false, false).concatBy(","));
|
||||||
ability.addTarget(new TargetControlledCreaturePermanent(1, 1, filter, false));
|
ability.addTarget(new TargetControlledCreaturePermanent(1, 1, filter, false));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,7 +62,7 @@ public class VerifyCardDataTest {
|
||||||
|
|
||||||
private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class);
|
private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class);
|
||||||
|
|
||||||
private static final String FULL_ABILITIES_CHECK_SET_CODE = "AER"; // check all abilities and output cards with wrong abilities texts;
|
private static final String FULL_ABILITIES_CHECK_SET_CODE = "KLD"; // check all abilities and output cards with wrong abilities texts;
|
||||||
private static final boolean AUTO_FIX_SAMPLE_DECKS = false; // debug only: auto-fix sample decks by test_checkSampleDecks test run
|
private static final boolean AUTO_FIX_SAMPLE_DECKS = false; // debug only: auto-fix sample decks by test_checkSampleDecks test run
|
||||||
private static final boolean ONLY_TEXT = false; // use when checking text locally, suppresses unnecessary checks and output messages
|
private static final boolean ONLY_TEXT = false; // use when checking text locally, suppresses unnecessary checks and output messages
|
||||||
|
|
||||||
|
|
|
@ -43,6 +43,6 @@ public class CrewsVehicleSourceTriggeredAbility extends TriggeredAbilityImpl {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getTriggerPhrase() {
|
public String getTriggerPhrase() {
|
||||||
return "When {this} crews a Vehicle, " ;
|
return "Whenever {this} crews a Vehicle, " ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,7 +51,7 @@ public class PreventAllDamageToPlayersEffect extends PreventionEffectImpl {
|
||||||
}
|
}
|
||||||
sb.append("damage that would be dealt to players");
|
sb.append("damage that would be dealt to players");
|
||||||
if (duration == Duration.EndOfTurn) {
|
if (duration == Duration.EndOfTurn) {
|
||||||
sb.append(" this turn");
|
sb.append(" this turn");
|
||||||
}
|
}
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package mage.abilities.effects.common.combat;
|
package mage.abilities.effects.common.combat;
|
||||||
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.Mode;
|
||||||
import mage.abilities.effects.RestrictionEffect;
|
import mage.abilities.effects.RestrictionEffect;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.filter.common.FilterCreaturePermanent;
|
import mage.filter.common.FilterCreaturePermanent;
|
||||||
|
@ -19,11 +20,6 @@ public class CantBeBlockedByAllTargetEffect extends RestrictionEffect {
|
||||||
public CantBeBlockedByAllTargetEffect(FilterCreaturePermanent filterBlockedBy, Duration duration) {
|
public CantBeBlockedByAllTargetEffect(FilterCreaturePermanent filterBlockedBy, Duration duration) {
|
||||||
super(duration);
|
super(duration);
|
||||||
this.filterBlockedBy = filterBlockedBy;
|
this.filterBlockedBy = filterBlockedBy;
|
||||||
staticText = "target creature"
|
|
||||||
+ " can't be blocked "
|
|
||||||
+ (duration == EndOfTurn ? "this turn " : "")
|
|
||||||
+ (filterBlockedBy.getMessage().startsWith("except by") ? "" : "by ")
|
|
||||||
+ filterBlockedBy.getMessage();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public CantBeBlockedByAllTargetEffect(final CantBeBlockedByAllTargetEffect effect) {
|
public CantBeBlockedByAllTargetEffect(final CantBeBlockedByAllTargetEffect effect) {
|
||||||
|
@ -45,4 +41,17 @@ public class CantBeBlockedByAllTargetEffect extends RestrictionEffect {
|
||||||
public CantBeBlockedByAllTargetEffect copy() {
|
public CantBeBlockedByAllTargetEffect copy() {
|
||||||
return new CantBeBlockedByAllTargetEffect(this);
|
return new CantBeBlockedByAllTargetEffect(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getText(Mode mode) {
|
||||||
|
if (staticText != null && !staticText.isEmpty()) {
|
||||||
|
return staticText;
|
||||||
|
}
|
||||||
|
return "target "
|
||||||
|
+ mode.getTargets().get(0).getTargetName()
|
||||||
|
+ " can't be blocked "
|
||||||
|
+ (duration == EndOfTurn ? "this turn " : "")
|
||||||
|
+ (filterBlockedBy.getMessage().startsWith("except by") ? "" : "by ")
|
||||||
|
+ filterBlockedBy.getMessage();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,7 +80,7 @@ public class AddCardTypeSourceEffect extends ContinuousEffectImpl {
|
||||||
}
|
}
|
||||||
sb.append(cardType.toString().toLowerCase(Locale.ENGLISH)).append(" ");
|
sb.append(cardType.toString().toLowerCase(Locale.ENGLISH)).append(" ");
|
||||||
}
|
}
|
||||||
sb.append(" in addition to its other types ").append(this.getDuration().toString());
|
sb.append("in addition to its other types ").append(this.getDuration().toString());
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ import mage.counters.Counter;
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
|
import mage.util.CardUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Loki
|
* @author Loki
|
||||||
|
@ -66,7 +67,7 @@ public class RemoveCounterSourceEffect extends OneShotEffect {
|
||||||
private void setText() {
|
private void setText() {
|
||||||
if (counter.getCount() > 1) {
|
if (counter.getCount() > 1) {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append("remove ").append(Integer.toString(counter.getCount())).append(' ').append(counter.getName()).append(" counters from {this}");
|
sb.append("remove ").append(CardUtil.numberToText(counter.getCount())).append(' ').append(counter.getName()).append(" counters from {this}");
|
||||||
staticText = sb.toString();
|
staticText = sb.toString();
|
||||||
} else {
|
} else {
|
||||||
staticText = "remove " + CounterType.findArticle(counter.getName()) + " " + counter.getName() + " counter from {this}";
|
staticText = "remove " + CounterType.findArticle(counter.getName()) + " " + counter.getName() + " counter from {this}";
|
||||||
|
|
Loading…
Reference in a new issue