Merge remote-tracking branch 'upstream/master' into collector-number-in-card-list-and-card-db-refactoring

This commit is contained in:
leriomaggio
2021-07-23 22:38:23 +01:00
299 changed files with 3647 additions and 1286 deletions

View File

@@ -56,7 +56,7 @@ public class PlayAi extends SpellAbilityAi {
}
if (cards != null & sa.hasParam("ValidSA")) {
final String valid[] = {sa.getParam("ValidSA")};
final String valid[] = sa.getParam("ValidSA").split(",");
final Iterator<Card> itr = cards.iterator();
while (itr.hasNext()) {
final Card c = itr.next();

View File

@@ -358,7 +358,8 @@ public class TokenAi extends SpellAbilityAi {
if (!sa.hasParam("TokenScript")) {
throw new RuntimeException("Spell Ability has no TokenScript: " + sa);
}
Card result = TokenInfo.getProtoType(sa.getParam("TokenScript"), sa, ai);
// TODO for now, only checking the first token is good enough
Card result = TokenInfo.getProtoType(sa.getParam("TokenScript").split(",")[0], sa, ai);
if (result == null) {
throw new RuntimeException("don't find Token for TokenScript: " + sa.getParam("TokenScript"));

View File

@@ -26,6 +26,14 @@ public final class CardRulesPredicates {
}
};
/** The Constant isKeptInAiLimitedDecks. */
public static final Predicate<CardRules> IS_KEPT_IN_AI_LIMITED_DECKS = new Predicate<CardRules>() {
@Override
public boolean apply(final CardRules card) {
return !card.getAiHints().getRemAIDecks() && !card.getAiHints().getRemNonCommanderDecks();
}
};
/** The Constant isKeptInRandomDecks. */
public static final Predicate<CardRules> IS_KEPT_IN_RANDOM_DECKS = new Predicate<CardRules>() {
@Override

View File

@@ -34,7 +34,12 @@ public class CardTranslation {
translatedtypes.put(matches[0], matches[2]);
}
if (matches.length >= 4) {
translatedoracles.put(matches[0], matches[3].replace("\\n", "\r\n\r\n"));
String toracle = matches[3];
// Workaround to remove additional //Level_2// and //Level_3// lines from non-English Class cards
toracle = toracle.replace("//Level_2//\\n", "").replace("//Level_3//\\n", "");
// Workaround for roll dice cards
toracle = toracle.replace("\\n", "\r\n\r\n").replace("VERT", "|");
translatedoracles.put(matches[0], toracle);
}
}
} catch (IOException e) {
@@ -91,7 +96,7 @@ public class CardTranslation {
public static void preloadTranslation(String language, String languagesDirectory) {
languageSelected = language;
if (needsTranslation()) {
translatednames = new HashMap<>();
translatedtypes = new HashMap<>();
@@ -137,9 +142,10 @@ public class CardTranslation {
public static String translateMultipleDescriptionText(String descText, String cardName) {
if (!needsTranslation()) return descText;
String [] splitDescText = descText.split("\r\n");
String [] splitDescText = descText.split("\n");
String result = descText;
for (String text : splitDescText) {
text = text.trim();
if (text.isEmpty()) continue;
String translated = translateSingleDescriptionText(text, cardName);
if (!text.equals(translated)) {

View File

@@ -148,7 +148,6 @@ public abstract class CardTraitBase extends GameObject implements IHasCardView,
return getParamOrDefault("Secondary", "False").equals("True");
}
public final boolean isClassAbility() {
return hasParam("ClassLevel");
}

View File

@@ -19,7 +19,6 @@ public class ForgeScript {
public static boolean cardStateHasProperty(CardState cardState, String property, Player sourceController,
Card source, CardTraitBase spellAbility) {
final boolean isColorlessSource = cardState.getCard().hasKeyword("Colorless Damage Source", cardState);
final ColorSet colors = cardState.getCard().determineColor(cardState);
if (property.contains("White") || property.contains("Blue") || property.contains("Black")
@@ -123,7 +122,6 @@ public class ForgeScript {
return Expressions.compare(y, property, x);
} else return cardState.getTypeWithChanges().hasStringType(property);
}
public static boolean spellAbilityHasProperty(SpellAbility sa, String property, Player sourceController,
@@ -194,8 +192,7 @@ public class ForgeScript {
// spell was on the stack
if (sa.getCardState().getCard().isInZone(ZoneType.Stack)) {
y = sa.getHostCard().getCMC();
}
else {
} else {
y = sa.getPayCosts().getTotalMana().getCMC();
}
int x = AbilityUtils.calculateAmount(spellAbility.getHostCard(), property.substring(5), spellAbility);

View File

@@ -805,7 +805,7 @@ public class Game {
getTriggerHandler().clearDelayedTrigger(c);
} else {
// return stolen permanents
if ((c.getController().equals(p) || c.getZone().getPlayer().equals(p)) && c.isInZone(ZoneType.Battlefield)) {
if (c.isInZone(ZoneType.Battlefield) && (c.getController().equals(p) || c.getZone().getPlayer().equals(p))) {
c.removeTempController(p);
getAction().controllerChangeZoneCorrection(c);
}

View File

@@ -118,7 +118,7 @@ public final class GameActionUtil {
continue;
}
// non basic are only allowed if PayManaCost is yes
if (!sa.isBasicSpell() && o.getPayManaCost() == PayManaCost.NO) {
if ((!sa.isBasicSpell() || (sa.costHasManaX() && !sa.getPayCosts().getCostMana().canXbe0())) && o.getPayManaCost() == PayManaCost.NO) {
continue;
}
final Card host = o.getHost();

View File

@@ -42,6 +42,7 @@ import forge.game.card.CardCollectionView;
import forge.game.card.CardFactoryUtil;
import forge.game.card.CardLists;
import forge.game.card.CardPredicates;
import forge.game.card.CardState;
import forge.game.card.CardUtil;
import forge.game.card.CounterType;
import forge.game.card.CardPredicates.Presets;
@@ -56,6 +57,7 @@ import forge.game.player.Player;
import forge.game.player.PlayerCollection;
import forge.game.player.PlayerPredicates;
import forge.game.spellability.AbilitySub;
import forge.game.spellability.LandAbility;
import forge.game.spellability.OptionalCost;
import forge.game.spellability.Spell;
import forge.game.spellability.SpellAbility;
@@ -2856,24 +2858,45 @@ public class AbilityUtils {
public static final List<SpellAbility> getBasicSpellsFromPlayEffect(final Card tgtCard, final Player controller) {
List<SpellAbility> sas = new ArrayList<>();
List<SpellAbility> list = Lists.newArrayList(tgtCard.getBasicSpells());
if (tgtCard.isModal()) {
list.addAll(Lists.newArrayList(tgtCard.getBasicSpells(tgtCard.getState(CardStateName.Modal))));
CardState original = tgtCard.getState(CardStateName.Original);
if (tgtCard.isLand()) {
LandAbility la = new LandAbility(tgtCard, controller, null);
la.setCardState(original);
list.add(la);
}
if (tgtCard.isModal()) {
CardState modal = tgtCard.getState(CardStateName.Modal);
list.addAll(Lists.newArrayList(tgtCard.getBasicSpells(modal)));
if (modal.getType().isLand()) {
LandAbility la = new LandAbility(tgtCard, controller, null);
la.setCardState(modal);
list.add(la);
}
}
for (SpellAbility s : list) {
final Spell newSA = (Spell) s.copy();
newSA.setActivatingPlayer(controller);
SpellAbilityRestriction res = new SpellAbilityRestriction();
// timing restrictions still apply
res.setPlayerTurn(s.getRestrictions().getPlayerTurn());
res.setOpponentTurn(s.getRestrictions().getOpponentTurn());
res.setPhases(s.getRestrictions().getPhases());
res.setZone(null);
newSA.setRestrictions(res);
// timing restrictions still apply
if (res.checkTimingRestrictions(tgtCard, newSA)
// still need to check the other restrictions like Aftermath
&& res.checkOtherRestrictions(tgtCard, newSA, controller)) {
sas.add(newSA);
if (s instanceof LandAbility) {
// CR 305.3
if (controller.getGame().getPhaseHandler().isPlayerTurn(controller) && controller.canPlayLand(tgtCard, true, s)) {
sas.add(s);
}
} else {
final Spell newSA = (Spell) s.copy();
newSA.setActivatingPlayer(controller);
SpellAbilityRestriction res = new SpellAbilityRestriction();
// timing restrictions still apply
res.setPlayerTurn(s.getRestrictions().getPlayerTurn());
res.setOpponentTurn(s.getRestrictions().getOpponentTurn());
res.setPhases(s.getRestrictions().getPhases());
res.setZone(null);
newSA.setRestrictions(res);
// timing restrictions still apply
if (res.checkTimingRestrictions(tgtCard, newSA)
// still need to check the other restrictions like Aftermath
&& res.checkOtherRestrictions(tgtCard, newSA, controller)) {
sas.add(newSA);
}
}
}
return sas;

View File

@@ -11,7 +11,7 @@ import forge.game.spellability.TargetRestrictions;
public class SpellApiBased extends Spell {
private static final long serialVersionUID = -6741797239508483250L;
private final SpellAbilityEffect effect;
public SpellApiBased(ApiType api0, Card sourceCard, Cost abCost, TargetRestrictions tgt, Map<String, String> params0) {
super(sourceCard, abCost);
this.setTargetRestrictions(tgt);

View File

@@ -31,6 +31,7 @@ import forge.game.replacement.ReplacementEffect;
import forge.game.replacement.ReplacementHandler;
import forge.game.replacement.ReplacementLayer;
import forge.game.spellability.AlternativeCost;
import forge.game.spellability.LandAbility;
import forge.game.spellability.SpellAbility;
import forge.game.spellability.SpellAbilityPredicates;
import forge.game.trigger.TriggerType;
@@ -167,7 +168,7 @@ public class PlayEffect extends SpellAbilityEffect {
}
if (sa.hasParam("ValidSA")) {
final String valid[] = {sa.getParam("ValidSA")};
final String valid[] = sa.getParam("ValidSA").split(",");
Iterator<Card> it = tgtCards.iterator();
while (it.hasNext()) {
Card c = it.next();
@@ -244,8 +245,8 @@ public class PlayEffect extends SpellAbilityEffect {
tgtCards.remove(tgtCard);
}
final Card original = tgtCard;
if (sa.hasParam("CopyCard")) {
final Card original = tgtCard;
final Zone zone = tgtCard.getZone();
tgtCard = Card.fromPaperCard(tgtCard.getPaperCard(), sa.getActivatingPlayer());
@@ -258,23 +259,10 @@ public class PlayEffect extends SpellAbilityEffect {
}
}
// lands will be played
if (tgtCard.isLand()) {
if (controller.playLand(tgtCard, true)) {
amount--;
if (remember) {
source.addRemembered(tgtCard);
}
} else {
tgtCards.remove(tgtCard);
}
continue;
}
// get basic spells (no flashback, etc.)
List<SpellAbility> sas = AbilityUtils.getBasicSpellsFromPlayEffect(tgtCard, controller);
if (sa.hasParam("ValidSA")) {
final String valid[] = {sa.getParam("ValidSA")};
final String valid[] = sa.getParam("ValidSA").split(",");
sas = Lists.newArrayList(Iterables.filter(sas, SpellAbilityPredicates.isValid(valid, controller , source, sa)));
}
if (hasTotalCMCLimit) {
@@ -290,11 +278,6 @@ public class PlayEffect extends SpellAbilityEffect {
continue;
}
// play copied cards with linked abilities, e.g. Elite Arcanist
if (sa.hasParam("CopyOnce")) {
tgtCards.remove(original);
}
SpellAbility tgtSA;
if (!sa.hasParam("CastFaceDown")) {
@@ -313,8 +296,22 @@ public class PlayEffect extends SpellAbilityEffect {
continue;
}
// lands will be played
if (tgtSA instanceof LandAbility) {
tgtSA.resolve();
amount--;
if (remember) {
source.addRemembered(tgtCard);
}
continue;
}
final int tgtCMC = tgtSA.getPayCosts().getTotalMana().getCMC();
// illegal action, cancel early
if ((sa.hasParam("WithoutManaCost") || sa.hasParam("PlayCost")) && tgtSA.costHasManaX() && !tgtSA.getPayCosts().getCostMana().canXbe0()) {
continue;
}
if (sa.hasParam("WithoutManaCost")) {
tgtSA = tgtSA.copyWithNoManaCost();
} else if (sa.hasParam("PlayCost")) {

View File

@@ -12,16 +12,12 @@ import forge.card.CardRulesPredicates;
import forge.card.ColorSet;
import forge.card.MagicColor;
import forge.game.Game;
import forge.game.ability.AbilityKey;
import forge.game.ability.SpellAbilityEffect;
import forge.game.card.Card;
import forge.game.card.CardFactory;
import forge.game.card.CardUtil;
import forge.game.event.GameEventLandPlayed;
import forge.game.player.Player;
import forge.game.spellability.SpellAbility;
import forge.game.trigger.TriggerType;
import forge.game.zone.ZoneType;
import forge.item.PaperCard;
import forge.util.Aggregates;
@@ -60,28 +56,18 @@ public class PlayLandVariantEffect extends SpellAbilityEffect {
}, PaperCard.FN_GET_NAME);
cards = Lists.newArrayList(Iterables.filter(cards, cp));
// get a random basic land
PaperCard ran = Aggregates.random(cards);
Card random = CardFactory.getCard(ran, activator, source.getGame());
Card random;
// if activator cannot play the random land, loop
while (!activator.canPlayLand(random, false) && !cards.isEmpty()) {
cards.remove(ran);
do {
if (cards.isEmpty()) return;
ran = Aggregates.random(cards);
PaperCard ran = Aggregates.random(cards);
random = CardFactory.getCard(ran, activator, game);
}
cards.remove(ran);
} while (!activator.canPlayLand(random, false));
source.addCloneState(CardFactory.getCloneStates(random, source, sa), game.getNextTimestamp());
source.updateStateForView();
source.setController(activator, 0);
game.getAction().moveTo(activator.getZone(ZoneType.Battlefield), source, sa);
// play a sound
game.fireEvent(new GameEventLandPlayed(activator, source));
// Run triggers
game.getTriggerHandler().runTrigger(TriggerType.LandPlayed, AbilityKey.mapFromCard(source), false);
game.getStack().unfreezeStack();
activator.addLandPlayedThisTurn();
activator.playLandNoCheck(source, sa);
}
}

View File

@@ -1832,10 +1832,10 @@ public class CardFactoryUtil {
if (sa.hasParam("NextRoom")) {
boolean first = true;
StringBuilder nextRoomParam = new StringBuilder();
trigStr.append(" ( ");
trigStr.append(" (Leads to: ");
for (String nextRoomSVar : sa.getParam("NextRoom").split(",")) {
if (!first) {
trigStr.append(" or ");
trigStr.append(", ");
nextRoomParam.append(",");
}
String nextRoomName = saMap.get(nextRoomSVar).getParam("RoomName");

View File

@@ -80,7 +80,7 @@ public final class CardPlayOption {
return toString(true);
}
public String toString( final boolean withPlayer) {
public String toString(final boolean withPlayer) {
StringBuilder sb = new StringBuilder(withPlayer ? this.player.toString() : StringUtils.EMPTY);
switch (getPayManaCost()) {

View File

@@ -1695,8 +1695,7 @@ public class Player extends GameEntity implements Comparable<Player> {
for (int i = 0; i < max; i++) {
if (bottom) {
milled.add(lib.get(lib.size() - i - 1));
}
else {
} else {
milled.add(lib.get(i));
}
}
@@ -1758,7 +1757,7 @@ public class Player extends GameEntity implements Comparable<Player> {
public final boolean playLand(final Card land, final boolean ignoreZoneAndTiming) {
// Dakkon Blackblade Avatar will use a similar effect
if (canPlayLand(land, ignoreZoneAndTiming)) {
playLandNoCheck(land);
playLandNoCheck(land, null);
return true;
}
@@ -1766,20 +1765,22 @@ public class Player extends GameEntity implements Comparable<Player> {
return false;
}
public final Card playLandNoCheck(final Card land) {
public final Card playLandNoCheck(final Card land, SpellAbility cause) {
land.setController(this, 0);
if (land.isFaceDown()) {
land.turnFaceUp(null);
}
game.copyLastState();
final Card c = game.getAction().moveTo(getZone(ZoneType.Battlefield), land, null);
final Card c = game.getAction().moveTo(getZone(ZoneType.Battlefield), land, cause);
game.updateLastStateForCard(c);
// play a sound
game.fireEvent(new GameEventLandPlayed(this, land));
// Run triggers
game.getTriggerHandler().runTrigger(TriggerType.LandPlayed, AbilityKey.mapFromCard(land), false);
Map<AbilityKey, Object> runParams = AbilityKey.mapFromCard(land);
runParams.put(AbilityKey.SpellAbility, cause);
game.getTriggerHandler().runTrigger(TriggerType.LandPlayed, runParams, false);
game.getStack().unfreezeStack();
addLandPlayedThisTurn();

View File

@@ -71,7 +71,7 @@ public class LandAbility extends Ability {
@Override
public void resolve() {
getHostCard().setSplitStateToPlayAbility(this);
final Card result = getActivatingPlayer().playLandNoCheck(getHostCard());
final Card result = getActivatingPlayer().playLandNoCheck(getHostCard(), this);
// increase mayplay used
if (getMayPlay() != null) {

View File

@@ -1116,7 +1116,6 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit
}
public SpellAbility copyWithManaCostReplaced(Player active, Cost abCost) {
final SpellAbility newSA = copy(active);
if (newSA == null) {
return null; // the ability was not copyable, e.g. a Suspend SA may get here
@@ -1995,6 +1994,16 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit
return false;
}
}
else if (incR[0].equals("Instant")) {
if (!root.getCardState().getType().isInstant()) {
return false;
}
}
else if (incR[0].equals("Sorcery")) {
if (!root.getCardState().getType().isSorcery()) {
return false;
}
}
else if (incR[0].equals("Triggered")) {
if (!root.isTrigger()) {
return false;

View File

@@ -877,7 +877,9 @@ public final class StaticAbilityContinuous {
mayPlayAltCost = mayPlayAltCost.replace("ConvertedManaCost", costcmc);
}
Player mayPlayController = params.containsKey("MayPlayCardOwner") ? affectedCard.getOwner() : controller;
Player mayPlayController = params.containsKey("MayPlayPlayer") ?
AbilityUtils.getDefinedPlayers(affectedCard, params.get("MayPlayPlayer"), stAb).get(0) :
controller;
affectedCard.setMayPlay(mayPlayController, mayPlayWithoutManaCost,
mayPlayAltCost != null ? new Cost(mayPlayAltCost, false) : null,
mayPlayWithFlash, mayPlayGrantZonePermissions, stAb);

View File

@@ -6,12 +6,12 @@
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
@@ -28,7 +28,7 @@ import forge.util.Localizer;
* <p>
* Trigger_LandPlayed class.
* </p>
*
*
* @author Forge
* @version $Id$
*/
@@ -38,7 +38,7 @@ public class TriggerLandPlayed extends Trigger {
* <p>
* Constructor for Trigger_LandPlayed.
* </p>
*
*
* @param params
* a {@link java.util.HashMap} object.
* @param host
@@ -71,6 +71,10 @@ public class TriggerLandPlayed extends Trigger {
return false;
}
if (!matchesValidParam("ValidSA", runParams.get(AbilityKey.SpellAbility))) {
return false;
}
if (hasParam("NotFirstLand")) {
Card land = (Card) runParams.get(AbilityKey.Card);
if (land.getController().getLandsPlayedThisTurn() < 1) {

View File

@@ -21,6 +21,7 @@ import forge.deck.DeckFormat;
import forge.deck.DeckProxy;
import forge.deck.DeckType;
import forge.deck.DeckgenUtil;
import forge.deck.NetDeckArchivePauper;
import forge.deck.NetDeckArchiveBlock;
import forge.deck.NetDeckArchiveLegacy;
import forge.deck.NetDeckArchiveModern;
@@ -60,6 +61,7 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
private NetDeckArchiveStandard NetDeckArchiveStandard;
private NetDeckArchivePioneer NetDeckArchivePioneer;
private NetDeckArchiveModern NetDeckArchiveModern;
private NetDeckArchivePauper NetDeckArchivePauper;
private NetDeckArchiveLegacy NetDeckArchiveLegacy;
private NetDeckArchiveVintage NetDeckArchiveVintage;
private NetDeckArchiveBlock NetDeckArchiveBlock;
@@ -297,6 +299,13 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
updateDecks(DeckProxy.getNetArchiveModernDecks(NetDeckArchiveModern), ItemManagerConfig.NET_DECKS);
}
private void updateNetArchivePauperDecks() {
if (NetDeckArchivePauper != null) {
decksComboBox.setText(NetDeckArchivePauper.getDeckType());
}
updateDecks(DeckProxy.getNetArchivePauperDecks(NetDeckArchivePauper), ItemManagerConfig.NET_DECKS);
}
private void updateNetArchivePioneerDecks() {
if (NetDeckArchivePioneer != null) {
decksComboBox.setText(NetDeckArchivePioneer.getDeckType());
@@ -322,8 +331,9 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
if (NetDeckArchiveBlock != null) {
decksComboBox.setText(NetDeckArchiveBlock.getDeckType());
}
updateDecks(DeckProxy.getNetArchiveBlockecks(NetDeckArchiveBlock), ItemManagerConfig.NET_DECKS);
updateDecks(DeckProxy.getNetArchiveBlockDecks(NetDeckArchiveBlock), ItemManagerConfig.NET_DECKS);
}
public Deck getDeck() {
final DeckProxy proxy = lstDecks.getSelectedItem();
if (proxy == null) {
@@ -459,6 +469,32 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
});
return;
} else if (ev.getDeckType() == DeckType.NET_ARCHIVE_PAUPER_DECK&& !refreshingDeckType) {
if(lstDecks.getGameType() != GameType.Constructed)
return;
FThreads.invokeInBackgroundThread(new Runnable() { //needed for loading net decks
@Override
public void run() {
final NetDeckArchivePauper category = NetDeckArchivePauper.selectAndLoad(lstDecks.getGameType());
FThreads.invokeInEdtLater(new Runnable() {
@Override
public void run() {
if (category == null) {
decksComboBox.setDeckType(selectedDeckType); //restore old selection if user cancels
if (selectedDeckType == DeckType.NET_ARCHIVE_PAUPER_DECK && NetDeckArchivePauper != null) {
decksComboBox.setText(NetDeckArchivePauper.getDeckType());
}
return;
}
NetDeckArchivePauper = category;
refreshDecksList(ev.getDeckType(), true, ev);
}
});
}
});
return;
} else if (ev.getDeckType() == DeckType.NET_ARCHIVE_LEGACY_DECK&& !refreshingDeckType) {
if(lstDecks.getGameType() != GameType.Constructed)
return;
@@ -511,7 +547,6 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
});
return;
} else if (ev.getDeckType() == DeckType.NET_ARCHIVE_BLOCK_DECK&& !refreshingDeckType) {
if(lstDecks.getGameType() != GameType.Constructed)
return;
@@ -525,7 +560,7 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
if (category == null) {
decksComboBox.setDeckType(selectedDeckType); //restore old selection if user cancels
if (selectedDeckType == DeckType.NET_ARCHIVE_BLOCK_DECK && NetDeckArchiveBlock != null) {
decksComboBox.setText(NetDeckArchiveVintage.getDeckType());
decksComboBox.setText(NetDeckArchiveBlock.getDeckType());
}
return;
}
@@ -538,7 +573,6 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
});
return;
} else if ((ev.getDeckType() == DeckType.NET_DECK || ev.getDeckType() == DeckType.NET_COMMANDER_DECK) && !refreshingDeckType) {
FThreads.invokeInBackgroundThread(new Runnable() { //needed for loading net decks
@Override
@@ -668,6 +702,9 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
case NET_ARCHIVE_MODERN_DECK:
updateNetArchiveModernDecks();
break;
case NET_ARCHIVE_PAUPER_DECK:
updateNetArchivePauperDecks();
break;
case NET_ARCHIVE_PIONEER_DECK:
updateNetArchivePioneerDecks();
break;
@@ -707,12 +744,17 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
} else if (decksComboBox.getDeckType() == DeckType.NET_ARCHIVE_MODERN_DECK) {
if (NetDeckArchiveModern == null) { return ""; }
state.append(NetDeckArchiveModern.PREFIX).append(NetDeckArchiveModern.getName());
} else if (decksComboBox.getDeckType() == DeckType.NET_ARCHIVE_PAUPER_DECK) {
if (NetDeckArchivePauper == null) { return ""; }
state.append(NetDeckArchivePauper.PREFIX).append(NetDeckArchivePauper.getName());
} else if (decksComboBox.getDeckType() == DeckType.NET_ARCHIVE_LEGACY_DECK) {
if (NetDeckArchiveLegacy == null) { return ""; }
state.append(NetDeckArchiveLegacy.PREFIX).append(NetDeckArchiveLegacy.getName());
} else if (decksComboBox.getDeckType() == DeckType.NET_ARCHIVE_VINTAGE_DECK) {
if (NetDeckArchiveVintage == null) { return ""; }
state.append(NetDeckArchiveVintage.PREFIX).append(NetDeckArchiveVintage.getName());
} else if (decksComboBox.getDeckType() == DeckType.NET_ARCHIVE_BLOCK_DECK) {
if (NetDeckArchiveBlock == null) { return ""; }
state.append(NetDeckArchiveBlock.PREFIX).append(NetDeckArchiveBlock.getName());
} else if (decksComboBox.getDeckType() == null || decksComboBox.getDeckType() == DeckType.NET_DECK) {
//handle special case of net decks
@@ -784,6 +826,10 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
NetDeckArchiveModern = NetDeckArchiveModern.selectAndLoad(lstDecks.getGameType(), deckType.substring(NetDeckArchiveModern.PREFIX.length()));
return DeckType.NET_ARCHIVE_MODERN_DECK;
}
if (deckType.startsWith(NetDeckArchivePauper.PREFIX)) {
NetDeckArchivePauper = NetDeckArchivePauper.selectAndLoad(lstDecks.getGameType(), deckType.substring(NetDeckArchivePauper.PREFIX.length()));
return DeckType.NET_ARCHIVE_PAUPER_DECK;
}
if (deckType.startsWith(NetDeckArchiveLegacy.PREFIX)) {
NetDeckArchiveLegacy = NetDeckArchiveLegacy.selectAndLoad(lstDecks.getGameType(), deckType.substring(NetDeckArchiveLegacy.PREFIX.length()));
return DeckType.NET_ARCHIVE_LEGACY_DECK;

View File

@@ -65,6 +65,7 @@ public class FDeckChooser extends FScreen {
private NetDeckArchiveStandard NetDeckArchiveStandard;
private NetDeckArchivePioneer NetDeckArchivePioneer;
private NetDeckArchiveModern NetDeckArchiveModern;
private NetDeckArchivePauper NetDeckArchivePauper;
private NetDeckArchiveLegacy NetDeckArchiveLegacy;
private NetDeckArchiveVintage NetDeckArchiveVintage;
private NetDeckArchiveBlock NetDeckArchiveBlock;
@@ -542,6 +543,7 @@ public class FDeckChooser extends FScreen {
cmbDeckTypes.addItem(DeckType.NET_ARCHIVE_STANDARD_DECK);
cmbDeckTypes.addItem(DeckType.NET_ARCHIVE_PIONEER_DECK);
cmbDeckTypes.addItem(DeckType.NET_ARCHIVE_MODERN_DECK);
cmbDeckTypes.addItem(DeckType.NET_ARCHIVE_PAUPER_DECK);
cmbDeckTypes.addItem(DeckType.NET_ARCHIVE_LEGACY_DECK);
cmbDeckTypes.addItem(DeckType.NET_ARCHIVE_VINTAGE_DECK);
cmbDeckTypes.addItem(DeckType.NET_ARCHIVE_BLOCK_DECK);
@@ -578,6 +580,7 @@ public class FDeckChooser extends FScreen {
cmbDeckTypes.addItem(DeckType.NET_ARCHIVE_STANDARD_DECK);
cmbDeckTypes.addItem(DeckType.NET_ARCHIVE_PIONEER_DECK);
cmbDeckTypes.addItem(DeckType.NET_ARCHIVE_MODERN_DECK);
cmbDeckTypes.addItem(DeckType.NET_ARCHIVE_PAUPER_DECK);
cmbDeckTypes.addItem(DeckType.NET_ARCHIVE_LEGACY_DECK);
cmbDeckTypes.addItem(DeckType.NET_ARCHIVE_VINTAGE_DECK);
cmbDeckTypes.addItem(DeckType.NET_ARCHIVE_BLOCK_DECK);
@@ -703,6 +706,32 @@ public class FDeckChooser extends FScreen {
});
return;
}
if (!refreshingDeckType&&(deckType == DeckType.NET_ARCHIVE_PAUPER_DECK)) {
FThreads.invokeInBackgroundThread(new Runnable() { //needed for loading net decks
@Override
public void run() {
GameType gameType = lstDecks.getGameType();
final NetDeckArchivePauper category = NetDeckArchivePauper.selectAndLoad(gameType);
FThreads.invokeInEdtLater(new Runnable() {
@Override
public void run() {
if (category == null) {
cmbDeckTypes.setSelectedItem(selectedDeckType); //restore old selection if user cancels
if (selectedDeckType == deckType && NetDeckArchivePauper != null) {
cmbDeckTypes.setText(NetDeckArchivePauper.getDeckType());
}
return;
}
NetDeckArchivePauper = category;
refreshDecksList(deckType, true, e);
}
});
}
});
return;
}
if (!refreshingDeckType&&(deckType == DeckType.NET_ARCHIVE_LEGACY_DECK)) {
FThreads.invokeInBackgroundThread(new Runnable() { //needed for loading net decks
@Override
@@ -755,9 +784,6 @@ public class FDeckChooser extends FScreen {
});
return;
}
if (!refreshingDeckType&&(deckType == DeckType.NET_ARCHIVE_BLOCK_DECK)) {
FThreads.invokeInBackgroundThread(new Runnable() { //needed for loading net decks
@Override
@@ -787,7 +813,6 @@ public class FDeckChooser extends FScreen {
refreshDecksList(deckType, false, e);
}
});
@@ -1010,6 +1035,13 @@ public class FDeckChooser extends FScreen {
pool = DeckProxy.getNetArchiveModernDecks(NetDeckArchiveModern);
config = ItemManagerConfig.NET_ARCHIVE_MODERN_DECKS;
break;
case NET_ARCHIVE_PAUPER_DECK:
if (NetDeckArchivePauper!= null) {
cmbDeckTypes.setText(NetDeckArchivePauper.getDeckType());
}
pool = DeckProxy.getNetArchivePauperDecks(NetDeckArchivePauper);
config = ItemManagerConfig.NET_ARCHIVE_PAUPER_DECKS;
break;
case NET_ARCHIVE_LEGACY_DECK:
if (NetDeckArchiveLegacy != null) {
cmbDeckTypes.setText(NetDeckArchiveLegacy.getDeckType());
@@ -1028,7 +1060,7 @@ public class FDeckChooser extends FScreen {
if (NetDeckArchiveBlock!= null) {
cmbDeckTypes.setText(NetDeckArchiveBlock.getDeckType());
}
pool = DeckProxy.getNetArchiveBlockecks(NetDeckArchiveBlock);
pool = DeckProxy.getNetArchiveBlockDecks(NetDeckArchiveBlock);
config = ItemManagerConfig.NET_ARCHIVE_BLOCK_DECKS;
break;
case NET_DECK:
@@ -1306,6 +1338,10 @@ public class FDeckChooser extends FScreen {
NetDeckArchiveModern = NetDeckArchiveModern.selectAndLoad(lstDecks.getGameType(), deckType.substring(NetDeckArchiveModern.PREFIX.length()));
return DeckType.NET_ARCHIVE_MODERN_DECK;
}
if (deckType.startsWith(NetDeckArchivePauper.PREFIX)) {
NetDeckArchivePauper = NetDeckArchivePauper.selectAndLoad(lstDecks.getGameType(), deckType.substring(NetDeckArchivePauper.PREFIX.length()));
return DeckType.NET_ARCHIVE_PAUPER_DECK;
}
if (deckType.startsWith(NetDeckArchiveLegacy.PREFIX)) {
NetDeckArchiveLegacy = NetDeckArchiveLegacy.selectAndLoad(lstDecks.getGameType(), deckType.substring(NetDeckArchiveLegacy.PREFIX.length()));
return DeckType.NET_ARCHIVE_LEGACY_DECK;
@@ -1399,8 +1435,10 @@ public class FDeckChooser extends FScreen {
DeckType.NET_ARCHIVE_STANDARD_DECK,
DeckType.NET_ARCHIVE_PIONEER_DECK,
DeckType.NET_ARCHIVE_MODERN_DECK,
DeckType.NET_ARCHIVE_PAUPER_DECK,
DeckType.NET_ARCHIVE_VINTAGE_DECK,
DeckType.NET_ARCHIVE_LEGACY_DECK
DeckType.NET_ARCHIVE_LEGACY_DECK,
DeckType.NET_ARCHIVE_BLOCK_DECK
);
if (!FModel.isdeckGenMatrixLoaded()) {

View File

@@ -5,6 +5,6 @@ PT:3/4
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Self | Execute$ TrigPump | TriggerDescription$ Psionic Spells When CARDNAME enters the battlefield, choose target instant or sorcery card in your graveyard, then ABILITY
SVar:TrigPump:DB$ Pump | ValidTgts$ Instant.YouOwn,Sorcery.YouOwn | TgtZone$ Graveyard | TgtPrompt$ Choose target instant or sorcery card in your graveyard | SubAbility$ DBRollDice
SVar:DBRollDice:DB$ RollDice | Sides$ 20 | ResultSubAbilities$ 1-9:DBLibrary,10-20:DBHand | SpellDescription$ roll a d20.
SVar:DBLibrary:DB$ ChangeZone | Defined$ Targeted | Origin$ Graveyard | Destination$ Library | LibraryPosition$ 0 | Optional$ True | SpellDescription$ 1-9 VERT You may put that card on top of your library.
SVar:DBHand:DB$ ChangeZone | Defined$ Targeted | Origin$ Graveyard | Destination$ Hand | SpellDescription$ 10-20 VERT Return that card to your hand.
Oracle:Psionic Spells — When Aberrant Mind Sorcerer enters the battlefield, choose target instant or sorcery card in your graveyard, then roll a d20.\n1-9 | You may put that card on top of your library.\n10-20 | Return that card to your hand.
SVar:DBLibrary:DB$ ChangeZone | Defined$ Targeted | Origin$ Graveyard | Destination$ Library | LibraryPosition$ 0 | Optional$ True | SpellDescription$ 19 VERT You may put that card on top of your library.
SVar:DBHand:DB$ ChangeZone | Defined$ Targeted | Origin$ Graveyard | Destination$ Hand | SpellDescription$ 1020 VERT Return that card to your hand.
Oracle:Psionic Spells — When Aberrant Mind Sorcerer enters the battlefield, choose target instant or sorcery card in your graveyard, then roll a d20.\n19 | You may put that card on top of your library.\n1020 | Return that card to your hand.

View File

@@ -3,8 +3,8 @@ ManaCost:2 G G G
Types:Legendary Creature Ooze
PT:2/2
K:Storm
S:Mode$ Continuous | Affected$ Card.token+Self | RemoveType$ Legendary | Description$ CARDNAME isn't legendary as long as it's a token.
S:Mode$ Continuous | Affected$ Card.token+Self | RemoveType$ Legendary | Description$ CARDNAME isn't legendary if it's a token.
K:etbCounter:P1P1:X:no condition:CARDNAME enters the battlefield with a +1/+1 counter on it for each other Ooze you control.
SVar:X:Count$LastStateBattlefield Ooze.YouCtrl+Other
DeckHas:Ability$Counters
Oracle:Storm (When you cast this spell, copy it for each spell cast before it this turn. Copies become tokens.)\nAeve, Progenitor Ooze isn't legendary as long as it's a token.\nAeve enters the battlefield with a +1/+1 counter on it for each other Ooze you control.
Oracle:Storm (When you cast this spell, copy it for each spell cast before it this turn. Copies become tokens.)\nAeve, Progenitor Ooze isn't legendary if it's a token.\nAeve enters the battlefield with a +1/+1 counter on it for each other Ooze you control.

View File

@@ -1,9 +1,9 @@
Name:Altar of the Goyf
ManaCost:5
Types:Tribal Artifact Lhurgoyf
T:Mode$ Attacks | ValidCard$ Creature.YouCtrl | Alone$ True | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever a creature you control attacks alone, it gets +X/+X until end of turn, where X is the number of card types among cards in all graveyard.
T:Mode$ Attacks | ValidCard$ Creature.YouCtrl | Alone$ True | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever a creature you control attacks alone, it gets +X/+X until end of turn, where X is the number of card types among cards in all graveyards.
SVar:TrigPump:DB$ Pump | Defined$ TriggeredAttacker | NumAtt$ +X | NumDef$ +X
S:Mode$ Continuous | Affected$ Creature.Lhurgoyf+YouCtrl | AddKeyword$ Trample | Description$ Lhurgoyf creatures you control have trample.
SVar:X:Count$CardTypes.Graveyard
SVar:PlayMain1:TRUE
Oracle:Whenever a creature you control attacks alone, it gets +X/+X until end of turn, where X is the number of card types among cards in all graveyard.\nLhurgoyf creatures you control have trample.
Oracle:Whenever a creature you control attacks alone, it gets +X/+X until end of turn, where X is the number of card types among cards in all graveyards.\nLhurgoyf creatures you control have trample.

View File

@@ -1,7 +1,7 @@
Name:Aluren
ManaCost:2 G G
Types:Enchantment
S:Mode$ Continuous | Affected$ Creature.cmcLE3+nonToken | MayPlay$ True | MayPlayCardOwner$ True | MayPlayWithoutManaCost$ True | MayPlayWithFlash$ True | MayPlayDontGrantZonePermissions$ True | AffectedZone$ Hand,Graveyard,Library,Exile,Command | Description$ Any player may cast creature spells with mana value 3 or less without paying their mana costs and as though they had flash.
S:Mode$ Continuous | Affected$ Creature.cmcLE3+nonToken | MayPlay$ True | MayPlayPlayer$ CardOwner | MayPlayWithoutManaCost$ True | MayPlayWithFlash$ True | MayPlayDontGrantZonePermissions$ True | AffectedZone$ Hand,Graveyard,Library,Exile,Command | Description$ Any player may cast creature spells with mana value 3 or less without paying their mana costs and as though they had flash.
SVar:NonStackingEffect:True
AI:RemoveDeck:Random
SVar:Picture:http://www.wizards.com/global/images/magic/general/aluren.jpg

View File

@@ -3,5 +3,5 @@ ManaCost:5 U U
Types:Sorcery
A:SP$ RollDice | Amount$ 2 | Sides$ 8 | ChosenSVar$ X | OtherSVar$ Y | SubAbility$ DBDraw | StackDescription$ SpellDescription | SpellDescription$ Roll two d8 and choose one result. Draw cards equal to that result. Then you may cast an instant or sorcery spell with mana value less than or equal to the other result from your hand without paying its mana cost.
SVar:DBDraw:DB$ Draw | NumCards$ X | SubAbility$ DBPlay | StackDescription$ None
SVar:DBPlay:DB$ Play | Valid$ Instant,Sorcery | ValidSA$ Spell.cmcLEY | ValidZone$ Hand | WithoutManaCost$ True | Amount$ 1 | Controller$ You | Optional$ True
SVar:DBPlay:DB$ Play | Valid$ Card | ValidSA$ Instant.cmcLEY,Sorcery.cmcLEY | ValidZone$ Hand | WithoutManaCost$ True | Amount$ 1 | Controller$ You | Optional$ True
Oracle:Roll two d8 and choose one result. Draw cards equal to that result. Then you may cast an instant or sorcery spell with mana value less than or equal to the other result from your hand without paying its mana cost.

View File

@@ -3,6 +3,6 @@ ManaCost:1 U
Types:Creature Elf Wizard
PT:2/1
A:AB$ RollDice | Cost$ 5 U | Sides$ 20 | ResultSubAbilities$ 1-9:DBDraw,10-20:DBDig | PrecostDesc$ Search the Room — | SpellDescription$ Roll a d20.
SVar:DBDraw:DB$ Draw | NumCards$ 1 | SpellDescription$ 1-9 VERT Draw a card.
SVar:DBDig:DB$ Dig | DigNum$ 3 | ChangeNum$ 1 | SpellDescription$ 10-20 VERT Look at the top three cards of your library. Put one of them into your hand and the rest on the bottom of your library in any order.
Oracle:Search the Room — {5}{U}: Roll a d20.\n1-9 | Draw a card.\n10-20 | Look at the top three cards of your library. Put one of them into your hand and the rest on the bottom of your library in any order.
SVar:DBDraw:DB$ Draw | NumCards$ 1 | SpellDescription$ 19 VERT Draw a card.
SVar:DBDig:DB$ Dig | DigNum$ 3 | ChangeNum$ 1 | SpellDescription$ 1020 VERT Look at the top three cards of your library. Put one of them into your hand and the rest on the bottom of your library in any order.
Oracle:Search the Room — {5}{U}: Roll a d20.\n19 | Draw a card.\n1020 | Look at the top three cards of your library. Put one of them into your hand and the rest on the bottom of your library in any order.

View File

@@ -8,6 +8,6 @@ SVar:DBExile:DB$ ChangeZone | Origin$ Sideboard | Destination$ Exile | ChangeTyp
SVar:DBPump:DB$ Pump | NoteCards$ Remembered | NoteCardsFor$ ArcaneSavant | SubAbility$ DBCleanup
SVar:DBCleanup:DB$Cleanup | ClearRemembered$ True
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPlay | TriggerDescription$ When CARDNAME enters the battlefield, copy a card you exiled with cards named Arcane Savant. You may cast the copy without paying its mana cost.
SVar:TrigPlay:DB$ Play | Valid$ Card.YouOwn+NotedForArcaneSavant | ValidZone$ Exile | Amount$ 1 | CopyOnce$ True | WithoutManaCost$ True | Optional$ True | CopyCard$ True | SpellDescription$ You may copy the exiled card. If you do, you may cast the copy without paying its mana cost. | SubAbility$ DBCleanup
SVar:TrigPlay:DB$ Play | Valid$ Card.YouOwn+NotedForArcaneSavant | ValidSA$ Spell | ValidZone$ Exile | Amount$ 1 | WithoutManaCost$ True | Optional$ True | CopyCard$ True | SpellDescription$ You may copy the exiled card. If you do, you may cast the copy without paying its mana cost. | SubAbility$ DBCleanup
SVar:Picture:https://img.scryfall.com/cards/large/en/cn2/27.jpg?1517813031
Oracle:Before you shuffle your deck to start the game, you may reveal this card from your deck and exile an instant or sorcery card you drafted that isn't in your deck.\nWhen Arcane Savant enters the battlefield, copy a card you exiled with cards named Arcane Savant. You may cast the copy without paying its mana cost.

View File

@@ -5,4 +5,4 @@ PT:0/0
K:Modular:4
K:Riot
DeckHas:Ability$Counters
Oracle:Modular 4 (This creature enters the battlefield with four +1/+1 counters on it. When it dies, you may put its +1/+1 counters on target artifact creature.)\nRiot (This creature enters the battlefield with your choice of a +1/+1 counter or haste.)
Oracle:Modular 4 (This creature enters the battlefield with four +1/+1 counters on it. When it dies, you may put its +1/+1 counters on target artifact creature.)\nRiot (This creature enters the battlefield with your choice of an additional +1/+1 counter or haste.)

View File

@@ -2,6 +2,6 @@ Name:Armory Veteran
ManaCost:1 R
Types:Creature Orc Warrior
PT:2/2
S:Mode$ Continuous | Affected$ Card.Self+equipped | AddKeyword$ Menace | Description$ As long as CARDNAME is equipped, it has menace. (It cant be blocked except by two or more creatures.)
S:Mode$ Continuous | Affected$ Card.Self+equipped | AddKeyword$ Menace | Description$ As long as CARDNAME is equipped, it has menace. (It can't be blocked except by two or more creatures.)
SVar:EquipMe:Once
Oracle:As long as Armory Veteran is equipped, it has menace. (It cant be blocked except by two or more creatures.)
Oracle:As long as Armory Veteran is equipped, it has menace. (It can't be blocked except by two or more creatures.)

View File

@@ -5,6 +5,6 @@ Loyalty:5
A:AB$ Token | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | TokenAmount$ 1 | TokenScript$ ub_2_3_nightmare_mill | TokenOwner$ You | LegacyImage$ ub 2 3 Nightmare mill thb | SpellDescription$ Create a 2/3 blue and black Nightmare creature token with "Whenever this creature attacks or blocks, each opponent exiles the top two cards of their library."
A:AB$ ChangeZone | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | ValidTgts$ Permanent.nonLand | TgtPrompt$ Select target nonland permanent | Origin$ Battlefield | Destination$ Hand | SubAbility$ DBExile | SpellDescription$ Return target nonland permanent to its owner's hand, then that player exiles a card from their hand.
SVar:DBExile:DB$ ChangeZone | Origin$ Hand | Destination$ Exile | ChangeType$ Card | ChangeNum$ 1 | Mandatory$ True | DefinedPlayer$ TargetedOwner | Chooser$ TargetedOwner
A:AB$ Play | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | Valid$ Card.nonLand+faceUp+OwnedBy Player.Opponent | ValidZone$ Exile | WithoutManaCost$ True | Amount$ 3 | Optional$ True | SpellDescription$ You may cast up to three spells from among face-up cards your opponents own from exile without paying their mana costs.
A:AB$ Play | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | Valid$ Card.faceUp+OwnedBy Player.Opponent | ValidSA$ Spell | ValidZone$ Exile | WithoutManaCost$ True | Amount$ 3 | Optional$ True | SpellDescription$ You may cast up to three spells from among face-up cards your opponents own from exile without paying their mana costs.
DeckHas:Ability$Token
Oracle:[+1]: Create a 2/3 blue and black Nightmare creature token with "Whenever this creature attacks or blocks, each opponent exiles the top two cards of their library."\n[3]: Return target nonland permanent to its owner's hand, then that player exiles a card from their hand.\n[7]: You may cast up to three spells from among face-up cards your opponents own from exile without paying their mana costs.

View File

@@ -5,5 +5,5 @@ PT:6/5
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigCharm | TriggerDescription$ When CARDNAME enters the battlefield, ABILITY
SVar:TrigCharm:DB$ Charm | Choices$ DBSacrifice,DBPumpAll
SVar:DBSacrifice:DB$ Sacrifice | Defined$ Opponent | SacValid$ Enchantment | SpellDescription$ Antimagic Cone — Each opponent sacrifices an enchantment.
SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Creature.YouCtrl | KW$ Menace | SpellDescription$ Fear Ray — Creatures you control gain menace until end of turn.
Oracle:When Baleful Beholder enters the battlefield, choose one —\n• Antimagic Cone — Each opponent sacrifices an enchantment.\n• Fear Ray — Creatures you control gain menace until end of turn. (A creature with menance can't be blocked except by two or more creatures.)
SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Creature.YouCtrl | KW$ Menace | SpellDescription$ Fear Ray — Creatures you control gain menace until end of turn. (A creature with menace can't be blocked except by two or more creatures.)
Oracle:When Baleful Beholder enters the battlefield, choose one —\n• Antimagic Cone — Each opponent sacrifices an enchantment.\n• Fear Ray — Creatures you control gain menace until end of turn. (A creature with menace can't be blocked except by two or more creatures.)

View File

@@ -1,11 +1,11 @@
Name:Barbed Spike
ManaCost:1 W
Types:Artifact Equipment
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create a 1/1 colorless Thopter artifact creature token with flying and attach CARDNAME to it.
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create a 1/1 colorless Thopter artifact creature token with flying, then attach CARDNAME to it.
SVar:TrigToken:DB$ Token | TokenScript$ c_1_1_a_thopter_flying | RememberTokens$ True | SubAbility$ DBAttach
SVar:DBAttach:DB$ Attach | Defined$ Remembered | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 1 | Description$ Equipped creature gets +1/+0.
K:Equip:2
DeckHas:Ability$Token
Oracle:When Barbed Spike enters the battlefield, create a 1/1 colorless Thopter artifact creature token with flying and attach Barbed Spike to it.\nEquipped creature gets +1/+0.\nEquip {2}
Oracle:When Barbed Spike enters the battlefield, create a 1/1 colorless Thopter artifact creature token with flying, then attach Barbed Spike to it.\nEquipped creature gets +1/+0.\nEquip {2}

View File

@@ -7,4 +7,4 @@ T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigToken | TriggerZones$ Batt
SVar:TrigToken:DB$Token | TokenAmount$ 1 | TokenScript$ r_1_1_goblin | TokenOwner$ You | TokenTapped$ True | TokenAttacking$ True
SVar:PackTactics:Count$SumPower_Creature.attacking
DeckHas:Ability$Token
Oracle:{1}{R}: Goblins you control get +1/+0 and gain haste until end of turn.\nPack tactics — Whenever Battle Cry Goblin attacks, if you attacked with creatures with total power 6 or greater this combat, create a 1/1 red Goblin creature token thats tapped and attacking.
Oracle:{1}{R}: Goblins you control get +1/+0 and gain haste until end of turn.\nPack tactics — Whenever Battle Cry Goblin attacks, if you attacked with creatures with total power 6 or greater this combat, create a 1/1 red Goblin creature token that's tapped and attacking.

View File

@@ -2,6 +2,6 @@ Name:Belt of Giant Strength
ManaCost:1 G
Types:Artifact Equipment
S:Mode$ Continuous | Affected$ Creature.EquippedBy | SetPower$ 10 | SetToughness$ 10 | Description$ Equipped creature has base power and toughness 10/10.
K:Equip:10:::ReduceCost$ X:This ability costs {X} less to activate where X is the power of the creature it targets.
K:Equip:10:::ReduceCost$ X:This ability costs {X} less to activate, where X is the power of the creature it targets.
SVar:X:Targeted$CardPower
Oracle:Equipped creature has base power and toughness 10/10.\nEquip {10}. This ability costs {X} less to activate where X is the power of the creature it targets.
Oracle:Equipped creature has base power and toughness 10/10.\nEquip {10}. This ability costs {X} less to activate, where X is the power of the creature it targets.

View File

@@ -2,8 +2,8 @@ Name:Berserker's Frenzy
ManaCost:2 R
Types:Instant
A:SP$ RollDice | ActivationPhases$ Upkeep->Declare Attackers | Amount$ 2 | Sides$ 20 | IgnoreLower$ 1 | ResultSubAbilities$ 1-14:MustBlock,15-20:ChooseBlock | SpellDescription$ Cast this spell only before combat or during combat before blockers are declared. Roll two d20 and ignore the lower roll.
SVar:MustBlock:DB$ ChooseCard | Choices$ Creature | Amount$ X | MinAmount$ 0 | ChoiceTitle$ Choose any number of creatures | SubAbility$ DBPump | SpellDescription$ 1-14 VERT Choose any number of creatures. They block this turn if able.
SVar:MustBlock:DB$ ChooseCard | Choices$ Creature | Amount$ X | MinAmount$ 0 | ChoiceTitle$ Choose any number of creatures | SubAbility$ DBPump | SpellDescription$ 114 VERT Choose any number of creatures. They block this turn if able.
SVar:DBPump:DB$ Pump | Defined$ ChosenCard | KW$ HIDDEN CARDNAME blocks each combat if able.
SVar:X:Count$Valid Creature
SVar:ChooseBlock:DB$ DeclareCombatants | DeclareBlockers$ True | Until$ EndOfTurn | SpellDescription$ 15-20 VERT You choose which creatures block this turn and how those creatures block.
Oracle:Cast this spell only before combat or during combat before blockers are declared.\nRoll two d20 and ignore the lower roll.\n1-14 | Choose any number of creatures. They block this turn if able.\n15-20 | You choose which creatures block this turn and how those creatures block.
SVar:ChooseBlock:DB$ DeclareCombatants | DeclareBlockers$ True | Until$ EndOfTurn | SpellDescription$ 1520 VERT You choose which creatures block this turn and how those creatures block.
Oracle:Cast this spell only before combat or during combat before blockers are declared.\nRoll two d20 and ignore the lower roll.\n114 | Choose any number of creatures. They block this turn if able.\n1520 | You choose which creatures block this turn and how those creatures block.

View File

@@ -1,6 +1,6 @@
Name:Birchlore Rangers
ManaCost:G
Types:Creature Elf Druid
Types:Creature Elf Druid Ranger
PT:1/1
A:AB$ Mana | Cost$ tapXType<2/Elf> | Produced$ Any | SpellDescription$ Add one mana of any color.
K:Morph:G

View File

@@ -2,6 +2,6 @@ Name:Black Poplar Shaman
ManaCost:2 B
Types:Creature Treefolk Shaman
PT:1/3
A:AB$ Regenerate | ValidTgts$ Creature.Treefolk | TgtPrompt$ Select target Treefolk. | Cost$ 2 B | SpellDescription$ Regenerate target Treefolk.
A:AB$ Regenerate | ValidTgts$ Treefolk | TgtPrompt$ Select target Treefolk. | Cost$ 2 B | SpellDescription$ Regenerate target Treefolk.
SVar:Picture:http://www.wizards.com/global/images/magic/general/black_poplar_shaman.jpg
Oracle:{2}{B}: Regenerate target Treefolk.

View File

@@ -1,6 +1,6 @@
Name:Borderland Ranger
ManaCost:2 G
Types:Creature Human Scout
Types:Creature Human Scout Ranger
PT:2/2
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Self | Execute$ TrigChange | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, you may search your library for a basic land card, reveal it, put it into your hand, then shuffle.
SVar:TrigChange:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Land.Basic | ChangeNum$ 1 | ShuffleNonMandatory$ True

View File

@@ -1,8 +1,8 @@
Name:Brain in a Jar
ManaCost:2
Types:Artifact
A:AB$ PutCounter | Cost$ 1 T | CounterType$ CHARGE | CounterNum$ 1 | SubAbility$ DBCast | SpellDescription$ Put a charge counter on Brain in a Jar, then you may cast an instant or sorcery card with mana value equal to the number of charge counters on Brain in a Jar from your hand without paying its mana cost.
SVar:DBCast:DB$ Play | ValidZone$ Hand | Valid$ Instant.YouOwn,Sorcery.YouOwn| ValidSA$ Spell.cmcEQY | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ 1
A:AB$ PutCounter | Cost$ 1 T | CounterType$ CHARGE | CounterNum$ 1 | SubAbility$ DBCast | SpellDescription$ Put a charge counter on Brain in a Jar, then you may cast an instant or sorcery spell with mana value equal to the number of charge counters on Brain in a Jar from your hand without paying its mana cost.
SVar:DBCast:DB$ Play | ValidZone$ Hand | Valid$ Card | ValidSA$ Instant.cmcEQY,Sorcery.cmcEQY | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ 1
A:AB$ Scry | Cost$ 3 T SubCounter<X/CHARGE> | ScryNum$ X | AILogic$ BrainJar | SpellDescription$ Scry X.
SVar:X:Count$xPaid
SVar:Y:Count$CardCounters.CHARGE

View File

@@ -3,4 +3,4 @@ ManaCost:1
Types:Artifact
A:AB$ Draw | Cost$ 2 T Sac<1/CARDNAME> | NumCards$ 3 | SubAbility$ DBChangeZone | StackDescription$ {p:You} draws three cards, | SpellDescription$ Draw three cards, then put two cards from your hand on top of your library in any order.
SVar:DBChangeZone:DB$ ChangeZone | Origin$ Hand | Destination$ Library | ChangeNum$ 2 | Mandatory$ True | StackDescription$ then puts two cards from their hand on top of their library in any order.
Oracle:{2},{T}, Sacrifice Brainstone: Draw three cards, then put two cards from your hand on top of your library in any order.
Oracle:{2}, {T}, Sacrifice Brainstone: Draw three cards, then put two cards from your hand on top of your library in any order.

View File

@@ -2,7 +2,7 @@ Name:Bring to Light
ManaCost:3 G U
Types:Sorcery
A:SP$ ChangeZone | Cost$ 3 G U | Origin$ Library | Destination$ Exile | ChangeType$ Creature.cmcLEX,Instant.cmcLEX,Sorcery.cmcLEX | ChangeNum$ 1 | RememberChanged$ True | SubAbility$ DBPlay | SpellDescription$ Converge — Search your library for a creature, instant, or sorcery card with mana value less than or equal to the number of colors of mana spent to cast this spell, exile that card, then shuffle. You may cast that card without paying its mana cost.
SVar:DBPlay:DB$ Play | Defined$ Remembered | WithoutManaCost$ True | Optional$ True | SubAbility$ DBCleanup
SVar:DBPlay:DB$ Play | Defined$ Remembered | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:Count$Converge
AI:RemoveDeck:All

View File

@@ -3,6 +3,6 @@ ManaCost:1 B
Types:Creature Human Warlock
PT:2/1
A:AB$ Pump | Cost$ Discard<1/Card> | KW$ Lifelink | SpellDescription$ CARDNAME gains lifelink until end of turn.
S:Mode$ Continuous | Affected$ Card.Self | AddPower$ 1 | AddToughness$ 2 | Condition$ Threshold | Description$ Threshold — CARDNAME get +1/+2 as long as seven or more cards are in your graveyard.
S:Mode$ Continuous | Affected$ Card.Self | AddPower$ 1 | AddToughness$ 2 | Condition$ Threshold | Description$ Threshold — CARDNAME gets +1/+2 as long as seven or more cards are in your graveyard.
DeckHas:Ability$LifeGain & Ability$Discard
Oracle:Discard a card: Cabal Initiate gains lifelink until end of turn.\nThreshold — Cabal Initiate get +1/+2 as long as seven or more cards are in your graveyard.
Oracle:Discard a card: Cabal Initiate gains lifelink until end of turn.\nThreshold — Cabal Initiate gets +1/+2 as long as seven or more cards are in your graveyard.

View File

@@ -4,6 +4,6 @@ Types:Enchantment Aura
K:Enchant creature
A:SP$ Attach | Cost$ 1 G W | ValidTgts$ Creature | AILogic$ Curse
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddHiddenKeyword$ CARDNAME can't attack or block. | Description$ Enchanted creature can't attack or block.
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPut | TriggerDescription$ When CARDNAME enters the battlefield, support 2. (Put a +1/+1 counter on each of up to two other target creatures.)
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPut | TriggerDescription$ When CARDNAME enters the battlefield, support 2. (Put a +1/+1 counter on each of up to two target creatures.)
SVar:TrigPut:DB$ PutCounter | ValidTgts$ Creature | TgtPrompt$ Select up to two target creatures | TargetMin$ 0 | TargetMax$ 2 | CounterType$ P1P1 | CounterNum$ 1
Oracle:Enchant creature\nEnchanted creature can't attack or block.\nWhen Captured by Lagacs enters the battlefield, support 2. (Put a +1/+1 counter on each of up to two other target creatures.)
Oracle:Enchant creature\nEnchanted creature can't attack or block.\nWhen Captured by Lagacs enters the battlefield, support 2. (Put a +1/+1 counter on each of up to two target creatures.)

View File

@@ -5,6 +5,6 @@ PT:3/5
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDig | TriggerDescription$ Whenever CARDNAME enters the battlefield or a planeswalker you control dies, look at the top seven cards of your library. You may reveal a planeswalker card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Planeswalker.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDig | Secondary$ True | TriggerDescription$ Whenever CARDNAME enters the battlefield or a planeswalker you control dies, look at the top seven cards of your library. You may reveal a planeswalker card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.
SVar:TrigDig:DB$ Dig | DigNum$ 7 | ChangeNum$ 1 | Optional$ True | ChangeValid$ Planeswalker | RestRandomOrder$ True | Reveal$ True
S:Mode$ RaiseCost | ValidCard$ Planeswalker.YouCtrl | Type$ Loyalty | Cost$ AddCounter<1/LOYALTY> | Description$ Planeswalkers' loyalty abilities you activate cost an additional {+1} to activate.
S:Mode$ RaiseCost | ValidCard$ Planeswalker.YouCtrl | Type$ Loyalty | Cost$ AddCounter<1/LOYALTY> | Description$ Planeswalkers' loyalty abilities you activate cost an additional [+1] to activate.
DeckNeeds:Type$Planeswalker
Oracle:Whenever Carth the Lion enters the battlefield or a planeswalker you control dies, look at the top seven cards of your library. You may reveal a planeswalker card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.\nPlaneswalkers' loyalty abilities you activate cost an additional {+1} to activate.
Oracle:Whenever Carth the Lion enters the battlefield or a planeswalker you control dies, look at the top seven cards of your library. You may reveal a planeswalker card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.\nPlaneswalkers' loyalty abilities you activate cost an additional [+1] to activate.

View File

@@ -5,5 +5,5 @@ K:ETBReplacement:Other:LandTapped
SVar:LandTapped:DB$ Tap | Defined$ Self | ETB$ True | ConditionCheckSVar$ ETBCheckSVar2 | ConditionSVarCompare$ GE2 | SpellDescription$ If you control two or more other lands, CARDNAME enters the battlefield tapped.
SVar:ETBCheckSVar2:Count$LastStateBattlefield Land.YouCtrl
A:AB$ Mana | Cost$ T | Produced$ W | SpellDescription$ Add {W}.
A:AB$ Animate | Cost$ 4 W | Defined$ Self | Power$ 3 | Toughness$ 4 | Types$ Creature,Dragon | Colors$ White | Keywords$ Flying | SpellDescription$ CARDNAME becomes a 3/4 white Dragon creature with flying until end of turn. Its still a land.
Oracle:If you control two or more other lands, Cave of the Frost Dragon enters the battlefield tapped.\n{T}: Add {W}.\n{4}{W}: Cave of the Frost Dragon becomes a 3/4 white Dragon creature with flying until end of turn. Its still a land.
A:AB$ Animate | Cost$ 4 W | Defined$ Self | Power$ 3 | Toughness$ 4 | Types$ Creature,Dragon | Colors$ White | Keywords$ Flying | SpellDescription$ CARDNAME becomes a 3/4 white Dragon creature with flying until end of turn. It's still a land.
Oracle:If you control two or more other lands, Cave of the Frost Dragon enters the battlefield tapped.\n{T}: Add {W}.\n{4}{W}: Cave of the Frost Dragon becomes a 3/4 white Dragon creature with flying until end of turn. It's still a land.

View File

@@ -6,8 +6,7 @@ A:AB$ PutCounterAll | Cost$ AddCounter<0/LOYALTY> | Planeswalker$ True | ValidCa
A:AB$ Token | Cost$ AddCounter<0/LOYALTY> | Planeswalker$ True | TokenAmount$ 2 | TokenScript$ r_1_1_elemental | TokenOwner$ You | LegacyImage$ r 1 1 elemental m20 | AtEOT$ Sacrifice | RememberTokens$ True | SubAbility$ DBPump | SpellDescription$ Create two 1/1 red Elemental creature tokens. They gain haste. Sacrifice them at the beginning of the next end step.
SVar:DBPump:DB$ Pump | Defined$ Remembered | KW$ Haste | Duration$ Permanent | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
A:AB$ Effect | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | AILogic$ CastFromGraveThisTurn | ValidTgts$ Instant.YouCtrl+cmcLE3,Sorcery.YouCtrl+cmcLE3 | TgtZone$ Graveyard | TgtPrompt$ Select target instant or sorcery card with mana cost 3 or less | RememberObjects$ Targeted | StaticAbilities$ Play | ExileOnMoved$ Graveyard | SubAbility$ DBEffect | SpellDescription$ You may cast target instant or sorcery card with mana cost 3 or less from your graveyard this turn. If that card would be put into your graveyard this turn, exile it instead.
SVar:Play:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Graveyard | Description$ You may play remembered card.
A:AB$ Play | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | ValidTgts$ Instant.YouCtrl+cmcLE3,Sorcery.YouCtrl+cmcLE3 | TgtZone$ Graveyard | TgtPrompt$ Select target instant or sorcery card with mana cost 3 or less | AILogic$ ReplaySpell | ValidSA$ Spell | Optional$ True | ExileOnMoved$ Graveyard | SubAbility$ DBEffect | SpellDescription$ You may cast target instant or sorcery card with mana cost 3 or less from your graveyard. If that card would be put into your graveyard this turn, exile it instead.
SVar:DBEffect:DB$ Effect | RememberObjects$ Targeted | ExileOnMoved$ Stack | ReplacementEffects$ ReplaceGraveyard
SVar:ReplaceGraveyard:Event$ Moved | ValidCard$ Card.IsRemembered | Origin$ Stack | Destination$ Graveyard | ReplaceWith$ MoveExile | Description$ If that card would be put into your graveyard this turn, exile it instead.
SVar:MoveExile:DB$ ChangeZone | Defined$ ReplacedCard | Origin$ Stack | Destination$ Exile

View File

@@ -12,6 +12,6 @@ SVar:Play:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Car
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
A:AB$ Dig | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | Defined$ You | DigNum$ 10 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBChoose | SpellDescription$ Exile the top ten cards of your library. Choose an instant or sorcery card exiled this way and copy it three times. You may cast the copies without paying their mana costs.
SVar:DBChoose:DB$ ChooseCard | Choices$ Instant.IsRemembered,Sorcery.IsRemembered | Mandatory$ True | ChoiceZone$ Exile | Defined$ You | SubAbility$ DBPlay
SVar:DBPlay:DB$ Play | Defined$ ChosenCard | WithoutManaCost$ True | CopyCard$ True | Amount$ 3 | AllowRepeats$ True | Controller$ You | Optional$ True | SubAbility$ DBCleanup
SVar:DBPlay:DB$ Play | Defined$ ChosenCard | ValidSA$ Spell | WithoutManaCost$ True | CopyCard$ True | Amount$ 3 | AllowRepeats$ True | Controller$ You | Optional$ True | SubAbility$ DBCleanup
AI:RemoveDeck:All
Oracle:[+1]: Chandra, Pyromaster deals 1 damage to target player or planeswalker and 1 damage to up to one target creature that player or that planeswalker's controller controls. That creature can't block this turn.\n[0]: Exile the top card of your library. You may play it this turn.\n[7]: Exile the top ten cards of your library. Choose an instant or sorcery card exiled this way and copy it three times. You may cast the copies without paying their mana costs.

View File

@@ -3,7 +3,7 @@ ManaCost:2 R R
Types:Legendary Planeswalker Chandra
Loyalty:4
A:AB$ Dig | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | Defined$ You | DigNum$ 1 | ChangeNum$ All | DestinationZone$ Exile | Imprint$ True | SubAbility$ DBPlay | AILogic$ ExileAndPlayOrDealDamage | SpellDescription$ Exile the top card of your library. You may cast that card. If you don't, Chandra, Torch of Defiance deals 2 damage to each opponent.
SVar:DBPlay:DB$ Play | Valid$ Card.nonLand+IsImprinted | ValidZone$ Exile | Controller$ You | Optional$ True | Amount$ All | RememberPlayed$ True | ShowCardToActivator$ True | SubAbility$ DBDamage
SVar:DBPlay:DB$ Play | Valid$ Card.IsImprinted | ValidSA$ Spell | ValidZone$ Exile | Controller$ You | Optional$ True | Amount$ All | RememberPlayed$ True | ShowCardToActivator$ True | SubAbility$ DBDamage
SVar:DBDamage:DB$ DealDamage | Defined$ Player.Opponent | NumDmg$ 2 | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ EQ0 | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True
A:AB$ Mana | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | Produced$ R | Amount$ 2 | AILogic$ ManaRitual | AINoRecursiveCheck$ True | SpellDescription$ Add {R}{R}.

View File

@@ -4,10 +4,10 @@ Types:Creature Human Shaman
PT:4/3
T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigRollDice | TriggerDescription$ Wild Magic Surge — Whenever CARDNAME attacks, ABILITY
SVar:TrigRollDice:DB$ RollDice | Sides$ 20 | ResultSubAbilities$ 1-9:Exile1,10-19:Exile2,20:Exile3 | SpellDescription$ roll a d20.
SVar:Exile1:DB$ Dig | Defined$ You | DigNum$ 1 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect | SpellDescription$ 1-9 VERT Exile the top card of your library. You may play it this turn.
SVar:Exile2:DB$ Dig | Defined$ You | DigNum$ 2 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect | SpellDescription$ 10-19 VERT Exile the top two cards of your library. You may play them this turn.
SVar:Exile1:DB$ Dig | Defined$ You | DigNum$ 1 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect | SpellDescription$ 19 VERT Exile the top card of your library. You may play it this turn.
SVar:Exile2:DB$ Dig | Defined$ You | DigNum$ 2 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect | SpellDescription$ 1019 VERT Exile the top two cards of your library. You may play them this turn.
SVar:Exile3:DB$ Dig | Defined$ You | DigNum$ 3 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect | SpellDescription$ 20 VERT Exile the top three cards of your library. You may play them this turn.
SVar:DBEffect:DB$ Effect | StaticAbilities$ STPlay | RememberObjects$ Remembered | ForgetOnMoved$ Exile | SubAbility$ DBCleanup
SVar:STPlay:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Exile | Affected$ Card.IsRemembered | MayPlay$ True | Description$ You may play the card(s) this turn.
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
Oracle:Wild Magic Surge — Whenever Chaos Channeler attacks, roll a d20.\n1-9 | Exile the top card of your library. You may play it this turn.\n10-19 | Exile the top two cards of your library. You may play them this turn.\n20 | Exile the top three cards of your library. You may play them this turn.
Oracle:Wild Magic Surge — Whenever Chaos Channeler attacks, roll a d20.\n19 | Exile the top card of your library. You may play it this turn.\n1019 | Exile the top two cards of your library. You may play them this turn.\n20 | Exile the top three cards of your library. You may play them this turn.

View File

@@ -2,7 +2,7 @@ Name:Chaos Wand
ManaCost:3
Types:Artifact
A:AB$ DigUntil | Cost$ 4 T | ValidTgts$ Opponent | Valid$ Instant,Sorcery | ValidDescription$ instant or sorcery | FoundDestination$ Exile | RevealedDestination$ Exile | RememberFound$ True | RememberRevealed$ True | IsCurse$ True | SubAbility$ DBPlay | SpellDescription$ Target opponent exiles cards from the top of their library until they exile an instant or sorcery card. You may cast that card without paying its mana cost. Then put the exiled cards that weren't cast this way on the bottom of that library in a random order.
SVar:DBPlay:DB$ Play | Defined$ Remembered | ValidZone$ Exile | Valid$ Instant.IsRemembered,Sorcery.IsRemembered | WithoutManaCost$ True | RememberObjects$ Remembered | Optional$ True | ForgetTargetRemembered$ True | SubAbility$ DBRestRandomOrder
SVar:DBPlay:DB$ Play | Defined$ Remembered | ValidZone$ Exile | Valid$ Instant.IsRemembered,Sorcery.IsRemembered | ValidSA$ Spell | WithoutManaCost$ True | RememberObjects$ Remembered | Optional$ True | ForgetTargetRemembered$ True | SubAbility$ DBRestRandomOrder
SVar:DBRestRandomOrder:DB$ ChangeZone | Defined$ Remembered | AtRandom$ True | Origin$ Library | Destination$ Library | LibraryPosition$ -1 | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:Picture:http://www.wizards.com/global/images/magic/general/chaos_wand.jpg

View File

@@ -4,4 +4,4 @@ Types:Sorcery
K:Storm
A:SP$ Token | Cost$ 1 G | TokenAmount$ 1 | TokenScript$ g_1_1_squirrel | TokenOwner$ You | SpellDescription$ Create a 1/1 green Squirrel creature token.
DeckHas:Ability$Token
Oracle:Create a 1/1 green Squirrel creature token.\nStorm (When you cast this spell, copy it for each spell cast before it this turn. You may choose new targets for the copies.)
Oracle:Create a 1/1 green Squirrel creature token.\nStorm (When you cast this spell, copy it for each spell cast before it this turn.)

View File

@@ -4,7 +4,7 @@ Types:Creature Dinosaur
PT:2/1
T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Battlefield | Destination$ Graveyard | Execute$ TrigEffect | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, you may cast Dinosaur spells this turn as though they had flash, and whenever you cast a Dinosaur spell this turn, it gains "When this creature enters the battlefield, you may have it fight another target creature."
SVar:TrigEffect:DB$ Effect | Name$ Cherished Hatchling Effect | StaticAbilities$ STFlash | Triggers$ HatchlingCast
SVar:STFlash:Mode$ Continuous | EffectZone$ Command | Affected$ Dinosaur.nonToken+YouCtrl | MayPlay$ True | MayPlayCardOwner$ True | MayPlayWithFlash$ True | MayPlayDontGrantZonePermissions$ True | AffectedZone$ Hand,Graveyard,Library,Exile | Description$ You may cast Dinosaur spells this turn as though they had flash.
SVar:STFlash:Mode$ Continuous | EffectZone$ Command | Affected$ Dinosaur.nonToken+YouCtrl | MayPlay$ True | MayPlayPlayer$ CardOwner | MayPlayWithFlash$ True | MayPlayDontGrantZonePermissions$ True | AffectedZone$ Hand,Graveyard,Library,Exile | Description$ You may cast Dinosaur spells this turn as though they had flash.
SVar:HatchlingCast:Mode$ SpellCast | ValidCard$ Dinosaur | ValidActivatingPlayer$ You | Execute$ TrigHatchlingAnimate | TriggerZones$ Command | TriggerDescription$ Whenever you cast a Dinosaur spell this turn, it gains "When this creature enters the battlefield, you may have it fight another target creature."
SVar:TrigHatchlingAnimate:DB$ Animate | Defined$ TriggeredCard | Duration$ Permanent | Triggers$ TrigETBHatchling | sVars$ HatchlingFight
SVar:TrigETBHatchling:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ HatchlingFight | OptionalDecider$ You | TriggerDescription$ When this creature enters the battlefield, you may have it fight another target creature.

View File

@@ -6,4 +6,4 @@ SVar:DBPump:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature |
SVar:X:Targeted$CardPower
SVar:Y:Targeted$CardToughness
SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature.withFlying | TgtPrompt$ Select target creature with flying | NumDmg$ 5 | SpellDescription$ Archery — This spell deals 5 damage to target creature with flying.
Oracle:Choose one —\n• Two-Weapon Fighting — Double target creatures power and toughness until end of turn.\n• Archery — This spell deals 5 damage to target creature with flying.
Oracle:Choose one —\n• Two-Weapon Fighting — Double target creature's power and toughness until end of turn.\n• Archery — This spell deals 5 damage to target creature with flying.

View File

@@ -1,6 +1,6 @@
Name:Circle of the Moon Druid
Name:Circle of the Moon Druid
ManaCost:2 G
Types:Creature Human Elf Druid
PT:2/4
S:Mode$ Continuous | Affected$ Card.Self | Condition$ PlayerTurn | EffectZone$ Battlefield | SetPower$ 4 | SetToughness$ 2 | AddType$ Creature & Bear | RemoveCreatureTypes$ True | Description$ Bear Form — As long as its your turn, CARDNAME is a Bear with base power and toughness 4/2. (It loses all other creature types.)
Oracle:Bear Form — As long as its your turn, Circle of the Moon Druid is a Bear with base power and toughness 4/2. (It loses all other creature types.)
S:Mode$ Continuous | Affected$ Card.Self | Condition$ PlayerTurn | EffectZone$ Battlefield | SetPower$ 4 | SetToughness$ 2 | AddType$ Creature & Bear | RemoveCreatureTypes$ True | Description$ Bear Form — As long as it's your turn, CARDNAME is a Bear with base power and toughness 4/2. (It loses all other creature types.)
Oracle:Bear Form — As long as it's your turn, Circle of the Moon Druid is a Bear with base power and toughness 4/2. (It loses all other creature types.)

View File

@@ -1,6 +1,6 @@
Name:Cloudgoat Ranger
ManaCost:3 W W
Types:Creature Giant Warrior
Types:Creature Giant Warrior Ranger
PT:3/3
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create three 1/1 white Kithkin Soldier creature tokens.
SVar:TrigToken:DB$ Token | TokenAmount$ 3 | TokenScript$ w_1_1_kithkin_soldier | TokenOwner$ You | LegacyImage$ w 1 1 kithkin soldier lrw

View File

@@ -3,7 +3,7 @@ ManaCost:3
Types:Artifact
A:AB$ Mana | Cost$ T SubCounter<1/COMPONENT> | Amount$ 2 | Produced$ Combo AnyDifferent | SpellDescription$ Add two mana of different colors.
A:AB$ RollDice | Cost$ T | Sides$ 20 | ResultSubAbilities$ 1-9:PutOne,10-20:PutTwo | SpellDescription$ Roll a d20.
SVar:PutOne:DB$ PutCounter | Defined$ Self | CounterType$ COMPONENT | CounterNum$ 1 | SpellDescription$ 1-9 VERT Put a component counter on CARDNAME.
SVar:PutTwo:DB$ PutCounter | Defined$ Self | CounterType$ COMPONENT | CounterNum$ 2 | SpellDescription$ 10-20 VERT Put two component counters on CARDNAME.
SVar:PutOne:DB$ PutCounter | Defined$ Self | CounterType$ COMPONENT | CounterNum$ 1 | SpellDescription$ 19 VERT Put a component counter on CARDNAME.
SVar:PutTwo:DB$ PutCounter | Defined$ Self | CounterType$ COMPONENT | CounterNum$ 2 | SpellDescription$ 1020 VERT Put two component counters on CARDNAME.
DeckHas:Ability$Counters
Oracle:{T}, Remove a component counter from Component Pouch: Add two mana of different colors.\n{T}: Roll a d20.\n1-9 | Put a component counter on Component Pouch.\n10-20 | Put two component counters on Component Pouch.
Oracle:{T}, Remove a component counter from Component Pouch: Add two mana of different colors.\n{T}: Roll a d20.\n19 | Put a component counter on Component Pouch.\n1020 | Put two component counters on Component Pouch.

View File

@@ -2,8 +2,8 @@ Name:Contact Other Plane
ManaCost:3 U
Types:Instant
A:SP$ RollDice | Cost$ 3 U | Sides$ 20 | ResultSubAbilities$ 1-9:DBDraw2,10-19:DBScry2,20:DBScry3 | SpellDescription$ Roll a d20.
SVar:DBDraw2:DB$ Draw | NumCards$ 2 | SpellDescription$ 1-9 VERT Draw two cards.
SVar:DBScry2:DB$ Scry | ScryNum$ 2 | SubAbility$ DBDraw2 | SpellDescription$ 10-19 VERT Scry 2, then draw two cards.
SVar:DBDraw2:DB$ Draw | NumCards$ 2 | SpellDescription$ 19 VERT Draw two cards.
SVar:DBScry2:DB$ Scry | ScryNum$ 2 | SubAbility$ DBDraw2 | SpellDescription$ 1019 VERT Scry 2, then draw two cards.
SVar:DBScry3:DB$ Scry | ScryNum$ 3 | SubAbility$ DBDraw3 | SpellDescription$ 20 VERT Scry 3, then draw three cards.
SVar:DBDraw3:DB$ Draw | NumCards$ 3
Oracle:Roll a d20.\n1-9 | Draw two cards.\n10-19 | Scry 2, then draw two cards.\n20 | Scry 3, then draw three cards.
Oracle:Roll a d20.\n19 | Draw two cards.\n1019 | Scry 2, then draw two cards.\n20 | Scry 3, then draw three cards.

View File

@@ -2,6 +2,6 @@ Name:Counterlash
ManaCost:4 U U
Types:Instant
A:SP$ Counter | Cost$ 4 U U | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | SubAbility$ DBPlay | SpellDescription$ Counter target spell. You may cast a spell that shares a card type with it from your hand without paying its mana cost.
SVar:DBPlay:DB$ Play | Valid$ Targeted.sharesCardTypeWith+nonLand+YouCtrl | ValidZone$ Hand | WithoutManaCost$ True | Optional$ True
SVar:DBPlay:DB$ Play | Valid$ Targeted.sharesCardTypeWith+YouCtrl | ValidSA$ Spell | ValidZone$ Hand | WithoutManaCost$ True | Optional$ True
SVar:Picture:http://www.wizards.com/global/images/magic/general/counterlash.jpg
Oracle:Counter target spell. You may cast a spell that shares a card type with it from your hand without paying its mana cost.

View File

@@ -4,5 +4,5 @@ Types:Sorcery
K:Demonstrate
A:SP$ Shuffle | SubAbility$ DBDigUntil | StackDescription$ {p:You} shuffles their library, | SpellDescription$ Shuffle your library,
SVar:DBDigUntil:DB$ DigUntil | Defined$ You | Valid$ Card.nonLand | FoundDestination$ Exile | RevealedDestination$ Library | RevealedLibraryPosition$ -1 | RevealRandomOrder$ True | RememberFound$ True | SubAbility$ DBPlay | StackDescription$ then reveals cards from the top of it until they reveal a nonland card. {p:You} exiles that card and puts the rest on the bottom of their library in a random order. | SpellDescription$ then reveal cards from the top of it until you reveal a nonland card. Exile that card and put the rest on the bottom of your library in a random order.
SVar:DBPlay:DB$ Play | Defined$ Remembered | WithoutManaCost$ True | Optional$ True | StackDescription$ {p:You} may cast the exiled card without paying its mana cost. | SpellDescription$ You may cast the exiled card without paying its mana cost.
SVar:DBPlay:DB$ Play | Defined$ Remembered | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True | StackDescription$ {p:You} may cast the exiled card without paying its mana cost. | SpellDescription$ You may cast the exiled card without paying its mana cost.
Oracle:Demonstrate (When you cast this spell, you may copy it. If you do, choose an opponent to also copy it.)\nShuffle your library, then reveal cards from the top of it until you reveal a nonland card. Exile that card and put the rest on the bottom of your library in a random order. You may cast the exiled card without paying its mana cost.

View File

@@ -2,7 +2,7 @@ Name:Dancing Sword
ManaCost:1 W
Types:Artifact Equipment
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 2 | AddToughness$ 1 | Description$ Equipped creature gets +2/+1.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.AttachedBy | Execute$ TrigAnimate | OptionalDecider$ You | TriggerDescription$ When equipped creature dies, you may have CARDNAME become a 2/1 Construct artifact creature with flying and ward {1}. If you do, it isnt an Equipment.
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.AttachedBy | Execute$ TrigAnimate | OptionalDecider$ You | TriggerDescription$ When equipped creature dies, you may have CARDNAME become a 2/1 Construct artifact creature with flying and ward {1}. If you do, it isn't an Equipment.
SVar:TrigAnimate:DB$ Animate | Defined$ Self | Types$ Artifact,Creature,Construct | Power$ 2 | Toughness$ 1 | Keywords$ Flying & Ward:1 | RemoveCardTypes$ True | RemoveSubTypes$ True | Duration$ Permanent
K:Equip:1
Oracle:Equipped creature gets +2/+1.\nWhen equipped creature dies, you may have Dancing Sword become a 2/1 Construct artifact creature with flying and ward {1}. If you do, it isnt an Equipment.\nEquip {1}
Oracle:Equipped creature gets +2/+1.\nWhen equipped creature dies, you may have Dancing Sword become a 2/1 Construct artifact creature with flying and ward {1}. If you do, it isn't an Equipment.\nEquip {1}

View File

@@ -8,4 +8,4 @@ SVar:DBGainLife:DB$ GainLife | LifeAmount$ 2 | SpellDescription$ Cure Wounds —
SVar:DBDestroy:DB$ Destroy | ValidTgts$ Enchantment | TgtPrompt$ Select target enchantment | SpellDescription$ Dispel Magic — Destroy target enchantment.
SVar:DBExileCard:DB$ ChangeZone | Origin$ Graveyard | Destination$ Exile | TgtPrompt$ Choose target card in a graveyard | ValidTgts$ Card | SpellDescription$ Gentle Repose — Exile target card from a graveyard.
DeckHas:Ability$LifeGain
Oracle:When Dawnbringer Cleric enters the battlefield, choose one — \n• Cure Wounds — You gain 2 life.\n• Dispel Magic — Destroy target enchantment.\n• Gentle Repose — Exile target card from a graveyard.
Oracle:When Dawnbringer Cleric enters the battlefield, choose one —\n• Cure Wounds — You gain 2 life.\n• Dispel Magic — Destroy target enchantment.\n• Gentle Repose — Exile target card from a graveyard.

View File

@@ -1,6 +1,6 @@
Name:Daybreak Ranger
ManaCost:2 G
Types:Creature Human Archer Werewolf
Types:Creature Human Archer Ranger Werewolf
PT:2/2
A:AB$DealDamage | Cost$ T | ValidTgts$ Creature.withFlying | TgtPrompt$ Select target creature with flying. | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature with flying.
T:Mode$Phase | Phase$ Upkeep | WerewolfTransformCondition$ True | TriggerZones$ Battlefield | Execute$ TrigTransform | TriggerDescription$ At the beginning of each upkeep, if no spells were cast last turn, transform CARDNAME.

View File

@@ -5,7 +5,7 @@ PT:4/5
K:Flying
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigDigUntil | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, that player exiles cards from the top of their library until they exile an instant or sorcery card. You may cast that card without paying its mana cost. Then that player puts the exiled cards that weren't cast this way on the bottom of their library in a random order.
SVar:TrigDigUntil:DB$ DigUntil | Defined$ TriggeredTarget | Valid$ Instant,Sorcery | ValidDescription$ instant or sorcery | FoundDestination$ Exile | RevealedDestination$ Exile | RememberFound$ True | RememberRevealed$ True | IsCurse$ True | SubAbility$ DBPlay | SpellDescription$ Whenever CARDNAME deals combat damage to a player, that player exiles cards from the top of their library until they exile an instant or sorcery card. You may cast that card without paying its mana cost. Then that player puts the exiled cards that weren't cast this way on the bottom of their library in a random order.
SVar:DBPlay:DB$ Play | Defined$ Remembered | ValidZone$ Exile | Valid$ Instant.IsRemembered,Sorcery.IsRemembered | WithoutManaCost$ True | RememberObjects$ Remembered | Optional$ True | ForgetTargetRemembered$ True | SubAbility$ DBRestRandomOrder
SVar:DBPlay:DB$ Play | Defined$ Remembered | ValidZone$ Exile | Valid$ Instant.IsRemembered,Sorcery.IsRemembered | ValidSA$ Spell | WithoutManaCost$ True | RememberObjects$ Remembered | Optional$ True | ForgetTargetRemembered$ True | SubAbility$ DBRestRandomOrder
SVar:DBRestRandomOrder:DB$ ChangeZone | Defined$ Remembered | AtRandom$ True | Origin$ Library | Destination$ Library | LibraryPosition$ -1 | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
Oracle:Flying\nWhenever Dazzling Sphinx deals combat damage to a player, that player exiles cards from the top of their library until they exile an instant or sorcery card. You may cast that card without paying its mana cost. Then that player puts the exiled cards that weren't cast this way on the bottom of their library in a random order.

View File

@@ -1,7 +1,7 @@
Name:Deadly Dispute
ManaCost:1 B
Types:Instant
A:SP$ Draw | Cost$ 1 B Sac<1/Artifact;Creature/artifact or creature> | NumCards$ 2 | SubAbility$ DBToken | StackDescription$ SpellDescription | SpellDescription$ Draw two cards and create a Treasure token.
A:SP$ Draw | Cost$ 1 B Sac<1/Artifact;Creature/artifact or creature> | NumCards$ 2 | SubAbility$ DBToken | StackDescription$ SpellDescription | SpellDescription$ Draw two cards and create a Treasure token.
SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ c_a_treasure_sac | TokenOwner$ You
DeckHas:Ability$Token
Oracle:Draw two cards and create a Treasure token. (It's an artifact with "{T}, Sacrifice this artifact: Add one mana of any color.")
Oracle:As an additional cost to cast this spell, sacrifice an artifact or creature.\nDraw two cards and create a Treasure token. (It's an artifact with "{T}, Sacrifice this artifact: Add one mana of any color.")

View File

@@ -4,6 +4,6 @@ Types:Creature Spirit Avatar
PT:7/7
K:Trample
K:etbCounter:M1M1:2
A:AB$ Regenerate | Cost$ BG SubCounter<1/M1M1> | SpellDescription$ Regenerate Deity of Scars.
A:AB$ Regenerate | Cost$ BG SubCounter<1/M1M1> | SpellDescription$ Regenerate CARDNAME.
SVar:Picture:http://wizards.com/global/images/magic/general/deity_of_scars.jpg
Oracle:Trample\nDeity of Scars enters the battlefield with two -1/-1 counters on it.\n{B/G}, Remove a -1/-1 counter from Deity of Scars: Regenerate Deity of Scars.

View File

@@ -5,13 +5,13 @@ PT:3/2
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ DBLoop | TriggerDescription$ Whenever CARDNAME attacks, choose target creature you control, then ABILITY
SVar:DBLoop:DB$ Repeat | ValidTgts$ Creature.YouCtrl | RepeatCheckSVar$ RepeatCheck | RepeatSVarCompare$ GT0 | RepeatSubAbility$ DBRollDice | RepeatOptional$ True
SVar:DBRollDice:DB$ RollDice | Sides$ 20 | ResultSubAbilities$ 1-14:DBCopy,15-20:DBCopyRepeat | SpellDescription$ roll a d20.
SVar:DBCopy:DB$ CopyPermanent | Defined$ Targeted | TokenTapped$ True | TokenAttacking$ True | NonLegendary$ True | AddSVars$ DelinaTrigExile | AddTriggers$ TrigPhase | SubAbility$ DBNotRepeat | SpellDescription$ 1-14 VERT Create a tapped and attacking token that's a copy of that creature, except it's not legendary and it has "Exile this creature at end of combat.
SVar:DBCopy:DB$ CopyPermanent | Defined$ Targeted | TokenTapped$ True | TokenAttacking$ True | NonLegendary$ True | AddSVars$ DelinaTrigExile | AddTriggers$ TrigPhase | SubAbility$ DBNotRepeat | SpellDescription$ 114 VERT Create a tapped and attacking token that's a copy of that creature, except it's not legendary and it has "Exile this creature at end of combat."
SVar:DBNotRepeat:DB$ StoreSVar | SVar$ RepeatCheck | Type$ Number | Expression$ 0
SVar:DBCopyRepeat:DB$ CopyPermanent | Defined$ Targeted | TokenTapped$ True | TokenAttacking$ True | NonLegendary$ True | AddSVars$ DelinaTrigExile | AddTriggers$ TrigPhase | SubAbility$ DBRepeat | SpellDescription$ 15-20 VERT Create one of those tokens. You may roll again.
SVar:DBCopyRepeat:DB$ CopyPermanent | Defined$ Targeted | TokenTapped$ True | TokenAttacking$ True | NonLegendary$ True | AddSVars$ DelinaTrigExile | AddTriggers$ TrigPhase | SubAbility$ DBRepeat | SpellDescription$ 1520 VERT Create one of those tokens. You may roll again.
SVar:TrigPhase:Mode$ Phase | Phase$ EndCombat | TriggerZones$ Battlefield | Execute$ DelinaTrigExile | TriggerDescription$ Exile this creature at end of combat.
SVar:DelinaTrigExile:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile
SVar:DBRepeat:DB$ StoreSVar | SVar$ RepeatCheck | Type$ Number | Expression$ 1
SVar:RepeatCheck:Number$1
SVar:HasAttackEffect:TRUE
DeckHas:Ability$Token
Oracle:Whenever Delina, Wild Mage attacks, choose target creature you control, then roll a d20.\n1-14 | Create a tapped and attacking token that's a copy of that creature, except it's not legendary and it has "Exile this creature at end of combat."\n15-20 | Create one of those tokens. You may roll again.
Oracle:Whenever Delina, Wild Mage attacks, choose target creature you control, then roll a d20.\n114 | Create a tapped and attacking token that's a copy of that creature, except it's not legendary and it has "Exile this creature at end of combat."\n1520 | Create one of those tokens. You may roll again.

View File

@@ -4,10 +4,10 @@ Types:Creature Skeleton Wizard
PT:4/3
S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Color$ U | Amount$ X | EffectZone$ All | Description$ This spell costs {U} less to cast for each instant and sorcery spell you've cast this turn.
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigExile | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME attacks, exile up to one target instant or sorcery card from your graveyard. Copy it. You may cast the copy.
SVar:TrigExile:DB$ChangeZone | TargetMin$ 0 | TargetMax$ 1 | Origin$ Graveyard | Destination$ Exile | TgtPrompt$ Choose up to one target instant or sorcery card in your graveyard | ValidTgts$ Instant.YouCtrl,Sorcery.YouCtrl | RememberChanged$ True | SubAbility$ DBPlay
SVar:DBPlay:DB$ Play | Defined$ Remembered | CopyOnce$ True | Optional$ True | CopyCard$ True | SubAbility$ DBCleanup
SVar:TrigExile:DB$ ChangeZone | TargetMin$ 0 | TargetMax$ 1 | Origin$ Graveyard | Destination$ Exile | TgtPrompt$ Choose up to one target instant or sorcery card in your graveyard | ValidTgts$ Instant.YouCtrl,Sorcery.YouCtrl | RememberChanged$ True | SubAbility$ DBPlay
SVar:DBPlay:DB$ Play | Defined$ Remembered | ValidSA$ Spell | Optional$ True | CopyCard$ True | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:AltCost:Cost$ U U U U ExileFromGrave<4/Instant;Sorcery/instant or sorcery cards> | ActivationZone$ Graveyard | Description$ You may cast CARDNAME from your graveyard by exiling four instant and/or sorcery cards from your graveyard in addition to paying its other costs.
SVar:X:Count$ThisTurnCast_Instant.YouCtrl,Sorcery.YouCtrl
DeckNeeds:Type$Instant|Sorcery
Oracle:This spell costs {U} less to cast for each instant and sorcery spell you've cast this turn.\nWhenever Demilich attacks, exile up to one target instant or sorcery card from your graveyard. Copy it. You may cast the copy.\nYou may cast Demilich from your graveyard by exiling four instants and/or sorcery cards from your graveyard in addition to paying its other costs.
Oracle:This spell costs {U} less to cast for each instant and sorcery spell you've cast this turn.\nWhenever Demilich attacks, exile up to one target instant or sorcery card from your graveyard. Copy it. You may cast the copy.\nYou may cast Demilich from your graveyard by exiling four instant and/or sorcery cards from your graveyard in addition to paying its other costs.

View File

@@ -4,6 +4,6 @@ Types:Artifact Vehicle
PT:0/0
K:ETBReplacement:Other:Imprint
SVar:Imprint:DB$ ChangeZone | Imprint$ True | ChangeType$ Creature | ChangeNum$ 1 | Origin$ Graveyard | Destination$ Exile | Mandatory$ True | Hidden$ True | Chooser$ You | SpellDescription$ Imprint - As CARDNAME enters the battlefield, exile a creature card from a graveyard.
A:AB$ Clone | Cost$ tapXType<2/Creature> | Defined$ Imprinted | Duration$ UntilEndOfTurn | ImprintRememberedNoCleanup$ True | AddTypes$ Vehicle & Artifact | StackDescription$ Until end of turn, CARDNAME becomes a copy of {c:Imprinted}, except its a Vehicle artifact in addition to its other types. | SpellDescription$ Until end of turn, CARDNAME becomes a copy of the imprinted card, except it's a Vehicle artifact in addition to its other types.
A:AB$ Clone | Cost$ tapXType<2/Creature> | Defined$ Imprinted | Duration$ UntilEndOfTurn | ImprintRememberedNoCleanup$ True | AddTypes$ Vehicle & Artifact | StackDescription$ Until end of turn, CARDNAME becomes a copy of {c:Imprinted}, except its a Vehicle artifact in addition to its other types. | SpellDescription$ Until end of turn, CARDNAME becomes a copy of the exiled card, except it's a Vehicle artifact in addition to its other types.
SVar:NeedsToPlay:Creature.inZoneGraveyard
Oracle:Imprint — As Dermotaxi enters the battlefield, exile a creature card from a graveyard.\nTap two untapped creatures you control: Until end of turn, Dermotaxi becomes a copy of the imprinted card, except it's a Vehicle artifact in addition to its other types.
Oracle:Imprint — As Dermotaxi enters the battlefield, exile a creature card from a graveyard.\nTap two untapped creatures you control: Until end of turn, Dermotaxi becomes a copy of the exiled card, except it's a Vehicle artifact in addition to its other types.

View File

@@ -3,7 +3,7 @@ ManaCost:2 G
Types:Enchantment
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ DBReveal | TriggerDescription$ At the beginning of your upkeep, reveal the top card of your library. If it's a creature card that shares a creature type with a creature you control, you may cast it without paying its mana cost. If you don't cast it, put it on the bottom of your library.
SVar:DBReveal:DB$ PeekAndReveal | PeekAmount$ 1 | RevealValid$ Card | RememberRevealed$ True | SubAbility$ DBMayCast
SVar:DBMayCast:DB$ Play | Defined$ Remembered | ForgetRemembered$ True | WithoutManaCost$ True | Optional$ True | ConditionDefined$ Remembered | ConditionPresent$ Creature.sharesCreatureTypeWith Valid Creature.YouCtrl | SubAbility$ DBChangeZone
SVar:DBMayCast:DB$ Play | Defined$ Remembered | ValidSA$ Spell | ForgetRemembered$ True | WithoutManaCost$ True | Optional$ True | ConditionDefined$ Remembered | ConditionPresent$ Creature.sharesCreatureTypeWith Valid Creature.YouCtrl | SubAbility$ DBChangeZone
SVar:DBChangeZone:DB$ ChangeZone | Defined$ Remembered | Origin$ Library | Destination$ Library | LibraryPosition$ -1 | Shuffle$ False | ForgetChanged$ True
AI:RemoveDeck:Random
Oracle:At the beginning of your upkeep, reveal the top card of your library. If it's a creature card that shares a creature type with a creature you control, you may cast it without paying its mana cost. If you don't cast it, put it on the bottom of your library.

View File

@@ -4,7 +4,7 @@ Types:Creature Avatar
PT:5/5
K:Flying
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ CastEach | TriggerDescription$ When CARDNAME enters the battlefield, for each opponent, you may cast up to one target instant or sorcery card from that player's graveyard without paying its mana cost. If a spell cast this way would be put into a graveyard this turn, exile it instead.
SVar:CastEach:DB$ Play | ValidTgts$ Instant.OppCtrl,Sorcery.OppCtrl | TgtZone$ Graveyard | TgtPrompt$ Select target instant or sorcery card in each opponent's graveyard | TargetMin$ 0 | TargetMax$ OneEach | TargetsWithDifferentControllers$ True | Amount$ All | WithoutManaCost$ True | Optional$ True | ReplaceGraveyard$ Exile | AILogic$ ReplaySpell
SVar:CastEach:DB$ Play | ValidTgts$ Instant.OppCtrl,Sorcery.OppCtrl | TgtZone$ Graveyard | TgtPrompt$ Select target instant or sorcery card in each opponent's graveyard | TargetMin$ 0 | TargetMax$ OneEach | TargetsWithDifferentControllers$ True | Amount$ All | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True | ReplaceGraveyard$ Exile | AILogic$ ReplaySpell
SVar:OneEach:PlayerCountOpponents$Amount
SVar:Picture:http://www.wizards.com/global/images/magic/general/diluvian_primordial.jpg
Oracle:Flying\nWhen Diluvian Primordial enters the battlefield, for each opponent, you may cast up to one target instant or sorcery card from that player's graveyard without paying its mana cost. If a spell cast this way would be put into a graveyard this turn, exile it instead.

View File

@@ -2,9 +2,9 @@ Name:Diviner's Portent
ManaCost:X U U U
Types:Instant
A:SP$ RollDice | Sides$ 20 | Modifier$ Y | ResultSubAbilities$ 1-14:DBDraw,Else:DBScry | SpellDescription$ Roll a d20 and add the number of cards in your hand.
SVar:DBDraw:DB$ Draw | NumCards$ X | SpellDescription$ 1-14 VERT Draw X cards.
SVar:DBDraw:DB$ Draw | NumCards$ X | SpellDescription$ 114 VERT Draw X cards.
SVar:DBScry:DB$ Scry | ScryNum$ X | SubAbility$ DBDraw2 | SpellDescription$ 15+ VERT Scry X, then draw X cards.
SVar:DBDraw2:DB$ Draw | NumCards$ X
SVar:X:Count$xPaid
SVar:Y:Count$InYourHand
Oracle:Roll a d20 and add the number of cards in your hand.\n1-14 | Draw X cards.\n15+ | Scry X, then draw X cards.
Oracle:Roll a d20 and add the number of cards in your hand.\n114 | Draw X cards.\n15+ | Scry X, then draw X cards.

View File

@@ -5,7 +5,7 @@ PT:3/3
K:Flying
T:Mode$ ChangesZone | ValidCard$ Card.Self | Destination$ Battlefield | Execute$ TrigRollDice | TriggerDescription$ When CARDNAME enters the battlefield, ABILITY
SVar:TrigRollDice:DB$ RollDice | Sides$ 20 | ResultSubAbilities$ 1-9:Scry1,10-19:Scry2,20:Scry3 | SpellDescription$ roll a d20.
SVar:Scry1:DB$ Scry | ScryNum$ 1 | SpellDescription$ 1-9 VERT Scry 1.
SVar:Scry2:DB$ Scry | ScryNum$ 2 | SpellDescription$ 10-19 VERT Scry 2.
SVar:Scry1:DB$ Scry | ScryNum$ 1 | SpellDescription$ 19 VERT Scry 1.
SVar:Scry2:DB$ Scry | ScryNum$ 2 | SpellDescription$ 1019 VERT Scry 2.
SVar:Scry3:DB$ Scry | ScryNum$ 3 | SpellDescription$ 20 VERT Scry 3.
Oracle:Flying\nWhen Djinni Windseer enters the battlefield, roll a d20.\n1-9 | Scry 1.\n10-19 | Scry 2.\n20 | Scry 3.
Oracle:Flying\nWhen Djinni Windseer enters the battlefield, roll a d20.\n19 | Scry 1.\n1019 | Scry 2.\n20 | Scry 3.

View File

@@ -3,9 +3,9 @@ ManaCost:1 U U
Types:Creature Dragon Turtle
PT:3/5
K:Flash
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigTap | TriggerDescription$ Drag Below When CARDNAME enters the battlefield, tap it and up to one target creature an opponent controls. They dont untap during their controllers' next untap steps.
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigTap | TriggerDescription$ Drag Below When CARDNAME enters the battlefield, tap it and up to one target creature an opponent controls. They don't untap during their controllers' next untap steps.
SVar:TrigTap:DB$ Tap | Defined$ Self | RememberTapped$ True | SubAbility$ DBTap
SVar:DBTap:DB$ Tap | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select up to one target creature an opponent controls | TargetMin$ 0 | TargetMax$ 1 | AlwaysRemember$ True | SubAbility$ DBPump
SVar:DBPump:DB$ Pump | Defined$ Remembered | KW$ HIDDEN This card doesn't untap during your next untap step. | Duration$ Permanent | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
Oracle:Flash\nDrag Below — When Dragon Turtle enters the battlefield, tap it and up to one target creature an opponent controls. They dont untap during their controllers' next untap steps.
Oracle:Flash\nDrag Below — When Dragon Turtle enters the battlefield, tap it and up to one target creature an opponent controls. They don't untap during their controllers' next untap steps.

View File

@@ -11,4 +11,4 @@ SVar:DragonControlled:Count$Valid Dragon.inZoneBattlefield+YouCtrl
S:Mode$ Continuous | Affected$ Dragon.YouCtrl | AddKeyword$ Ward:1 | Description$ Dragons you control have ward {1}. (Whenever a Dragon you control becomes the target of a spell or ability an opponent controls, counter it unless that player pays {1}.)
DeckHas:Ability$Counters
DeckNeeds:Type$Dragon
Oracle:As Dragon's Disciple enters the battlefield, you may reveal a Dragon card from your hand. If you do, or if you control a Dragon, Dragon's Disciple enters the battlefield with a +1/+1 counter on it.\nDragons you control have ward {1}. (Whenever a Dragon you control becomes the target of a spell or ability an opponent controls, counter it unless that player pays {1}.)
Oracle:As Dragon's Disciple enters the battlefield, you may reveal a Dragon card from your hand. If you do or if you control a Dragon, Dragon's Disciple enters the battlefield with a +1/+1 counter on it.\nDragons you control have ward {1}. (Whenever a Dragon you control becomes the target of a spell or ability an opponent controls, counter it unless that player pays {1}.)

View File

@@ -4,6 +4,6 @@ Types:Creature Zombie Wizard
PT:1/3
K:Trample
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPlay | TriggerDescription$ Whenever CARDNAME attacks, you may cast target instant or sorcery card with mana value less than or equal to CARDNAME's power from your graveyard without paying its mana cost. If that spell would be put into your graveyard this turn, exile it instead.
SVar:TrigPlay:DB$ Play | TgtZone$ Graveyard | ValidTgts$ Instant.YouCtrl+cmcLEX,Sorcery.YouCtrl+cmcLEX | TgtPrompt$ Choose target instant or sorcery card with mana value X or less from your graveyard | WithoutManaCost$ True | Optional$ True | ReplaceGraveyard$ Exile | AILogic$ ReplaySpell
SVar:TrigPlay:DB$ Play | TgtZone$ Graveyard | ValidTgts$ Instant.YouCtrl+cmcLEX,Sorcery.YouCtrl+cmcLEX | TgtPrompt$ Choose target instant or sorcery card with mana value X or less from your graveyard | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True | ReplaceGraveyard$ Exile | AILogic$ ReplaySpell
SVar:X:Count$CardPower
Oracle:Trample\nWhenever Dreadhorde Arcanist attacks, you may cast target instant or sorcery card with mana value less than or equal to Dreadhorde Arcanist's power from your graveyard without paying its mana cost. If that spell would be put into your graveyard this turn, exile it instead.

View File

@@ -5,5 +5,5 @@ K:Flash
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigAttach | TriggerDescription$ When CARDNAME enters the battlefield, attach it to target creature you control.
SVar:TrigAttach:DB$ Attach | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 2 | Description$ Equipped creature gets +2/+0.
K:Equip:3
Oracle:Flash\nWhen Dueling Rapier enters the battlefield, attach it to target creature you control.\nEquipped creature gets +2/+0.\nEquip {3} ({3}: Attach to target creature you control. Equip only as a sorcery.)
K:Equip:4
Oracle:Flash\nWhen Dueling Rapier enters the battlefield, attach it to target creature you control.\nEquipped creature gets +2/+0.\nEquip {4} ({4}: Attach to target creature you control. Equip only as a sorcery.)

View File

@@ -4,5 +4,6 @@ Types:Creature Zombie
PT:2/1
K:CARDNAME enters the battlefield tapped.
T:Mode$ DungeonCompleted | ValidPlayer$ You | TriggerZones$ Graveyard | OptionalDecider$ You | Execute$ DBReturn | TriggerDescription$ Whenever you complete a dungeon, you may return CARDNAME from your graveyard to your hand.
SVar:DBReturn:DB$ChangeZone | Origin$ Graveyard | Destination$ Hand | Defined$ Self
SVar:DBReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | Defined$ Self
DeckHas:Ability$Graveyard
Oracle:Dungeon Crawler enters the battlefield tapped.\nWhenever you complete a dungeon, you may return Dungeon Crawler from your graveyard to your hand.

View File

@@ -14,5 +14,5 @@ SVar:DBGraveyard:DB$ Token | TokenScript$ b_1_1_skeleton | TokenOwner$ You | Tok
SVar:DBMines:DB$ Scry | ScryNum$ 3 | RoomName$ Deep Mines | SpellDescription$ Scry 3. | NextRoom$ DBLair
SVar:DBLair:DB$ Draw | Defined$ You | NumCards$ 3 | RememberDrawn$ True | SubAbility$ DBReveal | RoomName$ Mad Wizard's Lair | SpellDescription$ Draw three cards and reveal them. You may cast one of them without paying its mana cost.
SVar:DBReveal:DB$ Reveal | Defined$ You | RevealDefined$ Remembered | SubAbility$ DBPlay
SVar:DBPlay:DB$ Play | Defined$ Remembered.nonLand | WithoutManaCost$ True | Optional$ True | SubAbility$ DBCleanup
Oracle:Yawning Portal — You gain 1 life. ( Dungeon Level)\nDungeon Level — Scry 1. ( Goblin Bazaar or Twisted Caverns)\nGoblin Bazaar — Create a Treasure token. ( Lost Level)\nTwisted Caverns — Target creature can't attack until your next turn. ( Lost Level)\nLost Level — Scry 2. ( Runestone Caverns or Muiral's Graveyard)\nRunestone Caverns — Exile the top two cards of your library. You may play them. ( Deep Mines)\nMuiral's Graveyard — Create two 1/1 black Skeleton creature tokens. ( Deep Mines)\nDeep Mines — Scry 3. ( Mad Wizard's Lair)\nMad Wizard's Lair — Draw three cards and reveal them. You may cast one of them without paying its mana cost.
SVar:DBPlay:DB$ Play | Defined$ Remembered | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True | SubAbility$ DBCleanup
Oracle:Yawning Portal — You gain 1 life. (Leads to: Dungeon Level)\nDungeon Level — Scry 1. (Leads to: Goblin Bazaar, Twisted Caverns)\nGoblin Bazaar — Create a Treasure token. (Leads to: Lost Level)\nTwisted Caverns — Target creature can't attack until your next turn. (Leads to: Lost Level)\nLost Level — Scry 2. (Leads to: Runestone Caverns, Muiral's Graveyard)\nRunestone Caverns — Exile the top two cards of your library. You may play them. (Leads to: Deep Mines)\nMuiral's Graveyard — Create two 1/1 black Skeleton creature tokens. (Leads to: Deep Mines)\nDeep Mines — Scry 3. (Leads to: Mad Wizard's Lair)\nMad Wizard's Lair — Draw three cards and reveal them. You may cast one of them without paying its mana cost.

View File

@@ -4,8 +4,8 @@ Types:Creature Elemental
PT:6/6
T:Mode$ ChangesZone | ValidCard$ Card.Self | Destination$ Battlefield | Execute$ TrigRollDice | TriggerDescription$ Siege Monster — When CARDNAME enters the battlefield, ABILITY
SVar:TrigRollDice:DB$ RollDice | Sides$ 20 | ResultSubAbilities$ 1-9:Sac1,10-19:SacOpp,20:SacOpp2 | SpellDescription$ roll a d20.
SVar:Sac1:DB$ Sacrifice | SacValid$ Permanent | Defined$ Player | SpellDescription$ 1-9 VERT Each player sacrifices a permanent.
SVar:SacOpp:DB$ Sacrifice | SacValid$ Permanent | Defined$ Player.Opponent | SpellDescription$ 10-19 VERT Each opponent sacrifices a permanent.
SVar:Sac1:DB$ Sacrifice | SacValid$ Permanent | Defined$ Player | SpellDescription$ 19 VERT Each player sacrifices a permanent.
SVar:SacOpp:DB$ Sacrifice | SacValid$ Permanent | Defined$ Player.Opponent | SpellDescription$ 1019 VERT Each opponent sacrifices a permanent.
SVar:SacOpp2:DB$ Sacrifice | SacValid$ Permanent | Amount$ 2 | Defined$ Player.Opponent | SpellDescription$ 20 VERT Each opponent sacrifices two permanents.
DeckHas:Ability$Sacrifice
Oracle:Siege Monster — When Earth-Cult Elemental enters the battlefield, roll a d20.\n1-9 | Each player sacrifices a permanent.\n10-19 | Each opponent sacrifices a permanent.\n20 | Each opponent sacrifices two permanents.
Oracle:Siege Monster — When Earth-Cult Elemental enters the battlefield, roll a d20.\n19 | Each player sacrifices a permanent.\n1019 | Each opponent sacrifices a permanent.\n20 | Each opponent sacrifices two permanents.

View File

@@ -4,5 +4,5 @@ Types:Creature Efreet Shaman
PT:1/4
K:Double Strike
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigPlay | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may cast target instant or sorcery card from your graveyard without paying its mana cost. If that spell would be put into your graveyard, exile it instead.
SVar:TrigPlay:DB$ Play | TgtZone$ Graveyard | ValidTgts$ Instant.YouOwn,Sorcery.YouOwn | TgtPrompt$ Choose target instant or sorcery card from your graveyard | WithoutManaCost$ True | Optional$ True | ReplaceGraveyard$ Exile | AILogic$ ReplaySpell
SVar:TrigPlay:DB$ Play | TgtZone$ Graveyard | ValidTgts$ Instant.YouOwn,Sorcery.YouOwn | TgtPrompt$ Choose target instant or sorcery card from your graveyard | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True | ReplaceGraveyard$ Exile | AILogic$ ReplaySpell
Oracle:Double strike\nWhenever Efreet Flamepainter deals combat damage to a player, you may cast target instant or sorcery card from your graveyard without paying its mana cost. If that spell would be put into your graveyard, exile it instead.

View File

@@ -2,7 +2,7 @@ Name:Elephant Graveyard
ManaCost:no cost
Types:Land
A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}.
A:AB$ Regenerate | ValidTgts$ Creature.Elephant | TgtPrompt$ Select target Elephant | Cost$ T | SpellDescription$ Regenerate target Elephant.
A:AB$ Regenerate | ValidTgts$ Elephant | TgtPrompt$ Select target Elephant | Cost$ T | SpellDescription$ Regenerate target Elephant.
SVar:Picture:http://www.wizards.com/global/images/magic/general/elephant_graveyard.jpg
AI:RemoveDeck:Random
DeckNeeds:Type$Elephant

View File

@@ -4,7 +4,7 @@ Types:Creature Human Wizard
PT:1/1
T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | OptionalDecider$ You | Execute$ TrigExile | TriggerDescription$ When CARDNAME enters the battlefield, you may exile an instant card from your hand.
SVar:TrigExile:DB$ ChangeZone | RememberChanged$ True | Origin$ Hand | Destination$ Exile | ChangeType$ Instant | ChangeNum$ 1
A:AB$ Play | Cost$ X T | Valid$ Card.IsRemembered+ExiledWithSource | ValidZone$ Exile | Amount$ All | CopyOnce$ True | WithoutManaCost$ True | Optional$ True | CopyCard$ True | SpellDescription$ Copy the exiled card. You may cast the copy without paying its mana cost. X is the mana value of the exiled card.
A:AB$ Play | Cost$ X T | Valid$ Card.IsRemembered+ExiledWithSource | ValidSA$ Spell | ValidZone$ Exile | Amount$ All | WithoutManaCost$ True | Optional$ True | CopyCard$ True | SpellDescription$ Copy the exiled card. You may cast the copy without paying its mana cost. X is the mana value of the exiled card.
SVar:X:Remembered$CardManaCost
T:Mode$ ChangesZone | ValidCard$ Card.IsRemembered+ExiledWithSource | Origin$ Exile | Destination$ Any | Execute$ ForgetCard | Static$ True
SVar:ForgetCard:DB$ Cleanup | ForgetDefined$ TriggeredCard

View File

@@ -8,7 +8,7 @@ SVar:TrigLook:DB$ RevealHand | ValidTgts$ Opponent | TgtPrompt$ Select target op
SVar:DBChooseCard:DB$ ChooseCard | ChoiceZone$ Hand | Choices$ Card.nonLand+IsRemembered | ChoiceTitle$ You may exile a nonland card from it | MinAmount$ 0 | Amount$ 1 | SubAbility$ DBChangeZone
SVar:DBChangeZone:DB$ ChangeZone | Defined$ ChosenCard | Origin$ Hand | Destination$ Exile | Imprint$ True | SubAbility$ DBEffect
SVar:DBEffect:DB$ Effect | Duration$ Permanent | StaticAbilities$ MayPlay,CostsMore | RememberObjects$ Imprinted | ForgetOnMoved$ Exile | SubAbility$ DBCleanup
SVar:MayPlay:Mode$ Continuous | Affected$ Card.IsRemembered | AffectedZone$ Exile | MayPlay$ True | MayPlayCardOwner$ True
SVar:MayPlay:Mode$ Continuous | Affected$ Card.IsRemembered | AffectedZone$ Exile | MayPlay$ True | MayPlayPlayer$ CardOwner
SVar:CostsMore:Mode$ RaiseCost | ValidCard$ Card.IsRemembered | AffectedZone$ Exile | Type$ Spell | Amount$ 2
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True | ClearImprinted$ True
Oracle:Flying\nWhen Elite Spellbinder enters the battlefield, look at target opponent's hand. You may exile a nonland card from it. For as long as that card remains exiled, its owner may play it. A spell cast this way costs {2} more to cast.

View File

@@ -4,7 +4,7 @@ Types:World Enchantment
T:Mode$ Phase | Phase$ Upkeep | TriggerZones$ Battlefield | Execute$ TrigChangeZone | TriggerDescription$ At the beginning of each player's upkeep, that player exiles a card at random from their hand. The player may play that card this turn. At the beginning of the next end step, if the player hasn't played the card, they put it into their graveyard.
SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Hand | Destination$ Exile | ChangeType$ Card | DefinedPlayer$ TriggeredPlayer | ChangeNum$ 1 | Hidden$ True | Mandatory$ True | AtRandom$ True | RememberChanged$ True | SubAbility$ ElkinEffect
SVar:ElkinEffect:DB$ Effect | StaticAbilities$ ElkinPlay | Duration$ Permanent | ExileOnMoved$ True | RememberObjects$ RememberedCard | Triggers$ TrigReturn,TrigDuration | SubAbility$ DBResetSVar
SVar:ElkinPlay:Mode$ Continuous | Affected$ Card.IsRemembered | MayPlay$ True | MayPlayCardOwner$ True | EffectZone$ Command | AffectedZone$ Exile | CheckSVar$ ElkinSVar | Description$ The player may play that card this turn.
SVar:ElkinPlay:Mode$ Continuous | Affected$ Card.IsRemembered | MayPlay$ True | MayPlayPlayer$ CardOwner | EffectZone$ Command | AffectedZone$ Exile | CheckSVar$ ElkinSVar | Description$ The player may play that card this turn.
# Even though the Effect is "Permanent", it's not really permanent
SVar:DBResetSVar:DB$ StoreSVar | SVar$ ElkinSVar | Type$ Number | Expression$ 1 | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True

View File

@@ -10,6 +10,4 @@ SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
A:AB$ Effect | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | Name$ Emblem - Ellywick Tumblestrum | Image$ emblem_ellywick_tumblestrum | StaticAbilities$ STOverrun | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "Creatures you control have trample and haste and get +2/+2 for each differently named dungeon you've completed."
SVar:STOverrun:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.YouCtrl | AffectedZone$ Battlefield | AddPower$ X | AddToughness$ X | AddKeyword$ Trample & Haste | Description$ Creatures you control have trample and haste and get +2/+2 for each differently named dungeon you've completed.
SVar:X:PlayerCountPropertyYou$DifferentlyNamedDungeonsCompleted/Twice
Oracle:[+1]: Venture into the dungeon. (Enter the first room or advance to the next room.)
[2]: Look at the top six cards of your library. You may reveal a creature card from among them and put it into your hand. If it's legendary, you gain 3 life. Put the rest on the bottom of your library in a random order.
[7]: You get an emblem with "Creatures you control have trample and haste and get +2/+2 for each differently named dungeon you've completed."
Oracle:[+1]: Venture into the dungeon. (Enter the first room or advance to the next room.)\n[2]: Look at the top six cards of your library. You may reveal a creature card from among them and put it into your hand. If it's legendary, you gain 3 life. Put the rest on the bottom of your library in a random order.\n[7]: You get an emblem with "Creatures you control have trample and haste and get +2/+2 for each differently named dungeon you've completed."

View File

@@ -1,6 +1,6 @@
Name:Elvish Bard
ManaCost:3 G G
Types:Creature Elf Shaman
Types:Creature Elf Shaman Bard
PT:2/4
K:All creatures able to block CARDNAME do so.
SVar:Picture:http://www.wizards.com/global/images/magic/general/elvish_bard.jpg

View File

@@ -1,6 +1,6 @@
Name:Elvish Ranger
ManaCost:2 G
Types:Creature Elf
Types:Creature Elf Ranger
PT:4/1
SVar:Picture:http://resources.wizards.com/magic/cards/po/en-us/card4296.jpg
Oracle:

View File

@@ -4,7 +4,7 @@ Types:Sorcery
A:SP$ ChangeZone | Cost$ B B G G G U U | Origin$ Library | Hidden$ True | ChangeNum$ 3 | ChangeType$ Card.MonoColor | DifferentNames$ True | Destination$ Exile | RememberChanged$ True | SubAbility$ DBChooseCard | Shuffle$ False | StackDescription$ SpellDescription | SpellDescription$ Search your library for up to three monocolored cards with different names and exile them. An opponent chooses one of those cards. Shuffle that card into your library. You may cast the other cards without paying their mana costs. Exile CARDNAME.
SVar:DBChooseCard:DB$ ChooseCard | Defined$ Opponent | Choices$ Card.IsRemembered | Amount$ 1 | Mandatory$ True | ChoiceTitle$ Choose a card to shuffle back into the library | ChoiceZone$ Exile | AILogic$ BestCard | SubAbility$ DBShuffle | StackDescription$ None
SVar:DBShuffle:DB$ ChangeZone | Origin$ Exile | Destination$ Library | Defined$ ChosenCard | ForgetChanged$ True | Shuffle$ True | SubAbility$ DBCast | StackDescription$ None
SVar:DBCast:DB$ Play | Valid$ Card.IsRemembered | ValidZone$ Exile | WithoutManaCost$ True | Optional$ True | Amount$ All | SubAbility$ DBExileSelf | StackDescription$ None
SVar:DBCast:DB$ Play | Valid$ Card.IsRemembered | ValidZone$ Exile | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True | Amount$ All | SubAbility$ DBExileSelf | StackDescription$ None
SVar:DBExileSelf:DB$ ChangeZone | Origin$ Stack | Destination$ Exile | SubAbility$ DBCleanup | StackDescription$ None
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True
Oracle:Search your library for up to three monocolored cards with different names and exile them. An opponent chooses one of those cards. Shuffle that card into your library. You may cast the other cards without paying their mana costs. Exile Emergent Ultimatum.

View File

@@ -2,7 +2,7 @@ Name:Epic Experiment
ManaCost:X U R
Types:Sorcery
A:SP$ Dig | Cost$ X U R | Defined$ You | DigNum$ X | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBPlay | SpellDescription$ Exile the top X cards of your library. You may cast instant and sorcery spells with mana value X or less from among them without paying their mana costs. Then put all cards exiled this way that weren't cast into your graveyard.
SVar:DBPlay:DB$ Play | Valid$ Instant.cmcLEX+IsRemembered+YouOwn,Sorcery.cmcLEX+IsRemembered+YouOwn | ValidZone$ Exile | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ All | SubAbility$ DBGrave
SVar:DBPlay:DB$ Play | Valid$ Instant.cmcLEX+IsRemembered+YouOwn,Sorcery.cmcLEX+IsRemembered+YouOwn | ValidZone$ Exile | ValidSA$ Spell | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ All | SubAbility$ DBGrave
SVar:DBGrave:DB$ ChangeZoneAll | Origin$ Exile | Destination$ Graveyard | ChangeType$ Card.IsRemembered+YouOwn | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:Count$xPaid

View File

@@ -4,7 +4,7 @@ Types:Legendary Creature Elder Dinosaur
PT:6/6
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigExile | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME attacks, exile the top card of each player's library, then you may cast any number of spells from among those cards without paying their mana costs.
SVar:TrigExile:DB$ Dig | DigNum$ 1 | ChangeNum$ All | Defined$ Player | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBPlay
SVar:DBPlay:DB$ Play | Valid$ Card.nonLand+IsRemembered | ValidZone$ Exile | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ All | SubAbility$ DBCleanup
SVar:DBPlay:DB$ Play | Valid$ Card.IsRemembered | ValidSA$ Spell | ValidZone$ Exile | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ All | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:HasAttackEffect:TRUE
Oracle:Whenever Etali, Primal Storm attacks, exile the top card of each player's library, then you may cast any number of spells from among those cards without paying their mana costs.

View File

@@ -6,4 +6,4 @@ K:Affinity:Artifact
K:Flying
K:Cascade
DeckNeeds:Type$Artifact
Oracle:Affinity for artifacts (This spell costs {1} less to cast for each artifact you control.)\nFlying\nCascade (When you cast this spell, exile cards from the top of your library until you exile a nonland card that costs less. You may cast it without paying its mana cost. Put the exiled cards on the bottom of your library in a random order.)
Oracle:Affinity for artifacts (This spell costs {1} less to cast for each artifact you control.)\nFlying\nCascade (When you cast this spell, exile cards from the top of your library until you exile a nonland card with lesser mana value. You may cast it without paying its mana cost. Put the exiled cards on the bottom of your library in a random order.)

View File

@@ -1,9 +1,8 @@
Name:Extract Brain
ManaCost:X U B
Types:Sorcery
A:SP$ Reveal | Cost$ X U B | ValidTgts$ Opponent | IsCurse$ True | NumCards$ X | RememberRevealed$ True | SubAbility$ PickOne |StackDescription$ {p:Targeted} chooses X cards from their hand. Look at those cards. You may cast a spell from among them without paying its mana cost. | SpellDescription$ Target opponent chooses X cards from their hand. Look at those cards. You may cast a spell from among them without paying its mana cost.
SVar:PickOne:DB$ ChooseCard | Defined$ You | Amount$ 1 | ChoiceTitle$ Choose card to cast | Choices$ Card.IsRemembered | ChoiceZone$ Hand | SubAbility$ PlayChosen | StackDescription$ None
SVar:PlayChosen:DB$ Play | Defined$ ChosenCard | Controller$ You | WithoutManaCost$ True | Optional$ True | SubAbility$ DBCleanup | StackDescription$ None
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True
A:SP$ Reveal | Cost$ X U B | ValidTgts$ Opponent | IsCurse$ True | NumCards$ X | RememberRevealed$ True | SubAbility$ PlayChosen | StackDescription$ {p:Targeted} chooses X cards from their hand. Look at those cards. You may cast a spell from among them without paying its mana cost. | SpellDescription$ Target opponent chooses X cards from their hand. Look at those cards. You may cast a spell from among them without paying its mana cost.
SVar:PlayChosen:DB$ Play | ValidZone$ Hand | Valid$ Card.IsRemembered | Controller$ You | WithoutManaCost$ True | ValidSA$ Spell | Optional$ True | SubAbility$ DBCleanup | StackDescription$ None
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:Count$xPaid
Oracle:Target opponent chooses X cards from their hand. Look at those cards. You may cast a spell from among them without paying its mana cost.

View File

@@ -4,7 +4,7 @@ Types:Enchantment
T:Mode$ SpellCast | ValidCard$ Instant.nonToken,Sorcery.nonToken | Execute$ TrigExileSpell | TriggerZones$ Battlefield | TriggerDescription$ Whenever a player casts an instant or sorcery card, exile it. Then that player copies each instant or sorcery card exiled with CARDNAME. For each copy, the player may cast the copy without paying its mana cost.
SVar:TrigExileSpell:DB$ ChangeZone | Defined$ TriggeredCardLKICopy | Origin$ Stack | Destination$ Exile | Fizzle$ True | RememberChanged$ True | SubAbility$ DBPlaySpell
SVar:DBPlaySpell:DB$ RepeatEach | UseImprinted$ True | RepeatCards$ Card.IsRemembered | ChooseOrder$ True | Zone$ Exile | RepeatSubAbility$ DBPlay
SVar:DBPlay:DB$ Play | Defined$ Imprinted | Controller$ TriggeredCardController | WithoutManaCost$ True | CopyCard$ True | Optional$ True
SVar:DBPlay:DB$ Play | Defined$ Imprinted | Controller$ TriggeredCardController | WithoutManaCost$ True | ValidSA$ Spell | CopyCard$ True | Optional$ True
T:Mode$ ChangesZone | Origin$ Exile | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBForget
SVar:DBForget:DB$ Pump | Defined$ TriggeredCard | ForgetObjects$ TriggeredCard
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Static$ True | ValidCard$ Card.Self | Execute$ DBCleanup

View File

@@ -3,6 +3,6 @@ ManaCost:1 G G
Types:Legendary Creature Elf Warrior
PT:2/2
A:AB$ PumpAll | Cost$ 2 G G G | ValidCards$ Creature.Elf+YouCtrl | NumAtt$ +3 | NumDef$ +3 | KW$ Trample | SpellDescription$ Elf creatures you control get +3/+3 and gain trample until end of turn.
A:AB$ Regenerate | ValidTgts$ Creature.Elf+Other | TgtPrompt$ Select another target Elf | Cost$ G | SpellDescription$ Regenerate another target Elf.
A:AB$ Regenerate | ValidTgts$ Elf.Other | TgtPrompt$ Select another target Elf | Cost$ G | SpellDescription$ Regenerate another target Elf.
SVar:Picture:http://www.wizards.com/global/images/magic/general/ezuri_renegade_leader.jpg
Oracle:{G}: Regenerate another target Elf.\n{2}{G}{G}{G}: Elf creatures you control get +3/+3 and gain trample until end of turn.

View File

@@ -3,6 +3,6 @@ ManaCost:3 R R
Types:Instant
A:SP$ DealDamage | ValidTgts$ Creature,Planeswalker | NumDmg$ 5 | SubAbility$ DBRollDice | SpellDescription$ CARDNAME deals 5 damage to target creature or planeswalker. Roll a d20.
SVar:DBRollDice:DB$ RollDice | Sides$ 20 | ResultSubAbilities$ 1-9:DamageAll,10-20:DamageOpp
SVar:DamageAll:DB$ DealDamage | Defined$ Player | NumDmg$ 2 | SpellDescription$ 1-9 VERT CARDNAME deals 2 damage to each player.
SVar:DamageOpp:DB$ DealDamage | Defined$ Player.Opponent | NumDmg$ 2 | SpellDescription$ 10-20 VERT CARDNAME deals 2 damage to each opponent.
Oracle:Farideh's Fireball deals 5 damage to target creature or planeswalker. Roll a d20.\n1-9 | Farideh's Fireball deals 2 damage to each player.\n10-20 | Farideh's Fireball deals 2 damage to each opponent.
SVar:DamageAll:DB$ DealDamage | Defined$ Player | NumDmg$ 2 | SpellDescription$ 19 VERT CARDNAME deals 2 damage to each player.
SVar:DamageOpp:DB$ DealDamage | Defined$ Player.Opponent | NumDmg$ 2 | SpellDescription$ 1020 VERT CARDNAME deals 2 damage to each opponent.
Oracle:Farideh's Fireball deals 5 damage to target creature or planeswalker. Roll a d20.\n19 | Farideh's Fireball deals 2 damage to each player.\n1020 | Farideh's Fireball deals 2 damage to each opponent.

View File

@@ -3,6 +3,6 @@ ManaCost:6 B R
Types:Sorcery
K:Rebound
A:SP$ DigUntil | Cost$ 6 B R | Defined$ Player.Opponent | Valid$ Card.nonLand | FoundDestination$ Exile | RevealedDestination$ Exile | RememberFound$ True | SubAbility$ DBPlay | StackDescription$ SpellDescription | SpellDescription$ Each opponent exiles cards from the top of their library until they exile a nonland card. You may cast any number of spells from among those nonland cards without paying their mana costs.
SVar:DBPlay:DB$ Play | Controller$ You | OptionalDecider$ You | Defined$ Remembered | WithoutManaCost$ True | Optional$ True | SubAbility$ DBCleanup | StackDescription$ None
SVar:DBPlay:DB$ Play | Controller$ You | OptionalDecider$ You | Defined$ Remembered | WithoutManaCost$ True | ValidSA$ Spell | Optional$ True | Amount$ All | SubAbility$ DBCleanup | StackDescription$ None
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
Oracle:Each opponent exiles cards from the top of their library until they exile a nonland card. You may cast any number of spells from among those nonland cards without paying their mana costs.\nRebound (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.)

View File

@@ -3,7 +3,7 @@ ManaCost:X R R
Types:Sorcery
A:SP$ Pump | Cost$ X R R | ValidTgts$ Instant.YouOwn+cmcLEX | TgtZone$ Graveyard | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Select target instant card in your graveyard with mana value X or less | RememberObjects$ Targeted | SubAbility$ DBPump | SpellDescription$ You may cast up to one target instant card and/or up to one target sorcery card from your graveyard each with mana value X or less without paying their mana costs. If a spell cast this way would be put into your graveyard this turn, exile it instead. If X is 10 or more, copy each of those spells twice. You may choose new targets for the copies.
SVar:DBPump:DB$ Pump | ValidTgts$ Sorcery.YouOwn+cmcLEX | TgtZone$ Graveyard | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Select target sorcery card in your graveyard with mana value X or less | RememberObjects$ Targeted | SubAbility$ DBPlay | StackDescription$ None
SVar:DBPlay:DB$ Play | Valid$ Card.IsRemembered | ValidZone$ Graveyard | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ All | SubAbility$ DBRepeat | ReplaceGraveyard$ Exile
SVar:DBPlay:DB$ Play | Valid$ Card.IsRemembered | ValidZone$ Graveyard | ValidSA$ Spell | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ All | SubAbility$ DBRepeat | ReplaceGraveyard$ Exile
SVar:DBRepeat:DB$ RepeatEach | DefinedCards$ Remembered | ClearRemembered$ True | ChooseOrder$ True | RepeatSubAbility$ DBCopy | ConditionCheckSVar$ X | ConditionSVarCompare$ GE10
SVar:DBCopy:DB$ CopySpellAbility | Amount$ 2 | Defined$ Remembered | MayChooseTarget$ True
SVar:X:Count$xPaid

View File

@@ -1,6 +1,6 @@
Name:Firebrand Ranger
ManaCost:1 R
Types:Creature Human Soldier
Types:Creature Human Soldier Ranger
PT:2/1
A:AB$ ChangeZone | Cost$ G T | Origin$ Hand | Destination$ Battlefield | ChangeType$ Land.Basic | ChangeNum$ 1 | Optional$ You | AILogic$ AtOppEOT | SpellDescription$ You may put a basic land card from your hand onto the battlefield.
SVar:Picture:http://www.wizards.com/global/images/magic/general/firebrand_ranger.jpg

View File

@@ -11,4 +11,4 @@ SVar:DBEffect:DB$ Effect | RememberObjects$ RememberedCard | StaticAbilities$ Ma
SVar:MayPlay:Mode$ Continuous | Affected$ Card.IsRemembered | MayPlay$ True | MayPlayLimit$ 1 | EffectZone$ Command | AffectedZone$ Exile | Description$ Until the end of your next turn, you may play one of these cards. (If you cast EFFECTSOURCE this way, you can't play the other card, and vice versa.)
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:SacMe:3
Oracle:Flying\nFlameskull cant block.\nRejuvenation — When Flameskull dies, exile it. If you do, exile the top card of your library. Until the end of your next turn, you may play one of those cards. (If you cast Flameskull this way, you can't play the other card, and vice versa.)
Oracle:Flying\nFlameskull can't block.\nRejuvenation — When Flameskull dies, exile it. If you do, exile the top card of your library. Until the end of your next turn, you may play one of those cards. (If you cast Flameskull this way, you can't play the other card, and vice versa.)

Some files were not shown because too many files have changed in this diff Show More