mirror of
https://github.com/correl/mage.git
synced 2024-11-16 11:09:29 +00:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
396d32cef0
13 changed files with 408 additions and 22 deletions
|
@ -1,3 +1,5 @@
|
||||||
|
$|Generate|TOK:DTK|Djinn Monk|
|
||||||
|
|
||||||
#|Generate|TOK:GRC|Bird|
|
#|Generate|TOK:GRC|Bird|
|
||||||
#|Generate|TOK:GRC|Golem|
|
#|Generate|TOK:GRC|Golem|
|
||||||
#|Generate|TOK:GRC|Human|
|
#|Generate|TOK:GRC|Human|
|
||||||
|
|
78
Mage.Sets/src/mage/sets/dragonsoftarkir/OjutaisSummons.java
Normal file
78
Mage.Sets/src/mage/sets/dragonsoftarkir/OjutaisSummons.java
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
package mage.sets.dragonsoftarkir;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import mage.MageInt;
|
||||||
|
import mage.abilities.effects.common.CreateTokenEffect;
|
||||||
|
import mage.abilities.keyword.FlyingAbility;
|
||||||
|
import mage.abilities.keyword.ReboundAbility;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Rarity;
|
||||||
|
import mage.game.permanent.token.Token;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author fireshoes
|
||||||
|
*/
|
||||||
|
public class OjutaisSummons extends CardImpl {
|
||||||
|
|
||||||
|
public OjutaisSummons(UUID ownerId) {
|
||||||
|
super(ownerId, 68, "Ojutai's Summons", Rarity.COMMON, new CardType[]{CardType.SORCERY}, "{3}{U}{U}");
|
||||||
|
this.expansionSetCode = "DTK";
|
||||||
|
|
||||||
|
// Put a 2/2 blue Djinn Monk creature token with flying onto the battlefield.
|
||||||
|
this.getSpellAbility().addEffect(new CreateTokenEffect(new DjinnMonkToken()));
|
||||||
|
|
||||||
|
// Rebound
|
||||||
|
this.addAbility(new ReboundAbility());
|
||||||
|
}
|
||||||
|
|
||||||
|
public OjutaisSummons(final OjutaisSummons card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public OjutaisSummons copy() {
|
||||||
|
return new OjutaisSummons(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class DjinnMonkToken extends Token {
|
||||||
|
DjinnMonkToken() {
|
||||||
|
super("Djinn Monk", "2/2 blue Djinn Monk creature token");
|
||||||
|
cardType.add(CardType.CREATURE);
|
||||||
|
color.setBlue(true);
|
||||||
|
subtype.add("Djinn");
|
||||||
|
subtype.add("Monk");
|
||||||
|
power = new MageInt(2);
|
||||||
|
toughness = new MageInt(2);
|
||||||
|
addAbility(FlyingAbility.getInstance());
|
||||||
|
}
|
||||||
|
}
|
78
Mage.Sets/src/mage/sets/dragonsoftarkir/ProfoundJourney.java
Normal file
78
Mage.Sets/src/mage/sets/dragonsoftarkir/ProfoundJourney.java
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
package mage.sets.dragonsoftarkir;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect;
|
||||||
|
import mage.abilities.keyword.ReboundAbility;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Rarity;
|
||||||
|
import mage.filter.FilterCard;
|
||||||
|
import mage.filter.predicate.Predicates;
|
||||||
|
import mage.filter.predicate.mageobject.CardTypePredicate;
|
||||||
|
import mage.target.common.TargetCardInYourGraveyard;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author fireshoes
|
||||||
|
*/
|
||||||
|
public class ProfoundJourney extends CardImpl {
|
||||||
|
|
||||||
|
private static final FilterCard filter = new FilterCard("permanent card from your graveyard");
|
||||||
|
|
||||||
|
static {
|
||||||
|
filter.add(Predicates.or(
|
||||||
|
new CardTypePredicate(CardType.ARTIFACT),
|
||||||
|
new CardTypePredicate(CardType.CREATURE),
|
||||||
|
new CardTypePredicate(CardType.ENCHANTMENT),
|
||||||
|
new CardTypePredicate(CardType.LAND),
|
||||||
|
new CardTypePredicate(CardType.PLANESWALKER)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public ProfoundJourney(UUID ownerId) {
|
||||||
|
super(ownerId, 30, "Profound Journey", Rarity.RARE, new CardType[]{CardType.SORCERY}, "{5}{W}{W}");
|
||||||
|
this.expansionSetCode = "DTK";
|
||||||
|
|
||||||
|
// Return target permanent card from your graveyard to the battlefield.
|
||||||
|
this.getSpellAbility().addEffect(new ReturnFromGraveyardToBattlefieldTargetEffect());
|
||||||
|
this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(filter));
|
||||||
|
|
||||||
|
// Rebound
|
||||||
|
this.addAbility(new ReboundAbility());
|
||||||
|
}
|
||||||
|
|
||||||
|
public ProfoundJourney(final ProfoundJourney card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ProfoundJourney copy() {
|
||||||
|
return new ProfoundJourney(this);
|
||||||
|
}
|
||||||
|
}
|
64
Mage.Sets/src/mage/sets/dragonsoftarkir/SandcrafterMage.java
Normal file
64
Mage.Sets/src/mage/sets/dragonsoftarkir/SandcrafterMage.java
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
package mage.sets.dragonsoftarkir;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import mage.MageInt;
|
||||||
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
|
import mage.abilities.effects.keyword.BolsterEffect;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Rarity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author fireshoes
|
||||||
|
*/
|
||||||
|
public class SandcrafterMage extends CardImpl {
|
||||||
|
|
||||||
|
public SandcrafterMage(UUID ownerId) {
|
||||||
|
super(ownerId, 33, "Sandcrafter Mage", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{W}");
|
||||||
|
this.expansionSetCode = "DTK";
|
||||||
|
this.subtype.add("Human");
|
||||||
|
this.subtype.add("Wizard");
|
||||||
|
this.power = new MageInt(2);
|
||||||
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
|
// When Sandcrafter Mage enters the battlefield, bolster 1
|
||||||
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new BolsterEffect(1), false));
|
||||||
|
}
|
||||||
|
|
||||||
|
public SandcrafterMage(final SandcrafterMage card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SandcrafterMage copy() {
|
||||||
|
return new SandcrafterMage(this);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,66 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
package mage.sets.dragonsoftarkir;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import mage.MageInt;
|
||||||
|
import mage.abilities.common.AttacksEachTurnStaticAbility;
|
||||||
|
import mage.abilities.keyword.DashAbility;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Rarity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author fireshoes
|
||||||
|
*/
|
||||||
|
public class SprintingWarbrute extends CardImpl {
|
||||||
|
|
||||||
|
public SprintingWarbrute(UUID ownerId) {
|
||||||
|
super(ownerId, 157, "Sprinting Warbrute", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{4}{R}");
|
||||||
|
this.expansionSetCode = "DTK";
|
||||||
|
this.subtype.add("Ogre");
|
||||||
|
this.subtype.add("Berserker");
|
||||||
|
this.power = new MageInt(5);
|
||||||
|
this.toughness = new MageInt(4);
|
||||||
|
|
||||||
|
// Sprinting Warbrute attacks each turn if able.
|
||||||
|
this.addAbility(new AttacksEachTurnStaticAbility());
|
||||||
|
// Dash {3}{R}
|
||||||
|
this.addAbility(new DashAbility(this, "{3}{R}"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public SprintingWarbrute(final SprintingWarbrute card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SprintingWarbrute copy() {
|
||||||
|
return new SprintingWarbrute(this);
|
||||||
|
}
|
||||||
|
}
|
|
@ -43,7 +43,6 @@ import mage.abilities.keyword.HexproofAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.constants.Outcome;
|
import mage.constants.Outcome;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.permanent.Permanent;
|
|
||||||
import mage.game.permanent.token.AngelToken;
|
import mage.game.permanent.token.AngelToken;
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
import mage.target.targetpointer.FixedTarget;
|
import mage.target.targetpointer.FixedTarget;
|
||||||
|
@ -60,11 +59,10 @@ public class GeistOfSaintTraft extends CardImpl {
|
||||||
this.subtype.add("Spirit");
|
this.subtype.add("Spirit");
|
||||||
this.subtype.add("Cleric");
|
this.subtype.add("Cleric");
|
||||||
|
|
||||||
this.color.setBlue(true);
|
|
||||||
this.color.setWhite(true);
|
|
||||||
this.power = new MageInt(2);
|
this.power = new MageInt(2);
|
||||||
this.toughness = new MageInt(2);
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
|
// Hexproof
|
||||||
this.addAbility(HexproofAbility.getInstance());
|
this.addAbility(HexproofAbility.getInstance());
|
||||||
// Whenever Geist of Saint Traft attacks, put a 4/4 white Angel creature token with flying onto the battlefield tapped and attacking. Exile that token at end of combat.
|
// Whenever Geist of Saint Traft attacks, put a 4/4 white Angel creature token with flying onto the battlefield tapped and attacking. Exile that token at end of combat.
|
||||||
this.addAbility(new AttacksTriggeredAbility(new GeistOfSaintTraftEffect(), false));
|
this.addAbility(new AttacksTriggeredAbility(new GeistOfSaintTraftEffect(), false));
|
||||||
|
@ -97,7 +95,7 @@ class GeistOfSaintTraftEffect extends OneShotEffect {
|
||||||
if (controller != null && token.putOntoBattlefield(1, game, source.getSourceId(), source.getControllerId(), true, true)) {
|
if (controller != null && token.putOntoBattlefield(1, game, source.getSourceId(), source.getControllerId(), true, true)) {
|
||||||
Effect effect = new ExileTargetEffect();
|
Effect effect = new ExileTargetEffect();
|
||||||
effect.setTargetPointer(new FixedTarget(token.getLastAddedToken()));
|
effect.setTargetPointer(new FixedTarget(token.getLastAddedToken()));
|
||||||
CreateDelayedTriggeredAbilityEffect createEffect = new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(effect));
|
CreateDelayedTriggeredAbilityEffect createEffect = new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(effect), false);
|
||||||
createEffect.apply(game, source);
|
createEffect.apply(game, source);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,84 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
package org.mage.test.cards.triggers;
|
||||||
|
|
||||||
|
import mage.constants.PhaseStep;
|
||||||
|
import mage.constants.Zone;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author LevelX2
|
||||||
|
*/
|
||||||
|
public class GeistOfSaintTraftTest extends CardTestPlayerBase {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Geist of Saint Traft - Legendary Spirit Cleric 2/2, {1}{W}{U}
|
||||||
|
*
|
||||||
|
* Hexproof
|
||||||
|
* Whenever Geist of Saint Traft attacks, put a 4/4 white Angel creature token with flying onto the battlefield tapped and attacking. Exile that token at end of combat.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testTokenwillBeCreated() {
|
||||||
|
|
||||||
|
addCard(Zone.BATTLEFIELD, playerB, "Geist of Saint Traft", 1);
|
||||||
|
|
||||||
|
attack(2, playerB, "Geist of Saint Traft");
|
||||||
|
|
||||||
|
setStopAt(2, PhaseStep.END_COMBAT);
|
||||||
|
execute();
|
||||||
|
|
||||||
|
assertPermanentCount(playerB, "Geist of Saint Traft", 1);
|
||||||
|
assertPowerToughness(playerB, "Geist of Saint Traft", 2, 2);
|
||||||
|
assertPermanentCount(playerB, "Angel", 1);
|
||||||
|
assertPowerToughness(playerB, "Angel", 4, 4);
|
||||||
|
|
||||||
|
assertLife(playerA, 14);
|
||||||
|
assertLife(playerB, 20);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testTokenwillBeExiled() {
|
||||||
|
|
||||||
|
addCard(Zone.BATTLEFIELD, playerB, "Geist of Saint Traft", 1);
|
||||||
|
|
||||||
|
attack(2, playerB, "Geist of Saint Traft");
|
||||||
|
|
||||||
|
setStopAt(2, PhaseStep.POSTCOMBAT_MAIN);
|
||||||
|
execute();
|
||||||
|
|
||||||
|
assertPermanentCount(playerB, "Geist of Saint Traft", 1);
|
||||||
|
assertPowerToughness(playerB, "Geist of Saint Traft", 2, 2);
|
||||||
|
assertPermanentCount(playerB, "Angel", 0);
|
||||||
|
|
||||||
|
assertLife(playerA, 14);
|
||||||
|
assertLife(playerB, 20);
|
||||||
|
}
|
||||||
|
}
|
|
@ -241,6 +241,14 @@ public interface Abilities<T extends Ability> extends List<T>, Serializable {
|
||||||
*/
|
*/
|
||||||
boolean containsAll(Abilities<T> abilities);
|
boolean containsAll(Abilities<T> abilities);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Searches this set of abilities for the existence of the give class
|
||||||
|
*
|
||||||
|
* @param classObject
|
||||||
|
* @return True if the passed in class is also in this set of abilities.
|
||||||
|
*/
|
||||||
|
boolean containsClass(Class classObject);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Copies this set of abilities. This copy should be new instances of all
|
* Copies this set of abilities. This copy should be new instances of all
|
||||||
* the contained abilities.
|
* the contained abilities.
|
||||||
|
|
|
@ -49,24 +49,24 @@ public class ExileTargetEffect extends OneShotEffect {
|
||||||
private String exileZone = null;
|
private String exileZone = null;
|
||||||
private UUID exileId = null;
|
private UUID exileId = null;
|
||||||
|
|
||||||
public ExileTargetEffect(UUID exileId, String exileZone, Zone onlyFromZone) {
|
|
||||||
super(Outcome.Exile);
|
|
||||||
this.exileZone = exileZone;
|
|
||||||
this.exileId = exileId;
|
|
||||||
this.onlyFromZone = onlyFromZone;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ExileTargetEffect(UUID exileId, String exileZone) {
|
|
||||||
this(exileId, exileZone, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ExileTargetEffect(String effectText) {
|
public ExileTargetEffect(String effectText) {
|
||||||
this();
|
this();
|
||||||
this.staticText = effectText;
|
this.staticText = effectText;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExileTargetEffect() {
|
public ExileTargetEffect() {
|
||||||
this(null, null);
|
this(null, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
public ExileTargetEffect(UUID exileId, String exileZone) {
|
||||||
|
this(exileId, exileZone, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ExileTargetEffect(UUID exileId, String exileZone, Zone onlyFromZone) {
|
||||||
|
super(Outcome.Exile);
|
||||||
|
this.exileZone = exileZone;
|
||||||
|
this.exileId = exileId;
|
||||||
|
this.onlyFromZone = onlyFromZone;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExileTargetEffect(final ExileTargetEffect effect) {
|
public ExileTargetEffect(final ExileTargetEffect effect) {
|
||||||
|
|
|
@ -2,9 +2,6 @@ package mage.game;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import mage.abilities.Abilities;
|
|
||||||
import mage.abilities.AbilitiesImpl;
|
|
||||||
import mage.abilities.Ability;
|
|
||||||
import mage.counters.Counters;
|
import mage.counters.Counters;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
|
@ -16,7 +16,7 @@ Conflux|conflux|
|
||||||
Dark Ascension|darkascension|
|
Dark Ascension|darkascension|
|
||||||
Darksteel|darksteel|
|
Darksteel|darksteel|
|
||||||
Dissension|dissension|
|
Dissension|dissension|
|
||||||
Dragons of Tarkir[dragonsoftarkir]
|
Dragons of Tarkir|dragonsoftarkir|
|
||||||
Dragon's Maze|dragonsmaze|
|
Dragon's Maze|dragonsmaze|
|
||||||
Duel Decks: Ajani vs. Nicol Bolas|ajanivsnicolbolas|
|
Duel Decks: Ajani vs. Nicol Bolas|ajanivsnicolbolas|
|
||||||
Duel Decks: Divine vs. Demonic|divinevsdemonic|
|
Duel Decks: Divine vs. Demonic|divinevsdemonic|
|
||||||
|
|
|
@ -25571,4 +25571,15 @@ Curse of Thirst|WPN Gateway|81|Special|{4}{B}|Enchantment — Aura Curse|||Encha
|
||||||
Nearheath Stalker|WPN Gateway|82|Special|{4}{R}|Creature — Vampire Rogue|4|1|Undying <i>(When this creature dies, if it had no +1/+1 counters on it, return it to the battlefield under its owner's control with a +1/+1 counter on it.)</i>|
|
Nearheath Stalker|WPN Gateway|82|Special|{4}{R}|Creature — Vampire Rogue|4|1|Undying <i>(When this creature dies, if it had no +1/+1 counters on it, return it to the battlefield under its owner's control with a +1/+1 counter on it.)</i>|
|
||||||
Bloodcrazed Neonate|WPN Gateway|83|Special|{1}{R}|Creature — Vampire|2|1|Bloodcrazed Neonate attacks each turn if able.$Whenever Bloodcrazed Neonate deals combat damage to a player, put a +1/+1 counter on it.|
|
Bloodcrazed Neonate|WPN Gateway|83|Special|{1}{R}|Creature — Vampire|2|1|Bloodcrazed Neonate attacks each turn if able.$Whenever Bloodcrazed Neonate deals combat damage to a player, put a +1/+1 counter on it.|
|
||||||
Boneyard Wurm|WPN Gateway|84|Special|{1}{G}|Creature — Wurm|*|*|Boneyard Wurm's power and toughness are each equal to the number of creature cards in your graveyard.|
|
Boneyard Wurm|WPN Gateway|84|Special|{1}{G}|Creature — Wurm|*|*|Boneyard Wurm's power and toughness are each equal to the number of creature cards in your graveyard.|
|
||||||
Dragonlord's Reaper|Dragons of Tarkir|96|Rare|{5}{B}{B}|Creature - Dragon|5|6|Flying$When Dragonlord's Reaper enters the battlefield, if you cast it from your hand and there are five or more other creatures on the battlefield, destroy all other creatures.|
|
Profound Journey|Dragons of Tarkir|30|R|{5}{W}{W}|Sorcery|||Return target permanent card from your graveyard to the battlefield.$Rebound <i>(If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)</i>|
|
||||||
|
Sandcrafter Mage|Dragons of Tarkir|33|C|{2}{W}|Creature - Human Wizard|2|2|When Sandcrafter Mage enters the battlefield, bolster 1 <i>(Choose a creature with the least toughness among the creatures you control and put a +1/+1 counter on it.)</i>|
|
||||||
|
Ojutai's Summons|Dragons of Tarkir|68|C|{3}{U}{U}|Sorcery|||Put a 2/2 blue Djinn Monk creature token with flying onto the battlefield.$Rebound <i>(If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)</i>|
|
||||||
|
Stratus Dancer|Dragons of Tarkir|80|R|{1}{U}|Creature - Djinn Monk|2|1|Flying$Megamorph {1}{U} <i>You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time from its megamorph cost and put a +1/+1 counter on it.)</i>|
|
||||||
|
Dragonlord's Reaper|Dragons of Tarkir|96|R|{5}{B}{B}|Creature - Dragon|5|6|Flying$When Dragonlord's Reaper enters the battlefield, if you cast it from your hand and there are five or more other creatures on the battlefield, destroy all other creatures.|
|
||||||
|
Sidisi, Undead Vizier|Dragons of Tarkir|120|R|{3}{B}{B}|Legendary Creature - Zombie Naga|4|6|Deathtouch$Exploit <i>(When this creature enters the battlefield, you may sacrifice a creature.)</i>$When Sidisi, Undead Vizier exploits a creature, you may search your library for a card, put it into your hand, then shuffle your library.|
|
||||||
|
Silumgar Butcher|Dragons of Tarkir|122|C|{4}{B}|Creature - Zombie Djinn|3|3|Exploit <i>(When this creature enters the battlefield, you may sacrifice a creature.)</i>$When Silumgar Butcher exploits a creature, target creature gets -3/-3 until end of turn.|
|
||||||
|
Dragon Tempest|Dragons of Tarkir|136|R|{1}{R}|Enchantment|||Whenever a creature with flying enters the battlefield under your control, it gains haste until the end of turn.$Whenever a Dragon enters the battlefield under your control, it deals X damage to target creature or player, where X is the number of Dragons you control.|
|
||||||
|
Sprinting Warbrute|Dragons of Tarkir|157|C|{4}{R}|Creature - Ogre Berserker|5|4|Sprinting Warbrute attacks each turn if able.$Dash {3}{R} <i>(You may cast this spell for its dash cost. If you do, it gains haste, and it's returned from the battlefield to its owner's hand at the beginning of the next end step.)</i>|
|
||||||
|
Aerie Bowmasters|Dragons of Tarkir|170|C||{2}{G}{G}|Creature - Hound Archer|Reach <i>(This creature can block creatures with flying.)</i>$Megamorph {5}{G} <i>(You may cast this card face down as a 2/2 creature for {3}. Turn it face up at any time for its megamorph cost and put a +1/+1 counter on it.)</i>|
|
||||||
|
Stampeding Elk Herd|Dragons of Tarkir|208|C|{3}{G}{G}|Creature - Elk|5|5|<i>Formidable</i> - Whenever Stampeding Elk Herd attacks, if creatures you control have total power 8 or greater, creatures you control gain trample until end of turn.|
|
||||||
|
Dragonlord Silumgar|Dragons of Tarkir|220|M|{4}{U}{B}|Legendary Creature - Elder Dragon|3|5|Flying$Deathtouch$When Dragonlord Silumgar enters the battlefield, gain control of target creature or planeswalker for as long as you control Dragonlord Silumgar.|
|
|
@ -31,7 +31,7 @@ Dissension|DIS|
|
||||||
Deckmasters|DKM|
|
Deckmasters|DKM|
|
||||||
Dragon's Maze|DGM|
|
Dragon's Maze|DGM|
|
||||||
The Dark|DRK|
|
The Dark|DRK|
|
||||||
Dragons of Tarkir[DTK]
|
Dragons of Tarkir|DTK|
|
||||||
Duel Decks: Ajani vs. Nicol Bolas|DDH|
|
Duel Decks: Ajani vs. Nicol Bolas|DDH|
|
||||||
Duel Decks: Elves vs. Goblins|EVG|
|
Duel Decks: Elves vs. Goblins|EVG|
|
||||||
Duel Decks: Divine vs. Demonic|DDC|
|
Duel Decks: Divine vs. Demonic|DDC|
|
||||||
|
|
Loading…
Reference in a new issue