mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 19:58:00 +00:00
Merge branch 'Card-Forge:master' into master
This commit is contained in:
@@ -2436,13 +2436,23 @@ public class GameAction {
|
|||||||
damageMap.triggerExcessDamage(isCombat, lethalDamage, game, cause, lkiCache);
|
damageMap.triggerExcessDamage(isCombat, lethalDamage, game, cause, lkiCache);
|
||||||
|
|
||||||
// lose life simultaneously
|
// lose life simultaneously
|
||||||
if (isCombat) {
|
Map<Player, Integer> lifeLostAllDamageMap = Maps.newHashMap();
|
||||||
for (Player p : game.getPlayers()) {
|
for (Player p : game.getPlayers()) {
|
||||||
p.dealCombatDamage();
|
int lost = p.processDamage();
|
||||||
|
if (lost > 0) {
|
||||||
|
lifeLostAllDamageMap.put(p, lost);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isCombat) {
|
||||||
game.getTriggerHandler().runWaitingTriggers();
|
game.getTriggerHandler().runWaitingTriggers();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!lifeLostAllDamageMap.isEmpty()) { // Run triggers if any player actually lost life
|
||||||
|
final Map<AbilityKey, Object> runParams = AbilityKey.mapFromPIMap(lifeLostAllDamageMap);
|
||||||
|
game.getTriggerHandler().runTrigger(TriggerType.LifeLostAll, runParams, false);
|
||||||
|
}
|
||||||
|
|
||||||
if (cause != null) {
|
if (cause != null) {
|
||||||
// Remember objects as needed
|
// Remember objects as needed
|
||||||
final Card sourceLKI = game.getChangeZoneLKIInfo(cause.getHostCard());
|
final Card sourceLKI = game.getChangeZoneLKIInfo(cause.getHostCard());
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
package forge.game.ability;
|
package forge.game.ability;
|
||||||
|
|
||||||
import java.util.EnumMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import forge.game.GameEntity;
|
import forge.game.GameEntity;
|
||||||
import forge.game.card.Card;
|
import forge.game.card.Card;
|
||||||
|
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
|
|
||||||
|
import java.util.EnumMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Keys for Ability parameter maps.
|
* Keys for Ability parameter maps.
|
||||||
*/
|
*/
|
||||||
@@ -84,6 +83,7 @@ public enum AbilityKey {
|
|||||||
LastStateGraveyard("LastStateGraveyard"),
|
LastStateGraveyard("LastStateGraveyard"),
|
||||||
LifeAmount("LifeAmount"), //TODO confirm that this and LifeGained can be merged
|
LifeAmount("LifeAmount"), //TODO confirm that this and LifeGained can be merged
|
||||||
LifeGained("LifeGained"),
|
LifeGained("LifeGained"),
|
||||||
|
Map("Map"),
|
||||||
Mana("Mana"),
|
Mana("Mana"),
|
||||||
MergedCards("MergedCards"),
|
MergedCards("MergedCards"),
|
||||||
Mode("Mode"),
|
Mode("Mode"),
|
||||||
@@ -193,4 +193,11 @@ public enum AbilityKey {
|
|||||||
runParams.put(Affected, gameEntity);
|
runParams.put(Affected, gameEntity);
|
||||||
return runParams;
|
return runParams;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Map<AbilityKey, Object> mapFromPIMap(Map<Player, Integer> map) {
|
||||||
|
final Map<AbilityKey, Object> runParams = newMap();
|
||||||
|
|
||||||
|
runParams.put(Map, map);
|
||||||
|
return runParams;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -125,9 +125,7 @@ public class ChooseCardEffect extends SpellAbilityEffect {
|
|||||||
for (final String type : partyTypes) {
|
for (final String type : partyTypes) {
|
||||||
CardCollection valids = CardLists.filter(p.getCardsIn(ZoneType.Battlefield),
|
CardCollection valids = CardLists.filter(p.getCardsIn(ZoneType.Battlefield),
|
||||||
CardPredicates.isType(type));
|
CardPredicates.isType(type));
|
||||||
for (Card alreadyChosen : chosen) {
|
valids.removeAll(chosen);
|
||||||
valids.remove(alreadyChosen);
|
|
||||||
}
|
|
||||||
if (!valids.isEmpty()) {
|
if (!valids.isEmpty()) {
|
||||||
final String prompt = Localizer.getInstance().getMessage("lblChoose") + " " +
|
final String prompt = Localizer.getInstance().getMessage("lblChoose") + " " +
|
||||||
Lang.nounWithNumeralExceptOne(1, type);
|
Lang.nounWithNumeralExceptOne(1, type);
|
||||||
|
|||||||
@@ -1,11 +1,15 @@
|
|||||||
package forge.game.ability.effects;
|
package forge.game.ability.effects;
|
||||||
|
|
||||||
import java.util.List;
|
import com.google.common.collect.Maps;
|
||||||
|
import forge.game.ability.AbilityKey;
|
||||||
import forge.game.ability.SpellAbilityEffect;
|
import forge.game.ability.SpellAbilityEffect;
|
||||||
import forge.game.card.Card;
|
import forge.game.card.Card;
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
|
import forge.game.trigger.TriggerType;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public class LifeExchangeEffect extends SpellAbilityEffect {
|
public class LifeExchangeEffect extends SpellAbilityEffect {
|
||||||
|
|
||||||
@@ -56,17 +60,27 @@ public class LifeExchangeEffect extends SpellAbilityEffect {
|
|||||||
source.addRemembered(diff);
|
source.addRemembered(diff);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final Map<Player, Integer> lossMap = Maps.newHashMap();
|
||||||
if ((life1 > life2) && p1.canLoseLife() && p2.canGainLife()) {
|
if ((life1 > life2) && p1.canLoseLife() && p2.canGainLife()) {
|
||||||
final int diff = life1 - life2;
|
final int diff = life1 - life2;
|
||||||
p1.loseLife(diff, false, false);
|
final int lost = p1.loseLife(diff, false, false);
|
||||||
p2.gainLife(diff, source, sa);
|
p2.gainLife(diff, source, sa);
|
||||||
|
if (lost > 0) {
|
||||||
|
lossMap.put(p1, lost);
|
||||||
|
}
|
||||||
} else if ((life2 > life1) && p2.canLoseLife() && p1.canGainLife()) {
|
} else if ((life2 > life1) && p2.canLoseLife() && p1.canGainLife()) {
|
||||||
final int diff = life2 - life1;
|
final int diff = life2 - life1;
|
||||||
p2.loseLife(diff, false, false);
|
final int lost = p2.loseLife(diff, false, false);
|
||||||
p1.gainLife(diff, source, sa);
|
p1.gainLife(diff, source, sa);
|
||||||
|
if (lost > 0) {
|
||||||
|
lossMap.put(p2, lost);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// they are equal, so nothing to do
|
// they are equal or can't be exchanged, so nothing to do
|
||||||
|
}
|
||||||
|
if (!lossMap.isEmpty()) { // Run triggers if any player actually lost life
|
||||||
|
final Map<AbilityKey, Object> runParams = AbilityKey.mapFromPIMap(lossMap);
|
||||||
|
source.getGame().getTriggerHandler().runTrigger(TriggerType.LifeLostAll, runParams, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,17 @@
|
|||||||
package forge.game.ability.effects;
|
package forge.game.ability.effects;
|
||||||
|
|
||||||
import java.util.List;
|
import com.google.common.collect.Maps;
|
||||||
|
|
||||||
import forge.game.Game;
|
import forge.game.Game;
|
||||||
|
import forge.game.ability.AbilityKey;
|
||||||
import forge.game.ability.SpellAbilityEffect;
|
import forge.game.ability.SpellAbilityEffect;
|
||||||
import forge.game.card.Card;
|
import forge.game.card.Card;
|
||||||
import forge.game.event.GameEventCardStatsChanged;
|
import forge.game.event.GameEventCardStatsChanged;
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
|
import forge.game.trigger.TriggerType;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public class LifeExchangeVariantEffect extends SpellAbilityEffect {
|
public class LifeExchangeVariantEffect extends SpellAbilityEffect {
|
||||||
|
|
||||||
@@ -68,9 +72,16 @@ public class LifeExchangeVariantEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
if ((pLife > num) && p.canLoseLife()) {
|
if ((pLife > num) && p.canLoseLife()) {
|
||||||
final int diff = pLife - num;
|
final int diff = pLife - num;
|
||||||
p.loseLife(diff, false, false);
|
final int lost = p.loseLife(diff, false, false);
|
||||||
source.addNewPT(power, toughness, timestamp, 0);
|
source.addNewPT(power, toughness, timestamp, 0);
|
||||||
game.fireEvent(new GameEventCardStatsChanged(source));
|
game.fireEvent(new GameEventCardStatsChanged(source));
|
||||||
|
|
||||||
|
if (lost > 0) { // Run triggers if player actually lost life
|
||||||
|
final Map<Player, Integer> lossMap = Maps.newHashMap();
|
||||||
|
lossMap.put(p, lost);
|
||||||
|
final Map<AbilityKey, Object> runParams = AbilityKey.mapFromPIMap(lossMap);
|
||||||
|
source.getGame().getTriggerHandler().runTrigger(TriggerType.LifeLostAll, runParams, false);
|
||||||
|
}
|
||||||
} else if ((num > pLife) && p.canGainLife()) {
|
} else if ((num > pLife) && p.canGainLife()) {
|
||||||
final int diff = num - pLife;
|
final int diff = num - pLife;
|
||||||
p.gainLife(diff, source, sa);
|
p.gainLife(diff, source, sa);
|
||||||
|
|||||||
@@ -1,12 +1,17 @@
|
|||||||
package forge.game.ability.effects;
|
package forge.game.ability.effects;
|
||||||
|
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
|
import forge.game.ability.AbilityKey;
|
||||||
import forge.game.ability.AbilityUtils;
|
import forge.game.ability.AbilityUtils;
|
||||||
import forge.game.ability.SpellAbilityEffect;
|
import forge.game.ability.SpellAbilityEffect;
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
|
import forge.game.trigger.TriggerType;
|
||||||
import forge.util.Lang;
|
import forge.util.Lang;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public class LifeLoseEffect extends SpellAbilityEffect {
|
public class LifeLoseEffect extends SpellAbilityEffect {
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
@@ -41,13 +46,23 @@ public class LifeLoseEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
final int lifeAmount = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("LifeAmount"), sa);
|
final int lifeAmount = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("LifeAmount"), sa);
|
||||||
|
|
||||||
|
final Map<Player, Integer> lossMap = Maps.newHashMap();
|
||||||
for (final Player p : getTargetPlayers(sa)) {
|
for (final Player p : getTargetPlayers(sa)) {
|
||||||
if (!p.isInGame()) {
|
if (!p.isInGame()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
lifeLost += p.loseLife(lifeAmount, false, false);
|
final int lost = p.loseLife(lifeAmount, false, false);
|
||||||
|
if (lost > 0) {
|
||||||
|
lossMap.put(p, lost);
|
||||||
|
}
|
||||||
|
lifeLost += lost;
|
||||||
}
|
}
|
||||||
sa.setSVar("AFLifeLost", "Number$" + lifeLost);
|
sa.setSVar("AFLifeLost", "Number$" + lifeLost);
|
||||||
|
|
||||||
|
if (!lossMap.isEmpty()) { // Run triggers if any player actually lost life
|
||||||
|
final Map<AbilityKey, Object> runParams = AbilityKey.mapFromPIMap(lossMap);
|
||||||
|
sa.getHostCard().getGame().getTriggerHandler().runTrigger(TriggerType.LifeLostAll, runParams, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,22 @@
|
|||||||
package forge.game.ability.effects;
|
package forge.game.ability.effects;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
|
import forge.game.ability.AbilityKey;
|
||||||
|
import forge.game.ability.AbilityUtils;
|
||||||
|
import forge.game.ability.SpellAbilityEffect;
|
||||||
|
import forge.game.card.Card;
|
||||||
|
import forge.game.player.Player;
|
||||||
|
import forge.game.player.PlayerCollection;
|
||||||
|
import forge.game.player.PlayerController;
|
||||||
|
import forge.game.spellability.SpellAbility;
|
||||||
|
import forge.game.trigger.TriggerType;
|
||||||
|
import forge.util.Lang;
|
||||||
|
import forge.util.Localizer;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
|
|
||||||
import forge.game.ability.AbilityUtils;
|
|
||||||
import forge.game.ability.SpellAbilityEffect;
|
|
||||||
import forge.game.player.Player;
|
|
||||||
import forge.game.player.PlayerCollection;
|
|
||||||
import forge.game.spellability.SpellAbility;
|
|
||||||
import forge.util.Localizer;
|
|
||||||
|
|
||||||
public class LifeSetEffect extends SpellAbilityEffect {
|
public class LifeSetEffect extends SpellAbilityEffect {
|
||||||
|
|
||||||
@@ -19,10 +25,38 @@ public class LifeSetEffect extends SpellAbilityEffect {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void resolve(SpellAbility sa) {
|
public void resolve(SpellAbility sa) {
|
||||||
|
final Card source = sa.getHostCard();
|
||||||
final boolean redistribute = sa.hasParam("Redistribute");
|
final boolean redistribute = sa.hasParam("Redistribute");
|
||||||
final int lifeAmount = redistribute ? 0 : AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("LifeAmount"), sa);
|
final int lifeAmount = redistribute ? 0 : AbilityUtils.calculateAmount(source, sa.getParam("LifeAmount"), sa);
|
||||||
final List<Integer> lifetotals = new ArrayList<>();
|
final List<Integer> lifetotals = new ArrayList<>();
|
||||||
final PlayerCollection players = getTargetPlayers(sa);
|
final PlayerController pc = sa.getActivatingPlayer().getController();
|
||||||
|
|
||||||
|
PlayerCollection players = new PlayerCollection();
|
||||||
|
if (sa.hasParam("PlayerChoices")) {
|
||||||
|
PlayerCollection choices = AbilityUtils.getDefinedPlayers(source, sa.getParam("PlayerChoices"), sa);
|
||||||
|
int n = 1;
|
||||||
|
int min = 1;
|
||||||
|
if (sa.hasParam("ChoiceAmount")) {
|
||||||
|
if (sa.getParam("ChoiceAmount").equals("Any")) {
|
||||||
|
n = choices.size();
|
||||||
|
min = 0;
|
||||||
|
} else {
|
||||||
|
n = AbilityUtils.calculateAmount(source, sa.getParam("ChoiceAmount"), sa);
|
||||||
|
min = n;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String prompt = sa.hasParam("ChoicePrompt") ? sa.getParam("ChoicePrompt") :
|
||||||
|
Localizer.getInstance().getMessage("lblChoosePlayer");
|
||||||
|
List<Player> chosen = pc.chooseEntitiesForEffect(choices, min, n, null, sa, prompt, null,
|
||||||
|
null);
|
||||||
|
players.addAll(chosen);
|
||||||
|
} else {
|
||||||
|
players = getTargetPlayers(sa);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (players.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (redistribute) {
|
if (redistribute) {
|
||||||
for (final Player p : players) {
|
for (final Player p : players) {
|
||||||
@@ -33,23 +67,33 @@ public class LifeSetEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final Map<Player, Integer> lossMap = Maps.newHashMap();
|
||||||
for (final Player p : players.threadSafeIterable()) {
|
for (final Player p : players.threadSafeIterable()) {
|
||||||
if (!p.isInGame()) {
|
if (!p.isInGame()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
final int preLife = p.getLife();
|
||||||
if (!redistribute) {
|
if (!redistribute) {
|
||||||
p.setLife(lifeAmount, sa);
|
p.setLife(lifeAmount, sa);
|
||||||
} else {
|
} else {
|
||||||
List<Integer> validChoices = getDistribution(players, true, lifetotals);
|
List<Integer> validChoices = getDistribution(players, true, lifetotals);
|
||||||
int life = sa.getActivatingPlayer().getController().chooseNumber(sa, Localizer.getInstance().getMessage("lblLifeTotal") + ": " + p, validChoices, p);
|
int life = pc.chooseNumber(sa, Localizer.getInstance().getMessage("lblLifeTotal") + ": " + p, validChoices, p);
|
||||||
p.setLife(life, sa);
|
p.setLife(life, sa);
|
||||||
lifetotals.remove((Integer) life);
|
lifetotals.remove((Integer) life);
|
||||||
players.remove(p);
|
players.remove(p);
|
||||||
}
|
}
|
||||||
|
final int diff = preLife - p.getLife();
|
||||||
|
if (diff > 0) {
|
||||||
|
lossMap.put(p, diff);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!lossMap.isEmpty()) { // Run triggers if any player actually lost life
|
||||||
|
final Map<AbilityKey, Object> runParams = AbilityKey.mapFromPIMap(lossMap);
|
||||||
|
source.getGame().getTriggerHandler().runTrigger(TriggerType.LifeLostAll, runParams, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<Integer> getDistribution(PlayerCollection players, boolean top, List<Integer> remainingChoices) {
|
private static List<Integer> getDistribution(List<Player> players, boolean top, List<Integer> remainingChoices) {
|
||||||
// distribution was successful
|
// distribution was successful
|
||||||
if (players.isEmpty()) {
|
if (players.isEmpty()) {
|
||||||
// carry signal back
|
// carry signal back
|
||||||
@@ -95,23 +139,18 @@ public class LifeSetEffect extends SpellAbilityEffect {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
protected String getStackDescription(SpellAbility sa) {
|
protected String getStackDescription(SpellAbility sa) {
|
||||||
|
if (sa.hasParam("Redistribute")) {
|
||||||
|
if (sa.hasParam("SpellDescription")) {
|
||||||
|
return sa.getParam("SpellDescription");
|
||||||
|
} else {
|
||||||
|
return ("Please add StackDescription or SpellDescription for Redistribute in LifeSetEffect.");
|
||||||
|
}
|
||||||
|
}
|
||||||
final StringBuilder sb = new StringBuilder();
|
final StringBuilder sb = new StringBuilder();
|
||||||
final int amount = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("LifeAmount"), sa);
|
final int amount = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("LifeAmount"), sa);
|
||||||
final boolean redistribute = sa.hasParam("Redistribute");
|
|
||||||
|
|
||||||
List<Player> tgtPlayers = getTargetPlayers(sa);
|
sb.append(Lang.joinHomogenous(getTargetPlayers(sa)));
|
||||||
if (!redistribute) {
|
sb.append(" life total becomes ").append(amount).append(".");
|
||||||
for (final Player player : tgtPlayers) {
|
|
||||||
sb.append(player).append(" ");
|
|
||||||
}
|
|
||||||
sb.append("life total becomes ").append(amount).append(".");
|
|
||||||
} else {
|
|
||||||
sb.append("Redistribute ");
|
|
||||||
for (final Player player : tgtPlayers) {
|
|
||||||
sb.append(player).append(" ");
|
|
||||||
}
|
|
||||||
sb.append("life totals.");
|
|
||||||
}
|
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,18 +4,21 @@ import java.util.*;
|
|||||||
|
|
||||||
import com.google.common.collect.Iterables;
|
import com.google.common.collect.Iterables;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
|
|
||||||
import forge.GameCommand;
|
import forge.GameCommand;
|
||||||
import forge.card.CardType;
|
import forge.card.CardType;
|
||||||
import forge.game.Game;
|
import forge.game.Game;
|
||||||
import forge.game.GameEntityCounterTable;
|
import forge.game.GameEntityCounterTable;
|
||||||
import forge.game.GameObject;
|
import forge.game.GameObject;
|
||||||
|
import forge.game.ability.AbilityKey;
|
||||||
import forge.game.ability.AbilityUtils;
|
import forge.game.ability.AbilityUtils;
|
||||||
import forge.game.ability.SpellAbilityEffect;
|
import forge.game.ability.SpellAbilityEffect;
|
||||||
import forge.game.card.*;
|
import forge.game.card.*;
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.game.spellability.SpellAbilityStackInstance;
|
import forge.game.spellability.SpellAbilityStackInstance;
|
||||||
|
import forge.game.trigger.TriggerType;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
import forge.util.collect.FCollection;
|
import forge.util.collect.FCollection;
|
||||||
|
|
||||||
@@ -81,9 +84,12 @@ public class RepeatEachEffect extends SpellAbilityEffect {
|
|||||||
if (sa.hasParam("ChangeZoneTable")) {
|
if (sa.hasParam("ChangeZoneTable")) {
|
||||||
sa.setChangeZoneTable(new CardZoneTable());
|
sa.setChangeZoneTable(new CardZoneTable());
|
||||||
}
|
}
|
||||||
|
if (sa.hasParam("LoseLifeMap")) {
|
||||||
|
sa.setLoseLifeMap(Maps.newHashMap());
|
||||||
|
}
|
||||||
|
|
||||||
if (loopOverCards) {
|
if (loopOverCards) {
|
||||||
if (sa.hasParam("ChooseOrder") && repeatCards.size() >= 2) {
|
if (sa.hasParam("ChooseOrder") && repeatCards.size() > 1) {
|
||||||
final Player chooser = sa.getParam("ChooseOrder").equals("True") ? player :
|
final Player chooser = sa.getParam("ChooseOrder").equals("True") ? player :
|
||||||
AbilityUtils.getDefinedPlayers(source, sa.getParam("ChooseOrder"), sa).get(0);
|
AbilityUtils.getDefinedPlayers(source, sa.getParam("ChooseOrder"), sa).get(0);
|
||||||
repeatCards = chooser.getController().orderMoveToZoneList(repeatCards, ZoneType.None, sa);
|
repeatCards = chooser.getController().orderMoveToZoneList(repeatCards, ZoneType.None, sa);
|
||||||
@@ -207,5 +213,13 @@ public class RepeatEachEffect extends SpellAbilityEffect {
|
|||||||
sa.getChangeZoneTable().triggerChangesZoneAll(game, sa);
|
sa.getChangeZoneTable().triggerChangesZoneAll(game, sa);
|
||||||
sa.setChangeZoneTable(null);
|
sa.setChangeZoneTable(null);
|
||||||
}
|
}
|
||||||
|
if (sa.hasParam("LoseLifeMap")) {
|
||||||
|
Map<Player, Integer> lossMap = sa.getLoseLifeMap();
|
||||||
|
if (!lossMap.isEmpty()) {
|
||||||
|
final Map<AbilityKey, Object> runParams2 = AbilityKey.mapFromPIMap(lossMap);
|
||||||
|
game.getTriggerHandler().runTrigger(TriggerType.LifeLostAll, runParams2, false);
|
||||||
|
}
|
||||||
|
sa.setLoseLifeMap(null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -680,7 +680,7 @@ public class CardFactory {
|
|||||||
List<String> creatureTypes = null;
|
List<String> creatureTypes = null;
|
||||||
final CardCloneStates result = new CardCloneStates(in, sa);
|
final CardCloneStates result = new CardCloneStates(in, sa);
|
||||||
|
|
||||||
final String newName = sa.getParamOrDefault("NewName", null);
|
final String newName = sa.getParam("NewName");
|
||||||
ColorSet colors = null;
|
ColorSet colors = null;
|
||||||
|
|
||||||
if (sa.hasParam("AddTypes")) {
|
if (sa.hasParam("AddTypes")) {
|
||||||
|
|||||||
@@ -1274,8 +1274,13 @@ public class CardView extends GameEntityView {
|
|||||||
String rulesText = null;
|
String rulesText = null;
|
||||||
|
|
||||||
if (type.isVanguard() && rules != null) {
|
if (type.isVanguard() && rules != null) {
|
||||||
rulesText = "Hand Modifier: " + rules.getHand() +
|
boolean decHand = rules.getHand() < 0;
|
||||||
"\r\nLife Modifier: " + rules.getLife();
|
boolean decLife = rules.getLife() < 0;
|
||||||
|
String handSize = Localizer.getInstance().getMessageorUseDefault("lblHandSize", "Hand Size")
|
||||||
|
+ (!decHand ? ": +" : ": ") + rules.getHand();
|
||||||
|
String startingLife = Localizer.getInstance().getMessageorUseDefault("lblStartingLife", "Starting Life")
|
||||||
|
+ (!decLife ? ": +" : ": ") + rules.getLife();
|
||||||
|
rulesText = handSize + "\r\n" + startingLife;
|
||||||
}
|
}
|
||||||
set(TrackableProperty.RulesText, rulesText);
|
set(TrackableProperty.RulesText, rulesText);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -465,13 +465,21 @@ public class PhaseHandler implements java.io.Serializable {
|
|||||||
throw new IllegalStateException("Phase.nextPhase() is called, but Stack isn't empty.");
|
throw new IllegalStateException("Phase.nextPhase() is called, but Stack isn't empty.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final Map<Player, Integer> lossMap = Maps.newHashMap();
|
||||||
for (Player p : game.getPlayers()) {
|
for (Player p : game.getPlayers()) {
|
||||||
int burn = p.getManaPool().clearPool(true).size();
|
int burn = p.getManaPool().clearPool(true).size();
|
||||||
|
|
||||||
if (p.getManaPool().hasBurn()) {
|
if (p.getManaPool().hasBurn()) {
|
||||||
p.loseLife(burn, false, true);
|
final int lost = p.loseLife(burn, false, true);
|
||||||
|
if (lost > 0) {
|
||||||
|
lossMap.put(p, lost);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!lossMap.isEmpty()) { // Run triggers if any player actually lost life
|
||||||
|
final Map<AbilityKey, Object> runLifeLostParams = AbilityKey.mapFromPIMap(lossMap);
|
||||||
|
game.getTriggerHandler().runTrigger(TriggerType.LifeLostAll, runLifeLostParams, false);
|
||||||
|
}
|
||||||
|
|
||||||
switch (phase) {
|
switch (phase) {
|
||||||
case UPKEEP:
|
case UPKEEP:
|
||||||
|
|||||||
@@ -620,13 +620,26 @@ public class Player extends GameEntity implements Comparable<Player> {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
loseLife(lifePayment, false, false);
|
final int lost = loseLife(lifePayment, false, false);
|
||||||
cause.setPaidLife(lifePayment);
|
cause.setPaidLife(lifePayment);
|
||||||
|
|
||||||
// Run triggers
|
// Run triggers
|
||||||
final Map<AbilityKey, Object> runParams = AbilityKey.mapFromPlayer(this);
|
final Map<AbilityKey, Object> runParams = AbilityKey.mapFromPlayer(this);
|
||||||
runParams.put(AbilityKey.LifeAmount, lifePayment);
|
runParams.put(AbilityKey.LifeAmount, lifePayment);
|
||||||
game.getTriggerHandler().runTrigger(TriggerType.PayLife, runParams, false);
|
game.getTriggerHandler().runTrigger(TriggerType.PayLife, runParams, false);
|
||||||
|
if (lost > 0) { // Run triggers if player actually lost life
|
||||||
|
boolean runAll = false;
|
||||||
|
Map<Player, Integer> lossMap = cause.getLoseLifeMap();
|
||||||
|
if (lossMap == null) {
|
||||||
|
lossMap = Maps.newHashMap();
|
||||||
|
runAll = true;
|
||||||
|
}
|
||||||
|
lossMap.put(this, lost);
|
||||||
|
if (runAll) {
|
||||||
|
final Map<AbilityKey, Object> runParams2 = AbilityKey.mapFromPIMap(lossMap);
|
||||||
|
game.getTriggerHandler().runTrigger(TriggerType.LifeLostAll, runParams2, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -691,12 +704,7 @@ public class Player extends GameEntity implements Comparable<Player> {
|
|||||||
}
|
}
|
||||||
else if (!hasKeyword("Damage doesn't cause you to lose life.")) {
|
else if (!hasKeyword("Damage doesn't cause you to lose life.")) {
|
||||||
// rule 118.2. Damage dealt to a player normally causes that player to lose that much life.
|
// rule 118.2. Damage dealt to a player normally causes that player to lose that much life.
|
||||||
if (isCombat) {
|
simultaneousDamage += amount;
|
||||||
// currently all abilities treat is as single event
|
|
||||||
simultaneousDamage += amount;
|
|
||||||
} else {
|
|
||||||
loseLife(amount, true, false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isCombat) {
|
if (isCombat) {
|
||||||
@@ -829,9 +837,10 @@ public class Player extends GameEntity implements Comparable<Player> {
|
|||||||
return restDamage;
|
return restDamage;
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void dealCombatDamage() {
|
public final int processDamage() {
|
||||||
loseLife(simultaneousDamage, true, false);
|
int lost = loseLife(simultaneousDamage, true, false);
|
||||||
simultaneousDamage = 0;
|
simultaneousDamage = 0;
|
||||||
|
return lost;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -39,12 +39,6 @@ public class ReplaceToken extends ReplacementEffect {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*/
|
|
||||||
if (!matchesValidParam("ValidToken", runParams.get(AbilityKey.Token))) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
//*/
|
|
||||||
|
|
||||||
if (filterAmount((TokenCreateTable) runParams.get(AbilityKey.Token)) <= 0) {
|
if (filterAmount((TokenCreateTable) runParams.get(AbilityKey.Token)) <= 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,7 +66,6 @@ import forge.game.staticability.StaticAbilityCastWithFlash;
|
|||||||
import forge.game.staticability.StaticAbilityMustTarget;
|
import forge.game.staticability.StaticAbilityMustTarget;
|
||||||
import forge.game.trigger.Trigger;
|
import forge.game.trigger.Trigger;
|
||||||
import forge.game.trigger.TriggerType;
|
import forge.game.trigger.TriggerType;
|
||||||
import forge.game.trigger.WrappedAbility;
|
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
import forge.util.Aggregates;
|
import forge.util.Aggregates;
|
||||||
import forge.util.CardTranslation;
|
import forge.util.CardTranslation;
|
||||||
@@ -186,6 +185,7 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit
|
|||||||
private CardDamageMap preventMap;
|
private CardDamageMap preventMap;
|
||||||
private GameEntityCounterTable counterTable;
|
private GameEntityCounterTable counterTable;
|
||||||
private CardZoneTable changeZoneTable;
|
private CardZoneTable changeZoneTable;
|
||||||
|
private Map<Player, Integer> loseLifeMap;
|
||||||
|
|
||||||
public CardCollection getLastStateBattlefield() {
|
public CardCollection getLastStateBattlefield() {
|
||||||
return lastStateBattlefield;
|
return lastStateBattlefield;
|
||||||
@@ -1843,14 +1843,14 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit
|
|||||||
*/
|
*/
|
||||||
public CardCollectionView findTargetedCards() {
|
public CardCollectionView findTargetedCards() {
|
||||||
// First search for targeted cards associated with current ability
|
// First search for targeted cards associated with current ability
|
||||||
if (targetChosen.isTargetingAnyCard()) {
|
if (getTargets().isTargetingAnyCard()) {
|
||||||
return targetChosen.getTargetCards();
|
return getTargets().getTargetCards();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Next search for source cards of targeted SAs associated with current ability
|
// Next search for source cards of targeted SAs associated with current ability
|
||||||
if (targetChosen.isTargetingAnySpell()) {
|
if (getTargets().isTargetingAnySpell()) {
|
||||||
CardCollection res = new CardCollection();
|
CardCollection res = new CardCollection();
|
||||||
for (final SpellAbility ability : targetChosen.getTargetSpells()) {
|
for (final SpellAbility ability : getTargets().getTargetSpells()) {
|
||||||
res.add(ability.getHostCard());
|
res.add(ability.getHostCard());
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
@@ -1872,16 +1872,13 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit
|
|||||||
}
|
}
|
||||||
|
|
||||||
public SpellAbility getSATargetingCard() {
|
public SpellAbility getSATargetingCard() {
|
||||||
return targetChosen.isTargetingAnyCard() ? this : getParentTargetingCard();
|
return getTargets().isTargetingAnyCard() ? this : getParentTargetingCard();
|
||||||
}
|
}
|
||||||
|
|
||||||
public SpellAbility getParentTargetingCard() {
|
public SpellAbility getParentTargetingCard() {
|
||||||
SpellAbility parent = getParent();
|
SpellAbility parent = getParent();
|
||||||
if (parent instanceof WrappedAbility) {
|
|
||||||
parent = ((WrappedAbility) parent).getWrappedAbility();
|
|
||||||
}
|
|
||||||
while (parent != null) {
|
while (parent != null) {
|
||||||
if (parent.targetChosen.isTargetingAnyCard()) {
|
if (parent.getTargets().isTargetingAnyCard()) {
|
||||||
return parent;
|
return parent;
|
||||||
}
|
}
|
||||||
parent = parent.getParent();
|
parent = parent.getParent();
|
||||||
@@ -1890,13 +1887,13 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit
|
|||||||
}
|
}
|
||||||
|
|
||||||
public SpellAbility getSATargetingSA() {
|
public SpellAbility getSATargetingSA() {
|
||||||
return targetChosen.isTargetingAnySpell() ? this : getParentTargetingSA();
|
return getTargets().isTargetingAnySpell() ? this : getParentTargetingSA();
|
||||||
}
|
}
|
||||||
|
|
||||||
public SpellAbility getParentTargetingSA() {
|
public SpellAbility getParentTargetingSA() {
|
||||||
SpellAbility parent = getParent();
|
SpellAbility parent = getParent();
|
||||||
while (parent != null) {
|
while (parent != null) {
|
||||||
if (parent.targetChosen.isTargetingAnySpell())
|
if (parent.getTargets().isTargetingAnySpell())
|
||||||
return parent;
|
return parent;
|
||||||
parent = parent.getParent();
|
parent = parent.getParent();
|
||||||
}
|
}
|
||||||
@@ -1904,7 +1901,7 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit
|
|||||||
}
|
}
|
||||||
|
|
||||||
public SpellAbility getSATargetingPlayer() {
|
public SpellAbility getSATargetingPlayer() {
|
||||||
return targetChosen.isTargetingAnyPlayer() ? this : getParentTargetingPlayer();
|
return getTargets().isTargetingAnyPlayer() ? this : getParentTargetingPlayer();
|
||||||
}
|
}
|
||||||
|
|
||||||
public SpellAbility getParentTargetingPlayer() {
|
public SpellAbility getParentTargetingPlayer() {
|
||||||
@@ -2357,6 +2354,15 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Map<Player, Integer> getLoseLifeMap() {
|
||||||
|
if (loseLifeMap != null) {
|
||||||
|
return loseLifeMap;
|
||||||
|
} else if (getParent() != null) {
|
||||||
|
return getParent().getLoseLifeMap();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public void setDamageMap(final CardDamageMap map) {
|
public void setDamageMap(final CardDamageMap map) {
|
||||||
damageMap = map;
|
damageMap = map;
|
||||||
}
|
}
|
||||||
@@ -2369,6 +2375,9 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit
|
|||||||
public void setChangeZoneTable(final CardZoneTable table) {
|
public void setChangeZoneTable(final CardZoneTable table) {
|
||||||
changeZoneTable = table;
|
changeZoneTable = table;
|
||||||
}
|
}
|
||||||
|
public void setLoseLifeMap(final Map<Player, Integer> map) {
|
||||||
|
loseLifeMap = map;
|
||||||
|
}
|
||||||
|
|
||||||
public SpellAbility getOriginalAbility() {
|
public SpellAbility getOriginalAbility() {
|
||||||
return grantorOriginal;
|
return grantorOriginal;
|
||||||
|
|||||||
@@ -0,0 +1,117 @@
|
|||||||
|
/*
|
||||||
|
* Forge: Play Magic: the Gathering.
|
||||||
|
* Copyright (C) 2011 Forge Team
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* 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/>.
|
||||||
|
*/
|
||||||
|
package forge.game.trigger;
|
||||||
|
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
|
import forge.game.ability.AbilityKey;
|
||||||
|
import forge.game.ability.AbilityUtils;
|
||||||
|
import forge.game.card.Card;
|
||||||
|
import forge.game.player.Player;
|
||||||
|
import forge.game.spellability.SpellAbility;
|
||||||
|
import forge.util.Expressions;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* Trigger_LifeLostAll class.
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* 4/27/2023 - this trigger is written for only Ob Nixilis, Captive Kingpin – any future uses will probably need
|
||||||
|
* additional logic
|
||||||
|
*
|
||||||
|
* @author Forge (Northmoc)
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
public class TriggerLifeLostAll extends Trigger {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* Constructor for Trigger_LifeLost.
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @param params
|
||||||
|
* a {@link java.util.HashMap} object.
|
||||||
|
* @param host
|
||||||
|
* a {@link forge.game.card.Card} object.
|
||||||
|
* @param intrinsic
|
||||||
|
* the intrinsic
|
||||||
|
*/
|
||||||
|
public TriggerLifeLostAll(final Map<String, String> params, final Card host, final boolean intrinsic) {
|
||||||
|
super(params, host, intrinsic);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** {@inheritDoc}
|
||||||
|
* @param runParams*/
|
||||||
|
@Override
|
||||||
|
public final boolean performTest(final Map<AbilityKey, Object> runParams) {
|
||||||
|
final Map<Player, Integer> testMap = filteredMap((Map<Player, Integer>) runParams.get(AbilityKey.Map));
|
||||||
|
if (testMap.isEmpty()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** {@inheritDoc} */
|
||||||
|
@Override
|
||||||
|
public final void setTriggeringObjects(final SpellAbility sa, Map<AbilityKey, Object> runParams) {
|
||||||
|
final Map<Player, Integer> map = (Map<Player, Integer>) runParams.get(AbilityKey.Map);
|
||||||
|
|
||||||
|
sa.setTriggeringObject(AbilityKey.Map, filteredMap(map));
|
||||||
|
sa.setTriggeringObject(AbilityKey.Player, map.keySet());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getImportantStackObjects(SpellAbility sa) {
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
final Map<Player, Integer> map = (Map<Player, Integer>) sa.getTriggeringObject(AbilityKey.Map);
|
||||||
|
int n = 0;
|
||||||
|
for (final Map.Entry<Player, Integer> e : map.entrySet()) {
|
||||||
|
sb.append(e.getKey()).append(": ").append(e.getValue());
|
||||||
|
n++;
|
||||||
|
if (map.size() > n) {
|
||||||
|
sb.append(", ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Map<Player, Integer> filteredMap(Map<Player, Integer> map) {
|
||||||
|
Map<Player, Integer> passMap = Maps.newHashMap();
|
||||||
|
if (hasParam("ValidPlayer")) {
|
||||||
|
for (final Map.Entry<Player, Integer> e : map.entrySet()) {
|
||||||
|
if (matchesValidParam("ValidPlayer", e.getKey())) {
|
||||||
|
passMap.put(e.getKey(), e.getValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (passMap.isEmpty()) {
|
||||||
|
return passMap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (hasParam("ValidAmountEach")) {
|
||||||
|
final String comp = getParam("ValidAmountEach");
|
||||||
|
final int value = AbilityUtils.calculateAmount(getHostCard(), comp.substring(2), this);
|
||||||
|
for (final Map.Entry<Player, Integer> e : passMap.entrySet()) {
|
||||||
|
if (!Expressions.compare(e.getValue(), comp.substring(0, 2), value)) {
|
||||||
|
return Maps.newHashMap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return passMap;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -83,6 +83,7 @@ public enum TriggerType {
|
|||||||
LandPlayed(TriggerLandPlayed.class),
|
LandPlayed(TriggerLandPlayed.class),
|
||||||
LifeGained(TriggerLifeGained.class),
|
LifeGained(TriggerLifeGained.class),
|
||||||
LifeLost(TriggerLifeLost.class),
|
LifeLost(TriggerLifeLost.class),
|
||||||
|
LifeLostAll(TriggerLifeLostAll.class),
|
||||||
LosesGame(TriggerLosesGame.class),
|
LosesGame(TriggerLosesGame.class),
|
||||||
ManaAdded(TriggerManaAdded.class),
|
ManaAdded(TriggerManaAdded.class),
|
||||||
MilledAll(TriggerMilledAll.class),
|
MilledAll(TriggerMilledAll.class),
|
||||||
|
|||||||
@@ -41,4 +41,19 @@ MageTower
|
|||||||
size: 26, 49
|
size: 26, 49
|
||||||
Skep
|
Skep
|
||||||
xy: 110,281
|
xy: 110,281
|
||||||
size: 37, 33
|
size: 37, 33
|
||||||
|
MageTowerBlue
|
||||||
|
xy: 2,327
|
||||||
|
size: 32, 32
|
||||||
|
MageTowerRed
|
||||||
|
xy: 36,328
|
||||||
|
size: 32, 32
|
||||||
|
MageTowerBlack
|
||||||
|
xy: 63,328
|
||||||
|
size: 32, 32
|
||||||
|
MageTowerGreen
|
||||||
|
xy: 92,328
|
||||||
|
size: 32, 32
|
||||||
|
MageTowerWhite
|
||||||
|
xy: 121,328
|
||||||
|
size: 32, 32
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 86 KiB |
@@ -2068,7 +2068,7 @@
|
|||||||
"type": "dungeon",
|
"type": "dungeon",
|
||||||
"count": 3,
|
"count": 3,
|
||||||
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
||||||
"sprite": "MageTower",
|
"sprite": "MageTowerRed",
|
||||||
"map": "../common/maps/map/magetower/magetower_1.tmx",
|
"map": "../common/maps/map/magetower/magetower_1.tmx",
|
||||||
"radiusFactor": 0.8,
|
"radiusFactor": 0.8,
|
||||||
"questTags": [
|
"questTags": [
|
||||||
@@ -2084,7 +2084,7 @@
|
|||||||
"type": "dungeon",
|
"type": "dungeon",
|
||||||
"count": 3,
|
"count": 3,
|
||||||
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
||||||
"sprite": "MageTower",
|
"sprite": "MageTowerBlack",
|
||||||
"map": "../common/maps/map/magetower/magetower_2.tmx",
|
"map": "../common/maps/map/magetower/magetower_2.tmx",
|
||||||
"radiusFactor": 0.8,
|
"radiusFactor": 0.8,
|
||||||
"questTags": [
|
"questTags": [
|
||||||
@@ -2100,7 +2100,7 @@
|
|||||||
"type": "dungeon",
|
"type": "dungeon",
|
||||||
"count": 3,
|
"count": 3,
|
||||||
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
||||||
"sprite": "MageTower",
|
"sprite": "MageTowerRed",
|
||||||
"map": "../common/maps/map/magetower/magetower_3.tmx",
|
"map": "../common/maps/map/magetower/magetower_3.tmx",
|
||||||
"radiusFactor": 0.8,
|
"radiusFactor": 0.8,
|
||||||
"questTags": [
|
"questTags": [
|
||||||
@@ -2116,7 +2116,7 @@
|
|||||||
"type": "dungeon",
|
"type": "dungeon",
|
||||||
"count": 3,
|
"count": 3,
|
||||||
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
||||||
"sprite": "MageTower",
|
"sprite": "MageTowerWhite",
|
||||||
"map": "../common/maps/map/magetower/magetower_4.tmx",
|
"map": "../common/maps/map/magetower/magetower_4.tmx",
|
||||||
"radiusFactor": 0.8,
|
"radiusFactor": 0.8,
|
||||||
"questTags": [
|
"questTags": [
|
||||||
@@ -2132,7 +2132,7 @@
|
|||||||
"type": "dungeon",
|
"type": "dungeon",
|
||||||
"count": 3,
|
"count": 3,
|
||||||
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
||||||
"sprite": "MageTower",
|
"sprite": "MageTowerGreen",
|
||||||
"map": "../common/maps/map/magetower/magetower_5.tmx",
|
"map": "../common/maps/map/magetower/magetower_5.tmx",
|
||||||
"radiusFactor": 0.8,
|
"radiusFactor": 0.8,
|
||||||
"questTags": [
|
"questTags": [
|
||||||
@@ -2148,7 +2148,7 @@
|
|||||||
"type": "dungeon",
|
"type": "dungeon",
|
||||||
"count": 3,
|
"count": 3,
|
||||||
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
||||||
"sprite": "MageTower",
|
"sprite": "MageTowerBlack",
|
||||||
"map": "../common/maps/map/magetower/magetower_6.tmx",
|
"map": "../common/maps/map/magetower/magetower_6.tmx",
|
||||||
"radiusFactor": 0.8,
|
"radiusFactor": 0.8,
|
||||||
"questTags": [
|
"questTags": [
|
||||||
@@ -2163,8 +2163,8 @@
|
|||||||
"name": "MageTowerC8",
|
"name": "MageTowerC8",
|
||||||
"type": "dungeon",
|
"type": "dungeon",
|
||||||
"count": 3,
|
"count": 3,
|
||||||
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
"spriteAtlas": "../common/maps/tileset/buildings.atlas",
|
||||||
"sprite": "MageTower",
|
"sprite": "MageTowerBlue",
|
||||||
"map": "../common/maps/map/magetower/magetower_8.tmx",
|
"map": "../common/maps/map/magetower/magetower_8.tmx",
|
||||||
"radiusFactor": 0.8,
|
"radiusFactor": 0.8,
|
||||||
"questTags": [
|
"questTags": [
|
||||||
@@ -2180,7 +2180,7 @@
|
|||||||
"type": "dungeon",
|
"type": "dungeon",
|
||||||
"count": 1,
|
"count": 1,
|
||||||
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
||||||
"sprite": "MageTower",
|
"sprite": "MageTowerBlue",
|
||||||
"map": "../common/maps/map/magetower/magetower_13.tmx",
|
"map": "../common/maps/map/magetower/magetower_13.tmx",
|
||||||
"radiusFactor": 0.2,
|
"radiusFactor": 0.2,
|
||||||
"questTags": [
|
"questTags": [
|
||||||
@@ -2196,7 +2196,7 @@
|
|||||||
"type": "dungeon",
|
"type": "dungeon",
|
||||||
"count": 3,
|
"count": 3,
|
||||||
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
||||||
"sprite": "MageTower",
|
"sprite": "MageTowerBlue",
|
||||||
"map": "../common/maps/map/magetower/magetower_14.tmx",
|
"map": "../common/maps/map/magetower/magetower_14.tmx",
|
||||||
"radiusFactor": 0.8,
|
"radiusFactor": 0.8,
|
||||||
"questTags": [
|
"questTags": [
|
||||||
@@ -2212,7 +2212,7 @@
|
|||||||
"type": "dungeon",
|
"type": "dungeon",
|
||||||
"count": 2,
|
"count": 2,
|
||||||
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
||||||
"sprite": "MageTower",
|
"sprite": "MageTowerBlue",
|
||||||
"map": "../common/maps/map/magetower/magetower_1.tmx",
|
"map": "../common/maps/map/magetower/magetower_1.tmx",
|
||||||
"radiusFactor": 0.8,
|
"radiusFactor": 0.8,
|
||||||
"questTags": [
|
"questTags": [
|
||||||
@@ -2228,7 +2228,7 @@
|
|||||||
"type": "dungeon",
|
"type": "dungeon",
|
||||||
"count": 2,
|
"count": 2,
|
||||||
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
||||||
"sprite": "MageTower",
|
"sprite": "MageTowerBlack",
|
||||||
"map": "../common/maps/map/magetower/magetower_2.tmx",
|
"map": "../common/maps/map/magetower/magetower_2.tmx",
|
||||||
"radiusFactor": 0.8,
|
"radiusFactor": 0.8,
|
||||||
"questTags": [
|
"questTags": [
|
||||||
@@ -2244,7 +2244,7 @@
|
|||||||
"type": "dungeon",
|
"type": "dungeon",
|
||||||
"count": 2,
|
"count": 2,
|
||||||
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
||||||
"sprite": "MageTower",
|
"sprite": "MageTowerRed",
|
||||||
"map": "../common/maps/map/magetower/magetower_3.tmx",
|
"map": "../common/maps/map/magetower/magetower_3.tmx",
|
||||||
"radiusFactor": 0.8,
|
"radiusFactor": 0.8,
|
||||||
"questTags": [
|
"questTags": [
|
||||||
@@ -2260,7 +2260,7 @@
|
|||||||
"type": "dungeon",
|
"type": "dungeon",
|
||||||
"count": 2,
|
"count": 2,
|
||||||
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
||||||
"sprite": "MageTower",
|
"sprite": "MageTowerWhite",
|
||||||
"map": "../common/maps/map/magetower/magetower_4.tmx",
|
"map": "../common/maps/map/magetower/magetower_4.tmx",
|
||||||
"radiusFactor": 0.8,
|
"radiusFactor": 0.8,
|
||||||
"questTags": [
|
"questTags": [
|
||||||
@@ -2276,7 +2276,7 @@
|
|||||||
"type": "dungeon",
|
"type": "dungeon",
|
||||||
"count": 2,
|
"count": 2,
|
||||||
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
||||||
"sprite": "MageTower",
|
"sprite": "MageTowerGreen",
|
||||||
"map": "../common/maps/map/magetower/magetower_5.tmx",
|
"map": "../common/maps/map/magetower/magetower_5.tmx",
|
||||||
"radiusFactor": 0.8,
|
"radiusFactor": 0.8,
|
||||||
"questTags": [
|
"questTags": [
|
||||||
@@ -2292,7 +2292,7 @@
|
|||||||
"type": "dungeon",
|
"type": "dungeon",
|
||||||
"count": 2,
|
"count": 2,
|
||||||
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
||||||
"sprite": "MageTower",
|
"sprite": "MageTowerBlack",
|
||||||
"map": "../common/maps/map/magetower/magetower_6.tmx",
|
"map": "../common/maps/map/magetower/magetower_6.tmx",
|
||||||
"radiusFactor": 0.8,
|
"radiusFactor": 0.8,
|
||||||
"questTags": [
|
"questTags": [
|
||||||
@@ -2308,7 +2308,7 @@
|
|||||||
"type": "dungeon",
|
"type": "dungeon",
|
||||||
"count": 2,
|
"count": 2,
|
||||||
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
||||||
"sprite": "MageTower",
|
"sprite": "MageTowerBlue",
|
||||||
"map": "../common/maps/map/magetower/magetower_8.tmx",
|
"map": "../common/maps/map/magetower/magetower_8.tmx",
|
||||||
"radiusFactor": 0.8,
|
"radiusFactor": 0.8,
|
||||||
"questTags": [
|
"questTags": [
|
||||||
@@ -2324,7 +2324,7 @@
|
|||||||
"type": "dungeon",
|
"type": "dungeon",
|
||||||
"count": 2,
|
"count": 2,
|
||||||
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
"spriteAtlas": "../common/maps/tileset/buildingsbosses.atlas",
|
||||||
"sprite": "MageTower",
|
"sprite": "MageTowerBlue",
|
||||||
"map": "../common/maps/map/magetower/magetower_14.tmx",
|
"map": "../common/maps/map/magetower/magetower_14.tmx",
|
||||||
"radiusFactor": 0.8,
|
"radiusFactor": 0.8,
|
||||||
"questTags": [
|
"questTags": [
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ Types:Creature Zombie Wizard
|
|||||||
PT:2/2
|
PT:2/2
|
||||||
K:Unearth:5 B R
|
K:Unearth:5 B R
|
||||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals damage to target player equal to the number of nonbasic lands that player controls.
|
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals damage to target player equal to the number of nonbasic lands that player controls.
|
||||||
SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ X | RememberTargets$ True | SubAbility$ DBCleanup
|
SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ X
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
SVar:X:Count$Valid Land.nonBasic+TargetedPlayerCtrl
|
||||||
SVar:X:Count$Valid Land.nonBasic+RememberedPlayerCtrl
|
|
||||||
Oracle:When Anathemancer enters the battlefield, it deals damage to target player equal to the number of nonbasic lands that player controls.\nUnearth {5}{B}{R} ({5}{B}{R}: Return this card from your graveyard to the battlefield. It gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery.)
|
Oracle:When Anathemancer enters the battlefield, it deals damage to target player equal to the number of nonbasic lands that player controls.\nUnearth {5}{B}{R} ({5}{B}{R}: Return this card from your graveyard to the battlefield. It gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery.)
|
||||||
|
|||||||
@@ -5,9 +5,8 @@ PT:2/5
|
|||||||
K:Flying
|
K:Flying
|
||||||
K:Mentor
|
K:Mentor
|
||||||
T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ DBPump | TriggerDescription$ At the beginning of combat on your turn, choose up to one target creature you control. Until end of turn, that creature gets +2/+0, gains trample if it's red, and gains vigilance if it's white.
|
T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ DBPump | TriggerDescription$ At the beginning of combat on your turn, choose up to one target creature you control. Until end of turn, that creature gets +2/+0, gains trample if it's red, and gains vigilance if it's white.
|
||||||
SVar:DBPump:DB$ Pump | ValidTgts$ Creature.YouCtrl | NumAtt$ 2 | RememberTargets$ True | SubAbility$ DBPump1
|
SVar:DBPump:DB$ Pump | ValidTgts$ Creature.YouCtrl | NumAtt$ 2 | SubAbility$ DBPump1
|
||||||
SVar:DBPump1:DB$ Pump | Defined$ Remembered | KW$ Trample | ConditionDefined$ Remembered | ConditionPresent$ Card.Red | SubAbility$ DBPump2
|
SVar:DBPump1:DB$ Pump | Defined$ Targeted | KW$ Trample | ConditionDefined$ Targeted | ConditionPresent$ Card.Red | SubAbility$ DBPump2
|
||||||
SVar:DBPump2:DB$ Pump | Defined$ Remembered | KW$ Vigilance | ConditionDefined$ Remembered | ConditionPresent$ Card.White | SubAbility$ DBCleanup
|
SVar:DBPump2:DB$ Pump | Defined$ Targeted | KW$ Vigilance | ConditionDefined$ Targeted | ConditionPresent$ Card.White
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
|
||||||
DeckHas:Ability$Counters
|
DeckHas:Ability$Counters
|
||||||
Oracle:Flying\nMentor (Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power.)\nAt the beginning of combat on your turn, choose up to one target creature you control. Until end of turn, that creature gets +2/+0, gains trample if it's red, and gains vigilance if it's white.
|
Oracle:Flying\nMentor (Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power.)\nAt the beginning of combat on your turn, choose up to one target creature you control. Until end of turn, that creature gets +2/+0, gains trample if it's red, and gains vigilance if it's white.
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
Name:Echoing Courage
|
Name:Echoing Courage
|
||||||
ManaCost:1 G
|
ManaCost:1 G
|
||||||
Types:Instant
|
Types:Instant
|
||||||
A:SP$ Pump | Cost$ 1 G | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +2 | NumDef$ +2 | SubAbility$ DBPumpAll | RememberTargets$ True | ForgetOtherTargets$ True | SpellDescription$ Target creature and all other creatures with the same name as that creature get +2/+2 until end of turn.
|
A:SP$ Pump | Cost$ 1 G | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +2 | NumDef$ +2 | SubAbility$ DBPumpAll | SpellDescription$ Target creature and all other creatures with the same name as that creature get +2/+2 until end of turn.
|
||||||
SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Remembered.Creature+Other+sameName | NumAtt$ +2 | NumDef$ +2 | SubAbility$ DBCleanup
|
SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Targeted.Creature+Other+sameName | NumAtt$ +2 | NumDef$ +2
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
|
||||||
Oracle:Target creature and all other creatures with the same name as that creature get +2/+2 until end of turn.
|
Oracle:Target creature and all other creatures with the same name as that creature get +2/+2 until end of turn.
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
Name:Echoing Decay
|
Name:Echoing Decay
|
||||||
ManaCost:1 B
|
ManaCost:1 B
|
||||||
Types:Instant
|
Types:Instant
|
||||||
A:SP$ Pump | Cost$ 1 B | ValidTgts$ Creature | TgtPrompt$ Select target creature | RememberTargets$ True | NumAtt$ -2 | NumDef$ -2 | SubAbility$ DBPumpAll | SpellDescription$ Target creature and all other creatures with the same name as that creature get -2/-2 until end of turn.
|
A:SP$ Pump | Cost$ 1 B | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ -2 | NumDef$ -2 | SubAbility$ DBPumpAll | SpellDescription$ Target creature and all other creatures with the same name as that creature get -2/-2 until end of turn.
|
||||||
SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Remembered.sameName+Other | NumAtt$ -2 | NumDef$ -2 | SubAbility$ DBCleanup
|
SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Targeted.sameName+Other | NumAtt$ -2 | NumDef$ -2
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
|
||||||
AI:RemoveDeck:All
|
AI:RemoveDeck:All
|
||||||
Oracle:Target creature and all other creatures with the same name as that creature get -2/-2 until end of turn.
|
Oracle:Target creature and all other creatures with the same name as that creature get -2/-2 until end of turn.
|
||||||
|
|||||||
@@ -2,9 +2,8 @@ Name:Elvish Healer
|
|||||||
ManaCost:2 W
|
ManaCost:2 W
|
||||||
Types:Creature Elf Cleric
|
Types:Creature Elf Cleric
|
||||||
PT:1/2
|
PT:1/2
|
||||||
A:AB$ PreventDamage | Cost$ T | ValidTgts$ Any | Amount$ X | RememberTargets$ True | SubAbility$ DBCleanup | SpellDescription$ Prevent the next 1 damage that would be dealt to any target this turn. If it's a green creature, prevent the next 2 damage instead.
|
A:AB$ PreventDamage | Cost$ T | ValidTgts$ Any | Amount$ X | SpellDescription$ Prevent the next 1 damage that would be dealt to any target this turn. If it's a green creature, prevent the next 2 damage instead.
|
||||||
SVar:X:Remembered$Valid Creature.Green/Plus.1
|
SVar:X:Targeted$Valid Creature.Green/Plus.1
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
|
||||||
AI:RemoveDeck:Random
|
AI:RemoveDeck:Random
|
||||||
DeckHints:Color$Green
|
DeckHints:Color$Green
|
||||||
Oracle:{T}: Prevent the next 1 damage that would be dealt to any target this turn. If it's a green creature, prevent the next 2 damage instead.
|
Oracle:{T}: Prevent the next 1 damage that would be dealt to any target this turn. If it's a green creature, prevent the next 2 damage instead.
|
||||||
|
|||||||
@@ -4,6 +4,6 @@ Types:Sorcery
|
|||||||
A:SP$ Charm | Cost$ 2 B B | Chooser$ Opponent | Choices$ DrawThree,DestroyAndDraw
|
A:SP$ Charm | Cost$ 2 B B | Chooser$ Opponent | Choices$ DrawThree,DestroyAndDraw
|
||||||
SVar:DrawThree:DB$ Draw | NumCards$ 3 | Defined$ You | SpellDescription$ You draw three cards.
|
SVar:DrawThree:DB$ Draw | NumCards$ 3 | Defined$ You | SpellDescription$ You draw three cards.
|
||||||
SVar:DestroyAndDraw:DB$ Destroy | ValidTgts$ Creature.ChosenCtrl | TgtPrompt$ Select target creature | TargetMin$ 0 | TargetMax$ 2 | NoRegen$ True | SpellDescription$ You destroy up to two target creatures that opponent controls and that player draws up to three cards. Those creatures can't be regenerated. | SubAbility$ ChooserDraws
|
SVar:DestroyAndDraw:DB$ Destroy | ValidTgts$ Creature.ChosenCtrl | TgtPrompt$ Select target creature | TargetMin$ 0 | TargetMax$ 2 | NoRegen$ True | SpellDescription$ You destroy up to two target creatures that opponent controls and that player draws up to three cards. Those creatures can't be regenerated. | SubAbility$ ChooserDraws
|
||||||
SVar:ChooserDraws:DB$ Draw | NumCards$ 3 | Defined$ ChosenPlayer
|
SVar:ChooserDraws:DB$ Draw | NumCards$ 3 | Defined$ ChosenPlayer | UpTo$ True
|
||||||
AI:RemoveDeck:All
|
AI:RemoveDeck:All
|
||||||
Oracle:An opponent chooses one —\n• You draw three cards.\n• You destroy up to two target creatures that player controls. They can't be regenerated. That player draws up to three cards.
|
Oracle:An opponent chooses one —\n• You draw three cards.\n• You destroy up to two target creatures that player controls. They can't be regenerated. That player draws up to three cards.
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ ManaCost:R
|
|||||||
Types:Creature Devil
|
Types:Creature Devil
|
||||||
PT:1/1
|
PT:1/1
|
||||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 1 damage to target creature and 1 damage to you.
|
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 1 damage to target creature and 1 damage to you.
|
||||||
SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 1 | SubAbility$ DBDamageYou
|
SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 1 | DamageMap$ True | SubAbility$ DBDamageYou
|
||||||
SVar:DBDamageYou:DB$ DealDamage | Defined$ You | NumDmg$ 1
|
SVar:DBDamageYou:DB$ DealDamage | Defined$ You | NumDmg$ 1 | SubAbility$ DBDamageResolve
|
||||||
|
SVar:DBDamageResolve:DB$ DamageResolve
|
||||||
Oracle:When Forge Devil enters the battlefield, it deals 1 damage to target creature and 1 damage to you.
|
Oracle:When Forge Devil enters the battlefield, it deals 1 damage to target creature and 1 damage to you.
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ Types:Creature Zombie Horror
|
|||||||
PT:3/3
|
PT:3/3
|
||||||
K:Flying
|
K:Flying
|
||||||
S:Mode$ Continuous | Affected$ Zombie.YouCtrl+Other | AddKeyword$ Flying | Description$ Other Zombies you control have flying.
|
S:Mode$ Continuous | Affected$ Zombie.YouCtrl+Other | AddKeyword$ Flying | Description$ Other Zombies you control have flying.
|
||||||
T:Mode$ DamageAll | ValidSource$ Creature.Zombie+YouCtrl | ValidTarget$ Player.Opponent | CombatDamage$ True | TriggerZones$ Battlefield | Execute$ TrigDraw | OptionalDecider$ You | TriggerDescription$ Whenever one or more Zombies you control deal combat damage to one or more of your opponents, you may draw cards equal to the number of opponents dealt damage this way. If you do, discard that many cards.
|
T:Mode$ DamageAll | ValidSource$ Creature.Zombie+YouCtrl | ValidTarget$ Opponent | CombatDamage$ True | TriggerZones$ Battlefield | Execute$ TrigDraw | OptionalDecider$ You | TriggerDescription$ Whenever one or more Zombies you control deal combat damage to one or more of your opponents, you may draw cards equal to the number of opponents dealt damage this way. If you do, discard that many cards.
|
||||||
SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ X | RememberDrawn$ True | SubAbility$ DBDiscard
|
SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ X | RememberDrawn$ True | SubAbility$ DBDiscard
|
||||||
SVar:DBDiscard:DB$ Discard | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GEX | Defined$ You | Mode$ TgtChoose | NumCards$ X | SubAbility$ DBCleanup
|
SVar:DBDiscard:DB$ Discard | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GEX | Defined$ You | Mode$ TgtChoose | NumCards$ X | SubAbility$ DBCleanup
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||||
|
|||||||
@@ -2,8 +2,7 @@ Name:Ill-Gotten Gains
|
|||||||
ManaCost:2 B B
|
ManaCost:2 B B
|
||||||
Types:Sorcery
|
Types:Sorcery
|
||||||
A:SP$ Discard | Cost$ 2 B B | Mode$ Hand | Defined$ Player | SubAbility$ DBExile | SpellDescription$ Exile CARDNAME. Each player discards their hand, then returns up to three cards from their graveyard to their hand.
|
A:SP$ Discard | Cost$ 2 B B | Mode$ Hand | Defined$ Player | SubAbility$ DBExile | SpellDescription$ Exile CARDNAME. Each player discards their hand, then returns up to three cards from their graveyard to their hand.
|
||||||
SVar:DBExile:DB$ ChangeZone | Origin$ Stack | Destination$ Exile | SubAbility$ DBChangeZoneChoose
|
SVar:DBExile:DB$ ChangeZone | Origin$ Stack | Destination$ Exile | SubAbility$ DBChangeZone
|
||||||
SVar:DBChangeZoneChoose:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBChangeZone
|
SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ChangeNum$ 3 | ChangeType$ Card | DefinedPlayer$ Player | Hidden$ True
|
||||||
SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ChangeNum$ 3 | ChangeType$ Card | DefinedPlayer$ Remembered | Hidden$ True
|
|
||||||
AI:RemoveDeck:All
|
AI:RemoveDeck:All
|
||||||
Oracle:Exile Ill-Gotten Gains. Each player discards their hand, then returns up to three cards from their graveyard to their hand.
|
Oracle:Exile Ill-Gotten Gains. Each player discards their hand, then returns up to three cards from their graveyard to their hand.
|
||||||
|
|||||||
@@ -3,10 +3,6 @@ ManaCost:3 B
|
|||||||
Types:Creature Horror
|
Types:Creature Horror
|
||||||
PT:2/4
|
PT:2/4
|
||||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ Devour Intellect — When CARDNAME enters the battlefield, each opponent exiles a card from their hand until CARDNAME leaves the battlefield.
|
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ Devour Intellect — When CARDNAME enters the battlefield, each opponent exiles a card from their hand until CARDNAME leaves the battlefield.
|
||||||
SVar:TrigExile:DB$ ChangeZone | Origin$ Hand | Destination$ Exile | ChangeType$ Card | DefinedPlayer$ Opponent | Mandatory$ True | ChangeType$ Card | Hidden$ True | Duration$ UntilHostLeavesPlay | IsCurse$ True | RememberChanged$ True
|
SVar:TrigExile:DB$ ChangeZone | Origin$ Hand | Destination$ Exile | ChangeType$ Card | DefinedPlayer$ Opponent | Mandatory$ True | ChangeType$ Card | Hidden$ True | Duration$ UntilHostLeavesPlay | IsCurse$ True
|
||||||
S:Mode$ Continuous | MayPlay$ True | MayPlayIgnoreColor$ True | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ Body Thief — You may play lands and cast spells from among cards exiled with CARDNAME. If you cast a spell this way, you may spend mana as though it were mana of any color to cast it.
|
S:Mode$ Continuous | MayPlay$ True | MayPlayIgnoreColor$ True | Affected$ Card.ExiledWithSource | AffectedZone$ Exile | Description$ Body Thief — You may play lands and cast spells from among cards exiled with CARDNAME. If you cast a spell this way, you may spend mana as though it were mana of any color to cast it.
|
||||||
T:Mode$ ChangesZone | Origin$ Exile | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBForget
|
|
||||||
SVar:DBForget:DB$ Pump | ForgetObjects$ TriggeredCard
|
|
||||||
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Static$ True | ValidCard$ Card.Self | Execute$ DBCleanup
|
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
|
||||||
Oracle:Devour Intellect — When Intellect Devourer enters the battlefield, each opponent exiles a card from their hand until Intellect Devourer leaves the battlefield.\nBody Thief — You may play lands and cast spells from among cards exiled with Intellect Devourer. If you cast a spell this way, you may spend mana as though it were mana of any color to cast it.
|
Oracle:Devour Intellect — When Intellect Devourer enters the battlefield, each opponent exiles a card from their hand until Intellect Devourer leaves the battlefield.\nBody Thief — You may play lands and cast spells from among cards exiled with Intellect Devourer. If you cast a spell this way, you may spend mana as though it were mana of any color to cast it.
|
||||||
|
|||||||
@@ -3,15 +3,11 @@ ManaCost:3 U R G
|
|||||||
Types:Legendary Creature Dragon
|
Types:Legendary Creature Dragon
|
||||||
PT:6/6
|
PT:6/6
|
||||||
K:Flying
|
K:Flying
|
||||||
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | OptionalDecider$ You | Execute$ TrigExile | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may pay {2}{U}. If you do, exile the top card of your library face down. You may look at that card for as long as it remains exiled. You may play that card without paying its mana cost for as long as CARDNAME remains on the battlefield.
|
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | OptionalDecider$ You | Execute$ TrigExile | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may pay {2}{U}. If you do, exile the top card of your library face down. You may look at that card for as long as it remains exiled. You may play that card without paying its mana cost for as long as NICKNAME remains on the battlefield.
|
||||||
SVar:TrigExile:AB$ ChangeZone | Cost$ 2 U | Defined$ TopOfLibrary | Origin$ Library | Destination$ Exile | ExileFaceDown$ True | RememberChanged$ True | SubAbility$ DBEffect
|
SVar:TrigExile:AB$ ChangeZone | Cost$ 2 U | Defined$ TopOfLibrary | Origin$ Library | Destination$ Exile | ExileFaceDown$ True | RememberChanged$ True | SubAbility$ DBEffect
|
||||||
SVar:DBEffect:DB$ Effect | RememberObjects$ Remembered | StaticAbilities$ STMayLookAt | Triggers$ LeavesExile | Duration$ Permanent | SubAbility$ DBEffect2
|
SVar:DBEffect:DB$ Effect | RememberObjects$ Remembered | StaticAbilities$ STMayLookAt | ForgetOnMoved$ Exile | Duration$ Permanent | SubAbility$ DBEffect2
|
||||||
SVar:STMayLookAt:Mode$ Continuous | EffectZone$ Command | Affected$ Card.IsRemembered | MayLookAt$ You | AffectedZone$ Exile | Description$ You may look at that card for as long as it remains exiled.
|
SVar:STMayLookAt:Mode$ Continuous | EffectZone$ Command | Affected$ Card.IsRemembered | MayLookAt$ You | AffectedZone$ Exile | Description$ You may look at that card for as long as it remains exiled.
|
||||||
SVar:LeavesExile:Mode$ ChangesZone | TriggerZones$ Command | Origin$ Exile | Destination$ Any | ValidCard$ Card.IsRemembered | Static$ True | Execute$ ExileSelf
|
SVar:DBEffect2:DB$ Effect | Name$ Intet, the Dreamer Effect | StaticAbilities$ STMayPlay | ForgetOnMoved$ Exile | RememberObjects$ Remembered | Duration$ UntilHostLeavesPlay | SubAbility$ DBCleanup
|
||||||
SVar:ExileSelf:DB$ ChangeZone | Origin$ Command | Destination$ Exile
|
|
||||||
SVar:DBEffect2:DB$ Effect | Name$ Intet, the Dreamer Effect | StaticAbilities$ STMayPlay | Triggers$ PlayedExiled,ExiledLandPlayed | RememberObjects$ Remembered | Duration$ UntilHostLeavesPlay | SubAbility$ DBCleanup
|
|
||||||
SVar:STMayPlay:Mode$ Continuous | EffectZone$ Command | Affected$ Card.IsRemembered | MayPlay$ True | MayPlayWithoutManaCost$ True | AffectedZone$ Exile | Description$ You may play that card without paying its mana cost for as long as Intet remains on the battlefield.
|
SVar:STMayPlay:Mode$ Continuous | EffectZone$ Command | Affected$ Card.IsRemembered | MayPlay$ True | MayPlayWithoutManaCost$ True | AffectedZone$ Exile | Description$ You may play that card without paying its mana cost for as long as Intet remains on the battlefield.
|
||||||
SVar:PlayedExiled:Mode$ SpellCast | TriggerZones$ Command | ValidCard$ Card.IsRemembered | Static$ True | Execute$ ExileSelf
|
|
||||||
SVar:ExiledLandPlayed:Mode$ LandPlayed | TriggerZones$ Command | ValidCard$ Card.IsRemembered | Static$ True | Execute$ ExileSelf
|
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||||
Oracle:Flying\nWhenever Intet, the Dreamer deals combat damage to a player, you may pay {2}{U}. If you do, exile the top card of your library face down. You may look at that card for as long as it remains exiled. You may play that card without paying its mana cost for as long as Intet remains on the battlefield.
|
Oracle:Flying\nWhenever Intet, the Dreamer deals combat damage to a player, you may pay {2}{U}. If you do, exile the top card of your library face down. You may look at that card for as long as it remains exiled. You may play that card without paying its mana cost for as long as Intet remains on the battlefield.
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
Name:Intimidation Bolt
|
Name:Intimidation Bolt
|
||||||
ManaCost:1 R W
|
ManaCost:1 R W
|
||||||
Types:Instant
|
Types:Instant
|
||||||
A:SP$ DealDamage | Cost$ 1 R W | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 3 | RememberTargets$ True | SubAbility$ DBPumpAll | SpellDescription$ CARDNAME deals 3 damage to target creature. Other creatures can't attack this turn.
|
A:SP$ DealDamage | Cost$ 1 R W | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 3 | SubAbility$ DBPumpAll | SpellDescription$ CARDNAME deals 3 damage to target creature. Other creatures can't attack this turn.
|
||||||
SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Remembered.Creature+Other | KW$ HIDDEN CARDNAME can't attack. | SubAbility$ DBCleanup
|
SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Targeted.Creature+Other | KW$ HIDDEN CARDNAME can't attack.
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
|
||||||
AI:RemoveDeck:All
|
AI:RemoveDeck:All
|
||||||
Oracle:Intimidation Bolt deals 3 damage to target creature. Other creatures can't attack this turn.
|
Oracle:Intimidation Bolt deals 3 damage to target creature. Other creatures can't attack this turn.
|
||||||
|
|||||||
@@ -1,8 +1,14 @@
|
|||||||
Name:Killing Wave
|
Name:Killing Wave
|
||||||
ManaCost:X B
|
ManaCost:X B
|
||||||
Types:Sorcery
|
Types:Sorcery
|
||||||
A:SP$ RepeatEach | Cost$ X B | RepeatCards$ Creature | Zone$ Battlefield | RepeatSubAbility$ DBSacUnless | SpellDescription$ For each creature, its controller sacrifices it unless they pay X life.
|
A:SP$ RepeatEach | Cost$ X B | RepeatPlayers$ Player | RepeatSubAbility$ DBChooseKeep | SubAbility$ DBRepeatPay | SpellDescription$ For each creature, its controller sacrifices it unless they pay X life.
|
||||||
SVar:DBSacUnless:DB$ Sacrifice | Defined$ Player | SacValid$ Remembered.Self | UnlessCost$ PayLife<X> | UnlessPayer$ RememberedController | Random$ True | StackDescription$ Sacrifice {c:Remembered}
|
SVar:DBChooseKeep:DB$ ChooseCard | Defined$ Remembered | Choices$ Creature.RememberedPlayerCtrl | MinAmount$ 0 | Amount$ Count$Valid Creature.RememberedPlayerCtrl | RememberChosen$ True
|
||||||
|
SVar:DBRepeatPay:DB$ RepeatEach | RepeatPlayers$ Player | LoseLifeMap$ True | RepeatSubAbility$ DBPay | SubAbility$ DBSacAll
|
||||||
|
SVar:DBPay:DB$ Pump | ForgetObjects$ Valid Creature.RememberedPlayerCtrl | UnlessCost$ PayLife<Y> | UnlessPayer$ Remembered
|
||||||
|
SVar:DBSacAll:DB$ SacrificeAll | ValidCards$ Creature.IsNotRemembered | SubAbility$ DBCleanup
|
||||||
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||||
SVar:X:Count$xPaid
|
SVar:X:Count$xPaid
|
||||||
|
SVar:Y:SVar$X/Times.Z
|
||||||
|
SVar:Z:Count$Valid Creature.RememberedPlayerCtrl+IsRemembered
|
||||||
AI:RemoveDeck:All
|
AI:RemoveDeck:All
|
||||||
Oracle:For each creature, its controller sacrifices it unless they pay X life.
|
Oracle:For each creature, its controller sacrifices it unless they pay X life.
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ ManaCost:4 R
|
|||||||
Types:Creature Viashino Shaman
|
Types:Creature Viashino Shaman
|
||||||
PT:2/2
|
PT:2/2
|
||||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigReveal | TriggerDescription$ When CARDNAME enters the battlefield, target opponent reveals their hand. You may cast an instant or sorcery spell from among those cards without paying its mana cost.
|
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigReveal | TriggerDescription$ When CARDNAME enters the battlefield, target opponent reveals their hand. You may cast an instant or sorcery spell from among those cards without paying its mana cost.
|
||||||
SVar:TrigReveal:DB$ RevealHand | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | RememberTargets$ True | SubAbility$ TrigPlay
|
SVar:TrigReveal:DB$ RevealHand | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | SubAbility$ TrigPlay
|
||||||
SVar:TrigPlay:DB$ Play | Valid$ Card.RememberedPlayerCtrl | ValidSA$ Instant,Sorcery | ValidZone$ Hand | WithoutManaCost$ True | Optional$ True | SubAbility$ DBCleanup
|
SVar:TrigPlay:DB$ Play | Valid$ Card.TargetedPlayerCtrl | ValidSA$ Instant,Sorcery | ValidZone$ Hand | WithoutManaCost$ True | Optional$ True
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
|
||||||
Oracle:When Mindclaw Shaman enters the battlefield, target opponent reveals their hand. You may cast an instant or sorcery spell from among those cards without paying its mana cost.
|
Oracle:When Mindclaw Shaman enters the battlefield, target opponent reveals their hand. You may cast an instant or sorcery spell from among those cards without paying its mana cost.
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ ManaCost:B
|
|||||||
Types:Creature Human Rogue
|
Types:Creature Human Rogue
|
||||||
PT:1/1
|
PT:1/1
|
||||||
T:Mode$ Taps | ValidCard$ Card.Self | Execute$ TrigDrain | TriggerDescription$ Whenever CARDNAME becomes tapped, each opponent loses 1 life and you gain 1 life.
|
T:Mode$ Taps | ValidCard$ Card.Self | Execute$ TrigDrain | TriggerDescription$ Whenever CARDNAME becomes tapped, each opponent loses 1 life and you gain 1 life.
|
||||||
SVar:TrigDrain:DB$ LoseLife | Defined$ Player.Opponent | LifeAmount$ 1 | SubAbility$ DBGainLife
|
SVar:TrigDrain:DB$ LoseLife | Defined$ Opponent | LifeAmount$ 1 | SubAbility$ DBGainLife
|
||||||
SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 1
|
SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 1
|
||||||
DeckHas:Ability$LifeGain
|
DeckHas:Ability$LifeGain
|
||||||
Oracle:Whenever Night Market Lookout becomes tapped, each opponent loses 1 life and you gain 1 life.
|
Oracle:Whenever Night Market Lookout becomes tapped, each opponent loses 1 life and you gain 1 life.
|
||||||
|
|||||||
@@ -4,10 +4,6 @@ Types:Creature Specter
|
|||||||
PT:2/3
|
PT:2/3
|
||||||
K:Flying
|
K:Flying
|
||||||
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigExile | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, that player exiles the top card of their library.
|
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigExile | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, that player exiles the top card of their library.
|
||||||
SVar:TrigExile:DB$ Dig | Defined$ TriggeredTarget | DigNum$ 1 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True
|
SVar:TrigExile:DB$ Dig | Defined$ TriggeredTarget | DigNum$ 1 | ChangeNum$ All | DestinationZone$ Exile
|
||||||
S:Mode$ Continuous | MayPlay$ True | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ You may play lands and cast spells from among cards exiled with CARDNAME.
|
S:Mode$ Continuous | MayPlay$ True | Affected$ Card.ExiledWithSource | AffectedZone$ Exile | Description$ You may play lands and cast spells from among cards exiled with CARDNAME.
|
||||||
T:Mode$ ChangesZone | Origin$ Exile | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBForget
|
|
||||||
SVar:DBForget:DB$ Pump | ForgetObjects$ TriggeredCard
|
|
||||||
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Static$ True | ValidCard$ Card.Self | Execute$ DBCleanup
|
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
|
||||||
Oracle:Flying\nWhenever Nightveil Specter deals combat damage to a player, that player exiles the top card of their library.\nYou may play lands and cast spells from among cards exiled with Nightveil Specter.
|
Oracle:Flying\nWhenever Nightveil Specter deals combat damage to a player, that player exiles the top card of their library.\nYou may play lands and cast spells from among cards exiled with Nightveil Specter.
|
||||||
|
|||||||
@@ -5,8 +5,7 @@ Loyalty:X
|
|||||||
SVar:X:Count$xPaid
|
SVar:X:Count$xPaid
|
||||||
A:AB$ Scry | Cost$ AddCounter<2/LOYALTY> | Planeswalker$ True | ScryNum$ 2 | SpellDescription$ Scry 2.
|
A:AB$ Scry | Cost$ AddCounter<2/LOYALTY> | Planeswalker$ True | ScryNum$ 2 | SpellDescription$ Scry 2.
|
||||||
A:AB$ Dig | Cost$ AddCounter<0/LOYALTY> | Planeswalker$ True | DigNum$ 1 | ChangeNum$ 1 | Optional$ True | ChangeValid$ Land,Creature.cmcLEY | ForceRevealToController$ True | PromptToSkipOptionalAbility$ True | AILogic$ AlwaysConfirm | OptionalAbilityPrompt$ Would you like to put the permanent onto the battlefield? | DestinationZone$ Battlefield | LibraryPosition2$ 0 | SpellDescription$ Look at the top card of your library. If it's a land card or a creature card with mana value less than or equal to the number of loyalty counters on Nissa, Steward of Elements, you may put that card onto the battlefield.
|
A:AB$ Dig | Cost$ AddCounter<0/LOYALTY> | Planeswalker$ True | DigNum$ 1 | ChangeNum$ 1 | Optional$ True | ChangeValid$ Land,Creature.cmcLEY | ForceRevealToController$ True | PromptToSkipOptionalAbility$ True | AILogic$ AlwaysConfirm | OptionalAbilityPrompt$ Would you like to put the permanent onto the battlefield? | DestinationZone$ Battlefield | LibraryPosition2$ 0 | SpellDescription$ Look at the top card of your library. If it's a land card or a creature card with mana value less than or equal to the number of loyalty counters on Nissa, Steward of Elements, you may put that card onto the battlefield.
|
||||||
A:AB$ Untap | Cost$ SubCounter<6/LOYALTY> | Planeswalker$ True | Ultimate$ True | ValidTgts$ Land.YouCtrl | TargetMin$ 0 | TargetMax$ 2 | RememberTargets$ True | SubAbility$ Animate | SpellDescription$ Untap up to two target lands you control. They become 5/5 Elemental creatures with flying and haste until end of turn. They're still lands.
|
A:AB$ Untap | Cost$ SubCounter<6/LOYALTY> | Planeswalker$ True | Ultimate$ True | ValidTgts$ Land.YouCtrl | TargetMin$ 0 | TargetMax$ 2 | SubAbility$ Animate | SpellDescription$ Untap up to two target lands you control. They become 5/5 Elemental creatures with flying and haste until end of turn. They're still lands.
|
||||||
SVar:Animate:DB$ Animate | Defined$ Remembered | Power$ 5 | Toughness$ 5 | Types$ Creature,Elemental | Keywords$ Flying & Haste | SubAbility$ DBCleanup
|
SVar:Animate:DB$ Animate | Defined$ Targeted | Power$ 5 | Toughness$ 5 | Types$ Creature,Elemental | Keywords$ Flying & Haste
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
|
||||||
SVar:Y:Count$CardCounters.LOYALTY
|
SVar:Y:Count$CardCounters.LOYALTY
|
||||||
Oracle:[+2]: Scry 2.\n[0]: Look at the top card of your library. If it's a land card or a creature card with mana value less than or equal to the number of loyalty counters on Nissa, Steward of Elements, you may put that card onto the battlefield.\n[-6]: Untap up to two target lands you control. They become 5/5 Elemental creatures with flying and haste until end of turn. They're still lands.
|
Oracle:[+2]: Scry 2.\n[0]: Look at the top card of your library. If it's a land card or a creature card with mana value less than or equal to the number of loyalty counters on Nissa, Steward of Elements, you may put that card onto the battlefield.\n[-6]: Untap up to two target lands you control. They become 5/5 Elemental creatures with flying and haste until end of turn. They're still lands.
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ Types:Legendary Creature Elf Scout
|
|||||||
PT:2/2
|
PT:2/2
|
||||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChange | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, you may search your library for a basic Forest card, reveal it, put it into your hand, then shuffle.
|
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChange | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, you may search your library for a basic Forest card, reveal it, put it into your hand, then shuffle.
|
||||||
SVar:TrigChange:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Forest.Basic | ChangeNum$ 1 | ShuffleNonMandatory$ True
|
SVar:TrigChange:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Forest.Basic | ChangeNum$ 1 | ShuffleNonMandatory$ True
|
||||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Land.YouCtrl | TriggerZones$ Battlefield | IsPresent$ Land.YouCtrl | PresentCompare$ GE7 | Execute$ TrigExile | TriggerDescription$ Whenever a land enters the battlefield under your control, if you control seven or more lands, exile CARDNAME, then return her to the battlefield transformed under her owner's control.
|
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Land.YouCtrl | TriggerZones$ Battlefield | IsPresent$ Land.YouCtrl | PresentCompare$ GE7 | Execute$ TrigExile | TriggerDescription$ Whenever a land enters the battlefield under your control, if you control seven or more lands, exile NICKNAME, then return her to the battlefield transformed under her owner's control.
|
||||||
SVar:TrigExile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DBReturn
|
SVar:TrigExile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DBReturn
|
||||||
SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | ForgetOtherRemembered$ True | SubAbility$ DBCleanup
|
SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | ForgetOtherRemembered$ True | SubAbility$ DBCleanup
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||||
@@ -20,7 +20,6 @@ Types:Legendary Planeswalker Nissa
|
|||||||
Loyalty:3
|
Loyalty:3
|
||||||
A:AB$ Dig | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | DigNum$ 1 | Reveal$ True | ChangeNum$ All | ChangeValid$ Land | DestinationZone$ Battlefield | DestinationZone2$ Hand | SpellDescription$ Reveal the top card of your library. If it's a land card, put it onto the battlefield. Otherwise, put it into your hand.
|
A:AB$ Dig | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | DigNum$ 1 | Reveal$ True | ChangeNum$ All | ChangeValid$ Land | DestinationZone$ Battlefield | DestinationZone2$ Hand | SpellDescription$ Reveal the top card of your library. If it's a land card, put it onto the battlefield. Otherwise, put it into your hand.
|
||||||
A:AB$ Token | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | TokenAmount$ 1 | TokenScript$ ashaya_the_awoken_world | TokenOwner$ You | SpellDescription$ Create Ashaya, the Awoken World, a legendary 4/4 green Elemental creature token.
|
A:AB$ Token | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | TokenAmount$ 1 | TokenScript$ ashaya_the_awoken_world | TokenOwner$ You | SpellDescription$ Create Ashaya, the Awoken World, a legendary 4/4 green Elemental creature token.
|
||||||
A:AB$ Untap | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | ValidTgts$ Land | TgtPrompt$ Choose target land | TargetMin$ 0 | TargetMax$ 6 | RememberTargets$ True | SubAbility$ DBAnimate | SpellDescription$ Untap up to six target lands. They become 6/6 Elemental creatures. They're still lands.
|
A:AB$ Untap | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | ValidTgts$ Land | TgtPrompt$ Choose target land | TargetMin$ 0 | TargetMax$ 6 | SubAbility$ DBAnimate | SpellDescription$ Untap up to six target lands. They become 6/6 Elemental creatures. They're still lands.
|
||||||
SVar:DBAnimate:DB$ Animate | Defined$ Remembered | Power$ 6 | Toughness$ 6 | Types$ Creature,Elemental | Duration$ Permanent | SubAbility$ DBCleanup
|
SVar:DBAnimate:DB$ Animate | Defined$ Targeted | Power$ 6 | Toughness$ 6 | Types$ Creature,Elemental | Duration$ Permanent
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
|
||||||
Oracle:[+1]: Reveal the top card of your library. If it's a land card, put it onto the battlefield. Otherwise, put it into your hand.\n[-2]: Create Ashaya, the Awoken World, a legendary 4/4 green Elemental creature token.\n[-7]: Untap up to six target lands. They become 6/6 Elemental creatures. They're still lands.
|
Oracle:[+1]: Reveal the top card of your library. If it's a land card, put it onto the battlefield. Otherwise, put it into your hand.\n[-2]: Create Ashaya, the Awoken World, a legendary 4/4 green Elemental creature token.\n[-7]: Untap up to six target lands. They become 6/6 Elemental creatures. They're still lands.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
Name:Reverse the Sands
|
Name:Reverse the Sands
|
||||||
ManaCost:6 W W
|
ManaCost:6 W W
|
||||||
Types:Sorcery
|
Types:Sorcery
|
||||||
A:SP$ SetLife | Cost$ 6 W W | Defined$ Player | Redistribute$ True | SpellDescription$ Redistribute any number of players' life totals. (Each of those players gets one life total back.)
|
A:SP$ SetLife | PlayerChoices$ Player | ChoiceAmount$ Any | ChoicePrompt$ Choose any number of players | Redistribute$ True | SpellDescription$ Redistribute any number of players' life totals. (Each of those players gets one life total back.)
|
||||||
AI:RemoveDeck:All
|
AI:RemoveDeck:All
|
||||||
Oracle:Redistribute any number of players' life totals. (Each of those players gets one life total back.)
|
Oracle:Redistribute any number of players' life totals. (Each of those players gets one life total back.)
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ SVar:DBExile:DB$ Dig | Defined$ ChosenPlayer | DigNum$ 1 | DestinationZone$ Exil
|
|||||||
SVar:DBEffect:DB$ Effect | StaticAbilities$ STPlay | Triggers$ TriggerCastDoM | ForgetOnMoved$ Exile | ForgetOnCast$ False | RememberObjects$ Remembered | SubAbility$ DBCleanup
|
SVar:DBEffect:DB$ Effect | StaticAbilities$ STPlay | Triggers$ TriggerCastDoM | ForgetOnMoved$ Exile | ForgetOnCast$ False | RememberObjects$ Remembered | SubAbility$ DBCleanup
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearChosenPlayer$ True | ClearRemembered$ True
|
SVar:DBCleanup:DB$ Cleanup | ClearChosenPlayer$ True | ClearRemembered$ True
|
||||||
SVar:STPlay:Mode$ Continuous | MayPlay$ True | MayPlayIgnoreColor$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ Until end of turn, you may play that card and you may spend mana as though it were mana of any color to cast it.
|
SVar:STPlay:Mode$ Continuous | MayPlay$ True | MayPlayIgnoreColor$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ Until end of turn, you may play that card and you may spend mana as though it were mana of any color to cast it.
|
||||||
SVar:TriggerCastDoM:Mode$ SpellCast | ValidCard$ Card.IsRemembered | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigLoseLife | OneOff$ True | Secondary$ True | TriggerDescription$ When you cast a spell this way, its owner loses life equal to its mana value.
|
SVar:TriggerCastDoM:Mode$ SpellCast | ValidCard$ Card.IsRemembered | ValidSA$ Spell.MayPlaySource | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigLoseLife | OneOff$ True | Secondary$ True | TriggerDescription$ When you cast a spell this way, its owner loses life equal to its mana value.
|
||||||
SVar:TrigLoseLife:DB$ LoseLife | Defined$ TriggeredCardOwner | LifeAmount$ X
|
SVar:TrigLoseLife:DB$ LoseLife | Defined$ TriggeredCardOwner | LifeAmount$ X
|
||||||
SVar:X:TriggeredStackInstance$CardManaCostLKI
|
SVar:X:TriggeredStackInstance$CardManaCostLKI
|
||||||
Oracle:At the beginning of your upkeep, choose an opponent at random. Exile the top card of that player's library. Until end of turn, you may play that card and you may spend mana as though it were mana of any color to cast it. When you cast a spell this way, its owner loses life equal to its mana value.
|
Oracle:At the beginning of your upkeep, choose an opponent at random. Exile the top card of that player's library. Until end of turn, you may play that card and you may spend mana as though it were mana of any color to cast it. When you cast a spell this way, its owner loses life equal to its mana value.
|
||||||
|
|||||||
@@ -2,12 +2,8 @@ Name:Theater of Horrors
|
|||||||
ManaCost:1 B R
|
ManaCost:1 B R
|
||||||
Types:Enchantment
|
Types:Enchantment
|
||||||
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigExile | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your upkeep, exile the top card of your library.
|
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigExile | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your upkeep, exile the top card of your library.
|
||||||
SVar:TrigExile:DB$ Dig | Defined$ You | DestinationZone$ Exile | DigNum$ 1 | ChangeNum$ All | RememberChanged$ True
|
SVar:TrigExile:DB$ Dig | Defined$ You | DestinationZone$ Exile | DigNum$ 1 | ChangeNum$ All
|
||||||
S:Mode$ Continuous | Affected$ Card.IsRemembered | AffectedZone$ Exile | MayPlay$ True | Condition$ PlayerTurn | CheckSVar$ X | Description$ During your turn, if an opponent lost life this turn, you may play lands and cast spells from among cards exiled with CARDNAME.
|
S:Mode$ Continuous | Affected$ Card.ExiledWithSource | AffectedZone$ Exile | MayPlay$ True | Condition$ PlayerTurn | CheckSVar$ X | Description$ During your turn, if an opponent lost life this turn, you may play lands and cast spells from among cards exiled with CARDNAME.
|
||||||
SVar:X:Count$LifeOppsLostThisTurn
|
SVar:X:Count$LifeOppsLostThisTurn
|
||||||
T:Mode$ ChangesZone | Origin$ Exile | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBForget
|
|
||||||
SVar:DBForget:DB$ Pump | ForgetObjects$ TriggeredCard
|
|
||||||
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Static$ True | ValidCard$ Card.Self | Execute$ DBCleanup
|
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
|
||||||
A:AB$ DealDamage | Cost$ 3 R | ValidTgts$ Opponent,Planeswalker | TgtPrompt$ Select target opponent or planeswalker | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target opponent or planeswalker.
|
A:AB$ DealDamage | Cost$ 3 R | ValidTgts$ Opponent,Planeswalker | TgtPrompt$ Select target opponent or planeswalker | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target opponent or planeswalker.
|
||||||
Oracle:At the beginning of your upkeep, exile the top card of your library.\nDuring your turn, if an opponent lost life this turn, you may play lands and cast spells from among cards exiled with Theater of Horrors.\n{3}{R}: Theater of Horrors deals 1 damage to target opponent or planeswalker.
|
Oracle:At the beginning of your upkeep, exile the top card of your library.\nDuring your turn, if an opponent lost life this turn, you may play lands and cast spells from among cards exiled with Theater of Horrors.\n{3}{R}: Theater of Horrors deals 1 damage to target opponent or planeswalker.
|
||||||
|
|||||||
@@ -3,5 +3,5 @@ ManaCost:3 B
|
|||||||
Types:Creature Plant
|
Types:Creature Plant
|
||||||
PT:0/13
|
PT:0/13
|
||||||
K:Defender
|
K:Defender
|
||||||
A:AB$ ExchangeLifeVariant | Cost$ T | ConditionPresent$ Creature.StrictlySelf | ValidTgts$ Opponent | Mode$ Toughness | SpellDescription$ Exchange target opponent's life total with CARDNAME's toughness. | StackDescription$ SpellDescription
|
A:AB$ ExchangeLifeVariant | Cost$ T | ConditionPresent$ Creature.StrictlySelf | ValidTgts$ Opponent | Mode$ Toughness | SpellDescription$ Exchange target opponent's life total with CARDNAME's toughness. | StackDescription$ REP target opponent_{p:Targeted}
|
||||||
Oracle:Defender\n{T}: Exchange target opponent's life total with Tree of Perdition's toughness.
|
Oracle:Defender\n{T}: Exchange target opponent's life total with Tree of Perdition's toughness.
|
||||||
|
|||||||
@@ -5,10 +5,10 @@ T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.S
|
|||||||
SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls | NumDmg$ 2 | SubAbility$ ChompEquip
|
SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls | NumDmg$ 2 | SubAbility$ ChompEquip
|
||||||
SVar:ChompEquip:DB$ DestroyAll | ValidCards$ Targeted.Equipment+Attached
|
SVar:ChompEquip:DB$ DestroyAll | ValidCards$ Targeted.Equipment+Attached
|
||||||
A:AB$ Dig | Cost$ 2 R | DigNum$ 1 | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect | SpellDescription$ Exile the top card of your library. You may play that card this turn. When you play a card this way, CARDNAME deals 2 damage to each player.
|
A:AB$ Dig | Cost$ 2 R | DigNum$ 1 | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect | SpellDescription$ Exile the top card of your library. You may play that card this turn. When you play a card this way, CARDNAME deals 2 damage to each player.
|
||||||
SVar:DBEffect:DB$ Effect | StaticAbilities$ STPlay | Triggers$ TriggerCastDoM,TriggerLandPlayed | ForgetOnMoved$ Exile | ForgetOnCast$ False | RememberObjects$ Remembered | SubAbility$ DBCleanup
|
SVar:DBEffect:DB$ Effect | StaticAbilities$ STPlay | Triggers$ TriggerCastDoM,TriggerLandPlayed | RememberObjects$ Remembered | SubAbility$ DBCleanup
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||||
SVar:STPlay:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ You may play that card this turn. When you play a card this way, CARDNAME deals 2 damage to each player.
|
SVar:STPlay:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ You may play that card this turn. When you play a card this way, CARDNAME deals 2 damage to each player.
|
||||||
SVar:TriggerCastDoM:Mode$ SpellCast | ValidCard$ Card.IsRemembered | OneOff$ True | ValidActivatingPlayer$ You | Execute$ TrigDealDamage | TriggerDescription$ When you play a card this way, CARDNAME deals 2 damage to each player.
|
SVar:TriggerCastDoM:Mode$ SpellCast | ValidCard$ Card.IsRemembered | ValidSA$ Spell.MayPlaySource | OneOff$ True | ValidActivatingPlayer$ You | Execute$ TrigDealDamage | TriggerDescription$ When you play a card this way, CARDNAME deals 2 damage to each player.
|
||||||
SVar:TriggerLandPlayed:Mode$ LandPlayed | ValidCard$ Land.IsRemembered | OneOff$ True | Execute$ TrigDealDamage | Secondary$ True | TriggerDescription$ When you play a card this way, CARDNAME deals 2 damage to each player.
|
SVar:TriggerLandPlayed:Mode$ LandPlayed | ValidCard$ Land.IsRemembered | OneOff$ True | Execute$ TrigDealDamage | Secondary$ True | TriggerDescription$ When you play a card this way, CARDNAME deals 2 damage to each player.
|
||||||
SVar:TrigDealDamage:DB$ DealDamage | Defined$ Player | NumDmg$ 2
|
SVar:TrigDealDamage:DB$ DealDamage | Defined$ Player | NumDmg$ 2
|
||||||
Oracle:When Fires of Mount Doom enters the battlefield, it deals 2 damage to target creature an opponent controls. Destroy all Equipment attached to that creature.\n{2}{R}: Exile the top card of your library. You may play that card this turn. When you play a card this way, Fires of Mount Doom deals 2 damage to each player.
|
Oracle:When Fires of Mount Doom enters the battlefield, it deals 2 damage to target creature an opponent controls. Destroy all Equipment attached to that creature.\n{2}{R}: Exile the top card of your library. You may play that card this turn. When you play a card this way, Fires of Mount Doom deals 2 damage to each player.
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
Name:Ob Nixilis, Captive Kingpin
|
||||||
|
ManaCost:2 B R
|
||||||
|
Types:Legendary Creature Demon
|
||||||
|
PT:4/3
|
||||||
|
KFlying
|
||||||
|
K:Trample
|
||||||
|
T:Mode$ LifeLostAll | ValidPlayer$ Opponent | ValidAmountEach$ EQ1 | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever one or more opponents each lose exactly 1 life, put a +1/+1 counter on CARDNAME. Exile the top card of your library. Until your next end step, you may play that card.
|
||||||
|
SVar:TrigPutCounter:DB$ PutCounter | CounterType$ P1P1 | SubAbility$ DBExileTop
|
||||||
|
SVar:DBExileTop:DB$ Dig | DigNum$ 1 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect
|
||||||
|
SVar:DBEffect:DB$ Effect | StaticAbilities$ STPlay | RememberObjects$ Remembered | Duration$ UntilYourNextEndStep | SubAbility$ DBCleanup | ForgetOnMoved$ Exile
|
||||||
|
SVar:STPlay:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ Until your next end step, you may play that card.
|
||||||
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||||
|
DeckHas:Ability$Counters
|
||||||
|
Oracle:Flying, trample\nWhenever one or more opponents each lose exactly 1 life, put a +1/+1 counter on Ob Nixilis, Captive Kingpin. Exile the top card of your library. Until your next end step, you may play that card.
|
||||||
@@ -4,10 +4,9 @@ Types:Enchantment Saga
|
|||||||
K:Saga:3:DBDestroy,DBChangeZone,DBPump
|
K:Saga:3:DBDestroy,DBChangeZone,DBPump
|
||||||
SVar:DBDestroy:DB$ Destroy | ValidTgts$ Land | TgtPrompt$ Choose target land. | SpellDescription$ Destroy target land.
|
SVar:DBDestroy:DB$ Destroy | ValidTgts$ Land | TgtPrompt$ Choose target land. | SpellDescription$ Destroy target land.
|
||||||
SVar:DBChangeZone:DB$ ChangeZone | ValidTgts$ Land | TgtPrompt$ Choose target land card. | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | SpellDescription$ Put target land card from a graveyard onto the battlefield under your control.
|
SVar:DBChangeZone:DB$ ChangeZone | ValidTgts$ Land | TgtPrompt$ Choose target land card. | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | SpellDescription$ Put target land card from a graveyard onto the battlefield under your control.
|
||||||
SVar:DBPump:DB$ Pump | ValidTgts$ Player.Opponent | RememberTargets$ True | IsCurse$ True | TgtPrompt$ Choose target player. | SubAbility$ DBToken | SpellDescription$ Choose target player. If they control fewer lands than you, create a number of 4/4 green Troll Warrior creature tokens with trample equal to the difference.
|
SVar:DBPump:DB$ Pump | ValidTgts$ Opponent | IsCurse$ True | SubAbility$ DBToken | SpellDescription$ Choose target player. If they control fewer lands than you, create a number of 4/4 green Troll Warrior creature tokens with trample equal to the difference.
|
||||||
SVar:DBToken:DB$ Token | TokenAmount$ X | TokenScript$ g_4_4_troll_warrior_trample | TokenOwner$ You | SubAbility$ DBCleanup
|
SVar:DBToken:DB$ Token | TokenAmount$ X | TokenScript$ g_4_4_troll_warrior_trample | TokenOwner$ You
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
|
||||||
SVar:X:Count$Valid Land.YouCtrl/Minus.Y
|
SVar:X:Count$Valid Land.YouCtrl/Minus.Y
|
||||||
SVar:Y:Count$Valid Land.RememberedPlayerCtrl
|
SVar:Y:Count$Valid Land.TargetedPlayerCtrl
|
||||||
DeckHas:Ability$Token
|
DeckHas:Ability$Token
|
||||||
Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI — Destroy target land.\nII — Put target land card from a graveyard onto the battlefield under your control.\nIII — Choose target opponent. If they control fewer lands than you, create a number of 4/4 green Troll Warrior creature tokens with trample equal to the difference.
|
Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI — Destroy target land.\nII — Put target land card from a graveyard onto the battlefield under your control.\nIII — Choose target opponent. If they control fewer lands than you, create a number of 4/4 green Troll Warrior creature tokens with trample equal to the difference.
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
Name:Winnow
|
Name:Winnow
|
||||||
ManaCost:1 W
|
ManaCost:1 W
|
||||||
Types:Instant
|
Types:Instant
|
||||||
A:SP$ Destroy | Cost$ 1 W | ValidTgts$ Permanent.nonLand | RememberTargets$ True | ConditionCheckSVar$ WinnowCheck | ConditionSVarCompare$ GE2 | SubAbility$ DBDraw | SpellDescription$ Destroy target nonland permanent if another permanent with the same name is on the battlefield. Draw a card.
|
A:SP$ Destroy | Cost$ 1 W | ValidTgts$ Permanent.nonLand | ConditionCheckSVar$ WinnowCheck | ConditionSVarCompare$ GE2 | SubAbility$ DBDraw | SpellDescription$ Destroy target nonland permanent if another permanent with the same name is on the battlefield. Draw a card.
|
||||||
SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 1 | SubAbility$ DBCleanup
|
SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 1
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
SVar:WinnowCheck:Count$Valid Permanent.sharesNameWith Targeted
|
||||||
SVar:WinnowCheck:Count$Valid Permanent.sharesNameWith Remembered
|
|
||||||
AI:RemoveDeck:All
|
AI:RemoveDeck:All
|
||||||
AI:RemoveDeck:Random
|
AI:RemoveDeck:Random
|
||||||
Oracle:Destroy target nonland permanent if another permanent with the same name is on the battlefield.\nDraw a card.
|
Oracle:Destroy target nonland permanent if another permanent with the same name is on the battlefield.\nDraw a card.
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ PT:3/3
|
|||||||
K:Flying
|
K:Flying
|
||||||
K:Haste
|
K:Haste
|
||||||
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigEggCounter | TriggerDescription$ Whenever CARDNAME attacks, put an egg counter on another target creature without an egg counter on it. When that creature dies, if it has an egg counter on it, draw a card and create a 1/1 black Insect creature token with flying.
|
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigEggCounter | TriggerDescription$ Whenever CARDNAME attacks, put an egg counter on another target creature without an egg counter on it. When that creature dies, if it has an egg counter on it, draw a card and create a 1/1 black Insect creature token with flying.
|
||||||
SVar:TrigEggCounter:DB$ PutCounter | CounterType$ EGG | CounterNum$ 1 | ValidTgts$ Creature.Other+counters_EQ0_EGG | RememberTargets$ True | TgtPrompt$ Put an egg counter on another target creature without an egg counter on it. | SubAbility$ DelayedTrigger
|
SVar:TrigEggCounter:DB$ PutCounter | CounterType$ EGG | CounterNum$ 1 | ValidTgts$ Creature.Other+counters_EQ0_EGG | TgtPrompt$ Put an egg counter on another target creature without an egg counter on it. | SubAbility$ DelayedTrigger
|
||||||
SVar:DelayedTrigger:DB$ DelayedTrigger | Mode$ ChangesZone | RememberObjects$ Targeted | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.IsTriggerRemembered+counters_GE1_EGG | Execute$ TrigDraw | TriggerDescription$ When this creature dies, if it has an egg counter on it, draw a card and create a 1/1 black Insect creature token with flying.
|
SVar:DelayedTrigger:DB$ DelayedTrigger | Mode$ ChangesZone | RememberObjects$ Targeted | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.IsTriggerRemembered+counters_GE1_EGG | Execute$ TrigDraw | TriggerDescription$ When this creature dies, if it has an egg counter on it, draw a card and create a 1/1 black Insect creature token with flying.
|
||||||
SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 | SubAbility$ DBToken
|
SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 | SubAbility$ DBToken
|
||||||
SVar:DBToken:DB$ Token | TokenScript$ b_1_1_insect_flying
|
SVar:DBToken:DB$ Token | TokenScript$ b_1_1_insect_flying
|
||||||
|
|||||||
@@ -9,100 +9,191 @@ ScryfallCode=CMM
|
|||||||
1 S The Prismatic Piper @Seb McKinnon
|
1 S The Prismatic Piper @Seb McKinnon
|
||||||
2 M Kozilek, the Great Distortion @Aleksi Briclot
|
2 M Kozilek, the Great Distortion @Aleksi Briclot
|
||||||
3 M Morophon, the Boundless @Victor Adame Minguez
|
3 M Morophon, the Boundless @Victor Adame Minguez
|
||||||
|
5 M Ulamog, the Ceaseless Hunger @Michael Komarck
|
||||||
6 C Ulamog's Crusher @Todd Lockwood
|
6 C Ulamog's Crusher @Todd Lockwood
|
||||||
10 R Alms Collector @Bram Sels
|
10 R Alms Collector @Bram Sels
|
||||||
11 R Anafenza, Kin-Tree Spirit @Ryan Yee
|
11 U Anafenza, Kin-Tree Spirit @Ryan Yee
|
||||||
13 R Angelic Field Marshal @Scott Murphy
|
13 R Angelic Field Marshal @Scott Murphy
|
||||||
|
14 M Avacyn, Angel of Hope @Jason Chan
|
||||||
16 R Balan, Wandering Knight @Svetlin Velinov
|
16 R Balan, Wandering Knight @Svetlin Velinov
|
||||||
17 U Battle Screech @Anastasia Ovchinnikova
|
17 C Battle Screech @Anastasia Ovchinnikova
|
||||||
18 U Cartographer's Hawk @Donato Giancola
|
18 U Cartographer's Hawk @Donato Giancola
|
||||||
|
21 U Darksteel Mutation @Daniel Ljunggren
|
||||||
22 U Elite Scaleguard @Steve Prescott
|
22 U Elite Scaleguard @Steve Prescott
|
||||||
|
24 R Flawless Maneuver @Zoltan Boros
|
||||||
27 R Grand Abolisher @Eric Deschamps
|
27 R Grand Abolisher @Eric Deschamps
|
||||||
|
28 R Heavenly Blademaster @Zack Stella
|
||||||
|
29 M Heliod, Sun-Crowned @Lius Lasahido
|
||||||
|
32 R Jazal Goldmane @Aaron Miller
|
||||||
|
34 U Kemba, Kha Regent @Ernanda Souza
|
||||||
35 U Kirtar's Wrath @Kev Walker
|
35 U Kirtar's Wrath @Kev Walker
|
||||||
37 M Land Tax @Chuck Lukacs
|
37 M Land Tax @Chuck Lukacs
|
||||||
|
39 M Loyal Retainers @Kieran Yanner
|
||||||
|
42 R Mangara, the Diplomat @Howard Lyon
|
||||||
|
45 R Nahiri, the Lithomancer @Eric Deschamps
|
||||||
50 U Pianna, Nomad Captain @D. Alexander Gregory
|
50 U Pianna, Nomad Captain @D. Alexander Gregory
|
||||||
51 R Puresteel Paladin @Jason Chan
|
51 R Puresteel Paladin @Jason Chan
|
||||||
|
53 R Righteous Confluence @Kieran Yanner
|
||||||
|
54 R Sephara, Sky's Blade @Livia Prima
|
||||||
|
55 R Sevinne's Reclamation @Zoltan Boros
|
||||||
|
56 C Shelter @Alayna Danner
|
||||||
|
57 M Smothering Tithe @Mark Behm
|
||||||
|
59 R Steelshaper's Gift @Greg Hildebrandt
|
||||||
60 R Sublime Exhalation @Lake Hurwitz
|
60 R Sublime Exhalation @Lake Hurwitz
|
||||||
|
68 R Wakening Sun's Avatar @Tyler Jacobson
|
||||||
|
71 R Zetalpa, Primal Dawn @Chris Rallis
|
||||||
73 R Aminatou's Augury @Seb McKinnon
|
73 R Aminatou's Augury @Seb McKinnon
|
||||||
74 R Azami, Lady of Scrolls @Ittoku
|
74 R Azami, Lady of Scrolls @Ittoku
|
||||||
75 R Braids, Conjurer Adept @Zoltan Boros & Gabor Szikszai
|
76 R Braids, Conjurer Adept @Zoltan Boros & Gabor Szikszai
|
||||||
79 R Capture of Jingzhou @Jack Wei
|
77 M Bribery @Kai Carpenter
|
||||||
|
79 M Capture of Jingzhou @Jack Wei
|
||||||
|
80 R Commandeer @John Matson
|
||||||
84 R Cyclonic Rift @Chris Rahn
|
84 R Cyclonic Rift @Chris Rahn
|
||||||
|
85 R Day's Undoing @Jonas De Ro
|
||||||
89 R Evacuation @Franz Vohwinkel
|
89 R Evacuation @Franz Vohwinkel
|
||||||
92 R Faerie Artisans @Tony Foti
|
92 R Faerie Artisans @Tony Foti
|
||||||
|
94 R Fierce Guardianship @Randy Vargas
|
||||||
|
103 R Lorthos, the Tidemaker @Kekai Kotaki
|
||||||
105 R Minds Aglow @Yeong-Hao Han
|
105 R Minds Aglow @Yeong-Hao Han
|
||||||
108 R Mystic Confluence @Kieran Yanner
|
108 R Mystic Confluence @Kieran Yanner
|
||||||
110 R Personal Tutor @Julie Dillon
|
110 R Personal Tutor @Julie Dillon
|
||||||
|
113 U Reality Shift @Howard Lyon
|
||||||
118 R Sai, Master Thopterist @Adam Paquette
|
118 R Sai, Master Thopterist @Adam Paquette
|
||||||
120 M Spellseeker @Igor Kieryluk
|
120 M Spellseeker @Igor Kieryluk
|
||||||
122 R Stormsurge Kraken @Svetlin Velinov
|
122 R Stormsurge Kraken @Svetlin Velinov
|
||||||
|
123 M Sun Quan, Lord of Wu @Xu Xiaoming
|
||||||
125 R Teferi, Temporal Archmage @Tyler Jacobson
|
125 R Teferi, Temporal Archmage @Tyler Jacobson
|
||||||
128 R Torrential Gearhulk @Svetlin Velinov
|
128 R Torrential Gearhulk @Svetlin Velinov
|
||||||
130 M Urza, Lord High Artificer @Grzegorz Rutkowski
|
130 M Urza, Lord High Artificer @Grzegorz Rutkowski
|
||||||
134 C Windrider Wizard @Slawomir Maniak
|
134 C Windrider Wizard @Slawomir Maniak
|
||||||
137 M Archfiend of Despair @Josh Hass
|
137 M Archfiend of Despair @Josh Hass
|
||||||
|
139 R Bloodchief Ascension @Adi Granov
|
||||||
144 R Chainer, Dementia Master @Mark Zug
|
144 R Chainer, Dementia Master @Mark Zug
|
||||||
146 R Curtains' Call @James Ryman
|
146 R Curtains' Call @James Ryman
|
||||||
|
147 R Deadly Rollick @Izzy
|
||||||
|
148 R Decree of Pain @Carl Critchlow
|
||||||
|
150 M Demonic Tutor @Zack Stella
|
||||||
|
151 R Demonlord Belzenlok @Tyler Jacobson
|
||||||
|
155 R Endrek Sahr, Master Breeder @Lucas Graciano
|
||||||
|
156 U Exsanguinate @Marie Magny
|
||||||
157 U Extinguish All Hope @Aaron J. Riley
|
157 U Extinguish All Hope @Aaron J. Riley
|
||||||
161 R Ghoulcaller Gisa @Karla Ortiz
|
161 R Ghoulcaller Gisa @Karla Ortiz
|
||||||
|
165 M Grave Pact @Billy Christian
|
||||||
|
167 R Imp's Mischief @Thomas M. Baxa
|
||||||
169 R Kindred Dominance @Bram Sels
|
169 R Kindred Dominance @Bram Sels
|
||||||
176 M Ob Nixilis of the Black Oath @Daarken
|
173 M Mikaeus, the Unhallowed @Chris Rahn
|
||||||
|
176 R Ob Nixilis of the Black Oath @Daarken
|
||||||
|
177 R Ogre Slumlord @Trevor Claxton
|
||||||
|
180 R Rankle, Master of Pranks @Dmitry Burmak
|
||||||
|
181 M Razaketh, the Foulblooded @Chris Rallis
|
||||||
|
184 R Rune-Scarred Demon @Michael Komarck
|
||||||
|
187 R Sower of Discord @Wisnu Tan
|
||||||
191 R Toxic Deluge @Svetlin Velinov
|
191 R Toxic Deluge @Svetlin Velinov
|
||||||
|
193 M Twilight Prophet @Seb McKinnon
|
||||||
|
196 R Vindictive Lich @Toma Feizo Gas
|
||||||
197 R Wake the Dead @Christopher Moeller
|
197 R Wake the Dead @Christopher Moeller
|
||||||
200 R Wretched Confluence @Kieran Yanner
|
200 R Wretched Confluence @Kieran Yanner
|
||||||
202 U Yargle, Glutton of Urborg @Jehan Choo
|
202 U Yargle, Glutton of Urborg @Jehan Choo
|
||||||
205 R Ashling the Pilgrim @Wayne Reynolds
|
205 R Ashling the Pilgrim @Wayne Reynolds
|
||||||
|
206 R Avatar of Slaughter @Jason A. Engle
|
||||||
|
207 M Balefire Dragon @Eric Deschamps
|
||||||
208 C Blood Aspirant @Tyler Walpole
|
208 C Blood Aspirant @Tyler Walpole
|
||||||
213 R Daretti, Scrap Savant @Dan Scott
|
213 R Daretti, Scrap Savant @Dan Scott
|
||||||
|
214 R Deflecting Swat @Izzy
|
||||||
218 R Drakuseth, Maw of Flames @Grzegorz Rutkowski
|
218 R Drakuseth, Maw of Flames @Grzegorz Rutkowski
|
||||||
222 R Fiery Confluence @Kieran Yanner
|
222 R Fiery Confluence @Kieran Yanner
|
||||||
|
227 R Godo, Bandit Warlord @Paolo Parente
|
||||||
|
228 R Grenzo, Havoc Raiser @Svetlin Velinov
|
||||||
231 R Heartless Hidetsugu @Carl Critchlow
|
231 R Heartless Hidetsugu @Carl Critchlow
|
||||||
232 R Hellkite Charger @Jaime Jones
|
232 R Hellkite Charger @Jaime Jones
|
||||||
236 M Insurrection @Mark Zug
|
236 M Insurrection @Mark Zug
|
||||||
238 R Krenko, Mob Boss @Karl Kopinski
|
238 R Krenko, Mob Boss @Karl Kopinski
|
||||||
241 R Magus of the Wheel @Carl Frank
|
241 R Magus of the Wheel @Carl Frank
|
||||||
|
244 M Neheb, the Eternal @Chris Rahn
|
||||||
245 R Nesting Dragon @Jehan Choo
|
245 R Nesting Dragon @Jehan Choo
|
||||||
259 M Star of Extinction @Chris Rahn
|
246 M Purphoros, God of the Forge @Eric Deschamps
|
||||||
|
247 U Rakka Mar @Jason Chan
|
||||||
|
252 M Savage Beating @Matt Thompson
|
||||||
|
253 R Scourge of the Throne @Michael Komarck
|
||||||
|
259 R Star of Extinction @Chris Rahn
|
||||||
|
260 U Storm-Kiln Artist @Manuel Castañón
|
||||||
|
263 R Tempt with Vengeance @Ryan Barger
|
||||||
265 R Treasure Nabber @Alex Konstad
|
265 R Treasure Nabber @Alex Konstad
|
||||||
267 U Vandalblast @Seb McKinnon
|
267 U Vandalblast @Seb McKinnon
|
||||||
|
272 R Arachnogenesis @Johannes Voss
|
||||||
274 R Azusa, Lost but Seeking @Winona Nelson
|
274 R Azusa, Lost but Seeking @Winona Nelson
|
||||||
|
276 R Bloodspore Thrinax @Ralph Horsley
|
||||||
|
280 M Craterhoof Behemoth @Chris Rahn
|
||||||
|
283 M Doubling Season @Chuck Lukacs
|
||||||
289 M Finale of Devastation @Bayard Wu
|
289 M Finale of Devastation @Bayard Wu
|
||||||
|
290 R Freyalise, Llanowar's Fury @Adam Paquette
|
||||||
|
292 R Ghalta, Primal Hunger @Chase Stone
|
||||||
294 M The Great Henge @Adam Paquette
|
294 M The Great Henge @Adam Paquette
|
||||||
295 R Heroic Intervention @James Ryman
|
295 R Heroic Intervention @James Ryman
|
||||||
297 C Ilysian Caryatid @Winona Nelson
|
297 C Ilysian Caryatid @Winona Nelson
|
||||||
299 R Jolrael, Mwonvuli Recluse @Izzy
|
299 R Jolrael, Mwonvuli Recluse @Izzy
|
||||||
|
300 C Kodama's Reach @John Avon
|
||||||
303 R Lifeblood Hydra @Alex Horley-Orlandelli
|
303 R Lifeblood Hydra @Alex Horley-Orlandelli
|
||||||
308 R Obscuring Haze @Campbell White
|
308 R Obscuring Haze @Campbell White
|
||||||
309 R Ohran Frostfang @Torstein Nordstrand
|
309 R Ohran Frostfang @Torstein Nordstrand
|
||||||
310 M Omnath, Locus of Mana @Mike Bierek
|
310 M Omnath, Locus of Mana @Mike Bierek
|
||||||
316 R Regal Behemoth @Jakub Kasper
|
316 R Regal Behemoth @Jakub Kasper
|
||||||
317 R Rishkar, Peema Renegade @Todd Lockwood
|
317 U Rishkar, Peema Renegade @Todd Lockwood
|
||||||
|
319 R Sakiko, Mother of Summer @Livia Prima
|
||||||
320 M Selvala, Heart of the Wilds @Tyler Jacobson
|
320 M Selvala, Heart of the Wilds @Tyler Jacobson
|
||||||
321 C Skyshroud Claim @Anna Steinbauer
|
321 C Skyshroud Claim @Anna Steinbauer
|
||||||
|
324 R Song of the Dryads @Lars Grant-West
|
||||||
|
325 R Stonehoof Chieftain @Camille Alquier
|
||||||
|
327 R Tooth and Nail @Greg Hildebrandt
|
||||||
|
329 R Verdant Confluence @Kieran Yanner
|
||||||
331 R Wayward Swordtooth @Chris Rahn
|
331 R Wayward Swordtooth @Chris Rahn
|
||||||
334 R Yisan, the Wanderer Bard @Chase Stone
|
334 R Yisan, the Wanderer Bard @Chase Stone
|
||||||
|
337 R Experiment Kraj @Mark Tedin
|
||||||
|
338 R Gisela, Blade of Goldnight @Jason Chan
|
||||||
|
339 U Hamza, Guardian of Arashin @Wisnu Tan
|
||||||
|
340 R Hanna, Ship's Navigator @Chris Rallis
|
||||||
342 R Karador, Ghost Chieftain @Todd Lockwood
|
342 R Karador, Ghost Chieftain @Todd Lockwood
|
||||||
|
343 R Kykar, Wind's Fury @G-host Lee
|
||||||
344 R Maelstrom Wanderer @Victor Adame Minguez
|
344 R Maelstrom Wanderer @Victor Adame Minguez
|
||||||
348 M Mizzix of the Izmagnus @Cliff Childs
|
347 R Mirri, Weatherlight Duelist @Magali Villeneuve
|
||||||
|
348 R Mizzix of the Izmagnus @Cliff Childs
|
||||||
|
349 R Nekusar, the Mindrazer @Mark Winters
|
||||||
350 R Queen Marchesa @Kieran Yanner
|
350 R Queen Marchesa @Kieran Yanner
|
||||||
|
353 M The Scarab God @Lius Lasahido
|
||||||
|
354 R Sek'Kuar, Deathkeeper @Jesper Ejsing
|
||||||
|
355 R Sidisi, Brood Tyrant @Karl Kopinski
|
||||||
361 M The Ur-Dragon @Jaime Jones
|
361 M The Ur-Dragon @Jaime Jones
|
||||||
367 C Arcane Signet @Dan Scott
|
362 R Xantcha, Sleeper Agent @Mark Winters
|
||||||
|
363 R Yennett, Cryptic Sovereign @Chris Rahn
|
||||||
|
364 R Yuriko, the Tiger's Shadow @Yongjae Choi
|
||||||
|
365 R Zacama, Primal Calamity @Jaime Jones
|
||||||
|
366 R Zilortha, Strength Incarnate @Chase Stone
|
||||||
|
367 U Arcane Signet @Dan Scott
|
||||||
|
368 U Ashnod's Altar @Greg Staples
|
||||||
371 R Boompile @Filip Burburan
|
371 R Boompile @Filip Burburan
|
||||||
372 C Brass Knuckles @Yeong-Hao Han
|
372 C Brass Knuckles @Yeong-Hao Han
|
||||||
375 R Champion's Helm @Alan Pollack
|
375 R Champion's Helm @Alan Pollack
|
||||||
|
376 R Chromatic Lantern @Jung Park
|
||||||
379 R Emerald Medallion @Daniel Ljunggren
|
379 R Emerald Medallion @Daniel Ljunggren
|
||||||
|
381 M Extraplanar Lens @Lars Grant-West
|
||||||
382 U Fellwar Stone @John Avon
|
382 U Fellwar Stone @John Avon
|
||||||
|
387 R Gilded Lotus @Volkan Baǵa
|
||||||
388 R Hammer of Nazahn @Victor Adame Minguez
|
388 R Hammer of Nazahn @Victor Adame Minguez
|
||||||
|
392 R Idol of Oblivion @Piotr Dura
|
||||||
393 M The Immortal Sun @Kieran Yanner
|
393 M The Immortal Sun @Kieran Yanner
|
||||||
|
394 R Inspiring Statuary @Kirsten Zirngibl
|
||||||
395 R Jet Medallion @Daniel Ljunggren
|
395 R Jet Medallion @Daniel Ljunggren
|
||||||
396 M Jeweled Lotus @Alayna Danner
|
396 M Jeweled Lotus @Alayna Danner
|
||||||
401 R Pearl Medallion @Daniel Ljunggren
|
401 R Pearl Medallion @Daniel Ljunggren
|
||||||
405 R Ruby Medallion @Daniel Ljunggren
|
405 R Ruby Medallion @Daniel Ljunggren
|
||||||
407 R Sapphire Medallion @Daniel Ljunggren
|
407 R Sapphire Medallion @Daniel Ljunggren
|
||||||
|
408 R Scytheclaw @James Paick
|
||||||
410 U Sol Ring @Mike Bierek
|
410 U Sol Ring @Mike Bierek
|
||||||
|
413 R Sword of the Animist @Daniel Ljunggren
|
||||||
415 U Thran Dynamo @Ron Spears
|
415 U Thran Dynamo @Ron Spears
|
||||||
420 C Command Tower @Ryan Yee
|
420 C Command Tower @Ryan Yee
|
||||||
423 C Path of Ancestry @Alayna Danner
|
423 C Path of Ancestry @Alayna Danner
|
||||||
|
425 U Reliquary Tower @Jesper Ejsing
|
||||||
426 U Rogue's Passage @Christine Choi
|
426 U Rogue's Passage @Christine Choi
|
||||||
429 C Thriving Bluff @Johannes Voss
|
429 C Thriving Bluff @Johannes Voss
|
||||||
430 C Thriving Grove @Ravenna Tran
|
430 C Thriving Grove @Ravenna Tran
|
||||||
@@ -125,99 +216,207 @@ ScryfallCode=CMM
|
|||||||
450 L Forest @Rebecca Guay
|
450 L Forest @Rebecca Guay
|
||||||
451 L Forest @Mark Poole
|
451 L Forest @Mark Poole
|
||||||
452 M Kozilek, the Great Distortion @Aleksi Briclot
|
452 M Kozilek, the Great Distortion @Aleksi Briclot
|
||||||
|
453 M Morophon, the Boundless @Victor Adame Minguez
|
||||||
|
454 M Ulamog, the Ceaseless Hunger @Michael Komarck
|
||||||
455 R Alms Collector @Bram Sels
|
455 R Alms Collector @Bram Sels
|
||||||
456 R Angelic Field Marshal @Scott Murphy
|
456 R Angelic Field Marshal @Scott Murphy
|
||||||
|
457 M Avacyn, Angel of Hope @Jason Chan
|
||||||
458 R Balan, Wandering Knight @Svetlin Velinov
|
458 R Balan, Wandering Knight @Svetlin Velinov
|
||||||
|
459 R Flawless Maneuver @Zoltan Boros
|
||||||
460 R Grand Abolisher @Eric Deschamps
|
460 R Grand Abolisher @Eric Deschamps
|
||||||
|
461 R Heavenly Blademaster @Zack Stella
|
||||||
462 M Heliod, Sun-Crowned @Lius Lasahido
|
462 M Heliod, Sun-Crowned @Lius Lasahido
|
||||||
|
463 R Jazal Goldmane @Aaron Miller
|
||||||
464 M Land Tax @Chuck Lukacs
|
464 M Land Tax @Chuck Lukacs
|
||||||
|
465 M Loyal Retainers @Kieran Yanner
|
||||||
|
466 R Mangara, the Diplomat @Howard Lyon
|
||||||
|
467 R Nahiri, the Lithomancer @Eric Deschamps
|
||||||
|
468 R Odric, Master Tactician @Michael Komarck
|
||||||
469 R Puresteel Paladin @Jason Chan
|
469 R Puresteel Paladin @Jason Chan
|
||||||
|
470 R Righteous Confluence @Kieran Yanner
|
||||||
|
471 R Sephara, Sky's Blade @Livia Prima
|
||||||
|
472 R Sevinne's Reclamation @Zoltan Boros
|
||||||
|
473 M Smothering Tithe @Mark Behm
|
||||||
475 R Sublime Exhalation @Lake Hurwitz
|
475 R Sublime Exhalation @Lake Hurwitz
|
||||||
|
476 R Wakening Sun's Avatar @Tyler Jacobson
|
||||||
|
478 R Zetalpa, Primal Dawn @Chris Rallis
|
||||||
479 R Aminatou's Augury @Seb McKinnon
|
479 R Aminatou's Augury @Seb McKinnon
|
||||||
|
480 R Azami, Lady of Scrolls @Ittoku
|
||||||
481 R Braids, Conjurer Adept @Zoltan Boros & Gabor Szikszai
|
481 R Braids, Conjurer Adept @Zoltan Boros & Gabor Szikszai
|
||||||
483 R Capture of Jingzhou @Jack Wei
|
482 M Bribery @Kai Carpenter
|
||||||
|
483 M Capture of Jingzhou @Jack Wei
|
||||||
|
484 R Commandeer @John Matson
|
||||||
|
485 R Cyclonic Rift @Chris Rahn
|
||||||
|
487 R Evacuation @Franz Vohwinkel
|
||||||
488 R Faerie Artisans @Tony Foti
|
488 R Faerie Artisans @Tony Foti
|
||||||
490 R Lorthos, the Tidemaker @Kekai Kotaki
|
490 R Lorthos, the Tidemaker @Kekai Kotaki
|
||||||
491 R Minds Aglow @Yeong-Hao Han
|
491 R Minds Aglow @Yeong-Hao Han
|
||||||
492 R Mystic Confluence @Kieran Yanner
|
492 R Mystic Confluence @Kieran Yanner
|
||||||
493 R Personal Tutor @Julie Dillon
|
493 R Personal Tutor @Julie Dillon
|
||||||
|
494 R Sai, Master Thopterist @Adam Paquette
|
||||||
495 M Spellseeker @Igor Kieryluk
|
495 M Spellseeker @Igor Kieryluk
|
||||||
497 R Stormsurge Kraken @Svetlin Velinov
|
497 R Stormsurge Kraken @Svetlin Velinov
|
||||||
|
498 M Sun Quan, Lord of Wu @Xu Xiaoming
|
||||||
500 R Teferi, Temporal Archmage @Tyler Jacobson
|
500 R Teferi, Temporal Archmage @Tyler Jacobson
|
||||||
|
501 R Torrential Gearhulk @Svetlin Velinov
|
||||||
502 M Urza, Lord High Artificer @Grzegorz Rutkowski
|
502 M Urza, Lord High Artificer @Grzegorz Rutkowski
|
||||||
503 M Archfiend of Despair @Josh Hass
|
503 M Archfiend of Despair @Josh Hass
|
||||||
|
504 R Bloodchief Ascension @Adi Granov
|
||||||
505 R Chainer, Dementia Master @Mark Zug
|
505 R Chainer, Dementia Master @Mark Zug
|
||||||
|
506 R Curtains' Call @James Ryman
|
||||||
507 R Deadly Rollick @Izzy
|
507 R Deadly Rollick @Izzy
|
||||||
517 M Ob Nixilis of the Black Oath @Daarken
|
509 M Demonic Tutor @Zack Stella
|
||||||
|
510 R Demonlord Belzenlok @Tyler Jacobson
|
||||||
|
511 R Endrek Sahr, Master Breeder @Lucas Graciano
|
||||||
|
512 R Ghoulcaller Gisa @Karla Ortiz
|
||||||
|
513 M Grave Pact @Billy Christian
|
||||||
|
514 R Imp's Mischief @Thomas M. Baxa
|
||||||
|
515 R Kindred Dominance @Bram Sels
|
||||||
|
516 M Mikaeus, the Unhallowed @Chris Rahn
|
||||||
|
517 R Ob Nixilis of the Black Oath @Daarken
|
||||||
|
518 R Ogre Slumlord @Trevor Claxton
|
||||||
|
519 R Rankle, Master of Pranks @Dmitry Burmak
|
||||||
|
520 M Razaketh, the Foulblooded @Chris Rallis
|
||||||
522 R Sower of Discord @Wisnu Tan
|
522 R Sower of Discord @Wisnu Tan
|
||||||
523 R Toxic Deluge @Svetlin Velinov
|
523 R Toxic Deluge @Svetlin Velinov
|
||||||
|
524 M Twilight Prophet @Seb McKinnon
|
||||||
|
525 R Vindictive Lich @Toma Feizo Gas
|
||||||
526 R Wake the Dead @Christopher Moeller
|
526 R Wake the Dead @Christopher Moeller
|
||||||
527 R Wretched Confluence @Kieran Yanner
|
527 R Wretched Confluence @Kieran Yanner
|
||||||
|
528 R Ashling the Pilgrim @Wayne Reynolds
|
||||||
529 R Avatar of Slaughter @Jason A. Engle
|
529 R Avatar of Slaughter @Jason A. Engle
|
||||||
|
530 M Balefire Dragon @Eric Deschamps
|
||||||
531 R Daretti, Scrap Savant @Dan Scott
|
531 R Daretti, Scrap Savant @Dan Scott
|
||||||
|
532 R Deflecting Swat @Izzy
|
||||||
|
534 R Divergent Transformations @Kev Walker
|
||||||
|
535 R Drakuseth, Maw of Flames @Grzegorz Rutkowski
|
||||||
|
536 R Fiery Confluence @Kieran Yanner
|
||||||
|
537 R Godo, Bandit Warlord @Paolo Parente
|
||||||
|
538 R Grenzo, Havoc Raiser @Svetlin Velinov
|
||||||
|
539 R Heartless Hidetsugu @Carl Critchlow
|
||||||
|
540 R Hellkite Charger @Jaime Jones
|
||||||
|
541 R Inferno Titan @Kev Walker
|
||||||
542 M Insurrection @Mark Zug
|
542 M Insurrection @Mark Zug
|
||||||
543 R Krenko, Mob Boss @Karl Kopinski
|
543 R Krenko, Mob Boss @Karl Kopinski
|
||||||
544 R Magus of the Wheel @Carl Frank
|
544 R Magus of the Wheel @Carl Frank
|
||||||
|
545 M Neheb, the Eternal @Chris Rahn
|
||||||
546 R Nesting Dragon @Jehan Choo
|
546 R Nesting Dragon @Jehan Choo
|
||||||
548 R Savage Beating @Matt Thompson
|
547 M Purphoros, God of the Forge @Eric Deschamps
|
||||||
550 M Star of Extinction @Chris Rahn
|
548 M Savage Beating @Matt Thompson
|
||||||
|
549 R Scourge of the Throne @Michael Komarck
|
||||||
|
550 R Star of Extinction @Chris Rahn
|
||||||
|
551 R Tempt with Vengeance @Ryan Barger
|
||||||
552 R Treasure Nabber @Alex Konstad
|
552 R Treasure Nabber @Alex Konstad
|
||||||
554 R Azusa, Lost but Seeking @Winona Nelson
|
554 R Azusa, Lost but Seeking @Winona Nelson
|
||||||
|
555 R Bloodspore Thrinax @Ralph Horsley
|
||||||
|
556 M Craterhoof Behemoth @Chris Rahn
|
||||||
|
557 M Doubling Season @Chuck Lukacs
|
||||||
|
558 R Ezuri's Predation @Uriah Voth
|
||||||
559 M Finale of Devastation @Bayard Wu
|
559 M Finale of Devastation @Bayard Wu
|
||||||
|
560 R Freyalise, Llanowar's Fury @Adam Paquette
|
||||||
|
561 R Ghalta, Primal Hunger @Chase Stone
|
||||||
|
562 M The Great Henge @Adam Paquette
|
||||||
563 R Heroic Intervention @James Ryman
|
563 R Heroic Intervention @James Ryman
|
||||||
564 R Jolrael, Mwonvuli Recluse @Izzy
|
564 R Jolrael, Mwonvuli Recluse @Izzy
|
||||||
565 R Lifeblood Hydra @Alex Horley-Orlandelli
|
565 R Lifeblood Hydra @Alex Horley-Orlandelli
|
||||||
566 R Obscuring Haze @Campbell White
|
566 R Obscuring Haze @Campbell White
|
||||||
|
567 R Ohran Frostfang @Torstein Nordstrand
|
||||||
568 M Omnath, Locus of Mana @Mike Bierek
|
568 M Omnath, Locus of Mana @Mike Bierek
|
||||||
569 R Regal Behemoth @Jakub Kasper
|
569 R Regal Behemoth @Jakub Kasper
|
||||||
571 M Selvala, Heart of the Wilds @Tyler Jacobson
|
571 M Selvala, Heart of the Wilds @Tyler Jacobson
|
||||||
|
572 R Song of the Dryads @Lars Grant-West
|
||||||
|
573 R Stonehoof Chieftain @Camille Alquier
|
||||||
|
574 R Tooth and Nail @Greg Hildebrandt
|
||||||
|
575 R Verdant Confluence @Kieran Yanner
|
||||||
576 R Wayward Swordtooth @Chris Rahn
|
576 R Wayward Swordtooth @Chris Rahn
|
||||||
577 R Yisan, the Wanderer Bard @Chase Stone
|
577 R Yisan, the Wanderer Bard @Chase Stone
|
||||||
578 R Experiment Kraj @Mark Tedin
|
578 R Experiment Kraj @Mark Tedin
|
||||||
|
579 R Gisela, Blade of Goldnight @Jason Chan
|
||||||
|
580 R Hanna, Ship's Navigator @Chris Rallis
|
||||||
581 R Karador, Ghost Chieftain @Todd Lockwood
|
581 R Karador, Ghost Chieftain @Todd Lockwood
|
||||||
|
582 R Kykar, Wind's Fury @G-host Lee
|
||||||
583 R Maelstrom Wanderer @Victor Adame Minguez
|
583 R Maelstrom Wanderer @Victor Adame Minguez
|
||||||
586 M Mizzix of the Izmagnus @Cliff Childs
|
584 R Meren of Clan Nel Toth @Mark Winters
|
||||||
587 M Nekusar, the Mindrazer @Mark Winters
|
585 R Mirri, Weatherlight Duelist @Magali Villeneuve
|
||||||
|
586 R Mizzix of the Izmagnus @Cliff Childs
|
||||||
|
587 R Nekusar, the Mindrazer @Mark Winters
|
||||||
588 R Queen Marchesa @Kieran Yanner
|
588 R Queen Marchesa @Kieran Yanner
|
||||||
|
589 R Rafiq of the Many @Michael Komarck
|
||||||
|
590 M The Scarab God @Lius Lasahido
|
||||||
|
591 R Sek'Kuar, Deathkeeper @Jesper Ejsing
|
||||||
|
592 R Sidisi, Brood Tyrant @Karl Kopinski
|
||||||
|
593 R Teysa Karlov @Magali Villeneuve
|
||||||
594 M The Ur-Dragon @Jaime Jones
|
594 M The Ur-Dragon @Jaime Jones
|
||||||
|
595 R Xantcha, Sleeper Agent @Mark Winters
|
||||||
|
599 R Zilortha, Strength Incarnate @Chase Stone
|
||||||
600 R Boompile @Filip Burburan
|
600 R Boompile @Filip Burburan
|
||||||
601 R Champion's Helm @Alan Pollack
|
601 R Champion's Helm @Alan Pollack
|
||||||
602 R Chromatic Lantern @Jung Park
|
602 R Chromatic Lantern @Jung Park
|
||||||
603 R Emerald Medallion @Daniel Ljunggren
|
603 R Emerald Medallion @Daniel Ljunggren
|
||||||
|
604 M Extraplanar Lens @Lars Grant-West
|
||||||
606 R Hammer of Nazahn @Victor Adame Minguez
|
606 R Hammer of Nazahn @Victor Adame Minguez
|
||||||
|
607 R Idol of Oblivion @Piotr Dura
|
||||||
608 M The Immortal Sun @Kieran Yanner
|
608 M The Immortal Sun @Kieran Yanner
|
||||||
|
609 R Inspiring Statuary @Kirsten Zirngibl
|
||||||
610 R Jet Medallion @Daniel Ljunggren
|
610 R Jet Medallion @Daniel Ljunggren
|
||||||
611 M Jeweled Lotus @Alayna Danner
|
611 M Jeweled Lotus @Alayna Danner
|
||||||
612 R Pearl Medallion @Daniel Ljunggren
|
612 R Pearl Medallion @Daniel Ljunggren
|
||||||
613 R Ruby Medallion @Daniel Ljunggren
|
613 R Ruby Medallion @Daniel Ljunggren
|
||||||
614 R Sapphire Medallion @Daniel Ljunggren
|
614 R Sapphire Medallion @Daniel Ljunggren
|
||||||
625 R Grand Abolisher @
|
616 R Sword of the Animist @Daniel Ljunggren
|
||||||
|
623 U Darksteel Mutation @Richard Kane Ferguson
|
||||||
|
625 R Grand Abolisher @Richard Kane Ferguson
|
||||||
627 R Puresteel Paladin @Richard Kane Ferguson
|
627 R Puresteel Paladin @Richard Kane Ferguson
|
||||||
|
629 R Steelshaper's Gift @Paolo Parente
|
||||||
633 R Personal Tutor @Jeff Miracola
|
633 R Personal Tutor @Jeff Miracola
|
||||||
635 M Spellseeker @
|
634 U Reality Shift @Warren Mahy
|
||||||
|
635 M Spellseeker @Douglas Shuler
|
||||||
|
636 R Bloodchief Ascension @Warren Mahy
|
||||||
|
639 M Grave Pact @Kev Walker
|
||||||
640 R Kindred Dominance @Thomas M. Baxa
|
640 R Kindred Dominance @Thomas M. Baxa
|
||||||
643 R Magus of the Wheel @Scott M. Fischer
|
643 R Magus of the Wheel @Scott M. Fischer
|
||||||
|
644 U Storm-Kiln Artist @Chuck Lukacs
|
||||||
645 R Treasure Nabber @Pete Venters
|
645 R Treasure Nabber @Pete Venters
|
||||||
646 U Vandalblast @
|
646 U Vandalblast @Dermot Power
|
||||||
651 R Regal Behemoth @
|
649 C Kodama's Reach @Ron Spencer
|
||||||
|
650 R Ohran Frostfang @Ron Spears
|
||||||
|
651 R Regal Behemoth @Kev Walker
|
||||||
|
652 R Tooth and Nail @Eric Velhagen
|
||||||
653 U Arcane Signet @Drew Tucker
|
653 U Arcane Signet @Drew Tucker
|
||||||
654 R Champion's Helm @Paolo Parente
|
654 R Champion's Helm @Paolo Parente
|
||||||
656 R Extraplanar Lens @Ron Spears
|
656 M Extraplanar Lens @Ron Spears
|
||||||
657 U Fellwar Stone @Randy Gallegos
|
657 U Fellwar Stone @Randy Gallegos
|
||||||
658 U Thran Dynamo @
|
658 U Thran Dynamo @Chuck Lukacs
|
||||||
661 C Path of Ancestry @
|
659 C Command Tower @Donato Giancola
|
||||||
|
661 C Path of Ancestry @Mark Poole
|
||||||
663 U Reliquary Tower @Mark Poole
|
663 U Reliquary Tower @Mark Poole
|
||||||
668 M Kozilek, the Great Distortion @Grant Griffin
|
668 M Kozilek, the Great Distortion @Grant Griffin
|
||||||
|
669 M Morophon, the Boundless @Jack Hughes
|
||||||
|
670 M Ulamog, the Ceaseless Hunger @Cosmin Podar
|
||||||
671 U Kemba, Kha Regent @Peter Diamond
|
671 U Kemba, Kha Regent @Peter Diamond
|
||||||
|
672 R Azami, Lady of Scrolls @Grant Griffin
|
||||||
|
673 R Talrand, Sky Summoner @Tyler Walpole
|
||||||
|
674 M Urza, Lord High Artificer @Grant Griffin
|
||||||
|
675 M Mikaeus, the Unhallowed @Benjamin Ee
|
||||||
|
677 R Grenzo, Havoc Raiser @Tyler Walpole
|
||||||
|
678 M Neheb, the Eternal @Alex Stone
|
||||||
679 R Azusa, Lost but Seeking @Benjamin Ee
|
679 R Azusa, Lost but Seeking @Benjamin Ee
|
||||||
680 M Omnath, Locus of Mana @
|
680 M Omnath, Locus of Mana @Alex Dos Diaz
|
||||||
681 M Selvala, Heart of the Wilds @Jack Hughes
|
681 M Selvala, Heart of the Wilds @Jack Hughes
|
||||||
|
682 R Gisela, Blade of Goldnight @Alex Dos Diaz
|
||||||
683 R Kykar, Wind's Fury @April Prime
|
683 R Kykar, Wind's Fury @April Prime
|
||||||
684 R Maelstrom Wanderer @
|
684 R Maelstrom Wanderer @Benjamin Ee
|
||||||
|
685 R Meren of Clan Nel Toth @Vance Kelly
|
||||||
|
688 R Teysa Karlov @Jack Hughes
|
||||||
689 M The Ur-Dragon @Tyler Walpole
|
689 M The Ur-Dragon @Tyler Walpole
|
||||||
|
692 R Flawless Maneuver @Warren Mahy
|
||||||
693 M Smothering Tithe @Jeff Miracola
|
693 M Smothering Tithe @Jeff Miracola
|
||||||
695 R Deadly Rollick @Izzy
|
694 R Fierce Guardianship @
|
||||||
699 M Insurrection @
|
695 R Deadly Rollick @Ron Spencer
|
||||||
|
696 M Demonic Tutor @Donato Giancola
|
||||||
|
697 M Balefire Dragon @Scott M. Fischer
|
||||||
|
698 R Deflecting Swat @Greg Staples
|
||||||
|
699 M Insurrection @Jeff Miracola
|
||||||
700 M Finale of Devastation @Daren Bader
|
700 M Finale of Devastation @Daren Bader
|
||||||
701 R Obscuring Haze @Daren Bader
|
701 R Obscuring Haze @Daren Bader
|
||||||
702 M Jeweled Lotus @Olena Richards
|
702 M Jeweled Lotus @Olena Richards
|
||||||
@@ -234,8 +433,12 @@ ScryfallCode=CMM
|
|||||||
781 M Commodore Guff @Matt Stewart
|
781 M Commodore Guff @Matt Stewart
|
||||||
782 M Sliver Gravemother @Chris Rahn
|
782 M Sliver Gravemother @Chris Rahn
|
||||||
1057 M Kozilek, the Great Distortion @Grant Griffin
|
1057 M Kozilek, the Great Distortion @Grant Griffin
|
||||||
1060 M Urza, Lord High Artificer @
|
1058 M Morophon, the Boundless @Jack Hughes
|
||||||
1063 M Omnath, Locus of Mana @
|
1059 M Ulamog, the Ceaseless Hunger @Cosmin Podar
|
||||||
|
1060 M Urza, Lord High Artificer @Grant Griffin
|
||||||
|
1061 M Mikaeus, the Unhallowed @Benjamin Ee
|
||||||
|
1062 M Neheb, the Eternal @Alex Stone
|
||||||
|
1063 M Omnath, Locus of Mana @Alex Dos Diaz
|
||||||
1064 M Selvala, Heart of the Wilds @Jack Hughes
|
1064 M Selvala, Heart of the Wilds @Jack Hughes
|
||||||
1065 M The Ur-Dragon @Tyler Walpole
|
1065 M The Ur-Dragon @Tyler Walpole
|
||||||
1066 M Jeweled Lotus @Olena Richards
|
1066 M Jeweled Lotus @Olena Richards
|
||||||
|
|||||||
@@ -781,14 +781,14 @@ F567 R Puresteel Angel @Lukas Litzsinger
|
|||||||
773 R Repay in Kind @Vance Kovacs
|
773 R Repay in Kind @Vance Kovacs
|
||||||
774 R Volrath's Dungeon @Stephen Daniele
|
774 R Volrath's Dungeon @Stephen Daniele
|
||||||
775 C Dragon's Approach @Andrew Mar
|
775 C Dragon's Approach @Andrew Mar
|
||||||
776 U Dragon's Rage Channeler @Martina Fackova
|
776 U Dragon's Rage Channeler @Martina Fačková
|
||||||
777 M Goldspan Dragon @Andrew Mar
|
777 M Goldspan Dragon @Andrew Mar
|
||||||
778 R Lathliss, Dragon Queen @Alex Konstad
|
778 R Lathliss, Dragon Queen @Alex Konstad
|
||||||
779 U Magic Missile @PINDURSKI
|
779 U Magic Missile @PINDURSKI
|
||||||
780 U Thundering Sparkmage @Billy Christian
|
780 U Thundering Sparkmage @Billy Christian
|
||||||
781 R Worldgorger Dragon @Wayne England
|
781 R Worldgorger Dragon @Wayne England
|
||||||
782 U Devoted Druid @Kimonas Theodossiou
|
782 U Devoted Druid @Kimonas Theodossiou
|
||||||
783 U Druid's Call @Greg Hildebrandt
|
783 U Druid's Call @Greg Hildebrandt & Tim Hildebrandt
|
||||||
784 U Edgewall Innkeeper @Matt Stewart
|
784 U Edgewall Innkeeper @Matt Stewart
|
||||||
785 R Gilt-Leaf Archdruid @Steve Prescott
|
785 R Gilt-Leaf Archdruid @Steve Prescott
|
||||||
786 M Old Gnawbone @Filip Burburan
|
786 M Old Gnawbone @Filip Burburan
|
||||||
@@ -1095,3 +1095,78 @@ F567 R Puresteel Angel @Lukas Litzsinger
|
|||||||
1087 R Sea of Clouds @Florian de Gesincourt
|
1087 R Sea of Clouds @Florian de Gesincourt
|
||||||
1088 R The World Tree @Anastasia Ovchinnikova
|
1088 R The World Tree @Anastasia Ovchinnikova
|
||||||
1089 U Zhalfirin Void @Chase Stone
|
1089 U Zhalfirin Void @Chase Stone
|
||||||
|
1090 U All That Glitters @Iain McCaig
|
||||||
|
1091 U Baird, Steward of Argive @Christine Choi
|
||||||
|
1092 C Battleflight Eagle @Kev Walker
|
||||||
|
1093 R Court of Grace @Denman Rooke
|
||||||
|
1094 R Darien, King of Kjeldor @Michael Phillippi
|
||||||
|
1095 C Doomed Traveler @Lars Grant-West
|
||||||
|
1096 R Earnest Fellowship @Heather Hudson
|
||||||
|
1097 U Far Traveler @Alix Branwyn
|
||||||
|
1098 C Fortifying Provisions @Scott Murphy
|
||||||
|
1099 U Generous Gift @Kev Walker
|
||||||
|
1100 M Kenrith, the Returned King @Kieran Yanner
|
||||||
|
1101 R Knight-Captain of Eos @Chris Rahn
|
||||||
|
1102 R Knight Exemplar @Jason Chan
|
||||||
|
1103 C Oaken Brawler @Jim Murray
|
||||||
|
1104 R Ancestral Memories @Dan Frazier
|
||||||
|
1105 R Arcane Melee @Jaime Jones
|
||||||
|
1106 R Commandeer @John Matson
|
||||||
|
1107 R Counterlash @Austin Hsu
|
||||||
|
1108 R Denying Wind @Tony Szczudlo
|
||||||
|
1109 R Exhaustion @DiTerlizzi
|
||||||
|
1110 R Mindlock Orb @rk post
|
||||||
|
1111 R Oath of Scholars @Michael Sutfin
|
||||||
|
1112 R Rayne, Academy Chancellor @Matthew D. Wilson
|
||||||
|
1113 C Stormwatch Eagle @Aaron Boyd
|
||||||
|
1114 R Stroke of Genius @Stephen Daniele
|
||||||
|
1115 C Traveler's Cloak @Rebecca Guay
|
||||||
|
1116 C Barrow Ghoul @Bryan Talbot
|
||||||
|
1117 C Barrow Witches @Alex Brock
|
||||||
|
1118 U Bog Wraith @Daarken
|
||||||
|
1119 U Evil Eye of Urborg @Clint Langley
|
||||||
|
1120 U Grim Strider @Christine Choi
|
||||||
|
1121 U Orc Sureshot @Kev Walker
|
||||||
|
1122 R Pitiless Horde @Viktor Titov
|
||||||
|
1123 U Crush the Weak @Lucas Graciano
|
||||||
|
1124 R Dwarven Bloodboiler @Arnie Swekel
|
||||||
|
1125 C Dwarven Grunt @Mike Ploog
|
||||||
|
1126 U Dwarven Miner @Jock
|
||||||
|
1127 U Glittering Stockpile @Brock Grossman
|
||||||
|
1128 U Hoarding Dragon @Matt Cavotta
|
||||||
|
1129 C Miner's Bane @Adam Paquette
|
||||||
|
1130 U Orcish Artillery @Jeff Miracola
|
||||||
|
1131 R Reforge the Soul @Jaime Jones
|
||||||
|
1132 C Battlewand Oak @Steve Prescott
|
||||||
|
1133 U Blossom Prancer @Ryan Yee
|
||||||
|
1134 R Budoka Gardener @Kev Walker
|
||||||
|
1135 C Courage in Crisis @Micah Epstein
|
||||||
|
1136 R Dauntless Dourbark @Jeremy Jarvis
|
||||||
|
1137 U Elven Palisade @Mark Zug
|
||||||
|
1138 R Elven Warhounds @Kev Walker
|
||||||
|
1139 U Gather Courage @Brian Despain
|
||||||
|
1140 R Leaf-Crowned Elder @Wayne Reynolds
|
||||||
|
1141 U Murasa Ranger @Eric Deschamps
|
||||||
|
1142 R Nemata, Grove Guardian @John Avon
|
||||||
|
1143 R Unstoppable Ash @Brian Snõddy
|
||||||
|
1144 R Ancient Spider @Greg Staples
|
||||||
|
1145 R Doomsday Specter @Donato Giancola
|
||||||
|
1146 U Empyrean Eagle @Jason A. Engle
|
||||||
|
1147 R Ghastlord of Fugue @Mike Dringenberg
|
||||||
|
1148 R Gluttonous Troll @Joe Slucher
|
||||||
|
1149 R Jared Carthalion, True Heir @Lius Lasahido
|
||||||
|
1150 C Old Ghastbark @Thomas M. Baxa
|
||||||
|
1151 R Tolsimir, Friend to Wolves @Ryan Pancoast
|
||||||
|
1152 R Angelheart Vial @Chippy
|
||||||
|
1153 R Dolmen Gate @Richard Sardinha
|
||||||
|
1154 R Doom Cannon @Matthew Mitchell
|
||||||
|
1155 R Eye of Doom @Yeong-Hao Han
|
||||||
|
1156 R Forebear's Blade @Scott Murphy
|
||||||
|
1157 R Jinxed Ring @M. W. Kaluta
|
||||||
|
1158 R Rakdos Riteknife @Jim Nelson
|
||||||
|
1159 M Ring of Three Wishes @Mark Winters
|
||||||
|
1160 R Sword of Vengeance @Dan Scott
|
||||||
|
1161 R Tower of Calamities @Aleksi Briclot
|
||||||
|
1162 R Tower of Fortunes @Matt Cavotta
|
||||||
|
1163 R Wheel of Torture @Henry Van Der Linde
|
||||||
|
1164 U Forbidding Watchtower @Aleksi Briclot
|
||||||
|
|||||||
@@ -3,4 +3,4 @@ Name:Premodern
|
|||||||
Order:106
|
Order:106
|
||||||
Type:Casual
|
Type:Casual
|
||||||
Sets:4ED, ICE, CHR, HML, ALL, MIR, VIS, 5ED, WTH, TMP, STH, EXO, USG, ULG, 6ED, UDS, MMQ, NMS, PCY, INV, PLS, 7ED, APC, ODY, TOR, JUD, ONS, LGN, SCG
|
Sets:4ED, ICE, CHR, HML, ALL, MIR, VIS, 5ED, WTH, TMP, STH, EXO, USG, ULG, 6ED, UDS, MMQ, NMS, PCY, INV, PLS, 7ED, APC, ODY, TOR, JUD, ONS, LGN, SCG
|
||||||
Banned:Amulet of Quoz; Balance; Brainstorm; Bronze Tablet; Channel; Demonic Consultation; Earthcraft; Entomb; Flash; Force of Will; Goblin Recruiter; Grim Monolith; Jeweled Bird; Mana Vault; Memory Jar; Mind Twist; Mind's Desire; Mystical Tutor; Necropotence; Rebirth; Strip Mine; Tempest Efreet; Tendrils of Agony; Time Spiral; Timmerian Fiends; Tolarian Academy; Vampiric Tutor; Windfall; Worldgorger Dragon; Yawgmoth's Bargain; Yawgmoth's Will
|
Banned:Amulet of Quoz; Balance; Brainstorm; Bronze Tablet; Channel; Demonic Consultation; Earthcraft; Entomb; Flash; Force of Will; Goblin Recruiter; Grim Monolith; Jeweled Bird; Land Tax; Mana Vault; Memory Jar; Mind Twist; Mind's Desire; Mystical Tutor; Necropotence; Rebirth; Strip Mine; Tempest Efreet; Tendrils of Agony; Time Spiral; Timmerian Fiends; Tolarian Academy; Vampiric Tutor; Windfall; Worldgorger Dragon; Yawgmoth's Bargain; Yawgmoth's Will
|
||||||
@@ -2237,6 +2237,8 @@ lblSelectThisCardConfirm=Wähle diese Karte?
|
|||||||
#CardView.java
|
#CardView.java
|
||||||
lblMainGame=Hauptspiel
|
lblMainGame=Hauptspiel
|
||||||
lblSubgame=Unterspiel (Auslöser {0})
|
lblSubgame=Unterspiel (Auslöser {0})
|
||||||
|
lblHandSize=Handgröße
|
||||||
|
lblStartingLife=Leben beginnen
|
||||||
#PlayerView.java
|
#PlayerView.java
|
||||||
lblCommanderCastCard=Wurde bereits {0} mal aus der Kommandozone gespielt
|
lblCommanderCastCard=Wurde bereits {0} mal aus der Kommandozone gespielt
|
||||||
lblCommanderCastPlayer={0} spielte {1} mal aus der Kommandozone
|
lblCommanderCastPlayer={0} spielte {1} mal aus der Kommandozone
|
||||||
|
|||||||
@@ -2242,6 +2242,8 @@ lblSelectThisCardConfirm=Select this card?
|
|||||||
#CardView.java
|
#CardView.java
|
||||||
lblMainGame=Main game
|
lblMainGame=Main game
|
||||||
lblSubgame=Subgame ({0} parent)
|
lblSubgame=Subgame ({0} parent)
|
||||||
|
lblHandSize=Hand Size
|
||||||
|
lblStartingLife=Starting Life
|
||||||
#PlayerView.java
|
#PlayerView.java
|
||||||
lblCommanderCastCard=Cast from command zone {0} times
|
lblCommanderCastCard=Cast from command zone {0} times
|
||||||
lblCommanderCastPlayer={0} cast from command zone {1} times
|
lblCommanderCastPlayer={0} cast from command zone {1} times
|
||||||
|
|||||||
@@ -2238,6 +2238,8 @@ lblSelectThisCardConfirm=¿Selecciona esta carta?
|
|||||||
#CardView.java
|
#CardView.java
|
||||||
lblMainGame=Juego principal
|
lblMainGame=Juego principal
|
||||||
lblSubgame=Subjuego (padre {0})
|
lblSubgame=Subjuego (padre {0})
|
||||||
|
lblHandSize=Tamaño de la mano
|
||||||
|
lblStartingLife=La vida inicial
|
||||||
#PlayerView.java
|
#PlayerView.java
|
||||||
lblCommanderCastCard=Lanzado desde la zona de comandante {0} veces
|
lblCommanderCastCard=Lanzado desde la zona de comandante {0} veces
|
||||||
lblCommanderCastPlayer={0} lanzado desde la zona de comandante {1} veces
|
lblCommanderCastPlayer={0} lanzado desde la zona de comandante {1} veces
|
||||||
|
|||||||
@@ -2240,6 +2240,8 @@ lblSelectThisCardConfirm=Sélectionner cette carte ?
|
|||||||
#CardView.java
|
#CardView.java
|
||||||
lblMainGame=Jeu principal
|
lblMainGame=Jeu principal
|
||||||
lblSubgame=Sous-jeu ({0} parent)
|
lblSubgame=Sous-jeu ({0} parent)
|
||||||
|
lblHandSize=Taille de la main
|
||||||
|
lblStartingLife=Début de la vie
|
||||||
#PlayerView.java
|
#PlayerView.java
|
||||||
lblCommanderCastCard=Lancer depuis la zone de commande {0} fois
|
lblCommanderCastCard=Lancer depuis la zone de commande {0} fois
|
||||||
lblCommanderCastPlayer={0} lancer de la zone de commande {1} fois
|
lblCommanderCastPlayer={0} lancer de la zone de commande {1} fois
|
||||||
|
|||||||
@@ -2237,6 +2237,8 @@ lblSelectThisCardConfirm=Vuoi scegliere questa carta?
|
|||||||
#CardView.java
|
#CardView.java
|
||||||
lblMainGame=Gioco principale
|
lblMainGame=Gioco principale
|
||||||
lblSubgame=Sottopartita (da {0})
|
lblSubgame=Sottopartita (da {0})
|
||||||
|
lblHandSize=Dimensione delle mani
|
||||||
|
lblStartingLife=La vita iniziale
|
||||||
#PlayerView.java
|
#PlayerView.java
|
||||||
lblCommanderCastCard=Lanciato dalla zona di comando {0} volte
|
lblCommanderCastCard=Lanciato dalla zona di comando {0} volte
|
||||||
lblCommanderCastPlayer={0} è stato lanciato dalla zona di comando {1} volte
|
lblCommanderCastPlayer={0} è stato lanciato dalla zona di comando {1} volte
|
||||||
|
|||||||
@@ -2237,6 +2237,8 @@ lblSelectThisCardConfirm=このカードを選択しますか?
|
|||||||
#CardView.java
|
#CardView.java
|
||||||
lblMainGame=メインゲーム
|
lblMainGame=メインゲーム
|
||||||
lblSubgame={0}つ上のサブゲーム
|
lblSubgame={0}つ上のサブゲーム
|
||||||
|
lblHandSize=ハンドサイズ
|
||||||
|
lblStartingLife=人生を始める
|
||||||
#PlayerView.java
|
#PlayerView.java
|
||||||
lblCommanderCastCard=コマンド領域からキャスト:{0}回
|
lblCommanderCastCard=コマンド領域からキャスト:{0}回
|
||||||
lblCommanderCastPlayer={0}が {1}回コマンド領域からキャストした
|
lblCommanderCastPlayer={0}が {1}回コマンド領域からキャストした
|
||||||
|
|||||||
@@ -2304,6 +2304,8 @@ lblSelectThisCardConfirm=Escolher este cartão?
|
|||||||
#CardView.java
|
#CardView.java
|
||||||
lblMainGame=Jogo Principal
|
lblMainGame=Jogo Principal
|
||||||
lblSubgame=Subjogo ({0} pai)
|
lblSubgame=Subjogo ({0} pai)
|
||||||
|
lblHandSize=Tamanho da mão
|
||||||
|
lblStartingLife=Começando a vida
|
||||||
#PlayerView.java
|
#PlayerView.java
|
||||||
lblCommanderCastCard=Conjurado da zona de comando {0} vezes
|
lblCommanderCastCard=Conjurado da zona de comando {0} vezes
|
||||||
lblCommanderCastPlayer={0} conjurou da zona de comando {1} vezes
|
lblCommanderCastPlayer={0} conjurou da zona de comando {1} vezes
|
||||||
|
|||||||
@@ -2242,6 +2242,8 @@ lblSelectThisCardConfirm=选择这张牌?
|
|||||||
#CardView.java
|
#CardView.java
|
||||||
lblMainGame=主游戏
|
lblMainGame=主游戏
|
||||||
lblSubgame=子游戏({0}个父游戏)
|
lblSubgame=子游戏({0}个父游戏)
|
||||||
|
lblHandSize=手尺寸
|
||||||
|
lblStartingLife=开始生活
|
||||||
#PlayerView.java
|
#PlayerView.java
|
||||||
lblCommanderCastCard=从指挥官区域释放过{0}次
|
lblCommanderCastCard=从指挥官区域释放过{0}次
|
||||||
lblCommanderCastPlayer={0}从指挥官区域释放过{1}次
|
lblCommanderCastPlayer={0}从指挥官区域释放过{1}次
|
||||||
|
|||||||
Reference in New Issue
Block a user