-
Notifications
You must be signed in to change notification settings - Fork 784
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'master' into implement-aatchik-emerald-radian
- Loading branch information
Showing
57 changed files
with
2,384 additions
and
40 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
package mage.cards.a; | ||
|
||
import mage.abilities.Ability; | ||
import mage.abilities.common.DrawCardControllerTriggeredAbility; | ||
import mage.abilities.common.SimpleActivatedAbility; | ||
import mage.abilities.common.SimpleStaticAbility; | ||
import mage.abilities.costs.common.TapSourceCost; | ||
import mage.abilities.costs.mana.GenericManaCost; | ||
import mage.abilities.effects.common.DrawCardSourceControllerEffect; | ||
import mage.abilities.effects.common.MillCardsEachPlayerEffect; | ||
import mage.abilities.effects.common.continuous.MaxSpeedGainAbilityEffect; | ||
import mage.abilities.keyword.StartYourEnginesAbility; | ||
import mage.cards.CardImpl; | ||
import mage.cards.CardSetInfo; | ||
import mage.constants.CardType; | ||
import mage.constants.TargetController; | ||
|
||
import java.util.UUID; | ||
|
||
/** | ||
* @author TheElk801 | ||
*/ | ||
public final class AetherSyphon extends CardImpl { | ||
|
||
public AetherSyphon(UUID ownerId, CardSetInfo setInfo) { | ||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}{U}{U}"); | ||
|
||
// Start your engines! | ||
this.addAbility(new StartYourEnginesAbility()); | ||
|
||
// {2}, {T}: Draw a card. | ||
Ability ability = new SimpleActivatedAbility(new DrawCardSourceControllerEffect(1), new GenericManaCost(2)); | ||
ability.addCost(new TapSourceCost()); | ||
this.addAbility(ability); | ||
|
||
// Max speed -- Whenever you draw a card, each opponent mills two cards. | ||
this.addAbility(new SimpleStaticAbility(new MaxSpeedGainAbilityEffect(new DrawCardControllerTriggeredAbility( | ||
new MillCardsEachPlayerEffect(2, TargetController.OPPONENT), false | ||
)))); | ||
} | ||
|
||
private AetherSyphon(final AetherSyphon card) { | ||
super(card); | ||
} | ||
|
||
@Override | ||
public AetherSyphon copy() { | ||
return new AetherSyphon(this); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
package mage.cards.a; | ||
|
||
import mage.abilities.Ability; | ||
import mage.abilities.common.SimpleActivatedAbility; | ||
import mage.abilities.common.SimpleStaticAbility; | ||
import mage.abilities.costs.common.TapSourceCost; | ||
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; | ||
import mage.abilities.effects.common.continuous.MaxSpeedGainAbilityEffect; | ||
import mage.abilities.keyword.HasteAbility; | ||
import mage.abilities.keyword.StartYourEnginesAbility; | ||
import mage.abilities.mana.ColorlessManaAbility; | ||
import mage.cards.CardImpl; | ||
import mage.cards.CardSetInfo; | ||
import mage.constants.CardType; | ||
import mage.target.common.TargetCreaturePermanent; | ||
|
||
import java.util.UUID; | ||
|
||
/** | ||
* @author TheElk801 | ||
*/ | ||
public final class AmonkhetRaceway extends CardImpl { | ||
|
||
public AmonkhetRaceway(UUID ownerId, CardSetInfo setInfo) { | ||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); | ||
|
||
// Start your engines! | ||
this.addAbility(new StartYourEnginesAbility()); | ||
|
||
// {T}: Add {C}. | ||
this.addAbility(new ColorlessManaAbility()); | ||
|
||
// Max speed -- {T}: Target creature gains haste until end of turn. | ||
Ability ability = new SimpleActivatedAbility(new GainAbilityTargetEffect(HasteAbility.getInstance()), new TapSourceCost()); | ||
ability.addTarget(new TargetCreaturePermanent()); | ||
this.addAbility(new SimpleStaticAbility(new MaxSpeedGainAbilityEffect(ability))); | ||
} | ||
|
||
private AmonkhetRaceway(final AmonkhetRaceway card) { | ||
super(card); | ||
} | ||
|
||
@Override | ||
public AmonkhetRaceway copy() { | ||
return new AmonkhetRaceway(this); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
package mage.cards.a; | ||
|
||
import mage.MageInt; | ||
import mage.abilities.Ability; | ||
import mage.abilities.common.SimpleActivatedAbility; | ||
import mage.abilities.costs.common.TapSourceCost; | ||
import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect; | ||
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; | ||
import mage.abilities.keyword.CrewAbility; | ||
import mage.abilities.keyword.LifelinkAbility; | ||
import mage.cards.CardImpl; | ||
import mage.cards.CardSetInfo; | ||
import mage.constants.CardType; | ||
import mage.constants.ComparisonType; | ||
import mage.constants.SubType; | ||
import mage.filter.FilterPermanent; | ||
import mage.filter.common.FilterControlledCreaturePermanent; | ||
import mage.filter.predicate.mageobject.PowerPredicate; | ||
import mage.target.TargetPermanent; | ||
|
||
import java.util.UUID; | ||
|
||
/** | ||
* @author TheElk801 | ||
*/ | ||
public final class ApocalypseRunner extends CardImpl { | ||
|
||
private static final FilterPermanent filter = new FilterControlledCreaturePermanent("creature you control with power 2 or less"); | ||
|
||
static { | ||
filter.add(new PowerPredicate(ComparisonType.FEWER_THAN, 3)); | ||
} | ||
|
||
public ApocalypseRunner(UUID ownerId, CardSetInfo setInfo) { | ||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}{B}{R}"); | ||
|
||
this.subtype.add(SubType.VEHICLE); | ||
this.power = new MageInt(6); | ||
this.toughness = new MageInt(5); | ||
|
||
// {T}: Target creature you control with power 2 or less gains lifelink until end of turn and can't be blocked this turn. | ||
Ability ability = new SimpleActivatedAbility(new GainAbilityTargetEffect(LifelinkAbility.getInstance()), new TapSourceCost()); | ||
ability.addEffect(new CantBeBlockedTargetEffect().setText("and can't be blocked this turn")); | ||
ability.addTarget(new TargetPermanent(filter)); | ||
this.addAbility(ability); | ||
|
||
// Crew 3 | ||
this.addAbility(new CrewAbility(3)); | ||
} | ||
|
||
private ApocalypseRunner(final ApocalypseRunner card) { | ||
super(card); | ||
} | ||
|
||
@Override | ||
public ApocalypseRunner copy() { | ||
return new ApocalypseRunner(this); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
package mage.cards.a; | ||
|
||
import mage.abilities.Ability; | ||
import mage.abilities.common.SimpleActivatedAbility; | ||
import mage.abilities.common.SimpleStaticAbility; | ||
import mage.abilities.costs.common.DiscardCardCost; | ||
import mage.abilities.costs.common.TapSourceCost; | ||
import mage.abilities.costs.mana.GenericManaCost; | ||
import mage.abilities.effects.common.DrawCardSourceControllerEffect; | ||
import mage.abilities.effects.common.continuous.MaxSpeedGainAbilityEffect; | ||
import mage.abilities.keyword.StartYourEnginesAbility; | ||
import mage.abilities.mana.ColorlessManaAbility; | ||
import mage.cards.CardImpl; | ||
import mage.cards.CardSetInfo; | ||
import mage.constants.CardType; | ||
|
||
import java.util.UUID; | ||
|
||
/** | ||
* @author TheElk801 | ||
*/ | ||
public final class AvishkarRaceway extends CardImpl { | ||
|
||
public AvishkarRaceway(UUID ownerId, CardSetInfo setInfo) { | ||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); | ||
|
||
// Start your engines! | ||
this.addAbility(new StartYourEnginesAbility()); | ||
|
||
// {T}: Add {C}. | ||
this.addAbility(new ColorlessManaAbility()); | ||
|
||
// Max speed -- {3}, {T}, Discard a card: Draw a card. | ||
Ability ability = new SimpleActivatedAbility(new DrawCardSourceControllerEffect(1), new GenericManaCost(3)); | ||
ability.addCost(new TapSourceCost()); | ||
ability.addCost(new DiscardCardCost()); | ||
this.addAbility(new SimpleStaticAbility(new MaxSpeedGainAbilityEffect(ability))); | ||
} | ||
|
||
private AvishkarRaceway(final AvishkarRaceway card) { | ||
super(card); | ||
} | ||
|
||
@Override | ||
public AvishkarRaceway copy() { | ||
return new AvishkarRaceway(this); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
package mage.cards.b; | ||
|
||
import mage.MageInt; | ||
import mage.abilities.Ability; | ||
import mage.abilities.common.SimpleStaticAbility; | ||
import mage.abilities.costs.mana.ManaCostsImpl; | ||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; | ||
import mage.abilities.effects.common.cost.AbilitiesCostReductionControllerEffect; | ||
import mage.abilities.effects.common.counter.AddCountersSourceEffect; | ||
import mage.abilities.keyword.ExhaustAbility; | ||
import mage.abilities.keyword.TrampleAbility; | ||
import mage.cards.CardImpl; | ||
import mage.cards.CardSetInfo; | ||
import mage.constants.CardType; | ||
import mage.constants.Duration; | ||
import mage.constants.SubType; | ||
import mage.counters.CounterType; | ||
import mage.filter.FilterPermanent; | ||
import mage.filter.predicate.Predicates; | ||
|
||
import java.util.UUID; | ||
|
||
/** | ||
* @author TheElk801 | ||
*/ | ||
public final class BoomScholar extends CardImpl { | ||
|
||
private static final FilterPermanent filter = new FilterPermanent("creatures and Vehicles"); | ||
|
||
static { | ||
filter.add(Predicates.or( | ||
CardType.CREATURE.getPredicate(), | ||
SubType.VEHICLE.getPredicate() | ||
)); | ||
} | ||
|
||
public BoomScholar(UUID ownerId, CardSetInfo setInfo) { | ||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{G}"); | ||
|
||
this.subtype.add(SubType.GOBLIN); | ||
this.subtype.add(SubType.ADVISOR); | ||
this.power = new MageInt(3); | ||
this.toughness = new MageInt(3); | ||
|
||
// Exhaust abilities of other permanents you control cost {2} less to activate. | ||
this.addAbility(new SimpleStaticAbility(new AbilitiesCostReductionControllerEffect( | ||
ExhaustAbility.class, "", 2, true | ||
).setText("exhaust abilities of other permanents you control cost {2} less to activate"))); | ||
|
||
// Exhaust -- {4}{R}{G}: Creatures and Vehicles you control gain trample until end of turn. Put two +1/+1 counters on this creature. | ||
Ability ability = new ExhaustAbility(new GainAbilityControlledEffect( | ||
TrampleAbility.getInstance(), Duration.EndOfTurn, filter | ||
), new ManaCostsImpl<>("{4}{R}{G}")); | ||
ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2))); | ||
this.addAbility(ability); | ||
} | ||
|
||
private BoomScholar(final BoomScholar card) { | ||
super(card); | ||
} | ||
|
||
@Override | ||
public BoomScholar copy() { | ||
return new BoomScholar(this); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
package mage.cards.b; | ||
|
||
import mage.MageInt; | ||
import mage.abilities.Ability; | ||
import mage.abilities.common.AttacksWhileSaddledTriggeredAbility; | ||
import mage.abilities.effects.common.continuous.BoostSourceEffect; | ||
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; | ||
import mage.abilities.keyword.FlyingAbility; | ||
import mage.abilities.keyword.SaddleAbility; | ||
import mage.abilities.keyword.VigilanceAbility; | ||
import mage.cards.CardImpl; | ||
import mage.cards.CardSetInfo; | ||
import mage.constants.CardType; | ||
import mage.constants.Duration; | ||
import mage.constants.SubType; | ||
|
||
import java.util.UUID; | ||
|
||
/** | ||
* @author TheElk801 | ||
*/ | ||
public final class BrightfieldGlider extends CardImpl { | ||
|
||
public BrightfieldGlider(UUID ownerId, CardSetInfo setInfo) { | ||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}"); | ||
|
||
this.subtype.add(SubType.POSSUM); | ||
this.subtype.add(SubType.MOUNT); | ||
this.power = new MageInt(1); | ||
this.toughness = new MageInt(1); | ||
|
||
// Vigilance | ||
this.addAbility(VigilanceAbility.getInstance()); | ||
|
||
// Whenever this creature attacks while saddled, it gets +1/+2 and gains flying until end of turn. | ||
Ability ability = new AttacksWhileSaddledTriggeredAbility(new BoostSourceEffect( | ||
1, 2, Duration.EndOfTurn | ||
).setText("it gets +1/+2")); | ||
ability.addEffect(new GainAbilitySourceEffect( | ||
FlyingAbility.getInstance(), Duration.EndOfTurn | ||
).setText("and gains flying until end of turn")); | ||
this.addAbility(ability); | ||
|
||
// Saddle 3 | ||
this.addAbility(new SaddleAbility(3)); | ||
} | ||
|
||
private BrightfieldGlider(final BrightfieldGlider card) { | ||
super(card); | ||
} | ||
|
||
@Override | ||
public BrightfieldGlider copy() { | ||
return new BrightfieldGlider(this); | ||
} | ||
} |
Oops, something went wrong.