forked from External/mage
[WHO] Implement Banish to Another Universe, Crisis of Conscience, Cyberman Patrol, Cybermen Squadron, Dalek Squadron (#11272)
* [WHO] Implement Banish to Another Universe * [WHO] Implement Crisis of Conscience * [WHO] Implement Cyberman Patrol * [WHO] Implement Cybermen Squadron * [WHO] Implement Dalek Squadron
This commit is contained in:
parent
0c79b96a6a
commit
5c4cc02415
7 changed files with 242 additions and 0 deletions
55
Mage.Sets/src/mage/cards/b/BanishToAnotherUniverse.java
Normal file
55
Mage.Sets/src/mage/cards/b/BanishToAnotherUniverse.java
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
package mage.cards.b;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
|
||||
import mage.abilities.effects.common.AffinityEffect;
|
||||
import mage.abilities.effects.common.ExileUntilSourceLeavesEffect;
|
||||
import mage.abilities.hint.Hint;
|
||||
import mage.abilities.hint.ValueHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.filter.predicate.mageobject.HistoricPredicate;
|
||||
import mage.target.TargetPermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author Susucr
|
||||
*/
|
||||
public final class BanishToAnotherUniverse extends CardImpl {
|
||||
|
||||
private static final FilterControlledPermanent filter = new FilterControlledPermanent("historic permanents");
|
||||
private static final Hint hint = new ValueHint("historic permanents you control", new PermanentsOnBattlefieldCount(filter));
|
||||
|
||||
static {
|
||||
filter.add(HistoricPredicate.instance);
|
||||
}
|
||||
|
||||
public BanishToAnotherUniverse(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{4}{W}");
|
||||
|
||||
// Affinity for historic permanents
|
||||
this.addAbility(new SimpleStaticAbility(Zone.ALL, new AffinityEffect(filter))
|
||||
.addHint(hint));
|
||||
|
||||
// When Banish to Another Universe enters the battlefield, exile target nonland permanent an opponent controls until Banish to Another Universe leaves the battlefield.
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(new ExileUntilSourceLeavesEffect());
|
||||
ability.addTarget(new TargetPermanent(StaticFilters.FILTER_OPPONENTS_PERMANENT_NON_LAND));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
private BanishToAnotherUniverse(final BanishToAnotherUniverse card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BanishToAnotherUniverse copy() {
|
||||
return new BanishToAnotherUniverse(this);
|
||||
}
|
||||
}
|
||||
47
Mage.Sets/src/mage/cards/c/CrisisOfConscience.java
Normal file
47
Mage.Sets/src/mage/cards/c/CrisisOfConscience.java
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.abilities.Mode;
|
||||
import mage.abilities.effects.common.DestroyAllEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.filter.predicate.permanent.TokenPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author Susucr
|
||||
*/
|
||||
public final class CrisisOfConscience extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterPermanent("tokens");
|
||||
private static final FilterPermanent filter2 = new FilterPermanent("nonland, nontoken permanents");
|
||||
|
||||
static {
|
||||
filter.add(TokenPredicate.TRUE);
|
||||
filter2.add(Predicates.not(CardType.LAND.getPredicate()));
|
||||
filter2.add(TokenPredicate.FALSE);
|
||||
}
|
||||
|
||||
public CrisisOfConscience(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{W}{W}");
|
||||
|
||||
// Choose one --
|
||||
// * Destroy all tokens.
|
||||
this.getSpellAbility().addEffect(new DestroyAllEffect(filter));
|
||||
|
||||
// * Destroy all nonland, nontoken permanents.
|
||||
this.getSpellAbility().addMode(new Mode(new DestroyAllEffect(filter2)));
|
||||
}
|
||||
|
||||
private CrisisOfConscience(final CrisisOfConscience card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CrisisOfConscience copy() {
|
||||
return new CrisisOfConscience(this);
|
||||
}
|
||||
}
|
||||
43
Mage.Sets/src/mage/cards/c/CybermanPatrol.java
Normal file
43
Mage.Sets/src/mage/cards/c/CybermanPatrol.java
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
||||
import mage.abilities.keyword.AfflictAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author Susucr
|
||||
*/
|
||||
public final class CybermanPatrol extends CardImpl {
|
||||
|
||||
public CybermanPatrol(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}");
|
||||
|
||||
this.subtype.add(SubType.CYBERMAN);
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
// Artifact creatures you control have afflict 3.
|
||||
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
|
||||
new AfflictAbility(3), Duration.WhileOnBattlefield,
|
||||
StaticFilters.FILTER_PERMANENTS_ARTIFACT_CREATURE
|
||||
)));
|
||||
}
|
||||
|
||||
private CybermanPatrol(final CybermanPatrol card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CybermanPatrol copy() {
|
||||
return new CybermanPatrol(this);
|
||||
}
|
||||
}
|
||||
51
Mage.Sets/src/mage/cards/c/CybermenSquadron.java
Normal file
51
Mage.Sets/src/mage/cards/c/CybermenSquadron.java
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
||||
import mage.abilities.keyword.MyriadAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.common.FilterArtifactCreaturePermanent;
|
||||
import mage.filter.predicate.Predicates;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author Susucr
|
||||
*/
|
||||
public final class CybermenSquadron extends CardImpl {
|
||||
|
||||
private static final FilterArtifactCreaturePermanent filter =
|
||||
new FilterArtifactCreaturePermanent("nonlegendary artifact creatures");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.not(SuperType.LEGENDARY.getPredicate()));
|
||||
}
|
||||
|
||||
public CybermenSquadron(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{7}");
|
||||
|
||||
this.subtype.add(SubType.CYBERMAN);
|
||||
this.power = new MageInt(5);
|
||||
this.toughness = new MageInt(5);
|
||||
|
||||
// Nonlegendary artifact creatures you control have myriad.
|
||||
this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect(
|
||||
new MyriadAbility(), Duration.WhileOnBattlefield, filter
|
||||
)));
|
||||
}
|
||||
|
||||
private CybermenSquadron(final CybermenSquadron card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CybermenSquadron copy() {
|
||||
return new CybermenSquadron(this);
|
||||
}
|
||||
}
|
||||
40
Mage.Sets/src/mage/cards/d/DalekSquadron.java
Normal file
40
Mage.Sets/src/mage/cards/d/DalekSquadron.java
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
package mage.cards.d;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.keyword.MenaceAbility;
|
||||
import mage.abilities.keyword.MyriadAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author Susucr
|
||||
*/
|
||||
public final class DalekSquadron extends CardImpl {
|
||||
|
||||
public DalekSquadron(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}{B}");
|
||||
|
||||
this.subtype.add(SubType.DALEK);
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
|
||||
// Myriad
|
||||
this.addAbility(new MyriadAbility());
|
||||
}
|
||||
|
||||
private DalekSquadron(final DalekSquadron card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DalekSquadron copy() {
|
||||
return new DalekSquadron(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -22,6 +22,7 @@ public final class DoctorWho extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("As Foretold", 214, Rarity.RARE, mage.cards.a.AsForetold.class));
|
||||
cards.add(new SetCardInfo("Ash Barrens", 257, Rarity.UNCOMMON, mage.cards.a.AshBarrens.class));
|
||||
cards.add(new SetCardInfo("Astrid Peth", 11, Rarity.RARE, mage.cards.a.AstridPeth.class));
|
||||
cards.add(new SetCardInfo("Banish to Another Universe", 13, Rarity.UNCOMMON, mage.cards.b.BanishToAnotherUniverse.class));
|
||||
cards.add(new SetCardInfo("Beast Within", 228, Rarity.UNCOMMON, mage.cards.b.BeastWithin.class));
|
||||
cards.add(new SetCardInfo("Blasphemous Act", 224, Rarity.RARE, mage.cards.b.BlasphemousAct.class));
|
||||
cards.add(new SetCardInfo("Canopy Vista", 258, Rarity.RARE, mage.cards.c.CanopyVista.class));
|
||||
|
|
@ -36,9 +37,13 @@ public final class DoctorWho extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Command Tower", 263, Rarity.COMMON, mage.cards.c.CommandTower.class));
|
||||
cards.add(new SetCardInfo("Commander's Sphere", 240, Rarity.COMMON, mage.cards.c.CommandersSphere.class));
|
||||
cards.add(new SetCardInfo("Creeping Tar Pit", 267, Rarity.RARE, mage.cards.c.CreepingTarPit.class));
|
||||
cards.add(new SetCardInfo("Crisis of Conscience", 17, Rarity.RARE, mage.cards.c.CrisisOfConscience.class));
|
||||
cards.add(new SetCardInfo("Crumbling Necropolis", 268, Rarity.UNCOMMON, mage.cards.c.CrumblingNecropolis.class));
|
||||
cards.add(new SetCardInfo("Cultivate", 230, Rarity.COMMON, mage.cards.c.Cultivate.class));
|
||||
cards.add(new SetCardInfo("Cursed Mirror", 226, Rarity.RARE, mage.cards.c.CursedMirror.class));
|
||||
cards.add(new SetCardInfo("Cyberman Patrol", 174, Rarity.UNCOMMON, mage.cards.c.CybermanPatrol.class));
|
||||
cards.add(new SetCardInfo("Cybermen Squadron", 176, Rarity.RARE, mage.cards.c.CybermenSquadron.class));
|
||||
cards.add(new SetCardInfo("Dalek Squadron", 65, Rarity.UNCOMMON, mage.cards.d.DalekSquadron.class));
|
||||
cards.add(new SetCardInfo("Darkwater Catacombs", 269, Rarity.RARE, mage.cards.d.DarkwaterCatacombs.class));
|
||||
cards.add(new SetCardInfo("Day of Destiny", 206, Rarity.RARE, mage.cards.d.DayOfDestiny.class));
|
||||
cards.add(new SetCardInfo("Deserted Beach", 270, Rarity.RARE, mage.cards.d.DesertedBeach.class));
|
||||
|
|
|
|||
|
|
@ -127,6 +127,7 @@ public enum SubType {
|
|||
CROLUTE("Crolute", SubTypeSet.CreatureType, true), // Star Wars
|
||||
CTAN("C'tan", SubTypeSet.CreatureType),
|
||||
CUSTODES("Custodes", SubTypeSet.CreatureType),
|
||||
CYBERMAN("Cyberman", SubTypeSet.CreatureType),
|
||||
CYBORG("Cyborg", SubTypeSet.CreatureType, true), // Star Wars
|
||||
CYCLOPS("Cyclops", SubTypeSet.CreatureType),
|
||||
// D
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue