mirror of
https://github.com/magefree/mage.git
synced 2025-12-21 02:52:02 -08:00
[DFT] Implement Rangers' Aetherhive
This commit is contained in:
parent
462a4a0b2d
commit
6670ceb2ae
5 changed files with 80 additions and 26 deletions
|
|
@ -14,9 +14,7 @@ import mage.constants.SubType;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
import mage.filter.FilterStackObject;
|
import mage.filter.FilterStackObject;
|
||||||
import mage.filter.predicate.Predicate;
|
import mage.filter.predicate.other.ExhaustAbilityPredicate;
|
||||||
import mage.game.Game;
|
|
||||||
import mage.game.stack.StackObject;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
@ -28,7 +26,7 @@ public final class AfterburnerExpert extends CardImpl {
|
||||||
private static final FilterStackObject filter = new FilterStackObject("an exhaust ability");
|
private static final FilterStackObject filter = new FilterStackObject("an exhaust ability");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(AfterburnerExpertPredicate.instance);
|
filter.add(ExhaustAbilityPredicate.instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
public AfterburnerExpert(UUID ownerId, CardSetInfo setInfo) {
|
public AfterburnerExpert(UUID ownerId, CardSetInfo setInfo) {
|
||||||
|
|
@ -59,12 +57,3 @@ public final class AfterburnerExpert extends CardImpl {
|
||||||
return new AfterburnerExpert(this);
|
return new AfterburnerExpert(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
enum AfterburnerExpertPredicate implements Predicate<StackObject> {
|
|
||||||
instance;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean apply(StackObject input, Game game) {
|
|
||||||
return input.getStackAbility() instanceof ExhaustAbility;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
||||||
57
Mage.Sets/src/mage/cards/r/RangersAetherhive.java
Normal file
57
Mage.Sets/src/mage/cards/r/RangersAetherhive.java
Normal file
|
|
@ -0,0 +1,57 @@
|
||||||
|
package mage.cards.r;
|
||||||
|
|
||||||
|
import mage.MageInt;
|
||||||
|
import mage.abilities.common.ActivateAbilityTriggeredAbility;
|
||||||
|
import mage.abilities.effects.common.CreateTokenEffect;
|
||||||
|
import mage.abilities.keyword.CrewAbility;
|
||||||
|
import mage.abilities.keyword.VigilanceAbility;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.SetTargetPointer;
|
||||||
|
import mage.constants.SubType;
|
||||||
|
import mage.filter.FilterStackObject;
|
||||||
|
import mage.filter.predicate.other.ExhaustAbilityPredicate;
|
||||||
|
import mage.game.permanent.token.ThopterColorlessToken;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author TheElk801
|
||||||
|
*/
|
||||||
|
public final class RangersAetherhive extends CardImpl {
|
||||||
|
|
||||||
|
private static final FilterStackObject filter = new FilterStackObject("an exhaust ability");
|
||||||
|
|
||||||
|
static {
|
||||||
|
filter.add(ExhaustAbilityPredicate.instance);
|
||||||
|
}
|
||||||
|
|
||||||
|
public RangersAetherhive(UUID ownerId, CardSetInfo setInfo) {
|
||||||
|
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{1}{G}{U}");
|
||||||
|
|
||||||
|
this.subtype.add(SubType.VEHICLE);
|
||||||
|
this.power = new MageInt(3);
|
||||||
|
this.toughness = new MageInt(5);
|
||||||
|
|
||||||
|
// Vigilance
|
||||||
|
this.addAbility(VigilanceAbility.getInstance());
|
||||||
|
|
||||||
|
// Whenever you activate an exhaust ability, create a 1/1 colorless Thopter artifact creature token with flying.
|
||||||
|
this.addAbility(new ActivateAbilityTriggeredAbility(
|
||||||
|
new CreateTokenEffect(new ThopterColorlessToken()), filter, SetTargetPointer.NONE
|
||||||
|
));
|
||||||
|
|
||||||
|
// Crew 1
|
||||||
|
this.addAbility(new CrewAbility(1));
|
||||||
|
}
|
||||||
|
|
||||||
|
private RangersAetherhive(final RangersAetherhive card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RangersAetherhive copy() {
|
||||||
|
return new RangersAetherhive(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -17,9 +17,7 @@ import mage.constants.SetTargetPointer;
|
||||||
import mage.constants.SubType;
|
import mage.constants.SubType;
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
import mage.filter.FilterStackObject;
|
import mage.filter.FilterStackObject;
|
||||||
import mage.filter.predicate.Predicate;
|
import mage.filter.predicate.other.ExhaustAbilityPredicate;
|
||||||
import mage.game.Game;
|
|
||||||
import mage.game.stack.StackObject;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
@ -31,7 +29,7 @@ public final class RangersRefueler extends CardImpl {
|
||||||
private static final FilterStackObject filter = new FilterStackObject("an exhaust ability");
|
private static final FilterStackObject filter = new FilterStackObject("an exhaust ability");
|
||||||
|
|
||||||
static {
|
static {
|
||||||
filter.add(RangersRefuelerPredicate.instance);
|
filter.add(ExhaustAbilityPredicate.instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
public RangersRefueler(UUID ownerId, CardSetInfo setInfo) {
|
public RangersRefueler(UUID ownerId, CardSetInfo setInfo) {
|
||||||
|
|
@ -67,12 +65,3 @@ public final class RangersRefueler extends CardImpl {
|
||||||
return new RangersRefueler(this);
|
return new RangersRefueler(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
enum RangersRefuelerPredicate implements Predicate<StackObject> {
|
|
||||||
instance;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean apply(StackObject input, Game game) {
|
|
||||||
return input.getStackAbility() instanceof ExhaustAbility;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -120,6 +120,7 @@ public final class Aetherdrift extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Pyrewood Gearhulk", 216, Rarity.MYTHIC, mage.cards.p.PyrewoodGearhulk.class));
|
cards.add(new SetCardInfo("Pyrewood Gearhulk", 216, Rarity.MYTHIC, mage.cards.p.PyrewoodGearhulk.class));
|
||||||
cards.add(new SetCardInfo("Quag Feast", 100, Rarity.RARE, mage.cards.q.QuagFeast.class));
|
cards.add(new SetCardInfo("Quag Feast", 100, Rarity.RARE, mage.cards.q.QuagFeast.class));
|
||||||
cards.add(new SetCardInfo("Racers' Scoreboard", 239, Rarity.UNCOMMON, mage.cards.r.RacersScoreboard.class));
|
cards.add(new SetCardInfo("Racers' Scoreboard", 239, Rarity.UNCOMMON, mage.cards.r.RacersScoreboard.class));
|
||||||
|
cards.add(new SetCardInfo("Rangers' Aetherhive", 217, Rarity.UNCOMMON, mage.cards.r.RangersAetherhive.class));
|
||||||
cards.add(new SetCardInfo("Rangers' Refueler", 55, Rarity.UNCOMMON, mage.cards.r.RangersRefueler.class));
|
cards.add(new SetCardInfo("Rangers' Refueler", 55, Rarity.UNCOMMON, mage.cards.r.RangersRefueler.class));
|
||||||
cards.add(new SetCardInfo("Reef Roads", 259, Rarity.UNCOMMON, mage.cards.r.ReefRoads.class));
|
cards.add(new SetCardInfo("Reef Roads", 259, Rarity.UNCOMMON, mage.cards.r.ReefRoads.class));
|
||||||
cards.add(new SetCardInfo("Regal Imperiosaur", 177, Rarity.RARE, mage.cards.r.RegalImperiosaur.class));
|
cards.add(new SetCardInfo("Regal Imperiosaur", 177, Rarity.RARE, mage.cards.r.RegalImperiosaur.class));
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
package mage.filter.predicate.other;
|
||||||
|
|
||||||
|
import mage.abilities.keyword.ExhaustAbility;
|
||||||
|
import mage.filter.predicate.Predicate;
|
||||||
|
import mage.game.Game;
|
||||||
|
import mage.game.stack.StackObject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author TheElk801
|
||||||
|
*/
|
||||||
|
public enum ExhaustAbilityPredicate implements Predicate<StackObject> {
|
||||||
|
instance;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean apply(StackObject input, Game game) {
|
||||||
|
return input.getStackAbility() instanceof ExhaustAbility;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue