mirror of
https://github.com/correl/mage.git
synced 2024-11-15 03:00:16 +00:00
[40K] Implemented Canoptek Tomb Sentinel
This commit is contained in:
parent
d6d96e7387
commit
af2a0ebb31
4 changed files with 96 additions and 34 deletions
50
Mage.Sets/src/mage/cards/c/CanoptekTombSentinel.java
Normal file
50
Mage.Sets/src/mage/cards/c/CanoptekTombSentinel.java
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
package mage.cards.c;
|
||||||
|
|
||||||
|
import mage.MageInt;
|
||||||
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.common.EntersBattlefieldFromGraveyardTriggeredAbility;
|
||||||
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
|
import mage.abilities.effects.common.ExileTargetEffect;
|
||||||
|
import mage.abilities.keyword.UnearthAbility;
|
||||||
|
import mage.abilities.keyword.VigilanceAbility;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.SubType;
|
||||||
|
import mage.target.common.TargetNonlandPermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author TheElk801
|
||||||
|
*/
|
||||||
|
public final class CanoptekTombSentinel extends CardImpl {
|
||||||
|
|
||||||
|
public CanoptekTombSentinel(UUID ownerId, CardSetInfo setInfo) {
|
||||||
|
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{4}");
|
||||||
|
|
||||||
|
this.subtype.add(SubType.INSECT);
|
||||||
|
this.power = new MageInt(4);
|
||||||
|
this.toughness = new MageInt(3);
|
||||||
|
|
||||||
|
// Vigilance
|
||||||
|
this.addAbility(VigilanceAbility.getInstance());
|
||||||
|
|
||||||
|
// Exile Cannon -- When Canoptek Tomb Sentinel enters the battlefield from a graveyard, exile up to one target nonland permanent.
|
||||||
|
Ability ability = new EntersBattlefieldFromGraveyardTriggeredAbility(new ExileTargetEffect());
|
||||||
|
ability.addTarget(new TargetNonlandPermanent(0, 1));
|
||||||
|
this.addAbility(ability.withFlavorWord("Exile Cannon"));
|
||||||
|
|
||||||
|
// Unearth {7}
|
||||||
|
this.addAbility(new UnearthAbility(new ManaCostsImpl<>("{7}")));
|
||||||
|
}
|
||||||
|
|
||||||
|
private CanoptekTombSentinel(final CanoptekTombSentinel card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CanoptekTombSentinel copy() {
|
||||||
|
return new CanoptekTombSentinel(this);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,23 +1,21 @@
|
||||||
|
|
||||||
package mage.cards.t;
|
package mage.cards.t;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.MageObject;
|
import mage.MageObject;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.TriggeredAbilityImpl;
|
import mage.abilities.common.EntersBattlefieldFromGraveyardTriggeredAbility;
|
||||||
import mage.abilities.effects.ContinuousEffectImpl;
|
import mage.abilities.effects.ContinuousEffectImpl;
|
||||||
import mage.abilities.keyword.UndyingAbility;
|
import mage.abilities.keyword.UndyingAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
import mage.constants.*;
|
import mage.constants.*;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.events.EntersTheBattlefieldEvent;
|
|
||||||
import mage.game.events.GameEvent;
|
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
import mage.target.common.TargetOpponent;
|
import mage.target.common.TargetOpponent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author noxx
|
* @author noxx
|
||||||
*/
|
*/
|
||||||
|
@ -34,7 +32,9 @@ public final class TreacherousPitDweller extends CardImpl {
|
||||||
this.addAbility(new UndyingAbility());
|
this.addAbility(new UndyingAbility());
|
||||||
|
|
||||||
// When Treacherous Pit-Dweller enters the battlefield from a graveyard, target opponent gains control of it.
|
// When Treacherous Pit-Dweller enters the battlefield from a graveyard, target opponent gains control of it.
|
||||||
this.addAbility(new TreacherousPitDwellerTriggeredAbility());
|
Ability ability = new EntersBattlefieldFromGraveyardTriggeredAbility(new TreacherousPitDwellerEffect());
|
||||||
|
ability.addTarget(new TargetOpponent());
|
||||||
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
private TreacherousPitDweller(final TreacherousPitDweller card) {
|
private TreacherousPitDweller(final TreacherousPitDweller card) {
|
||||||
|
@ -47,34 +47,6 @@ public final class TreacherousPitDweller extends CardImpl {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class TreacherousPitDwellerTriggeredAbility extends TriggeredAbilityImpl {
|
|
||||||
|
|
||||||
public TreacherousPitDwellerTriggeredAbility() {
|
|
||||||
super(Zone.BATTLEFIELD, new TreacherousPitDwellerEffect(), false);
|
|
||||||
addTarget(new TargetOpponent());
|
|
||||||
setTriggerPhrase("When {this} enters the battlefield from a graveyard, ");
|
|
||||||
}
|
|
||||||
|
|
||||||
public TreacherousPitDwellerTriggeredAbility(final TreacherousPitDwellerTriggeredAbility ability) {
|
|
||||||
super(ability);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean checkEventType(GameEvent event, Game game) {
|
|
||||||
return event.getType() == GameEvent.EventType.ENTERS_THE_BATTLEFIELD;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean checkTrigger(GameEvent event, Game game) {
|
|
||||||
return event.getTargetId().equals(getSourceId()) && ((EntersTheBattlefieldEvent) event).getFromZone() == Zone.GRAVEYARD;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public TreacherousPitDwellerTriggeredAbility copy() {
|
|
||||||
return new TreacherousPitDwellerTriggeredAbility(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class TreacherousPitDwellerEffect extends ContinuousEffectImpl {
|
class TreacherousPitDwellerEffect extends ContinuousEffectImpl {
|
||||||
|
|
||||||
public TreacherousPitDwellerEffect() {
|
public TreacherousPitDwellerEffect() {
|
||||||
|
|
|
@ -55,6 +55,7 @@ public final class Warhammer40000 extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Caged Sun", 231, Rarity.RARE, mage.cards.c.CagedSun.class));
|
cards.add(new SetCardInfo("Caged Sun", 231, Rarity.RARE, mage.cards.c.CagedSun.class));
|
||||||
cards.add(new SetCardInfo("Canoptek Scarab Swarm", 150, Rarity.RARE, mage.cards.c.CanoptekScarabSwarm.class));
|
cards.add(new SetCardInfo("Canoptek Scarab Swarm", 150, Rarity.RARE, mage.cards.c.CanoptekScarabSwarm.class));
|
||||||
cards.add(new SetCardInfo("Canoptek Spyder", 151, Rarity.RARE, mage.cards.c.CanoptekSpyder.class));
|
cards.add(new SetCardInfo("Canoptek Spyder", 151, Rarity.RARE, mage.cards.c.CanoptekSpyder.class));
|
||||||
|
cards.add(new SetCardInfo("Canoptek Tomb Sentinel", 152, Rarity.RARE, mage.cards.c.CanoptekTombSentinel.class));
|
||||||
cards.add(new SetCardInfo("Cave of Temptation", 267, Rarity.COMMON, mage.cards.c.CaveOfTemptation.class));
|
cards.add(new SetCardInfo("Cave of Temptation", 267, Rarity.COMMON, mage.cards.c.CaveOfTemptation.class));
|
||||||
cards.add(new SetCardInfo("Chaos Defiler", 110, Rarity.RARE, mage.cards.c.ChaosDefiler.class));
|
cards.add(new SetCardInfo("Chaos Defiler", 110, Rarity.RARE, mage.cards.c.ChaosDefiler.class));
|
||||||
cards.add(new SetCardInfo("Chaos Warp", 205, Rarity.RARE, mage.cards.c.ChaosWarp.class));
|
cards.add(new SetCardInfo("Chaos Warp", 205, Rarity.RARE, mage.cards.c.ChaosWarp.class));
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
package mage.abilities.common;
|
||||||
|
|
||||||
|
import mage.abilities.TriggeredAbilityImpl;
|
||||||
|
import mage.abilities.effects.Effect;
|
||||||
|
import mage.constants.Zone;
|
||||||
|
import mage.game.Game;
|
||||||
|
import mage.game.events.EntersTheBattlefieldEvent;
|
||||||
|
import mage.game.events.GameEvent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author TheElk801
|
||||||
|
*/
|
||||||
|
public class EntersBattlefieldFromGraveyardTriggeredAbility extends TriggeredAbilityImpl {
|
||||||
|
|
||||||
|
public EntersBattlefieldFromGraveyardTriggeredAbility(Effect effect) {
|
||||||
|
super(Zone.BATTLEFIELD, effect, false);
|
||||||
|
setTriggerPhrase("When {this} enters the battlefield from a graveyard, ");
|
||||||
|
}
|
||||||
|
|
||||||
|
public EntersBattlefieldFromGraveyardTriggeredAbility(final EntersBattlefieldFromGraveyardTriggeredAbility ability) {
|
||||||
|
super(ability);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean checkEventType(GameEvent event, Game game) {
|
||||||
|
return event.getType() == GameEvent.EventType.ENTERS_THE_BATTLEFIELD;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean checkTrigger(GameEvent event, Game game) {
|
||||||
|
return event.getTargetId().equals(getSourceId())
|
||||||
|
&& ((EntersTheBattlefieldEvent) event).getFromZone() == Zone.GRAVEYARD;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EntersBattlefieldFromGraveyardTriggeredAbility copy() {
|
||||||
|
return new EntersBattlefieldFromGraveyardTriggeredAbility(this);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue