Refactor skip phase/step using replacement effect. Also add Fasting.

This commit is contained in:
Alumi
2021-03-17 05:43:32 +00:00
committed by Michael Kamensky
parent 10c9d153fc
commit b6b1ae852d
49 changed files with 318 additions and 129 deletions

View File

@@ -152,6 +152,7 @@ public enum SpellApiToAi {
.put(ApiType.SetLife, LifeSetAi.class) .put(ApiType.SetLife, LifeSetAi.class)
.put(ApiType.SetState, SetStateAi.class) .put(ApiType.SetState, SetStateAi.class)
.put(ApiType.Shuffle, ShuffleAi.class) .put(ApiType.Shuffle, ShuffleAi.class)
.put(ApiType.SkipPhase, SkipPhaseAi.class)
.put(ApiType.SkipTurn, SkipTurnAi.class) .put(ApiType.SkipTurn, SkipTurnAi.class)
.put(ApiType.StoreSVar, StoreSVarAi.class) .put(ApiType.StoreSVar, StoreSVarAi.class)
.put(ApiType.Subgame, AlwaysPlayAi.class) .put(ApiType.Subgame, AlwaysPlayAi.class)

View File

@@ -159,10 +159,10 @@ public class ChooseGenericEffectAi extends SpellAbilityAi {
} }
} }
// FatespinnerSkipDraw,FatespinnerSkipMain,FatespinnerSkipCombat // FatespinnerSkipDraw,FatespinnerSkipMain,FatespinnerSkipCombat
if (player.hasKeyword("Skip your draw step.")) { if (game.getReplacementHandler().wouldPhaseBeSkipped(player, "Draw")) {
return skipDraw; return skipDraw;
} }
if (player.hasKeyword("Skip your next combat phase.")) { if (game.getReplacementHandler().wouldPhaseBeSkipped(player, "BeginCombat")) {
return skipCombat; return skipCombat;
} }

View File

@@ -59,7 +59,7 @@ public class PermanentCreatureAi extends PermanentAi {
if (sa.isDash()) { if (sa.isDash()) {
//only checks that the dashed creature will attack //only checks that the dashed creature will attack
if (ph.isPlayerTurn(ai) && ph.getPhase().isBefore(PhaseType.COMBAT_DECLARE_ATTACKERS)) { if (ph.isPlayerTurn(ai) && ph.getPhase().isBefore(PhaseType.COMBAT_DECLARE_ATTACKERS)) {
if (ai.hasKeyword("Skip your next combat phase.")) if (game.getReplacementHandler().wouldPhaseBeSkipped(ai, "BeginCombat"))
return false; return false;
if (ComputerUtilCost.canPayCost(sa.getHostCard().getSpellPermanent(), ai)) { if (ComputerUtilCost.canPayCost(sa.getHostCard().getSpellPermanent(), ai)) {
//do not dash if creature can be played normally //do not dash if creature can be played normally
@@ -77,7 +77,7 @@ public class PermanentCreatureAi extends PermanentAi {
// after attacking // after attacking
if (card.hasSVar("EndOfTurnLeavePlay") if (card.hasSVar("EndOfTurnLeavePlay")
&& (!ph.isPlayerTurn(ai) || ph.getPhase().isAfter(PhaseType.COMBAT_DECLARE_ATTACKERS) && (!ph.isPlayerTurn(ai) || ph.getPhase().isAfter(PhaseType.COMBAT_DECLARE_ATTACKERS)
|| ai.hasKeyword("Skip your next combat phase."))) { || game.getReplacementHandler().wouldPhaseBeSkipped(ai, "BeginCombat"))) {
// AiPlayDecision.AnotherTime // AiPlayDecision.AnotherTime
return false; return false;
} }

View File

@@ -0,0 +1,23 @@
package forge.ai.ability;
import forge.ai.SpellAbilityAi;
import forge.game.player.Player;
import forge.game.player.PlayerActionConfirmMode;
import forge.game.spellability.SpellAbility;
public class SkipPhaseAi extends SpellAbilityAi {
@Override
protected boolean canPlayAI(Player aiPlayer, SpellAbility sa) {
return true;
}
@Override
protected boolean doTriggerAINoCost(Player aiPlayer, SpellAbility sa, boolean mandatory) {
return mandatory || canPlayAI(aiPlayer, sa);
}
@Override
public boolean confirmAction(Player player, SpellAbility sa, PlayerActionConfirmMode mode, String message) {
return true;
}
}

View File

@@ -153,6 +153,7 @@ public enum ApiType {
SetLife (LifeSetEffect.class), SetLife (LifeSetEffect.class),
SetState (SetStateEffect.class), SetState (SetStateEffect.class),
Shuffle (ShuffleEffect.class), Shuffle (ShuffleEffect.class),
SkipPhase (SkipPhaseEffect.class),
SkipTurn (SkipTurnEffect.class), SkipTurn (SkipTurnEffect.class),
StoreSVar (StoreSVarEffect.class), StoreSVar (StoreSVarEffect.class),
Subgame (SubgameEffect.class), Subgame (SubgameEffect.class),

View File

@@ -57,6 +57,7 @@ public class AddTurnEffect extends SpellAbilityEffect {
} }
if (sa.hasParam("SkipUntap")) { if (sa.hasParam("SkipUntap")) {
extra.setSkipUntap(true); extra.setSkipUntap(true);
extra.setSkipUntapSA(sa);
} }
if (sa.hasParam("NoSchemes")) { if (sa.hasParam("NoSchemes")) {
extra.setCantSetSchemesInMotion(true); extra.setCantSetSchemesInMotion(true);

View File

@@ -0,0 +1,126 @@
package forge.game.ability.effects;
import java.util.List;
import forge.GameCommand;
import forge.game.Game;
import forge.game.ability.AbilityFactory;
import forge.game.ability.SpellAbilityEffect;
import forge.game.card.Card;
import forge.game.player.Player;
import forge.game.replacement.ReplacementEffect;
import forge.game.replacement.ReplacementHandler;
import forge.game.replacement.ReplacementLayer;
import forge.game.spellability.SpellAbility;
import forge.game.trigger.TriggerType;
import forge.game.zone.ZoneType;
public class SkipPhaseEffect extends SpellAbilityEffect {
@Override
protected String getStackDescription(SpellAbility sa) {
final StringBuilder sb = new StringBuilder();
final String duration = sa.getParam("Duration");
final String phase = sa.getParam("Phase");
final String step = sa.getParam("Step");
List<Player> tgtPlayers = getTargetPlayers(sa);
for (final Player player : tgtPlayers) {
sb.append(player).append(" ");
sb.append("skips their ");
if (duration == null) {
sb.append("next ");
}
if (phase != null) {
sb.append(phase.toLowerCase()).append(" phase.");
} else {
sb.append(step.toLowerCase()).append(" step.");
}
}
return sb.toString();
}
@Override
public void resolve(SpellAbility sa) {
final String duration = sa.getParam("Duration");
final String phase = sa.getParam("Phase");
final String step = sa.getParam("Step");
List<Player> tgtPlayers = getTargetPlayers(sa);
for (final Player player : tgtPlayers) {
createSkipPhaseEffect(sa, player, duration, phase, step);
}
}
public static void createSkipPhaseEffect(SpellAbility sa, final Player player,
final String duration, final String phase, final String step) {
final Card hostCard = sa.getHostCard();
final Game game = hostCard.getGame();
final String name = hostCard.getName() + "'s Effect";
final String image = hostCard.getImageKey();
final boolean isNextThisTurn = duration != null && duration.equals("NextThisTurn");
final Card eff = createEffect(sa, player, name, image);
final StringBuilder sb = new StringBuilder();
sb.append("Event$ BeginPhase | ActiveZones$ Command | ValidPlayer$ You | Phase$ ");
sb.append(phase != null ? phase : step);
if (duration != null && !isNextThisTurn) {
sb.append(" | Skip$ True");
}
sb.append("| Description$ Skip ");
if (duration == null || isNextThisTurn) {
sb.append("your next ");
} else {
sb.append("each ");
}
if (phase != null) {
sb.append(phase.toLowerCase()).append(" phase");
} else {
sb.append(step.toLowerCase()).append(" step");
}
if (duration == null) {
sb.append(".");
} else {
if (game.getPhaseHandler().getPlayerTurn().equals(player)) {
sb.append(" of this turn.");
} else {
sb.append(" of your next turn.");
}
}
final String repeffstr = sb.toString();
ReplacementEffect re = ReplacementHandler.parseReplacement(repeffstr, eff, true);
// Set to layer to Control so it will be applied before "would begin your X phase/step" replacement effects
// (Any layer before Other is OK, since default layer is Other.)
re.setLayer(ReplacementLayer.Control);
if (duration == null || isNextThisTurn) {
String exilestr = "DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile";
SpellAbility exile = AbilityFactory.getAbility(exilestr, eff);
re.setOverridingAbility(exile);
}
if (duration != null) {
final GameCommand endEffect = new GameCommand() {
private static final long serialVersionUID = -5861759814760561373L;
@Override
public void run() {
game.getAction().exile(eff, null);
}
};
if (duration.equals("EndOfTurn") || isNextThisTurn) {
game.getEndOfTurn().addUntil(endEffect);
} else if (duration.equals("UntilTheEndOfYourNextTurn")) {
game.getEndOfTurn().addUntilEnd(player, endEffect);
}
}
eff.addReplacementEffect(re);
eff.updateStateForView();
game.getTriggerHandler().suppressMode(TriggerType.ChangesZone);
game.getAction().moveTo(ZoneType.Command, eff, sa);
game.getTriggerHandler().clearSuppression(TriggerType.ChangesZone);
}
}

View File

@@ -54,7 +54,9 @@ public class SkipTurnEffect extends SpellAbilityEffect {
calcTurn.setSubAbility((AbilitySub) AbilityFactory.getAbility(exile, eff)); calcTurn.setSubAbility((AbilitySub) AbilityFactory.getAbility(exile, eff));
ReplacementEffect re = ReplacementHandler.parseReplacement(repeffstr, eff, true); ReplacementEffect re = ReplacementHandler.parseReplacement(repeffstr, eff, true);
re.setLayer(ReplacementLayer.Other); // Set to layer to Control so it will be applied before "would begin your turn" replacement effects
// (Any layer before Other is OK, since default layer is Other.)
re.setLayer(ReplacementLayer.Control);
re.setOverridingAbility(calcTurn); re.setOverridingAbility(calcTurn);
eff.addReplacementEffect(re); eff.addReplacementEffect(re);
eff.updateStateForView(); eff.updateStateForView();

View File

@@ -22,6 +22,7 @@ import java.util.Collections;
import java.util.List; import java.util.List;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.spellability.SpellAbility;
import forge.game.trigger.Trigger; import forge.game.trigger.Trigger;
/** /**
@@ -38,6 +39,7 @@ public class ExtraTurn {
private Player player = null; private Player player = null;
private List<Trigger> delTrig = Collections.synchronizedList(new ArrayList<>()); private List<Trigger> delTrig = Collections.synchronizedList(new ArrayList<>());
private boolean skipUntap = false; private boolean skipUntap = false;
private SpellAbility skipUntapSA;
private boolean cantSetSchemesInMotion = false; private boolean cantSetSchemesInMotion = false;
/** /**
* TODO: Write javadoc for Constructor. * TODO: Write javadoc for Constructor.
@@ -89,6 +91,20 @@ public class ExtraTurn {
this.skipUntap = skipUntap; this.skipUntap = skipUntap;
} }
/**
* @return the skipUntapSA;
*/
public SpellAbility getSkipUntapSA() {
return skipUntapSA;
}
/**
* @param skipUntapSA the skipUntapSA to set
*/
public void setSkipUntapSA(SpellAbility skipUntapSA) {
this.skipUntapSA = skipUntapSA;
}
/** /**
* @return true if Schemes can't be played during the extra turn * @return true if Schemes can't be played during the extra turn
*/ */

View File

@@ -24,6 +24,7 @@ import com.google.common.collect.Multimap;
import forge.card.mana.ManaCost; import forge.card.mana.ManaCost;
import forge.game.*; import forge.game.*;
import forge.game.ability.AbilityKey; import forge.game.ability.AbilityKey;
import forge.game.ability.effects.SkipPhaseEffect;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.card.CardCollection; import forge.game.card.CardCollection;
import forge.game.card.CardLists; import forge.game.card.CardLists;
@@ -166,6 +167,21 @@ public class PhaseHandler implements java.io.Serializable {
turnEnded = PhaseType.isLast(phase, isTopsy); turnEnded = PhaseType.isLast(phase, isTopsy);
setPhase(PhaseType.getNext(phase, isTopsy)); setPhase(PhaseType.getNext(phase, isTopsy));
} }
// Replacement effects
final Map<AbilityKey, Object> repRunParams = AbilityKey.mapFromAffected(playerTurn);
repRunParams.put(AbilityKey.Phase, phase.nameForScripts);
ReplacementResult repres = game.getReplacementHandler().run(ReplacementType.BeginPhase, repRunParams);
if (repres != ReplacementResult.NotReplaced) {
// Currently there is no effect to skip entire beginning phase
// If in the future that kind of effect is added, need to handle it too.
// Handle skipping of entire combat phase
if (phase == PhaseType.COMBAT_BEGIN) {
setPhase(PhaseType.COMBAT_END);
}
advanceToNextPhase();
return;
}
} }
game.getStack().clearUndoStack(); //can't undo action from previous phase game.getStack().clearUndoStack(); //can't undo action from previous phase
@@ -197,30 +213,19 @@ public class PhaseHandler implements java.io.Serializable {
} }
private boolean isSkippingPhase(final PhaseType phase) { private boolean isSkippingPhase(final PhaseType phase) {
// TODO: Refactor this method to replacement effect
switch (phase) { switch (phase) {
case UNTAP:
if (playerTurn.hasKeyword("Skip your next untap step.")) {
playerTurn.removeKeyword("Skip your next untap step.", false); // Skipping your "next" untap step is cumulative.
return true;
}
return playerTurn.hasKeyword("Skip the untap step of this turn.") || playerTurn.hasKeyword("Skip your untap step.");
case UPKEEP:
return playerTurn.hasKeyword("Skip your upkeep step.");
case DRAW: case DRAW:
return playerTurn.isSkippingDraw() || turn == 1 && game.getPlayers().size() == 2; return turn == 1 && game.getPlayers().size() == 2;
case MAIN1:
case MAIN2:
return playerTurn.isSkippingMain();
case COMBAT_BEGIN: case COMBAT_BEGIN:
case COMBAT_DECLARE_ATTACKERS: case COMBAT_DECLARE_ATTACKERS:
return playerTurn.isSkippingCombat(); return playerTurn.isSkippingCombat();
case COMBAT_DECLARE_BLOCKERS: case COMBAT_DECLARE_BLOCKERS:
if (combat != null && combat.getAttackers().isEmpty()) {
endCombat();
}
// Fall through
case COMBAT_FIRST_STRIKE_DAMAGE: case COMBAT_FIRST_STRIKE_DAMAGE:
case COMBAT_DAMAGE: case COMBAT_DAMAGE:
return !inCombat(); return !inCombat();
@@ -237,9 +242,6 @@ public class PhaseHandler implements java.io.Serializable {
if (isSkippingPhase(phase)) { if (isSkippingPhase(phase)) {
skipped = true; skipped = true;
givePriorityToPlayer = false; givePriorityToPlayer = false;
if (phase == PhaseType.COMBAT_DECLARE_ATTACKERS) {
playerTurn.removeKeyword("Skip your next combat phase.");
}
} }
else { else {
// Perform turn-based actions // Perform turn-based actions
@@ -289,11 +291,6 @@ public class PhaseHandler implements java.io.Serializable {
declareAttackersTurnBasedAction(); declareAttackersTurnBasedAction();
game.getStack().unfreezeStack(); game.getStack().unfreezeStack();
if (combat != null && combat.getAttackers().isEmpty()
&& !game.getTriggerHandler().hasDelayedTriggers()) {
endCombat();
}
if (combat != null) { if (combat != null) {
for (Card c : combat.getAttackers()) { for (Card c : combat.getAttackers()) {
if (combat.getDefenderByAttacker(c) instanceof Player) { if (combat.getDefenderByAttacker(c) instanceof Player) {
@@ -408,7 +405,6 @@ public class PhaseHandler implements java.io.Serializable {
player.clearAssignedDamage(); player.clearAssignedDamage();
} }
playerTurn.removeKeyword("Skip all combat phases of this turn.");
nUpkeepsThisTurn = 0; nUpkeepsThisTurn = 0;
nMain1sThisTurn = 0; nMain1sThisTurn = 0;
game.getStack().resetMaxDistinctSources(); game.getStack().resetMaxDistinctSources();
@@ -861,7 +857,7 @@ public class PhaseHandler implements java.io.Serializable {
game.getTriggerHandler().registerThisTurnDelayedTrigger(deltrig); game.getTriggerHandler().registerThisTurnDelayedTrigger(deltrig);
} }
if (extraTurn.isSkipUntap()) { if (extraTurn.isSkipUntap()) {
nextPlayer.addKeyword("Skip the untap step of this turn."); SkipPhaseEffect.createSkipPhaseEffect(extraTurn.getSkipUntapSA(), nextPlayer, null, null, "Untap");
} }
if (extraTurn.isCantSetSchemesInMotion()) { if (extraTurn.isCantSetSchemesInMotion()) {
nextPlayer.addKeyword("Schemes can't be set in motion this turn."); nextPlayer.addKeyword("Schemes can't be set in motion this turn.");

View File

@@ -2698,28 +2698,9 @@ public class Player extends GameEntity implements Comparable<Player> {
if (hasLost()) { if (hasLost()) {
return true; return true;
} }
if (hasKeyword("Skip your next combat phase.")) {
return true;
}
if (hasKeyword("Skip your combat phase.")) {
return true;
}
if (hasKeyword("Skip all combat phases of your next turn.")) {
replaceAllKeywordInstances("Skip all combat phases of your next turn.",
"Skip all combat phases of this turn.");
return true;
}
if (hasKeyword("Skip all combat phases of this turn.")) {
return true;
}
return false; return false;
} }
public boolean isSkippingMain() {
return hasKeyword("Skip your main phase.");
}
public int getStartingHandSize() { public int getStartingHandSize() {
return startingHandSize; return startingHandSize;
} }
@@ -2829,17 +2810,6 @@ public class Player extends GameEntity implements Comparable<Player> {
} }
} }
public boolean isSkippingDraw() {
if (hasKeyword("Skip your next draw step.")) {
removeKeyword("Skip your next draw step.");
return true;
}
if (hasKeyword("Skip your draw step.")) {
return true;
}
return false;
}
public CardCollectionView getInboundTokens() { public CardCollectionView getInboundTokens() {
return inboundTokens; return inboundTokens;
} }
@@ -3393,7 +3363,6 @@ public class Player extends GameEntity implements Comparable<Player> {
setLibrarySearched(0); setLibrarySearched(0);
setNumManaConversion(0); setNumManaConversion(0);
removeKeyword("Skip the untap step of this turn.");
removeKeyword("Schemes can't be set in motion this turn."); removeKeyword("Schemes can't be set in motion this turn.");
} }

View File

@@ -0,0 +1,51 @@
package forge.game.replacement;
import forge.game.ability.AbilityKey;
import forge.game.card.Card;
import forge.game.player.Player;
import forge.game.spellability.SpellAbility;
import java.util.Map;
public class ReplaceBeginPhase extends ReplacementEffect {
public ReplaceBeginPhase(final Map<String, String> mapParams, final Card host, final boolean intrinsic) {
super(mapParams, host, intrinsic);
// set default layer to control
if (!mapParams.containsKey("Layer")) {
this.setLayer(ReplacementLayer.Control);
}
}
@Override
public boolean canReplace(Map<AbilityKey, Object> runParams) {
Player affected = (Player) runParams.get(AbilityKey.Affected);
if (!matchesValidParam("ValidPlayer", affected)) {
return false;
}
if (hasParam("Phase")) {
final String phase = getParam("Phase");
final String currentPhase = (String) runParams.get(AbilityKey.Phase);
if (phase.equals("Combat") && currentPhase.equals("BeginCombat")) {
return true;
}
if (phase.equals("Main") && (currentPhase.equals("Main1") || currentPhase.equals("Main2"))) {
return true;
}
if (!phase.equals(currentPhase)) {
return false;
}
}
if (hasParam("Condition")) {
if (getParam("Condition").equals("Hellbent") && !affected.hasHellbent()) {
return false;
}
}
return true;
}
@Override
public void setReplacingObjects(Map<AbilityKey, Object> runParams, SpellAbility sa) {
sa.setReplacingObject(AbilityKey.Player, runParams.get(AbilityKey.Affected));
}
}

View File

@@ -420,4 +420,17 @@ public class ReplacementHandler {
} }
return ret; return ret;
} }
/**
* Helper function to check if a phase would be skipped for AI.
*/
public boolean wouldPhaseBeSkipped(final Player player, final String phase) {
final Map<AbilityKey, Object> repParams = AbilityKey.mapFromAffected(player);
repParams.put(AbilityKey.Phase, phase);
List<ReplacementEffect> list = getReplacementList(ReplacementType.BeginPhase, repParams, ReplacementLayer.Control);
if (!list.isEmpty()) {
return false;
}
return true;
}
} }

View File

@@ -14,6 +14,7 @@ public enum ReplacementType {
AddCounter(ReplaceAddCounter.class), AddCounter(ReplaceAddCounter.class),
AssignDealDamage(ReplaceAssignDealDamage.class), AssignDealDamage(ReplaceAssignDealDamage.class),
Attached(ReplaceAttached.class), Attached(ReplaceAttached.class),
BeginPhase(ReplaceBeginPhase.class),
BeginTurn(ReplaceBeginTurn.class), BeginTurn(ReplaceBeginTurn.class),
Counter(ReplaceCounter.class), Counter(ReplaceCounter.class),
CopySpell(ReplaceCopySpell.class), CopySpell(ReplaceCopySpell.class),

View File

@@ -3,7 +3,7 @@ ManaCost:3 U
Types:Creature Jellyfish Types:Creature Jellyfish
PT:2/2 PT:2/2
K:Flying K:Flying
A:AB$ Pump | Cost$ 0 | Defined$ Self | NumAtt$ 2 | NumDef$ 2 | ActivationLimit$ 1 | SubAbility$ DBSkipTurn | SpellDescription$ CARDNAME gets +2/+2 until end of turn. You skip your next untap step. Activate this ability only once each turn. A:AB$ Pump | Cost$ 0 | Defined$ Self | NumAtt$ 2 | NumDef$ 2 | ActivationLimit$ 1 | SubAbility$ DBSkipPhase | SpellDescription$ CARDNAME gets +2/+2 until end of turn. You skip your next untap step. Activate this ability only once each turn.
SVar:DBSkipTurn:DB$ Pump | Defined$ You | KW$ Skip your next untap step. | Permanent$ True SVar:DBSkipPhase:DB$ SkipPhase | Defined$ You | Step$ Untap
AI:RemoveDeck:All AI:RemoveDeck:All
Oracle:Flying\n{0}: Avizoa gets +2/+2 until end of turn. You skip your next untap step. Activate this ability only once each turn. Oracle:Flying\n{0}: Avizoa gets +2/+2 until end of turn. You skip your next untap step. Activate this ability only once each turn.

View File

@@ -3,6 +3,6 @@ ManaCost:3 W W
Types:Creature Angel Types:Creature Angel
PT:2/4 PT:2/4
K:Flying K:Flying
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigPump | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, that player skips their next combat phase. T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigSkipCombat | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, that player skips their next combat phase.
SVar:TrigPump:DB$ Pump | Defined$ TriggeredTarget | KW$ Skip your next combat phase. | Permanent$ True SVar:TrigSkipCombat:DB$ SkipPhase | Defined$ TriggeredTarget | Phase$ Combat
Oracle:Flying (This creature can't be blocked except by creatures with flying or reach.)\nWhenever Blinding Angel deals combat damage to a player, that player skips their next combat phase. Oracle:Flying (This creature can't be blocked except by creatures with flying or reach.)\nWhenever Blinding Angel deals combat damage to a player, that player skips their next combat phase.

View File

@@ -3,7 +3,6 @@ ManaCost:4 U U
Types:Creature Elemental Types:Creature Elemental
PT:5/4 PT:5/4
K:Morph:5 U U K:Morph:5 U U
T:Mode$ TurnFaceUp | ValidCard$ Card.Self | Execute$ TrigPump | TriggerZones$ Battlefield | TriggerDescription$ When CARDNAME is turned face up, each opponent skips their next untap step. T:Mode$ TurnFaceUp | ValidCard$ Card.Self | Execute$ TrigSkipUntap | TriggerZones$ Battlefield | TriggerDescription$ When CARDNAME is turned face up, each opponent skips their next untap step.
SVar:TrigPump:DB$ Pump | Defined$ Player.Opponent | KW$ Skip your next untap step. | Permanent$ True SVar:TrigSkipUntap:DB$ SkipPhase | Defined$ Player.Opponent | Step$ Untap
SVar:Picture:http://www.wizards.com/global/images/magic/general/brine_elemental.jpg
Oracle:Morph {5}{U}{U} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)\nWhen Brine Elemental is turned face up, each opponent skips their next untap step. Oracle:Morph {5}{U}{U} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)\nWhen Brine Elemental is turned face up, each opponent skips their next untap step.

View File

@@ -4,12 +4,11 @@ Types:Enchantment
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ When CARDNAME enters the battlefield, exile the top seven cards of your library face down. You may look at the cards exiled with CARDNAME, and you may play lands and cast spells from among those cards. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ When CARDNAME enters the battlefield, exile the top seven cards of your library face down. You may look at the cards exiled with CARDNAME, and you may play lands and cast spells from among those cards.
SVar:TrigExile:DB$ Dig | Defined$ You | DigNum$ 7 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | ExileFaceDown$ True | NoReveal$ True SVar:TrigExile:DB$ Dig | Defined$ You | DigNum$ 7 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | ExileFaceDown$ True | NoReveal$ True
S:Mode$ Continuous | Affected$ Card.IsRemembered+ExiledWithSource | AffectedZone$ Exile | MayPlay$ True | MayLookAt$ You | Description$ You may look at the cards exiled with CARDNAME, and you may play lands and cast spells from among those cards. S:Mode$ Continuous | Affected$ Card.IsRemembered+ExiledWithSource | AffectedZone$ Exile | MayPlay$ True | MayLookAt$ You | Description$ You may look at the cards exiled with CARDNAME, and you may play lands and cast spells from among those cards.
S:Mode$ Continuous | Affected$ You | AddKeyword$ Skip your draw step. | Description$ Skip your draw step. R:Event$ BeginPhase | ActiveZones$ Battlefield | ValidPlayer$ You | Phase$ Draw | Skip$ True | Description$ Skip your draw step.
S:Mode$ CantBeCast | ValidCard$ Card | Caster$ You | NumLimitEachTurn$ 1 | Description$ You can't cast more than one spell each turn. S:Mode$ CantBeCast | ValidCard$ Card | Caster$ You | NumLimitEachTurn$ 1 | Description$ You can't cast more than one spell each turn.
T:Mode$ ChangesZone | Origin$ Exile | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered+ExiledWithSource | Execute$ DBForget T:Mode$ ChangesZone | Origin$ Exile | Destination$ Any | Static$ True | ValidCard$ Card.IsRemembered+ExiledWithSource | 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
AI:RemoveDeck:All AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/colfenors_plans.jpg
Oracle:When Colfenor's Plans enters the battlefield, exile the top seven cards of your library face down.\nYou may look at the cards exiled with Colfenor's Plans, and you may play lands and cast spells from among those cards.\nSkip your draw step.\nYou can't cast more than one spell each turn. Oracle:When Colfenor's Plans enters the battlefield, exile the top seven cards of your library face down.\nYou may look at the cards exiled with Colfenor's Plans, and you may play lands and cast spells from among those cards.\nSkip your draw step.\nYou can't cast more than one spell each turn.

View File

@@ -3,10 +3,9 @@ ManaCost:4 G U B
Types:Legendary Creature Gorgon Wizard Types:Legendary Creature Gorgon Wizard
PT:4/4 PT:4/4
K:Deathtouch K:Deathtouch
S:Mode$ Continuous | Affected$ You | AddKeyword$ Skip your draw step. | Description$ Skip your draw step. R:Event$ BeginPhase | ActiveZones$ Battlefield | ValidPlayer$ You | Phase$ Draw | Skip$ True | Description$ Skip your draw step.
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | CheckSVar$ X | SVarCompare$ LT7 | Execute$ TrigDraw | TriggerDescription$ At the beginning of your upkeep, if you have fewer than seven cards in hand, draw cards equal to the difference. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | CheckSVar$ X | SVarCompare$ LT7 | Execute$ TrigDraw | TriggerDescription$ At the beginning of your upkeep, if you have fewer than seven cards in hand, draw cards equal to the difference.
SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ Difference SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ Difference
SVar:X:Count$InYourHand SVar:X:Count$InYourHand
SVar:Difference:Number$7/Minus.X SVar:Difference:Number$7/Minus.X
SVar:Picture:http://www.wizards.com/global/images/magic/general/damia_sage_of_stone.jpg
Oracle:Deathtouch\nSkip your draw step.\nAt the beginning of your upkeep, if you have fewer than seven cards in hand, draw cards equal to the difference. Oracle:Deathtouch\nSkip your draw step.\nAt the beginning of your upkeep, if you have fewer than seven cards in hand, draw cards equal to the difference.

View File

@@ -7,5 +7,5 @@ SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 1
A:AB$ Tap | Cost$ SubCounter<1/LOYALTY> | ValidTgts$ Creature | TgtPrompt$ Choose target creature to tap. | Planeswalker$ True | SubAbility$ DovinPump | SpellDescription$ Tap target creature. It doesn't untap during its controller's next untap step. A:AB$ Tap | Cost$ SubCounter<1/LOYALTY> | ValidTgts$ Creature | TgtPrompt$ Choose target creature to tap. | Planeswalker$ True | SubAbility$ DovinPump | SpellDescription$ Tap target creature. It doesn't untap during its controller's next untap step.
SVar:DovinPump:DB$ Pump | Defined$ Targeted | Permanent$ True | KW$ HIDDEN This card doesn't untap during your next untap step. SVar:DovinPump:DB$ Pump | Defined$ Targeted | Permanent$ True | KW$ HIDDEN This card doesn't untap during your next untap step.
A:AB$ TapAll | Cost$ SubCounter<9/LOYALTY> | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | ValidCards$ Permanent | Planeswalker$ True | Ultimate$ True | SubAbility$ NoUntap | SpellDescription$ Tap all permanents target opponent controls. That player skips their next untap step. A:AB$ TapAll | Cost$ SubCounter<9/LOYALTY> | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | ValidCards$ Permanent | Planeswalker$ True | Ultimate$ True | SubAbility$ NoUntap | SpellDescription$ Tap all permanents target opponent controls. That player skips their next untap step.
SVar:NoUntap:DB$ Pump | Defined$ TargetedPlayer | IsCurse$ True | KW$ Skip your next untap step. | Permanent$ True SVar:NoUntap:DB$ SkipPhase | Defined$ TargetedPlayer | Step$ Untap | IsCurse$ True
Oracle:[+1]: You gain 2 life and draw a card.\n[1]: Tap target creature. It doesn't untap during its controller's next untap step.\n[9]: Tap all permanents target opponent controls. That player skips their next untap step. Oracle:[+1]: You gain 2 life and draw a card.\n[1]: Tap target creature. It doesn't untap during its controller's next untap step.\n[9]: Tap all permanents target opponent controls. That player skips their next untap step.

View File

@@ -1,9 +1,8 @@
Name:Dragon Appeasement Name:Dragon Appeasement
ManaCost:3 B R G ManaCost:3 B R G
Types:Enchantment Types:Enchantment
S:Mode$ Continuous | Affected$ You | AddKeyword$ Skip your draw step. | Description$ Skip your draw step. R:Event$ BeginPhase | ActiveZones$ Battlefield | ValidPlayer$ You | Phase$ Draw | Skip$ True | Description$ Skip your draw step.
T:Mode$ Sacrificed | ValidCard$ Creature.YouCtrl | Execute$ TrigDrawCard | OptionalDecider$ You | TriggerZones$ Battlefield | TriggerDescription$ Whenever you sacrifice a creature, you may draw a card. T:Mode$ Sacrificed | ValidCard$ Creature.YouCtrl | Execute$ TrigDrawCard | OptionalDecider$ You | TriggerZones$ Battlefield | TriggerDescription$ Whenever you sacrifice a creature, you may draw a card.
SVar:TrigDrawCard:DB$Draw | Defined$ You | NumCards$ 1 SVar:TrigDrawCard:DB$Draw | Defined$ You | NumCards$ 1
AI:RemoveDeck:Random AI:RemoveDeck:Random
SVar:Picture:http://www.wizards.com/global/images/magic/general/dragon_appeasement.jpg
Oracle:Skip your draw step.\nWhenever you sacrifice a creature, you may draw a card. Oracle:Skip your draw step.\nWhenever you sacrifice a creature, you may draw a card.

View File

@@ -3,8 +3,6 @@ ManaCost:1 G
Types:Enchantment Types:Enchantment
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigChange | TriggerDescription$ At the beginning of your upkeep, you may search your library for a basic land card, reveal that card, and put it into your hand. If you do, you skip your draw step this turn and shuffle your library. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigChange | TriggerDescription$ At the beginning of your upkeep, you may search your library for a basic land card, reveal that card, and put it into your hand. If you do, you skip your draw step this turn and shuffle your library.
SVar:TrigChange:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Land.Basic | ChangeNum$ 1 | SubAbility$ DBSkipDraw | ShuffleNonMandatory$ True SVar:TrigChange:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Land.Basic | ChangeNum$ 1 | SubAbility$ DBSkipDraw | ShuffleNonMandatory$ True
SVar:DBSkipDraw:DB$ Effect | Name$ Elfhame Sanctuary Effect | Defined$ You | StaticAbilities$ SkipDraw SVar:DBSkipDraw:DB$ SkipPhase | Defined$ You | Step$ Draw | Duration$ EndOfTurn
SVar:SkipDraw:Mode$ Continuous | Affected$ You | AddKeyword$ Skip your draw step. | EffectZone$ Command | Description$ Skip your draw step.
AI:RemoveDeck:All AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/elfhame_sanctuary.jpg
Oracle:At the beginning of your upkeep, you may search your library for a basic land card, reveal that card, and put it into your hand. If you do, you skip your draw step this turn and shuffle your library. Oracle:At the beginning of your upkeep, you may search your library for a basic land card, reveal that card, and put it into your hand. If you do, you skip your draw step this turn and shuffle your library.

View File

@@ -1,7 +1,6 @@
Name:Empty City Ruse Name:Empty City Ruse
ManaCost:W ManaCost:W
Types:Sorcery Types:Sorcery
A:SP$ Pump | Cost$ W | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | KW$ Skip all combat phases of your next turn. | Permanent$ True | SpellDescription$ Target opponent skips all combat phases of their next turn. A:SP$ SkipPhase | Cost$ W | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | Phase$ Combat | Duration$ UntilTheEndOfYourNextTurn | SpellDescription$ Target opponent skips all combat phases of their next turn.
AI:RemoveDeck:All AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/empty_city_ruse.jpg
Oracle:Target opponent skips all combat phases of their next turn. Oracle:Target opponent skips all combat phases of their next turn.

View File

@@ -1,8 +1,7 @@
Name:Eon Hub Name:Eon Hub
ManaCost:5 ManaCost:5
Types:Artifact Types:Artifact
S:Mode$ Continuous | Affected$ Player | AddKeyword$ Skip your upkeep step. | Description$ Players skip their upkeep steps. R:Event$ BeginPhase | ActiveZones$ Battlefield | Phase$ Upkeep | Skip$ True | Description$ Players skip their upkeep steps.
SVar:NonStackingEffect:True SVar:NonStackingEffect:True
AI:RemoveDeck:Random AI:RemoveDeck:Random
SVar:Picture:http://www.wizards.com/global/images/magic/general/eon_hub.jpg
Oracle:Players skip their upkeep steps. Oracle:Players skip their upkeep steps.

View File

@@ -1,7 +1,6 @@
Name:False Peace Name:False Peace
ManaCost:W ManaCost:W
Types:Sorcery Types:Sorcery
A:SP$ Pump | Cost$ W | ValidTgts$ Player | TgtPrompt$ Select target player | KW$ Skip all combat phases of your next turn. | Permanent$ True | SpellDescription$ Target player skips all combat phases of their next turn. A:SP$ SkipPhase | Cost$ W | ValidTgts$ Player | TgtPrompt$ Select target player | Phase$ Combat | Duration$ UntilTheEndOfYourNextTurn | SpellDescription$ Target player skips all combat phases of their next turn.
AI:RemoveDeck:All AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/false_peace.jpg
Oracle:Target player skips all combat phases of their next turn. Oracle:Target player skips all combat phases of their next turn.

View File

@@ -0,0 +1,13 @@
Name:Fasting
ManaCost:W
Types:Enchantment
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutHunger | TriggerDescription$ At the beginning of your upkeep, put a hunger counter on CARDNAME. Then destroy CARDNAME if it has five or more hunger counters on it.
SVar:TrigPutHunger:DB$ PutCounter | Defined$ Self | CounterType$ HUNGER | CounterNum$ 1 | SubAbility$ DBDestroyHunger
SVar:DBDestroyHunger:DB$ Destroy | Defined$ Self | ConditionDefined$ Self | ConditionPresent$ Card.counters_GE5_HUNGER
R:Event$ BeginPhase | ActiveZones$ Battlefield | ValidPlayer$ You | Phase$ Draw | Layer$ Other | Optional$ True | ReplaceWith$ DBGainLife | Description$ If you would begin your draw step, you may skip that step instead. If you do, you gain 2 life.
SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 2
T:Mode$ Drawn | ValidCard$ Card.YouCtrl | TriggerZones$ Battlefield | Execute$ DBDestroySelf | TriggerDescription$ When you draw a card, destroy CARDNAME.
SVar:DBDestroySelf:DB$ Destroy | Defined$ Self
AI:RemoveDeck:All
AI:RemoveDeck:Random
Oracle:At the beginning of your upkeep, put a hunger counter on Fasting. Then destroy Fasting if it has five or more hunger counters on it.\nIf you would begin your draw step, you may skip that step instead. If you do, you gain 2 life.\nWhen you draw a card, destroy Fasting.

View File

@@ -3,9 +3,8 @@ ManaCost:1 U U
Types:Creature Human Wizard Types:Creature Human Wizard
PT:1/2 PT:1/2
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Opponent | Execute$ TrigSkipPhase | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of each opponent's upkeep, that player chooses draw step, main phase, or combat phase. The player skips each instance of the chosen step or phase this turn. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Opponent | Execute$ TrigSkipPhase | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of each opponent's upkeep, that player chooses draw step, main phase, or combat phase. The player skips each instance of the chosen step or phase this turn.
SVar:TrigSkipPhase:DB$ GenericChoice | Defined$ TriggeredPlayer | Choices$ FatespinnerSkipDraw,FatespinnerSkipMain,FatespinnerSkipCombat | ShowChoice$ True | AILogic$ Random SVar:TrigSkipPhase:DB$ GenericChoice | Defined$ TriggeredPlayer | Choices$ FatespinnerSkipDraw,FatespinnerSkipMain,FatespinnerSkipCombat | ShowChoice$ ExceptSelf | AILogic$ Random
SVar:FatespinnerSkipDraw:DB$ Pump | Defined$ TriggeredPlayer | KW$ Skip your draw step. | SpellDescription$ Draw step SVar:FatespinnerSkipDraw:DB$ SkipPhase | Defined$ TriggeredPlayer | Step$ Draw | Duration$ EndOfTurn | SpellDescription$ Draw step
SVar:FatespinnerSkipMain:DB$ Pump | Defined$ TriggeredPlayer | KW$ Skip your main phase. | SpellDescription$ Main phase SVar:FatespinnerSkipMain:DB$ SkipPhase | Defined$ TriggeredPlayer | Phase$ Main | Duration$ EndOfTurn | SpellDescription$ Main phase
SVar:FatespinnerSkipCombat:DB$ Pump | Defined$ TriggeredPlayer | KW$ Skip your combat phase. | SpellDescription$ Combat phase SVar:FatespinnerSkipCombat:DB$ SkipPhase | Defined$ TriggeredPlayer | Phase$ Combat | Duration$ EndOfTurn | SpellDescription$ Combat phase
SVar:Picture:http://www.wizards.com/global/images/magic/general/fatespinner.jpg
Oracle:At the beginning of each opponent's upkeep, that player chooses draw step, main phase, or combat phase. The player skips each instance of the chosen step or phase this turn. Oracle:At the beginning of each opponent's upkeep, that player chooses draw step, main phase, or combat phase. The player skips each instance of the chosen step or phase this turn.

View File

@@ -1,7 +1,6 @@
Name:Fatigue Name:Fatigue
ManaCost:1 U ManaCost:1 U
Types:Sorcery Types:Sorcery
A:SP$ Pump | Cost$ 1 U | ValidTgts$ Player | TgtPrompt$ Select target player | KW$ Skip your next draw step. | Permanent$ True | SpellDescription$ Target player skips their next draw step. A:SP$ SkipPhase | Cost$ 1 U | ValidTgts$ Player | TgtPrompt$ Select target player | Step$ Draw | SpellDescription$ Target player skips their next draw step.
AI:RemoveDeck:All AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/fatigue.jpg
Oracle:Target player skips their next draw step. Oracle:Target player skips their next draw step.

View File

@@ -2,10 +2,9 @@ Name:Gibbering Descent
ManaCost:4 B B ManaCost:4 B B
Types:Enchantment Types:Enchantment
K:Madness:2 B B K:Madness:2 B B
S:Mode$ Continuous | Affected$ You | Condition$ Hellbent | AddKeyword$ Skip your upkeep step. | Description$ Hellbent — Skip your upkeep step if you have no cards in hand. R:Event$ BeginPhase | ActiveZones$ Battlefield | ValidPlayer$ You | Phase$ Upkeep | Skip$ True | Condition$ Hellbent | Description$ Hellbent — Skip your upkeep step if you have no cards in hand.
T:Mode$ Phase | Phase$ Upkeep | Execute$ TrigLoseLifeDiscard | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of each player's upkeep, that player loses 1 life and discards a card. T:Mode$ Phase | Phase$ Upkeep | Execute$ TrigLoseLifeDiscard | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of each player's upkeep, that player loses 1 life and discards a card.
SVar:TrigLoseLifeDiscard:DB$LoseLife | Defined$ TriggeredPlayer | LifeAmount$ 1 | SubAbility$ DBDiscard SVar:TrigLoseLifeDiscard:DB$LoseLife | Defined$ TriggeredPlayer | LifeAmount$ 1 | SubAbility$ DBDiscard
SVar:DBDiscard:DB$Discard | Defined$ TriggeredPlayer | NumCards$ 1 | Mode$ TgtChoose SVar:DBDiscard:DB$Discard | Defined$ TriggeredPlayer | NumCards$ 1 | Mode$ TgtChoose
AI:RemoveDeck:All AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/gibbering_descent.jpg
Oracle:At the beginning of each player's upkeep, that player loses 1 life and discards a card.\nHellbent — Skip your upkeep step if you have no cards in hand.\nMadness {2}{B}{B} (If you discard this card, discard it into exile. When you do, cast it for its madness cost or put it into your graveyard.) Oracle:At the beginning of each player's upkeep, that player loses 1 life and discards a card.\nHellbent — Skip your upkeep step if you have no cards in hand.\nMadness {2}{B}{B} (If you discard this card, discard it into exile. When you do, cast it for its madness cost or put it into your graveyard.)

View File

@@ -4,7 +4,7 @@ Types:Creature Gargoyle
PT:2/2 PT:2/2
K:Flying K:Flying
T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Battlefield | Destination$ Graveyard | Execute$ TrigSkipDraw | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, return it to the battlefield under its owner's control at the beginning of the next end step and you skip your next draw step. T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Battlefield | Destination$ Graveyard | Execute$ TrigSkipDraw | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, return it to the battlefield under its owner's control at the beginning of the next end step and you skip your next draw step.
SVar:TrigSkipDraw:DB$ Pump | Defined$ TriggeredCardController | KW$ Skip your next draw step. | Permanent$ True | SubAbility$ TrigDelay SVar:TrigSkipDraw:DB$ SkipPhase | Defined$ TriggeredCardController | Step$ Draw | SubAbility$ TrigDelay
SVar:TrigDelay:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigReturn | RememberObjects$ TriggeredNewCardLKICopy | TriggerDescription$ Return CARDNAME to the battlefield. SVar:TrigDelay:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigReturn | RememberObjects$ TriggeredNewCardLKICopy | TriggerDescription$ Return CARDNAME to the battlefield.
SVar:TrigReturn:DB$ ChangeZone | Defined$ DelayTriggerRememberedLKI | Origin$ Graveyard | Destination$ Battlefield SVar:TrigReturn:DB$ ChangeZone | Defined$ DelayTriggerRememberedLKI | Origin$ Graveyard | Destination$ Battlefield
A:AB$ ChangeZone | Cost$ 4 W | Origin$ Battlefield | Destination$ Exile | SpellDescription$ Exile CARDNAME. A:AB$ ChangeZone | Cost$ 4 W | Origin$ Battlefield | Destination$ Exile | SpellDescription$ Exile CARDNAME.

View File

@@ -4,7 +4,7 @@ Types:Creature Phoenix
PT:2/2 PT:2/2
K:Flying K:Flying
T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Battlefield | Destination$ Graveyard | Execute$ TrigSkipDraw | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, return it to the battlefield under its owner's control at the beginning of the next end step and you skip your next draw step. T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Battlefield | Destination$ Graveyard | Execute$ TrigSkipDraw | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, return it to the battlefield under its owner's control at the beginning of the next end step and you skip your next draw step.
SVar:TrigSkipDraw:DB$ Pump | Defined$ TriggeredCardController | KW$ Skip your next draw step. | Permanent$ True | SubAbility$ TrigDelay SVar:TrigSkipDraw:DB$ SkipPhase | Defined$ TriggeredCardController | Step$ Draw | SubAbility$ TrigDelay
SVar:TrigDelay:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigReturn | RememberObjects$ TriggeredNewCardLKICopy | TriggerDescription$ Return CARDNAME to the battlefield. SVar:TrigDelay:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigReturn | RememberObjects$ TriggeredNewCardLKICopy | TriggerDescription$ Return CARDNAME to the battlefield.
SVar:TrigReturn:DB$ ChangeZone | Defined$ DelayTriggerRememberedLKI | Origin$ Graveyard | Destination$ Battlefield SVar:TrigReturn:DB$ ChangeZone | Defined$ DelayTriggerRememberedLKI | Origin$ Graveyard | Destination$ Battlefield
A:AB$ ChangeZone | Cost$ 4 R | Origin$ Battlefield | Destination$ Exile | SpellDescription$ Exile CARDNAME. A:AB$ ChangeZone | Cost$ 4 R | Origin$ Battlefield | Destination$ Exile | SpellDescription$ Exile CARDNAME.

View File

@@ -1,7 +1,6 @@
Name:Moment of Silence Name:Moment of Silence
ManaCost:W ManaCost:W
Types:Instant Types:Instant
A:SP$ Pump | Cost$ W | ValidTgts$ Player | TgtPrompt$ Select target player | KW$ Skip your next combat phase. | SpellDescription$ Target player skips their next combat phase this turn. A:SP$ SkipPhase | Cost$ W | ValidTgts$ Player | TgtPrompt$ Select target player | Phase$ Combat | Duration$ NextThisTurn | SpellDescription$ Target player skips their next combat phase this turn.
AI:RemoveDeck:All AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/moment_of_silence.jpg
Oracle:Target player skips their next combat phase this turn. Oracle:Target player skips their next combat phase this turn.

View File

@@ -1,7 +1,7 @@
Name:Necropotence Name:Necropotence
ManaCost:B B B ManaCost:B B B
Types:Enchantment Types:Enchantment
S:Mode$ Continuous | Affected$ You | AddKeyword$ Skip your draw step. | Description$ Skip your draw step. R:Event$ BeginPhase | ActiveZones$ Battlefield | ValidPlayer$ You | Phase$ Draw | Skip$ True | Description$ Skip your draw step.
T:Mode$ Discarded | ValidCard$ Card.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigChange | TriggerDescription$ Whenever you discard a card, exile that card from your graveyard. T:Mode$ Discarded | ValidCard$ Card.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigChange | TriggerDescription$ Whenever you discard a card, exile that card from your graveyard.
SVar:TrigChange:DB$ ChangeZone | Defined$ TriggeredCard | Origin$ Graveyard | Destination$ Exile SVar:TrigChange:DB$ ChangeZone | Defined$ TriggeredCard | Origin$ Graveyard | Destination$ Exile
A:AB$ ChangeZone | Cost$ PayLife<1> | Defined$ TopOfLibrary | Origin$ Library | Destination$ Exile | ExileFaceDown$ True | RememberChanged$ True | SubAbility$ DelayedReturn | AILogic$ Necropotence | AILifeThreshold$ 1 | SpellDescription$ Exile the top card of your library face down. Put that card into your hand at the beginning of your next end step. A:AB$ ChangeZone | Cost$ PayLife<1> | Defined$ TopOfLibrary | Origin$ Library | Destination$ Exile | ExileFaceDown$ True | RememberChanged$ True | SubAbility$ DelayedReturn | AILogic$ Necropotence | AILifeThreshold$ 1 | SpellDescription$ Exile the top card of your library face down. Put that card into your hand at the beginning of your next end step.

View File

@@ -2,13 +2,12 @@ Name:Necropotence Avatar
ManaCost:no cost ManaCost:no cost
Types:Vanguard Types:Vanguard
HandLifeModifier:+0/+4 HandLifeModifier:+0/+4
S:Mode$ Continuous | Affected$ You | EffectZone$ Command | AddKeyword$ Skip your draw step. | Description$ Skip your draw step. R:Event$ BeginPhase | ActiveZones$ Command | ValidPlayer$ You | Phase$ Draw | Skip$ True | Description$ Skip your draw step.
T:Mode$ Phase | Phase$ End Of Turn | ValidPlayer$ You | TriggerZones$ Command | CheckSVar$ Turns | SVarCompare$ GT1 | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your end step, if it's not the first turn of the game, put a death counter on Necropotence Avatar. You draw X cards and you lose X life, where X is the number of death counters on Necropotence Avatar. T:Mode$ Phase | Phase$ End Of Turn | ValidPlayer$ You | TriggerZones$ Command | CheckSVar$ Turns | SVarCompare$ GT1 | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your end step, if it's not the first turn of the game, put a death counter on Necropotence Avatar. You draw X cards and you lose X life, where X is the number of death counters on Necropotence Avatar.
SVar:TrigPutCounter:DB$PutCounter | Defined$ Self | CounterType$ DEATH | CounterNum$ 1 | SubAbility$ TrigDraw SVar:TrigPutCounter:DB$PutCounter | Defined$ Self | CounterType$ DEATH | CounterNum$ 1 | SubAbility$ TrigDraw
SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ X | SubAbility$ DBLoseLife SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ X | SubAbility$ DBLoseLife
SVar:DBLoseLife:DB$LoseLife | Defined$ You | LifeAmount$ X SVar:DBLoseLife:DB$LoseLife | Defined$ You | LifeAmount$ X
SVar:X:Count$CardCounters.DEATH SVar:X:Count$CardCounters.DEATH
SVar:Turns:Count$TotalTurns SVar:Turns:Count$TotalTurns
SVar:Picture:https://downloads.cardforge.org/images/cards/VAN/Necropotence Avatar.full.jpg
AI:RemoveDeck:All AI:RemoveDeck:All
Oracle:Hand +0, life +4\nSkip your draw step.\nAt the beginning of your end step, if it's not the first turn of the game, put a death counter on Necropotence Avatar. You draw X cards and you lose X life, where X is the number of death counters on Necropotence Avatar. Oracle:Hand +0, life +4\nSkip your draw step.\nAt the beginning of your end step, if it's not the first turn of the game, put a death counter on Necropotence Avatar. You draw X cards and you lose X life, where X is the number of death counters on Necropotence Avatar.

View File

@@ -1,11 +1,10 @@
Name:Null Profusion Name:Null Profusion
ManaCost:4 B B ManaCost:4 B B
Types:Enchantment Types:Enchantment
S:Mode$ Continuous | Affected$ You | AddKeyword$ Skip your draw step. | Description$ Skip your draw step. R:Event$ BeginPhase | ActiveZones$ Battlefield | ValidPlayer$ You | Phase$ Draw | Skip$ True | Description$ Skip your draw step.
S:Mode$ Continuous | Affected$ You | SetMaxHandSize$ 2 | Description$ Your maximum hand size is 2. S:Mode$ Continuous | Affected$ You | SetMaxHandSize$ 2 | Description$ Your maximum hand size is 2.
T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever you play a card, draw a card. T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever you play a card, draw a card.
T:Mode$ LandPlayed | ValidCard$ Land.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDraw | Secondary$ True | TriggerDescription$ Whenever you play a card, draw a card. T:Mode$ LandPlayed | ValidCard$ Land.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDraw | Secondary$ True | TriggerDescription$ Whenever you play a card, draw a card.
SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ 1 SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ 1
AI:RemoveDeck:Random AI:RemoveDeck:Random
SVar:Picture:http://www.wizards.com/global/images/magic/general/null_profusion.jpg
Oracle:Skip your draw step.\nWhenever you play a card, draw a card.\nYour maximum hand size is two. Oracle:Skip your draw step.\nWhenever you play a card, draw a card.\nYour maximum hand size is two.

View File

@@ -3,7 +3,7 @@ ManaCost:2 U U
Types:Enchantment Aura Types:Enchantment Aura
K:Enchant opponent K:Enchant opponent
A:SP$ Attach | Cost$ 2 U U | ValidTgts$ Opponent | AILogic$ Curse A:SP$ Attach | Cost$ 2 U U | ValidTgts$ Opponent | AILogic$ Curse
S:Mode$ Continuous | Affected$ You | AddKeyword$ Skip your draw step. | Description$ Skip your draw step. R:Event$ BeginPhase | ActiveZones$ Battlefield | ValidPlayer$ You | Phase$ Draw | Skip$ True | Description$ Skip your draw step.
T:Mode$ Drawn | ValidCard$ Card.OwnedBy Player.EnchantedBy | TriggerZones$ Battlefield | Execute$ TrigDraw | OptionalDecider$ You | TriggerDescription$ Whenever enchanted opponent draws a card, you may draw a card. T:Mode$ Drawn | ValidCard$ Card.OwnedBy Player.EnchantedBy | TriggerZones$ Battlefield | Execute$ TrigDraw | OptionalDecider$ You | TriggerDescription$ Whenever enchanted opponent draws a card, you may draw a card.
SVar:TrigDraw:DB$ Draw | NumCards$ 1 SVar:TrigDraw:DB$ Draw | NumCards$ 1
AI:RemoveDeck:All AI:RemoveDeck:All

View File

@@ -1,11 +1,10 @@
Name:Recycle Name:Recycle
ManaCost:4 G G ManaCost:4 G G
Types:Enchantment Types:Enchantment
S:Mode$ Continuous | Affected$ You | AddKeyword$ Skip your draw step. | Description$ Skip your draw step. R:Event$ BeginPhase | ActiveZones$ Battlefield | ValidPlayer$ You | Phase$ Draw | Skip$ True | Description$ Skip your draw step.
S:Mode$ Continuous | Affected$ You | SetMaxHandSize$ 2 | Description$ Your maximum hand size is 2. S:Mode$ Continuous | Affected$ You | SetMaxHandSize$ 2 | Description$ Your maximum hand size is 2.
T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever you play a card, draw a card. T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever you play a card, draw a card.
T:Mode$ LandPlayed | ValidCard$ Land.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDraw | Secondary$ True | TriggerDescription$ Whenever you play a card, draw a card. T:Mode$ LandPlayed | ValidCard$ Land.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDraw | Secondary$ True | TriggerDescription$ Whenever you play a card, draw a card.
SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ 1 SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ 1
AI:RemoveDeck:Random AI:RemoveDeck:Random
SVar:Picture:http://www.wizards.com/global/images/magic/general/recycle.jpg
Oracle:Skip your draw step.\nWhenever you play a card, draw a card.\nYour maximum hand size is two. Oracle:Skip your draw step.\nWhenever you play a card, draw a card.\nYour maximum hand size is two.

View File

@@ -2,8 +2,8 @@ Name:Revenant Patriarch
ManaCost:4 B ManaCost:4 B
Types:Creature Spirit Types:Creature Spirit
PT:4/3 PT:4/3
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ RevenantPump | TriggerDescription$ When CARDNAME enters the battlefield, if {W} was spent to cast it, target player skips their next combat phase. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ RevenantSkipCombat | TriggerDescription$ When CARDNAME enters the battlefield, if {W} was spent to cast it, target player skips their next combat phase.
SVar:RevenantPump:DB$ Pump | ValidTgts$ Player | KW$ Skip your next combat phase. | Permanent$ True | TgtPrompt$ Select target Player | IsCurse$ True SVar:RevenantSkipCombat:DB$ SkipPhase | ValidTgts$ Player | ConditionManaSpent$ W | Phase$ Combat | TgtPrompt$ Select target Player | IsCurse$ True
K:CARDNAME can't block. K:CARDNAME can't block.
SVar:ManaNeededToAvoidNegativeEffect:white SVar:ManaNeededToAvoidNegativeEffect:white
AI:RemoveDeck:Random AI:RemoveDeck:Random

View File

@@ -1,11 +1,10 @@
Name:Sands of Time Name:Sands of Time
ManaCost:4 ManaCost:4
Types:Artifact Types:Artifact
S:Mode$ Continuous | Affected$ Player | AddKeyword$ Skip your untap step. | Description$ Each player skips their untap step. R:Event$ BeginPhase | ActiveZones$ Battlefield | Phase$ Untap | Skip$ True | Description$ Each player skips their untap step.
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player | TriggerZones$ Battlefield | Execute$ TrigSands | TriggerDescription$ At the beginning of each player's upkeep, that player simultaneously untaps each tapped artifact, creature, and land they control and taps each untapped artifact, creature, and land they control. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player | TriggerZones$ Battlefield | Execute$ TrigSands | TriggerDescription$ At the beginning of each player's upkeep, that player simultaneously untaps each tapped artifact, creature, and land they control and taps each untapped artifact, creature, and land they control.
SVar:TrigSands:DB$ UntapAll | Defined$ TriggeredPlayer | ValidCards$ Artifact.tapped,Creature.tapped,Land.tapped | RememberUntapped$ True | SubAbility$ DBTap SVar:TrigSands:DB$ UntapAll | Defined$ TriggeredPlayer | ValidCards$ Artifact.tapped,Creature.tapped,Land.tapped | RememberUntapped$ True | SubAbility$ DBTap
SVar:DBTap:DB$ TapAll | Defined$ TriggeredPlayer | ValidCards$ Artifact.untapped+IsNotRemembered,Creature.untapped+IsNotRemembered,Land.untapped+IsNotRemembered | SubAbility$ DBCleanup SVar:DBTap:DB$ TapAll | Defined$ TriggeredPlayer | ValidCards$ Artifact.untapped+IsNotRemembered,Creature.untapped+IsNotRemembered,Land.untapped+IsNotRemembered | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
AI:RemoveDeck:Random AI:RemoveDeck:Random
SVar:Picture:http://www.wizards.com/global/images/magic/general/sands_of_time.jpg
Oracle:Each player skips their untap step.\nAt the beginning of each player's upkeep, that player simultaneously untaps each tapped artifact, creature, and land they control and taps each untapped artifact, creature, and land they control. Oracle:Each player skips their untap step.\nAt the beginning of each player's upkeep, that player simultaneously untaps each tapped artifact, creature, and land they control and taps each untapped artifact, creature, and land they control.

View File

@@ -2,5 +2,4 @@ Name:Savor the Moment
ManaCost:1 U U ManaCost:1 U U
Types:Sorcery Types:Sorcery
A:SP$ AddTurn | Cost$ 1 U U | NumTurns$ 1 | SkipUntap$ True | SpellDescription$ Take an extra turn after this one. Skip the untap step of that turn. A:SP$ AddTurn | Cost$ 1 U U | NumTurns$ 1 | SkipUntap$ True | SpellDescription$ Take an extra turn after this one. Skip the untap step of that turn.
SVar:Picture:http://www.wizards.com/global/images/magic/general/savor_the_moment.jpg
Oracle:Take an extra turn after this one. Skip the untap step of that turn. Oracle:Take an extra turn after this one. Skip the untap step of that turn.

View File

@@ -4,8 +4,8 @@ Types:Legendary Creature Snake Warrior
PT:2/2 PT:2/2
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigSac | TriggerDescription$ At the beginning of your upkeep, sacrifice a Snake. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigSac | TriggerDescription$ At the beginning of your upkeep, sacrifice a Snake.
SVar:TrigSac:DB$ Sacrifice | Defined$ You | SacValid$ Snake SVar:TrigSac:DB$ Sacrifice | Defined$ You | SacValid$ Snake
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigPump | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, that player skips their next untap step. T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigSkipPhase | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, that player skips their next untap step.
SVar:TrigPump:DB$ Pump | Defined$ TriggeredTarget | KW$ Skip your next untap step. | Permanent$ True SVar:TrigSkipPhase:DB$ SkipPhase | Defined$ TriggeredTarget | Step$ Untap
SVar:NeedsToPlayVar:Z GE2 SVar:NeedsToPlayVar:Z GE2
SVar:Z:Count$Valid Creature.Snake+YouCtrl+cmcLE2 SVar:Z:Count$Valid Creature.Snake+YouCtrl+cmcLE2
DeckNeeds:Type$Snake DeckNeeds:Type$Snake

View File

@@ -2,9 +2,8 @@ Name:Solitary Confinement
ManaCost:2 W ManaCost:2 W
Types:Enchantment Types:Enchantment
K:UpkeepCost:Discard<1/Card> K:UpkeepCost:Discard<1/Card>
S:Mode$ Continuous | Affected$ You | AddKeyword$ Skip your draw step. | Description$ Skip your draw step. R:Event$ BeginPhase | ActiveZones$ Battlefield | ValidPlayer$ You | Phase$ Draw | Skip$ True | Description$ Skip your draw step.
S:Mode$ Continuous | Affected$ You | AddKeyword$ Shroud | Description$ You have shroud. (You can't be the target of spells or abilities.) S:Mode$ Continuous | Affected$ You | AddKeyword$ Shroud | Description$ You have shroud. (You can't be the target of spells or abilities.)
R:Event$ DamageDone | ActiveZones$ Battlefield | Prevent$ True | ValidTarget$ You | Description$ Prevent all damage that would be dealt to you. R:Event$ DamageDone | ActiveZones$ Battlefield | Prevent$ True | ValidTarget$ You | Description$ Prevent all damage that would be dealt to you.
AI:RemoveDeck:All AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/solitary_confinement.jpg
Oracle:At the beginning of your upkeep, sacrifice Solitary Confinement unless you discard a card.\nSkip your draw step.\nYou have shroud. (You can't be the target of spells or abilities.)\nPrevent all damage that would be dealt to you. Oracle:At the beginning of your upkeep, sacrifice Solitary Confinement unless you discard a card.\nSkip your draw step.\nYou have shroud. (You can't be the target of spells or abilities.)\nPrevent all damage that would be dealt to you.

View File

@@ -1,9 +1,8 @@
Name:Stasis Name:Stasis
ManaCost:1 U ManaCost:1 U
Types:Enchantment Types:Enchantment
S:Mode$ Continuous | Affected$ Player | AddKeyword$ Skip your untap step. | Description$ Players skip their untap steps. R:Event$ BeginPhase | ActiveZones$ Battlefield | Phase$ Untap | Skip$ True | Description$ Players skip their untap steps.
K:UpkeepCost:U K:UpkeepCost:U
AI:RemoveDeck:Random AI:RemoveDeck:Random
SVar:NonStackingEffect:True SVar:NonStackingEffect:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/stasis.jpg
Oracle:Players skip their untap steps.\nAt the beginning of your upkeep, sacrifice Stasis unless you pay {U}. Oracle:Players skip their untap steps.\nAt the beginning of your upkeep, sacrifice Stasis unless you pay {U}.

View File

@@ -2,6 +2,6 @@ Name:Stonehorn Dignitary
ManaCost:3 W ManaCost:3 W
Types:Creature Rhino Soldier Types:Creature Rhino Soldier
PT:1/4 PT:1/4
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ When CARDNAME enters the battlefield, target opponent skips their next combat phase. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigSkipCombat | TriggerDescription$ When CARDNAME enters the battlefield, target opponent skips their next combat phase.
SVar:TrigPump:DB$ Pump | ValidTgts$ Opponent | KW$ Skip your next combat phase. | Permanent$ True | TgtPrompt$ Select target opponent | IsCurse$ True SVar:TrigSkipCombat:DB$ SkipPhase | ValidTgts$ Opponent | Phase$ Combat | TgtPrompt$ Select target opponent | IsCurse$ True
Oracle:When Stonehorn Dignitary enters the battlefield, target opponent skips their next combat phase. Oracle:When Stonehorn Dignitary enters the battlefield, target opponent skips their next combat phase.

View File

@@ -1,9 +1,8 @@
Name:Symbiotic Deployment Name:Symbiotic Deployment
ManaCost:2 G ManaCost:2 G
Types:Enchantment Types:Enchantment
S:Mode$ Continuous | Affected$ You | AddKeyword$ Skip your draw step. | Description$ Skip your draw step. R:Event$ BeginPhase | ActiveZones$ Battlefield | ValidPlayer$ You | Phase$ Draw | Skip$ True | Description$ Skip your draw step.
A:AB$ Draw | Cost$ 1 tapXType<2/Creature> | Defined$ You | NumCards$ 1 | SpellDescription$ Draw a card. A:AB$ Draw | Cost$ 1 tapXType<2/Creature> | Defined$ You | NumCards$ 1 | SpellDescription$ Draw a card.
AI:RemoveDeck:Random AI:RemoveDeck:Random
SVar:NonStackingEffect:True SVar:NonStackingEffect:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/symbiotic_deployment.jpg
Oracle:Skip your draw step.\n{1}, Tap two untapped creatures you control: Draw a card. Oracle:Skip your draw step.\n{1}, Tap two untapped creatures you control: Draw a card.

View File

@@ -2,11 +2,10 @@ Name:Taigam, Sidisi's Hand
ManaCost:3 U B ManaCost:3 U B
Types:Legendary Creature Human Wizard Types:Legendary Creature Human Wizard
PT:3/4 PT:3/4
S:Mode$ Continuous | Affected$ You | AddKeyword$ Skip your draw step. | Description$ Skip your draw step. R:Event$ BeginPhase | ActiveZones$ Battlefield | ValidPlayer$ You | Phase$ Draw | Skip$ True | Description$ Skip your draw step.
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDig | TriggerDescription$ At the beginning of your upkeep, look at the top three cards of your library. Put one of them into your hand and the rest into your graveyard. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDig | TriggerDescription$ At the beginning of your upkeep, look at the top three cards of your library. Put one of them into your hand and the rest into your graveyard.
SVar:TrigDig:DB$ Dig | DigNum$ 3 | DestinationZone2$ Graveyard | SpellDescription$ Look at the top three cards of your library. Put one of them into your hand and the rest into your graveyard. SVar:TrigDig:DB$ Dig | DigNum$ 3 | DestinationZone2$ Graveyard | SpellDescription$ Look at the top three cards of your library. Put one of them into your hand and the rest into your graveyard.
A:AB$ Pump | Cost$ B T ExileFromGrave<X/Card> | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ -X | NumDef$ -X | IsCurse$ True | SpellDescription$ Target creature gets -X/-X until end of turn. | CostDesc$ {B}, {T}, Exile X cards from your graveyard: A:AB$ Pump | Cost$ B T ExileFromGrave<X/Card> | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ -X | NumDef$ -X | IsCurse$ True | SpellDescription$ Target creature gets -X/-X until end of turn. | CostDesc$ {B}, {T}, Exile X cards from your graveyard:
SVar:X:Count$xPaid SVar:X:Count$xPaid
AI:RemoveDeck:All AI:RemoveDeck:All
SVar:Picture:http://www.wizards.com/global/images/magic/general/taigam_sidisis_hand.jpg
Oracle:Skip your draw step.\nAt the beginning of your upkeep, look at the top three cards of your library. Put one of them into your hand and the rest into your graveyard.\n{B}, {T}, Exile X cards from your graveyard: Target creature gets -X/-X until end of turn. Oracle:Skip your draw step.\nAt the beginning of your upkeep, look at the top three cards of your library. Put one of them into your hand and the rest into your graveyard.\n{B}, {T}, Exile X cards from your graveyard: Target creature gets -X/-X until end of turn.

View File

@@ -1,9 +1,8 @@
Name:The Eon Fog Name:The Eon Fog
ManaCost:no cost ManaCost:no cost
Types:Plane Equilor Types:Plane Equilor
S:Mode$ Continuous | EffectZone$ Command | Affected$ Player | AddKeyword$ Skip your untap step. | Description$ Players skip their untap steps. R:Event$ BeginPhase | ActiveZones$ Command | Phase$ Untap | Skip$ True | Description$ Players skip their untap steps.
T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, untap all permanents you control. T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, untap all permanents you control.
SVar:RolledChaos:DB$ UntapAll | ValidCards$ Permanent.YouCtrl SVar:RolledChaos:DB$ UntapAll | ValidCards$ Permanent.YouCtrl
SVar:Picture:http://www.wizards.com/global/images/magic/general/the_eon_fog.jpg
SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9
Oracle:Players skip their untap steps.\nWhenever you roll {CHAOS}, untap all permanents you control. Oracle:Players skip their untap steps.\nWhenever you roll {CHAOS}, untap all permanents you control.

View File

@@ -1,10 +1,9 @@
Name:Yawgmoth's Bargain Name:Yawgmoth's Bargain
ManaCost:4 B B ManaCost:4 B B
Types:Enchantment Types:Enchantment
S:Mode$ Continuous | Affected$ You | AddKeyword$ Skip your draw step. | Description$ Skip your draw step. R:Event$ BeginPhase | ActiveZones$ Battlefield | ValidPlayer$ You | Phase$ Draw | Skip$ True | Description$ Skip your draw step.
A:AB$ Draw | Cost$ PayLife<1> | NumCards$ 1 | AILogic$ YawgmothsBargain | AILifeThreshold$ 1 | SpellDescription$ Draw a card. A:AB$ Draw | Cost$ PayLife<1> | NumCards$ 1 | AILogic$ YawgmothsBargain | AILifeThreshold$ 1 | SpellDescription$ Draw a card.
SVar:AICastPreference:NeverCastIfLifeBelow$ 7 SVar:AICastPreference:NeverCastIfLifeBelow$ 7
AI:RemoveDeck:Random AI:RemoveDeck:Random
SVar:NonStackingEffect:True SVar:NonStackingEffect:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/yawgmoths_bargain.jpg
Oracle:Skip your draw step.\nPay 1 life: Draw a card. Oracle:Skip your draw step.\nPay 1 life: Draw a card.

View File

@@ -3,8 +3,8 @@ ManaCost:4 W W
Types:Legendary Creature Dragon Spirit Types:Legendary Creature Dragon Spirit
PT:5/5 PT:5/5
K:Flying K:Flying
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigPump | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, target player skips their next untap step. Tap up to five target permanents that player controls. T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigSkipPhase | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, target player skips their next untap step. Tap up to five target permanents that player controls.
SVar:TrigPump:DB$ Pump | ValidTgts$ Player | IsCurse$ True | KW$ Skip your next untap step. | Permanent$ True | IsCurse$ True | SubAbility$ TrigTap SVar:TrigSkipPhase:DB$ SkipPhase | ValidTgts$ Player | Step$ Untap | IsCurse$ True | SubAbility$ TrigTap
SVar:TrigTap:DB$ Tap | TargetMin$ 0 | TargetMax$ 5 | TargetsWithDefinedController$ ParentTarget | ValidTgts$ Permanent SVar:TrigTap:DB$ Tap | TargetMin$ 0 | TargetMax$ 5 | TargetsWithDefinedController$ ParentTarget | ValidTgts$ Permanent
SVar:Picture:http://www.wizards.com/global/images/magic/general/yosei_the_morning_star.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/yosei_the_morning_star.jpg
Oracle:Flying\nWhen Yosei, the Morning Star dies, target player skips their next untap step. Tap up to five target permanents that player controls. Oracle:Flying\nWhen Yosei, the Morning Star dies, target player skips their next untap step. Tap up to five target permanents that player controls.