Merge branch 'master' into code-cleanup

# Conflicts:
#	forge-game/src/main/java/forge/game/ability/effects/ManifestBaseEffect.java
This commit is contained in:
Jetz
2024-09-26 10:21:19 -04:00
204 changed files with 1154 additions and 601 deletions

View File

@@ -1398,7 +1398,7 @@ public abstract class GameState {
c.setTurnInZone(turn); c.setTurnInZone(turn);
} else if (info.equals("IsToken")) { } else if (info.equals("IsToken")) {
c.setGamePieceType(GamePieceType.TOKEN); c.setGamePieceType(GamePieceType.TOKEN);
} else if (info.equals("ClassLevel:")) { } else if (info.startsWith("ClassLevel:")) {
c.setClassLevel(Integer.parseInt(info.substring(info.indexOf(':') + 1))); c.setClassLevel(Integer.parseInt(info.substring(info.indexOf(':') + 1)));
} }
} }

View File

@@ -114,6 +114,7 @@ public enum SpellApiToAi {
.put(ApiType.Mana, ManaAi.class) .put(ApiType.Mana, ManaAi.class)
.put(ApiType.ManaReflected, CannotPlayAi.class) .put(ApiType.ManaReflected, CannotPlayAi.class)
.put(ApiType.Manifest, ManifestAi.class) .put(ApiType.Manifest, ManifestAi.class)
.put(ApiType.ManifestDread, ManifestAi.class)
.put(ApiType.Meld, MeldAi.class) .put(ApiType.Meld, MeldAi.class)
.put(ApiType.Mill, MillAi.class) .put(ApiType.Mill, MillAi.class)
.put(ApiType.MoveCounter, CountersMoveAi.class) .put(ApiType.MoveCounter, CountersMoveAi.class)

View File

@@ -148,12 +148,6 @@ public class DamageDealAi extends DamageAiBase {
String logic = sa.getParamOrDefault("AILogic", ""); String logic = sa.getParamOrDefault("AILogic", "");
if ("DiscardLands".equals(logic)) { if ("DiscardLands".equals(logic)) {
dmg = 2; dmg = 2;
} else if ("OpponentHasCreatures".equals(logic)) {
for (Player opp : ai.getOpponents()) {
if (!opp.getCreaturesInPlay().isEmpty()) {
return true;
}
}
} else if (logic.startsWith("ProcRaid.")) { } else if (logic.startsWith("ProcRaid.")) {
if (ai.getGame().getPhaseHandler().isPlayerTurn(ai) && ai.getGame().getPhaseHandler().getPhase().isBefore(PhaseType.COMBAT_DECLARE_BLOCKERS)) { if (ai.getGame().getPhaseHandler().isPlayerTurn(ai) && ai.getGame().getPhaseHandler().getPhase().isBefore(PhaseType.COMBAT_DECLARE_BLOCKERS)) {
for (Card potentialAtkr : ai.getCreaturesInPlay()) { for (Card potentialAtkr : ai.getCreaturesInPlay()) {

View File

@@ -44,20 +44,6 @@ public class RepeatEachAi extends SpellAbilityAi {
return false; return false;
} }
} }
} else if ("OpponentHasCreatures".equals(logic)) { //TODO convert this to NeedsToPlayVar
for (Player opp : aiPlayer.getOpponents()) {
if (!opp.getCreaturesInPlay().isEmpty()) {
return true;
}
}
return false;
} else if ("OpponentHasMultipleCreatures".equals(logic)) {
for (Player opp : aiPlayer.getOpponents()) {
if (opp.getCreaturesInPlay().size() > 1) {
return true;
}
}
return false;
} else if ("AllPlayerLoseLife".equals(logic)) { } else if ("AllPlayerLoseLife".equals(logic)) {
final Card source = sa.getHostCard(); final Card source = sa.getHostCard();
SpellAbility repeat = sa.getAdditionalAbility("RepeatSubAbility"); SpellAbility repeat = sa.getAdditionalAbility("RepeatSubAbility");

View File

@@ -137,6 +137,7 @@ public enum AbilityKey {
Targets("Targets"), Targets("Targets"),
Token("Token"), Token("Token"),
TokenNum("TokenNum"), TokenNum("TokenNum"),
Valiant("Valiant"),
Vehicle("Vehicle"), Vehicle("Vehicle"),
Won("Won"), Won("Won"),

View File

@@ -116,6 +116,7 @@ public enum ApiType {
Mana (ManaEffect.class), Mana (ManaEffect.class),
ManaReflected (ManaReflectedEffect.class), ManaReflected (ManaReflectedEffect.class),
Manifest (ManifestEffect.class), Manifest (ManifestEffect.class),
ManifestDread (ManifestDreadEffect.class),
Meld (MeldEffect.class), Meld (MeldEffect.class),
Mill (MillEffect.class), Mill (MillEffect.class),
MoveCounter (CountersMoveEffect.class), MoveCounter (CountersMoveEffect.class),

View File

@@ -61,7 +61,7 @@ public abstract class SpellAbilityEffect {
// prelude for when this is root ability // prelude for when this is root ability
if (!(sa instanceof AbilitySub)) { if (!(sa instanceof AbilitySub)) {
sb.append(sa.getHostCard()).append(" -"); sb.append(sa.getHostCard()).append(" -");
if (sa.getHostCard().hasPromisedGift()) { if (sa.getHostCard().hasPromisedGift() && sa.hasAdditionalAbility("GiftAbility")) {
sb.append(" Gift "). sb.append(" Gift ").
append(sa.getAdditionalAbility("GiftAbility").getParam("GiftDescription")). append(sa.getAdditionalAbility("GiftAbility").getParam("GiftDescription")).
append(" to ").append(sa.getHostCard().getPromisedGift()).append(". "); append(" to ").append(sa.getHostCard().getPromisedGift()).append(". ");

View File

@@ -253,6 +253,10 @@ public class CopyPermanentEffect extends TokenEffectBase {
if (sa.hasParam("ForEach")) { if (sa.hasParam("ForEach")) {
for (Player p : AbilityUtils.getDefinedPlayers(host, sa.getParam("ForEach"), sa)) { for (Player p : AbilityUtils.getDefinedPlayers(host, sa.getParam("ForEach"), sa)) {
if (sa.hasParam("OptionalForEach") && !activator.getController().confirmAction(sa, null,
Localizer.getInstance().getMessage("lblCopyPermanentConfirm") + " (" + p + ")", null)) {
continue;
}
Card proto = getProtoType(sa, c, controller); Card proto = getProtoType(sa, c, controller);
proto.addRemembered(p); proto.addRemembered(p);
tokenTable.put(controller, proto, numCopies); tokenTable.put(controller, proto, numCopies);

View File

@@ -125,7 +125,6 @@ public class DigEffect extends SpellAbilityEffect {
final boolean anyNumber = sa.hasParam("AnyNumber"); final boolean anyNumber = sa.hasParam("AnyNumber");
final boolean optional = sa.hasParam("Optional"); final boolean optional = sa.hasParam("Optional");
final boolean noMove = sa.hasParam("NoMove");
final boolean skipReorder = sa.hasParam("SkipReorder"); final boolean skipReorder = sa.hasParam("SkipReorder");
// A hack for cards like Explorer's Scope that need to ensure that a card is revealed to the player activating the ability // A hack for cards like Explorer's Scope that need to ensure that a card is revealed to the player activating the ability
@@ -191,34 +190,17 @@ public class DigEffect extends SpellAbilityEffect {
game.getAction().reveal(top, p, false); game.getAction().reveal(top, p, false);
} }
else if (sa.hasParam("RevealOptional")) { else if (sa.hasParam("RevealOptional")) {
String question = TextUtil.concatWithSpace(Localizer.getInstance().getMessage("lblReveal") + ":", TextUtil.addSuffix(Lang.joinHomogenous(top),"?")); hasRevealed = p.getController().confirmAction(sa, null, Localizer.getInstance().getMessage("lblRevealCardToOtherPlayers"), null);
hasRevealed = p.getController().confirmAction(sa, null, question, null);
if (hasRevealed) { if (hasRevealed) {
game.getAction().reveal(top, p); game.getAction().reveal(top, p);
} }
} }
else if (sa.hasParam("RevealValid")) {
final String revealValid = sa.getParam("RevealValid");
final CardCollection toReveal = CardLists.getValidCards(top, revealValid, cont, host, sa);
if (!toReveal.isEmpty()) {
game.getAction().reveal(toReveal, cont);
if (sa.hasParam("RememberRevealed")) {
host.addRemembered(toReveal);
}
}
}
else if (!sa.hasParam("NoLooking")) { else if (!sa.hasParam("NoLooking")) {
// show the user the revealed cards // show the user the revealed cards
delayedReveal = new DelayedReveal(top, srcZone, PlayerView.get(p), CardTranslation.getTranslatedName(host.getName()) + " - " + Localizer.getInstance().getMessage("lblLookingCardIn") + " "); delayedReveal = new DelayedReveal(top, srcZone, PlayerView.get(p), CardTranslation.getTranslatedName(host.getName()) + " - " + Localizer.getInstance().getMessage("lblLookingCardIn") + " ");
if (noMove) {
// Let the activating player see the cards even if they're not moved
game.getAction().revealTo(top, activator);
}
} }
if (sa.hasParam("RememberRevealed") && !sa.hasParam("RevealValid") && hasRevealed) { if (sa.hasParam("RememberRevealed") && hasRevealed) {
host.addRemembered(top); host.addRemembered(top);
} }
if (sa.hasParam("ImprintRevealed") && hasRevealed) { if (sa.hasParam("ImprintRevealed") && hasRevealed) {
@@ -233,7 +215,7 @@ public class DigEffect extends SpellAbilityEffect {
host.setChosenPlayer(chooser); host.setChosenPlayer(chooser);
} }
} }
if (!noMove) {
CardCollection movedCards; CardCollection movedCards;
rest.addAll(top); rest.addAll(top);
CardCollection valid; CardCollection valid;
@@ -503,7 +485,6 @@ public class DigEffect extends SpellAbilityEffect {
} }
} }
} }
}
if (combatChanged) { if (combatChanged) {
game.updateCombatForView(); game.updateCombatForView();
game.fireEvent(new GameEventCombatChanged()); game.fireEvent(new GameEventCombatChanged());

View File

@@ -20,16 +20,21 @@ public abstract class ManifestBaseEffect extends SpellAbilityEffect {
@Override @Override
public void resolve(SpellAbility sa) { public void resolve(SpellAbility sa) {
final Card source = sa.getHostCard(); final Card source = sa.getHostCard();
final Player activator = sa.getActivatingPlayer();
final Game game = source.getGame();
// Usually a number leaving possibility for X, Sacrifice X land: Manifest X creatures. // Usually a number leaving possibility for X, Sacrifice X land: Manifest X creatures.
final int amount = sa.hasParam("Amount") ? AbilityUtils.calculateAmount(source, sa.getParam("Amount"), sa) : 1; final int amount = sa.hasParam("Amount") ? AbilityUtils.calculateAmount(source, sa.getParam("Amount"), sa) : 1;
final int times = sa.hasParam("Times") ? AbilityUtils.calculateAmount(source, sa.getParam("Times"), sa) : 1;
for (int i = 0; i < times; i++) {
for (final Player p : getTargetPlayers(sa, "DefinedPlayer")) { for (final Player p : getTargetPlayers(sa, "DefinedPlayer")) {
manifestLoop(sa, p, amount);
}
}
protected void manifestLoop(SpellAbility sa, Player p, final int amount) {
final Card source = sa.getHostCard();
final Player activator = sa.getActivatingPlayer();
final Game game = source.getGame();
CardCollection tgtCards; CardCollection tgtCards;
Card toGrave = null;
boolean fromLibrary = false; boolean fromLibrary = false;
if (sa.hasParam("Choices") || sa.hasParam("ChoiceZone")) { if (sa.hasParam("Choices") || sa.hasParam("ChoiceZone")) {
ZoneType choiceZone = ZoneType.Hand; ZoneType choiceZone = ZoneType.Hand;
@@ -42,21 +47,12 @@ public abstract class ManifestBaseEffect extends SpellAbilityEffect {
choices = CardLists.getValidCards(choices, sa.getParam("Choices"), activator, source, sa); choices = CardLists.getValidCards(choices, sa.getParam("Choices"), activator, source, sa);
} }
if (choices.isEmpty()) { if (choices.isEmpty()) {
continue; return;
} }
String title = sa.hasParam("ChoiceTitle") ? sa.getParam("ChoiceTitle") : getDefaultMessage() + " "; String title = sa.hasParam("ChoiceTitle") ? sa.getParam("ChoiceTitle") : getDefaultMessage() + " ";
tgtCards = new CardCollection(p.getController().chooseCardsForEffect(choices, sa, title, amount, amount, false, null)); tgtCards = new CardCollection(p.getController().chooseCardsForEffect(choices, sa, title, amount, amount, false, null));
} else if (sa.hasParam("Dread")) {
tgtCards = p.getTopXCardsFromLibrary(2);
if (!tgtCards.isEmpty()) {
Card manifest = p.getController().chooseSingleEntityForEffect(tgtCards, sa, getDefaultMessage(), null);
tgtCards.remove(manifest);
toGrave = tgtCards.isEmpty() ? null : tgtCards.getFirst();
tgtCards = new CardCollection(manifest);
}
fromLibrary = true;
} else if ("TopOfLibrary".equals(sa.getParamOrDefault("Defined", "TopOfLibrary"))) { } else if ("TopOfLibrary".equals(sa.getParamOrDefault("Defined", "TopOfLibrary"))) {
tgtCards = p.getTopXCardsFromLibrary(amount); tgtCards = p.getTopXCardsFromLibrary(amount);
fromLibrary = true; fromLibrary = true;
@@ -77,10 +73,6 @@ public abstract class ManifestBaseEffect extends SpellAbilityEffect {
Map<AbilityKey, Object> moveParams = AbilityKey.newMap(); Map<AbilityKey, Object> moveParams = AbilityKey.newMap();
CardZoneTable triggerList = AbilityKey.addCardZoneTableParams(moveParams, sa); CardZoneTable triggerList = AbilityKey.addCardZoneTableParams(moveParams, sa);
internalEffect(c, p, sa, moveParams); internalEffect(c, p, sa, moveParams);
if (sa.hasParam("Dread") && toGrave != null) {
game.getAction().moveToGraveyard(toGrave, sa, moveParams);
toGrave = null;
}
triggerList.triggerChangesZoneAll(game, sa); triggerList.triggerChangesZoneAll(game, sa);
} }
} else { } else {
@@ -93,8 +85,6 @@ public abstract class ManifestBaseEffect extends SpellAbilityEffect {
triggerList.triggerChangesZoneAll(game, sa); triggerList.triggerChangesZoneAll(game, sa);
} }
} }
}
}
abstract protected String getDefaultMessage(); abstract protected String getDefaultMessage();

View File

@@ -0,0 +1,41 @@
package forge.game.ability.effects;
import java.util.Map;
import forge.game.Game;
import forge.game.ability.AbilityKey;
import forge.game.card.Card;
import forge.game.card.CardCollection;
import forge.game.card.CardZoneTable;
import forge.game.player.Player;
import forge.game.spellability.SpellAbility;
import forge.game.trigger.TriggerType;
public class ManifestDreadEffect extends ManifestEffect {
@Override
protected void manifestLoop(SpellAbility sa, Player p, final int amount) {
final Game game = p.getGame();
for (int i = 0; i < amount; i++) {
CardCollection tgtCards = p.getTopXCardsFromLibrary(2);
Card manifest = null;
Card toGrave = null;
if (!tgtCards.isEmpty()) {
manifest = p.getController().chooseSingleEntityForEffect(tgtCards, sa, getDefaultMessage(), null);
tgtCards.remove(manifest);
toGrave = tgtCards.isEmpty() ? null : tgtCards.getFirst();
// CR 701.34d If an effect instructs a player to manifest multiple cards from their library, those cards are manifested one at a time.
Map<AbilityKey, Object> moveParams = AbilityKey.newMap();
CardZoneTable triggerList = AbilityKey.addCardZoneTableParams(moveParams, sa);
internalEffect(manifest, p, sa, moveParams);
if (toGrave != null) {
toGrave = game.getAction().moveToGraveyard(toGrave, sa, moveParams);
}
triggerList.triggerChangesZoneAll(game, sa);
}
Map<AbilityKey, Object> runParams = AbilityKey.mapFromPlayer(p);
runParams.put(AbilityKey.Card, toGrave);
game.getTriggerHandler().runTrigger(TriggerType.ManifestDread, runParams, true);
}
}
}

View File

@@ -9,10 +9,11 @@ import forge.game.spellability.SpellAbility;
import forge.util.Localizer; import forge.util.Localizer;
public class ManifestEffect extends ManifestBaseEffect { public class ManifestEffect extends ManifestBaseEffect {
@Override
protected String getDefaultMessage() { protected String getDefaultMessage() {
return Localizer.getInstance().getMessage("lblChooseCardToManifest"); return Localizer.getInstance().getMessage("lblChooseCardToManifest");
} }
@Override
protected Card internalEffect(Card c, Player p, SpellAbility sa, Map<AbilityKey, Object> moveParams) { protected Card internalEffect(Card c, Player p, SpellAbility sa, Map<AbilityKey, Object> moveParams) {
final Card source = sa.getHostCard(); final Card source = sa.getHostCard();
Card rem = c.manifest(p, sa, moveParams); Card rem = c.manifest(p, sa, moveParams);

View File

@@ -18,11 +18,16 @@ import forge.util.TextUtil;
import java.util.Map; import java.util.Map;
public class MillEffect extends SpellAbilityEffect { public class MillEffect extends SpellAbilityEffect {
@Override @Override
public void resolve(SpellAbility sa) { public void resolve(SpellAbility sa) {
final Card source = sa.getHostCard(); final Card source = sa.getHostCard();
final Game game = source.getGame(); final Game game = source.getGame();
final int numCards = sa.hasParam("NumCards") ? AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("NumCards"), sa) : 1; final int numCards = sa.hasParam("NumCards") ? AbilityUtils.calculateAmount(source, sa.getParam("NumCards"), sa) : 1;
if (numCards <= 0) {
return;
}
if (sa.hasParam("ForgetOtherRemembered")) { if (sa.hasParam("ForgetOtherRemembered")) {
source.clearRemembered(); source.clearRemembered();

View File

@@ -17,8 +17,7 @@ public class ScryEffect extends SpellAbilityEffect {
protected String getStackDescription(SpellAbility sa) { protected String getStackDescription(SpellAbility sa) {
final StringBuilder sb = new StringBuilder(); final StringBuilder sb = new StringBuilder();
final List<Player> players = Lists.newArrayList(); // players really affected final List<Player> players = getTargetPlayers(sa);
players.addAll(getTargetPlayers(sa));
sb.append(Lang.joinHomogenous(players)).append(" "); sb.append(Lang.joinHomogenous(players)).append(" ");
int num = 1; int num = 1;

View File

@@ -186,7 +186,7 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars, ITr
private boolean startsGameInPlay = false; private boolean startsGameInPlay = false;
private boolean drawnThisTurn = false; private boolean drawnThisTurn = false;
private boolean foughtThisTurn = false; private boolean foughtThisTurn = false;
private boolean becameTargetThisTurn = false; private boolean becameTargetThisTurn, valiant = false;
private boolean enlistedThisCombat = false; private boolean enlistedThisCombat = false;
private boolean startedTheTurnUntapped = false; private boolean startedTheTurnUntapped = false;
private boolean cameUnderControlSinceLastUpkeep = true; // for Echo private boolean cameUnderControlSinceLastUpkeep = true; // for Echo
@@ -3698,6 +3698,12 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars, ITr
public void setBecameTargetThisTurn(boolean becameTargetThisTurn0) { public void setBecameTargetThisTurn(boolean becameTargetThisTurn0) {
becameTargetThisTurn = becameTargetThisTurn0; becameTargetThisTurn = becameTargetThisTurn0;
} }
public boolean isValiant() {
return valiant;
}
public void setValiant(boolean v) {
valiant = v;
}
public boolean hasStartedTheTurnUntapped() { public boolean hasStartedTheTurnUntapped() {
return startedTheTurnUntapped; return startedTheTurnUntapped;
@@ -7197,6 +7203,7 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars, ITr
setRegeneratedThisTurn(0); setRegeneratedThisTurn(0);
resetShieldCount(); resetShieldCount();
setBecameTargetThisTurn(false); setBecameTargetThisTurn(false);
setValiant(false);
setFoughtThisTurn(false); setFoughtThisTurn(false);
turnedFaceUpThisTurn = false; turnedFaceUpThisTurn = false;
clearMustBlockCards(); clearMustBlockCards();

View File

@@ -1414,7 +1414,7 @@ public class CardFactoryUtil {
inst.addTrigger(trigger); inst.addTrigger(trigger);
} else if (keyword.startsWith("Impending")) { } else if (keyword.startsWith("Impending")) {
// Remove Time counter trigger // Remove Time counter trigger
final String endTrig = "Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | IsPresent$ Card.Self+counters_GE1_TIME" + final String endTrig = "Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | IsPresent$ Card.Self+impended+counters_GE1_TIME" +
" | Secondary$ True | TriggerDescription$ At the beginning of your end step, remove a time counter from it."; " | Secondary$ True | TriggerDescription$ At the beginning of your end step, remove a time counter from it.";
final String remove = "DB$ RemoveCounter | Defined$ Self | CounterType$ TIME | CounterNum$ 1"; final String remove = "DB$ RemoveCounter | Defined$ Self | CounterType$ TIME | CounterNum$ 1";
@@ -1552,7 +1552,7 @@ public class CardFactoryUtil {
final String actualTrigger = "Mode$ Attacks | ValidCard$ Card.Self | Secondary$ True" final String actualTrigger = "Mode$ Attacks | ValidCard$ Card.Self | Secondary$ True"
+ " | TriggerDescription$ Myriad (" + inst.getReminderText() + ")"; + " | TriggerDescription$ Myriad (" + inst.getReminderText() + ")";
final String copyStr = "DB$ CopyPermanent | Defined$ Self | TokenTapped$ True | Optional$ True | TokenAttacking$ RememberedPlayer & Valid Planeswalker.ControlledBy Remembered" final String copyStr = "DB$ CopyPermanent | Defined$ Self | TokenTapped$ True | OptionalForEach$ True | TokenAttacking$ RememberedPlayer & Valid Planeswalker.ControlledBy Remembered"
+ "| ForEach$ OppNonDefendingPlayer | AtEOT$ ExileCombat | CleanupForEach$ True"; + "| ForEach$ OppNonDefendingPlayer | AtEOT$ ExileCombat | CleanupForEach$ True";
final SpellAbility copySA = AbilityFactory.getAbility(copyStr, card); final SpellAbility copySA = AbilityFactory.getAbility(copyStr, card);
@@ -2353,17 +2353,7 @@ public class CardFactoryUtil {
final String effect = "DB$ PutCounter | Defined$ ReplacedCard | CounterType$ TIME | CounterNum$ " + m final String effect = "DB$ PutCounter | Defined$ ReplacedCard | CounterType$ TIME | CounterNum$ " + m
+ " | ETB$ True | SpellDescription$ " + desc; + " | ETB$ True | SpellDescription$ " + desc;
SpellAbility repAb = AbilityFactory.getAbility(effect, card); final ReplacementEffect re = createETBReplacement(card, ReplacementLayer.Other, effect, false, true, intrinsic, "Card.Self+impended", "");
String staticEffect = "DB$ Effect | StaticAbilities$ NoCreature | ExileOnCounter$ TIME | Duration$ UntilHostLeavesPlay";
String staticNoCreature = "Mode$ Continuous | Affected$ Card.EffectSource+counters_GE1_TIME | RemoveType$ Creature | Description$ EFFECTSOURCE isn't a creature.";
AbilitySub effectAb = (AbilitySub)AbilityFactory.getAbility(staticEffect, card);
effectAb.setSVar("NoCreature", staticNoCreature);
repAb.setSubAbility(effectAb);
final ReplacementEffect re = createETBReplacement(card, ReplacementLayer.Other, repAb, false, true, intrinsic, "Card.Self+impended", "");
inst.addReplacement(re); inst.addReplacement(re);
} else if (keyword.equals("Jump-start")) { } else if (keyword.equals("Jump-start")) {
@@ -3997,6 +3987,9 @@ public class CardFactoryUtil {
String effect = "Mode$ CantBlockBy | ValidAttacker$ Creature.Self | ValidBlocker$ Creature.withoutHorsemanship | Secondary$ True " + String effect = "Mode$ CantBlockBy | ValidAttacker$ Creature.Self | ValidBlocker$ Creature.withoutHorsemanship | Secondary$ True " +
" | Description$ Horsemanship (" + inst.getReminderText() + ")"; " | Description$ Horsemanship (" + inst.getReminderText() + ")";
inst.addStaticAbility(StaticAbility.create(effect, state.getCard(), state, intrinsic)); inst.addStaticAbility(StaticAbility.create(effect, state.getCard(), state, intrinsic));
} else if (keyword.startsWith("Impending")) {
String effect = "Mode$ Continuous | Affected$ Card.Self+impended+counters_GE1_TIME | RemoveType$ Creature | Secondary$ True";
inst.addStaticAbility(StaticAbility.create(effect, state.getCard(), state, intrinsic));
} else if (keyword.equals("Intimidate")) { } else if (keyword.equals("Intimidate")) {
String effect = "Mode$ CantBlockBy | ValidAttacker$ Creature.Self | ValidBlocker$ Creature.nonArtifact+!SharesColorWith | Secondary$ True " + String effect = "Mode$ CantBlockBy | ValidAttacker$ Creature.Self | ValidBlocker$ Creature.nonArtifact+!SharesColorWith | Secondary$ True " +
" | Description$ Intimidate (" + inst.getReminderText() + ")"; " | Description$ Intimidate (" + inst.getReminderText() + ")";

View File

@@ -302,7 +302,7 @@ public class ManaCostBeingPaid {
sc.xCount = sc.totalCount; sc.xCount = sc.totalCount;
} }
// nothing more left in otherSubtract // nothing more left in otherSubtract
return; break;
} }
} }
} }
@@ -322,7 +322,7 @@ public class ManaCostBeingPaid {
sc.xCount = sc.totalCount; sc.xCount = sc.totalCount;
} }
// nothing more left in otherSubtract // nothing more left in otherSubtract
return; break;
} }
} }
} }
@@ -342,7 +342,7 @@ public class ManaCostBeingPaid {
sc.xCount = sc.totalCount; sc.xCount = sc.totalCount;
} }
// nothing more left in otherSubtract // nothing more left in otherSubtract
return; break;
} }
} }
} }
@@ -362,7 +362,7 @@ public class ManaCostBeingPaid {
sc.xCount = sc.totalCount; sc.xCount = sc.totalCount;
} }
// nothing more left in otherSubtract // nothing more left in otherSubtract
return; break;
} }
} }
} }
@@ -384,7 +384,7 @@ public class ManaCostBeingPaid {
sc.xCount = sc.totalCount; sc.xCount = sc.totalCount;
} }
// nothing more left in otherSubtract // nothing more left in otherSubtract
return; break;
} }
} else if (sc.xCount > 0) { // X part that can only be paid by specific color } else if (sc.xCount > 0) { // X part that can only be paid by specific color
if (otherSubtract >= sc.xCount) { if (otherSubtract >= sc.xCount) {
@@ -398,7 +398,7 @@ public class ManaCostBeingPaid {
sc.totalCount -= otherSubtract; sc.totalCount -= otherSubtract;
sc.xCount -= otherSubtract; sc.xCount -= otherSubtract;
// nothing more left in otherSubtract // nothing more left in otherSubtract
return; break;
} }
} }
} }

View File

@@ -21,11 +21,11 @@ public class PlayerProperty {
public static boolean playerHasProperty(Player player, String property, Player sourceController, Card source, CardTraitBase spellAbility) { public static boolean playerHasProperty(Player player, String property, Player sourceController, Card source, CardTraitBase spellAbility) {
Game game = player.getGame(); Game game = player.getGame();
if (property.endsWith("Activator")) { if (property.equals("Activator")) {
sourceController = spellAbility.getHostCard().getController(); if (!player.equals(spellAbility.getHostCard().getController())) {
property = property.substring(0, property.length() - 9); return false;
} }
if (property.equals("You")) { } else if (property.equals("You")) {
if (!player.equals(sourceController)) { if (!player.equals(sourceController)) {
return false; return false;
} }

View File

@@ -60,6 +60,7 @@ public abstract class ReplacementEffect extends TriggerReplacementBase {
private boolean hasRun = false; private boolean hasRun = false;
private List<ReplacementEffect> otherChoices = null; private List<ReplacementEffect> otherChoices = null;
private ReplacementEffectView view = null;
/** /**
* Gets the id. * Gets the id.
@@ -109,6 +110,15 @@ public abstract class ReplacementEffect extends TriggerReplacementBase {
} }
} }
public ReplacementEffectView getView() {
if (view == null)
view = new ReplacementEffectView(this);
else {
view.updateHostCard(this);
view.updateDescription(this);
}
return view;
}
/** /**
* Sets the checks for run. * Sets the checks for run.
* *

View File

@@ -0,0 +1,47 @@
package forge.game.replacement;
import forge.game.card.CardView;
import forge.game.card.IHasCardView;
import forge.trackable.TrackableObject;
import forge.trackable.TrackableProperty;
import forge.trackable.Tracker;
public class ReplacementEffectView extends TrackableObject implements IHasCardView {
private static final long serialVersionUID = 1L;
ReplacementEffectView(ReplacementEffect re) {
this(re, re.getHostCard() == null || re.getHostCard().getGame() == null ? null : re.getHostCard().getGame().getTracker());
}
ReplacementEffectView(ReplacementEffect re, Tracker tracker) {
super(re.getId(), tracker);
updateHostCard(re);
updateDescription(re);
}
@Override
public CardView getCardView() {
return this.getHostCard();
}
public CardView getHostCard() {
return get(TrackableProperty.RE_HostCard);
}
void updateHostCard(ReplacementEffect re) {
set(TrackableProperty.RE_HostCard, CardView.get(re.getHostCard()));
}
@Override
public String toString() {
return this.getDescription();
}
public String getDescription() {
return get(TrackableProperty.RE_Description);
}
void updateDescription(ReplacementEffect re) {
set(TrackableProperty.RE_Description, re.getDescription());
}
}

View File

@@ -144,9 +144,6 @@ public class SpellAbilityStackInstance implements IIdentifiable, IHasCardView {
view.updateTargetPlayers(this); view.updateTargetPlayers(this);
view.updateText(this); view.updateText(this);
// Run BecomesTargetTrigger
Map<AbilityKey, Object> runParams = AbilityKey.newMap();
runParams.put(AbilityKey.SourceSA, ability);
Set<GameObject> distinctObjects = Sets.newHashSet(); Set<GameObject> distinctObjects = Sets.newHashSet();
for (final GameObject tgt : target) { for (final GameObject tgt : target) {
if (oldTarget != null && oldTarget.contains(tgt)) { if (oldTarget != null && oldTarget.contains(tgt)) {
@@ -157,16 +154,22 @@ public class SpellAbilityStackInstance implements IIdentifiable, IHasCardView {
continue; continue;
} }
Map<AbilityKey, Object> runParams = AbilityKey.newMap();
runParams.put(AbilityKey.SourceSA, ability);
if (tgt instanceof Card && !((Card) tgt).hasBecomeTargetThisTurn()) { if (tgt instanceof Card && !((Card) tgt).hasBecomeTargetThisTurn()) {
runParams.put(AbilityKey.FirstTime, null); runParams.put(AbilityKey.FirstTime, null);
((Card) tgt).setBecameTargetThisTurn(true); ((Card) tgt).setBecameTargetThisTurn(true);
} }
if (tgt instanceof Card && !((Card) tgt).isValiant() && cause.getController().equals(((Card) tgt).getController())) {
runParams.put(AbilityKey.Valiant, null);
((Card) tgt).setValiant(true);
}
runParams.put(AbilityKey.Target, tgt); runParams.put(AbilityKey.Target, tgt);
getSourceCard().getGame().getTriggerHandler().runTrigger(TriggerType.BecomesTarget, runParams, false); getSourceCard().getGame().getTriggerHandler().runTrigger(TriggerType.BecomesTarget, runParams, false);
} }
// Only run BecomesTargetOnce when at least one target is changed // Only run BecomesTargetOnce when at least one target is changed
if (!distinctObjects.isEmpty()) { if (!distinctObjects.isEmpty()) {
runParams = AbilityKey.newMap(); Map<AbilityKey, Object> runParams = AbilityKey.newMap();
runParams.put(AbilityKey.SourceSA, ability); runParams.put(AbilityKey.SourceSA, ability);
runParams.put(AbilityKey.Targets, distinctObjects); runParams.put(AbilityKey.Targets, distinctObjects);
runParams.put(AbilityKey.Cause, cause); runParams.put(AbilityKey.Cause, cause);

View File

@@ -62,6 +62,7 @@ public class StaticAbility extends CardTraitBase implements IIdentifiable, Clone
private int mayPlayTurn = 0; private int mayPlayTurn = 0;
private SpellAbility payingTrigSA; private SpellAbility payingTrigSA;
private StaticAbilityView view = null;
@Override @Override
public final int getId() { public final int getId() {
@@ -231,6 +232,16 @@ public class StaticAbility extends CardTraitBase implements IIdentifiable, Clone
this.setCardState(state); this.setCardState(state);
} }
public StaticAbilityView getView() {
if (view == null)
view = new StaticAbilityView(this);
else {
view.updateHostCard(this);
view.updateDescription(this);
}
return view;
}
public final CardCollectionView applyContinuousAbilityBefore(final StaticAbilityLayer layer, final CardCollectionView preList) { public final CardCollectionView applyContinuousAbilityBefore(final StaticAbilityLayer layer, final CardCollectionView preList) {
if (!shouldApplyContinuousAbility(layer, false)) { if (!shouldApplyContinuousAbility(layer, false)) {
return null; return null;

View File

@@ -0,0 +1,47 @@
package forge.game.staticability;
import forge.game.card.CardView;
import forge.game.card.IHasCardView;
import forge.trackable.TrackableObject;
import forge.trackable.TrackableProperty;
import forge.trackable.Tracker;
public class StaticAbilityView extends TrackableObject implements IHasCardView {
private static final long serialVersionUID = 1L;
StaticAbilityView(StaticAbility st) {
this(st, st.getHostCard() == null || st.getHostCard().getGame() == null ? null : st.getHostCard().getGame().getTracker());
}
StaticAbilityView(StaticAbility st, Tracker tracker) {
super(st.getId(), tracker);
updateHostCard(st);
updateDescription(st);
}
@Override
public CardView getCardView() {
return this.getHostCard();
}
public CardView getHostCard() {
return get(TrackableProperty.ST_HostCard);
}
void updateHostCard(StaticAbility st) {
set(TrackableProperty.ST_HostCard, CardView.get(st.getHostCard()));
}
@Override
public String toString() {
return this.getDescription();
}
public String getDescription() {
return get(TrackableProperty.ST_Description);
}
void updateDescription(StaticAbility st) {
set(TrackableProperty.ST_Description, st.toString());
}
}

View File

@@ -77,6 +77,12 @@ public class TriggerBecomesTarget extends Trigger {
} }
} }
if (hasParam("Valiant")) {
if (!runParams.containsKey(AbilityKey.Valiant)) {
return false;
}
}
return true; return true;
} }

View File

@@ -0,0 +1,35 @@
package forge.game.trigger;
import java.util.Map;
import forge.game.ability.AbilityKey;
import forge.game.card.Card;
import forge.game.spellability.SpellAbility;
public class TriggerManifestDread extends Trigger {
public TriggerManifestDread(Map<String, String> params, Card host, boolean intrinsic) {
super(params, host, intrinsic);
}
@Override
public boolean performTest(Map<AbilityKey, Object> runParams) {
if (!matchesValidParam("ValidPlayer", runParams.get(AbilityKey.Player))) {
return false;
}
return true;
}
@Override
public void setTriggeringObjects(SpellAbility sa, Map<AbilityKey, Object> runParams) {
sa.setTriggeringObject(AbilityKey.NewCard, runParams.get(AbilityKey.Card));
}
@Override
public String getImportantStackObjects(SpellAbility sa) {
// TODO Auto-generated method stub
return "";
}
}

View File

@@ -139,6 +139,9 @@ public class TriggerSpellAbilityCastOrCopy extends Trigger {
if (!matchesValidParam("ValidSA", spellAbility)) { if (!matchesValidParam("ValidSA", spellAbility)) {
return false; return false;
} }
if (!matchesValidParam("ValidSAonCard", spellAbility, cast)) {
return false;
}
if (hasParam("TargetsValid")) { if (hasParam("TargetsValid")) {
SpellAbility sa = spellAbility; SpellAbility sa = spellAbility;

View File

@@ -97,6 +97,7 @@ public enum TriggerType {
LosesGame(TriggerLosesGame.class), LosesGame(TriggerLosesGame.class),
ManaAdded(TriggerManaAdded.class), ManaAdded(TriggerManaAdded.class),
ManaExpend(TriggerManaExpend.class), ManaExpend(TriggerManaExpend.class),
ManifestDread(TriggerManifestDread.class),
Mentored(TriggerMentored.class), Mentored(TriggerMentored.class),
Milled(TriggerMilled.class), Milled(TriggerMilled.class),
MilledOnce(TriggerMilledOnce.class), MilledOnce(TriggerMilledOnce.class),

View File

@@ -441,13 +441,11 @@ public class MagicStack /* extends MyObservable */ implements Iterable<SpellAbil
// Create a new object, since the triggers aren't happening right away // Create a new object, since the triggers aren't happening right away
List<TargetChoices> chosenTargets = sp.getAllTargetChoices(); List<TargetChoices> chosenTargets = sp.getAllTargetChoices();
if (!chosenTargets.isEmpty()) { if (!chosenTargets.isEmpty()) {
runParams = AbilityKey.newMap();
SpellAbility s = sp; SpellAbility s = sp;
if (si != null) { if (si != null) {
s = si.getSpellAbility(); s = si.getSpellAbility();
chosenTargets = s.getAllTargetChoices(); chosenTargets = s.getAllTargetChoices();
} }
runParams.put(AbilityKey.SourceSA, s);
Set<GameObject> distinctObjects = Sets.newHashSet(); Set<GameObject> distinctObjects = Sets.newHashSet();
for (final TargetChoices tc : chosenTargets) { for (final TargetChoices tc : chosenTargets) {
for (final GameObject tgt : tc) { for (final GameObject tgt : tc) {
@@ -457,14 +455,22 @@ public class MagicStack /* extends MyObservable */ implements Iterable<SpellAbil
continue; continue;
} }
runParams = AbilityKey.newMap();
runParams.put(AbilityKey.SourceSA, s);
if (tgt instanceof Card && !((Card) tgt).hasBecomeTargetThisTurn()) { if (tgt instanceof Card && !((Card) tgt).hasBecomeTargetThisTurn()) {
runParams.put(AbilityKey.FirstTime, null); runParams.put(AbilityKey.FirstTime, null);
((Card) tgt).setBecameTargetThisTurn(true); ((Card) tgt).setBecameTargetThisTurn(true);
} }
if (tgt instanceof Card && !((Card) tgt).isValiant() && activator.equals(((Card) tgt).getController())) {
runParams.put(AbilityKey.Valiant, null);
((Card) tgt).setValiant(true);
}
runParams.put(AbilityKey.Target, tgt); runParams.put(AbilityKey.Target, tgt);
game.getTriggerHandler().runTrigger(TriggerType.BecomesTarget, runParams, false); game.getTriggerHandler().runTrigger(TriggerType.BecomesTarget, runParams, false);
} }
} }
runParams = AbilityKey.newMap();
runParams.put(AbilityKey.SourceSA, s);
runParams.put(AbilityKey.Targets, distinctObjects); runParams.put(AbilityKey.Targets, distinctObjects);
runParams.put(AbilityKey.Cause, s.getHostCard()); runParams.put(AbilityKey.Cause, s.getHostCard());
game.getTriggerHandler().runTrigger(TriggerType.BecomesTargetOnce, runParams, false); game.getTriggerHandler().runTrigger(TriggerType.BecomesTargetOnce, runParams, false);

View File

@@ -241,6 +241,14 @@ public enum TrackableProperty {
CanPlay(TrackableTypes.BooleanType), CanPlay(TrackableTypes.BooleanType),
PromptIfOnlyPossibleAbility(TrackableTypes.BooleanType), PromptIfOnlyPossibleAbility(TrackableTypes.BooleanType),
//ReplacementEffectView
RE_HostCard(TrackableTypes.CardViewType),
RE_Description(TrackableTypes.StringType),
//StaticAbilityView
ST_HostCard(TrackableTypes.CardViewType),
ST_Description(TrackableTypes.StringType),
//HasBackSide //HasBackSide
BackSideName(TrackableTypes.StringType), BackSideName(TrackableTypes.StringType),
HasBackSide(TrackableTypes.BooleanType), HasBackSide(TrackableTypes.BooleanType),

View File

@@ -431,10 +431,12 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
Map<Comparable<?>, Pile> piles = new TreeMap<>(); Map<Comparable<?>, Pile> piles = new TreeMap<>();
for (ItemInfo itemInfo : group.items) { for (ItemInfo itemInfo : group.items) {
Comparable<?> key = groupPileBy.fnSort.apply(itemInfo); Comparable<?> key = groupPileBy.fnSort.apply(itemInfo);
if (!piles.containsKey(key)) { if (key != null && !piles.containsKey(key)) {
piles.put(key, new Pile()); piles.put(key, new Pile());
} }
piles.get(key).items.add(itemInfo); Pile p = key == null ? null : piles.getOrDefault(key, null);
if (p != null)
p.items.add(itemInfo);
} }
group.piles.clear(); group.piles.clear();
group.piles.addAll(piles.values()); group.piles.addAll(piles.values());

View File

@@ -2,7 +2,7 @@ Name:Agatha of the Vile Cauldron
ManaCost:R G ManaCost:R G
Types:Legendary Creature Human Warlock Types:Legendary Creature Human Warlock
PT:1/1 PT:1/1
S:Mode$ ReduceCost | ValidCard$ Creature.YouCtrl | Type$ Ability | Amount$ X | MinMana$ 1 | AffectedZone$ Battlefield | Description$ Activated abilities of creatures you control cost X less to activate, where X is CARDNAME's power. This effect can't reduce the mana in that cost to less than one mana. S:Mode$ ReduceCost | ValidCard$ Creature.YouCtrl | Type$ Ability | Amount$ X | MinMana$ 1 | AffectedZone$ Battlefield | Description$ Activated abilities of creatures you control cost {X} less to activate, where X is CARDNAME's power. This effect can't reduce the mana in that cost to less than one mana.
A:AB$ PumpAll | Cost$ 4 R G | ValidCards$ Creature.YouCtrl+StrictlyOther | NumAtt$ +1 | NumDef$ +1 | KW$ Trample & Haste | SpellDescription$ Other creatures you control get +1/+1 and gain trample and haste until end of turn. A:AB$ PumpAll | Cost$ 4 R G | ValidCards$ Creature.YouCtrl+StrictlyOther | NumAtt$ +1 | NumDef$ +1 | KW$ Trample & Haste | SpellDescription$ Other creatures you control get +1/+1 and gain trample and haste until end of turn.
SVar:X:Count$CardPower SVar:X:Count$CardPower
Oracle:Activated abilities of creatures you control cost X less to activate, where X is Agatha of the Vile Cauldron's power. This effect can't reduce the mana in that cost to less than one mana.\n{4}{R}{G}: Other creatures you control get +1/+1 and gain trample and haste until end of turn. Oracle:Activated abilities of creatures you control cost {X} less to activate, where X is Agatha of the Vile Cauldron's power. This effect can't reduce the mana in that cost to less than one mana.\n{4}{R}{G}: Other creatures you control get +1/+1 and gain trample and haste until end of turn.

View File

@@ -8,7 +8,7 @@ T:Mode$ ChangesZoneAll | TriggerZones$ Battlefield | ValidCards$ Cat.Other+YouCt
SVar:TrigExile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DBReturn SVar:TrigExile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DBReturn
SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | SubAbility$ DBCleanup SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
DeckHas:Ability$Token DeckHas:Ability$Sacrifice|Token
AlternateMode:DoubleFaced AlternateMode:DoubleFaced
Oracle:When Ajani, Nacatl Pariah enters, create a 2/1 white Cat Warrior creature token.\nWhenever one or more other Cats you control die, you may exile Ajani, then return him to the battlefield transformed under his owner's control. Oracle:When Ajani, Nacatl Pariah enters, create a 2/1 white Cat Warrior creature token.\nWhenever one or more other Cats you control die, you may exile Ajani, then return him to the battlefield transformed under his owner's control.
@@ -24,11 +24,7 @@ A:AB$ Token | Cost$ AddCounter<0/LOYALTY> | TokenAmount$ 1 | TokenScript$ w_2_1_
SVar:DBImmediateTrig1:DB$ ImmediateTrigger | TriggerAmount$ Remembered$Amount | ConditionPresent$ Permanent.Red+YouCtrl+Other | Execute$ TrigDamage | TriggerDescription$ When you do, if you control a red permanent other than CARDNAME, he deals damage equal to the number of creatures you control to any target. SVar:DBImmediateTrig1:DB$ ImmediateTrigger | TriggerAmount$ Remembered$Amount | ConditionPresent$ Permanent.Red+YouCtrl+Other | Execute$ TrigDamage | TriggerDescription$ When you do, if you control a red permanent other than CARDNAME, he deals damage equal to the number of creatures you control to any target.
SVar:TrigDamage:DB$ DealDamage | NumDmg$ X | ValidTgts$ Any | ConditionPresent$ Permanent.Red+YouCtrl+Other | SubAbility$ DBCleanup | TgtPrompt$ Select any valid target | SpellDescription$ CARDNAME deals damage equal to the number of creatures you control to any target. SVar:TrigDamage:DB$ DealDamage | NumDmg$ X | ValidTgts$ Any | ConditionPresent$ Permanent.Red+YouCtrl+Other | SubAbility$ DBCleanup | TgtPrompt$ Select any valid target | SpellDescription$ CARDNAME deals damage equal to the number of creatures you control to any target.
SVar:X:Count$Valid Creature.YouCtrl SVar:X:Count$Valid Creature.YouCtrl
A:AB$ RepeatEach | Cost$ SubCounter<4/LOYALTY> | Planeswalker$ True | Ultimate$ True | RepeatPlayers$ Opponent | RepeatSubAbility$ ChooseArtf | SubAbility$ SacAllOthers | SpellDescription$ Each opponent chooses an artifact, a creature, an enchantment, and a planeswalker from among the nonland permanents they control, then sacrifices the rest. A:AB$ ChooseCard | Cost$ SubCounter<4/LOYALTY> | Planeswalker$ True | Ultimate$ True | Defined$ Opponent | Choices$ Permanent.nonLand | ChooseEach$ Artifact & Creature & Enchantment & Planeswalker | ControlledByPlayer$ Chooser | Mandatory$ True | Reveal$ True | SubAbility$ SacAllOthers | StackDescription$ SpellDescription | SpellDescription$ Each opponent chooses an artifact, a creature, an enchantment, and a planeswalker from among the nonland permanents they control, then sacrifices the rest.
SVar:ChooseArtf:DB$ ChooseCard | Defined$ Remembered | Amount$ 1 | Choices$ Artifact.nonLand+RememberedPlayerCtrl | ChoiceTitle$ Choose an artifact to keep | SubAbility$ ChooseCrtr | RememberChosen$ True | Mandatory$ True SVar:SacAllOthers:DB$ SacrificeAll | ValidCards$ Permanent.nonLand+OppCtrl+nonChosenCard | SubAbility$ DBCleanup
SVar:ChooseCrtr:DB$ ChooseCard | Defined$ Remembered | Amount$ 1 | Choices$ Creature.nonLand+RememberedPlayerCtrl | ChoiceTitle$ Choose a creature to keep | SubAbility$ ChooseEnch | RememberChosen$ True | Mandatory$ True SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True
SVar:ChooseEnch:DB$ ChooseCard | Defined$ Remembered | Amount$ 1 | Choices$ Enchantment.nonLand+RememberedPlayerCtrl | ChoiceTitle$ Choose an enchantment to keep | SubAbility$ ChoosePwkr | RememberChosen$ True | Mandatory$ True
SVar:ChoosePwkr:DB$ ChooseCard | Defined$ Remembered | Amount$ 1 | Choices$ Planeswalker.nonLand+RememberedPlayerCtrl | ChoiceTitle$ Choose a land to keep | RememberChosen$ True | Mandatory$ True
SVar:SacAllOthers:DB$ SacrificeAll | ValidCards$ Permanent.nonLand+OppCtrl+IsNotRemembered | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
Oracle:[+2]: Put a +1/+1 counter on each Cat you control.\n[0]: Create a 2/1 white Cat Warrior creature token. When you do, if you control a red permanent other than Ajani, Nacatl Avenger, he deals damage equal to the number of creatures you control to any target.\n[-4]: Each opponent chooses an artifact, a creature, an enchantment and a planeswalker from among the nonland permanents they control, then sacrifices the rest. Oracle:[+2]: Put a +1/+1 counter on each Cat you control.\n[0]: Create a 2/1 white Cat Warrior creature token. When you do, if you control a red permanent other than Ajani, Nacatl Avenger, he deals damage equal to the number of creatures you control to any target.\n[-4]: Each opponent chooses an artifact, a creature, an enchantment and a planeswalker from among the nonland permanents they control, then sacrifices the rest.

View File

@@ -2,7 +2,8 @@ Name:All Shall Smolder in My Wake
ManaCost:no cost ManaCost:no cost
Types:Scheme Types:Scheme
T:Mode$ SetInMotion | ValidCard$ Card.Self | Execute$ Ignite | TriggerZones$ Command | TriggerDescription$ When you set this scheme in motion, destroy up to one target artifact, up to one target enchantment, and up to one target nonbasic land. T:Mode$ SetInMotion | ValidCard$ Card.Self | Execute$ Ignite | TriggerZones$ Command | TriggerDescription$ When you set this scheme in motion, destroy up to one target artifact, up to one target enchantment, and up to one target nonbasic land.
SVar:Ignite:DB$ Destroy | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Artifact | TgtPrompt$ Select target artifact to destroy | SubAbility$ Burn SVar:Ignite:DB$ Pump | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Artifact | TgtPrompt$ Select target artifact to destroy | AILogic$ Destroy | IsCurse$ True | SubAbility$ Burn
SVar:Burn:DB$ Destroy | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Enchantment | TgtPrompt$ Select target enchantment to destroy | SubAbility$ Smolder SVar:Burn:DB$ Pump | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Enchantment | TgtPrompt$ Select target enchantment to destroy | AILogic$ Destroy | IsCurse$ True | SubAbility$ Smolder
SVar:Smolder:DB$ Destroy | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Land.nonBasic | TgtPrompt$ Select target nonbasic land to destroy SVar:Smolder:DB$ Pump | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Land.nonBasic | TgtPrompt$ Select target nonbasic land to destroy | AILogic$ Destroy | IsCurse$ True | SubAbility$ Burninate
SVar:Burninate:DB$ Destroy | Defined$ Targeted
Oracle:When you set this scheme in motion, destroy up to one target artifact, up to one target enchantment, and up to one target nonbasic land. Oracle:When you set this scheme in motion, destroy up to one target artifact, up to one target enchantment, and up to one target nonbasic land.

View File

@@ -3,8 +3,9 @@ ManaCost:3 B B
Types:Creature Demon Types:Creature Demon
PT:5/4 PT:5/4
K:Flying K:Flying
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ Opponent | TriggerZones$ Battlefield | Execute$ TrigChoose | TriggerDescription$ At the beginning of each opponent's end step, that player chooses up to two creature they control, then sacrifices the rest. T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ Opponent | TriggerZones$ Battlefield | Execute$ TrigChoose | TriggerDescription$ At the beginning of each opponent's end step, that player chooses up to two creatures they control, then sacrifices the rest.
SVar:TrigChoose:DB$ ChooseCard | Defined$ TriggeredPlayer | MinAmount$ 0 | Amount$ 2 | TargetControls$ True | Choices$ Creature | ChoiceTitle$ Choose up to two creatures | SubAbility$ DBSacrificeAll SVar:TrigChoose:DB$ ChooseCard | Defined$ TriggeredPlayer | MinAmount$ 0 | Amount$ 2 | TargetControls$ True | Choices$ Creature | ChoiceTitle$ Choose up to two creatures to keep | Reveal$ True | SubAbility$ DBSacrificeAll
SVar:DBSacrificeAll:DB$ SacrificeAll | ValidCards$ Creature.nonChosenCard | Controller$ TriggeredPlayer | SubAbility$ DBCleanup SVar:DBSacrificeAll:DB$ SacrificeAll | ValidCards$ Creature.nonChosenCard | Controller$ TriggeredPlayer | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True
DeckHas:Ability$Sacrifice
Oracle:Flying\nAt the beginning of each opponent's end step, that player chooses up to two creatures they control, then sacrifices the rest. Oracle:Flying\nAt the beginning of each opponent's end step, that player chooses up to two creatures they control, then sacrifices the rest.

View File

@@ -6,4 +6,5 @@ SVar:DBChooseSac:DB$ ChooseCard | Choices$ Card.IsRemembered | Defined$ Targeted
SVar:DBSac:DB$ SacrificeAll | Defined$ ChosenCard | SubAbility$ DBBounce | StackDescription$ None SVar:DBSac:DB$ SacrificeAll | Defined$ ChosenCard | SubAbility$ DBBounce | StackDescription$ None
SVar:DBBounce:DB$ ChangeZone | Defined$ Remembered | Origin$ Battlefield | Destination$ Hand | SubAbility$ DBCleanup | StackDescription$ None SVar:DBBounce:DB$ ChangeZone | Defined$ Remembered | Origin$ Battlefield | Destination$ Hand | SubAbility$ DBCleanup | StackDescription$ None
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
DeckHas:Ability$Sacrifice
Oracle:Choose two target creatures controlled by the same player. Their controller chooses and sacrifices one of them. Return the other to its owner's hand. Oracle:Choose two target creatures controlled by the same player. Their controller chooses and sacrifices one of them. Return the other to its owner's hand.

View File

@@ -4,5 +4,5 @@ Types:Ongoing Scheme
S:Mode$ ReduceCost | EffectZone$ Command | ValidCard$ Card | Type$ Spell | Activator$ You | Amount$ 1 | Description$ Spells you cast cost {1} less to cast. S:Mode$ ReduceCost | EffectZone$ Command | ValidCard$ Card | Type$ Spell | Activator$ You | Amount$ 1 | Description$ Spells you cast cost {1} less to cast.
T:Mode$ Phase | Phase$ End Of Turn | ValidPlayer$ Player.Opponent | Execute$ Abandon | TriggerZones$ Command | CheckSVar$ X | SVarCompare$ GE4 | TriggerDescription$ At the beginning of your opponents' end step, if they cast four or more spells this turn, abandon this scheme. T:Mode$ Phase | Phase$ End Of Turn | ValidPlayer$ Player.Opponent | Execute$ Abandon | TriggerZones$ Command | CheckSVar$ X | SVarCompare$ GE4 | TriggerDescription$ At the beginning of your opponents' end step, if they cast four or more spells this turn, abandon this scheme.
SVar:Abandon:DB$ Abandon SVar:Abandon:DB$ Abandon
SVar:X:Count$ThisTurnCast_Card.YouDontCtrl SVar:X:Count$ThisTurnCast_Card.ActivePlayerCtrl
Oracle:(An ongoing scheme remains face up until it's abandoned.)\nSpells you cast cost {1} less to cast.\nAt the beginning of your opponents' end step, if they cast four or more spells this turn, abandon this scheme. Oracle:(An ongoing scheme remains face up until it's abandoned.)\nSpells you cast cost {1} less to cast.\nAt the beginning of your opponents' end step, if they cast four or more spells this turn, abandon this scheme.

View File

@@ -4,7 +4,7 @@ Types:Creature Bird
PT:2/1 PT:2/1
K:Flying K:Flying
K:etbCounter:P1P1:1:CheckSVar$ Morbid:CARDNAME enters with a +1/+1 counter on it if a creature died this turn. K:etbCounter:P1P1:1:CheckSVar$ Morbid:CARDNAME enters with a +1/+1 counter on it if a creature died this turn.
SVar:Morbid:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature SVar:Morbid:Count$Morbid.1.0
K:Plot:1 B K:Plot:1 B
DeckHas:Ability$Counters DeckHas:Ability$Counters
Oracle:Flying\nBlacksnag Buzzard enters with a +1/+1 counter on it if a creature died this turn.\nPlot {1}{B} (You may pay {1}{B} and exile this card from your hand. Cast it as a sorcery on a later turn without paying its mana cost. Plot only as a sorcery.) Oracle:Flying\nBlacksnag Buzzard enters with a +1/+1 counter on it if a creature died this turn.\nPlot {1}{B} (You may pay {1}{B} and exile this card from your hand. Cast it as a sorcery on a later turn without paying its mana cost. Plot only as a sorcery.)

View File

@@ -4,6 +4,6 @@ Types:Creature Beast
PT:3/3 PT:3/3
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | CheckSVar$ Morbid | SVarCompare$ GE1 | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your end step, if a creature died this turn, put a +1/+1 counter on CARDNAME. T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | CheckSVar$ Morbid | SVarCompare$ GE1 | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your end step, if a creature died this turn, put a +1/+1 counter on CARDNAME.
SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1
SVar:Morbid:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature SVar:Morbid:Count$Morbid.1.0
DeckHas:Ability$Counters DeckHas:Ability$Counters
Oracle:At the beginning of your end step, if a creature died this turn, put a +1/+1 counter on Bulette. Oracle:At the beginning of your end step, if a creature died this turn, put a +1/+1 counter on Bulette.

View File

@@ -11,6 +11,6 @@ ALTERNATE
Name:Release Name:Release
ManaCost:4 R W ManaCost:4 R W
Types:Sorcery Types:Sorcery
A:SP$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBSac | SpellDescription$ Each player sacrifices an artifact, a creature, an enchantment, a land, and a planeswalker. A:SP$ Sacrifice | Defined$ Player | SacValid$ Artifact & Creature & Enchantment & Land & Planeswalker | SacEachValid$ True | SpellDescription$ Each player sacrifices an artifact, a creature, an enchantment, a land, and a planeswalker.
SVar:DBSac:DB$ Sacrifice | Defined$ Player.IsRemembered | SacValid$ Artifact & Creature & Enchantment & Land & Planeswalker | SacEachValid$ True DeckHas:Ability$Sacrifice
Oracle:Each player sacrifices an artifact, a creature, an enchantment, a land, and a planeswalker.\nFuse (You may cast one or both halves of this card from your hand.) Oracle:Each player sacrifices an artifact, a creature, an enchantment, a land, and a planeswalker.\nFuse (You may cast one or both halves of this card from your hand.)

View File

@@ -5,8 +5,8 @@ PT:6/6
K:First Strike K:First Strike
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DBChoice | TriggerDescription$ When CARDNAME enters, target opponent may have you draw three cards. If the player doesn't, you mill three cards, then CARDNAME deals damage to that player equal to the total mana value of those cards. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DBChoice | TriggerDescription$ When CARDNAME enters, target opponent may have you draw three cards. If the player doesn't, you mill three cards, then CARDNAME deals damage to that player equal to the total mana value of those cards.
SVar:DBChoice:DB$ GenericChoice | ValidTgts$ Opponent | Choices$ CombustDraw,CombustDamage | AILogic$ CombustibleGearhulk SVar:DBChoice:DB$ GenericChoice | ValidTgts$ Opponent | Choices$ CombustDraw,CombustDamage | AILogic$ CombustibleGearhulk
SVar:CombustDraw:DB$ Draw | Defined$ You | NumCards$ 3 | SpellDescription$ Controller draws three cards SVar:CombustDraw:DB$ Draw | Defined$ You | NumCards$ 3 | SpellDescription$ CARDNAME's controller draws three cards.
SVar:CombustDamage:DB$ Mill | Defined$ You | NumCards$ 3 | RememberMilled$ True | SubAbility$ DamageOpponent | SpellDescription$ Controller mills three cards, then CARDNAME deals damage to you equal to their total mana value. SVar:CombustDamage:DB$ Mill | Defined$ You | NumCards$ 3 | RememberMilled$ True | SubAbility$ DamageOpponent | SpellDescription$ CARDNAME's controller mills three cards, then it deals damage to you equal to the total mana value of those cards.
SVar:DamageOpponent:DB$ DealDamage | Defined$ ParentTarget | NumDmg$ X | SubAbility$ DBCleanup SVar:DamageOpponent:DB$ DealDamage | Defined$ ParentTarget | NumDmg$ X | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:Remembered$SumCMC SVar:X:Remembered$SumCMC

View File

@@ -3,14 +3,11 @@ ManaCost:3 R W
Types:Legendary Creature Human Soldier Types:Legendary Creature Human Soldier
PT:5/3 PT:5/3
T:Mode$ AttackersDeclared | AttackingPlayer$ You | Execute$ TrigDig | TriggerZones$ Battlefield | TriggerDescription$ Whenever you attack, spells you cast from exile this turn cost {X} less to cast, where X is the number of players being attacked. Exile the top X cards of your library. Until end of turn, you may cast spells from among those exiled cards. T:Mode$ AttackersDeclared | AttackingPlayer$ You | Execute$ TrigDig | TriggerZones$ Battlefield | TriggerDescription$ Whenever you attack, spells you cast from exile this turn cost {X} less to cast, where X is the number of players being attacked. Exile the top X cards of your library. Until end of turn, you may cast spells from among those exiled cards.
SVar:TrigDig:DB$ Dig | DigNum$ X | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBStoreNum SVar:TrigDig:DB$ Dig | DigNum$ X | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect
SVar:DBStoreNum:DB$ StoreSVar | SVar$ Y | Type$ Calculate | Expression$ X | SubAbility$ DBEffect SVar:DBEffect:DB$ Effect | StaticAbilities$ ReduceCost,STPlay | RememberObjects$ Remembered | SetChosenNumber$ X | SubAbility$ DBCleanup
SVar:DBEffect:DB$ Effect | StaticAbilities$ ReduceCost,STPlay | RememberObjects$ Remembered | SubAbility$ DBCleanup SVar:ReduceCost:Mode$ ReduceCost | EffectZone$ Command | ValidCard$ Card.wasCastFromExile | Type$ Spell | Activator$ You | Amount$ ChosenNumber | Description$ Spells you cast from exile this turn cost {X} less to cast, where X is the number of players you attacked.
SVar:ReduceCost:Mode$ ReduceCost | EffectZone$ Command | ValidCard$ Card.wasCastFromExile | Type$ Spell | Activator$ You | Amount$ Y | Description$ Spells you cast from exile this turn cost {X} less to cast, where X is the number of players you attacked.
SVar:STPlay:Mode$ Continuous | Affected$ Card.IsRemembered+nonLand | EffectZone$ Command | AffectedZone$ Exile | MayPlay$ True | Description$ Until end of turn, you may cast spells from among those exiled cards. SVar:STPlay:Mode$ Continuous | Affected$ Card.IsRemembered+nonLand | EffectZone$ Command | AffectedZone$ Exile | MayPlay$ True | Description$ Until end of turn, you may cast spells from among those exiled cards.
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | SubAbility$ DBResetNum SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:DBResetNum:DB$ StoreSVar | SVar$ Y | Type$ Number | Expression$ 0
SVar:X:TriggeredPlayersAttackedTarget$Amount SVar:X:TriggeredPlayersAttackedTarget$Amount
SVar:Y:Number$0
DeckHints:Keyword$Encore|Myriad DeckHints:Keyword$Encore|Myriad
Oracle:Whenever you attack, spells you cast from exile this turn cost {X} less to cast, where X is the number of players being attacked. Exile the top X cards of your library. Until end of turn, you may cast spells from among those exiled cards. Oracle:Whenever you attack, spells you cast from exile this turn cost {X} less to cast, where X is the number of players being attacked. Exile the top X cards of your library. Until end of turn, you may cast spells from among those exiled cards.

View File

@@ -1,11 +1,9 @@
Name:Covetous Elegy Name:Covetous Elegy
ManaCost:4 W B ManaCost:4 W B
Types:Sorcery Types:Sorcery
A:SP$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBChooseSac | SubAbility$ DBSac | SpellDescription$ Each player chooses up to two creatures they control, then sacrifices the rest. Then you create a tapped Treasure token for each creature your opponents control. A:SP$ ChooseCard | Defined$ Player | Choices$ Creature | ControlledByPlayer$ Chooser | MinAmount$ 0 | Amount$ 2 | ChoiceTitle$ Choose up to two creatures to keep | Reveal$ True | SubAbility$ SacAllOthers | StackDescription$ SpellDescription | SpellDescription$ Each player chooses up to two creatures they control, then sacrifices the rest. Then you create a tapped Treasure token for each creature your opponents control.
SVar:DBChooseSac:DB$ ChooseCard | Defined$ Remembered | Choices$ Creature.RememberedPlayerCtrl | Amount$ 2 | ChoiceTitle$ Choose two creatures not to be sacrificed | RememberChosen$ True SVar:SacAllOthers:DB$ SacrificeAll | ValidCards$ Creature.nonChosenCard | SubAbility$ DBToken
SVar:DBSac:DB$ SacrificeAll | ValidCards$ Creature.IsNotRemembered | SubAbility$ DBToken SVar:DBToken:DB$ Token | TokenScript$ c_a_treasure_sac | TokenAmount$ X
SVar:DBToken:DB$ Token | TokenScript$ c_a_treasure_sac | TokenAmount$ X | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:Count$Valid Creature.OppCtrl SVar:X:Count$Valid Creature.OppCtrl
AI:RemoveDeck:All AI:RemoveDeck:All
DeckHas:Ability$Token|Sacrifice & Type$Treasure DeckHas:Ability$Token|Sacrifice & Type$Treasure

View File

@@ -1,9 +1,10 @@
Name:Crackling Doom Name:Crackling Doom
ManaCost:R W B ManaCost:R W B
Types:Instant Types:Instant
A:SP$ DealDamage | Defined$ Player.Opponent | NumDmg$ 2 | SubAbility$ DBRepeat | AILogic$ OpponentHasCreatures | SpellDescription$ CARDNAME deals 2 damage to each opponent. Each opponent sacrifices a creature with the greatest power among creatures that player controls. A:SP$ DealDamage | Defined$ Player.Opponent | NumDmg$ 2 | SubAbility$ DBRepeat | SpellDescription$ CARDNAME deals 2 damage to each opponent. Each opponent sacrifices a creature with the greatest power among creatures that player controls.
SVar:DBRepeat:DB$ RepeatEach | RepeatPlayers$ Player.Opponent | RepeatSubAbility$ DBChooseCard | SubAbility$ DBSac SVar:DBRepeat:DB$ RepeatEach | RepeatPlayers$ Player.Opponent | RepeatSubAbility$ DBChooseCard | SubAbility$ DBSac
SVar:DBChooseCard:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Creature.greatestPowerControlledByRemembered | ChoiceTitle$ Choose a creature you control with the greatest power | Mandatory$ True | RememberChosen$ True SVar:DBChooseCard:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Creature.greatestPowerControlledByRemembered | ChoiceTitle$ Choose a creature you control with the greatest power | Mandatory$ True | Reveal$ True | RememberChosen$ True
SVar:DBSac:DB$ SacrificeAll | ValidCards$ Card.IsRemembered | SubAbility$ DBCleanup | StackDescription$ Each opponent sacrifices a creature with the greatest power among creatures they control. SVar:DBSac:DB$ SacrificeAll | ValidCards$ Card.IsRemembered | SubAbility$ DBCleanup | StackDescription$ Each opponent sacrifices a creature with the greatest power among creatures they control.
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:NeedsToPlay:Creature.OppCtrl
Oracle:Crackling Doom deals 2 damage to each opponent. Each opponent sacrifices a creature with the greatest power among creatures that player controls. Oracle:Crackling Doom deals 2 damage to each opponent. Each opponent sacrifices a creature with the greatest power among creatures that player controls.

View File

@@ -3,6 +3,6 @@ ManaCost:2 U
Types:Instant Types:Instant
A:SP$ Pump | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Choose up to one target creature each opponent controls | TargetMin$ 0 | TargetMax$ OneEach | TargetsForEachPlayer$ True | SubAbility$ DBRepeat | SpellDescription$ For each opponent, choose up to one target creature that player controls, then return that creature to its owner's hand unless its controller has you draw a card. A:SP$ Pump | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Choose up to one target creature each opponent controls | TargetMin$ 0 | TargetMax$ OneEach | TargetsForEachPlayer$ True | SubAbility$ DBRepeat | SpellDescription$ For each opponent, choose up to one target creature that player controls, then return that creature to its owner's hand unless its controller has you draw a card.
SVar:DBRepeat:DB$ RepeatEach | DefinedCards$ Targeted | RepeatSubAbility$ DBReturn SVar:DBRepeat:DB$ RepeatEach | DefinedCards$ Targeted | RepeatSubAbility$ DBReturn
SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Battlefield | Destination$ Hand | UnlessCost$ Draw<1/Player.YouActivator> | UnlessPayer$ RememberedController SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Battlefield | Destination$ Hand | UnlessCost$ Draw<1/Player.Activator> | UnlessPayer$ RememberedController
SVar:OneEach:PlayerCountOpponents$Amount SVar:OneEach:PlayerCountOpponents$Amount
Oracle:For each opponent, choose up to one target creature that player controls, then return that creature to its owner's hand unless its controller has you draw a card. Oracle:For each opponent, choose up to one target creature that player controls, then return that creature to its owner's hand unless its controller has you draw a card.

View File

@@ -6,7 +6,7 @@ T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | E
A:AB$ Destroy | ValidTgts$ Land | TgtPrompt$ Select target land. | Cost$ T | SpellDescription$ Destroy target land. A:AB$ Destroy | ValidTgts$ Land | TgtPrompt$ Select target land. | Cost$ T | SpellDescription$ Destroy target land.
SVar:DBTap:DB$ Tap | Defined$ Self | UnlessCost$ B B B | UnlessPayer$ You | UnlessResolveSubs$ WhenNotPaid | SubAbility$ DBChooseOpponent SVar:DBTap:DB$ Tap | Defined$ Self | UnlessCost$ B B B | UnlessPayer$ You | UnlessResolveSubs$ WhenNotPaid | SubAbility$ DBChooseOpponent
SVar:DBChooseOpponent:DB$ ChoosePlayer | Defined$ You | Choices$ Player.Opponent | ChoiceTitle$ Choose an opponent | SubAbility$ DBChooseLand SVar:DBChooseOpponent:DB$ ChoosePlayer | Defined$ You | Choices$ Player.Opponent | ChoiceTitle$ Choose an opponent | SubAbility$ DBChooseLand
SVar:DBChooseLand:DB$ ChooseCard | Defined$ ChosenPlayer | Choices$ Land.YouCtrl | Mandatory$ True | ChoiceTitle$ Select a land for opponent to sacrifice | SubAbility$ DBSacLand SVar:DBChooseLand:DB$ ChooseCard | Defined$ ChosenPlayer | Choices$ Land.YouCtrl | Mandatory$ True | Reveal$ True | ChoiceTitle$ Select a land for opponent to sacrifice | SubAbility$ DBSacLand
SVar:DBSacLand:DB$ SacrificeAll | Defined$ ChosenCard SVar:DBSacLand:DB$ SacrificeAll | Defined$ ChosenCard
SVar:PlayMain1:FALSE SVar:PlayMain1:FALSE
DeckHas:Ability$Sacrifice DeckHas:Ability$Sacrifice

View File

@@ -2,9 +2,9 @@ Name:Divine Reckoning
ManaCost:2 W W ManaCost:2 W W
Types:Sorcery Types:Sorcery
K:Flashback:5 W W K:Flashback:5 W W
A:SP$ RepeatEach | AILogic$ OpponentHasMultipleCreatures | RepeatPlayers$ Player | RepeatSubAbility$ DBChoose | SubAbility$ DBDestroyAll | SpellDescription$ Each player chooses a creature they control. Destroy the rest. A:SP$ ChooseCard | Defined$ Player | Amount$ 1 | Choices$ Creature | ControlledByPlayer$ Chooser | Mandatory$ True | SubAbility$ DBDestroyAll | SpellDescription$ Each player chooses a creature they control. Destroy the rest.
SVar:DBChoose:DB$ ChooseCard | Defined$ Remembered | Amount$ 1 | Choices$ Creature.RememberedPlayerCtrl | Mandatory$ True | RememberChosen$ True SVar:DBDestroyAll:DB$ DestroyAll | ValidCards$ Creature.!ChosenCard
SVar:DBDestroyAll:DB$ DestroyAll | ValidCards$ Creature.IsNotRemembered | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
AI:RemoveDeck:All AI:RemoveDeck:All
SVar:NeedsToPlayVar:Z GE2
SVar:Z:Count$Valid Creature.OppCtrl
Oracle:Each player chooses a creature they control. Destroy the rest.\nFlashback {5}{W}{W} (You may cast this card from your graveyard for its flashback cost. Then exile it.) Oracle:Each player chooses a creature they control. Destroy the rest.\nFlashback {5}{W}{W} (You may cast this card from your graveyard for its flashback cost. Then exile it.)

View File

@@ -1,7 +1,7 @@
Name:Doomsday Name:Doomsday
ManaCost:B B B ManaCost:B B B
Types:Sorcery Types:Sorcery
A:SP$ ChangeZone | Origin$ Graveyard,Library | Destination$ Library | ChangeType$ Card | ChangeNum$ 5 | SubAbility$ DBChangeZone | RememberChanged$ True | Mandatory$ True | SpellDescription$ Search your library and graveyard for five cards and exile the rest. Put the chosen cards on top of your library in any order. You lose half your life, rounded up. A:SP$ ChangeZone | Origin$ Graveyard,Library | Destination$ Library | ChangeType$ Card | ChangeNum$ 5 | Shuffle$ False | SubAbility$ DBChangeZone | RememberChanged$ True | Mandatory$ True | SpellDescription$ Search your library and graveyard for five cards and exile the rest. Put the chosen cards on top of your library in any order. You lose half your life, rounded up.
SVar:DBChangeZone:DB$ ChangeZoneAll | Defined$ You | Origin$ Graveyard,Library | Destination$ Exile | ChangeType$ Card.IsNotRemembered | SubAbility$ DBDig SVar:DBChangeZone:DB$ ChangeZoneAll | Defined$ You | Origin$ Graveyard,Library | Destination$ Exile | ChangeType$ Card.IsNotRemembered | SubAbility$ DBDig
SVar:DBDig:DB$ RearrangeTopOfLibrary | Defined$ You | NumCards$ X | SubAbility$ DBLoseLife SVar:DBDig:DB$ RearrangeTopOfLibrary | Defined$ You | NumCards$ X | SubAbility$ DBLoseLife
SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ Y | SubAbility$ DBCleanup SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ Y | SubAbility$ DBCleanup

View File

@@ -3,7 +3,7 @@ ManaCost:3 R G
Types:Legendary Artifact Types:Legendary Artifact
T:Mode$ AttackersDeclared | AttackingPlayer$ You | Execute$ TrigScry | TriggerZones$ Battlefield | TriggerDescription$ Whenever you attack, scry 2, then you may reveal the top card of your library. If it's a creature card, put it onto the battlefield tapped and attacking. Until your next turn, it gains trample if you control a Dwarf and hexproof if you control an Elf. T:Mode$ AttackersDeclared | AttackingPlayer$ You | Execute$ TrigScry | TriggerZones$ Battlefield | TriggerDescription$ Whenever you attack, scry 2, then you may reveal the top card of your library. If it's a creature card, put it onto the battlefield tapped and attacking. Until your next turn, it gains trample if you control a Dwarf and hexproof if you control an Elf.
SVar:TrigScry:DB$ Scry | ScryNum$ 2 | SubAbility$ DBDig SVar:TrigScry:DB$ Scry | ScryNum$ 2 | SubAbility$ DBDig
SVar:DBDig:DB$ Dig | DigNum$ 1 | ChangeNum$ All | Optional$ True | Reveal$ True | ChangeValid$ Creature | DestinationZone$ Battlefield | Tapped$ True | Attacking$ True | RememberChanged$ True | SubAbility$ DBPumpTrample SVar:DBDig:DB$ Dig | DigNum$ 1 | ChangeNum$ All | RevealOptional$ True | RememberRevealed$ True | ChangeValid$ Creature.IsRemembered | DestinationZone$ Battlefield | Tapped$ True | Attacking$ True | SubAbility$ DBPumpTrample
SVar:DBPumpTrample:DB$ Pump | Defined$ Remembered | KW$ Trample | Duration$ UntilYourNextTurn | ConditionPresent$ Dwarf.YouCtrl | SubAbility$ DBPumpHexproof SVar:DBPumpTrample:DB$ Pump | Defined$ Remembered | KW$ Trample | Duration$ UntilYourNextTurn | ConditionPresent$ Dwarf.YouCtrl | SubAbility$ DBPumpHexproof
SVar:DBPumpHexproof:DB$ Pump | Defined$ Remembered | KW$ Hexproof | Duration$ UntilYourNextTurn | ConditionPresent$ Elf.YouCtrl | SubAbility$ DBCleanup SVar:DBPumpHexproof:DB$ Pump | Defined$ Remembered | KW$ Hexproof | Duration$ UntilYourNextTurn | ConditionPresent$ Elf.YouCtrl | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True

View File

@@ -4,7 +4,7 @@ Types:Creature Mouse Warrior
PT:2/2 PT:2/2
K:Haste K:Haste
K:Prowess K:Prowess
T:Mode$ BecomesTarget | ValidTarget$ Card.Self | ValidSource$ SpellAbility.YouCtrl | TriggerZones$ Battlefield | FirstTime$ True | Execute$ TrigExile | TriggerDescription$ Valiant — Whenever CARDNAME becomes the target of a spell or ability you control for the first time each turn, exile the top card of your library. Until end of turn, you may play that card. T:Mode$ BecomesTarget | ValidTarget$ Card.Self | ValidSource$ SpellAbility.YouCtrl | TriggerZones$ Battlefield | Valiant$ True | Execute$ TrigExile | TriggerDescription$ Valiant — Whenever CARDNAME becomes the target of a spell or ability you control for the first time each turn, exile the top card of your library. Until end of turn, you may play that card.
SVar:TrigExile:DB$ Dig | Defined$ You | DigNum$ 1 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect SVar:TrigExile:DB$ Dig | Defined$ You | DigNum$ 1 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect
SVar:DBEffect:DB$ Effect | RememberObjects$ RememberedCard | StaticAbilities$ Play | SubAbility$ DBCleanup | ExileOnMoved$ Exile SVar:DBEffect:DB$ Effect | RememberObjects$ RememberedCard | StaticAbilities$ Play | SubAbility$ DBCleanup | ExileOnMoved$ Exile
SVar:Play:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ You may play remembered card. SVar:Play:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ You may play remembered card.

View File

@@ -5,6 +5,6 @@ PT:2/4
K:Flying K:Flying
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | CheckSVar$ Morbid | SVarCompare$ GE1 | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters, if a creature died this turn, create a 1/1 white Spirit creature token with flying. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | CheckSVar$ Morbid | SVarCompare$ GE1 | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters, if a creature died this turn, create a 1/1 white Spirit creature token with flying.
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ w_1_1_spirit_flying | TokenOwner$ You SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ w_1_1_spirit_flying | TokenOwner$ You
SVar:Morbid:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature SVar:Morbid:Count$Morbid.1.0
DeckHas:Ability$Token DeckHas:Ability$Token
Oracle:Flying\nWhen Emissary of the Sleepless enters, if a creature died this turn, create a 1/1 white Spirit creature token with flying. Oracle:Flying\nWhen Emissary of the Sleepless enters, if a creature died this turn, create a 1/1 white Spirit creature token with flying.

View File

@@ -3,7 +3,7 @@ ManaCost:2 B B
Types:Instant Types:Instant
S:Mode$ AlternativeCost | ValidSA$ Spell.Self | EffectZone$ All | Cost$ Sac<1/Creature.Black+nonToken/a nontoken black creature> | Description$ You may sacrifice a nontoken black creature rather than pay this spell's mana cost. S:Mode$ AlternativeCost | ValidSA$ Spell.Self | EffectZone$ All | Cost$ Sac<1/Creature.Black+nonToken/a nontoken black creature> | Description$ You may sacrifice a nontoken black creature rather than pay this spell's mana cost.
A:SP$ RepeatEach | RepeatPlayers$ Player.Opponent | RepeatSubAbility$ DBChooseCard | SubAbility$ DBSacAll | SpellDescription$ Each opponent sacrifices a creature or planeswalker with the greatest mana value among creatures and planeswalkers they control. A:SP$ RepeatEach | RepeatPlayers$ Player.Opponent | RepeatSubAbility$ DBChooseCard | SubAbility$ DBSacAll | SpellDescription$ Each opponent sacrifices a creature or planeswalker with the greatest mana value among creatures and planeswalkers they control.
SVar:DBChooseCard:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Creature.RememberedPlayerCtrl+cmcEQX,Planeswalker.RememberedPlayerCtrl+cmcEQX | ChoiceTitle$ Choose a creature or planeswalker with the greatest mana value among creatures and planeswalkers you control | Mandatory$ True | RememberChosen$ True SVar:DBChooseCard:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Creature.RememberedPlayerCtrl+cmcEQX,Planeswalker.RememberedPlayerCtrl+cmcEQX | ChoiceTitle$ Choose a creature or planeswalker with the greatest mana value among creatures and planeswalkers you control | Mandatory$ True | Reveal$ True | RememberChosen$ True
SVar:X:Count$Valid Creature.RememberedPlayerCtrl,Planeswalker.RememberedPlayerCtrl$GreatestCMC SVar:X:Count$Valid Creature.RememberedPlayerCtrl,Planeswalker.RememberedPlayerCtrl$GreatestCMC
SVar:DBSacAll:DB$ SacrificeAll | ValidCards$ Card.IsRemembered | SubAbility$ DBCleanup SVar:DBSacAll:DB$ SacrificeAll | ValidCards$ Card.IsRemembered | SubAbility$ DBCleanup
SVar:DBCleanupChosen:DB$ Cleanup | ClearChosenPlayer$ True SVar:DBCleanupChosen:DB$ Cleanup | ClearChosenPlayer$ True

View File

@@ -3,6 +3,6 @@ ManaCost:W
Types:Creature Mouse Soldier Types:Creature Mouse Soldier
PT:1/2 PT:1/2
K:Offspring:2 K:Offspring:2
T:Mode$ BecomesTarget | ValidTarget$ Card.Self | ValidSource$ SpellAbility.YouCtrl | TriggerZones$ Battlefield | FirstTime$ True | Execute$ TrigPumpAll | TriggerDescription$ Valiant — Whenever this creature becomes the target of a spell or ability you control for the first time each turn, Mice you control get +1/+0 until end of turn. T:Mode$ BecomesTarget | ValidTarget$ Card.Self | ValidSource$ SpellAbility.YouCtrl | TriggerZones$ Battlefield | Valiant$ True | Execute$ TrigPumpAll | TriggerDescription$ Valiant — Whenever this creature becomes the target of a spell or ability you control for the first time each turn, Mice you control get +1/+0 until end of turn.
SVar:TrigPumpAll:DB$ PumpAll | ValidCards$ Mouse.YouCtrl | NumAtt$ 1 SVar:TrigPumpAll:DB$ PumpAll | ValidCards$ Mouse.YouCtrl | NumAtt$ 1
Oracle:Offspring {2} (You may pay an additional {2} as you cast this spell. If you do, when this creature enters, create a 1/1 token copy of it.)\nValiant — Whenever this creature becomes the target of a spell or ability you control for the first time each turn, Mice you control get +1/+0 until end of turn. Oracle:Offspring {2} (You may pay an additional {2} as you cast this spell. If you do, when this creature enters, create a 1/1 token copy of it.)\nValiant — Whenever this creature becomes the target of a spell or ability you control for the first time each turn, Mice you control get +1/+0 until end of turn.

View File

@@ -3,7 +3,7 @@ ManaCost:2 G
Types:Instant Types:Instant
A:SP$ ChangeZone | Origin$ Graveyard | Destination$ Hand | TgtPrompt$ Select target permanent card in your graveyard | ValidTgts$ Permanent.YouOwn | SubAbility$ DBToken | StackDescription$ SpellDescription | SpellDescription$ Return target permanent card from your graveyard to your hand. If a creature died this turn, create two 1/1 green Saproling creature tokens. A:SP$ ChangeZone | Origin$ Graveyard | Destination$ Hand | TgtPrompt$ Select target permanent card in your graveyard | ValidTgts$ Permanent.YouOwn | SubAbility$ DBToken | StackDescription$ SpellDescription | SpellDescription$ Return target permanent card from your graveyard to your hand. If a creature died this turn, create two 1/1 green Saproling creature tokens.
SVar:DBToken:DB$ Token | TokenAmount$ 2 | TokenScript$ g_1_1_saproling | TokenOwner$ You | ConditionCheckSVar$ Morbid | ConditionSVarCompare$ GE1 SVar:DBToken:DB$ Token | TokenAmount$ 2 | TokenScript$ g_1_1_saproling | TokenOwner$ You | ConditionCheckSVar$ Morbid | ConditionSVarCompare$ GE1
SVar:Morbid:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature SVar:Morbid:Count$Morbid.1.0
DeckHints:Type$Fungus DeckHints:Type$Fungus
DeckHas:Ability$Token DeckHas:Ability$Token
Oracle:Return target permanent card from your graveyard to your hand. If a creature died this turn, create two 1/1 green Saproling creature tokens. Oracle:Return target permanent card from your graveyard to your hand. If a creature died this turn, create two 1/1 green Saproling creature tokens.

View File

@@ -5,6 +5,6 @@ PT:3/5
K:Reach K:Reach
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | CheckSVar$ Morbid | SVarCompare$ GE1 | Execute$ TrigInvestigate | TriggerDescription$ Morbid — When CARDNAME enters, if a creature died this turn, investigate. (Create a colorless Clue artifact token with "{2}, Sacrifice this artifact: Draw a card.") T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | CheckSVar$ Morbid | SVarCompare$ GE1 | Execute$ TrigInvestigate | TriggerDescription$ Morbid — When CARDNAME enters, if a creature died this turn, investigate. (Create a colorless Clue artifact token with "{2}, Sacrifice this artifact: Draw a card.")
SVar:TrigInvestigate:DB$ Investigate SVar:TrigInvestigate:DB$ Investigate
SVar:Morbid:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature SVar:Morbid:Count$Morbid.1.0
DeckHas:Ability$Investigate|Token DeckHas:Ability$Investigate|Token
Oracle:Reach\nMorbid — When Funnel-Web Recluse enters, if a creature died this turn, investigate. (Create a colorless Clue artifact token with "{2}, Sacrifice this artifact: Draw a card.") Oracle:Reach\nMorbid — When Funnel-Web Recluse enters, if a creature died this turn, investigate. (Create a colorless Clue artifact token with "{2}, Sacrifice this artifact: Draw a card.")

View File

@@ -8,7 +8,7 @@ SVar:DBPump:DB$ Pump | Defined$ ChosenCard | KW$ Lifelink
SVar:DBMurder:DB$ DestroyAll | ValidCards$ Creature.powerLE2 | SpellDescription$ Destroy each creature with power 2 or less. SVar:DBMurder:DB$ DestroyAll | ValidCards$ Creature.powerLE2 | SpellDescription$ Destroy each creature with power 2 or less.
SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ChangeNum$ 2 | ChangeType$ Creature.YouOwn | SelectPrompt$ Select up to two creature cards from your graveyard to return to your hand | Hidden$ True | StackDescription$ {p:You} returns up to two creature cards from their graveyard to their hand. | SpellDescription$ Return up to two creature cards from your graveyard to your hand. SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ChangeNum$ 2 | ChangeType$ Creature.YouOwn | SelectPrompt$ Select up to two creature cards from your graveyard to return to your hand | Hidden$ True | StackDescription$ {p:You} returns up to two creature cards from their graveyard to their hand. | SpellDescription$ Return up to two creature cards from your graveyard to your hand.
SVar:DBSacrifice:DB$ RepeatEach | RepeatPlayers$ Player.Opponent | RepeatSubAbility$ DBChooseCard | SubAbility$ DBSac | SpellDescription$ Each opponent sacrifices a creature with the highest power among creatures they control. SVar:DBSacrifice:DB$ RepeatEach | RepeatPlayers$ Player.Opponent | RepeatSubAbility$ DBChooseCard | SubAbility$ DBSac | SpellDescription$ Each opponent sacrifices a creature with the highest power among creatures they control.
SVar:DBChooseCard:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Creature.greatestPowerControlledByRemembered | ChoiceTitle$ Choose a creature you control with the greatest power | Mandatory$ True | RememberChosen$ True SVar:DBChooseCard:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Creature.greatestPowerControlledByRemembered | ChoiceTitle$ Choose a creature you control with the greatest power | Mandatory$ True | Reveal$ True | RememberChosen$ True
SVar:DBSac:DB$ SacrificeAll | ValidCards$ Card.IsRemembered | SubAbility$ DBCleanup | StackDescription$ Each opponent sacrifices a creature with the greatest power among creatures they control. SVar:DBSac:DB$ SacrificeAll | ValidCards$ Card.IsRemembered | SubAbility$ DBCleanup | StackDescription$ Each opponent sacrifices a creature with the greatest power among creatures they control.
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
DeckHas:Ability$Sacrifice|LifeGain|Counters & Keyword$Lifelink DeckHas:Ability$Sacrifice|LifeGain|Counters & Keyword$Lifelink

View File

@@ -1,7 +1,8 @@
Name:Global Ruin Name:Global Ruin
ManaCost:4 W ManaCost:4 W
Types:Sorcery Types:Sorcery
A:SP$ ChooseCard | Defined$ Player | EachBasicType$ Controlled | SubAbility$ DBDestroy | SpellDescription$ Each player chooses from the lands they control a land of each basic land type, then sacrifices the rest. | StackDescription$ SpellDescription A:SP$ ChooseCard | Defined$ Player | EachBasicType$ Controlled | Reveal$ True | SubAbility$ DBDestroy | SpellDescription$ Each player chooses from the lands they control a land of each basic land type, then sacrifices the rest. | StackDescription$ SpellDescription
SVar:DBDestroy:DB$ SacrificeAll | ValidCards$ Land.nonChosenCard | StackDescription$ None SVar:DBDestroy:DB$ SacrificeAll | ValidCards$ Land.nonChosenCard | StackDescription$ None
AI:RemoveDeck:Random AI:RemoveDeck:Random
DeckHas:Ability$Sacrifice
Oracle:Each player chooses from the lands they control a land of each basic land type, then sacrifices the rest. Oracle:Each player chooses from the lands they control a land of each basic land type, then sacrifices the rest.

View File

@@ -4,7 +4,7 @@ Types:Legendary Creature Insect
PT:1/2 PT:1/2
K:Deathtouch K:Deathtouch
T:Mode$ ChangesZone | Origin$ Graveyard | Destination$ Battlefield | ValidCard$ Card.Self,Creature.YouCtrl | Execute$ TrigTransform | TriggerZones$ Battlefield | TriggerDescription$ When CARDNAME or another creature you control enters, if it entered from your graveyard or you cast it from your graveyard, you may pay {G}. If you do, exile NICKNAME, then return it to the battlefield transformed under its owner's control. T:Mode$ ChangesZone | Origin$ Graveyard | Destination$ Battlefield | ValidCard$ Card.Self,Creature.YouCtrl | Execute$ TrigTransform | TriggerZones$ Battlefield | TriggerDescription$ When CARDNAME or another creature you control enters, if it entered from your graveyard or you cast it from your graveyard, you may pay {G}. If you do, exile NICKNAME, then return it to the battlefield transformed under its owner's control.
T:Mode$ ChangesZone | Destination$ Battlefield | ValidCard$ Card.Self+wasCastFromYourGraveyardByYou,Creature.YouCtrl+wasCastFromYourGraveyardByYou | Execute$ TrigTransform | TriggerZones$ Battlefield | Secondary$ True | TriggerDescription$ When CARDNAME enters, if it entered from your graveyard or you cast it from your graveyard, you may pay {G}. If you do, exile NICKNAME, then return it to the battlefield transformed under its owner's control. T:Mode$ ChangesZone | Destination$ Battlefield | ValidCard$ Card.Self+wasCastFromYourGraveyardByYou,Creature.YouCtrl+wasCastFromYourGraveyardByYou | Execute$ TrigTransform | TriggerZones$ Battlefield | Secondary$ True | TriggerDescription$ When CARDNAME or another creature you control enters, if it entered from your graveyard or you cast it from your graveyard, you may pay {G}. If you do, exile NICKNAME, then return it to the battlefield transformed under its owner's control.
SVar:TrigTransform:AB$ ChangeZone | Cost$ G | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DBReturn SVar:TrigTransform:AB$ ChangeZone | Cost$ G | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DBReturn
SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | ForgetOtherRemembered$ True | SubAbility$ DBCleanup SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | ForgetOtherRemembered$ True | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
@@ -22,7 +22,7 @@ A:AB$ Token | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | TokenAmount$ 1
SVar:DBMill:DB$ Mill | Defined$ You | NumCards$ 2 | RememberMilled$ True | SubAbility$ DBPutCounter SVar:DBMill:DB$ Mill | Defined$ You | NumCards$ 2 | RememberMilled$ True | SubAbility$ DBPutCounter
SVar:DBPutCounter:DB$ PutCounter | Defined$ Imprinted | CounterType$ Deathtouch | CounterNum$ 1 | ConditionDefined$ Remembered | ConditionPresent$ Card.Black | ConditionCompare$ EQ1 | SubAbility$ DBCleanup SVar:DBPutCounter:DB$ PutCounter | Defined$ Imprinted | CounterType$ Deathtouch | CounterNum$ 1 | ConditionDefined$ Remembered | ConditionPresent$ Card.Black | ConditionCompare$ EQ1 | SubAbility$ DBCleanup
A:AB$ Destroy | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | ValidTgts$ Artifact,Enchantment | TgtPrompt$ Select target artifact or enchantment | SpellDescription$ Destroy target artifact or enchantment. A:AB$ Destroy | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | ValidTgts$ Artifact,Enchantment | TgtPrompt$ Select target artifact or enchantment | SpellDescription$ Destroy target artifact or enchantment.
A:AB$ CopyPermanent | Cost$ SubCounter<6/LOYALTY> | Planeswalker$ True | Ultimate$ True | Defined$ ValidGraveyard Creature.YouOwn | SetPower$ 1 | SetToughness$ 1 | SetColor$ Black & Green | SetCreatureTypes$ Insect | AILogic$ DuplicatePerms | SpellDescription$ For each creature card in your graveyard, create a token that's a copy of it, except it's a 1/1 black and green Insect. A:AB$ CopyPermanent | Cost$ SubCounter<6/LOYALTY> | Planeswalker$ True | Ultimate$ True | Defined$ ValidGraveyard Creature.YouOwn | SetPower$ 1 | SetToughness$ 1 | SetColor$ Black,Green | SetCreatureTypes$ Insect | AILogic$ DuplicatePerms | SpellDescription$ For each creature card in your graveyard, create a token that's a copy of it, except it's a 1/1 black and green Insect.
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True
DeckHas:Ability$Token|Mill DeckHas:Ability$Token|Mill
Oracle:[+1]: Create a 1/1 black and green Insect creature token, then mill two cards. Put a deathtouch counter on the token if a black card was milled this way.\n[-2]: Destroy target artifact or enchantment.\n[-6]: For each creature card in your graveyard, create a token that's a copy of it, except it's a 1/1 black and green Insect. Oracle:[+1]: Create a 1/1 black and green Insect creature token, then mill two cards. Put a deathtouch counter on the token if a black card was milled this way.\n[-2]: Destroy target artifact or enchantment.\n[-6]: For each creature card in your graveyard, create a token that's a copy of it, except it's a 1/1 black and green Insect.

View File

@@ -3,5 +3,5 @@ ManaCost:2 B B
Types:Sorcery Types:Sorcery
A:SP$ Discard | ValidTgts$ Player | Mode$ TgtChoose | NumCards$ 2 | ConditionCheckSVar$ Morbid | ConditionSVarCompare$ EQ0 | SubAbility$ MorbidDiscard | SpellDescription$ Target player discards two cards. A:SP$ Discard | ValidTgts$ Player | Mode$ TgtChoose | NumCards$ 2 | ConditionCheckSVar$ Morbid | ConditionSVarCompare$ EQ0 | SubAbility$ MorbidDiscard | SpellDescription$ Target player discards two cards.
SVar:MorbidDiscard:DB$ Discard | Defined$ Targeted | Mode$ RevealYouChoose | NumCards$ 2 | ConditionCheckSVar$ Morbid | ConditionSVarCompare$ GE1 | SpellDescription$ Morbid — If a creature died this turn, instead that player reveals their hand, you choose two cards from it, then that player discards those cards. SVar:MorbidDiscard:DB$ Discard | Defined$ Targeted | Mode$ RevealYouChoose | NumCards$ 2 | ConditionCheckSVar$ Morbid | ConditionSVarCompare$ GE1 | SpellDescription$ Morbid — If a creature died this turn, instead that player reveals their hand, you choose two cards from it, then that player discards those cards.
SVar:Morbid:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature SVar:Morbid:Count$Morbid.1.0
Oracle:Target player discards two cards.\nMorbid — If a creature died this turn, instead that player reveals their hand, you choose two cards from it, then that player discards those cards. Oracle:Target player discards two cards.\nMorbid — If a creature died this turn, instead that player reveals their hand, you choose two cards from it, then that player discards those cards.

View File

@@ -2,7 +2,7 @@ Name:Heartfire Hero
ManaCost:R ManaCost:R
Types:Creature Mouse Soldier Types:Creature Mouse Soldier
PT:1/1 PT:1/1
T:Mode$ BecomesTarget | ValidTarget$ Card.Self | ValidSource$ SpellAbility.YouCtrl | TriggerZones$ Battlefield | FirstTime$ True | Execute$ TrigCounter | TriggerDescription$ Valiant — Whenever CARDNAME becomes the target of a spell or ability you control for the first time each turn, put a +1/+1 counter on it. T:Mode$ BecomesTarget | ValidTarget$ Card.Self | ValidSource$ SpellAbility.YouCtrl | TriggerZones$ Battlefield | Valiant$ True | Execute$ TrigCounter | TriggerDescription$ Valiant — Whenever CARDNAME becomes the target of a spell or ability you control for the first time each turn, put a +1/+1 counter on it.
SVar:TrigCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 SVar:TrigCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDamageDies | TriggerDescription$ When CARDNAME dies, it deals damage equal to its power to each opponent. T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDamageDies | TriggerDescription$ When CARDNAME dies, it deals damage equal to its power to each opponent.
SVar:TrigDamageDies:DB$ DealDamage | Defined$ Opponent | NumDmg$ X SVar:TrigDamageDies:DB$ DealDamage | Defined$ Opponent | NumDmg$ X

View File

@@ -4,5 +4,5 @@ Types:Creature Elemental
PT:4/5 PT:4/5
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | CheckSVar$ Morbid | SVarCompare$ GE1 | Execute$ TrigGainLife | TriggerDescription$ Morbid — When CARDNAME enters, if a creature died this turn, you gain 5 life. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | CheckSVar$ Morbid | SVarCompare$ GE1 | Execute$ TrigGainLife | TriggerDescription$ Morbid — When CARDNAME enters, if a creature died this turn, you gain 5 life.
SVar:TrigGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 5 SVar:TrigGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 5
SVar:Morbid:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature SVar:Morbid:Count$Morbid.1.0
Oracle:Morbid — When Hollowhenge Scavenger enters, if a creature died this turn, you gain 5 life. Oracle:Morbid — When Hollowhenge Scavenger enters, if a creature died this turn, you gain 5 life.

View File

@@ -3,7 +3,7 @@ ManaCost:1 U U
Types:Legendary Creature Human Wizard Advisor Types:Legendary Creature Human Wizard Advisor
PT:2/4 PT:2/4
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | CheckSVar$ X | SVarCompare$ GE1 | Execute$ TrigDig | TriggerDescription$ At the beginning of your end step, if you've cast a noncreature spell this turn, reveal the top five cards of your library. For each card type among noncreature spells you've cast this turn, you may put a card of that type from among the revealed cards into your hand. Put the rest on the bottom of your library in a random order. T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | CheckSVar$ X | SVarCompare$ GE1 | Execute$ TrigDig | TriggerDescription$ At the beginning of your end step, if you've cast a noncreature spell this turn, reveal the top five cards of your library. For each card type among noncreature spells you've cast this turn, you may put a card of that type from among the revealed cards into your hand. Put the rest on the bottom of your library in a random order.
SVar:TrigDig:DB$ Dig | DigNum$ 5 | Reveal$ True | NoMove$ True | RememberRevealed$ True | SubAbility$ DBRepeatEach SVar:TrigDig:DB$ PeekAndReveal | PeekAmount$ 5 | NoPeek$ True | RememberRevealed$ True | SubAbility$ DBRepeatEach
SVar:DBRepeatEach:DB$ RepeatEach | RepeatTypesFrom$ ThisTurnCast_Card.nonCreature+YouCtrl+sharesCardTypeWith Remembered | RepeatSubAbility$ ChooseCard | SubAbility$ DBChangeZoneAll SVar:DBRepeatEach:DB$ RepeatEach | RepeatTypesFrom$ ThisTurnCast_Card.nonCreature+YouCtrl+sharesCardTypeWith Remembered | RepeatSubAbility$ ChooseCard | SubAbility$ DBChangeZoneAll
SVar:ChooseCard:DB$ ChooseCard | Choices$ Card.IsRemembered+ChosenType | ImprintChosen$ True | ForgetChosen$ True | ChoiceTitle$ You may choose a card of this type to put into your hand | ChoiceTitleAppend$ ChosenType | ChoiceZone$ Library SVar:ChooseCard:DB$ ChooseCard | Choices$ Card.IsRemembered+ChosenType | ImprintChosen$ True | ForgetChosen$ True | ChoiceTitle$ You may choose a card of this type to put into your hand | ChoiceTitleAppend$ ChosenType | ChoiceZone$ Library
SVar:DBChangeZoneAll:DB$ ChangeZone | Defined$ Imprinted | Origin$ Library | Destination$ Hand | SubAbility$ DBRestRandomOrder SVar:DBChangeZoneAll:DB$ ChangeZone | Defined$ Imprinted | Origin$ Library | Destination$ Hand | SubAbility$ DBRestRandomOrder

View File

@@ -4,4 +4,5 @@ Types:Sorcery
A:SP$ Pump | ValidTgts$ Creature | TgtPrompt$ Choose two target creatures controlled by the same player | TargetMin$ 2 | TargetMax$ 2 | TargetUnique$ True | TargetsWithSameController$ True | IsCurse$ True | SubAbility$ DBChooseSac | StackDescription$ SpellDescription | SpellDescription$ Choose two target creatures controlled by the same player. That player sacrifices one of them. A:SP$ Pump | ValidTgts$ Creature | TgtPrompt$ Choose two target creatures controlled by the same player | TargetMin$ 2 | TargetMax$ 2 | TargetUnique$ True | TargetsWithSameController$ True | IsCurse$ True | SubAbility$ DBChooseSac | StackDescription$ SpellDescription | SpellDescription$ Choose two target creatures controlled by the same player. That player sacrifices one of them.
SVar:DBChooseSac:DB$ ChooseCard | DefinedCards$ Targeted | Defined$ TargetedController | ChoiceTitle$ Choose one to sacrifice | SubAbility$ DBSac | StackDescription$ None | AILogic$ WorstCard SVar:DBChooseSac:DB$ ChooseCard | DefinedCards$ Targeted | Defined$ TargetedController | ChoiceTitle$ Choose one to sacrifice | SubAbility$ DBSac | StackDescription$ None | AILogic$ WorstCard
SVar:DBSac:DB$ SacrificeAll | Defined$ ChosenCard | StackDescription$ None SVar:DBSac:DB$ SacrificeAll | Defined$ ChosenCard | StackDescription$ None
DeckHas:Ability$Sacrifice
Oracle:Choose two target creatures controlled by the same player. That player sacrifices one of them. Oracle:Choose two target creatures controlled by the same player. That player sacrifices one of them.

View File

@@ -3,7 +3,7 @@ ManaCost:B R
Types:Battle Siege Types:Battle Siege
Defense:4 Defense:4
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigSacrifice | TriggerDescription$ When CARDNAME enters, target player sacrifices a creature or planeswalker and loses 1 life. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigSacrifice | TriggerDescription$ When CARDNAME enters, target player sacrifices a creature or planeswalker and loses 1 life.
SVar:TrigSacrifice:DB$ Sacrifice | ValidTgts$ Player | SacValid$ Creature,Planeswalker | SacMessage$ Creature or Planeswalker | SubAbility$ DBLoseLife SVar:TrigSacrifice:DB$ Sacrifice | ValidTgts$ Player | SacValid$ Creature,Planeswalker | SacMessage$ creature or planeswalker | SubAbility$ DBLoseLife
SVar:DBLoseLife:DB$ LoseLife | Defined$ TargetedPlayer | LifeAmount$ 1 SVar:DBLoseLife:DB$ LoseLife | Defined$ TargetedPlayer | LifeAmount$ 1
DeckHas:Ability$Sacrifice|Counters DeckHas:Ability$Sacrifice|Counters
AlternateMode:DoubleFaced AlternateMode:DoubleFaced

View File

@@ -2,8 +2,9 @@ Name:Isolated Watchtower
ManaCost:no cost ManaCost:no cost
Types:Land Types:Land
A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}. A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}.
A:AB$ Scry | Cost$ 2 T | ScryNum$ 1 | SubAbility$ DBReveal | CheckSVar$ X | SVarCompare$ GEY | SpellDescription$ Scry 1, then you may reveal the top card of your library. If a basic land card is revealed this way, put it onto the battlefield tapped. Activate only if an opponent controls at least two more lands than you. A:AB$ Scry | Cost$ 2 T | ScryNum$ 1 | SubAbility$ DBReveal | CheckSVar$ X | SVarCompare$ GEY | StackDescription$ REP Scry_{p:You} scries & you may_they may & your_their & put_{p:You} puts & . Activate only if an opponent controls at least two more lands than you._. | SpellDescription$ Scry 1, then you may reveal the top card of your library. If a basic land card is revealed this way, put it onto the battlefield tapped. Activate only if an opponent controls at least two more lands than you.
SVar:DBReveal:DB$ Dig | Optional$ True | DigNum$ 1 | Reveal$ True | ChangeValid$ Land.Basic | DestinationZone$ Battlefield | Tapped$ True | DestinationZone2$ Library | LibraryPosition2$ 0 SVar:DBReveal:DB$ Dig | DigNum$ 1 | RevealOptional$ True | RememberRevealed$ True | ChangeValid$ Land.Basic+IsRemembered | ChangeNum$ All | DestinationZone$ Battlefield | Tapped$ True | DestinationZone2$ Library | LibraryPosition2$ 0 | SubAbility$ DBCleanup | StackDescription$ None
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:PlayerCountOpponents$HighestValid Land.YouCtrl SVar:X:PlayerCountOpponents$HighestValid Land.YouCtrl
SVar:Y:Count$Valid Land.YouCtrl/Plus.2 SVar:Y:Count$Valid Land.YouCtrl/Plus.2
Oracle:{T}: Add {C}.\n{2}, {T}: Scry 1, then you may reveal the top card of your library. If a basic land card is revealed this way, put it onto the battlefield tapped. Activate only if an opponent controls at least two more lands than you. Oracle:{T}: Add {C}.\n{2}, {T}: Scry 1, then you may reveal the top card of your library. If a basic land card is revealed this way, put it onto the battlefield tapped. Activate only if an opponent controls at least two more lands than you.

View File

@@ -3,8 +3,8 @@ ManaCost:3 R R
Types:Creature Human Soldier Types:Creature Human Soldier
PT:3/3 PT:3/3
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChooseThree | TriggerDescription$ When CARDNAME enters, each player sacrifices all lands they control except for three. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChooseThree | TriggerDescription$ When CARDNAME enters, each player sacrifices all lands they control except for three.
SVar:TrigChooseThree:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBChoose | SubAbility$ DBSacrificeAll SVar:TrigChooseThree:DB$ ChooseCard | Defined$ Player | Choices$ Land | ControlledByPlayer$ Chooser | Amount$ 3 | ChoiceTitle$ Choose three lands to keep | Mandatory$ True | Reveal$ True | SubAbility$ SacAllOthers
SVar:DBChoose:DB$ ChooseCard | Amount$ 3 | Defined$ Remembered | Choices$ Land.RememberedPlayerCtrl | ChoiceZone$ Battlefield | RememberChosen$ True | ChoiceTitle$ Choose three lands that would not be sacrificed SVar:DBSacrificeAll:DB$ SacrificeAll | ValidCards$ Land.nonChosenCard | SubAbility$ DBCleanup
SVar:DBSacrificeAll:DB$ SacrificeAll | ValidCards$ Land.IsNotRemembered | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True DeckHas:Ability$Sacrifice
Oracle:When Keldon Firebombers enters, each player sacrifices all lands they control except for three. Oracle:When Keldon Firebombers enters, each player sacrifices all lands they control except for three.

View File

@@ -11,4 +11,5 @@ SVar:X:Count$xPaid
SVar:Y:SVar$X/Times.Z SVar:Y:SVar$X/Times.Z
SVar:Z:Count$Valid Creature.RememberedPlayerCtrl+IsRemembered SVar:Z:Count$Valid Creature.RememberedPlayerCtrl+IsRemembered
AI:RemoveDeck:All AI:RemoveDeck:All
DeckHas:Ability$Sacrifice
Oracle:For each creature, its controller sacrifices it unless they pay X life. Oracle:For each creature, its controller sacrifices it unless they pay X life.

View File

@@ -6,11 +6,9 @@ T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$
SVar:TrigDraw:DB$ Draw SVar:TrigDraw:DB$ Draw
A:AB$ Token | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | TokenScript$ b_2_2_zombie | SpellDescription$ Create a 2/2 black Zombie creature token. A:AB$ Token | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | TokenScript$ b_2_2_zombie | SpellDescription$ Create a 2/2 black Zombie creature token.
A:AB$ Sacrifice | Cost$ SubCounter<4/LOYALTY> | Planeswalker$ True | Amount$ 2 | SacValid$ Creature | Defined$ Player | SpellDescription$ Each player sacrifices two creatures. A:AB$ Sacrifice | Cost$ SubCounter<4/LOYALTY> | Planeswalker$ True | Amount$ 2 | SacValid$ Creature | Defined$ Player | SpellDescription$ Each player sacrifices two creatures.
A:AB$ RepeatEach | Cost$ SubCounter<9/LOYALTY> | Planeswalker$ True | Ultimate$ True | RepeatPlayers$ Opponent | RepeatSubAbility$ ChoosePerms | SubAbility$ SacAllOthers | SpellDescription$ Each opponent chooses a permanent they control of each permanent type and sacrifices the rest. A:AB$ ChooseCard | Cost$ SubCounter<9/LOYALTY> | Planeswalker$ True | Ultimate$ True | Defined$ Opponent | Choices$ Permanent | ChooseEach$ Artifact & Battle & Creature & Enchantment & Land & Planeswalker | ControlledByPlayer$ Chooser | Mandatory$ True | Reveal$ True | SubAbility$ SacAllOthers | StackDescription$ SpellDescription | SpellDescription$ Each opponent chooses a permanent they control of each permanent type and sacrifices the rest.
SVar:ChoosePerms:DB$ RepeatEach | RepeatTypesFrom$ Permanent.RememberedPlayerCtrl | ChooseOrder$ RememberedPlayer | RepeatSubAbility$ ChooseCard SVar:SacAllOthers:DB$ SacrificeAll | ValidCards$ Permanent.nonChosenCard+OppCtrl | SubAbility$ DBCleanup
SVar:ChooseCard:DB$ ChooseCard | Defined$ RememberedPlayer | Choices$ Card.ChosenType+RememberedPlayerCtrl | ChoiceTitle$ Choose a card of this type to keep | ChoiceTitleAppend$ ChosenType | RememberChosen$ True | Mandatory$ True SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True
SVar:SacAllOthers:DB$ SacrificeAll | ValidCards$ Permanent.IsNotRemembered+OppCtrl | SubAbility$ DBCleanup | StackDescription$ None
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True
DeckHas:Ability$Token|Sacrifice & Type$Zombie DeckHas:Ability$Token|Sacrifice & Type$Zombie
SVar:PlayMain1:TRUE SVar:PlayMain1:TRUE
Oracle:Whenever a creature you control dies, draw a card.\n[+1]: Create a 2/2 black Zombie creature token.\n[-4]: Each player sacrifices two creatures.\n[-9]: Each opponent chooses a permanent they control of each permanent type and sacrifices the rest. Oracle:Whenever a creature you control dies, draw a card.\n[+1]: Create a 2/2 black Zombie creature token.\n[-4]: Each player sacrifices two creatures.\n[-9]: Each opponent chooses a permanent they control of each permanent type and sacrifices the rest.

View File

@@ -1,13 +1,13 @@
Name:Limited Resources Name:Limited Resources
ManaCost:W ManaCost:W
Types:Enchantment Types:Enchantment
T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ DBRepeatResources | TriggerDescription$ When CARDNAME enters, each player chooses five lands they control and sacrifices the rest. T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ DBCardChoice | TriggerDescription$ When CARDNAME enters, each player chooses five lands they control and sacrifices the rest.
SVar:DBRepeatResources:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ CardChoice SVar:DBCardChoice:DB$ ChooseCard | Defined$ Player | Choices$ Land | ControlledByPlayer$ Chooser | Amount$ 5 | ChoiceTitle$ Choose five lands to keep | Mandatory$ True | Reveal$ True | SubAbility$ SacRest
SVar:CardChoice:DB$ ChooseCard | Defined$ Remembered | Amount$ 5 | Choices$ Land.RememberedPlayerCtrl | ChoiceTitle$ Choose a land | RememberChosen$ True | SubAbility$ SacRest SVar:SacRest:DB$ SacrificeAll | ValidCards$ Land.nonChosenCard | SubAbility$ DBCleanup
SVar:SacRest:DB$ SacrificeAll | ValidCards$ Land.RememberedPlayerCtrl+IsNotRemembered | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
S:Mode$ CantPlayLand | IsPresent$ Land | PresentCompare$ GE10 | Description$ Players can't play lands as long as ten or more lands are on the battlefield. S:Mode$ CantPlayLand | IsPresent$ Land | PresentCompare$ GE10 | Description$ Players can't play lands as long as ten or more lands are on the battlefield.
SVar:NonStackingEffect:True SVar:NonStackingEffect:True
AI:RemoveDeck:All AI:RemoveDeck:All
AI:RemoveDeck:Random AI:RemoveDeck:Random
DeckHas:Ability$Sacrifice
Oracle:When Limited Resources enters, each player chooses five lands they control and sacrifices the rest.\nPlayers can't play lands as long as ten or more lands are on the battlefield. Oracle:When Limited Resources enters, each player chooses five lands they control and sacrifices the rest.\nPlayers can't play lands as long as ten or more lands are on the battlefield.

View File

@@ -4,5 +4,5 @@ Types:Instant
A:SP$ Destroy | ValidTgts$ Creature.nonBlack | TgtPrompt$ Select target nonblack creature | SpellDescription$ Destroy target nonblack creature. A:SP$ Destroy | ValidTgts$ Creature.nonBlack | TgtPrompt$ Select target nonblack creature | SpellDescription$ Destroy target nonblack creature.
T:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigCopy | CheckSVar$ Morbid | SVarCompare$ GE1 | OptionalDecider$ You | TriggerDescription$ Morbid — When you cast this spell, if a creature died this turn, you may copy CARDNAME and may choose a new target for the copy. T:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigCopy | CheckSVar$ Morbid | SVarCompare$ GE1 | OptionalDecider$ You | TriggerDescription$ Morbid — When you cast this spell, if a creature died this turn, you may copy CARDNAME and may choose a new target for the copy.
SVar:TrigCopy:DB$ CopySpellAbility | Defined$ TriggeredSpellAbility | MayChooseTarget$ True SVar:TrigCopy:DB$ CopySpellAbility | Defined$ TriggeredSpellAbility | MayChooseTarget$ True
SVar:Morbid:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature SVar:Morbid:Count$Morbid.1.0
Oracle:Morbid — When you cast this spell, if a creature died this turn, you may copy Malicious Affliction and may choose a new target for the copy.\nDestroy target nonblack creature. Oracle:Morbid — When you cast this spell, if a creature died this turn, you may copy Malicious Affliction and may choose a new target for the copy.\nDestroy target nonblack creature.

View File

@@ -4,5 +4,5 @@ Types:Creature Spirit
PT:4/4 PT:4/4
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | CheckSVar$ Morbid | SVarCompare$ GE1 | Execute$ TrigPump | TriggerDescription$ Morbid — When CARDNAME enters, if a creature died this turn, target creature gets -4/-4 until end of turn. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | CheckSVar$ Morbid | SVarCompare$ GE1 | Execute$ TrigPump | TriggerDescription$ Morbid — When CARDNAME enters, if a creature died this turn, target creature gets -4/-4 until end of turn.
SVar:TrigPump:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | IsCurse$ True | NumAtt$ -4 | NumDef$ -4 SVar:TrigPump:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | IsCurse$ True | NumAtt$ -4 | NumDef$ -4
SVar:Morbid:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature SVar:Morbid:Count$Morbid.1.0
Oracle:Morbid — When Morkrut Banshee enters, if a creature died this turn, target creature gets -4/-4 until end of turn. Oracle:Morbid — When Morkrut Banshee enters, if a creature died this turn, target creature gets -4/-4 until end of turn.

View File

@@ -3,6 +3,6 @@ ManaCost:2 W
Types:Creature Mouse Soldier Types:Creature Mouse Soldier
PT:3/2 PT:3/2
K:Flash K:Flash
T:Mode$ BecomesTarget | ValidTarget$ Card.Self | ValidSource$ SpellAbility.YouCtrl | TriggerZones$ Battlefield | FirstTime$ True | Execute$ TrigTap | TriggerDescription$ Valiant — Whenever CARDNAME becomes the target of a spell or ability you control for the first time each turn, tap target creature an opponent controls. T:Mode$ BecomesTarget | ValidTarget$ Card.Self | ValidSource$ SpellAbility.YouCtrl | TriggerZones$ Battlefield | Valiant$ True | Execute$ TrigTap | TriggerDescription$ Valiant — Whenever CARDNAME becomes the target of a spell or ability you control for the first time each turn, tap target creature an opponent controls.
SVar:TrigTap:DB$ Tap | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Choose target creature an opponent controls. SVar:TrigTap:DB$ Tap | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Choose target creature an opponent controls.
Oracle:Flash\nValiant — Whenever Mouse Trapper becomes the target of a spell or ability you control for the first time each turn, tap target creature an opponent controls. Oracle:Flash\nValiant — Whenever Mouse Trapper becomes the target of a spell or ability you control for the first time each turn, tap target creature an opponent controls.

View File

@@ -5,6 +5,6 @@ T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.S
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ w_1_1_spirit_flying | TokenOwner$ You SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ w_1_1_spirit_flying | TokenOwner$ You
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | CheckSVar$ Morbid | SVarCompare$ GE1 | Execute$ DBCopy | TriggerDescription$ Morbid — At the beginning of your end step, if a creature died this turn, populate. (Create a token that's a copy of a creature token you control.) T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | CheckSVar$ Morbid | SVarCompare$ GE1 | Execute$ DBCopy | TriggerDescription$ Morbid — At the beginning of your end step, if a creature died this turn, populate. (Create a token that's a copy of a creature token you control.)
SVar:DBCopy:DB$ CopyPermanent | Choices$ Creature.token+YouCtrl | NumCopies$ 1 | Populate$ True SVar:DBCopy:DB$ CopyPermanent | Choices$ Creature.token+YouCtrl | NumCopies$ 1 | Populate$ True
SVar:Morbid:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature SVar:Morbid:Count$Morbid.1.0
DeckHas:Ability$Token & Type$Spirit DeckHas:Ability$Token & Type$Spirit
Oracle:When Muster the Departed enters, create a 1/1 white Spirit creature token with flying.\nMorbid — At the beginning of your end step, if a creature died this turn, populate. (Create a token that's a copy of a creature token you control.) Oracle:When Muster the Departed enters, create a 1/1 white Spirit creature token with flying.\nMorbid — At the beginning of your end step, if a creature died this turn, populate. (Create a token that's a copy of a creature token you control.)

View File

@@ -6,7 +6,7 @@ SVar:OneOppSac:DB$ ChoosePlayer | Defined$ You | Choices$ Player.Opponent | SubA
SVar:DBSac:DB$ Sacrifice | Defined$ ChosenPlayer | SacValid$ Creature | SubAbility$ DBCleanupChosen SVar:DBSac:DB$ Sacrifice | Defined$ ChosenPlayer | SacValid$ Creature | SubAbility$ DBCleanupChosen
SVar:EachOppSac:DB$ Sacrifice | Defined$ Player.Opponent | SacValid$ Creature | StackDescription$ SpellDescription | SpellDescription$ 10—19 VERT Each opponent sacrifices a creature. SVar:EachOppSac:DB$ Sacrifice | Defined$ Player.Opponent | SacValid$ Creature | StackDescription$ SpellDescription | SpellDescription$ 10—19 VERT Each opponent sacrifices a creature.
SVar:SacTopPower:DB$ RepeatEach | RepeatPlayers$ Player.Opponent | RepeatSubAbility$ DBChooseCard | SubAbility$ DBSacAll | StackDescription$ SpellDescription | SpellDescription$ 20 VERT Each opponent sacrifices a creature with the greatest power among creatures that player controls. SVar:SacTopPower:DB$ RepeatEach | RepeatPlayers$ Player.Opponent | RepeatSubAbility$ DBChooseCard | SubAbility$ DBSacAll | StackDescription$ SpellDescription | SpellDescription$ 20 VERT Each opponent sacrifices a creature with the greatest power among creatures that player controls.
SVar:DBChooseCard:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Creature.greatestPowerControlledByRemembered | ChoiceTitle$ Choose a creature you control with the greatest power | Mandatory$ True | RememberChosen$ True SVar:DBChooseCard:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Creature.greatestPowerControlledByRemembered | ChoiceTitle$ Choose a creature you control with the greatest power | Mandatory$ True | Reveal$ True | RememberChosen$ True
SVar:DBSacAll:DB$ SacrificeAll | ValidCards$ Card.IsRemembered | SubAbility$ DBCleanup SVar:DBSacAll:DB$ SacrificeAll | ValidCards$ Card.IsRemembered | SubAbility$ DBCleanup
SVar:DBCleanupChosen:DB$ Cleanup | ClearChosenPlayer$ True SVar:DBCleanupChosen:DB$ Cleanup | ClearChosenPlayer$ True
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True

View File

@@ -2,7 +2,7 @@ Name:Nettle Guard
ManaCost:1 W ManaCost:1 W
Types:Creature Mouse Soldier Types:Creature Mouse Soldier
PT:3/1 PT:3/1
T:Mode$ BecomesTarget | ValidTarget$ Card.Self | ValidSource$ SpellAbility.YouCtrl | TriggerZones$ Battlefield | FirstTime$ True | Execute$ TrigPump | TriggerDescription$ Valiant — Whenever CARDNAME becomes the target of a spell or ability you control for the first time each turn, it gets +0/+2 until end of turn. T:Mode$ BecomesTarget | ValidTarget$ Card.Self | ValidSource$ SpellAbility.YouCtrl | TriggerZones$ Battlefield | Valiant$ True | Execute$ TrigPump | TriggerDescription$ Valiant — Whenever CARDNAME becomes the target of a spell or ability you control for the first time each turn, it gets +0/+2 until end of turn.
SVar:TrigPump:DB$ Pump | Defined$ Self | NumDef$ 2 SVar:TrigPump:DB$ Pump | Defined$ Self | NumDef$ 2
A:AB$ Destroy | Cost$ 1 Sac<1/CARDNAME> | ValidTgts$ Artifact,Enchantment | TgtPrompt$ Select target artifact or enchantment | SpellDescription$ Destroy target artifact or enchantment. A:AB$ Destroy | Cost$ 1 Sac<1/CARDNAME> | ValidTgts$ Artifact,Enchantment | TgtPrompt$ Select target artifact or enchantment | SpellDescription$ Destroy target artifact or enchantment.
Oracle:Valiant — Whenever Nettle Guard becomes the target of a spell or ability you control for the first time each turn, it gets +0/+2 until end of turn.\n{1}, Sacrifice Nettle Guard: Destroy target artifact or enchantment. Oracle:Valiant — Whenever Nettle Guard becomes the target of a spell or ability you control for the first time each turn, it gets +0/+2 until end of turn.\n{1}, Sacrifice Nettle Guard: Destroy target artifact or enchantment.

View File

@@ -2,8 +2,7 @@ Name:No One Will Hear Your Cries
ManaCost:no cost ManaCost:no cost
Types:Scheme Types:Scheme
T:Mode$ SetInMotion | ValidCard$ Card.Self | Execute$ TrigChoose | TriggerZones$ Command | TriggerDescription$ When you set this scheme in motion, each opponent chooses a creature they control, then sacrifices the rest. T:Mode$ SetInMotion | ValidCard$ Card.Self | Execute$ TrigChoose | TriggerZones$ Command | TriggerDescription$ When you set this scheme in motion, each opponent chooses a creature they control, then sacrifices the rest.
SVar:TrigChoose:DB$ RepeatEach | RepeatPlayers$ Player.Opponent | RepeatSubAbility$ ChooseCreature | SubAbility$ DBSacrificeAll SVar:TrigChoose:DB$ ChooseCard | Defined$ Opponent | Choices$ Creature | ControlledByPlayer$ Chooser | ChoiceTitle$ Choose a creature to keep | Mandatory$ True | Reveal$ True | SubAbility$ DBSacrificeAll
SVar:ChooseCreature:DB$ ChooseCard | Defined$ Remembered | Amount$ 1 | Choices$ Creature.RememberedPlayerCtrl | ChoiceTitle$ Choose a creature | Mandatory$ True
SVar:DBSacrificeAll:DB$ SacrificeAll | ValidCards$ Creature.nonChosenCard+OppCtrl | SubAbility$ DBCleanup SVar:DBSacrificeAll:DB$ SacrificeAll | ValidCards$ Creature.nonChosenCard+OppCtrl | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True
Oracle:When you set this scheme in motion, each opponent chooses a creature they control, then sacrifices the rest. Oracle:When you set this scheme in motion, each opponent chooses a creature they control, then sacrifices the rest.

View File

@@ -5,7 +5,7 @@ PT:3/4
K:Flying K:Flying
T:Mode$ Phase | Phase$ End of Turn | CheckSVar$ Morbid | SVarCompare$ GE1 | TriggerZones$ Battlefield | Execute$ TrigFood | TriggerDescription$ At the beginning of each end step, if a creature died this turn, create a Food token. (It's an artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life.") T:Mode$ Phase | Phase$ End of Turn | CheckSVar$ Morbid | SVarCompare$ GE1 | TriggerZones$ Battlefield | Execute$ TrigFood | TriggerDescription$ At the beginning of each end step, if a creature died this turn, create a Food token. (It's an artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life.")
SVar:TrigFood:DB$ Token | TokenAmount$ 1 | TokenScript$ c_a_food_sac | TokenOwner$ You SVar:TrigFood:DB$ Token | TokenAmount$ 1 | TokenScript$ c_a_food_sac | TokenOwner$ You
SVar:Morbid:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature SVar:Morbid:Count$Morbid.1.0
A:AB$ Pump | Cost$ 2 B Sac<1/Creature.Other;Artifact/another creature or artifact> | Defined$ Self | NumAtt$ 2 | NumDef$ 2 | SpellDescription$ CARDNAME gets +2/+2 until end of turn. A:AB$ Pump | Cost$ 2 B Sac<1/Creature.Other;Artifact/another creature or artifact> | Defined$ Self | NumAtt$ 2 | NumDef$ 2 | SpellDescription$ CARDNAME gets +2/+2 until end of turn.
DeckHas:Ability$Token|Sacrifice & Type$Food|Artifact DeckHas:Ability$Token|Sacrifice & Type$Food|Artifact
DeckHints:Ability$Sacrifice DeckHints:Ability$Sacrifice

View File

@@ -5,8 +5,8 @@ T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefiel
SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ INFLUENCE | CounterNum$ 1 | SubAbility$ DBScry SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ INFLUENCE | CounterNum$ 1 | SubAbility$ DBScry
SVar:DBScry:DB$ Scry | ScryNum$ 2 | SubAbility$ DBChoice SVar:DBScry:DB$ Scry | ScryNum$ 2 | SubAbility$ DBChoice
SVar:DBChoice:DB$ GenericChoice | ValidTgts$ Opponent | Choices$ CombustDraw,CombustDamage | AILogic$ CombustibleGearhulk SVar:DBChoice:DB$ GenericChoice | ValidTgts$ Opponent | Choices$ CombustDraw,CombustDamage | AILogic$ CombustibleGearhulk
SVar:CombustDraw:DB$ Draw | Defined$ You | NumCards$ 1 | SpellDescription$ Controller draws a card SVar:CombustDraw:DB$ Draw | Defined$ You | NumCards$ 1 | SpellDescription$ CARDNAME's controller draws a card.
SVar:CombustDamage:DB$ Mill | Defined$ You | NumCards$ X | RememberMilled$ True | SubAbility$ DamageOpponent | SpellDescription$ Controller mills X cards, where X is the number of influence counters on CARDNAME, and that player loses life equal to the total mana value of those cards. SVar:CombustDamage:DB$ Mill | Defined$ You | NumCards$ X | RememberMilled$ True | SubAbility$ DamageOpponent | SpellDescription$ CARDNAME's controller mills X cards, where X is the number of influence counters on it, and you lose life equal to the total mana value of those cards.
SVar:DamageOpponent:DB$ LoseLife | Defined$ ParentTarget | LifeAmount$ Y | SubAbility$ DBCleanup SVar:DamageOpponent:DB$ LoseLife | Defined$ ParentTarget | LifeAmount$ Y | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:Count$CardCounters.INFLUENCE SVar:X:Count$CardCounters.INFLUENCE

View File

@@ -1,13 +1,10 @@
Name:Perilous Predicament Name:Perilous Predicament
ManaCost:4 B ManaCost:4 B
Types:Instant Types:Instant
A:SP$ RepeatEach | AILogic$ OpponentHasMultipleCreatures | RepeatPlayers$ Opponent | RepeatSubAbility$ DBChoose | SubAbility$ DBSacAll | SpellDescription$ Each opponent sacrifices an artifact creature and a nonartifact creature. A:SP$ Sacrifice | Defined$ Opponent | SacValid$ Creature.Artifact & Creature.nonArtifact | AILogic$ WorstCard | Mandatory$ True | SacEachValid$ True | SpellDescription$ Each opponent sacrifices an artifact creature and a nonartifact creature.
SVar:DBChoose:DB$ ChooseCard | Defined$ Remembered | Amount$ 1 | Choices$ Creature.Artifact+RememberedPlayerCtrl | Mandatory$ True | RememberChosen$ True | ChoiceTitle$ Choose target artifact creature | AILogic$ WorstCard | SubAbility$ DBChoose2
SVar:DBChoose2:DB$ ChooseCard | Defined$ Remembered | Amount$ 1 | Choices$ Creature.nonArtifact+IsNotRemembered+RememberedPlayerCtrl | Mandatory$ True | RememberChosen$ True | ChoiceTitle$ Choose target nonartifact creature | AILogic$ WorstCard
SVar:DBSacAll:DB$ SacrificeAll | ValidCards$ Permanent.IsRemembered | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:NeedsToPlayVar:Z GE2 SVar:NeedsToPlayVar:Z GE2
SVar:Z:SVar$Z1/Plus.Z2 SVar:Z:SVar$Z1/Plus.Z2
SVar:Z1:Count$Valid Creature.nonArtifact+OppCtrl/LimitMax.1 SVar:Z1:Count$Valid Creature.nonArtifact+OppCtrl/LimitMax.1
SVar:Z2:Count$Valid Creature.Artifact+OppCtrl/LimitMax.1 SVar:Z2:Count$Valid Creature.Artifact+OppCtrl/LimitMax.1
DeckHas:Ability$Sacrifice
Oracle:Each opponent sacrifices an artifact creature and a nonartifact creature. Oracle:Each opponent sacrifices an artifact creature and a nonartifact creature.

View File

@@ -4,7 +4,7 @@ Types:Artifact Creature Phyrexian Dreadnought
PT:12/12 PT:12/12
K:Trample K:Trample
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ ChooseCreatures | TriggerDescription$ When CARDNAME enters, sacrifice it unless you sacrifice any number of creatures with total power 12 or greater. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ ChooseCreatures | TriggerDescription$ When CARDNAME enters, sacrifice it unless you sacrifice any number of creatures with total power 12 or greater.
SVar:ChooseCreatures:DB$ ChooseCard | Defined$ You | Amount$ X | MinAmount$ 0 | Choices$ Creature.YouCtrl | ChoiceTitle$ Sacrifice any number of creatures with total power 12 or greater. | ChoiceZone$ Battlefield | RememberChosen$ True | SubAbility$ SacrificeSelf SVar:ChooseCreatures:DB$ ChooseCard | Defined$ You | Amount$ X | MinAmount$ 0 | Choices$ Creature.YouCtrl | ChoiceTitle$ Sacrifice any number of creatures with total power 12 or greater. | ChoiceZone$ Battlefield | Reveal$ True | RememberChosen$ True | SubAbility$ SacrificeSelf
SVar:SacrificeSelf:DB$ Sacrifice | ConditionCheckSVar$ TotalPower | ConditionSVarCompare$ LT12 | SubAbility$ SacrificeCreatures SVar:SacrificeSelf:DB$ Sacrifice | ConditionCheckSVar$ TotalPower | ConditionSVarCompare$ LT12 | SubAbility$ SacrificeCreatures
SVar:SacrificeCreatures:DB$ SacrificeAll | Defined$ Remembered | ConditionCheckSVar$ TotalPower | ConditionSVarCompare$ GE12 | SubAbility$ DBCleanup SVar:SacrificeCreatures:DB$ SacrificeAll | Defined$ Remembered | ConditionCheckSVar$ TotalPower | ConditionSVarCompare$ GE12 | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
@@ -13,4 +13,5 @@ SVar:X:Count$Valid Creature.YouCtrl
AI:RemoveDeck:Random AI:RemoveDeck:Random
SVar:NeedsToPlayVar:Y GE12 SVar:NeedsToPlayVar:Y GE12
SVar:Y:Count$SumPower_Creature.YouCtrl+notnamedPhyrexian Dreadnought SVar:Y:Count$SumPower_Creature.YouCtrl+notnamedPhyrexian Dreadnought
DeckHas:Ability$Sacrifice
Oracle:Trample\nWhen Phyrexian Dreadnought enters, sacrifice it unless you sacrifice any number of creatures with total power 12 or greater. Oracle:Trample\nWhen Phyrexian Dreadnought enters, sacrifice it unless you sacrifice any number of creatures with total power 12 or greater.

View File

@@ -1,7 +1,7 @@
Name:Phyrexian Portal Name:Phyrexian Portal
ManaCost:3 ManaCost:3
Types:Artifact Types:Artifact
A:AB$ Dig | Cost$ 3 | ValidTgts$ Opponent | Defined$ You | DigNum$ 10 | RememberRevealed$ True | NoLooking$ True | NoMove$ True | Choser$ Targeted | ConditionCheckSVar$ X | ConditionSVarCompare$ GE10 | SubAbility$ DBTwoPiles | SpellDescription$ If your library has ten or more cards in it, target opponent looks at the top ten cards of your library and separates them into two face-down piles. Exile one of those piles. Search the other pile for a card, put it into your hand, then shuffle the rest of that pile into your library. | StackDescription$ SpellDescription A:AB$ PeekAndReveal | Cost$ 3 | ValidTgts$ Opponent | Defined$ You | PeekAmount$ 10 | RememberPeeked$ True | NoPeek$ True | NoReveal$ True | ConditionCheckSVar$ X | ConditionSVarCompare$ GE10 | SubAbility$ DBTwoPiles | SpellDescription$ If your library has ten or more cards in it, target opponent looks at the top ten cards of your library and separates them into two face-down piles. Exile one of those piles. Search the other pile for a card, put it into your hand, then shuffle the rest of that pile into your library. | StackDescription$ SpellDescription
SVar:DBTwoPiles:DB$ TwoPiles | Defined$ You | DefinedCards$ Remembered | Separator$ Targeted | FaceDown$ True | ConditionCheckSVar$ X | ConditionSVarCompare$ GE10 | ChosenPile$ DBHand | UnchosenPile$ DBExile SVar:DBTwoPiles:DB$ TwoPiles | Defined$ You | DefinedCards$ Remembered | Separator$ Targeted | FaceDown$ True | ConditionCheckSVar$ X | ConditionSVarCompare$ GE10 | ChosenPile$ DBHand | UnchosenPile$ DBExile
SVar:DBHand:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Card | ChangeNum$ 1 | ChooseFromDefined$ Remembered | Mandatory$ True | Shuffle$ True SVar:DBHand:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Card | ChangeNum$ 1 | ChooseFromDefined$ Remembered | Mandatory$ True | Shuffle$ True
SVar:DBExile:DB$ ChangeZone | Defined$ Remembered | Origin$ Library | Destination$ Exile SVar:DBExile:DB$ ChangeZone | Defined$ Remembered | Origin$ Library | Destination$ Exile

View File

@@ -8,7 +8,7 @@ SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 2
A:AB$ LoseLife | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | Defined$ You | LifeAmount$ 1 | SubAbility$ DBDig | SpellDescription$ You lose 1 life. Look at the top three cards of your library. Put one of them into your hand and the rest into your graveyard. A:AB$ LoseLife | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | Defined$ You | LifeAmount$ 1 | SubAbility$ DBDig | SpellDescription$ You lose 1 life. Look at the top three cards of your library. Put one of them into your hand and the rest into your graveyard.
SVar:DBDig:DB$ Dig | DigNum$ 3 | ChangeNum$ 1 | NoReveal$ True | DestinationZone2$ Graveyard | StackDescription$ {p:You} looks at the top three cards of their library. {p:You} puts one of them into their hand and the rest into their graveyard. SVar:DBDig:DB$ Dig | DigNum$ 3 | ChangeNum$ 1 | NoReveal$ True | DestinationZone2$ Graveyard | StackDescription$ {p:You} looks at the top three cards of their library. {p:You} puts one of them into their hand and the rest into their graveyard.
A:AB$ RepeatEach | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | RepeatPlayers$ Opponent | RepeatSubAbility$ DBChooseCard | SubAbility$ DBSac | SpellDescription$ Each opponent sacrifices a creature with the greatest power among creatures that player controls. A:AB$ RepeatEach | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | RepeatPlayers$ Opponent | RepeatSubAbility$ DBChooseCard | SubAbility$ DBSac | SpellDescription$ Each opponent sacrifices a creature with the greatest power among creatures that player controls.
SVar:DBChooseCard:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Creature.greatestPowerControlledByRemembered | ChoiceTitle$ Choose a creature you control with the greatest power | Mandatory$ True | RememberChosen$ True SVar:DBChooseCard:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Creature.greatestPowerControlledByRemembered | ChoiceTitle$ Choose a creature you control with the greatest power | Mandatory$ True | Reveal$ True | RememberChosen$ True
SVar:DBSac:DB$ SacrificeAll | ValidCards$ Card.IsRemembered | SubAbility$ DBCleanup | StackDescription$ Each opponent sacrifices a creature with the greatest power among creatures they control. SVar:DBSac:DB$ SacrificeAll | ValidCards$ Card.IsRemembered | SubAbility$ DBCleanup | StackDescription$ Each opponent sacrifices a creature with the greatest power among creatures they control.
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True
A:AB$ Repeat | Cost$ SubCounter<8/LOYALTY> | Planeswalker$ True | Ultimate$ True | RepeatSubAbility$ TrigDiscard | MaxRepeat$ 7 | StackDescription$ SpellDescription | SpellDescription$ Each opponent may discard a card. If they don't, they lose 3 life. Repeat this process six more times. A:AB$ Repeat | Cost$ SubCounter<8/LOYALTY> | Planeswalker$ True | Ultimate$ True | RepeatSubAbility$ TrigDiscard | MaxRepeat$ 7 | StackDescription$ SpellDescription | SpellDescription$ Each opponent may discard a card. If they don't, they lose 3 life. Repeat this process six more times.

View File

@@ -1,9 +1,8 @@
Name:Quest for Ula's Temple Name:Quest for Ula's Temple
ManaCost:U ManaCost:U
Types:Enchantment Types:Enchantment
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigDig | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ At the beginning of your upkeep, you may look at the top card of your library. If it's a creature card, you may reveal it and put a quest counter on Quest for CARDNAME. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigPeek | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ At the beginning of your upkeep, you may look at the top card of your library. If it's a creature card, you may reveal it and put a quest counter on Quest for CARDNAME.
SVar:TrigDig:DB$ Dig | DigNum$ 1 | DestinationZone$ Library | LibraryPosition$ 0 | LibraryPosition2$ 0 | SubAbility$ TrigDig2 SVar:TrigPeek:DB$ PeekAndReveal | RevealValid$ Creature | RevealOptional$ True | RememberRevealed$ True | SubAbility$ DBPutCounter
SVar:TrigDig2:DB$ Dig | DigNum$ 1 | ChangeNum$ All | RevealValid$ Creature | ChangeValid$ Creature | Optional$ True | PromptToSkipOptionalAbility$ True | OptionalAbilityPrompt$ Would you like to reveal the creature and put a quest counter on CARDNAME? | DestinationZone$ Library | LibraryPosition$ 0 | LibraryPosition2$ 0 | RememberChanged$ True | AILogic$ AlwaysConfirm | SubAbility$ DBPutCounter
SVar:DBPutCounter:DB$ PutCounter | CounterType$ QUEST | CounterNum$ 1 | Defined$ Self | ConditionDefined$ Remembered | ConditionPresent$ Creature | ConditionCompare$ EQ1 | SubAbility$ DBCleanup SVar:DBPutCounter:DB$ PutCounter | CounterType$ QUEST | CounterNum$ 1 | Defined$ Self | ConditionDefined$ Remembered | ConditionPresent$ Creature | ConditionCompare$ EQ1 | SubAbility$ DBCleanup
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ Player | Execute$ TrigChangeZone | OptionalDecider$ You | TriggerZones$ Battlefield | IsPresent$ Card.Self+counters_GE3_QUEST | PresentCompare$ EQ1 | TriggerDescription$ At the beginning of each end step, if there are three or more quest counters on CARDNAME, you may put a Kraken, Leviathan, Octopus, or Serpent creature card from your hand onto the battlefield. T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ Player | Execute$ TrigChangeZone | OptionalDecider$ You | TriggerZones$ Battlefield | IsPresent$ Card.Self+counters_GE3_QUEST | PresentCompare$ EQ1 | TriggerDescription$ At the beginning of each end step, if there are three or more quest counters on CARDNAME, you may put a Kraken, Leviathan, Octopus, or Serpent creature card from your hand onto the battlefield.
SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Hand | Destination$ Battlefield | ChangeType$ Creature.Kraken,Creature.Leviathan,Creature.Octopus,Creature.Serpent | ChangeNum$ 1 | Hidden$ True SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Hand | Destination$ Battlefield | ChangeType$ Creature.Kraken,Creature.Leviathan,Creature.Octopus,Creature.Serpent | ChangeNum$ 1 | Hidden$ True

View File

@@ -11,8 +11,7 @@ Name:Riches
ManaCost:5 U U ManaCost:5 U U
Types:Sorcery Types:Sorcery
K:Aftermath K:Aftermath
A:SP$ RepeatEach | AILogic$ OpponentHasCreatures | RepeatPlayers$ Player.Opponent | RepeatSubAbility$ ChooseCreature | SubAbility$ StealChosen | SpellDescription$ Each opponent chooses a creature they control. You gain control of those creatures. A:SP$ ChooseCard | Defined$ Opponent | Mandatory$ True | Amount$ 1 | Choices$ Creature | ControlledByPlayer$ Chooser | ChoiceTitle$ Choose a creature to be stolen | AILogic$ WorstCard | Mandatory$ True | SubAbility$ StealChosen | SpellDescription$ Each opponent chooses a creature they control. You gain control of those creatures.
SVar:ChooseCreature:DB$ ChooseCard | Defined$ Remembered | Amount$ 1 | Choices$ Creature.RememberedPlayerCtrl | ChoiceTitle$ Choose a creature to be stolen | AILogic$ WorstCard | RememberChosen$ True | Mandatory$ True SVar:StealChosen:DB$ GainControl | AllValid$ Permanent.ChosenCard
SVar:StealChosen:DB$ GainControl | AllValid$ Permanent.IsRemembered | SubAbility$ DBCleanup SVar:NeedsToPlay:Creature.OppCtrl
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
Oracle:Aftermath (Cast this spell only from your graveyard. Then exile it.)\nEach opponent chooses a creature they control. You gain control of those creatures. Oracle:Aftermath (Cast this spell only from your graveyard. Then exile it.)\nEach opponent chooses a creature they control. You gain control of those creatures.

View File

@@ -1,9 +1,8 @@
Name:Razia's Purification Name:Razia's Purification
ManaCost:4 R W ManaCost:4 R W
Types:Sorcery Types:Sorcery
A:SP$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBChooseSac | SubAbility$ DBSac | SpellDescription$ Each player chooses three permanents they control, then sacrifices the rest. A:SP$ ChooseCard | Defined$ Player | Choices$ Permanent | ControlledByPlayer$ Chooser | Amount$ 3 | ChoiceTitle$ Choose three permanents to keep | Mandatory$ True | Reveal$ True | SubAbility$ DBSac | StackDescription$ SpellDescription | SpellDescription$ Each player chooses three permanents they control, then sacrifices the rest.
SVar:DBChooseSac:DB$ ChooseCard | Defined$ Remembered | Choices$ Permanent.RememberedPlayerCtrl | Amount$ 3 | ChoiceTitle$ Choose three cards not to be sacrificed | RememberChosen$ True | Mandatory$ True SVar:DBSac:DB$ SacrificeAll | ValidCards$ Permanent.nonChosenCard
SVar:DBSac:DB$ SacrificeAll | ValidCards$ Permanent.IsNotRemembered | SubAbility$ DBCleanup DeckHas:Ability$Sacrifice
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
AI:RemoveDeck:All AI:RemoveDeck:All
Oracle:Each player chooses three permanents they control, then sacrifices the rest. Oracle:Each player chooses three permanents they control, then sacrifices the rest.

View File

@@ -5,5 +5,5 @@ PT:6/6
K:Flying K:Flying
T:Mode$ Phase | Phase$ End of Turn | CheckSVar$ Morbid | SVarCompare$ GE1 | TriggerZones$ Battlefield | Execute$ TrigDestroy | TriggerDescription$ Morbid — At the beginning of each end step, if a creature died this turn, destroy target non-demon creature. T:Mode$ Phase | Phase$ End of Turn | CheckSVar$ Morbid | SVarCompare$ GE1 | TriggerZones$ Battlefield | Execute$ TrigDestroy | TriggerDescription$ Morbid — At the beginning of each end step, if a creature died this turn, destroy target non-demon creature.
SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Creature.nonDemon | TgtPrompt$ Select target non-Demon creature SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Creature.nonDemon | TgtPrompt$ Select target non-Demon creature
SVar:Morbid:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature SVar:Morbid:Count$Morbid.1.0
Oracle:Flying\nMorbid — At the beginning of each end step, if a creature died this turn, destroy target non-Demon creature. Oracle:Flying\nMorbid — At the beginning of each end step, if a creature died this turn, destroy target non-Demon creature.

View File

@@ -2,17 +2,11 @@ Name:Regna's Sanction
ManaCost:3 W ManaCost:3 W
Types:Sorcery Types:Sorcery
A:SP$ AssignGroup | Defined$ Player | Choices$ FriendRepeat,FoeRepeat | AILogic$ FriendOrFoe | SpellDescription$ For each player, choose friend or foe. Each friend puts a +1/+1 counter on each creature they control. Each foe chooses one untapped creature they control, then taps the rest. A:SP$ AssignGroup | Defined$ Player | Choices$ FriendRepeat,FoeRepeat | AILogic$ FriendOrFoe | SpellDescription$ For each player, choose friend or foe. Each friend puts a +1/+1 counter on each creature they control. Each foe chooses one untapped creature they control, then taps the rest.
SVar:FriendRepeat:DB$ RepeatEach | RepeatPlayers$ Remembered | RepeatSubAbility$ DBPutCounter | ClearRememberedBeforeLoop$ True | StackDescription$ Each friend puts a +1/+1 counter on each creature they control. | SpellDescription$ Friend puts a +1/+1 counter on each creature they control. SVar:FriendRepeat:DB$ PutCounterAll | ValidCards$ Creature.RememberedPlayerCtrl | CounterType$ P1P1 | CounterNum$ 1 | Placer$ Controller | SpellDescription$ Each friend puts a +1/+1 counter on each creature they control.
SVar:DBPutCounter:DB$ PutCounterAll | ValidCards$ Creature.RememberedPlayerCtrl | CounterType$ P1P1 | CounterNum$ 1 | Placer$ Remembered SVar:FoeRepeat:DB$ ChooseCard | Defined$ Remembered | Choices$ Creature.untapped | ControlledByPlayer$ Chooser | Amount$ 1 | ChoiceTitle$ Choose one creature to keep untapped | Mandatory$ True | Reveal$ True | SubAbility$ DBTapAll | SpellDescription$ Each foe chooses one untapped creature they control, then taps the rest.
SVar:FoeRepeat:DB$ RepeatEach | AILogic$ OpponentHasMultipleCreatures | RepeatPlayers$ Remembered | ClearRememberedBeforeLoop$ True | RepeatSubAbility$ DBChoose | SubAbility$ DBTapAll | StackDescription$ Each foe chooses one untapped creature they control, then taps the rest. | SpellDescription$ Foe chooses one untapped creature they control, then taps the rest. SVar:DBTapAll:DB$ TapAll | ValidCards$ Creature.nonChosenCard+RememberedPlayerCtrl | TapperController$ True
SVar:DBChoose:DB$ ChooseCard | Defined$ Remembered | Amount$ 1 | Choices$ Creature.untapped+RememberedPlayerCtrl | Mandatory$ True | RememberChosen$ True | SubAbility$ DBImprint
# Need to imprint all non remembered cards
SVar:DBImprint:DB$ Pump | ImprintCards$ Valid Creature.IsNotRemembered+RememberedPlayerCtrl | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True
SVar:DBTapAll:DB$ TapAll | ValidCards$ Creature.IsImprinted | TapperController$ True | SubAbility$ DBCleanupAll
SVar:DBCleanupAll:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True | ClearChosenCard$ True
SVar:NeedsToPlayVar:Z GE3 SVar:NeedsToPlayVar:Z GE3
SVar:Z:SVar$Z1/Plus.Z2 SVar:Z:SVar$Z1/Plus.Z2
SVar:Z1:Count$Valid Creature.YourTeamCtrl+inZoneBattlefield SVar:Z1:Count$Valid Creature.YourTeamCtrl
SVar:Z2:Count$Valid Creature.OppCtrl+inZoneBattlefield+untapped SVar:Z2:Count$Valid Creature.OppCtrl+untapped
Oracle:For each player, choose friend or foe. Each friend puts a +1/+1 counter on each creature they control. Each foe chooses one untapped creature they control, then taps the rest. Oracle:For each player, choose friend or foe. Each friend puts a +1/+1 counter on each creature they control. Each foe chooses one untapped creature they control, then taps the rest.

View File

@@ -12,5 +12,5 @@ Name:Development
ManaCost:3 U R ManaCost:3 U R
Types:Instant Types:Instant
A:SP$ Repeat | RepeatSubAbility$ DBToken | MaxRepeat$ 3 | StackDescription$ SpellDescription | SpellDescription$ Create a 3/1 red Elemental creature token unless any opponent has you draw a card. Repeat this process two more times. A:SP$ Repeat | RepeatSubAbility$ DBToken | MaxRepeat$ 3 | StackDescription$ SpellDescription | SpellDescription$ Create a 3/1 red Elemental creature token unless any opponent has you draw a card. Repeat this process two more times.
SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ r_3_1_elemental | TokenOwner$ You | UnlessPayer$ Player.Opponent | UnlessCost$ Draw<1/Player.YouActivator> | UnlessAI$ MorePowerful SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ r_3_1_elemental | TokenOwner$ You | UnlessPayer$ Player.Opponent | UnlessCost$ Draw<1/Player.Activator> | UnlessAI$ MorePowerful
Oracle:Create a 3/1 red Elemental creature token unless any opponent has you draw a card. Repeat this process two more times. Oracle:Create a 3/1 red Elemental creature token unless any opponent has you draw a card. Repeat this process two more times.

View File

@@ -1,11 +1,10 @@
Name:Revival Experiment Name:Revival Experiment
ManaCost:4 B G ManaCost:4 B G
Types:Sorcery Types:Sorcery
A:SP$ RepeatEach | RepeatTypesFrom$ Permanent.YouOwn | TypesFromZone$ Graveyard | RepeatSubAbility$ ChooseCard | SubAbility$ DBReturn | SpellDescription$ For each permanent type, return up to one card of that type from your graveyard to the battlefield. A:SP$ ChooseCard | Defined$ You | Choices$ Card.Permanent+YouOwn | ChoiceZone$ Graveyard | ChooseEach$ Artifact & Battle & Creature & Enchantment & Land & Planeswalker | ControlledByPlayer$ Chooser | MinAmount$ 0 | Amount$ 1 | Reveal$ True | RememberChosen$ True | SubAbility$ DBReturn | StackDescription$ REP return_{p:You} returns & from your_from their & You lose_{p:You} loses & Exile_{p:You} exiles | SpellDescription$ For each permanent type, return up to one card of that type from your graveyard to the battlefield. You lose 3 life for each card returned this way. Exile CARDNAME.
SVar:ChooseCard:DB$ ChooseCard | Choices$ Card.ChosenType+YouOwn | ChoiceZone$ Graveyard | ChoiceTitle$ Choose up to one card of this type to return | ChoiceTitleAppend$ ChosenType | RememberChosen$ True SVar:DBReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | Defined$ Remembered | RememberChanged$ True | ForgetOtherRemembered$ True | SubAbility$ DBLoseLife | StackDescription$ None
SVar:DBReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | Defined$ Remembered | RememberChanged$ True | ForgetOtherRemembered$ True | SubAbility$ DBLoseLife SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ X | SubAbility$ DBChange | SubAbility$ DBExile | StackDescription$ None
SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ X | SubAbility$ DBChange | StackDescription$ SpellDescription | SubAbility$ DBExile | SpellDescription$ You lose 3 life for each card returned this way. SVar:DBExile:DB$ ChangeZone | Origin$ Stack | Destination$ Exile | SubAbility$ DBCleanup | StackDescription$ None
SVar:DBExile:DB$ ChangeZone | Origin$ Stack | Destination$ Exile | SubAbility$ DBCleanup | SpellDescription$ Exile CARDNAME.
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True
SVar:X:Remembered$Amount/Times.3 SVar:X:Remembered$Amount/Times.3
DeckHas:Ability$Graveyard DeckHas:Ability$Graveyard

View File

@@ -4,7 +4,7 @@ Types:Creature Zombie Rogue
PT:4/3 PT:4/3
T:Mode$ ChangesZone | Origin$ Any | CheckSVar$ Morbid | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters, if a creature died this turn, create a 2/2 blue and black Zombie Rogue creature token. T:Mode$ ChangesZone | Origin$ Any | CheckSVar$ Morbid | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters, if a creature died this turn, create a 2/2 blue and black Zombie Rogue creature token.
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ ub_2_2_zombie_rogue | TokenOwner$ You SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ ub_2_2_zombie_rogue | TokenOwner$ You
SVar:Morbid:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature SVar:Morbid:Count$Morbid.1.0
DeckHas:Ability$Token & Type$Zombie|Rogue & Color$Blue DeckHas:Ability$Token & Type$Zombie|Rogue & Color$Blue
K:Plot:2 B K:Plot:2 B
Oracle:When Rictus Robber enters, if a creature died this turn, create a 2/2 blue and black Zombie Rogue creature token.\nPlot {2}{B} (You may pay {2}{B} and exile this card from your hand. Cast it as a sorcery on a later turn without paying its mana cost. Plot only as a sorcery.) Oracle:When Rictus Robber enters, if a creature died this turn, create a 2/2 blue and black Zombie Rogue creature token.\nPlot {2}{B} (You may pay {2}{B} and exile this card from your hand. Cast it as a sorcery on a later turn without paying its mana cost. Plot only as a sorcery.)

View File

@@ -5,4 +5,5 @@ A:SP$ Pump | ValidTgts$ Creature | TgtPrompt$ Choose two target creatures contro
SVar:DBChooseSac:DB$ ChooseCard | Choices$ Card.IsRemembered | Defined$ TargetedController | ChoiceTitle$ Choose one to sacrifice | SubAbility$ DBSac | StackDescription$ None | AILogic$ WorstCard SVar:DBChooseSac:DB$ ChooseCard | Choices$ Card.IsRemembered | Defined$ TargetedController | ChoiceTitle$ Choose one to sacrifice | SubAbility$ DBSac | StackDescription$ None | AILogic$ WorstCard
SVar:DBSac:DB$ SacrificeAll | Defined$ ChosenCard | SubAbility$ DBCleanup | StackDescription$ None SVar:DBSac:DB$ SacrificeAll | Defined$ ChosenCard | SubAbility$ DBCleanup | StackDescription$ None
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
DeckHas:Ability$Sacrifice
Oracle:Choose two target creatures controlled by the same player. That player sacrifices one of them. Oracle:Choose two target creatures controlled by the same player. That player sacrifices one of them.

View File

@@ -5,6 +5,6 @@ PT:3/3
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | CheckSVar$ Morbid | SVarCompare$ GE1 | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your end step, if a creature died this turn, put a +1/+1 counter on CARDNAME and untap it. T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | CheckSVar$ Morbid | SVarCompare$ GE1 | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your end step, if a creature died this turn, put a +1/+1 counter on CARDNAME and untap it.
SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBUntap SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBUntap
SVar:DBUntap:DB$ Untap | Defined$ Self SVar:DBUntap:DB$ Untap | Defined$ Self
SVar:Morbid:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature SVar:Morbid:Count$Morbid.1.0
DeckHas:Ability$Counters DeckHas:Ability$Counters
Oracle:At the beginning of your end step, if a creature died this turn, put a +1/+1 counter on Sabertooth Mauler and untap it. Oracle:At the beginning of your end step, if a creature died this turn, put a +1/+1 counter on Sabertooth Mauler and untap it.

View File

@@ -2,7 +2,7 @@ Name:Saw in Half
ManaCost:2 B ManaCost:2 B
Types:Instant Types:Instant
A:SP$ Destroy | ValidTgts$ Creature | TgtPrompt$ Select target creature | SubAbility$ DBCopy | RememberLKI$ True | SpellDescription$ Destroy target creature. A:SP$ Destroy | ValidTgts$ Creature | TgtPrompt$ Select target creature | SubAbility$ DBCopy | RememberLKI$ True | SpellDescription$ Destroy target creature.
SVar:DBCopy:DB$ CopyPermanent | Defined$ Remembered | NumCopies$ 2 | Controller$ TargetedController | SetPower$ dX | SetToughness$ dY | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | SubAbility$ DBCleanup | StackDescription$ SpellDescription | SpellDescription$ If that creature dies this way, its controller creates two tokens that are copies of that creature, except their base power is half that creature's power and their base toughness is half that creature's toughness. Round up each time. SVar:DBCopy:DB$ CopyPermanent | Defined$ RememberedLKI | NumCopies$ 2 | Controller$ TargetedController | SetPower$ dX | SetToughness$ dY | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | SubAbility$ DBCleanup | StackDescription$ SpellDescription | SpellDescription$ If that creature dies this way, its controller creates two tokens that are copies of that creature, except their base power is half that creature's power and their base toughness is half that creature's toughness. Round up each time.
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:Remembered$Amount SVar:X:Remembered$Amount
SVar:dX:RememberedLKI$CardPower/HalfUp SVar:dX:RememberedLKI$CardPower/HalfUp

View File

@@ -4,7 +4,7 @@ Types:Creature Mouse Soldier
PT:3/2 PT:3/2
K:Vigilance K:Vigilance
K:Haste K:Haste
T:Mode$ BecomesTarget | ValidTarget$ Card.Self | ValidSource$ SpellAbility.YouCtrl | TriggerZones$ Battlefield | FirstTime$ True | Execute$ TrigCounter | TriggerDescription$ Valiant — Whenever CARDNAME becomes the target of a spell or ability you control for the first time each turn, put a +1/+1 counter on it. T:Mode$ BecomesTarget | ValidTarget$ Card.Self | ValidSource$ SpellAbility.YouCtrl | TriggerZones$ Battlefield | Valiant$ True | Execute$ TrigCounter | TriggerDescription$ Valiant — Whenever CARDNAME becomes the target of a spell or ability you control for the first time each turn, put a +1/+1 counter on it.
SVar:TrigCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 SVar:TrigCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1
DeckHas:Ability$Counters DeckHas:Ability$Counters
Oracle:Vigilance, haste\nValiant — Whenever Seedglaive Mentor becomes the target of a spell or ability you control for the first time each turn, put a +1/+1 counter on it. Oracle:Vigilance, haste\nValiant — Whenever Seedglaive Mentor becomes the target of a spell or ability you control for the first time each turn, put a +1/+1 counter on it.

View File

@@ -4,7 +4,7 @@ Types:Creature Demon
PT:8/4 PT:8/4
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigRepeat | TriggerDescription$ When CARDNAME enters, each opponent sacrifices a creature with the greatest power among creatures they control. You gain life equal to the greatest power among creatures sacrificed this way. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigRepeat | TriggerDescription$ When CARDNAME enters, each opponent sacrifices a creature with the greatest power among creatures they control. You gain life equal to the greatest power among creatures sacrificed this way.
SVar:TrigRepeat:DB$ RepeatEach | RepeatPlayers$ Player.Opponent | RepeatSubAbility$ DBChooseCard | SubAbility$ DBSac SVar:TrigRepeat:DB$ RepeatEach | RepeatPlayers$ Player.Opponent | RepeatSubAbility$ DBChooseCard | SubAbility$ DBSac
SVar:DBChooseCard:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Creature.greatestPowerControlledByRemembered | ChoiceTitle$ Choose a creature you control with the greatest power | Mandatory$ True | ImprintChosen$ True | AILogic$ WorstCard SVar:DBChooseCard:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Creature.greatestPowerControlledByRemembered | ChoiceTitle$ Choose a creature you control with the greatest power | Mandatory$ True | Reveal$ True | ImprintChosen$ True | AILogic$ WorstCard
SVar:DBSac:DB$ SacrificeAll | ValidCards$ Card.IsImprinted | RememberSacrificed$ True | SubAbility$ DBLifeGain SVar:DBSac:DB$ SacrificeAll | ValidCards$ Card.IsImprinted | RememberSacrificed$ True | SubAbility$ DBLifeGain
SVar:DBLifeGain:DB$ GainLife | Defined$ You | LifeAmount$ X | SubAbility$ DBCleanup SVar:DBLifeGain:DB$ GainLife | Defined$ You | LifeAmount$ X | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True | ClearChosenCard$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True | ClearChosenCard$ True

View File

@@ -1,11 +1,10 @@
Name:Single Combat Name:Single Combat
ManaCost:3 W W ManaCost:3 W W
Types:Sorcery Types:Sorcery
A:SP$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBChoose | SubAbility$ SacAllOthers | SpellDescription$ Each player chooses a creature or planeswalker they control, then sacrifices the rest. Players can't cast creature or planeswalker spells until the end of your next turn. A:SP$ ChooseCard | Defined$ Player | Choices$ Creature,Planeswalker | ControlledByPlayer$ Chooser | ChoiceTitle$ Choose a creature or planeswalker to keep | Mandatory$ True | Reveal$ True | SubAbility$ SacAllOthers | StackDescription$ SpellDescription | SpellDescription$ Each player chooses a creature or planeswalker they control, then sacrifices the rest. Players can't cast creature or planeswalker spells until the end of your next turn.
SVar:DBChoose:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Creature,Planeswalker | TargetControls$ True | Mandatory$ True | RememberChosen$ True SVar:SacAllOthers:DB$ SacrificeAll | ValidCards$ Creature.nonChosenCard,Planeswalker.nonChosenCard | SubAbility$ DBEffect
SVar:SacAllOthers:DB$ SacrificeAll | ValidCards$ Creature.IsNotRemembered,Planeswalker.IsNotRemembered | SubAbility$ DBEffect SVar:DBEffect:DB$ Effect | StaticAbilities$ STCantBeCast | Duration$ UntilTheEndOfYourNextTurn
SVar:DBEffect:DB$ Effect | StaticAbilities$ STCantBeCast | Duration$ UntilTheEndOfYourNextTurn | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True
SVar:STCantBeCast:Mode$ CantBeCast | EffectZone$ Command | ValidCard$ Creature,Planeswalker | Description$ Players can't cast creature or planeswalker spells. SVar:STCantBeCast:Mode$ CantBeCast | EffectZone$ Command | ValidCard$ Creature,Planeswalker | Description$ Players can't cast creature or planeswalker spells.
AI:RemoveDeck:All AI:RemoveDeck:All
DeckHas:Ability$Sacrifice
Oracle:Each player chooses a creature or planeswalker they control, then sacrifices the rest. Players can't cast creature or planeswalker spells until the end of your next turn. Oracle:Each player chooses a creature or planeswalker they control, then sacrifices the rest. Players can't cast creature or planeswalker spells until the end of your next turn.

View File

@@ -3,5 +3,5 @@ ManaCost:1 B
Types:Creature Human Cleric Types:Creature Human Cleric
PT:1/2 PT:1/2
A:AB$ Token | Cost$ T tapXType<2/Creature> | CheckSVar$ Morbid | SVarCompare$ GE1 | TokenAmount$ 1 | TokenScript$ b_5_5_demon_flying | TokenOwner$ You | CostDesc$ Morbid — {T}, Tap two untapped creatures you control: | SpellDescription$ Create a 5/5 black Demon creature token with flying. Activate only if a creature died this turn. A:AB$ Token | Cost$ T tapXType<2/Creature> | CheckSVar$ Morbid | SVarCompare$ GE1 | TokenAmount$ 1 | TokenScript$ b_5_5_demon_flying | TokenOwner$ You | CostDesc$ Morbid — {T}, Tap two untapped creatures you control: | SpellDescription$ Create a 5/5 black Demon creature token with flying. Activate only if a creature died this turn.
SVar:Morbid:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature SVar:Morbid:Count$Morbid.1.0
Oracle:Morbid — {T}, Tap two untapped creatures you control: Create a 5/5 black Demon creature token with flying. Activate only if a creature died this turn. Oracle:Morbid — {T}, Tap two untapped creatures you control: Create a 5/5 black Demon creature token with flying. Activate only if a creature died this turn.

View File

@@ -2,8 +2,9 @@ Name:Slaughter the Strong
ManaCost:1 W W ManaCost:1 W W
Types:Sorcery Types:Sorcery
A:SP$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ ChooseCrtr | SubAbility$ SacAllOthers | SpellDescription$ Each player chooses any number of creatures they control with total power 4 or less, then sacrifices all other creatures they control. A:SP$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ ChooseCrtr | SubAbility$ SacAllOthers | SpellDescription$ Each player chooses any number of creatures they control with total power 4 or less, then sacrifices all other creatures they control.
SVar:ChooseCrtr:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Creature.RememberedPlayerCtrl | WithTotalPower$ 4 | RememberChosen$ True | AILogic$ NegativePowerFirst SVar:ChooseCrtr:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Creature.RememberedPlayerCtrl | WithTotalPower$ 4 | Reveal$ True | RememberChosen$ True | AILogic$ NegativePowerFirst
SVar:SacAllOthers:DB$ SacrificeAll | ValidCards$ Creature.IsNotRemembered | SubAbility$ DBCleanup SVar:SacAllOthers:DB$ SacrificeAll | ValidCards$ Creature.IsNotRemembered | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
AI:RemoveDeck:All AI:RemoveDeck:All
DeckHas:Ability$Sacrifice
Oracle:Each player chooses any number of creatures they control with total power 4 or less, then sacrifices all other creatures they control. Oracle:Each player chooses any number of creatures they control with total power 4 or less, then sacrifices all other creatures they control.

View File

@@ -2,7 +2,7 @@ Name:Soul Shatter
ManaCost:2 B ManaCost:2 B
Types:Instant Types:Instant
A:SP$ RepeatEach | RepeatPlayers$ Player.Opponent | RepeatSubAbility$ DBChoose | SubAbility$ DBSac | StackDescription$ Each opponent | SpellDescription$ Each opponent sacrifices a creature or planeswalker with the highest mana value among creatures and planeswalkers they control. A:SP$ RepeatEach | RepeatPlayers$ Player.Opponent | RepeatSubAbility$ DBChoose | SubAbility$ DBSac | StackDescription$ Each opponent | SpellDescription$ Each opponent sacrifices a creature or planeswalker with the highest mana value among creatures and planeswalkers they control.
SVar:DBChoose:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Creature.RememberedPlayerCtrl+cmcEQX,Planeswalker.RememberedPlayerCtrl+cmcEQX | ChoiceTitle$ Choose a creature or planeswalker with the highest mana value to sacrifice | Mandatory$ True | RememberChosen$ True SVar:DBChoose:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Creature.RememberedPlayerCtrl+cmcEQX,Planeswalker.RememberedPlayerCtrl+cmcEQX | ChoiceTitle$ Choose a creature or planeswalker with the highest mana value to sacrifice | Mandatory$ True | Reveal$ True | RememberChosen$ True
SVar:DBSac:DB$ SacrificeAll | ValidCards$ Card.IsRemembered | SubAbility$ DBCleanup | StackDescription$ sacrifices a creature or planeswalker with the highest mana value among creatures and planeswalkers they control. SVar:DBSac:DB$ SacrificeAll | ValidCards$ Card.IsRemembered | SubAbility$ DBCleanup | StackDescription$ sacrifices a creature or planeswalker with the highest mana value among creatures and planeswalkers they control.
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:Count$Valid Creature.RememberedPlayerCtrl,Planeswalker.RememberedPlayerCtrl$GreatestCMC SVar:X:Count$Valid Creature.RememberedPlayerCtrl,Planeswalker.RememberedPlayerCtrl$GreatestCMC

View File

@@ -1,7 +1,7 @@
Name:Stick Together Name:Stick Together
ManaCost:3 W W ManaCost:3 W W
Types:Sorcery Types:Sorcery
A:SP$ ChooseCard | Defined$ Player | ChooseEach$ Party | SubAbility$ SacAllOthers | StackDescription$ SpellDescription | SpellDescription$ Each player chooses a party from among creatures they control, A:SP$ ChooseCard | Defined$ Player | Choices$ Creature | ChooseEach$ Party | Reveal$ True | SubAbility$ SacAllOthers | StackDescription$ SpellDescription | SpellDescription$ Each player chooses a party from among creatures they control,
SVar:SacAllOthers:DB$ SacrificeAll | ValidCards$ Creature.nonChosenCard | StackDescription$ then sacrifices the rest. | SpellDescription$ then sacrifices the rest. (To choose a party, choose up to one each of Cleric, Rogue, Warrior, and Wizard.) SVar:SacAllOthers:DB$ SacrificeAll | ValidCards$ Creature.nonChosenCard | StackDescription$ then sacrifices the rest. | SpellDescription$ then sacrifices the rest. (To choose a party, choose up to one each of Cleric, Rogue, Warrior, and Wizard.)
DeckHas:Ability$Sacrifice DeckHas:Ability$Sacrifice
DeckHints:Ability$Party DeckHints:Ability$Party

View File

@@ -3,7 +3,7 @@ ManaCost:4 B
Types:Instant Types:Instant
A:SP$ Charm | MinCharmNum$ 1 | CharmNum$ Count$Compare Y GE1.2.1 | Choices$ DBOppSac,DBExile | AdditionalDescription$ . If you control a commander as you cast this spell, you may choose both. A:SP$ Charm | MinCharmNum$ 1 | CharmNum$ Count$Compare Y GE1.2.1 | Choices$ DBOppSac,DBExile | AdditionalDescription$ . If you control a commander as you cast this spell, you may choose both.
SVar:DBOppSac:DB$ RepeatEach | RepeatPlayers$ Player.Opponent | RepeatSubAbility$ DBChooseCard | SubAbility$ DBSac | SpellDescription$ Each opponent sacrifices a creature they control with the greatest power. SVar:DBOppSac:DB$ RepeatEach | RepeatPlayers$ Player.Opponent | RepeatSubAbility$ DBChooseCard | SubAbility$ DBSac | SpellDescription$ Each opponent sacrifices a creature they control with the greatest power.
SVar:DBChooseCard:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Creature.greatestPowerControlledByRemembered | ChoiceTitle$ Choose a creature you control with the greatest power | Mandatory$ True | RememberChosen$ True SVar:DBChooseCard:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Creature.greatestPowerControlledByRemembered | ChoiceTitle$ Choose a creature you control with the greatest power | Mandatory$ True | Reveal$ True | RememberChosen$ True
SVar:DBSac:DB$ SacrificeAll | ValidCards$ Card.IsRemembered | SubAbility$ DBCleanup | StackDescription$ None SVar:DBSac:DB$ SacrificeAll | ValidCards$ Card.IsRemembered | SubAbility$ DBCleanup | StackDescription$ None
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True
SVar:DBExile:DB$ ChangeZoneAll | ChangeType$ Card.OppCtrl | Origin$ Graveyard | Destination$ Exile | RememberChanged$ True | SubAbility$ DBToken | SpellDescription$ Exile all cards from all opponents' graveyards, then create X 0/1 black Thrull creature tokens, where X is the greatest power among creature cards exiled this way. SVar:DBExile:DB$ ChangeZoneAll | ChangeType$ Card.OppCtrl | Origin$ Graveyard | Destination$ Exile | RememberChanged$ True | SubAbility$ DBToken | SpellDescription$ Exile all cards from all opponents' graveyards, then create X 0/1 black Thrull creature tokens, where X is the greatest power among creature cards exiled this way.

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