mirror of
https://github.com/correl/mage.git
synced 2024-12-26 11:09:27 +00:00
Merge branch 'master' into master
This commit is contained in:
commit
6ba9edb799
17 changed files with 513 additions and 18 deletions
91
Mage.Sets/src/mage/cards/a/AppealAuthority.java
Normal file
91
Mage.Sets/src/mage/cards/a/AppealAuthority.java
Normal file
|
@ -0,0 +1,91 @@
|
|||
/*
|
||||
* 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.cards.a;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.dynamicvalue.DynamicValue;
|
||||
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
|
||||
import mage.abilities.effects.common.TapTargetEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
||||
import mage.abilities.keyword.AftermathAbility;
|
||||
import mage.abilities.keyword.TrampleAbility;
|
||||
import mage.abilities.keyword.VigilanceAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.SplitCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SpellAbilityType;
|
||||
import mage.constants.TargetController;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.ControllerPredicate;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public class AppealAuthority extends SplitCard {
|
||||
|
||||
public AppealAuthority(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, new CardType[]{CardType.SORCERY}, "{G}", "{1}{W}", SpellAbilityType.SPLIT_AFTERMATH);
|
||||
|
||||
// Appeal
|
||||
// Until end of turn, target creature gains trample and gets +X/+X, where X is the number of creatures you control.
|
||||
getLeftHalfCard().getSpellAbility().addEffect(new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn)
|
||||
.setText("Until end of turn, target creature gains trample"));
|
||||
DynamicValue controlledCreatures = new PermanentsOnBattlefieldCount(new FilterControlledCreaturePermanent("the number of creatures you control"));
|
||||
getLeftHalfCard().getSpellAbility().addEffect(new BoostTargetEffect(controlledCreatures, controlledCreatures, Duration.EndOfTurn, true)
|
||||
.setText("and gets +X/+X, where X is the number of creatures you control"));
|
||||
getLeftHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||
|
||||
// Authority
|
||||
// Aftermath
|
||||
((CardImpl) (getRightHalfCard())).addAbility(new AftermathAbility().setRuleAtTheTop(true));
|
||||
// Tap up to two target creatures your opponents control. Creatures you control gain vigilance until end of turn.
|
||||
getRightHalfCard().getSpellAbility().addEffect(new TapTargetEffect());
|
||||
FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures your opponents control");
|
||||
filter.add(new ControllerPredicate(TargetController.OPPONENT));
|
||||
getRightHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent(0, 2, filter, false));
|
||||
getRightHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect(VigilanceAbility.getInstance(),
|
||||
Duration.EndOfTurn, new FilterControlledCreaturePermanent("creatures")));
|
||||
|
||||
}
|
||||
|
||||
public AppealAuthority(final AppealAuthority card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AppealAuthority copy() {
|
||||
return new AppealAuthority(this);
|
||||
}
|
||||
}
|
75
Mage.Sets/src/mage/cards/b/BurningFistMinotaur.java
Normal file
75
Mage.Sets/src/mage/cards/b/BurningFistMinotaur.java
Normal file
|
@ -0,0 +1,75 @@
|
|||
/*
|
||||
* 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.cards.b;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.DiscardCardCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||
import mage.abilities.keyword.FirstStrikeAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Zone;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public class BurningFistMinotaur extends CardImpl {
|
||||
|
||||
public BurningFistMinotaur(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
|
||||
|
||||
this.subtype.add("Minotaur");
|
||||
this.subtype.add("Wizard");
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
// First strike
|
||||
this.addAbility(FirstStrikeAbility.getInstance());
|
||||
|
||||
// {1}{R}, Discard a card: Burning-Fist Minotaur gets +2/+0 until end of turn.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 0, Duration.EndOfTurn), new ManaCostsImpl("{1}{R}"));
|
||||
ability.addCost(new DiscardCardCost());
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
public BurningFistMinotaur(final BurningFistMinotaur card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BurningFistMinotaur copy() {
|
||||
return new BurningFistMinotaur(this);
|
||||
}
|
||||
}
|
36
Mage.Sets/src/mage/cards/c/ChaosMaw.java
Normal file
36
Mage.Sets/src/mage/cards/c/ChaosMaw.java
Normal file
|
@ -0,0 +1,36 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.effects.common.DamageAllEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.AnotherPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class ChaosMaw extends CardImpl {
|
||||
private static FilterCreaturePermanent filter = new FilterCreaturePermanent("other creature");
|
||||
static {
|
||||
filter.add(new AnotherPredicate());
|
||||
}
|
||||
public ChaosMaw(UUID ownerId, CardSetInfo cardSetInfo){
|
||||
super(ownerId, cardSetInfo, new CardType[]{CardType.CREATURE}, "{5}{R}{R}");
|
||||
subtype.add("Hellion");
|
||||
power = new MageInt(6);
|
||||
toughness = new MageInt(6);
|
||||
|
||||
// When Chaos Maw enters the battlefield, it deals 3 damage to each other creature
|
||||
addAbility(new EntersBattlefieldTriggeredAbility(new DamageAllEffect(3, filter)));
|
||||
}
|
||||
|
||||
public ChaosMaw(final ChaosMaw chaosMaw){
|
||||
super(chaosMaw);
|
||||
}
|
||||
|
||||
public ChaosMaw copy(){
|
||||
return new ChaosMaw(this);
|
||||
}
|
||||
}
|
61
Mage.Sets/src/mage/cards/c/ConsignOblivion.java
Normal file
61
Mage.Sets/src/mage/cards/c/ConsignOblivion.java
Normal file
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
* 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.cards.c;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.SplitCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SpellAbilityType;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public class ConsignOblivion extends SplitCard {
|
||||
|
||||
public ConsignOblivion(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{}, new CardType[]{}, "", "", SpellAbilityType.SPLIT_AFTERMATH);
|
||||
|
||||
|
||||
getLeftHalfCard().getSpellAbility().addEffect(new Effect...);
|
||||
|
||||
getRightHalfCard().getSpellAbility().addEffect(new Effect...);
|
||||
|
||||
}
|
||||
|
||||
public ConsignOblivion(final ConsignOblivion card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConsignOblivion copy() {
|
||||
return new ConsignOblivion(this);
|
||||
}
|
||||
}
|
26
Mage.Sets/src/mage/cards/d/DutifulServants.java
Normal file
26
Mage.Sets/src/mage/cards/d/DutifulServants.java
Normal file
|
@ -0,0 +1,26 @@
|
|||
package mage.cards.d;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class DutifulServants extends CardImpl {
|
||||
|
||||
public DutifulServants(UUID ownerId, CardSetInfo cardSetInfo){
|
||||
super(ownerId, cardSetInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
|
||||
subtype.add("Zombie");
|
||||
power = new MageInt(2);
|
||||
toughness = new MageInt(5);
|
||||
}
|
||||
|
||||
public DutifulServants(final DutifulServants dutifulServants){
|
||||
super(dutifulServants);
|
||||
}
|
||||
|
||||
public DutifulServants copy(){
|
||||
return new DutifulServants(this);
|
||||
}
|
||||
}
|
|
@ -27,7 +27,6 @@
|
|||
*/
|
||||
package mage.cards.h;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.effects.common.DestroyAllEffect;
|
||||
|
@ -39,6 +38,8 @@ import mage.constants.ComparisonType;
|
|||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterNonlandPermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author fireshoes
|
||||
|
@ -51,7 +52,7 @@ public class HourOfRevelation extends CardImpl {
|
|||
// Hour of Revelation costs {3} less to cast if there are ten or more nonland permanents on the battlefield.
|
||||
SimpleStaticAbility ability = new SimpleStaticAbility(Zone.STACK,
|
||||
new SpellCostReductionSourceEffect(3, new PermanentsOnTheBattlefieldCondition(
|
||||
new FilterNonlandPermanent("there are ten or more nonland permanents on the battlefield"), ComparisonType.MORE_THAN, 9)));
|
||||
new FilterNonlandPermanent("there are ten or more nonland permanents on the battlefield"), ComparisonType.MORE_THAN, 9, false)));
|
||||
ability.setRuleAtTheTop(true);
|
||||
this.addAbility(ability);
|
||||
|
||||
|
|
35
Mage.Sets/src/mage/cards/r/RampagingHippo.java
Normal file
35
Mage.Sets/src/mage/cards/r/RampagingHippo.java
Normal file
|
@ -0,0 +1,35 @@
|
|||
package mage.cards.r;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.keyword.CyclingAbility;
|
||||
import mage.abilities.keyword.TrampleAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class RampagingHippo extends CardImpl {
|
||||
|
||||
public RampagingHippo(UUID cardID, CardSetInfo cardSetInfo){
|
||||
super(cardID, cardSetInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
|
||||
subtype.add("Hippo");
|
||||
power = new MageInt(5);
|
||||
toughness = new MageInt(6);
|
||||
|
||||
// Trample
|
||||
addAbility(TrampleAbility.getInstance());
|
||||
|
||||
// Cycling {2}
|
||||
addAbility(new CyclingAbility(new ManaCostsImpl("2")));
|
||||
}
|
||||
|
||||
public RampagingHippo(final RampagingHippo rampagingHippo){
|
||||
super(rampagingHippo);
|
||||
}
|
||||
|
||||
public RampagingHippo copy(){
|
||||
return new RampagingHippo(this);
|
||||
}
|
||||
}
|
31
Mage.Sets/src/mage/cards/s/ScroungerOfSouls.java
Normal file
31
Mage.Sets/src/mage/cards/s/ScroungerOfSouls.java
Normal file
|
@ -0,0 +1,31 @@
|
|||
package mage.cards.s;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.keyword.LifelinkAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class ScroungerOfSouls extends CardImpl {
|
||||
|
||||
public ScroungerOfSouls(UUID cardID, CardSetInfo cardSetInfo){
|
||||
super(cardID, cardSetInfo, new CardType[]{CardType.CREATURE}, "{4}{B}");
|
||||
subtype.add("Horror");
|
||||
|
||||
power = new MageInt(3);
|
||||
toughness = new MageInt(4);
|
||||
|
||||
// Lifelink
|
||||
addAbility(LifelinkAbility.getInstance());
|
||||
|
||||
}
|
||||
|
||||
public ScroungerOfSouls(final ScroungerOfSouls scroungerOfSouls){
|
||||
super(scroungerOfSouls);
|
||||
}
|
||||
public ScroungerOfSouls copy(){
|
||||
return new ScroungerOfSouls(this);
|
||||
}
|
||||
}
|
|
@ -27,8 +27,6 @@
|
|||
*/
|
||||
package mage.sets;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import mage.cards.CardGraphicInfo;
|
||||
import mage.cards.ExpansionSet;
|
||||
import mage.cards.FrameStyle;
|
||||
|
@ -38,6 +36,9 @@ import mage.cards.repository.CardRepository;
|
|||
import mage.constants.Rarity;
|
||||
import mage.constants.SetType;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author fireshoes
|
||||
*/
|
||||
|
@ -69,12 +70,15 @@ public class HourOfDevastation extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Adorned Pouncer", 2, Rarity.RARE, mage.cards.a.AdornedPouncer.class));
|
||||
cards.add(new SetCardInfo("Angel of Condemnation", 3, Rarity.RARE, mage.cards.a.AngelOfCondemnation.class));
|
||||
cards.add(new SetCardInfo("Angel of the God-Pharaoh", 4, Rarity.UNCOMMON, mage.cards.a.AngelOfTheGodPharaoh.class));
|
||||
cards.add(new SetCardInfo("Appeal // Authority", 152, Rarity.UNCOMMON, mage.cards.a.AppealAuthority.class));
|
||||
cards.add(new SetCardInfo("Avid Reclaimer", 201, Rarity.UNCOMMON, mage.cards.a.AvidReclaimer.class));
|
||||
cards.add(new SetCardInfo("Bontu's Last Reckoning", 60, Rarity.RARE, mage.cards.b.BontusLastReckoning.class));
|
||||
cards.add(new SetCardInfo("Brambleweft Behemoth", 202, Rarity.COMMON, mage.cards.b.BrambleweftBehemoth.class));
|
||||
cards.add(new SetCardInfo("Burning-Fist Minotaur", 85, Rarity.UNCOMMON, mage.cards.b.BurningFistMinotaur.class));
|
||||
cards.add(new SetCardInfo("Carrion Screecher", 61, Rarity.COMMON, mage.cards.c.CarrionScreecher.class));
|
||||
cards.add(new SetCardInfo("Champion of Wits", 31, Rarity.RARE, mage.cards.c.ChampionOfWits.class));
|
||||
cards.add(new SetCardInfo("Chandra's Defeat", 86, Rarity.UNCOMMON, mage.cards.c.ChandrasDefeat.class));
|
||||
cards.add(new SetCardInfo("Chaos Maw", 87, Rarity.RARE, mage.cards.c.ChaosMaw.class));
|
||||
cards.add(new SetCardInfo("Cinder Barrens", 209, Rarity.COMMON, mage.cards.c.CinderBarrens.class));
|
||||
cards.add(new SetCardInfo("Claim // Fame", 150, Rarity.UNCOMMON, mage.cards.c.ClaimFame.class));
|
||||
cards.add(new SetCardInfo("Crook of Condemnation", 159, Rarity.UNCOMMON, mage.cards.c.CrookOfCondemnation.class));
|
||||
|
@ -88,6 +92,7 @@ public class HourOfDevastation extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Djeru, With Eyes Open", 10, Rarity.RARE, mage.cards.d.DjeruWithEyesOpen.class));
|
||||
cards.add(new SetCardInfo("Doomfall", 62, Rarity.UNCOMMON, mage.cards.d.Doomfall.class));
|
||||
cards.add(new SetCardInfo("Dreamstealer", 63, Rarity.RARE, mage.cards.d.Dreamstealer.class));
|
||||
cards.add(new SetCardInfo("Dutiful Servants", 12, Rarity.COMMON, mage.cards.d.DutifulServants.class));
|
||||
cards.add(new SetCardInfo("Earthshaker Khenra", 90, Rarity.RARE, mage.cards.e.EarthshakerKhenra.class));
|
||||
cards.add(new SetCardInfo("Fervent Paincaster", 91, Rarity.UNCOMMON, mage.cards.f.FerventPaincaster.class));
|
||||
cards.add(new SetCardInfo("Forest", 189, Rarity.LAND, mage.cards.basiclands.Forest.class, new CardGraphicInfo(FrameStyle.BFZ_FULL_ART_BASIC, true)));
|
||||
|
@ -116,6 +121,7 @@ public class HourOfDevastation extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Plains", 185, Rarity.LAND, mage.cards.basiclands.Plains.class, new CardGraphicInfo(FrameStyle.BFZ_FULL_ART_BASIC, true)));
|
||||
cards.add(new SetCardInfo("Pride Sovereign", 126, Rarity.RARE, mage.cards.p.PrideSovereign.class));
|
||||
cards.add(new SetCardInfo("Proven Combatant", 42, Rarity.COMMON, mage.cards.p.ProvenCombatant.class));
|
||||
cards.add(new SetCardInfo("Rampaging Hippo", 128, Rarity.COMMON, mage.cards.r.RampagingHippo.class));
|
||||
cards.add(new SetCardInfo("Ramunap Excavator", 129, Rarity.RARE, mage.cards.r.RamunapExcavator.class));
|
||||
cards.add(new SetCardInfo("Ramunap Hydra", 130, Rarity.RARE, mage.cards.r.RamunapHydra.class));
|
||||
cards.add(new SetCardInfo("Razaketh, the Foulblooded", 73, Rarity.MYTHIC, mage.cards.r.RazakethTheFoulblooded.class));
|
||||
|
@ -125,6 +131,7 @@ public class HourOfDevastation extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Sand Strangler", 107, Rarity.UNCOMMON, mage.cards.s.SandStrangler.class));
|
||||
cards.add(new SetCardInfo("Sandblast", 20, Rarity.COMMON, mage.cards.s.Sandblast.class));
|
||||
cards.add(new SetCardInfo("Shefet Dunes", 183, Rarity.UNCOMMON, mage.cards.s.ShefetDunes.class));
|
||||
cards.add(new SetCardInfo("Scrounger of Souls", 76, Rarity.COMMON, mage.cards.s.ScroungerOfSouls.class));
|
||||
cards.add(new SetCardInfo("Sidewinder Naga", 134, Rarity.COMMON, mage.cards.s.SidewinderNaga.class));
|
||||
cards.add(new SetCardInfo("Sifter Wurm", 135, Rarity.UNCOMMON, mage.cards.s.SifterWurm.class));
|
||||
cards.add(new SetCardInfo("Sinuous Striker", 45, Rarity.UNCOMMON, mage.cards.s.SinuousStriker.class));
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
package org.mage.test.cards.single.hou;
|
||||
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.Zone;
|
||||
import org.junit.Test;
|
||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||
|
||||
public class BontusLastReckoningTest extends CardTestPlayerBase {
|
||||
|
||||
private String reckoning = "Bontu's Last Reckoning";
|
||||
|
||||
@Test
|
||||
public void testDelayedUntap(){
|
||||
String pouncer = "Adorned Pouncer";
|
||||
String angel = "Angel of Condemnation";
|
||||
addCard(Zone.HAND, playerA, reckoning);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Swamp", 4);
|
||||
addCard(Zone.BATTLEFIELD, playerA, pouncer);
|
||||
addCard(Zone.BATTLEFIELD, playerB, angel);
|
||||
addCard(Zone.BATTLEFIELD, playerB, "Island");
|
||||
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN,playerA, reckoning);
|
||||
|
||||
setStopAt(3, PhaseStep.PRECOMBAT_MAIN);
|
||||
|
||||
execute();
|
||||
|
||||
assertTappedCount("Swamp", true, 3);
|
||||
assertTappedCount("Island", false, 1);
|
||||
assertGraveyardCount(playerA, pouncer, 1);
|
||||
assertGraveyardCount(playerB, angel, 1);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
package org.mage.test.cards.single.hou;
|
||||
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.Zone;
|
||||
import org.junit.Test;
|
||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||
|
||||
public class ChampionOfWitsTest extends CardTestPlayerBase {
|
||||
|
||||
|
||||
private final String champion = "Champion of Wits";
|
||||
|
||||
@Test
|
||||
public void testEternalize(){
|
||||
addCard(Zone.GRAVEYARD, playerA, champion);
|
||||
addCard(Zone.BATTLEFIELD,playerA, "Island", 10);
|
||||
|
||||
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA,"Eternalize {5}{U}{U}");
|
||||
|
||||
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
|
||||
|
||||
execute();
|
||||
assertHandCount(playerA, 2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEternalizeWithAnthem(){
|
||||
String anthem = "Glorious Anthem";
|
||||
addCard(Zone.GRAVEYARD, playerA, champion);
|
||||
addCard(Zone.BATTLEFIELD,playerA, "Island", 10);
|
||||
addCard(Zone.BATTLEFIELD, playerA, anthem);
|
||||
|
||||
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA,"Eternalize {5}{U}{U}");
|
||||
|
||||
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
|
||||
|
||||
execute();
|
||||
assertHandCount(playerA, 3);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
package org.mage.test.cards.single.hou;
|
||||
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.Zone;
|
||||
import org.junit.Test;
|
||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||
|
||||
public class ChaosMawTest extends CardTestPlayerBase {
|
||||
|
||||
private String chaosMaw = "Chaos Maw";
|
||||
|
||||
@Test
|
||||
public void testChaosMaw(){
|
||||
addCard(Zone.HAND, playerA, chaosMaw, 1);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Mountain", 10);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Grizzly Bears", 1);
|
||||
addCard(Zone.BATTLEFIELD, playerB, "Savannah Lions", 1);
|
||||
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, chaosMaw );
|
||||
|
||||
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
|
||||
|
||||
execute();
|
||||
|
||||
assertGraveyardCount(playerA, "Grizzly Bears", 1);
|
||||
assertGraveyardCount(playerB, "Savannah Lions", 1);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
package org.mage.test.cards.single.hou;
|
||||
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.Zone;
|
||||
import org.junit.Test;
|
||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||
|
||||
public class HourOfRevelationTest extends CardTestPlayerBase {
|
||||
|
||||
private final String hour = "Hour of Revelation";
|
||||
|
||||
@Test
|
||||
public void testCountAllPlayers() {
|
||||
addCard(Zone.HAND, playerA, hour, 1);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Plains", 6);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Grizzly Bears", 5);
|
||||
addCard(Zone.BATTLEFIELD, playerB, "Grizzly Bears", 5);
|
||||
|
||||
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, hour);
|
||||
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
|
||||
execute();
|
||||
|
||||
assertTappedCount("Plains", true, 3);
|
||||
}
|
||||
}
|
|
@ -29,7 +29,7 @@ package mage.cards.[=$cardNameFirstLetter=];
|
|||
|
||||
import java.util.UUID;[=
|
||||
if ($power || $power eq 0) {
|
||||
if ($planeswalker) {
|
||||
if ($planeswalker eq 'true') {
|
||||
$OUT .= "\nimport mage.abilities.common.PlanswalkerEntersWithLoyalityCountersAbility;"
|
||||
}else {
|
||||
$OUT .= "\nimport mage.MageInt;"
|
||||
|
@ -50,7 +50,7 @@ public class [=$className=] extends CardImpl {
|
|||
super(ownerId, setInfo, new CardType[]{[=$type=]}, "[=$manaCost=]");
|
||||
[=$subType=][=$colors=][=
|
||||
if ($power || $power eq 0) {
|
||||
if ($planeswalker) {
|
||||
if ($planeswalker eq 'true') {
|
||||
$OUT .= "\n this.addAbility(new PlanswalkerEntersWithLoyalityCountersAbility($power));";
|
||||
} else {
|
||||
$OUT .= "\n this.power = new MageInt($power);";
|
||||
|
|
|
@ -32,6 +32,7 @@ import java.util.UUID;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.SplitCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SpellAbilityType;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -40,16 +41,18 @@ import mage.constants.CardType;
|
|||
public class [=$className=] extends SplitCard {
|
||||
|
||||
public [=$className=](UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{[=$type=]}, "[=$manaCost=]");
|
||||
[=$subType=][=$colors=]
|
||||
|
||||
// super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, new CardType[]{CardType.SORCERY}, "{3}{R}", "{2}{U}", SpellAbilityType.SPLIT_AFTERMATH);
|
||||
super(ownerId, setInfo, new CardType[]{[=$type=]}, new CardType[]{[=$type=]}, "[=$manaCost=]", "[=$manaCost=]", SpellAbilityType.SPLIT_AFTERMATH);
|
||||
[=$subType=][=$colors=]
|
||||
[=
|
||||
if ($power || $power eq 0) {
|
||||
$OUT .= "\n this.power = new MageInt($power);";
|
||||
$OUT .= "\n this.toughness = new MageInt($toughness);";
|
||||
}
|
||||
=][=$abilities=]
|
||||
getLeftHalfCard().getSpellAbility().addEffect(new Effect...);
|
||||
|
||||
getRightHalfCard().getSpellAbility().addEffect(new Effect...);
|
||||
|
||||
}
|
||||
|
||||
public [=$className=](final [=$className=] card) {
|
||||
|
|
|
@ -174,12 +174,13 @@ foreach my $setName (keys %{$cards{$cardName}}) {
|
|||
unlink $setFileName.".bak";
|
||||
print "$setFileName\n";
|
||||
}
|
||||
|
||||
# Generate the the card
|
||||
print "Generate the card: ".$card[0]."\n";
|
||||
# Generate the card
|
||||
my $result;
|
||||
my $template = Text::Template->new(TYPE => 'FILE', SOURCE => $cardTemplate, DELIMITERS => [ '[=', '=]' ]);
|
||||
$vars{'author'} = $author;
|
||||
$vars{'manaCost'} = fixCost($card[4]);
|
||||
print "cost ".$vars{'manaCost'}."\n";
|
||||
$vars{'power'} = $card[6];
|
||||
$vars{'toughness'} = $card[7];
|
||||
|
||||
|
@ -190,7 +191,8 @@ my $cardAbilities = $card[8];
|
|||
my $type = $card[5];
|
||||
while ($type =~ m/([a-zA-Z]+)( )*/g) {
|
||||
if (exists($cardTypes{$1})) {
|
||||
push(@types, $cardTypes{$1});
|
||||
push(@types, $cardTypes{$1});
|
||||
print $cardTypes{$1}."\n";
|
||||
if ($cardTypes{$1} eq $cardTypes{'Planeswalker'}) {
|
||||
$vars{'planeswalker'} = 'true';
|
||||
$cardAbilities = $card[7];
|
||||
|
|
|
@ -31651,7 +31651,7 @@ Solemnity|Hour of Devastation|22|R|{2}{W}|Enchantment|||Players can't get counte
|
|||
Solitary Camel|Hour of Devastation|23|C|{2}{W}|Creature - Camel|3|2|Solitary Camel has lifelink as long as you control a desert or there is a desert card in your graveyard. <i>(Damage this creature deals also causes you to gain that much life.)</i>|
|
||||
Steadfast Sentinel|Hour of Devastation|24|C|{3}{W}|Creature - Human Cleric|2|3|Vigilance$Eternalize {4}{W}{W} <i>({4}{W}{W}, Exile this card from your graveyard: Create a token that's a copy of it, except it's 4/4 black Zombie Human Cleric with no mana cost. Eternalize only as a sorcery.)</i>|
|
||||
Steward of Solidarity|Hour of Devastation|25|U|{1}{W}|Creature - Human Warrior|2|2|{T}, Exert Steward of Solidarity: Create a 1/1 white Warrior creature token with vigilance. <i>(An exerted creature won't untap during your next untap step.)</i>|
|
||||
Sunscourge Champion|Hour of Devastation|26|U|{2}{W}|Creature - Human Wizard|2|3|When Sunscourge Champion enters the battlefield, you gain life equal to its power.$Eternalize—{2}{W}{W}, Discard a card. <i>({2}{W}{W}, Discard a card, Exile this card from your graveyard: Create a token that's a copy of it, except it's a 4/4 black Zombie Human Wizard with no mana cost. Eternalize only as a sorcery.)</i>|
|
||||
Sunscourge Champion|Hour of Devastation|26|U|{2}{W}|Creature - Human Wizard|2|3|When Sunscourge Champion enters the battlefield, you gain life equal to its power.$Eternalize<EFBFBD>{2}{W}{W}, Discard a card. <i>({2}{W}{W}, Discard a card, Exile this card from your graveyard: Create a token that's a copy of it, except it's a 4/4 black Zombie Human Wizard with no mana cost. Eternalize only as a sorcery.)</i>|
|
||||
Unconventional Tactics|Hour of Devastation|27|U|{2}{W}|Sorcery|||Target creature gets +3/+3 and gains flying until end of turn.$Whenever a Zombie enters the battlefield under your control, you may pay {W}. If you do, return Unconventional Tactics from your graveyard to your hand.|
|
||||
Vizier of the True|Hour of Devastation|28|U|{3}{W}|Creature - Human Cleric|3|2|You may exert Vizier of the True as it attacks. <i>(It won't untap during your next untap step.)</i>$Whenever you exert a creature, tap target creature an opponent controls.|
|
||||
Aerial Guide|Hour of Devastation|29|C|{2}{U}|Creature - Drake|2|2|Flying$Whenever Aerial Guide attacks, another target attacking creature gains flying until end of turn.|
|
||||
|
@ -31670,11 +31670,11 @@ Ominous Sphinx|Hour of Devastation|41|U|{3}{U}{U}|Creature - Sphinx|4|4|Flying$W
|
|||
Proven Combatant|Hour of Devastation|42|C|{U}|Creature - Human Warrior|1|1|Eternalize {4}{U}{U} <i>({4}{U}{U}, Exile this card from your graveyard: Create a token that's a copy of it, except it's a 4/4 black Zombie Human Warrior with no mana cost. Eternalize only as a sorcery.) </i>|
|
||||
Riddleform|Hour of Devastation|43|U|{1}{U}|Enchantment|||Whenever you cast a noncreature spell, you may have Riddleform become a 3/3 Sphinx creature with flying in addition to its other types until end of turn.${2}{U}: Scry 1.|
|
||||
Seer of the Last Tomorrow|Hour of Devastation|44|C|{2}{U}|Creature - Naga Cleric|1|4|{U}, {T}, Discard a card: Target player puts the top three cards of his or her library into his or her graveyard.|
|
||||
Sinuous Striker|Hour of Devastation|45|U|{2}{U}|Creature - Naga Warrior|2|2|{U}: Sinuous Striker gets +1/-1 until end of turn.$Eternalize—{3}{U}{U}, Discard a card. <i>({3}{U}{U}, Discard a card, Exile this card from your graveyard: Create a token that's a copy of it, except it's a 4/4 black Zombie Naga Warrior with no mana cost. Eternalize only as a sorcery.)</i>|
|
||||
Sinuous Striker|Hour of Devastation|45|U|{2}{U}|Creature - Naga Warrior|2|2|{U}: Sinuous Striker gets +1/-1 until end of turn.$Eternalize<EFBFBD>{3}{U}{U}, Discard a card. <i>({3}{U}{U}, Discard a card, Exile this card from your graveyard: Create a token that's a copy of it, except it's a 4/4 black Zombie Naga Warrior with no mana cost. Eternalize only as a sorcery.)</i>|
|
||||
Spellweaver Eternal|Hour of Devastation|46|C|{1}{U}|Creature - Zombie Naga Wizard|2|1|Prowess <i>(Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.)</i>$Afflict 2 <i>(Whenever this creature becomes blocked, defending player loses 2 life.)</i>|
|
||||
Strategic Planning|Hour of Devastation|47|C|{1}{U}|Sorcery|||Look at the top three cards of your library. Put one of them into your hand and the rest in the graveyard.|
|
||||
Striped Riverwinder|Hour of Devastation|48|C|{6}{U}|Creature - Serpent|5|5|Hexproof <i>(This creature can't be the target of spells or abilities your opponents control.)</i>$Cycling {U} <i>({U}, Discard this card: Draw a card.)</i>|
|
||||
Supreme Will|Hour of Devastation|49|U|{2}{U}|Instant|||Choose one —$• Counter target spell unless its controller pays {3}.$• Look at the top four cards of your library. Put one of them into your hand and the rest on the bottom of your library in any order.|
|
||||
Supreme Will|Hour of Devastation|49|U|{2}{U}|Instant|||Choose one <EFBFBD>$<24> Counter target spell unless its controller pays {3}.$<24> Look at the top four cards of your library. Put one of them into your hand and the rest on the bottom of your library in any order.|
|
||||
Swarm Intelligence|Hour of Devastation|50|R|{6}{U}|Enchantment|||Whenever you cast an instant or sorcery spell, you may copy that spell. You may choose new targets for the copy.|
|
||||
Tragic Lesson|Hour of Devastation|51|C|{2}{U}|Instant|||Draw two cards. Then discard a card unless you return a land you control to its owner's hand.|
|
||||
Unesh, Criosphinx Sovereign|Hour of Devastation|52|M|{4}{U}{U}|Legendary Creature - Sphinx|4|4|Flying$Sphinx spells you cast cost {2} less to cast.$Whenever Unesh, Criosphinx Sovereign or another Sphinx enters the battlefield under your control, reveal the top four cards of your library. An opponent seperates those cards into two piles. Put one pile into your hand and the other into your graveyard.|
|
||||
|
@ -31687,7 +31687,7 @@ Apocalypse Demon|Hour of Devastation|58|R|{4}{B}{B}|Creature - Demon|0|0|Flying$
|
|||
Banewhip Punisher|Hour of Devastation|59|U|{2}{B}|Creature - Human Warrior|2|2|When Banewhip Punisher enters the battlefield, you may put a -1/-1 counter on target creature.${B}, Sacrifice Banewhip Punisher: Destroy target creature that has a -1/-1 counter on it.|
|
||||
Bontu's Last Reckoning|Hour of Devastation|60|R|{1}{B}{B}|Sorcery|||Destroy all creatures. Lands you control don't untap during your next untap step.|
|
||||
Carrion Screecher|Hour of Devastation|61|C|{3}{B}|Creature - Zombie Bird|3|1|Flying|
|
||||
Doomfall|Hour of Devastation|62|U|{2}{B}|Sorcery|||Choose one —$• Target player exiles a creature he or she controls.$• Target opponent reveals his or her hand. You choose a nonland card from it. Exile that card.|
|
||||
Doomfall|Hour of Devastation|62|U|{2}{B}|Sorcery|||Choose one <EFBFBD>$<24> Target player exiles a creature he or she controls.$<24> Target opponent reveals his or her hand. You choose a nonland card from it. Exile that card.|
|
||||
Dreamstealer|Hour of Devastation|63|R|{2}{B}|Creature - Human Wizard|1|2|Menace$When Dreamstealer deals combat damage to a player, that player discards that many cards.$Eternalize {4}{B}{B} <i>({4}{B}{B}, Exile this card from your graveyard: Create a token that's a copy of it, except it's 4/4 black Zombie Human Wizard with no mana cost. Eternalize only as a sorcery.)</i>|
|
||||
Grisly Survivor|Hour of Devastation|64|C|{2}{B}|Creature - Minotaur Warrior|2|3|Whenever you cycle or discard a card, Grisly Survivor gets +2/+0 until end of turn.|
|
||||
Hour of Glory|Hour of Devastation|65|R|{3}{B}|Instant|||Exile target creature. If that creature was a God, its controller reveals his or her hand and exiles all cards with the same name as that creature.|
|
||||
|
@ -31779,7 +31779,7 @@ Claim // Fame|Hour of Devastation|150|U|{B}|Sorcery|||Return target creature car
|
|||
Struggle // Survive|Hour of Devastation|151|U|{2}{R}|Instant|||Struggle deals damage to target creature equal to the number of lands you control.$<strong>Survive</strong> {1}{G}$<strong>Sorcery</strong>$Aftermath <i>(Cast this spell only from your graveyard. Then exile it.)</i>$Each player shuffles his or graveyard into his or her library.|
|
||||
Appeal // Authority|Hour of Devastation|152|U|{G}|Sorcery|||Until end of turn, target creature gains trample and gets +X/+X, where X is the number of creatures you control.$<strong>Authority</strong> {1}{W}$<strong>Sorcery</strong>$Aftermath <i>(Cast this spell only from your graveyard. Then exile it.)</i>$Tap up to two target creatures your opponents control. Creatures you control gain vigilance until end of turn.|
|
||||
Leave // Chance|Hour of Devastation|153|R|{1}{W}|Instant|||Return any number of target permanents you own to your hand.$<strong>Chance</strong> {3}{R}$<strong>Sorcery</strong>$Aftermath <i>(Cast this spell only from your graveyard. Then exile it.)</i>$Discard any number of cards, then draw that many cards.|
|
||||
Reason // Live|Hour of Devastation|154|R|{U}|Sorcery|||Scry 3.$<strong>Believe</strong> {4}{G}$<strong>Sorcery</strong>$Aftermath$Look at the top card of your library. You may put it onto the battlefield if it's a creature card. If you don't, put it into your hand.|
|
||||
Reason // Believe|Hour of Devastation|154|R|{U}|Sorcery|||Scry 3.$<strong>Believe</strong> {4}{G}$<strong>Sorcery</strong>$Aftermath$Look at the top card of your library. You may put it onto the battlefield if it's a creature card. If you don't, put it into your hand.|
|
||||
Grind // Dust|Hour of Devastation|155|R|{1}{B}|Sorcery|||Put a -1/-1 counter on each of up to two target creatures.$<strong>Dust</strong> {3}{W}$<strong>Sorcery</strong>$Aftermath <i>(Cast this spell only from your graveyard. Then exile it.)</i>$Exile any number of target creatures that have -1/-1 counters on them.|
|
||||
Refuse // Cooperate|Hour of Devastation|156|R|{3}{R}|Instant|||Refuse deals damage to target spell's controller equal to that spell's converted mana cost.$<strong>Cooperate</strong> {2}{U}$<strong>Instant</strong>$Aftermath <i>(Cast this spell only from your graveyard. Then exile it.)</i>$Copy target instant or sorcery spell. You may choose new targets for the copy.|
|
||||
Driven // Despair|Hour of Devastation|157|R|{1}{G}|Sorcery|||Until end of turn, creatures you control gain trample and "Whenever this creature deals combat damage to a player, draw a card."$<strong>Despair</strong> {1}{B}$<strong>Sorcery</strong>$Aftermath$Until end of turn, creatures you control gain menace and "Whenever this creature deals combat damage to a player, that player discards a card."|
|
||||
|
|
Loading…
Reference in a new issue