mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 20:28:00 +00:00
Merge remote-tracking branch 'core/master'
This commit is contained in:
@@ -2269,6 +2269,8 @@ public class GameAction {
|
|||||||
// Run replacement effect for each entity dealt damage
|
// Run replacement effect for each entity dealt damage
|
||||||
game.getReplacementHandler().runReplaceDamage(isCombat, damageMap, preventMap, counterTable, cause);
|
game.getReplacementHandler().runReplaceDamage(isCombat, damageMap, preventMap, counterTable, cause);
|
||||||
|
|
||||||
|
Map<Card, Integer> lethalDamage = Maps.newHashMap();
|
||||||
|
|
||||||
// Actually deal damage according to replaced damage map
|
// Actually deal damage according to replaced damage map
|
||||||
for (Map.Entry<Card, Map<GameEntity, Integer>> et : damageMap.rowMap().entrySet()) {
|
for (Map.Entry<Card, Map<GameEntity, Integer>> et : damageMap.rowMap().entrySet()) {
|
||||||
final Card sourceLKI = et.getKey();
|
final Card sourceLKI = et.getKey();
|
||||||
@@ -2277,6 +2279,21 @@ public class GameAction {
|
|||||||
if (e.getValue() <= 0) {
|
if (e.getValue() <= 0) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (e.getKey() instanceof Card && !lethalDamage.containsKey(e.getKey())) {
|
||||||
|
Card c = (Card) e.getKey();
|
||||||
|
int lethal = 0;
|
||||||
|
if (c.isCreature()) {
|
||||||
|
lethal = Math.max(0, c.getLethalDamage());
|
||||||
|
}
|
||||||
|
if (c.isPlaneswalker()) {
|
||||||
|
int lethalPW = c.getCurrentLoyalty();
|
||||||
|
// 120.10
|
||||||
|
lethal = c.isCreature() ? Math.min(lethal, lethalPW) : lethalPW;
|
||||||
|
}
|
||||||
|
lethalDamage.put(c, lethal);
|
||||||
|
}
|
||||||
|
|
||||||
e.setValue(Integer.valueOf(e.getKey().addDamageAfterPrevention(e.getValue(), sourceLKI, isCombat, counterTable)));
|
e.setValue(Integer.valueOf(e.getKey().addDamageAfterPrevention(e.getValue(), sourceLKI, isCombat, counterTable)));
|
||||||
sum += e.getValue();
|
sum += e.getValue();
|
||||||
}
|
}
|
||||||
@@ -2314,6 +2331,7 @@ public class GameAction {
|
|||||||
preventMap.clear();
|
preventMap.clear();
|
||||||
|
|
||||||
damageMap.triggerDamageDoneOnce(isCombat, game);
|
damageMap.triggerDamageDoneOnce(isCombat, game);
|
||||||
|
damageMap.triggerExcessDamage(isCombat, lethalDamage, game);
|
||||||
damageMap.clear();
|
damageMap.clear();
|
||||||
|
|
||||||
counterTable.replaceCounterEffect(game, cause, !isCombat);
|
counterTable.replaceCounterEffect(game, cause, !isCombat);
|
||||||
|
|||||||
@@ -13,18 +13,23 @@ public class BranchEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
// TODO Reuse SpellAbilityCondition and areMet() here instead of repeating each
|
// TODO Reuse SpellAbilityCondition and areMet() here instead of repeating each
|
||||||
|
|
||||||
// For now branch conditions will only be an Svar Compare
|
int value = 0;
|
||||||
String branchSVar = sa.getParam("BranchConditionSVar");
|
if (sa.hasParam("BranchCondition")) {
|
||||||
|
if (sa.getParam("BranchCondition").equals("ChosenCard")) {
|
||||||
|
value = host.getChosenCards().size();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
value = AbilityUtils.calculateAmount(host, sa.getParam("BranchConditionSVar"), sa);
|
||||||
|
}
|
||||||
String branchCompare = sa.getParamOrDefault("BranchConditionSVarCompare", "GE1");
|
String branchCompare = sa.getParamOrDefault("BranchConditionSVarCompare", "GE1");
|
||||||
|
|
||||||
String operator = branchCompare.substring(0, 2);
|
String operator = branchCompare.substring(0, 2);
|
||||||
String operand = branchCompare.substring(2);
|
String operand = branchCompare.substring(2);
|
||||||
|
|
||||||
final int svarValue = AbilityUtils.calculateAmount(host, branchSVar, sa);
|
|
||||||
final int operandValue = AbilityUtils.calculateAmount(host, operand, sa);
|
final int operandValue = AbilityUtils.calculateAmount(host, operand, sa);
|
||||||
|
|
||||||
SpellAbility sub = null;
|
SpellAbility sub = null;
|
||||||
if (Expressions.compare(svarValue, operator, operandValue)) {
|
if (Expressions.compare(value, operator, operandValue)) {
|
||||||
sub = sa.getAdditionalAbility("TrueSubAbility");
|
sub = sa.getAdditionalAbility("TrueSubAbility");
|
||||||
} else {
|
} else {
|
||||||
sub = sa.getAdditionalAbility("FalseSubAbility");
|
sub = sa.getAdditionalAbility("FalseSubAbility");
|
||||||
|
|||||||
@@ -32,11 +32,22 @@ public class ChooseCardEffect extends SpellAbilityEffect {
|
|||||||
@Override
|
@Override
|
||||||
protected String getStackDescription(SpellAbility sa) {
|
protected String getStackDescription(SpellAbility sa) {
|
||||||
final StringBuilder sb = new StringBuilder();
|
final StringBuilder sb = new StringBuilder();
|
||||||
|
final int numCards = sa.hasParam("Amount") ?
|
||||||
|
AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("Amount"), sa) : 1;
|
||||||
|
|
||||||
for (final Player p : getTargetPlayers(sa)) {
|
sb.append(Lang.joinHomogenous(getTargetPlayers(sa))).append(" ");
|
||||||
sb.append(p).append(" ");
|
if (sa.hasParam("Mandatory")) {
|
||||||
|
sb.append(getTargetPlayers(sa).size() == 1 ? "chooses " : "choose ");
|
||||||
|
} else {
|
||||||
|
sb.append("may choose ");
|
||||||
}
|
}
|
||||||
sb.append("chooses a card.");
|
String desc = sa.getParamOrDefault("ChoiceDesc", "");
|
||||||
|
desc = desc.isEmpty() ? "card" : desc + " card";
|
||||||
|
sb.append(Lang.nounWithNumeralExceptOne(numCards, desc));
|
||||||
|
if (sa.hasParam("FromDesc")) {
|
||||||
|
sb.append(" ").append(sa.getParam("FromDesc"));
|
||||||
|
}
|
||||||
|
sb.append(".");
|
||||||
|
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -238,7 +238,7 @@ public class DiscardEffect extends SpellAbilityEffect {
|
|||||||
if (toBeDiscarded.size() > 1) {
|
if (toBeDiscarded.size() > 1) {
|
||||||
toBeDiscarded = GameActionUtil.orderCardsByTheirOwners(game, toBeDiscarded, ZoneType.Graveyard, sa);
|
toBeDiscarded = GameActionUtil.orderCardsByTheirOwners(game, toBeDiscarded, ZoneType.Graveyard, sa);
|
||||||
}
|
}
|
||||||
} else if (mode.equals("RevealYouChoose") || mode.equals("RevealTgtChoose") || mode.equals("TgtChoose")) {
|
} else if (mode.endsWith("YouChoose") || mode.endsWith("TgtChoose")) {
|
||||||
CardCollectionView dPHand = p.getCardsIn(ZoneType.Hand);
|
CardCollectionView dPHand = p.getCardsIn(ZoneType.Hand);
|
||||||
dPHand = CardLists.filter(dPHand, Presets.NON_TOKEN);
|
dPHand = CardLists.filter(dPHand, Presets.NON_TOKEN);
|
||||||
if (dPHand.isEmpty())
|
if (dPHand.isEmpty())
|
||||||
@@ -253,15 +253,18 @@ public class DiscardEffect extends SpellAbilityEffect {
|
|||||||
CardCollection validCards = CardLists.getValidCards(dPHand, valid, source.getController(), source, sa);
|
CardCollection validCards = CardLists.getValidCards(dPHand, valid, source.getController(), source, sa);
|
||||||
|
|
||||||
Player chooser = p;
|
Player chooser = p;
|
||||||
if (mode.equals("RevealYouChoose")) {
|
if (mode.endsWith("YouChoose")) {
|
||||||
chooser = source.getController();
|
chooser = source.getController();
|
||||||
} else if (mode.equals("RevealTgtChoose")) {
|
} else if (mode.endsWith("TgtChoose")) {
|
||||||
chooser = firstTarget;
|
chooser = firstTarget;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mode.startsWith("Reveal") && p != chooser) {
|
if (mode.startsWith("Reveal")) {
|
||||||
game.getAction().reveal(dPHand, p);
|
game.getAction().reveal(dPHand, p);
|
||||||
}
|
}
|
||||||
|
if (mode.startsWith("Look")) {
|
||||||
|
game.getAction().revealTo(dPHand, chooser);
|
||||||
|
}
|
||||||
|
|
||||||
if (!p.canDiscardBy(sa, true)) {
|
if (!p.canDiscardBy(sa, true)) {
|
||||||
continue;
|
continue;
|
||||||
@@ -276,7 +279,7 @@ public class DiscardEffect extends SpellAbilityEffect {
|
|||||||
toBeDiscarded = GameActionUtil.orderCardsByTheirOwners(game, toBeDiscarded, ZoneType.Graveyard, sa);
|
toBeDiscarded = GameActionUtil.orderCardsByTheirOwners(game, toBeDiscarded, ZoneType.Graveyard, sa);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mode.startsWith("Reveal") ) {
|
if (mode.startsWith("Reveal") && p != chooser) {
|
||||||
p.getController().reveal(toBeDiscarded, ZoneType.Hand, p, Localizer.getInstance().getMessage("lblPlayerHasChosenCardsFrom", chooser.getName()));
|
p.getController().reveal(toBeDiscarded, ZoneType.Hand, p, Localizer.getInstance().getMessage("lblPlayerHasChosenCardsFrom", chooser.getName()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -97,6 +97,7 @@ public class MillEffect extends SpellAbilityEffect {
|
|||||||
sb.append("antes ");
|
sb.append("antes ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sb.append(Lang.nounWithNumeralExceptOne(numCards, "card")).append(".");
|
||||||
sb.append(numCards == 1 ? "a card" : (Lang.getNumeral(numCards) + " cards")).append(".");
|
sb.append(numCards == 1 ? "a card" : (Lang.getNumeral(numCards) + " cards")).append(".");
|
||||||
|
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
|
|||||||
@@ -2155,6 +2155,9 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
|||||||
} else if (keyword.endsWith(".") && !keyword.startsWith("Haunt")) {
|
} else if (keyword.endsWith(".") && !keyword.startsWith("Haunt")) {
|
||||||
sbLong.append(keyword).append("\r\n");
|
sbLong.append(keyword).append("\r\n");
|
||||||
} else {
|
} else {
|
||||||
|
if (keyword.contains("Strike")) {
|
||||||
|
keyword = keyword.replace("Strike", "strike");
|
||||||
|
}
|
||||||
sb.append(i !=0 && sb.length() !=0 ? ", " : "");
|
sb.append(i !=0 && sb.length() !=0 ? ", " : "");
|
||||||
sb.append(i > 0 && sb.length() !=0 ? keyword.toLowerCase() : keyword);
|
sb.append(i > 0 && sb.length() !=0 ? keyword.toLowerCase() : keyword);
|
||||||
}
|
}
|
||||||
@@ -5418,16 +5421,6 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
|||||||
runParams.put(AbilityKey.DefendingPlayer, game.getCombat() != null ? game.getCombat().getDefendingPlayerRelatedTo(source) : null);
|
runParams.put(AbilityKey.DefendingPlayer, game.getCombat() != null ? game.getCombat().getDefendingPlayerRelatedTo(source) : null);
|
||||||
getGame().getTriggerHandler().runTrigger(TriggerType.DamageDone, runParams, false);
|
getGame().getTriggerHandler().runTrigger(TriggerType.DamageDone, runParams, false);
|
||||||
|
|
||||||
int excess = 0;
|
|
||||||
if (isPlaneswalker()) {
|
|
||||||
excess = damageIn - getCurrentLoyalty();
|
|
||||||
} else if (getDamage() > getLethal()) {
|
|
||||||
// Creature already has lethal damage
|
|
||||||
excess = damageIn;
|
|
||||||
} else {
|
|
||||||
excess = damageIn + getDamage() - getLethal();
|
|
||||||
}
|
|
||||||
|
|
||||||
DamageType damageType = DamageType.Normal;
|
DamageType damageType = DamageType.Normal;
|
||||||
if (isPlaneswalker()) { // 120.3c
|
if (isPlaneswalker()) { // 120.3c
|
||||||
subtractCounter(CounterType.get(CounterEnumType.LOYALTY), damageIn);
|
subtractCounter(CounterType.get(CounterEnumType.LOYALTY), damageIn);
|
||||||
@@ -5459,16 +5452,6 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
|||||||
game.fireEvent(new GameEventCardDamaged(this, source, damageIn, damageType));
|
game.fireEvent(new GameEventCardDamaged(this, source, damageIn, damageType));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (excess > 0) {
|
|
||||||
// Run triggers
|
|
||||||
runParams = AbilityKey.newMap();
|
|
||||||
runParams.put(AbilityKey.DamageSource, source);
|
|
||||||
runParams.put(AbilityKey.DamageTarget, this);
|
|
||||||
runParams.put(AbilityKey.DamageAmount, excess);
|
|
||||||
runParams.put(AbilityKey.IsCombatDamage, isCombat);
|
|
||||||
getGame().getTriggerHandler().runTrigger(TriggerType.ExcessDamage, runParams, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
return damageIn;
|
return damageIn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
package forge.game.card;
|
package forge.game.card;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Map.Entry;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import com.google.common.collect.ForwardingTable;
|
import com.google.common.collect.ForwardingTable;
|
||||||
@@ -87,6 +88,26 @@ public class CardDamageMap extends ForwardingTable<Card, GameEntity, Integer> {
|
|||||||
runParams.put(AbilityKey.IsCombatDamage, isCombat);
|
runParams.put(AbilityKey.IsCombatDamage, isCombat);
|
||||||
game.getTriggerHandler().runTrigger(TriggerType.DamageAll, runParams, false);
|
game.getTriggerHandler().runTrigger(TriggerType.DamageAll, runParams, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void triggerExcessDamage(boolean isCombat, Map<Card, Integer> lethalDamage, final Game game) {
|
||||||
|
for (Entry<Card, Integer> damaged : lethalDamage.entrySet()) {
|
||||||
|
int sum = 0;
|
||||||
|
for (Integer i : this.column(damaged.getKey()).values()) {
|
||||||
|
sum += i;
|
||||||
|
}
|
||||||
|
|
||||||
|
int excess = sum - (damaged.getKey().hasBeenDealtDeathtouchDamage() ? 1 : damaged.getValue());
|
||||||
|
if (excess > 0) {
|
||||||
|
// Run triggers
|
||||||
|
final Map<AbilityKey, Object> runParams = AbilityKey.newMap();
|
||||||
|
runParams.put(AbilityKey.DamageTarget, damaged.getKey());
|
||||||
|
runParams.put(AbilityKey.DamageAmount, excess);
|
||||||
|
runParams.put(AbilityKey.IsCombatDamage, isCombat);
|
||||||
|
game.getTriggerHandler().runTrigger(TriggerType.ExcessDamage, runParams, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* special put logic, sum the values
|
* special put logic, sum the values
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -319,18 +319,18 @@ public final class StaticAbilityContinuous {
|
|||||||
String[] restrictions = params.containsKey("SharedRestrictions") ? params.get("SharedRestrictions").split(",") : new String[] {"Card"};
|
String[] restrictions = params.containsKey("SharedRestrictions") ? params.get("SharedRestrictions").split(",") : new String[] {"Card"};
|
||||||
addKeywords = CardFactoryUtil.sharedKeywords(addKeywords, restrictions, zones, hostCard, stAb);
|
addKeywords = CardFactoryUtil.sharedKeywords(addKeywords, restrictions, zones, hostCard, stAb);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (params.containsKey("CantHaveKeyword")) {
|
if (params.containsKey("CantHaveKeyword")) {
|
||||||
cantHaveKeyword = Keyword.setValueOf(params.get("CantHaveKeyword"));
|
cantHaveKeyword = Keyword.setValueOf(params.get("CantHaveKeyword"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (params.containsKey("RemoveKeyword")) {
|
if (params.containsKey("RemoveKeyword")) {
|
||||||
removeKeywords = Arrays.asList(params.get("RemoveKeyword").split(" & "));
|
removeKeywords = Arrays.asList(params.get("RemoveKeyword").split(" & "));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((layer == StaticAbilityLayer.RULES) && params.containsKey("AddHiddenKeyword")) {
|
if (layer == StaticAbilityLayer.RULES && params.containsKey("AddHiddenKeyword")) {
|
||||||
addHiddenKeywords.addAll(Arrays.asList(params.get("AddHiddenKeyword").split(" & ")));
|
addHiddenKeywords.addAll(Arrays.asList(params.get("AddHiddenKeyword").split(" & ")));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ import java.util.Map;
|
|||||||
|
|
||||||
import forge.game.ability.AbilityKey;
|
import forge.game.ability.AbilityKey;
|
||||||
import forge.game.card.Card;
|
import forge.game.card.Card;
|
||||||
import forge.game.card.CardUtil;
|
|
||||||
import forge.game.spellability.SpellAbility;
|
import forge.game.spellability.SpellAbility;
|
||||||
import forge.util.Localizer;
|
import forge.util.Localizer;
|
||||||
|
|
||||||
@@ -49,9 +48,6 @@ public class TriggerExcessDamage extends Trigger {
|
|||||||
* @param runParams*/
|
* @param runParams*/
|
||||||
@Override
|
@Override
|
||||||
public final boolean performTest(final Map<AbilityKey, Object> runParams) {
|
public final boolean performTest(final Map<AbilityKey, Object> runParams) {
|
||||||
if (!matchesValidParam("ValidSource", runParams.get(AbilityKey.DamageSource))) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (!matchesValidParam("ValidTarget", runParams.get(AbilityKey.DamageTarget))) {
|
if (!matchesValidParam("ValidTarget", runParams.get(AbilityKey.DamageTarget))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -68,7 +64,6 @@ public class TriggerExcessDamage extends Trigger {
|
|||||||
/** {@inheritDoc} */
|
/** {@inheritDoc} */
|
||||||
@Override
|
@Override
|
||||||
public final void setTriggeringObjects(final SpellAbility sa, Map<AbilityKey, Object> runParams) {
|
public final void setTriggeringObjects(final SpellAbility sa, Map<AbilityKey, Object> runParams) {
|
||||||
sa.setTriggeringObject(AbilityKey.Source, CardUtil.getLKICopy((Card)runParams.get(AbilityKey.DamageSource)));
|
|
||||||
sa.setTriggeringObject(AbilityKey.Target, runParams.get(AbilityKey.DamageTarget));
|
sa.setTriggeringObject(AbilityKey.Target, runParams.get(AbilityKey.DamageTarget));
|
||||||
sa.setTriggeringObjectsFrom(runParams, AbilityKey.DamageAmount);
|
sa.setTriggeringObjectsFrom(runParams, AbilityKey.DamageAmount);
|
||||||
}
|
}
|
||||||
@@ -76,7 +71,6 @@ public class TriggerExcessDamage extends Trigger {
|
|||||||
@Override
|
@Override
|
||||||
public String getImportantStackObjects(SpellAbility sa) {
|
public String getImportantStackObjects(SpellAbility sa) {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append(Localizer.getInstance().getMessage("lblDamageSource")).append(": ").append(sa.getTriggeringObject(AbilityKey.Source)).append(", ");
|
|
||||||
sb.append(Localizer.getInstance().getMessage("lblDamaged")).append(": ").append(sa.getTriggeringObject(AbilityKey.Target)).append(", ");
|
sb.append(Localizer.getInstance().getMessage("lblDamaged")).append(": ").append(sa.getTriggeringObject(AbilityKey.Target)).append(", ");
|
||||||
sb.append(Localizer.getInstance().getMessage("lblAmount")).append(": ").append(sa.getTriggeringObject(AbilityKey.DamageAmount));
|
sb.append(Localizer.getInstance().getMessage("lblAmount")).append(": ").append(sa.getTriggeringObject(AbilityKey.DamageAmount));
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
Name:Abandon Hope
|
Name:Abandon Hope
|
||||||
ManaCost:X 1 B
|
ManaCost:X 1 B
|
||||||
Types:Sorcery
|
Types:Sorcery
|
||||||
A:SP$ Discard | Cost$ X 1 B Discard<X/Card/card> | ValidTgts$ Opponent | Mode$ RevealYouChoose | NumCards$ X | SpellDescription$ Look at target opponent's hand and choose X cards from it. That player discards those cards.
|
A:SP$ Discard | Cost$ X 1 B Discard<X/Card/card> | ValidTgts$ Opponent | Mode$ LookYouChoose | NumCards$ X | SpellDescription$ Look at target opponent's hand and choose X cards from it. That player discards those cards.
|
||||||
SVar:X:Count$xPaid
|
SVar:X:Count$xPaid
|
||||||
AI:RemoveDeck:All
|
AI:RemoveDeck:All
|
||||||
Oracle:As an additional cost to cast this spell, discard X cards.\nLook at target opponent's hand and choose X cards from it. That player discards those cards.
|
Oracle:As an additional cost to cast this spell, discard X cards.\nLook at target opponent's hand and choose X cards from it. That player discards those cards.
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ Name:Captain Eberhart
|
|||||||
ManaCost:1 W
|
ManaCost:1 W
|
||||||
Types:Legendary Creature Human Soldier
|
Types:Legendary Creature Human Soldier
|
||||||
PT:1/1
|
PT:1/1
|
||||||
K:Double strike
|
K:Double Strike
|
||||||
S:Mode$ ReduceCost | ValidCard$ Card.YouOwn+DrawnThisTurn | Type$ Spell | Amount$ 1 | Description$ Spells cast from among cards you drew this turn cost {1} less to cast.
|
S:Mode$ ReduceCost | ValidCard$ Card.YouOwn+DrawnThisTurn | Type$ Spell | Amount$ 1 | Description$ Spells cast from among cards you drew this turn cost {1} less to cast.
|
||||||
S:Mode$ RaiseCost | ValidCard$ Card.OppOwn+DrawnThisTurn | Type$ Spell | Amount$ 1 | Description$ Spells cast from among cards your opponents drew this turn cost {1} more to cast.
|
S:Mode$ RaiseCost | ValidCard$ Card.OppOwn+DrawnThisTurn | Type$ Spell | Amount$ 1 | Description$ Spells cast from among cards your opponents drew this turn cost {1} more to cast.
|
||||||
Oracle:Double strike\nSpells cast from among cards you drew this turn cost {1} less to cast.\nSpells cast from among cards your opponents drew this turn cost {1} more to cast.
|
Oracle:Double strike\nSpells cast from among cards you drew this turn cost {1} less to cast.\nSpells cast from among cards your opponents drew this turn cost {1} more to cast.
|
||||||
|
|||||||
@@ -5,5 +5,5 @@ PT:1/1
|
|||||||
K:Level up:2
|
K:Level up:2
|
||||||
SVar:maxLevel:5
|
SVar:maxLevel:5
|
||||||
S:Mode$ Continuous | Affected$ Card.Self | SetPower$ 2 | SetToughness$ 2 | IsPresent$ Card.Self+counters_GE1_LEVEL+counters_LE4_LEVEL | Description$ LEVEL 1-4 2/2
|
S:Mode$ Continuous | Affected$ Card.Self | SetPower$ 2 | SetToughness$ 2 | IsPresent$ Card.Self+counters_GE1_LEVEL+counters_LE4_LEVEL | Description$ LEVEL 1-4 2/2
|
||||||
S:Mode$ Continuous | Affected$ Card.Self | SetPower$ 5 | SetToughness$ 5 | IsPresent$ Card.Self+counters_GE5_LEVEL | AddKeyword$ First Strike | Description$ LEVEL 5+ 5/5 CARDNAME has First Strike
|
S:Mode$ Continuous | Affected$ Card.Self | SetPower$ 5 | SetToughness$ 5 | IsPresent$ Card.Self+counters_GE5_LEVEL | AddKeyword$ First Strike | Description$ LEVEL 5+ 5/5 First strike
|
||||||
Oracle:Level up {2} ({2}: Put a level counter on this. Level up only as a sorcery.)\nLEVEL 1-4\n2/2\nLEVEL 5+\n5/5\nFirst strike
|
Oracle:Level up {2} ({2}: Put a level counter on this. Level up only as a sorcery.)\nLEVEL 1-4\n2/2\nLEVEL 5+\n5/5\nFirst strike
|
||||||
|
|||||||
@@ -3,6 +3,6 @@ ManaCost:3 B B
|
|||||||
Types:Enchantment
|
Types:Enchantment
|
||||||
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | OptionalDecider$ You | TriggerDescription$ At the beginning of your upkeep, you may put a verse counter on CARDNAME.
|
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | OptionalDecider$ You | TriggerDescription$ At the beginning of your upkeep, you may put a verse counter on CARDNAME.
|
||||||
SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ VERSE | CounterNum$ 1
|
SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ VERSE | CounterNum$ 1
|
||||||
A:AB$ Discard | Cost$ B Sac<1/CARDNAME> | ValidTgts$ Opponent | Mode$ RevealYouChoose | NumCards$ X | SpellDescription$ Look at target opponent's hand and choose up to X cards from it, where X is the number of verse counters on CARDNAME. That player discards those cards.
|
A:AB$ Discard | Cost$ B Sac<1/CARDNAME> | ValidTgts$ Opponent | Mode$ LookYouChoose | NumCards$ X | SpellDescription$ Look at target opponent's hand and choose up to X cards from it, where X is the number of verse counters on CARDNAME. That player discards those cards.
|
||||||
SVar:X:Count$CardCounters.VERSE
|
SVar:X:Count$CardCounters.VERSE
|
||||||
Oracle:At the beginning of your upkeep, you may put a verse counter on Discordant Dirge.\n{B}, Sacrifice Discordant Dirge: Look at target opponent's hand and choose up to X cards from it, where X is the number of verse counters on Discordant Dirge. That player discards those cards.
|
Oracle:At the beginning of your upkeep, you may put a verse counter on Discordant Dirge.\n{B}, Sacrifice Discordant Dirge: Look at target opponent's hand and choose up to X cards from it, where X is the number of verse counters on Discordant Dirge. That player discards those cards.
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ ManaCost:2 G
|
|||||||
Types:Creature Spider
|
Types:Creature Spider
|
||||||
PT:2/3
|
PT:2/3
|
||||||
K:Reach
|
K:Reach
|
||||||
S:Mode$ Continuous | Affected$ Card.Self | AddPower$ 1 | AddKeyword$ First strike | IsPresent$ Permanent.Red+YouCtrl | Description$ As long as you control a red permanent, CARDNAME gets +1/+0 and has first strike.
|
S:Mode$ Continuous | Affected$ Card.Self | AddPower$ 1 | AddKeyword$ First Strike | IsPresent$ Permanent.Red+YouCtrl | Description$ As long as you control a red permanent, CARDNAME gets +1/+0 and has first strike.
|
||||||
SVar:BuffedBy:Permanent.Red
|
SVar:BuffedBy:Permanent.Red
|
||||||
DeckHints:Color$Red
|
DeckHints:Color$Red
|
||||||
Oracle:Reach (This creature can block creatures with flying.)\nAs long as you control a red permanent, Ember Weaver gets +1/+0 and has first strike.
|
Oracle:Reach (This creature can block creatures with flying.)\nAs long as you control a red permanent, Ember Weaver gets +1/+0 and has first strike.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
Name:Extortion
|
Name:Extortion
|
||||||
ManaCost:3 B B
|
ManaCost:3 B B
|
||||||
Types:Sorcery
|
Types:Sorcery
|
||||||
A:SP$ Discard | Cost$ 3 B B | ValidTgts$ Opponent | Mode$ RevealYouChoose | NumCards$ 2 | SpellDescription$ Look at target player's hand and choose up to two cards from it. That player discards those cards.
|
A:SP$ Discard | Cost$ 3 B B | ValidTgts$ Opponent | Mode$ LookYouChoose | NumCards$ 2 | SpellDescription$ Look at target player's hand and choose up to two cards from it. That player discards those cards.
|
||||||
Oracle:Look at target player's hand and choose up to two cards from it. That player discards those cards.
|
Oracle:Look at target player's hand and choose up to two cards from it. That player discards those cards.
|
||||||
|
|||||||
@@ -6,6 +6,6 @@ SVar:TrigAngel:DB$ Token | TokenAmount$ 1 | TokenScript$ w_4_4_angel_warrior_fly
|
|||||||
SVar:DBAnimateAll:DB$ AnimateAll | ValidCards$ Angel.YouCtrl | Abilities$ TapDestroy | SpellDescription$ Until the end of turn, Angels you control gain "{T}: Destroy target creature with power less than this creature."
|
SVar:DBAnimateAll:DB$ AnimateAll | ValidCards$ Angel.YouCtrl | Abilities$ TapDestroy | SpellDescription$ Until the end of turn, Angels you control gain "{T}: Destroy target creature with power less than this creature."
|
||||||
SVar:TapDestroy:AB$ Destroy | Cost$ T | ValidTgts$ Creature.powerLTX | TgtPrompt$ Select target creature with power less than this creature | SpellDescription$ Destroy target creature with power less than this creature.
|
SVar:TapDestroy:AB$ Destroy | Cost$ T | ValidTgts$ Creature.powerLTX | TgtPrompt$ Select target creature with power less than this creature | SpellDescription$ Destroy target creature with power less than this creature.
|
||||||
SVar:X:Count$CardPower
|
SVar:X:Count$CardPower
|
||||||
SVar:TrigPump:DB$ PumpAll | ValidCards$ Angel.YouCtrl | KW$ Double Strike | SpellDescription$ Angels you control gain Double Strike until end of turn.
|
SVar:TrigPump:DB$ PumpAll | ValidCards$ Angel.YouCtrl | KW$ Double Strike | SpellDescription$ Angels you control gain double strike until end of turn.
|
||||||
DeckHints:Type$Angel
|
DeckHints:Type$Angel
|
||||||
Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI — Create a 4/4 white Angel Warrior creature token with flying and vigilance.\nII — Until end of turn, Angels you control gain "{T}: Destroy target creature with power less than this creature's power."\nIII — Angels you control gain double strike until end of turn.
|
Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI — Create a 4/4 white Angel Warrior creature token with flying and vigilance.\nII — Until end of turn, Angels you control gain "{T}: Destroy target creature with power less than this creature's power."\nIII — Angels you control gain double strike until end of turn.
|
||||||
|
|||||||
@@ -3,6 +3,6 @@ ManaCost:B B
|
|||||||
Types:Enchantment
|
Types:Enchantment
|
||||||
A:AB$ ChangeZone | Cost$ B B | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return CARDNAME to its owner's hand.
|
A:AB$ ChangeZone | Cost$ B B | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return CARDNAME to its owner's hand.
|
||||||
T:Mode$ SpellCast | ValidCard$ Card.Green | ValidActivatingPlayer$ Opponent | TriggerZones$ Battlefield | Execute$ TrigDiscard | OptionalDecider$ You | TriggerDescription$ Whenever an opponent casts a green spell, you may pay {B}{B}. If you do, look at that player's hand and choose a card from it. The player discards that card.
|
T:Mode$ SpellCast | ValidCard$ Card.Green | ValidActivatingPlayer$ Opponent | TriggerZones$ Battlefield | Execute$ TrigDiscard | OptionalDecider$ You | TriggerDescription$ Whenever an opponent casts a green spell, you may pay {B}{B}. If you do, look at that player's hand and choose a card from it. The player discards that card.
|
||||||
SVar:TrigDiscard:AB$ Discard | Cost$ B B | Defined$ TriggeredActivator | NumCards$ 1 | Mode$ RevealYouChoose
|
SVar:TrigDiscard:AB$ Discard | Cost$ B B | Defined$ TriggeredActivator | NumCards$ 1 | Mode$ LookYouChoose
|
||||||
AI:RemoveDeck:Random
|
AI:RemoveDeck:Random
|
||||||
Oracle:Whenever an opponent casts a green spell, you may pay {B}{B}. If you do, look at that player's hand and choose a card from it. The player discards that card.\n{B}{B}: Return Leshrac's Sigil to its owner's hand.
|
Oracle:Whenever an opponent casts a green spell, you may pay {B}{B}. If you do, look at that player's hand and choose a card from it. The player discards that card.\n{B}{B}: Return Leshrac's Sigil to its owner's hand.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
Name:Mind Warp
|
Name:Mind Warp
|
||||||
ManaCost:X 3 B
|
ManaCost:X 3 B
|
||||||
Types:Sorcery
|
Types:Sorcery
|
||||||
A:SP$ Discard | Cost$ X 3 B | ValidTgts$ Player | Mode$ RevealYouChoose | NumCards$ X | SpellDescription$ Target player reveals their hand. You choose X cards from it. That player discards those cards.
|
A:SP$ Discard | Cost$ X 3 B | ValidTgts$ Player | Mode$ LookYouChoose | NumCards$ X | SpellDescription$ Target player reveals their hand. You choose X cards from it. That player discards those cards.
|
||||||
SVar:X:Count$xPaid
|
SVar:X:Count$xPaid
|
||||||
Oracle:Look at target player's hand and choose X cards from it. That player discards those cards.
|
Oracle:Look at target player's hand and choose X cards from it. That player discards those cards.
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ Types:Enchantment
|
|||||||
A:AB$ GenericChoice | Cost$ G W Discard<1/Card> | ValidTgts$ Creature | Defined$ You | Choices$ DBPutCounter,DBBanding,DBFirstStrike,DBTrample | SpellDescription$ Put a +1/+1 counter on target creature or that creature gains banding, first strike, or trample.
|
A:AB$ GenericChoice | Cost$ G W Discard<1/Card> | ValidTgts$ Creature | Defined$ You | Choices$ DBPutCounter,DBBanding,DBFirstStrike,DBTrample | SpellDescription$ Put a +1/+1 counter on target creature or that creature gains banding, first strike, or trample.
|
||||||
SVar:DBPutCounter:DB$ PutCounter | Defined$ Targeted | CounterType$ P1P1 | CounterNum$ 1 | SpellDescription$ Put a +1/+1 counter on target creature.
|
SVar:DBPutCounter:DB$ PutCounter | Defined$ Targeted | CounterType$ P1P1 | CounterNum$ 1 | SpellDescription$ Put a +1/+1 counter on target creature.
|
||||||
SVar:DBBanding:DB$ Pump | Defined$ Targeted | KW$ Banding | Duration$ Permanent | SpellDescription$ Target creature gains Banding
|
SVar:DBBanding:DB$ Pump | Defined$ Targeted | KW$ Banding | Duration$ Permanent | SpellDescription$ Target creature gains Banding
|
||||||
SVar:DBFirstStrike:DB$ Pump | Defined$ Targeted | KW$ First Strike | Duration$ Permanent | SpellDescription$ Target creature gains First Strike
|
SVar:DBFirstStrike:DB$ Pump | Defined$ Targeted | KW$ First Strike | Duration$ Permanent | SpellDescription$ Target creature gains first strike
|
||||||
SVar:DBTrample:DB$ Pump | Defined$ Targeted | KW$ Trample | Duration$ Permanent | SpellDescription$ Target creature gains Trample
|
SVar:DBTrample:DB$ Pump | Defined$ Targeted | KW$ Trample | Duration$ Permanent | SpellDescription$ Target creature gains Trample
|
||||||
AI:RemoveDeck:All
|
AI:RemoveDeck:All
|
||||||
SVar:NonStackingEffect:True
|
SVar:NonStackingEffect:True
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
Name:Nightsnare
|
Name:Nightsnare
|
||||||
ManaCost:3 B
|
ManaCost:3 B
|
||||||
Types:Sorcery
|
Types:Sorcery
|
||||||
A:SP$ RevealHand | Cost$ 3 B | ValidTgts$ Opponent | RememberRevealed$ True | SubAbility$ DBChoose | StackDescription$ SpellDescription | SpellDescription$ Target opponent reveals their hand. You may choose a nonland card from it. If you do, that player discards that card. If you don't, that player discards two cards.
|
A:SP$ RevealHand | ValidTgts$ Opponent | RememberRevealed$ True | SubAbility$ DBChoose | SpellDescription$ Target opponent reveals their hand.
|
||||||
SVar:DBChoose:DB$ ChooseCard | ChoiceZone$ Hand | Amount$ 1 | Choices$ Card.nonLand+IsRemembered | SubAbility$ DBDiscard | ChoiceTitle$ You may choose a nonland card | StackDescription$ None
|
SVar:DBChoose:DB$ ChooseCard | ChoiceZone$ Hand | Amount$ 1 | Choices$ Card.nonLand+IsRemembered | ChoiceDesc$ nonland | FromDesc$ from it | SubAbility$ DBBranch | ChoiceTitle$ You may choose a nonland card | SpellDescription$ You may choose a nonland card from it.
|
||||||
SVar:DBDiscard:DB$ Discard | DefinedCards$ ChosenCard | Defined$ Targeted | Mode$ Defined | SubAbility$ DBCleanup | StackDescription$ None | ConditionDefined$ ChosenCard | ConditionPresent$ Card | ConditionCompare$ EQ1 | SubAbility$ DBDiscard2
|
SVar:DBBranch:DB$ Branch | BranchCondition$ ChosenCard | TrueSubAbility$ DBDiscard | FalseSubAbility$ DBDiscard2 | StackDescription$ If they do, {p:Targeted} discards that card. If they don't, {p:Targeted} discards two cards. | SpellDescription$ If you do, that player discards that card. If you don't, that player discards two cards.
|
||||||
SVar:DBDiscard2:DB$ Discard | Defined$ Targeted | NumCards$ 2 | Mode$ TgtChoose | SubAbility$ DBCleanup | ConditionDefined$ ChosenCard | ConditionPresent$ Card | ConditionCompare$ EQ0 | StackDescription$ None
|
SVar:DBDiscard:DB$ Discard | DefinedCards$ ChosenCard | Defined$ Targeted | Mode$ Defined | SubAbility$ DBCleanup
|
||||||
|
SVar:DBDiscard2:DB$ Discard | Defined$ Targeted | NumCards$ 2 | Mode$ TgtChoose | SubAbility$ DBCleanup
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True
|
||||||
AI:RemoveDeck:All
|
DeckHas:Ability$Discard
|
||||||
Oracle:Target opponent reveals their hand. You may choose a nonland card from it. If you do, that player discards that card. If you don't, that player discards two cards.
|
Oracle:Target opponent reveals their hand. You may choose a nonland card from it. If you do, that player discards that card. If you don't, that player discards two cards.
|
||||||
|
|||||||
@@ -4,6 +4,6 @@ Types:Creature Vampire Warrior
|
|||||||
PT:3/2
|
PT:3/2
|
||||||
K:Level up:2 B
|
K:Level up:2 B
|
||||||
SVar:maxLevel:3
|
SVar:maxLevel:3
|
||||||
S:Mode$ Continuous | Affected$ Card.Self | SetPower$ 4 | SetToughness$ 3 | AddKeyword$ Deathtouch | IsPresent$ Card.Self+counters_GE1_LEVEL+counters_LE2_LEVEL | Description$ LEVEL 1-2 4/3 CARDNAME has Deathtouch
|
S:Mode$ Continuous | Affected$ Card.Self | SetPower$ 4 | SetToughness$ 3 | AddKeyword$ Deathtouch | IsPresent$ Card.Self+counters_GE1_LEVEL+counters_LE2_LEVEL | Description$ LEVEL 1-2 4/3 Deathtouch
|
||||||
S:Mode$ Continuous | Affected$ Card.Self | SetPower$ 5 | SetToughness$ 4 | AddKeyword$ First Strike & Deathtouch | IsPresent$ Card.Self+counters_GE3_LEVEL | Description$ LEVEL 3+ 5/4 CARDNAME has First Strike and Deathtouch
|
S:Mode$ Continuous | Affected$ Card.Self | SetPower$ 5 | SetToughness$ 4 | AddKeyword$ First Strike & Deathtouch | IsPresent$ Card.Self+counters_GE3_LEVEL | Description$ LEVEL 3+ 5/4 First strike, deathtouch
|
||||||
Oracle:Level up {2}{B} ({2}{B}: Put a level counter on this. Level up only as a sorcery.)\nLEVEL 1-2\n4/3\nDeathtouch\nLEVEL 3+\n5/4\nFirst strike, deathtouch
|
Oracle:Level up {2}{B} ({2}{B}: Put a level counter on this. Level up only as a sorcery.)\nLEVEL 1-2\n4/3\nDeathtouch\nLEVEL 3+\n5/4\nFirst strike, deathtouch
|
||||||
|
|||||||
@@ -2,5 +2,5 @@ Name:Seer's Vision
|
|||||||
ManaCost:2 U B
|
ManaCost:2 U B
|
||||||
Types:Enchantment
|
Types:Enchantment
|
||||||
S:Mode$ Continuous | AffectedZone$ Hand | Affected$ Card.OppOwn | MayLookAt$ Player | Description$ Your opponents play with their hands revealed.
|
S:Mode$ Continuous | AffectedZone$ Hand | Affected$ Card.OppOwn | MayLookAt$ Player | Description$ Your opponents play with their hands revealed.
|
||||||
A:AB$ Discard | Cost$ Sac<1/CARDNAME> | ValidTgts$ Player | TgtPrompt$ Select target player. | Mode$ RevealYouChoose | NumCards$ 1 | SorcerySpeed$ True | SpellDescription$ Look at target player's hand and choose a card from it. That player discards that card. Activate only as a sorcery.
|
A:AB$ Discard | Cost$ Sac<1/CARDNAME> | ValidTgts$ Player | TgtPrompt$ Select target player. | Mode$ LookYouChoose | NumCards$ 1 | SorcerySpeed$ True | SpellDescription$ Look at target player's hand and choose a card from it. That player discards that card. Activate only as a sorcery.
|
||||||
Oracle:Your opponents play with their hands revealed.\nSacrifice Seer's Vision: Look at target player's hand and choose a card from it. That player discards that card. Activate only as a sorcery.
|
Oracle:Your opponents play with their hands revealed.\nSacrifice Seer's Vision: Look at target player's hand and choose a card from it. That player discards that card. Activate only as a sorcery.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
Name:Skillful Lunge
|
Name:Skillful Lunge
|
||||||
ManaCost:1 W
|
ManaCost:1 W
|
||||||
Types:Instant
|
Types:Instant
|
||||||
A:SP$ Pump | Cost$ 1 W | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +2 | KW$ First Strike | SpellDescription$ Target creature gets +2/+0 and gains First Strike until end of turn.
|
A:SP$ Pump | Cost$ 1 W | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +2 | KW$ First Strike | SpellDescription$ Target creature gets +2/+0 and gains first strike until end of turn.
|
||||||
Oracle:Target creature gets +2/+0 and gains first strike until end of turn.
|
Oracle:Target creature gets +2/+0 and gains first strike until end of turn.
|
||||||
|
|||||||
@@ -3,5 +3,5 @@ ManaCost:1 B R
|
|||||||
Types:Creature Vampire Soldier
|
Types:Creature Vampire Soldier
|
||||||
PT:2/2
|
PT:2/2
|
||||||
K:First Strike
|
K:First Strike
|
||||||
S:Mode$ Continuous | Affected$ Creature.Vampire+Other+YouCtrl | AddPower$ 1 | AddToughness$ 1 | AddKeyword$ First Strike | Description$ Other Vampire creatures you control get +1/+1 and have First Strike.
|
S:Mode$ Continuous | Affected$ Creature.Vampire+Other+YouCtrl | AddPower$ 1 | AddToughness$ 1 | AddKeyword$ First Strike | Description$ Other Vampire creatures you control get +1/+1 and have first strike.
|
||||||
Oracle:First strike\nOther Vampire creatures you control get +1/+1 and have first strike.
|
Oracle:First strike\nOther Vampire creatures you control get +1/+1 and have first strike.
|
||||||
|
|||||||
@@ -4,6 +4,6 @@ Types:Creature Human Knight
|
|||||||
PT:1/1
|
PT:1/1
|
||||||
K:Level up:W
|
K:Level up:W
|
||||||
SVar:maxLevel:7
|
SVar:maxLevel:7
|
||||||
S:Mode$ Continuous | Affected$ Card.Self | SetPower$ 3 | SetToughness$ 3 | AddKeyword$ First Strike | IsPresent$ Card.Self+counters_GE2_LEVEL+counters_LE6_LEVEL | Description$ LEVEL 2-6 3/3 CARDNAME has First Strike
|
S:Mode$ Continuous | Affected$ Card.Self | SetPower$ 3 | SetToughness$ 3 | AddKeyword$ First Strike | IsPresent$ Card.Self+counters_GE2_LEVEL+counters_LE6_LEVEL | Description$ LEVEL 2-6 3/3 First strike
|
||||||
S:Mode$ Continuous | Affected$ Card.Self | SetPower$ 4 | SetToughness$ 4 | AddKeyword$ Double Strike | IsPresent$ Card.Self+counters_GE7_LEVEL | Description$ LEVEL 7+ 4/4 CARDNAME has Double Strike
|
S:Mode$ Continuous | Affected$ Card.Self | SetPower$ 4 | SetToughness$ 4 | AddKeyword$ Double Strike | IsPresent$ Card.Self+counters_GE7_LEVEL | Description$ LEVEL 7+ 4/4 Double strike
|
||||||
Oracle:Level up {W} ({W}: Put a level counter on this. Level up only as a sorcery.)\nLEVEL 2-6\n3/3\nFirst strike\nLEVEL 7+\n4/4\nDouble strike
|
Oracle:Level up {W} ({W}: Put a level counter on this. Level up only as a sorcery.)\nLEVEL 2-6\n3/3\nFirst strike\nLEVEL 7+\n4/4\nDouble strike
|
||||||
|
|||||||
@@ -2,5 +2,5 @@ Name:Thrull Surgeon
|
|||||||
ManaCost:1 B
|
ManaCost:1 B
|
||||||
Types:Creature Thrull
|
Types:Creature Thrull
|
||||||
PT:1/1
|
PT:1/1
|
||||||
A:AB$ Discard | Cost$ 1 B Sac<1/CARDNAME> | ValidTgts$ Player | TgtPrompt$ Select target player. | Mode$ RevealYouChoose | NumCards$ 1 | SorcerySpeed$ True | SpellDescription$ Look at target player's hand and choose a card from it. That player discards that card. Activate only as a sorcery.
|
A:AB$ Discard | Cost$ 1 B Sac<1/CARDNAME> | ValidTgts$ Player | TgtPrompt$ Select target player. | Mode$ LookYouChoose | NumCards$ 1 | SorcerySpeed$ True | SpellDescription$ Look at target player's hand and choose a card from it. That player discards that card. Activate only as a sorcery.
|
||||||
Oracle:{1}{B}, Sacrifice Thrull Surgeon: Look at target player's hand and choose a card from it. That player discards that card. Activate only as a sorcery.
|
Oracle:{1}{B}, Sacrifice Thrull Surgeon: Look at target player's hand and choose a card from it. That player discards that card. Activate only as a sorcery.
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ Colors:white
|
|||||||
Types:Enchantment Aura
|
Types:Enchantment Aura
|
||||||
K:Enchant creature
|
K:Enchant creature
|
||||||
A:SP$ Attach | ValidTgts$ Creature | TgtPrompt$ Select target creature | AILogic$ Pump
|
A:SP$ Attach | ValidTgts$ Creature | TgtPrompt$ Select target creature | AILogic$ Pump
|
||||||
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Double strike | Description$ Enchanted creature has double strike.
|
S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Double Strike | Description$ Enchanted creature has double strike.
|
||||||
R:Event$ Moved | ValidCard$ Card.Self | Destination$ Graveyard | ReplaceWith$ Exile | Description$ If CARDNAME would be put into a graveyard from anywhere, exile it instead.
|
R:Event$ Moved | ValidCard$ Card.Self | Destination$ Graveyard | ReplaceWith$ Exile | Description$ If CARDNAME would be put into a graveyard from anywhere, exile it instead.
|
||||||
SVar:Exile:DB$ ChangeZone | Hidden$ True | Origin$ All | Destination$ Exile | Defined$ ReplacedCard
|
SVar:Exile:DB$ ChangeZone | Hidden$ True | Origin$ All | Destination$ Exile | Defined$ ReplacedCard
|
||||||
Oracle:Enchant creature\nEnchanted creature has double strike.\nIf Twinblade Invocation would be put into a graveyard from anywhere, exile it instead.
|
Oracle:Enchant creature\nEnchanted creature has double strike.\nIf Twinblade Invocation would be put into a graveyard from anywhere, exile it instead.
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ A:AB$ Pump | Cost$ 0 | Defined$ Self | NumAtt$ -1 | NumDef$ -1 | SubAbility$ DBC
|
|||||||
SVar:DBChoose:DB$ GenericChoice | Defined$ You | Choices$ DBFlying,DBBanding,DBFirstStrike,DBTrample
|
SVar:DBChoose:DB$ GenericChoice | Defined$ You | Choices$ DBFlying,DBBanding,DBFirstStrike,DBTrample
|
||||||
SVar:DBFlying:DB$ Pump | KW$ Flying | Defined$ Self | SpellDescription$ Target creature gains Flying until end of turn.
|
SVar:DBFlying:DB$ Pump | KW$ Flying | Defined$ Self | SpellDescription$ Target creature gains Flying until end of turn.
|
||||||
SVar:DBBanding:DB$ Pump | KW$ Banding | Defined$ Self | SpellDescription$ Target creature gains Banding until end of turn.
|
SVar:DBBanding:DB$ Pump | KW$ Banding | Defined$ Self | SpellDescription$ Target creature gains Banding until end of turn.
|
||||||
SVar:DBFirstStrike:DB$ Pump | KW$ First Strike | Defined$ Self | SpellDescription$ Target creature gains First Strike until end of turn.
|
SVar:DBFirstStrike:DB$ Pump | KW$ First Strike | Defined$ Self | SpellDescription$ Target creature gains first strike until end of turn.
|
||||||
SVar:DBTrample:DB$ Pump | KW$ Trample | Defined$ Self | SpellDescription$ Target creature gains Trample until end of turn.
|
SVar:DBTrample:DB$ Pump | KW$ Trample | Defined$ Self | SpellDescription$ Target creature gains Trample until end of turn.
|
||||||
AI:RemoveDeck:All
|
AI:RemoveDeck:All
|
||||||
Oracle:{0}: Urza's Avenger gets -1/-1 and gains your choice of banding, flying, first strike, or trample until end of turn. (Any creatures with banding, and up to one without, can attack in a band. Bands are blocked as a group. If any creatures with banding you control are blocking or being blocked by a creature, you divide that creature's combat damage, not its controller, among any of the creatures it's being blocked by or is blocking.)
|
Oracle:{0}: Urza's Avenger gets -1/-1 and gains your choice of banding, flying, first strike, or trample until end of turn. (Any creatures with banding, and up to one without, can attack in a band. Bands are blocked as a group. If any creatures with banding you control are blocking or being blocked by a creature, you divide that creature's combat damage, not its controller, among any of the creatures it's being blocked by or is blocking.)
|
||||||
|
|||||||
@@ -3,5 +3,5 @@ ManaCost:2 W
|
|||||||
Types:Creature Fox Ninja
|
Types:Creature Fox Ninja
|
||||||
PT:2/2
|
PT:2/2
|
||||||
K:Ninjutsu:3 W
|
K:Ninjutsu:3 W
|
||||||
K:Double strike
|
K:Double Strike
|
||||||
Oracle:Ninjutsu {3}{W} ({3}{W}, Return an unblocked attacker you control to hand: Put this card onto the battlefield from your hand tapped and attacking.)\nDouble strike
|
Oracle:Ninjutsu {3}{W} ({3}{W}, Return an unblocked attacker you control to hand: Put this card onto the battlefield from your hand tapped and attacking.)\nDouble strike
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ ManaCost:3 G
|
|||||||
Types:Enchantment Saga
|
Types:Enchantment Saga
|
||||||
K:Saga:3:DBSearch,DBPut,DBTransform
|
K:Saga:3:DBSearch,DBPut,DBTransform
|
||||||
SVar:DBSearch:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Forest.Basic | ChangeNum$ 2 | SpellDescription$ Search your library for up to two basic Forest cards, reveal them, put them into your hand, then shuffle.
|
SVar:DBSearch:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Forest.Basic | ChangeNum$ 2 | SpellDescription$ Search your library for up to two basic Forest cards, reveal them, put them into your hand, then shuffle.
|
||||||
SVar:DBPut:DB$ ChangeZone | Origin$ Graveyard | Destination$ Library | LibraryPosition$ 0 | ValidTgts$ Land | TgtPrompt$ Select up to one target land card | TargetMin$ 0 | TargetMax$ 1 | SpellDescription$ Put up to one target land card from your graveyard on top of your library.
|
SVar:DBPut:DB$ ChangeZone | Origin$ Graveyard | Destination$ Library | LibraryPosition$ 0 | ValidTgts$ Land.YouOwn | TgtPrompt$ Select up to one target land card | TargetMin$ 0 | TargetMax$ 1 | SpellDescription$ Put up to one target land card from your graveyard on top of your library.
|
||||||
SVar:DBTransform:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DBReturn | SpellDescription$ Exile this Saga, then return it to the battlefield transformed under your control.
|
SVar:DBTransform:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DBReturn | SpellDescription$ Exile this Saga, then return it to the battlefield transformed under your control.
|
||||||
SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | GainControl$ True | SubAbility$ DBCleanup
|
SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | GainControl$ True | SubAbility$ DBCleanup
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||||
|
|||||||
@@ -5,10 +5,10 @@ K:Equip:1
|
|||||||
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 2 | Description$ Equipped creature gets +2/+0.
|
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 2 | Description$ Equipped creature gets +2/+0.
|
||||||
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.EquippedBy | Execute$ TrigExile | TriggerDescription$ Whenever equipped creature dies, exile it.
|
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.EquippedBy | Execute$ TrigExile | TriggerDescription$ Whenever equipped creature dies, exile it.
|
||||||
SVar:TrigExile:DB$ ChangeZone | Defined$ TriggeredCard | Origin$ Graveyard | Destination$ Exile | RememberChanged$ True
|
SVar:TrigExile:DB$ ChangeZone | Defined$ TriggeredCard | Origin$ Graveyard | Destination$ Exile | RememberChanged$ True
|
||||||
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddKeyword$ Flying & First strike & Double strike & Deathtouch & Haste & Hexproof & Indestructible & Lifelink & Menace & Protection & Reach & Trample & Vigilance | SharedKeywordsZone$ Exile | SharedRestrictions$ Card.IsRemembered+ExiledWithSource | Description$ As long as a card exiled with CARDNAME has flying, equipped creature has flying. The same is true for first strike, double strike, deathtouch, haste, hexproof, indestructible, lifelink, menace, protection, reach, trample, and vigilance.
|
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddKeyword$ Flying & First Strike & Double Strike & Deathtouch & Haste & Hexproof & Indestructible & Lifelink & Menace & Protection & Reach & Trample & Vigilance | SharedKeywordsZone$ Exile | SharedRestrictions$ Card.IsRemembered+ExiledWithSource | Description$ As long as a card exiled with CARDNAME has flying, equipped creature has flying. The same is true for first strike, double strike, deathtouch, haste, hexproof, indestructible, lifelink, menace, protection, reach, trample, and vigilance.
|
||||||
T:Mode$ ChangesZone | Origin$ Exile | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBForget
|
T:Mode$ ChangesZone | Origin$ Exile | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered | Execute$ DBForget
|
||||||
SVar:DBForget:DB$ Pump | ForgetObjects$ TriggeredCard
|
SVar:DBForget:DB$ Pump | ForgetObjects$ TriggeredCard
|
||||||
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Static$ True | ValidCard$ Card.Self | Execute$ DBCleanup
|
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Static$ True | ValidCard$ Card.Self | Execute$ DBCleanup
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||||
DeckHints:Keyword$Flying|First strike|Double strike|Deathtouch|Haste|Hexproof|Indestructible|Lifelink|Menace|Protection|Reach|Trample|Vigilance
|
DeckHints:Keyword$Flying|First Strike|Double Strike|Deathtouch|Haste|Hexproof|Indestructible|Lifelink|Menace|Protection|Reach|Trample|Vigilance
|
||||||
Oracle:Whenever equipped creature dies, exile it.\nEquipped creature gets +2/+0.\nAs long as a card exiled with Eater of Virtue has flying, equipped creature has flying. The same is true for first strike, double strike, deathtouch, haste, hexproof, indestructible, lifelink, menace, protection, reach, trample, and vigilance.\nEquip {1}
|
Oracle:Whenever equipped creature dies, exile it.\nEquipped creature gets +2/+0.\nAs long as a card exiled with Eater of Virtue has flying, equipped creature has flying. The same is true for first strike, double strike, deathtouch, haste, hexproof, indestructible, lifelink, menace, protection, reach, trample, and vigilance.\nEquip {1}
|
||||||
|
|||||||
@@ -18,5 +18,5 @@ ManaCost:no cost
|
|||||||
Colors:white
|
Colors:white
|
||||||
Types:Enchantment Creature Human Monk
|
Types:Enchantment Creature Human Monk
|
||||||
PT:2/2
|
PT:2/2
|
||||||
K:First strike
|
K:First Strike
|
||||||
Oracle:First strike
|
Oracle:First strike
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ Name:Go-Shintai of Ancient Wars
|
|||||||
ManaCost:2 R
|
ManaCost:2 R
|
||||||
Types:Legendary Enchantment Creature Shrine
|
Types:Legendary Enchantment Creature Shrine
|
||||||
PT:2/2
|
PT:2/2
|
||||||
K:First strike
|
K:First Strike
|
||||||
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigImmediateTrig | TriggerDescription$ At the beginning of your end step, you may pay {1}. When you do, CARDNAME deals X damage to target player or planeswalker, where X is the number of Shrines you control.
|
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigImmediateTrig | TriggerDescription$ At the beginning of your end step, you may pay {1}. When you do, CARDNAME deals X damage to target player or planeswalker, where X is the number of Shrines you control.
|
||||||
SVar:TrigImmediateTrig:AB$ ImmediateTrigger | Cost$ 1 | Execute$ TrigDealDamage | SpellDescription$ CARDNAME deals X damage to target player or planeswalker, where X is the number of Shrines you control.
|
SVar:TrigImmediateTrig:AB$ ImmediateTrigger | Cost$ 1 | Execute$ TrigDealDamage | SpellDescription$ CARDNAME deals X damage to target player or planeswalker, where X is the number of Shrines you control.
|
||||||
SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ X
|
SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ X
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ Types:Creature Fox Pilot
|
|||||||
PT:2/2
|
PT:2/2
|
||||||
T:Mode$ Attacks | ValidCard$ Vehicle.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigCharm | TriggerDescription$ Whenever a Vehicle you control attacks, ABILITY
|
T:Mode$ Attacks | ValidCard$ Vehicle.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigCharm | TriggerDescription$ Whenever a Vehicle you control attacks, ABILITY
|
||||||
SVar:TrigCharm:DB$ Charm | Choices$ DBPump,DBUntap
|
SVar:TrigCharm:DB$ Charm | Choices$ DBPump,DBUntap
|
||||||
SVar:DBPump:DB$ Pump | Defined$ TriggeredAttacker | KW$ First strike | SpellDescription$ That Vehicle gains first strike until end of turn
|
SVar:DBPump:DB$ Pump | Defined$ TriggeredAttacker | KW$ First Strike | SpellDescription$ That Vehicle gains first strike until end of turn
|
||||||
SVar:DBUntap:DB$ Untap | Defined$ Self | SpellDescription$ Untap CARDNAME
|
SVar:DBUntap:DB$ Untap | Defined$ Self | SpellDescription$ Untap CARDNAME
|
||||||
DeckNeeds:Type$Vehicle
|
DeckNeeds:Type$Vehicle
|
||||||
Oracle:Whenever a Vehicle you control attacks, choose one —\n• That Vehicle gains first strike until end of turn.\n• Untap Kitsune Ace.
|
Oracle:Whenever a Vehicle you control attacks, choose one —\n• That Vehicle gains first strike until end of turn.\n• Untap Kitsune Ace.
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ Name:Lizard Blades
|
|||||||
ManaCost:1 R
|
ManaCost:1 R
|
||||||
Types:Artifact Creature Equipment Lizard
|
Types:Artifact Creature Equipment Lizard
|
||||||
PT:1/1
|
PT:1/1
|
||||||
K:Double strike
|
K:Double Strike
|
||||||
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddKeyword$ Double strike | Description$ Equipped creature has double strike.
|
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddKeyword$ Double Strike | Description$ Equipped creature has double strike.
|
||||||
K:Reconfigure:2
|
K:Reconfigure:2
|
||||||
Oracle:Trample\nEquipped creature has double strike.\nReconfigure {2} ({2}: Attach to target creature you control; or unattach from a creature. Reconfigure only as a sorcery. While attached, this isn't a creature.)
|
Oracle:Trample\nEquipped creature has double strike.\nReconfigure {2} ({2}: Attach to target creature you control; or unattach from a creature. Reconfigure only as a sorcery. While attached, this isn't a creature.)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
Name:March of Burgeoning Life
|
Name:March of Burgeoning Life
|
||||||
ManaCost:X G
|
ManaCost:X G
|
||||||
Types:Instant
|
Types:Instant
|
||||||
A:SP$ Pump | AnnounceTitle$ how many green cards to exile | Announce$ Exiled | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Creature.cmcLTX | TgtPrompt$ Choose target creature with mana value less than X | SubAbility$ DBSearch | StackDescription$ None | SpellDescription$ Choose target creature with mana value less than X. Search your library for a creature card with the same name as that creature, put it onto the battlefield tapped, then shuffle.
|
A:SP$ Pump | AnnounceTitle$ how many green cards to exile | Announce$ Exiled | ValidTgts$ Creature.cmcLTX | TgtPrompt$ Choose target creature with mana value less than X | SubAbility$ DBSearch | StackDescription$ None | SpellDescription$ Choose target creature with mana value less than X. Search your library for a creature card with the same name as that creature, put it onto the battlefield tapped, then shuffle.
|
||||||
SVar:DBSearch:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | ChangeType$ Targeted.Creature+sameName | ChangeTypeDesc$ creature card with the same name as {c:Targeted} | ChangeNum$ 1 | Mandatory$ True | Tapped$ True
|
SVar:DBSearch:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | ChangeType$ Targeted.Creature+sameName | ChangeTypeDesc$ creature card with the same name as {c:Targeted} | ChangeNum$ 1 | Mandatory$ True | Tapped$ True
|
||||||
S:Mode$ RaiseCost | ValidCard$ Card.Self | Type$ Spell | Cost$ ExileFromHand<Y/Card.Green/green cards> | EffectZone$ All | Description$ As an additional cost to cast this spell, you may exile any number of green cards from your hand. This spell costs {2} less to cast for each card exiled this way.
|
S:Mode$ RaiseCost | ValidCard$ Card.Self | Type$ Spell | Cost$ ExileFromHand<Y/Card.Green/green cards> | EffectZone$ All | Description$ As an additional cost to cast this spell, you may exile any number of green cards from your hand. This spell costs {2} less to cast for each card exiled this way.
|
||||||
S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ Z | EffectZone$ All | Relative$ True | Secondary$ True | Description$ This spell costs {2} less to cast for each card exiled this way.
|
S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ Z | EffectZone$ All | Relative$ True | Secondary$ True | Description$ This spell costs {2} less to cast for each card exiled this way.
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
Name:March of Otherworldly Light
|
||||||
|
ManaCost:X W
|
||||||
|
Types:Instant
|
||||||
|
A:SP$ ChangeZone | AnnounceTitle$ how many white cards to exile | Announce$ Exiled | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Artifact.cmcLEX,Creature.cmcLEX,Enchantment.cmcLEX | TgtPrompt$ Select target artifact, creature, or enchantment with mana value X or less | SpellDescription$ Exile target artifact, creature, or enchantment with mana value X or less.
|
||||||
|
S:Mode$ RaiseCost | ValidCard$ Card.Self | Type$ Spell | Cost$ ExileFromHand<Y/Card.White/white cards> | EffectZone$ All | Description$ As an additional cost to cast this spell, you may exile any number of white cards from your hand. This spell costs {2} less to cast for each card exiled this way.
|
||||||
|
S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ Z | EffectZone$ All | Relative$ True | Secondary$ True | Description$ This spell costs {2} less to cast for each card exiled this way.
|
||||||
|
SVar:X:Count$xPaid
|
||||||
|
SVar:Y:SVar$Exiled
|
||||||
|
SVar:Z:SVar$Y/Times.2
|
||||||
|
SVar:Exiled:Number$0
|
||||||
|
Oracle:As an additional cost to cast this spell, you may exile any number of white cards from your hand. This spell costs {2} less to cast for each card exiled this way.\nExile target artifact, creature, or enchantment with mana value X or less.
|
||||||
@@ -1,14 +1,14 @@
|
|||||||
Name:March of Reckless Joy
|
Name:March of Reckless Joy
|
||||||
ManaCost:X R
|
ManaCost:X R
|
||||||
Types:Instant
|
Types:Instant
|
||||||
A:SP$ Dig | Cost$ X R | AdditionalDesc$ This spell costs {2} less to cast for each card exiled this way. | AnnounceTitle$ how many red cards to exile | Announce$ Exiled | DB$ Dig | Defined$ You | DigNum$ X | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect | SpellDescription$ Exile the top X cards of your library. Until the end of your next turn, you may play up to two of those cards.
|
A:SP$ Dig | Cost$ X R | AdditionalDesc$ This spell costs {2} less to cast for each card exiled this way. | AnnounceTitle$ how many red cards to exile | Announce$ Exiled | Defined$ You | DigNum$ X | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect | SpellDescription$ Exile the top X cards of your library. You may play up to two of those cards until the end of your next turn.
|
||||||
S:Mode$ RaiseCost | ValidCard$ Card.Self | Type$ Spell | Cost$ ExileFromHand<Y/Card.Red/red cards> | EffectZone$ All | Description$ As an additional cost to cast this spell, you may exile any number of red cards from your hand. This spell costs {2} less to cast for each card exiled this way.
|
S:Mode$ RaiseCost | ValidCard$ Card.Self | Type$ Spell | Cost$ ExileFromHand<Y/Card.Red/red cards> | EffectZone$ All | Description$ As an additional cost to cast this spell, you may exile any number of red cards from your hand. This spell costs {2} less to cast for each card exiled this way.
|
||||||
S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ Z | EffectZone$ All | Relative$ True | Secondary$ True | Description$ This spell costs {2} less to cast for each card exiled this way.
|
S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ Z | EffectZone$ All | Relative$ True | Secondary$ True | Description$ This spell costs {2} less to cast for each card exiled this way.
|
||||||
SVar:DBEffect:DB$ Effect | RememberObjects$ RememberedCard | StaticAbilities$ MayPlay | Duration$ UntilTheEndOfYourNextTurn | ForgetOnMoved$ Exile | SubAbility$ DBCleanup
|
SVar:DBEffect:DB$ Effect | RememberObjects$ RememberedCard | StaticAbilities$ MayPlay | Duration$ UntilTheEndOfYourNextTurn | ForgetOnMoved$ Exile | SubAbility$ DBCleanup | SpellDescription$ You may play up to two of those cards until the end of your next turn.
|
||||||
SVar:MayPlay:Mode$ Continuous | Affected$ Card.IsRemembered | MayPlay$ True | MayPlayLimit$ 2 | EffectZone$ Command | AffectedZone$ Exile | Description$ Until the end of your next turn, you may play up to two of those cards.
|
SVar:MayPlay:Mode$ Continuous | Affected$ Card.IsRemembered | MayPlay$ True | MayPlayLimit$ 2 | EffectZone$ Command | AffectedZone$ Exile | Description$ You may play up to two of those cards until the end of your next turn.
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||||
SVar:X:Count$xPaid
|
SVar:X:Count$xPaid
|
||||||
SVar:Y:SVar$Exiled
|
SVar:Y:SVar$Exiled
|
||||||
SVar:Z:SVar$Y/Times.2
|
SVar:Z:SVar$Y/Times.2
|
||||||
SVar:Exiled:Number$0
|
SVar:Exiled:Number$0
|
||||||
Oracle:As an additional cost to cast this spell, you may exile any number of red cards from your hand. This spell costs {2} less to cast for each card exiled this way.\nExile the top X cards of your library. Until the end of your next turn, you may play up to two of those cards.
|
Oracle:As an additional cost to cast this spell, you may exile any number of red cards from your hand. This spell costs {2} less to cast for each card exiled this way.\nExile the top X cards of your library. You may play up to two of those cards until the end of your next turn.
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
Name:March of Swirling Mist
|
||||||
|
ManaCost:X U
|
||||||
|
Types:Instant
|
||||||
|
A:SP$ Phases | AnnounceTitle$ how many blue cards to exile | Announce$ Exiled | ValidTgts$ Creature | TgtPrompt$ Select up to X target creatures | TargetMin$ 0 | TargetMax$ X | SpellDescription$ Up to X target creatures phase out. (While they're phased out, they're treated as though they don't exist. Each one phases in before its controller untaps during their next untap step.)
|
||||||
|
S:Mode$ RaiseCost | ValidCard$ Card.Self | Type$ Spell | Cost$ ExileFromHand<Y/Card.Blue/blue cards> | EffectZone$ All | Description$ As an additional cost to cast this spell, you may exile any number of blue cards from your hand. This spell costs {2} less to cast for each card exiled this way.
|
||||||
|
S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ Z | EffectZone$ All | Relative$ True | Secondary$ True | Description$ This spell costs {2} less to cast for each card exiled this way.
|
||||||
|
SVar:X:Count$xPaid
|
||||||
|
SVar:Y:SVar$Exiled
|
||||||
|
SVar:Z:SVar$Y/Times.2
|
||||||
|
SVar:Exiled:Number$0
|
||||||
|
Oracle:As an additional cost to cast this spell, you may exile any number of blue cards from your hand. This spell costs {2} less to cast for each card exiled this way.\nUp to X target creatures phase out. (While they're phased out, they're treated as though they don't exist. Each one phases in before its controller untaps during their next untap step.)
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
Name:March of Wretched Sorrow
|
||||||
|
ManaCost:X B
|
||||||
|
Types:Instant
|
||||||
|
A:SP$ DealDamage | AnnounceTitle$ how many black cards to exile | Announce$ Exiled | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Select target creature or planeswalker | NumDmg$ X | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals X damage to target creature or planeswalker
|
||||||
|
SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ X | SpellDescription$ and you gain X life.
|
||||||
|
S:Mode$ RaiseCost | ValidCard$ Card.Self | Type$ Spell | Cost$ ExileFromHand<Y/Card.Black/black cards> | EffectZone$ All | Description$ As an additional cost to cast this spell, you may exile any number of black cards from your hand. This spell costs {2} less to cast for each card exiled this way.
|
||||||
|
S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ Z | EffectZone$ All | Relative$ True | Secondary$ True | Description$ This spell costs {2} less to cast for each card exiled this way.
|
||||||
|
SVar:X:Count$xPaid
|
||||||
|
SVar:Y:SVar$Exiled
|
||||||
|
SVar:Z:SVar$Y/Times.2
|
||||||
|
SVar:Exiled:Number$0
|
||||||
|
DeckHas:Ability$LifeGain
|
||||||
|
Oracle:As an additional cost to cast this spell, you may exile any number of black cards from your hand. This spell costs {2} less to cast for each card exiled this way.\nMarch of Wretched Sorrow deals X damage to target creature or planeswalker and you gain X life.
|
||||||
@@ -2,7 +2,7 @@ Name:Raiyuu, Storm's Edge
|
|||||||
ManaCost:2 R W
|
ManaCost:2 R W
|
||||||
Types:Legendary Creature Human Samurai
|
Types:Legendary Creature Human Samurai
|
||||||
PT:3/3
|
PT:3/3
|
||||||
K:First strike
|
K:First Strike
|
||||||
T:Mode$ Attacks | ValidCard$ Samurai.YouCtrl,Warrior.YouCtrl | Alone$ True | TriggerZones$ Battlefield | Execute$ TrigUntap | TriggerDescription$ Whenever a Samurai or Warrior you control attacks alone, untap it. If it's the first combat phase of the turn, there is an additional combat phase after this phase.
|
T:Mode$ Attacks | ValidCard$ Samurai.YouCtrl,Warrior.YouCtrl | Alone$ True | TriggerZones$ Battlefield | Execute$ TrigUntap | TriggerDescription$ Whenever a Samurai or Warrior you control attacks alone, untap it. If it's the first combat phase of the turn, there is an additional combat phase after this phase.
|
||||||
SVar:TrigUntap:DB$ Untap | Defined$ TriggeredAttacker | SubAbility$ DBAddPhase
|
SVar:TrigUntap:DB$ Untap | Defined$ TriggeredAttacker | SubAbility$ DBAddPhase
|
||||||
SVar:DBAddPhase:DB$ AddPhase | ExtraPhase$ Combat | ConditionFirstCombat$ True | AfterPhase$ EndCombat
|
SVar:DBAddPhase:DB$ AddPhase | ExtraPhase$ Combat | ConditionFirstCombat$ True | AfterPhase$ EndCombat
|
||||||
|
|||||||
12
forge-gui/res/cardsfolder/upcoming/reckoner_shakedown.txt
Normal file
12
forge-gui/res/cardsfolder/upcoming/reckoner_shakedown.txt
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
Name:Reckoner Shakedown
|
||||||
|
ManaCost:2 B
|
||||||
|
Types:Sorcery
|
||||||
|
A:SP$ RevealHand | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | RememberRevealed$ True | SubAbility$ DBChoose | SpellDescription$ Target opponent reveals their hand.
|
||||||
|
SVar:DBChoose:DB$ ChooseCard | ChoiceZone$ Hand | Amount$ 1 | Choices$ Card.nonLand+IsRemembered | ChoiceDesc$ nonland | FromDesc$ from it | SubAbility$ DBBranch | ChoiceTitle$ You may choose a nonland card | SpellDescription$ You may choose a nonland card from it.
|
||||||
|
SVar:DBBranch:DB$ Branch | BranchCondition$ ChosenCard | TrueSubAbility$ DBDiscard | FalseSubAbility$ DBPutCounter | StackDescription$ If they do, {p:Targeted} discards that card. If they don't, they put two +1/+1 counters on a creature or Vehicle they control. | SpellDescription$ If you do, that player discards that card. If you don't, put two +1/+1 counters on a creature or Vehicle you control.
|
||||||
|
SVar:DBDiscard:DB$ Discard | DefinedCards$ ChosenCard | Defined$ Targeted | Mode$ Defined | SubAbility$ DBCleanup
|
||||||
|
SVar:DBPutCounter:DB$ PutCounter | Choices$ Creature.YouCtrl,Vehicle.YouCtrl | ChoiceTitle$ Choose a creature or Vehicle you control | CounterType$ P1P1 | CounterNum$ 2 | SubAbility$ DBCleanup
|
||||||
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True
|
||||||
|
DeckHas:Ability$Discard|Counters
|
||||||
|
DeckHints:Type$Creature|Vehicle
|
||||||
|
Oracle:Target opponent reveals their hand. You may choose a nonland card from it. If you do, that player discards that card. If you don't, put two +1/+1 counters on a creature or Vehicle you control.
|
||||||
@@ -3,7 +3,7 @@ ManaCost:1 G
|
|||||||
Types:Legendary Enchantment Creature Snake Druid
|
Types:Legendary Enchantment Creature Snake Druid
|
||||||
PT:1/3
|
PT:1/3
|
||||||
A:AB$ Dig | Cost$ 1 G T Return<1/CARDNAME> | DigNum$ 4 | Reveal$ True | ChangeNum$ 1 | Optional$ True | ChangeValid$ Land | DestinationZone$ Battlefield | Tapped$ True | DestinationZone2$ Graveyard | SpellDescription$ Reveal the top four cards of your library. You may put a land card from among them onto the battlefield tapped. Put the rest into your graveyard.
|
A:AB$ Dig | Cost$ 1 G T Return<1/CARDNAME> | DigNum$ 4 | Reveal$ True | ChangeNum$ 1 | Optional$ True | ChangeValid$ Land | DestinationZone$ Battlefield | Tapped$ True | DestinationZone2$ Graveyard | SpellDescription$ Reveal the top four cards of your library. You may put a land card from among them onto the battlefield tapped. Put the rest into your graveyard.
|
||||||
A:AB$ ChangeZone | PrecostDesc$ Channel — | Cost$ X X G G Discard<1/NICKNAME> | ActivationZone$ Hand | Origin$ Graveyard | Destination$ Hand | ChangeType$ Card.nonLegendary | ChangeNum$ X | Mandatory$ True | SpellDescription$ Return X target nonlegendary cards from your graveyard to your hand.
|
A:AB$ ChangeZone | PrecostDesc$ Channel — | Cost$ X X G G Discard<1/NICKNAME> | ActivationZone$ Hand | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Card.nonLegendary+YouOwn | TargetMin$ X | TargetMax$ X | SpellDescription$ Return X target nonlegendary cards from your graveyard to your hand.
|
||||||
SVar:X:Count$xPaid
|
SVar:X:Count$xPaid
|
||||||
DeckHas:Ability$Graveyard|Discard
|
DeckHas:Ability$Graveyard|Discard
|
||||||
Oracle:{1}{G}, {T}, Return Shigeki, Jukai Visionary to its owner's hand: Reveal the top four cards of your library. You may put a land card from among them onto the battlefield tapped. Put the rest into your graveyard.\nChannel — {X}{X}{G}{G}, Discard Shigeki: Return X target nonlegendary cards from your graveyard to your hand.
|
Oracle:{1}{G}, {T}, Return Shigeki, Jukai Visionary to its owner's hand: Reveal the top four cards of your library. You may put a land card from among them onto the battlefield tapped. Put the rest into your graveyard.\nChannel — {X}{X}{G}{G}, Discard Shigeki: Return X target nonlegendary cards from your graveyard to your hand.
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ Types:Legendary Creature Moonfolk Wizard
|
|||||||
PT:2/3
|
PT:2/3
|
||||||
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Hand | ValidCard$ Permanent.nonCreature | ActivationLimit$ 1 | Execute$ TrigDraw | TriggerDescription$ Whenever one or more noncreature permanents are returned to hand, draw a card. This ability triggers only once each turn.
|
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Hand | ValidCard$ Permanent.nonCreature | ActivationLimit$ 1 | Execute$ TrigDraw | TriggerDescription$ Whenever one or more noncreature permanents are returned to hand, draw a card. This ability triggers only once each turn.
|
||||||
SVar:TrigDraw:DB$ Draw | NumCards$ 1
|
SVar:TrigDraw:DB$ Draw | NumCards$ 1
|
||||||
A:AB$ ChangeZone | Cost$ X W Return<1/Land/land> | ValidTgts$ Artifact.cmcLEX,Enchantment.cmcLEX | TgtPrompt$ Select target artifact or enchantment card with mana value X or less | Origin$ Graveyard | Destination$ Battlefield | SorcerySpeed$ True | SpellDescription$ Return target artifact or enchantment card with mana value X or less from your graveyard to the battlefield. Activate only as a sorcery.
|
A:AB$ ChangeZone | Cost$ X W Return<1/Land/land> | ValidTgts$ Artifact.cmcLEX+YouOwn,Enchantment.cmcLEX+YouOwn | TgtPrompt$ Select target artifact or enchantment card with mana value X or less | Origin$ Graveyard | Destination$ Battlefield | SorcerySpeed$ True | SpellDescription$ Return target artifact or enchantment card with mana value X or less from your graveyard to the battlefield. Activate only as a sorcery.
|
||||||
SVar:X:Count$xPaid
|
SVar:X:Count$xPaid
|
||||||
DeckHints:Type$Artifact|Enchantment
|
DeckHints:Type$Artifact|Enchantment
|
||||||
DeckHas:Ability$Graveyard
|
DeckHas:Ability$Graveyard
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ Loyalty:3
|
|||||||
K:Flash
|
K:Flash
|
||||||
S:Mode$ CastWithFlash | ValidCard$ Card.Self+ThisTurnEntered | ValidSA$ Activated.Loyalty | Caster$ You | Description$ As long as CARDNAME entered the battlefield this turn, you may activate her loyalty abilities any time you could cast an instant.
|
S:Mode$ CastWithFlash | ValidCard$ Card.Self+ThisTurnEntered | ValidSA$ Activated.Loyalty | Caster$ You | Description$ As long as CARDNAME entered the battlefield this turn, you may activate her loyalty abilities any time you could cast an instant.
|
||||||
A:AB$ PutCounter | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | CounterType$ P1P1 | CounterNum$ 1 | ValidTgts$ Creature | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Select target creature | SubAbility$ DBPump | SpellDescription$ Put a +1/+1 counter on up to one target creature. It gains first strike until end of turn.
|
A:AB$ PutCounter | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | CounterType$ P1P1 | CounterNum$ 1 | ValidTgts$ Creature | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Select target creature | SubAbility$ DBPump | SpellDescription$ Put a +1/+1 counter on up to one target creature. It gains first strike until end of turn.
|
||||||
SVar:DBPump:DB$ Pump | Defined$ Targeted | Keywords$ First strike
|
SVar:DBPump:DB$ Pump | Defined$ Targeted | Keywords$ First Strike
|
||||||
A:AB$ Token | Cost$ SubCounter<1/LOYALTY> | Planeswalker$ True | TokenAmount$ 1 | TokenScript$ w_2_2_samurai_vigilance | TokenOwner$ You | SpellDescription$ Create a 2/2 white Samurai creature token with vigilance.
|
A:AB$ Token | Cost$ SubCounter<1/LOYALTY> | Planeswalker$ True | TokenAmount$ 1 | TokenScript$ w_2_2_samurai_vigilance | TokenOwner$ You | SpellDescription$ Create a 2/2 white Samurai creature token with vigilance.
|
||||||
A:AB$ ChangeZone | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature.tapped | TgtPrompt$ Select target tapped creature | Origin$ Battlefield | Destination$ Exile | SpellDescription$ Exile target tapped creature. You gain 2 life. | SubAbility$ DBGainLife
|
A:AB$ ChangeZone | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature.tapped | TgtPrompt$ Select target tapped creature | Origin$ Battlefield | Destination$ Exile | SpellDescription$ Exile target tapped creature. You gain 2 life. | SubAbility$ DBGainLife
|
||||||
SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 2
|
SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 2
|
||||||
|
|||||||
@@ -3,6 +3,6 @@ ManaCost:3 W
|
|||||||
Types:Creature Incarnation
|
Types:Creature Incarnation
|
||||||
PT:2/2
|
PT:2/2
|
||||||
K:First Strike
|
K:First Strike
|
||||||
S:Mode$ Continuous | Affected$ Creature.YouCtrl | EffectZone$ Graveyard | AddKeyword$ First strike | IsPresent$ Plains.YouCtrl | Description$ As long as CARDNAME is in your graveyard and you control a Plains, creatures you control have first strike.
|
S:Mode$ Continuous | Affected$ Creature.YouCtrl | EffectZone$ Graveyard | AddKeyword$ First Strike | IsPresent$ Plains.YouCtrl | Description$ As long as CARDNAME is in your graveyard and you control a Plains, creatures you control have first strike.
|
||||||
SVar:DiscardMe:2
|
SVar:DiscardMe:2
|
||||||
Oracle:First strike\nAs long as Valor is in your graveyard and you control a Plains, creatures you control have first strike.
|
Oracle:First strike\nAs long as Valor is in your graveyard and you control a Plains, creatures you control have first strike.
|
||||||
|
|||||||
@@ -363,6 +363,42 @@ ScryfallCode=SLD
|
|||||||
383★ R Krark's Thumb @Wooden Cyclops
|
383★ R Krark's Thumb @Wooden Cyclops
|
||||||
384 R Swamp @Jeanne D'Angelo
|
384 R Swamp @Jeanne D'Angelo
|
||||||
385 R Island @Jeanne D'Angelo
|
385 R Island @Jeanne D'Angelo
|
||||||
|
396 M Tamiyo, the Moon Sage @Uta Natsume
|
||||||
|
397 M Ajani, Mentor of Heroes @Uta Natsume
|
||||||
|
398 M Angrath, the Flame-Chained @Uta Natsume
|
||||||
|
399 R Ashiok, Dream Render @Uta Natsume
|
||||||
|
400 M Sorin, Grim Nemesis @Uta Natsume
|
||||||
|
410 R Brain Freeze @Rorubei
|
||||||
|
411 R Bribery @Rorubei
|
||||||
|
412 R Snap @Rorubei
|
||||||
|
413 R Unmask @Rorubei
|
||||||
|
414 R Shadow of Doubt @Rorubei
|
||||||
|
415 R Plains @Ben Schnuck
|
||||||
|
416 R Island @Ben Schnuck
|
||||||
|
417 R Swamp @Ben Schnuck
|
||||||
|
418 R Mountain @Ben Schnuck
|
||||||
|
419 R Forest @Ben Schnuck
|
||||||
|
420 R Hokori, Dust Drinker @Yuko Shimizu
|
||||||
|
421 R Kira, Great Glass-Spinner @Yuko Shimizu
|
||||||
|
422 R Eidolon of the Great Revel @Yuko Shimizu
|
||||||
|
423 R Elvish Spirit Guide @Yuko Shimizu
|
||||||
|
424 R Ghostly Prison @Ai Nanahira
|
||||||
|
425 R Freed from the Real @SENNSU
|
||||||
|
426 R Boseiju, Who Shelters All @Esuthio
|
||||||
|
427 R Hall of the Bandit Lord @ZOUNOSE
|
||||||
|
428 R E. Honda, Sumo Champion @Victor Adame Minguez
|
||||||
|
429 R Ryu, World Warrior @Jason Rainville
|
||||||
|
430 R Ken, Burning Brawler @Yongjae Choi
|
||||||
|
431 R Blanka, Ferocious Friend @David Rapoza
|
||||||
|
432 R Chun-Li, Countless Kicks @Martina Fackova
|
||||||
|
433 R Dhalsim, Pliable Pacifist @Victor Adame Minguez
|
||||||
|
434 R Guile, Sonic Soldier @Wesley Burt
|
||||||
|
435 R Zangief, the Red Cyclone @Maria Zolotukhina
|
||||||
|
436 R Windbrisk Heights @Tomohito
|
||||||
|
437 R Shelldock Isle @Amayagido
|
||||||
|
438 R Howltooth Hollow @Shie Nanahara
|
||||||
|
439 R Spinerock Knoll @Nagano
|
||||||
|
440 R Mosswort Bridge @Maiko Aoji
|
||||||
477 R Path to Exile @Riot Games
|
477 R Path to Exile @Riot Games
|
||||||
478 R Rhystic Study @Riot Games
|
478 R Rhystic Study @Riot Games
|
||||||
479 R Duress @Riot Games
|
479 R Duress @Riot Games
|
||||||
@@ -479,6 +515,11 @@ ScryfallCode=SLD
|
|||||||
672 R Questing Phelddagrif @Mark Rosewater
|
672 R Questing Phelddagrif @Mark Rosewater
|
||||||
696 R Spore Frog @Riot Games
|
696 R Spore Frog @Riot Games
|
||||||
697 R Command Tower @Riot Games
|
697 R Command Tower @Riot Games
|
||||||
|
1020 R Idyllic Tutor @Riyou Kamei
|
||||||
|
1021 R Swords to Plowshares @Riyou Kamei
|
||||||
|
1022 R Solve the Equation @Riyou Kamei
|
||||||
|
1023 R Praetor's Grasp @Riyou Kamei
|
||||||
|
1024 R Veil of Summer @Riyou Kamei
|
||||||
VS C Viscera Seer @John Stanko
|
VS C Viscera Seer @John Stanko
|
||||||
|
|
||||||
[tokens]
|
[tokens]
|
||||||
|
|||||||
@@ -257,6 +257,10 @@ public class HumanCostDecision extends CostDecisionMakerBase {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (c == 0) { //in case choice was already made to pay 0 cards
|
||||||
|
return PaymentDecision.number(c);
|
||||||
|
}
|
||||||
|
|
||||||
if (cost.from == ZoneType.Battlefield || cost.from == ZoneType.Hand) {
|
if (cost.from == ZoneType.Battlefield || cost.from == ZoneType.Hand) {
|
||||||
final InputSelectCardsFromList inp = new InputSelectCardsFromList(controller, c, c, list, ability);
|
final InputSelectCardsFromList inp = new InputSelectCardsFromList(controller, c, c, list, ability);
|
||||||
inp.setMessage(Localizer.getInstance().getMessage("lblExileNCardsFromYourZone", "%d", cost.getFrom().getTranslatedName()));
|
inp.setMessage(Localizer.getInstance().getMessage("lblExileNCardsFromYourZone", "%d", cost.getFrom().getTranslatedName()));
|
||||||
|
|||||||
@@ -217,6 +217,15 @@ public class HumanPlaySpellAbility {
|
|||||||
fromZone.add(oldCard, zonePosition >= 0 ? Integer.valueOf(zonePosition) : null);
|
fromZone.add(oldCard, zonePosition >= 0 ? Integer.valueOf(zonePosition) : null);
|
||||||
ability.setHostCard(oldCard);
|
ability.setHostCard(oldCard);
|
||||||
ability.setXManaCostPaid(null);
|
ability.setXManaCostPaid(null);
|
||||||
|
if (ability.hasParam("Announce")) {
|
||||||
|
final String announce = ability.getParam("Announce");
|
||||||
|
for (final String aVar : announce.split(",")) {
|
||||||
|
final String varName = aVar.trim();
|
||||||
|
if (!varName.equals("X")) {
|
||||||
|
ability.setSVar(varName, "0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
// better safe than sorry approach in case rolled back ability was copy (from addExtraKeywordCost)
|
// better safe than sorry approach in case rolled back ability was copy (from addExtraKeywordCost)
|
||||||
for (SpellAbility sa : oldCard.getSpells()) {
|
for (SpellAbility sa : oldCard.getSpells()) {
|
||||||
sa.setHostCard(oldCard);
|
sa.setHostCard(oldCard);
|
||||||
|
|||||||
Reference in New Issue
Block a user