mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 02:38:02 +00:00
day_of_the_moon.txt and support/refactor in NameCard (#3890)
* day_of_the_moon.txt and support/refactor
This commit is contained in:
@@ -79,8 +79,7 @@ public abstract class GameState {
|
|||||||
private final Map<Card, List<String>> cardToRememberedId = new HashMap<>();
|
private final Map<Card, List<String>> cardToRememberedId = new HashMap<>();
|
||||||
private final Map<Card, List<String>> cardToImprintedId = new HashMap<>();
|
private final Map<Card, List<String>> cardToImprintedId = new HashMap<>();
|
||||||
private final Map<Card, List<String>> cardToMergedCards = new HashMap<>();
|
private final Map<Card, List<String>> cardToMergedCards = new HashMap<>();
|
||||||
private final Map<Card, String> cardToNamedCard = new HashMap<>();
|
private final Map<Card, List<String>> cardToNamedCard = new HashMap<>();
|
||||||
private final Map<Card, String> cardToNamedCard2 = new HashMap<>();
|
|
||||||
private final Map<Card, String> cardToExiledWithId = new HashMap<>();
|
private final Map<Card, String> cardToExiledWithId = new HashMap<>();
|
||||||
private final Map<Card, Card> cardAttackMap = new HashMap<>();
|
private final Map<Card, Card> cardAttackMap = new HashMap<>();
|
||||||
|
|
||||||
@@ -343,9 +342,6 @@ public abstract class GameState {
|
|||||||
if (!c.getNamedCard().isEmpty()) {
|
if (!c.getNamedCard().isEmpty()) {
|
||||||
newText.append("|NamedCard:").append(c.getNamedCard());
|
newText.append("|NamedCard:").append(c.getNamedCard());
|
||||||
}
|
}
|
||||||
if (!c.getNamedCard2().isEmpty()) {
|
|
||||||
newText.append("|NamedCard2:").append(c.getNamedCard2());
|
|
||||||
}
|
|
||||||
|
|
||||||
List<String> chosenCardIds = Lists.newArrayList();
|
List<String> chosenCardIds = Lists.newArrayList();
|
||||||
for (Card obj : c.getChosenCards()) {
|
for (Card obj : c.getChosenCards()) {
|
||||||
@@ -1012,15 +1008,11 @@ public abstract class GameState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Named card
|
// Named card
|
||||||
for (Entry<Card, String> entry : cardToNamedCard.entrySet()) {
|
for (Entry<Card, List<String>> entry : cardToNamedCard.entrySet()) {
|
||||||
Card c = entry.getKey();
|
Card c = entry.getKey();
|
||||||
c.setNamedCard(entry.getValue());
|
for (String s : entry.getValue()) {
|
||||||
}
|
c.addNamedCard(s);
|
||||||
|
}
|
||||||
// Named card 2
|
|
||||||
for (Entry<Card,String> entry : cardToNamedCard2.entrySet()) {
|
|
||||||
Card c = entry.getKey();
|
|
||||||
c.setNamedCard2(entry.getValue());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Chosen cards
|
// Chosen cards
|
||||||
@@ -1358,9 +1350,8 @@ public abstract class GameState {
|
|||||||
List<String> cardNames = Arrays.asList(info.substring(info.indexOf(':') + 1).split(","));
|
List<String> cardNames = Arrays.asList(info.substring(info.indexOf(':') + 1).split(","));
|
||||||
cardToMergedCards.put(c, cardNames);
|
cardToMergedCards.put(c, cardNames);
|
||||||
} else if (info.startsWith("NamedCard:")) {
|
} else if (info.startsWith("NamedCard:")) {
|
||||||
cardToNamedCard.put(c, info.substring(info.indexOf(':') + 1));
|
List<String> cardNames = Arrays.asList(info.substring(info.indexOf(':') + 1).split(","));
|
||||||
} else if (info.startsWith("NamedCard2:")) {
|
cardToNamedCard.put(c, cardNames);
|
||||||
cardToNamedCard2.put(c, info.substring(info.indexOf(':') + 1));
|
|
||||||
} else if (info.startsWith("ExecuteScript:")) {
|
} else if (info.startsWith("ExecuteScript:")) {
|
||||||
cardToScript.put(c, info.substring(info.indexOf(':') + 1));
|
cardToScript.put(c, info.substring(info.indexOf(':') + 1));
|
||||||
} else if (info.startsWith("RememberedCards:")) {
|
} else if (info.startsWith("RememberedCards:")) {
|
||||||
|
|||||||
@@ -431,10 +431,7 @@ public class GameCopier {
|
|||||||
newCard.setChosenColors(Lists.newArrayList(c.getChosenColors()));
|
newCard.setChosenColors(Lists.newArrayList(c.getChosenColors()));
|
||||||
}
|
}
|
||||||
if (!c.getNamedCard().isEmpty()) {
|
if (!c.getNamedCard().isEmpty()) {
|
||||||
newCard.setNamedCard(c.getNamedCard());
|
newCard.setNamedCards(Lists.newArrayList(c.getNamedCards()));
|
||||||
}
|
|
||||||
if (!c.getNamedCard2().isEmpty()) {
|
|
||||||
newCard.setNamedCard2(c.getNamedCard());
|
|
||||||
}
|
}
|
||||||
newCard.setSVars(c.getSVars());
|
newCard.setSVars(c.getSVars());
|
||||||
newCard.copyChangedSVarsFrom(c);
|
newCard.copyChangedSVarsFrom(c);
|
||||||
|
|||||||
@@ -152,13 +152,10 @@ public class ChooseCardNameEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
host.setNamedCard(chosen);
|
host.addNamedCard(chosen);
|
||||||
if (!randomChoice) {
|
if (!randomChoice) {
|
||||||
p.setNamedCard(chosen);
|
p.setNamedCard(chosen);
|
||||||
}
|
}
|
||||||
if (sa.hasParam("NoteFor")) {
|
|
||||||
p.addNoteForName(sa.getParam("NoteFor"), "Name:" + chosen);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ public class CleanUpEffect extends SpellAbilityEffect {
|
|||||||
source.setChosenColors(null);
|
source.setChosenColors(null);
|
||||||
}
|
}
|
||||||
if (sa.hasParam("ClearNamedCard")) {
|
if (sa.hasParam("ClearNamedCard")) {
|
||||||
source.setNamedCard("");
|
source.setNamedCards(null);
|
||||||
}
|
}
|
||||||
if (sa.hasParam("Log")) {
|
if (sa.hasParam("Log")) {
|
||||||
source.getController().getGame().fireEvent(new GameEventRandomLog(logMessage));
|
source.getController().getGame().fireEvent(new GameEventRandomLog(logMessage));
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ public class CloneEffect extends SpellAbilityEffect {
|
|||||||
} else if (sa.usesTargeting()) {
|
} else if (sa.usesTargeting()) {
|
||||||
cardToCopy = sa.getTargetCard();
|
cardToCopy = sa.getTargetCard();
|
||||||
} else if (sa.hasParam("CopyFromChosenName")) {
|
} else if (sa.hasParam("CopyFromChosenName")) {
|
||||||
String name = host.getChosenName();
|
String name = host.getNamedCard();
|
||||||
cardToCopy = Card.fromPaperCard(StaticData.instance().getCommonCards().getUniqueByName(name), activator);
|
cardToCopy = Card.fromPaperCard(StaticData.instance().getCommonCards().getUniqueByName(name), activator);
|
||||||
}
|
}
|
||||||
if (cardToCopy == null) {
|
if (cardToCopy == null) {
|
||||||
|
|||||||
@@ -293,7 +293,7 @@ public class EffectEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
// Set Chosen name
|
// Set Chosen name
|
||||||
if (!hostCard.getNamedCard().isEmpty()) {
|
if (!hostCard.getNamedCard().isEmpty()) {
|
||||||
eff.setNamedCard(hostCard.getNamedCard());
|
eff.setNamedCards(hostCard.getNamedCards());
|
||||||
}
|
}
|
||||||
|
|
||||||
// chosen number
|
// chosen number
|
||||||
|
|||||||
@@ -52,8 +52,8 @@ public class MakeCardEffect extends SpellAbilityEffect {
|
|||||||
if (sa.hasParam("Name")) {
|
if (sa.hasParam("Name")) {
|
||||||
final String n = sa.getParam("Name");
|
final String n = sa.getParam("Name");
|
||||||
if (n.equals("ChosenName")) {
|
if (n.equals("ChosenName")) {
|
||||||
if (source.hasChosenName()) {
|
if (source.hasNamedCard()) {
|
||||||
names.add(source.getChosenName());
|
names.addAll(source.getNamedCards());
|
||||||
} else {
|
} else {
|
||||||
System.err.println("Malformed MakeCard entry! - " + source.toString());
|
System.err.println("Malformed MakeCard entry! - " + source.toString());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -161,7 +161,7 @@ public class PlayEffect extends SpellAbilityEffect {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else if (sa.hasParam("CopyFromChosenName")) {
|
} else if (sa.hasParam("CopyFromChosenName")) {
|
||||||
String name = source.getChosenName();
|
String name = source.getNamedCard();
|
||||||
if (name.trim().isEmpty()) return;
|
if (name.trim().isEmpty()) return;
|
||||||
Card card = Card.fromPaperCard(StaticData.instance().getCommonCards().getUniqueByName(name), controller);
|
Card card = Card.fromPaperCard(StaticData.instance().getCommonCards().getUniqueByName(name), controller);
|
||||||
// so it gets added to stack
|
// so it gets added to stack
|
||||||
|
|||||||
@@ -184,8 +184,8 @@ public class SetStateEffect extends SpellAbilityEffect {
|
|||||||
game.getGameLog().add(GameLogEntryType.STACK_RESOLVE, sb);
|
game.getGameLog().add(GameLogEntryType.STACK_RESOLVE, sb);
|
||||||
} else if (hiddenAgenda) {
|
} else if (hiddenAgenda) {
|
||||||
if (gameCard.hasKeyword("Double agenda")) {
|
if (gameCard.hasKeyword("Double agenda")) {
|
||||||
String sb = p + " has revealed " + gameCard.getName() + " with the chosen names " +
|
String sb = p + " has revealed " + gameCard.getName() + " with the chosen names: " +
|
||||||
gameCard.getNamedCard() + " and " + gameCard.getNamedCard2();
|
gameCard.getNamedCards();
|
||||||
game.getGameLog().add(GameLogEntryType.STACK_RESOLVE, sb);
|
game.getGameLog().add(GameLogEntryType.STACK_RESOLVE, sb);
|
||||||
} else {
|
} else {
|
||||||
String sb = p + " has revealed " + gameCard.getName() + " with the chosen name " + gameCard.getNamedCard();
|
String sb = p + " has revealed " + gameCard.getName() + " with the chosen name " + gameCard.getNamedCard();
|
||||||
|
|||||||
@@ -287,7 +287,7 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
|||||||
private String chosenType2 = "";
|
private String chosenType2 = "";
|
||||||
private List<String> notedTypes = new ArrayList<>();
|
private List<String> notedTypes = new ArrayList<>();
|
||||||
private List<String> chosenColors;
|
private List<String> chosenColors;
|
||||||
private String chosenName = "";
|
private List<String> chosenName = new ArrayList<>();
|
||||||
private String chosenName2 = "";
|
private String chosenName2 = "";
|
||||||
private Integer chosenNumber;
|
private Integer chosenNumber;
|
||||||
private Player chosenPlayer;
|
private Player chosenPlayer;
|
||||||
@@ -1947,34 +1947,23 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
|||||||
|
|
||||||
// used for cards like Meddling Mage...
|
// used for cards like Meddling Mage...
|
||||||
public final String getNamedCard() {
|
public final String getNamedCard() {
|
||||||
return getChosenName();
|
return hasNamedCard() ? chosenName.get(0) : "";
|
||||||
}
|
}
|
||||||
public final void setNamedCard(final String s) {
|
public final List<String> getNamedCards() {
|
||||||
setChosenName(s);
|
return chosenName == null ? Lists.newArrayList() : chosenName;
|
||||||
}
|
}
|
||||||
public final String getNamedCard2() { return getChosenName2(); }
|
public final void setNamedCards(final List<String> s) {
|
||||||
public final void setNamedCard2(final String s) {
|
|
||||||
setChosenName2(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean hasChosenName() {
|
|
||||||
return chosenName != null;
|
|
||||||
}
|
|
||||||
public boolean hasChosenName2() { return chosenName2 != null; }
|
|
||||||
|
|
||||||
public String getChosenName() {
|
|
||||||
return chosenName;
|
|
||||||
}
|
|
||||||
public final void setChosenName(final String s) {
|
|
||||||
chosenName = s;
|
chosenName = s;
|
||||||
view.updateNamedCard(this);
|
view.updateNamedCard(this);
|
||||||
}
|
}
|
||||||
public String getChosenName2() {
|
|
||||||
return chosenName2;
|
public final void addNamedCard(final String s) {
|
||||||
|
chosenName.add(s);
|
||||||
|
view.updateNamedCard(this);
|
||||||
}
|
}
|
||||||
public final void setChosenName2(final String s) {
|
|
||||||
chosenName2 = s;
|
public boolean hasNamedCard() {
|
||||||
view.updateNamedCard2(this);
|
return chosenName != null && !chosenName.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasChosenEvenOdd() {
|
public boolean hasChosenEvenOdd() {
|
||||||
|
|||||||
@@ -215,7 +215,7 @@ public class CardFactoryUtil {
|
|||||||
if (name == null || name.isEmpty()) {
|
if (name == null || name.isEmpty()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
card.setNamedCard(name);
|
card.addNamedCard(name);
|
||||||
|
|
||||||
if (card.hasKeyword("Double agenda")) {
|
if (card.hasKeyword("Double agenda")) {
|
||||||
String name2 = player.getController().chooseCardName(sa, cpp, "Card.!NamedCard",
|
String name2 = player.getController().chooseCardName(sa, cpp, "Card.!NamedCard",
|
||||||
@@ -223,7 +223,7 @@ public class CardFactoryUtil {
|
|||||||
if (name2 == null || name2.isEmpty()) {
|
if (name2 == null || name2.isEmpty()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
card.setNamedCard2(name2);
|
card.addNamedCard(name2);
|
||||||
}
|
}
|
||||||
|
|
||||||
card.turnFaceDown();
|
card.turnFaceDown();
|
||||||
|
|||||||
@@ -69,12 +69,19 @@ public class CardProperty {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else if (property.equals("NamedCard")) {
|
} else if (property.equals("NamedCard")) {
|
||||||
if (!card.sharesNameWith(source.getNamedCard())) {
|
boolean found = false;
|
||||||
return false;
|
for (String name : source.getNamedCards()) {
|
||||||
|
if (card.sharesNameWith(name)) {
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (property.equals("NamedCard2")) {
|
return found;
|
||||||
if (!card.sharesNameWith(source.getNamedCard2())) {
|
} else if (property.startsWith("DifferentNameThan")) {
|
||||||
return false;
|
for (Card c : AbilityUtils.getDefinedCards(source, property.substring(17), spellAbility)) {
|
||||||
|
if (card.sharesNameWith(c)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (property.equals("NamedByRememberedPlayer")) {
|
} else if (property.equals("NamedByRememberedPlayer")) {
|
||||||
if (!source.hasRemembered()) {
|
if (!source.hasRemembered()) {
|
||||||
|
|||||||
@@ -296,8 +296,7 @@ public final class CardUtil {
|
|||||||
|
|
||||||
newCopy.setChosenType(in.getChosenType());
|
newCopy.setChosenType(in.getChosenType());
|
||||||
newCopy.setChosenType2(in.getChosenType2());
|
newCopy.setChosenType2(in.getChosenType2());
|
||||||
newCopy.setChosenName(in.getChosenName());
|
newCopy.setNamedCards(in.getNamedCards());
|
||||||
newCopy.setChosenName2(in.getChosenName2());
|
|
||||||
newCopy.setChosenColors(Lists.newArrayList(in.getChosenColors()));
|
newCopy.setChosenColors(Lists.newArrayList(in.getChosenColors()));
|
||||||
if (in.hasChosenNumber()) {
|
if (in.hasChosenNumber()) {
|
||||||
newCopy.setChosenNumber(in.getChosenNumber());
|
newCopy.setChosenNumber(in.getChosenNumber());
|
||||||
|
|||||||
@@ -509,17 +509,11 @@ public class CardView extends GameEntityView {
|
|||||||
set(TrackableProperty.Sector, c.getSector());
|
set(TrackableProperty.Sector, c.getSector());
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getNamedCard() {
|
public List<String> getNamedCard() {
|
||||||
return get(TrackableProperty.NamedCard);
|
return get(TrackableProperty.NamedCard);
|
||||||
}
|
}
|
||||||
void updateNamedCard(Card c) {
|
void updateNamedCard(Card c) {
|
||||||
set(TrackableProperty.NamedCard, c.getNamedCard());
|
set(TrackableProperty.NamedCard, c.getNamedCards());
|
||||||
}
|
|
||||||
public String getNamedCard2() {
|
|
||||||
return get(TrackableProperty.NamedCard2);
|
|
||||||
}
|
|
||||||
void updateNamedCard2(Card c) {
|
|
||||||
set(TrackableProperty.NamedCard2, c.getNamedCard2());
|
|
||||||
}
|
}
|
||||||
public boolean getMayPlayPlayers(PlayerView pv) {
|
public boolean getMayPlayPlayers(PlayerView pv) {
|
||||||
TrackableCollection<PlayerView> col = get(TrackableProperty.MayPlayPlayers);
|
TrackableCollection<PlayerView> col = get(TrackableProperty.MayPlayPlayers);
|
||||||
|
|||||||
@@ -213,7 +213,7 @@ public final class StaticAbilityContinuous {
|
|||||||
if (!hostCard.hasChosenPlayer() && input.contains("ChosenPlayer")) {
|
if (!hostCard.hasChosenPlayer() && input.contains("ChosenPlayer")) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (!hostCard.hasChosenName() && input.contains("ChosenName")) {
|
if (!hostCard.hasNamedCard() && input.contains("ChosenName")) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (!hostCard.hasChosenEvenOdd() && (input.contains("ChosenEvenOdd") || input.contains("chosenEvenOdd"))) {
|
if (!hostCard.hasChosenEvenOdd() && (input.contains("ChosenEvenOdd") || input.contains("chosenEvenOdd"))) {
|
||||||
@@ -297,8 +297,8 @@ public final class StaticAbilityContinuous {
|
|||||||
input = input.replaceAll("ChosenPlayerUID", String.valueOf(cp.getId()));
|
input = input.replaceAll("ChosenPlayerUID", String.valueOf(cp.getId()));
|
||||||
input = input.replaceAll("ChosenPlayerName", cp.getName());
|
input = input.replaceAll("ChosenPlayerName", cp.getName());
|
||||||
}
|
}
|
||||||
if (hostCard.hasChosenName()) {
|
if (hostCard.hasNamedCard()) {
|
||||||
final String chosenName = hostCard.getChosenName().replace(",", ";");
|
final String chosenName = hostCard.getNamedCard().replace(",", ";");
|
||||||
input = input.replaceAll("ChosenName", "Card.named" + chosenName);
|
input = input.replaceAll("ChosenName", "Card.named" + chosenName);
|
||||||
}
|
}
|
||||||
if (hostCard.hasChosenEvenOdd()) {
|
if (hostCard.hasChosenEvenOdd()) {
|
||||||
|
|||||||
@@ -78,8 +78,7 @@ public enum TrackableProperty {
|
|||||||
CurrentRoom(TrackableTypes.StringType),
|
CurrentRoom(TrackableTypes.StringType),
|
||||||
Intensity(TrackableTypes.IntegerType),
|
Intensity(TrackableTypes.IntegerType),
|
||||||
Remembered(TrackableTypes.StringType),
|
Remembered(TrackableTypes.StringType),
|
||||||
NamedCard(TrackableTypes.StringType),
|
NamedCard(TrackableTypes.StringListType),
|
||||||
NamedCard2(TrackableTypes.StringType),
|
|
||||||
PlayerMayLook(TrackableTypes.PlayerViewCollectionType, FreezeMode.IgnoresFreeze),
|
PlayerMayLook(TrackableTypes.PlayerViewCollectionType, FreezeMode.IgnoresFreeze),
|
||||||
MayPlayPlayers(TrackableTypes.PlayerViewCollectionType, FreezeMode.IgnoresFreeze),
|
MayPlayPlayers(TrackableTypes.PlayerViewCollectionType, FreezeMode.IgnoresFreeze),
|
||||||
EntityAttachedTo(TrackableTypes.GameEntityViewType),
|
EntityAttachedTo(TrackableTypes.GameEntityViewType),
|
||||||
|
|||||||
@@ -885,11 +885,11 @@ public class SpellAbilityPickerSimulationTest extends SimulationTest {
|
|||||||
|
|
||||||
// If we have a Pithing Needle, but it's naming something else, that's still fine.
|
// If we have a Pithing Needle, but it's naming something else, that's still fine.
|
||||||
Card pithingNeedle = addCard("Pithing Needle", opponent);
|
Card pithingNeedle = addCard("Pithing Needle", opponent);
|
||||||
pithingNeedle.setNamedCard("Flooded Strand");
|
pithingNeedle.addNamedCard("Flooded Strand");
|
||||||
assertPickIsGoblinBombardmentTargetingOpponent.run();
|
assertPickIsGoblinBombardmentTargetingOpponent.run();
|
||||||
|
|
||||||
// But if it's naming Gobling Bombardment, then we can't choose that SA.
|
// But if it's naming Gobling Bombardment, then we can't choose that SA.
|
||||||
pithingNeedle.setNamedCard("Goblin Bombardment");
|
pithingNeedle.addNamedCard("Goblin Bombardment");
|
||||||
game.getAction().checkStateEffects(true);
|
game.getAction().checkStateEffects(true);
|
||||||
AssertJUnit.assertNull(picker.chooseSpellAbilityToPlay(null));
|
AssertJUnit.assertNull(picker.chooseSpellAbilityToPlay(null));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,5 +5,5 @@ T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | O
|
|||||||
SVar:TrigAch:DB$ NameCard | Defined$ You | ValidCards$ Card.Creature | ValidDesc$ creature | SubAbility$ DBSearch | SpellDescription$ You may say "Ach! Hans, run! It's the . . ." and the name of a creature card. If you do, search your library for a card with that name, put it onto the battlefield, then shuffle your library. That creature gains haste. Exile it at the beginning of the next end step.
|
SVar:TrigAch:DB$ NameCard | Defined$ You | ValidCards$ Card.Creature | ValidDesc$ creature | SubAbility$ DBSearch | SpellDescription$ You may say "Ach! Hans, run! It's the . . ." and the name of a creature card. If you do, search your library for a card with that name, put it onto the battlefield, then shuffle your library. That creature gains haste. Exile it at the beginning of the next end step.
|
||||||
SVar:DBSearch:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | ChangeType$ Card.NamedCard | RememberChanged$ True | SubAbility$ DBPump
|
SVar:DBSearch:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | ChangeType$ Card.NamedCard | RememberChanged$ True | SubAbility$ DBPump
|
||||||
SVar:DBPump:DB$ Animate | Keywords$ Haste | Duration$ Permanent | AtEOT$ Exile | Defined$ Remembered | SubAbility$ DBCleanup
|
SVar:DBPump:DB$ Animate | Keywords$ Haste | Duration$ Permanent | AtEOT$ Exile | Defined$ Remembered | SubAbility$ DBCleanup
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearNamedCard$ True
|
||||||
Oracle:At the beginning of your upkeep, you may say "Ach! Hans, run! It's the . . ." and the name of a creature card. If you do, search your library for a card with that name, put it onto the battlefield, then shuffle. That creature gains haste. Exile it at the beginning of the next end step.
|
Oracle:At the beginning of your upkeep, you may say "Ach! Hans, run! It's the . . ." and the name of a creature card. If you do, search your library for a card with that name, put it onto the battlefield, then shuffle. That creature gains haste. Exile it at the beginning of the next end step.
|
||||||
|
|||||||
@@ -5,6 +5,6 @@ A:SP$ NameCard | Cost$ 1 B | Defined$ You | ValidCards$ Card.nonLand | ValidDesc
|
|||||||
SVar:RevealHand:DB$ RevealHand | RememberRevealed$ True | ValidTgts$ Player | TgtPrompt$ Select target player | SubAbility$ DBDiscard
|
SVar:RevealHand:DB$ RevealHand | RememberRevealed$ True | ValidTgts$ Player | TgtPrompt$ Select target player | SubAbility$ DBDiscard
|
||||||
SVar:DBDiscard:DB$ Discard | Defined$ Targeted | NumCards$ 1 | Mode$ TgtChoose | DiscardValid$ Card.NamedCard | SubAbility$ DBDraw
|
SVar:DBDiscard:DB$ Discard | Defined$ Targeted | NumCards$ 1 | Mode$ TgtChoose | DiscardValid$ Card.NamedCard | SubAbility$ DBDraw
|
||||||
SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 1 | ConditionDefined$ Remembered | ConditionPresent$ Card.NamedCard | ConditionCompare$ EQ0 | SubAbility$ DBCleanup
|
SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 1 | ConditionDefined$ Remembered | ConditionPresent$ Card.NamedCard | ConditionCompare$ EQ0 | SubAbility$ DBCleanup
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearNamedCard$ True
|
||||||
AI:RemoveDeck:All
|
AI:RemoveDeck:All
|
||||||
Oracle:Choose a nonland card name. Target player reveals their hand. That player discards a card with that name. If they can't, you draw a card.
|
Oracle:Choose a nonland card name. Target player reveals their hand. That player discards a card with that name. If they can't, you draw a card.
|
||||||
|
|||||||
@@ -2,9 +2,8 @@ Name:Break Expectations
|
|||||||
ManaCost:B
|
ManaCost:B
|
||||||
Types:Sorcery
|
Types:Sorcery
|
||||||
A:SP$ Reveal | ValidTgts$ Player | TgtPrompt$ Select target player | RevealAllValid$ Card.cmcGE2+TargetedPlayerCtrl | SubAbility$ DBExile | StackDescription$ SpellDescription | SpellDescription$ Target player reveals all cards with mana value 2 or greater in their hand. You choose a card from among those cards. Exile that card. If a card was exiled this way, that player drafts a card from CARDNAME's spellbook and reveals it.
|
A:SP$ Reveal | ValidTgts$ Player | TgtPrompt$ Select target player | RevealAllValid$ Card.cmcGE2+TargetedPlayerCtrl | SubAbility$ DBExile | StackDescription$ SpellDescription | SpellDescription$ Target player reveals all cards with mana value 2 or greater in their hand. You choose a card from among those cards. Exile that card. If a card was exiled this way, that player drafts a card from CARDNAME's spellbook and reveals it.
|
||||||
SVar:DBExile:DB$ ChangeZone | DefinedPlayer$ Targeted | Chooser$ You | Origin$ Hand | Destination$ Exile | ChangeNum$ 1 | ChangeType$ Card.cmcGE2+TargetedPlayerCtrl | Mandatory$ True | AlreadyRevealed$ True | RememberChanged$ True | AILogic$ BestCard | SubAbility$ DBDraft | StackDescription$ None
|
SVar:DBExile:DB$ ChangeZone | DefinedPlayer$ Targeted | Chooser$ You | Origin$ Hand | Destination$ Exile | ChangeNum$ 1 | ChangeType$ Card.cmcGE2+TargetedPlayerCtrl | Mandatory$ True | AlreadyRevealed$ True | Imprint$ True | AILogic$ BestCard | SubAbility$ DBDraft | StackDescription$ None
|
||||||
SVar:DBDraft:DB$ NameCard | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 | Draft$ True | Defined$ Targeted | ChooseFromList$ Colossal Plow,Millstone,Whirlermaker,Magistrate's Scepter,Replicating Ring,Raiders' Karve,Weapon Rack,Relic Amulet,Orazca Relic,Fifty Feet of Rope,Pyre of Heroes,Treasure Chest,Leather Armor,Spiked Pit Trap,Gingerbrute | SubAbility$ DBMakeCard | StackDescription$ None
|
SVar:DBDraft:DB$ Draft | ConditionDefined$ Imprinted | ConditionPresent$ Card | ConditionCompare$ GE1 | Defined$ Targeted | Conjure$ True | Spellbook$ Colossal Plow,Millstone,Whirlermaker,Magistrate's Scepter,Replicating Ring,Raiders' Karve,Weapon Rack,Relic Amulet,Orazca Relic,Fifty Feet of Rope,Pyre of Heroes,Treasure Chest,Leather Armor,Spiked Pit Trap,Gingerbrute | RememberDrafted$ True | SubAbility$ DBReveal | StackDescription$ None
|
||||||
SVar:DBMakeCard:DB$ MakeCard | Defined$ Targeted | Name$ ChosenName | Zone$ Hand | ImprintMade$ True | SubAbility$ DBReveal
|
SVar:DBReveal:DB$ Reveal | Defined$ Targeted | RevealDefined$ Remembered | SubAbility$ DBCleanup | StackDescription$ None
|
||||||
SVar:DBReveal:DB$ Reveal | Defined$ Targeted | RevealDefined$ Imprinted | SubAbility$ DBCleanup | StackDescription$ None
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True | ClearNamedCard$ True
|
|
||||||
Oracle:Target player reveals all cards with mana value 2 or greater in their hand. You choose a card from among those cards. Exile that card. If a card was exiled this way, that player drafts a card from Break Expectations's spellbook and reveals it.
|
Oracle:Target player reveals all cards with mana value 2 or greater in their hand. You choose a card from among those cards. Exile that card. If a card was exiled this way, that player drafts a card from Break Expectations's spellbook and reveals it.
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ K:Menace
|
|||||||
T:Mode$ Phase | PreCombatMain$ True | ValidPlayer$ You | Execute$ DBImmediateTrigger | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your precombat main phase, you may sacrifice a creature. When you do, choose a nonland card name, then target player reveals their hand and discards all cards with that name.
|
T:Mode$ Phase | PreCombatMain$ True | ValidPlayer$ You | Execute$ DBImmediateTrigger | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your precombat main phase, you may sacrifice a creature. When you do, choose a nonland card name, then target player reveals their hand and discards all cards with that name.
|
||||||
SVar:DBImmediateTrigger:DB$ ImmediateTrigger | Execute$ NameCard | TriggerDescription$ You may sacrifice a creature. When you do, choose a nonland card name, then target player reveals their hand and discards all cards with that name. | UnlessCost$ Sac<1/Creature> | UnlessPayer$ You | UnlessSwitched$ True
|
SVar:DBImmediateTrigger:DB$ ImmediateTrigger | Execute$ NameCard | TriggerDescription$ You may sacrifice a creature. When you do, choose a nonland card name, then target player reveals their hand and discards all cards with that name. | UnlessCost$ Sac<1/Creature> | UnlessPayer$ You | UnlessSwitched$ True
|
||||||
SVar:NameCard:DB$ NameCard | Defined$ You | ValidCards$ Card.nonLand | ValidDesc$ nonland | SubAbility$ DBDiscard | SpellDescription$ Choose a nonland card name. Target player reveals their hand and discards all cards with that name.
|
SVar:NameCard:DB$ NameCard | Defined$ You | ValidCards$ Card.nonLand | ValidDesc$ nonland | SubAbility$ DBDiscard | SpellDescription$ Choose a nonland card name. Target player reveals their hand and discards all cards with that name.
|
||||||
SVar:DBDiscard:DB$ Discard | ValidTgts$ Player | TgtPrompt$ Select target player | Mode$ RevealDiscardAll | DiscardValid$ Card.NamedCard
|
SVar:DBDiscard:DB$ Discard | ValidTgts$ Player | Mode$ RevealDiscardAll | DiscardValid$ Card.NamedCard | SubAbility$ DBCleanup
|
||||||
|
SVar:DBCleanup:DB$ Cleanup | ClearNamedCard$ True
|
||||||
AI:RemoveDeck:All
|
AI:RemoveDeck:All
|
||||||
Oracle:Menace\nAt the beginning of your precombat main phase, you may sacrifice a creature. When you do, choose a nonland card name, then target player reveals their hand and discards all cards with that name.
|
Oracle:Menace\nAt the beginning of your precombat main phase, you may sacrifice a creature. When you do, choose a nonland card name, then target player reveals their hand and discards all cards with that name.
|
||||||
|
|||||||
@@ -4,7 +4,8 @@ Types:Creature Goblin
|
|||||||
PT:2/2
|
PT:2/2
|
||||||
T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigNameCard | TriggerDescription$ Whenever CARDNAME attacks, choose a card name. Spells with the chosen name cost {1} less to cast this turn.
|
T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigNameCard | TriggerDescription$ Whenever CARDNAME attacks, choose a card name. Spells with the chosen name cost {1} less to cast this turn.
|
||||||
SVar:TrigNameCard:DB$ NameCard | Defined$ You | SubAbility$ DBEffect
|
SVar:TrigNameCard:DB$ NameCard | Defined$ You | SubAbility$ DBEffect
|
||||||
SVar:DBEffect:DB$ Effect | StaticAbilities$ CFReduceCost
|
SVar:DBEffect:DB$ Effect | SubAbility$ DBCleanup | StaticAbilities$ CFReduceCost
|
||||||
SVar:CFReduceCost:Mode$ ReduceCost | EffectZone$ Command | ValidCard$ Card.NamedCard | Type$ Spell | Amount$ 1 | Description$ Spells with the chosen name cost {1} less to cast this turn.
|
SVar:CFReduceCost:Mode$ ReduceCost | EffectZone$ Command | ValidCard$ Card.NamedCard | Type$ Spell | Amount$ 1 | Description$ Spells with the chosen name cost {1} less to cast this turn.
|
||||||
|
SVar:DBCleanup:DB$ Cleanup | ClearNamedCard$ True
|
||||||
AI:RemoveDeck:All
|
AI:RemoveDeck:All
|
||||||
Oracle:Whenever Cheering Fanatic attacks, choose a card name. Spells with the chosen name cost {1} less to cast this turn.
|
Oracle:Whenever Cheering Fanatic attacks, choose a card name. Spells with the chosen name cost {1} less to cast this turn.
|
||||||
|
|||||||
@@ -6,7 +6,8 @@ K:Flying
|
|||||||
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ EachName | TriggerDescription$ Whenever CARDNAME attacks, each player chooses a card name. Then each player reveals the top card of their library. If the card a player revealed has the name they chose, that player puts it into their hand. If it doesn't, that player puts it on the bottom of their library.
|
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ EachName | TriggerDescription$ Whenever CARDNAME attacks, each player chooses a card name. Then each player reveals the top card of their library. If the card a player revealed has the name they chose, that player puts it into their hand. If it doesn't, that player puts it on the bottom of their library.
|
||||||
SVar:EachName:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBName | SubAbility$ DBDigEach
|
SVar:EachName:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBName | SubAbility$ DBDigEach
|
||||||
SVar:DBName:DB$ NameCard | Defined$ Player.IsRemembered | AILogic$ RandomInComputerDeck
|
SVar:DBName:DB$ NameCard | Defined$ Player.IsRemembered | AILogic$ RandomInComputerDeck
|
||||||
SVar:DBDigEach:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBDig
|
SVar:DBDigEach:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBDig | SubAbility$ DBCleanup
|
||||||
SVar:DBDig:DB$ Dig | DigNum$ 1 | Defined$ Player.IsRemembered | ChangeNum$ All | ChangeValid$ Card.NamedByRememberedPlayer | Reveal$ True
|
SVar:DBDig:DB$ Dig | DigNum$ 1 | Defined$ Player.IsRemembered | ChangeNum$ All | ChangeValid$ Card.NamedByRememberedPlayer | Reveal$ True
|
||||||
|
SVar:DBCleanup:DB$ Cleanup | ClearNamedCard$ True
|
||||||
AI:RemoveDeck:Random
|
AI:RemoveDeck:Random
|
||||||
Oracle:Flying\nWhenever Conundrum Sphinx attacks, each player chooses a card name. Then each player reveals the top card of their library. If the card a player revealed has the name they chose, that player puts it into their hand. If it doesn't, that player puts it on the bottom of their library.
|
Oracle:Flying\nWhenever Conundrum Sphinx attacks, each player chooses a card name. Then each player reveals the top card of their library. If the card a player revealed has the name they chose, that player puts it into their hand. If it doesn't, that player puts it on the bottom of their library.
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ A:SP$ Attach | ValidTgts$ Player | AILogic$ Curse
|
|||||||
K:ETBReplacement:Other:DBNameCard
|
K:ETBReplacement:Other:DBNameCard
|
||||||
SVar:DBNameCard:DB$ NameCard | Defined$ You | SpellDescription$ As CARDNAME enters the battlefield, choose a card name.
|
SVar:DBNameCard:DB$ NameCard | Defined$ You | SpellDescription$ As CARDNAME enters the battlefield, choose a card name.
|
||||||
S:Mode$ RaiseCost | EffectZone$ Battlefield | ValidCard$ Card.NamedCard | Type$ Spell | Activator$ Player.EnchantedBy | Amount$ 2 | Description$ Spells with the chosen name enchanted player casts cost {2} more to cast.
|
S:Mode$ RaiseCost | EffectZone$ Battlefield | ValidCard$ Card.NamedCard | Type$ Spell | Activator$ Player.EnchantedBy | Amount$ 2 | Description$ Spells with the chosen name enchanted player casts cost {2} more to cast.
|
||||||
T:Mode$ SpellCast | ValidCard$ Card.NamedCard | ValidActivatingPlayer$ Player.EnchantedBy | Execute$ TrigDraw | TriggerZones$ Battlefield | TriggerDescription$ Whenever enchanted player casts a spell with the chosen name, you may sacrifice Curse of Silence. If you do, draw a card.
|
T:Mode$ SpellCast | ValidCard$ Card.NamedCard | ValidActivatingPlayer$ Player.EnchantedBy | Execute$ TrigDraw | TriggerZones$ Battlefield | TriggerDescription$ Whenever enchanted player casts a spell with the chosen name, you may sacrifice CARDNAME. If you do, draw a card.
|
||||||
SVar:TrigDraw:AB$ Draw | Cost$ Sac<1/CARDNAME> | NumCards$ 1
|
SVar:TrigDraw:AB$ Draw | Cost$ Sac<1/CARDNAME> | NumCards$ 1
|
||||||
DeckHas:Ability$Sacrifice
|
DeckHas:Ability$Sacrifice
|
||||||
Oracle:Enchant player\nAs Curse of Silence enters the battlefield, choose a card name.\nSpells with the chosen name enchanted player casts cost {2} more to cast.\nWhenever enchanted player casts a spell with the chosen name, you may sacrifice Curse of Silence. If you do, draw a card.
|
Oracle:Enchant player\nAs Curse of Silence enters the battlefield, choose a card name.\nSpells with the chosen name enchanted player casts cost {2} more to cast.\nWhenever enchanted player casts a spell with the chosen name, you may sacrifice Curse of Silence. If you do, draw a card.
|
||||||
|
|||||||
@@ -4,6 +4,6 @@ Types:Artifact
|
|||||||
A:AB$ NameCard | Cost$ 3 T | Defined$ You | SubAbility$ DBReveal | AILogic$ CursedScroll | SpellDescription$ Choose a card name, then reveal a card at random from your hand. If that card has the chosen name, CARDNAME deals 2 damage to any target.
|
A:AB$ NameCard | Cost$ 3 T | Defined$ You | SubAbility$ DBReveal | AILogic$ CursedScroll | SpellDescription$ Choose a card name, then reveal a card at random from your hand. If that card has the chosen name, CARDNAME deals 2 damage to any target.
|
||||||
SVar:DBReveal:DB$ Reveal | Random$ True | RememberRevealed$ True | Defined$ You | SubAbility$ DBDamage
|
SVar:DBReveal:DB$ Reveal | Random$ True | RememberRevealed$ True | Defined$ You | SubAbility$ DBDamage
|
||||||
SVar:DBDamage:DB$ DealDamage | NumDmg$ 2 | ValidTgts$ Any | ConditionDefined$ Remembered | ConditionPresent$ Card.NamedCard | ConditionCompare$ EQ1 | SubAbility$ DBCleanup
|
SVar:DBDamage:DB$ DealDamage | NumDmg$ 2 | ValidTgts$ Any | ConditionDefined$ Remembered | ConditionPresent$ Card.NamedCard | ConditionCompare$ EQ1 | SubAbility$ DBCleanup
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearNamedCard$ True
|
||||||
SVar:PreferredHandSize:1
|
SVar:PreferredHandSize:1
|
||||||
Oracle:{3}, {T}: Choose a card name, then reveal a card at random from your hand. If that card has the chosen name, Cursed Scroll deals 2 damage to any target.
|
Oracle:{3}, {T}: Choose a card name, then reveal a card at random from your hand. If that card has the chosen name, Cursed Scroll deals 2 damage to any target.
|
||||||
|
|||||||
@@ -3,6 +3,6 @@ ManaCost:U U
|
|||||||
Types:Enchantment
|
Types:Enchantment
|
||||||
K:ETBReplacement:Other:DBNameCard
|
K:ETBReplacement:Other:DBNameCard
|
||||||
SVar:DBNameCard:DB$ NameCard | Defined$ You | SpellDescription$ As CARDNAME enters the battlefield, choose a card name.
|
SVar:DBNameCard:DB$ NameCard | Defined$ You | SpellDescription$ As CARDNAME enters the battlefield, choose a card name.
|
||||||
A:AB$ Counter | Cost$ U | TargetType$ Spell | TgtPrompt$ Select target spell with the chosen name. | ValidTgts$ Card.NamedCard | SpellDescription$ Counter target spell with the chosen name.
|
A:AB$ Counter | Cost$ U | TargetType$ Spell | TgtPrompt$ Select target spell with the chosen name | ValidTgts$ Card.NamedCard | SpellDescription$ Counter target spell with the chosen name.
|
||||||
AI:RemoveDeck:Random
|
AI:RemoveDeck:Random
|
||||||
Oracle:As Declaration of Naught enters the battlefield, choose a card name.\n{U}: Counter target spell with the chosen name.
|
Oracle:As Declaration of Naught enters the battlefield, choose a card name.\n{U}: Counter target spell with the chosen name.
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ S:Mode$ Continuous | Affected$ Sliver | AddAbility$ ABDementiaNameCard | AddSVar
|
|||||||
SVar:ABDementiaNameCard:AB$ NameCard | Cost$ T | Defined$ You | SubAbility$ DBDementiaReveal | SpellDescription$ Choose a card name. Target opponent reveals a card at random from their hand. If that card has the chosen name, that player discards it. Activate only during your turn.
|
SVar:ABDementiaNameCard:AB$ NameCard | Cost$ T | Defined$ You | SubAbility$ DBDementiaReveal | SpellDescription$ Choose a card name. Target opponent reveals a card at random from their hand. If that card has the chosen name, that player discards it. Activate only during your turn.
|
||||||
SVar:DBDementiaReveal:DB$ Reveal | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | Random$ True | PlayerTurn$ True | RememberRevealed$ True | SubAbility$ DBDementiaDiscard
|
SVar:DBDementiaReveal:DB$ Reveal | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | Random$ True | PlayerTurn$ True | RememberRevealed$ True | SubAbility$ DBDementiaDiscard
|
||||||
SVar:DBDementiaDiscard:DB$ Discard | DiscardValid$ Card.NamedCard+IsRemembered | Mode$ TgtChoose | Defined$ Targeted | SubAbility$ DBCleanup
|
SVar:DBDementiaDiscard:DB$ Discard | DiscardValid$ Card.NamedCard+IsRemembered | Mode$ TgtChoose | Defined$ Targeted | SubAbility$ DBCleanup
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearNamedCard$ True
|
||||||
AI:RemoveDeck:All
|
AI:RemoveDeck:All
|
||||||
AI:RemoveDeck:Random
|
AI:RemoveDeck:Random
|
||||||
Oracle:All Slivers have "{T}: Choose a card name. Target opponent reveals a card at random from their hand. If that card has the chosen name, that player discards it. Activate only during your turn."
|
Oracle:All Slivers have "{T}: Choose a card name. Target opponent reveals a card at random from their hand. If that card has the chosen name, that player discards it. Activate only during your turn."
|
||||||
|
|||||||
@@ -5,6 +5,6 @@ A:AB$ NameCard | Cost$ 1 T | Defined$ You | SubAbility$ DBReveal | SorcerySpeed$
|
|||||||
SVar:DBReveal:DB$ PeekAndReveal | RememberRevealed$ True | SubAbility$ DBSac
|
SVar:DBReveal:DB$ PeekAndReveal | RememberRevealed$ True | SubAbility$ DBSac
|
||||||
SVar:DBSac:DB$ Sacrifice | SacValid$ Self | ConditionDefined$ Remembered | ConditionPresent$ Card.NamedCard | ConditionCompare$ GE1 | SubAbility$ DBDraw
|
SVar:DBSac:DB$ Sacrifice | SacValid$ Self | ConditionDefined$ Remembered | ConditionPresent$ Card.NamedCard | ConditionCompare$ GE1 | SubAbility$ DBDraw
|
||||||
SVar:DBDraw:DB$ Draw | NumCards$ 3 | ConditionDefined$ Remembered | ConditionPresent$ Card.NamedCard | ConditionCompare$ GE1 | SubAbility$ DBCleanup
|
SVar:DBDraw:DB$ Draw | NumCards$ 3 | ConditionDefined$ Remembered | ConditionPresent$ Card.NamedCard | ConditionCompare$ GE1 | SubAbility$ DBCleanup
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearNamedCard$ True
|
||||||
AI:RemoveDeck:All
|
AI:RemoveDeck:All
|
||||||
Oracle:{1}, {T}: Choose a card name, then reveal the top card of your library. If that card has the chosen name, sacrifice Diviner's Lockbox and draw three cards. Activate only as a sorcery.
|
Oracle:{1}, {T}: Choose a card name, then reveal the top card of your library. If that card has the chosen name, sacrifice Diviner's Lockbox and draw three cards. Activate only as a sorcery.
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ Types:Creature Human Spellshaper
|
|||||||
PT:1/1
|
PT:1/1
|
||||||
A:AB$ NameCard | Cost$ 1 B T Discard<1/Card> | Defined$ You | SubAbility$ DBExile | SpellDescription$ Choose a card name. Exile the top six cards of your library, then reveal cards from the top of your library until you reveal a card with the chosen name. Put that card into your hand and exile all other cards revealed this way.
|
A:AB$ NameCard | Cost$ 1 B T Discard<1/Card> | Defined$ You | SubAbility$ DBExile | SpellDescription$ Choose a card name. Exile the top six cards of your library, then reveal cards from the top of your library until you reveal a card with the chosen name. Put that card into your hand and exile all other cards revealed this way.
|
||||||
SVar:DBExile:DB$ Dig | Defined$ You | DigNum$ 6 | ChangeNum$ All | DestinationZone$ Exile | SubAbility$ DBDigUntil
|
SVar:DBExile:DB$ Dig | Defined$ You | DigNum$ 6 | ChangeNum$ All | DestinationZone$ Exile | SubAbility$ DBDigUntil
|
||||||
SVar:DBDigUntil:DB$ DigUntil | Valid$ Card.NamedCard | FoundDestination$ Hand | RevealedDestination$ Exile | ValidDescription$ named card
|
SVar:DBDigUntil:DB$ DigUntil | Valid$ Card.NamedCard | FoundDestination$ Hand | RevealedDestination$ Exile | SubAbility$ DBCleanup | ValidDescription$ named card
|
||||||
|
SVar:DBCleanup:DB$ Cleanup | ClearNamedCard$ True
|
||||||
AI:RemoveDeck:All
|
AI:RemoveDeck:All
|
||||||
Oracle:{1}{B}, {T}, Discard a card: Choose a card name. Exile the top six cards of your library, then reveal cards from the top of your library until you reveal a card with the chosen name. Put that card into your hand and exile all other cards revealed this way.
|
Oracle:{1}{B}, {T}, Discard a card: Choose a card name. Exile the top six cards of your library, then reveal cards from the top of your library until you reveal a card with the chosen name. Put that card into your hand and exile all other cards revealed this way.
|
||||||
|
|||||||
@@ -4,11 +4,12 @@ Types:Legendary Planeswalker Estra
|
|||||||
Loyalty:5
|
Loyalty:5
|
||||||
Text:CARDNAME can be your commander.
|
Text:CARDNAME can be your commander.
|
||||||
A:AB$ Token | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | TokenScript$ all_1_1_human_wizard | SpellDescription$ Create a 1/1 Human Wizard creature token that's all colors.
|
A:AB$ Token | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | TokenScript$ all_1_1_human_wizard | SpellDescription$ Create a 1/1 Human Wizard creature token that's all colors.
|
||||||
A:AB$ NameCard | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | Defined$ You | ChooseFromList$ Enlightened Tutor,Mystical Tutor,Booster Tutor,Imperial Recruiter,Worldly Tutor | SubAbility$ DBCast | StackDescription$ SpellDescription | SpellDescription$ Choose a card name from among Enlightened Tutor, Mystical Tutor, Booster Tutor, Imperial Recruiter, and Worldy Tutor. Create a copy of the card with the chosen name. You may cast the copy without paying its mana cost.
|
A:AB$ NameCard | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | Defined$ You | ChooseFromList$ Enlightened Tutor,Mystical Tutor,Booster Tutor,Imperial Recruiter,Worldly Tutor | SubAbility$ DBCast | StackDescription$ SpellDescription | SpellDescription$ Choose a card name from among Enlightened Tutor, Mystical Tutor, Booster Tutor, Imperial Recruiter, and Worldly Tutor. Create a copy of the card with the chosen name. You may cast the copy without paying its mana cost.
|
||||||
SVar:DBCast:DB$ Play | WithoutManaCost$ True | CopyFromChosenName$ True | Optional$ True | StackDescription$ None
|
SVar:DBCast:DB$ Play | WithoutManaCost$ True | CopyFromChosenName$ True | Optional$ True | SubAbility$ DBCleanup | StackDescription$ None
|
||||||
|
SVar:DBCleanup:DB$ Cleanup | ClearNamedCard$ True
|
||||||
A:AB$ Effect | Cost$ SubCounter<8/LOYALTY> | Planeswalker$ True | Ultimate$ True | Name$ Ersta, Friend to All | Triggers$ EffPhase | Duration$ Permanent | SpellDescription$ You get an emblem with "At the beginning of your upkeep, if you control twenty or more Wizards, you win the game."
|
A:AB$ Effect | Cost$ SubCounter<8/LOYALTY> | Planeswalker$ True | Ultimate$ True | Name$ Ersta, Friend to All | Triggers$ EffPhase | Duration$ Permanent | SpellDescription$ You get an emblem with "At the beginning of your upkeep, if you control twenty or more Wizards, you win the game."
|
||||||
SVar:EffPhase:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigWinGame | IsPresent$ Wizard.YouCtrl | PresentCompare$ GE20 | TriggerDescription$ At the beginning of your upkeep, if you control twenty or more Wizards, you win the game.
|
SVar:EffPhase:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigWinGame | IsPresent$ Wizard.YouCtrl | PresentCompare$ GE20 | TriggerDescription$ At the beginning of your upkeep, if you control twenty or more Wizards, you win the game.
|
||||||
SVar:TrigWinGame:DB$ WinsGame | Defined$ You
|
SVar:TrigWinGame:DB$ WinsGame | Defined$ You
|
||||||
DeckHas:Ability$Token & Type$Human|Advisor|Wizard
|
DeckHas:Ability$Token & Type$Human|Advisor|Wizard
|
||||||
DeckNeeds:Type$Wizard
|
DeckNeeds:Type$Wizard
|
||||||
Oracle:[+1]: Create a 1/1 Human Wizard creature token that's all colors.\n[−3]: Choose a card name from among Enlightened Tutor, Mystical Tutor, Booster Tutor, Imperial Recruiter, and Worldy Tutor. Create a copy of the card with the chosen name. You may cast the copy without paying its mana cost.\n[−8]: You get an emblem with "At the beginning of your upkeep, if you control twenty or more Wizards, you win the game."\nErsta, Friend to All can be your commander.
|
Oracle:[+1]: Create a 1/1 Human Wizard creature token that's all colors.\n[−3]: Choose a card name from among Enlightened Tutor, Mystical Tutor, Booster Tutor, Imperial Recruiter, and Worldly Tutor. Create a copy of the card with the chosen name. You may cast the copy without paying its mana cost.\n[−8]: You get an emblem with "At the beginning of your upkeep, if you control twenty or more Wizards, you win the game."\nErsta, Friend to All can be your commander.
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
Name:Foreshadow
|
Name:Foreshadow
|
||||||
ManaCost:1 U
|
ManaCost:1 U
|
||||||
Types:Instant
|
Types:Instant
|
||||||
A:SP$ NameCard | Cost$ 1 U | Defined$ You | SubAbility$ DBMill | SpellDescription$ Choose a card name, then target opponent puts the top card of their library into their graveyard. If a card with the chosen name was milled this way, you draw a card. Draw a card at the beginning of the next turn's upkeep.
|
A:SP$ NameCard | SubAbility$ DBMill | SpellDescription$ Choose a card name, then target opponent mills a card. If a card with the chosen name was milled this way, you draw a card. Draw a card at the beginning of the next turn's upkeep.
|
||||||
SVar:DBMill:DB$ Mill | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | NumCards$ 1 | RememberMilled$ True | SubAbility$ DBDraw
|
SVar:DBMill:DB$ Mill | ValidTgts$ Opponent | NumCards$ 1 | RememberMilled$ True | SubAbility$ DBDraw
|
||||||
SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ X | SubAbility$ DelTrigSlowtrip
|
SVar:DBDraw:DB$ Draw | ConditionDefined$ Remembered | ConditionPresent$ Card.NamedCard | SubAbility$ DelTrigSlowtrip
|
||||||
SVar:DelTrigSlowtrip:DB$ DelayedTrigger | NextTurn$ True | Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player | Execute$ DrawSlowtrip | TriggerDescription$ Draw a card.
|
SVar:DelTrigSlowtrip:DB$ DelayedTrigger | NextTurn$ True | Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player | Execute$ DrawSlowtrip | SubAbility$ DBCleanup | TriggerDescription$ Draw a card.
|
||||||
SVar:DrawSlowtrip:DB$ Draw | NumCards$ 1 | Defined$ You
|
SVar:DrawSlowtrip:DB$ Draw
|
||||||
SVar:X:Remembered$Valid Card.NamedCard
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearNamedCard$ True
|
||||||
AI:RemoveDeck:All
|
AI:RemoveDeck:All
|
||||||
|
DeckHas:Ability$Mill
|
||||||
Oracle:Choose a card name, then target opponent mills a card. If a card with the chosen name was milled this way, you draw a card.\nDraw a card at the beginning of the next turn's upkeep.
|
Oracle:Choose a card name, then target opponent mills a card. If a card with the chosen name was milled this way, you draw a card.\nDraw a card at the beginning of the next turn's upkeep.
|
||||||
|
|||||||
@@ -4,8 +4,9 @@ Types:Enchantment Saga
|
|||||||
K:Saga:4:DBScry,DBNameCard,DBEffect,DBLook
|
K:Saga:4:DBScry,DBNameCard,DBEffect,DBLook
|
||||||
SVar:DBScry:DB$ Scry | ScryNum$ 2 | SpellDescription$ Scry 2.
|
SVar:DBScry:DB$ Scry | ScryNum$ 2 | SpellDescription$ Scry 2.
|
||||||
SVar:DBNameCard:DB$ NameCard | SpellDescription$ Choose a card name.
|
SVar:DBNameCard:DB$ NameCard | SpellDescription$ Choose a card name.
|
||||||
SVar:DBEffect:DB$ Effect | Triggers$ NamedCardCast | SpellDescription$ When you cast a spell with the chosen name for the first time this turn, draw two cards.
|
SVar:DBEffect:DB$ Effect | Triggers$ NamedCardCast | SubAbility$ DBCleanup | SpellDescription$ When you cast a spell with the chosen name for the first time this turn, draw two cards.
|
||||||
SVar:NamedCardCast:Mode$ SpellCast | ValidCard$ Card.NamedCard | ValidActivatingPlayer$ You | OneOff$ True | TriggerZones$ Command | Execute$ TrigDraw | TriggerDescription$ When you cast a spell with the chosen name for the first time this turn, draw two cards.
|
SVar:NamedCardCast:Mode$ SpellCast | ValidCard$ Card.NamedCard | ValidActivatingPlayer$ You | OneOff$ True | TriggerZones$ Command | Execute$ TrigDraw | TriggerDescription$ When you cast a spell with the chosen name for the first time this turn, draw two cards.
|
||||||
SVar:TrigDraw:DB$ Draw | NumCards$ 2
|
SVar:TrigDraw:DB$ Draw | NumCards$ 2
|
||||||
|
SVar:DBCleanup:DB$ Cleanup | ClearNamedCard$ True
|
||||||
SVar:DBLook:DB$ PeekAndReveal | Defined$ Player | NoReveal$ True | SpellDescription$ Look at the top card of each player's library.
|
SVar:DBLook:DB$ PeekAndReveal | Defined$ Player | NoReveal$ True | SpellDescription$ Look at the top card of each player's library.
|
||||||
Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after IV.)\nI — Scry 2.\nII — Choose a card name.\nIII — When you cast a spell with the chosen name for the first time this turn, draw two cards.\nIV — Look at the top card of each player's library.
|
Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after IV.)\nI — Scry 2.\nII — Choose a card name.\nIII — When you cast a spell with the chosen name for the first time this turn, draw two cards.\nIV — Look at the top card of each player's library.
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ PT:3/3
|
|||||||
A:AB$ NameCard | Cost$ X T | Defined$ You | SubAbility$ DBReveal | PlayerTurn$ True | SpellDescription$ Choose a card name. Target opponent reveals X cards at random from their hand. Then that player discards all cards with that name revealed this way. Activate only during your turn.
|
A:AB$ NameCard | Cost$ X T | Defined$ You | SubAbility$ DBReveal | PlayerTurn$ True | SpellDescription$ Choose a card name. Target opponent reveals X cards at random from their hand. Then that player discards all cards with that name revealed this way. Activate only during your turn.
|
||||||
SVar:DBReveal:DB$ Reveal | ValidTgts$ Opponent | Random$ True | NumCards$ X | RememberRevealed$ True | SubAbility$ DBDiscard
|
SVar:DBReveal:DB$ Reveal | ValidTgts$ Opponent | Random$ True | NumCards$ X | RememberRevealed$ True | SubAbility$ DBDiscard
|
||||||
SVar:DBDiscard:DB$ Discard | DefinedCards$ ValidHand Card.IsRemembered+NamedCard | Defined$ Targeted | Mode$ Defined | SubAbility$ DBCleanup
|
SVar:DBDiscard:DB$ Discard | DefinedCards$ ValidHand Card.IsRemembered+NamedCard | Defined$ Targeted | Mode$ Defined | SubAbility$ DBCleanup
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearNamedCard$ True
|
||||||
SVar:X:Count$xPaid
|
SVar:X:Count$xPaid
|
||||||
AI:RemoveDeck:All
|
AI:RemoveDeck:All
|
||||||
DeckHas:Ability$Discard
|
DeckHas:Ability$Discard
|
||||||
|
|||||||
@@ -2,14 +2,10 @@ Name:Null Chamber
|
|||||||
ManaCost:3 W
|
ManaCost:3 W
|
||||||
Types:World Enchantment
|
Types:World Enchantment
|
||||||
K:ETBReplacement:Other:DBNameCard
|
K:ETBReplacement:Other:DBNameCard
|
||||||
SVar:DBNameCard:DB$ NameCard | Defined$ You | ValidCards$ Card.nonBasic | ValidDesc$ card other than a basic land | SubAbility$ RememberYou | SpellDescription$ As CARDNAME enters the battlefield, you and an opponent each choose a card name other than a basic land card name.
|
SVar:DBNameCard:DB$ NameCard | ValidCards$ Card.nonBasic | ValidDesc$ card other than a basic land | SubAbility$ ChooseP | SpellDescription$ As CARDNAME enters the battlefield, you and an opponent each choose a card name other than a basic land card name.
|
||||||
SVar:RememberYou:DB$ Pump | RememberObjects$ ValidAll Card.NamedCard | SubAbility$ ChooseP
|
SVar:ChooseP:DB$ ChoosePlayer | Choices$ Opponent | SubAbility$ NameOpp
|
||||||
SVar:ChooseP:DB$ ChoosePlayer | Defined$ You | Choices$ Opponent | SubAbility$ NameOpp
|
SVar:NameOpp:DB$ NameCard | Defined$ ChosenPlayer | ValidCards$ Card.nonBasic | ValidDesc$ a card name other than a basic land card name
|
||||||
SVar:NameOpp:DB$ NameCard | Defined$ ChosenPlayer | ValidCards$ Card.nonBasic | ValidDesc$ a card name other than a basic land card name | SubAbility$ RememberOpp
|
S:Mode$ CantBeCast | ValidCard$ Card.NamedCard | Description$ Spells with the chosen names can't be cast and lands with the chosen names can't be played.
|
||||||
SVar:RememberOpp:DB$ Pump | RememberObjects$ ValidAll Card.NamedCard
|
S:Mode$ CantPlayLand | ValidCard$ Land.NamedCard
|
||||||
S:Mode$ CantBeCast | ValidCard$ Card.IsRemembered | Description$ Spells with the chosen names can't be cast and lands with the chosen names can't be played.
|
|
||||||
S:Mode$ CantPlayLand | ValidCard$ Land.IsRemembered
|
|
||||||
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Static$ True | ValidCard$ Card.Self | Execute$ DBCleanup
|
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
|
||||||
AI:RemoveDeck:Random
|
AI:RemoveDeck:Random
|
||||||
Oracle:As Null Chamber enters the battlefield, you and an opponent each choose a card name other than a basic land card name.\nSpells with the chosen names can't be cast and lands with the chosen names can't be played.
|
Oracle:As Null Chamber enters the battlefield, you and an opponent each choose a card name other than a basic land card name.\nSpells with the chosen names can't be cast and lands with the chosen names can't be played.
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ Name:Petra Sphinx
|
|||||||
ManaCost:2 W W W
|
ManaCost:2 W W W
|
||||||
Types:Creature Sphinx
|
Types:Creature Sphinx
|
||||||
PT:3/4
|
PT:3/4
|
||||||
A:AB$ NameCard | Cost$ T | ValidTgts$ Player | TgtPrompt$ Select target player | SubAbility$ DBDig | AILogic$ MostProminentInComputerDeck | SpellDescription$ Target player chooses a card name, then reveals the top card of their library. If that card has the chosen name, that player puts it into their hand. If it doesn't, the player puts it into their graveyard.
|
A:AB$ NameCard | Cost$ T | ValidTgts$ Player | SubAbility$ DBDig | AILogic$ MostProminentInComputerDeck | SpellDescription$ Target player chooses a card name, then reveals the top card of their library. If that card has the chosen name, that player puts it into their hand. If it doesn't, the player puts it into their graveyard.
|
||||||
SVar:DBDig:DB$ Dig | DigNum$ 1 | Defined$ Targeted | ChangeNum$ All | ChangeValid$ Card.NamedCard | DestinationZone2$ Graveyard | Reveal$ True
|
SVar:DBDig:DB$ Dig | DigNum$ 1 | Defined$ Targeted | ChangeNum$ All | ChangeValid$ Card.NamedCard | DestinationZone2$ Graveyard | Reveal$ True | SubAbility$ DBCleanup
|
||||||
|
SVar:DBCleanup:DB$ Cleanup | ClearNamedCard$ True
|
||||||
|
DeckHints:Ability$Graveyard
|
||||||
Oracle:{T}: Target player chooses a card name, then reveals the top card of their library. If that card has the chosen name, that player puts it into their hand. If it doesn't, the player puts it into their graveyard.
|
Oracle:{T}: Target player chooses a card name, then reveals the top card of their library. If that card has the chosen name, that player puts it into their hand. If it doesn't, the player puts it into their graveyard.
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
Name:Predict
|
Name:Predict
|
||||||
ManaCost:1 U
|
ManaCost:1 U
|
||||||
Types:Instant
|
Types:Instant
|
||||||
A:SP$ NameCard | Cost$ 1 U | Defined$ You | SubAbility$ DBMill | SpellDescription$ Choose a card name, then target player mills a card. If a card with the chosen name was milled this way, you draw two cards. Otherwise, you draw a card.
|
A:SP$ NameCard | Defined$ You | SubAbility$ DBMill | SpellDescription$ Choose a card name, then target player mills a card. If a card with the chosen name was milled this way, you draw two cards. Otherwise, you draw a card.
|
||||||
SVar:DBMill:DB$ Mill | ValidTgts$ Player | TgtPrompt$ Select target player | NumCards$ 1 | RememberMilled$ True | SubAbility$ DBDraw
|
SVar:DBMill:DB$ Mill | ValidTgts$ Player | NumCards$ 1 | RememberMilled$ True | SubAbility$ DBDraw
|
||||||
SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ X | SubAbility$ DBDraw2
|
SVar:DBDraw:DB$ Draw | NumCards$ X
|
||||||
SVar:DBDraw2:DB$ Draw | Defined$ You | NumCards$ 1
|
SVar:X:Count$Compare Y GE1.2.1
|
||||||
SVar:X:Remembered$Valid Card.NamedCard
|
SVar:Y:Remembered$Valid Card.NamedCard
|
||||||
AI:RemoveDeck:All
|
AI:RemoveDeck:All
|
||||||
Oracle:Choose a card name, then target player mills a card. If a card with the chosen name was milled this way, you draw two cards. Otherwise, you draw a card.
|
Oracle:Choose a card name, then target player mills a card. If a card with the chosen name was milled this way, you draw two cards. Otherwise, you draw a card.
|
||||||
|
|||||||
@@ -9,5 +9,5 @@ SVar:DBName:DB$ NameCard | Defined$ TriggeredDefendingPlayer | SubAbility$ DBCha
|
|||||||
SVar:DBChangeZone:DB$ ChangeZone | Defined$ Remembered | Origin$ Library | Destination$ Battlefield | GainControl$ True | ConditionDefined$ Remembered | Shuffle$ False | ConditionPresent$ Card.NamedCard | ConditionCompare$ EQ0 | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ1 | Optional$ True | OptionalDecider$ You | SubAbility$ DBShuffle
|
SVar:DBChangeZone:DB$ ChangeZone | Defined$ Remembered | Origin$ Library | Destination$ Battlefield | GainControl$ True | ConditionDefined$ Remembered | Shuffle$ False | ConditionPresent$ Card.NamedCard | ConditionCompare$ EQ0 | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ1 | Optional$ True | OptionalDecider$ You | SubAbility$ DBShuffle
|
||||||
SVar:DBShuffle:DB$ Shuffle | Defined$ TriggeredDefendingPlayer | SubAbility$ DBCleanup
|
SVar:DBShuffle:DB$ Shuffle | Defined$ TriggeredDefendingPlayer | SubAbility$ DBCleanup
|
||||||
SVar:X:Count$ValidLibrary Creature.IsRemembered
|
SVar:X:Count$ValidLibrary Creature.IsRemembered
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearNamedCard$ True
|
||||||
Oracle:Flying\nWhenever Sphinx Ambassador deals combat damage to a player, search that player's library for a card, then that player chooses a card name. If you searched for a creature card that doesn't have that name, you may put it onto the battlefield under your control. Then that player shuffles.
|
Oracle:Flying\nWhenever Sphinx Ambassador deals combat damage to a player, search that player's library for a card, then that player chooses a card name. If you searched for a creature card that doesn't have that name, you may put it onto the battlefield under your control. Then that player shuffles.
|
||||||
|
|||||||
@@ -3,7 +3,5 @@ ManaCost:no cost
|
|||||||
Types:Conspiracy
|
Types:Conspiracy
|
||||||
K:Double agenda
|
K:Double agenda
|
||||||
T:Mode$ SpellCast | ValidCard$ Creature.NamedCard | ValidActivatingPlayer$ You | Execute$ TrigSearch | OptionalDecider$ You | TriggerDescription$ Whenever you cast a creature spell with one of the chosen names, you may search your library for a creature card with the other chosen name, reveal it, put it into your hand, then shuffle.
|
T:Mode$ SpellCast | ValidCard$ Creature.NamedCard | ValidActivatingPlayer$ You | Execute$ TrigSearch | OptionalDecider$ You | TriggerDescription$ Whenever you cast a creature spell with one of the chosen names, you may search your library for a creature card with the other chosen name, reveal it, put it into your hand, then shuffle.
|
||||||
T:Mode$ SpellCast | ValidCard$ Creature.NamedCard2 | ValidActivatingPlayer$ You | Execute$ TrigSearch2 | OptionalDecider$ You | Secondary$ True | TriggerDescription$ Whenever you cast a creature spell with one of the chosen names, you may search your library for a creature card with the other chosen name, reveal it, put it into your hand, then shuffle.
|
SVar:TrigSearch:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Creature.NamedCard+DifferentNameThanTriggeredSpellAbility
|
||||||
SVar:TrigSearch:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Creature.NamedCard2
|
|
||||||
SVar:TrigSearch2:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Creature.NamedCard
|
|
||||||
Oracle:Double agenda (Start the game with this conspiracy face down in the command zone and secretly choose two different card names. You may turn this conspiracy face up any time and reveal those names.)\nWhenever you cast a creature spell with one of the chosen names, you may search your library for a creature card with the other chosen name, reveal it, put it into your hand, then shuffle.
|
Oracle:Double agenda (Start the game with this conspiracy face down in the command zone and secretly choose two different card names. You may turn this conspiracy face up any time and reveal those names.)\nWhenever you cast a creature spell with one of the chosen names, you may search your library for a creature card with the other chosen name, reveal it, put it into your hand, then shuffle.
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ Loyalty:5
|
|||||||
S:Mode$ CantDiscard | ValidPlayer$ You | ValidCause$ SpellAbility.OppCtrl | ForCost$ False | Description$ Spells and abilities your opponents control can't cause you to discard cards or sacrifice permanents.
|
S:Mode$ CantDiscard | ValidPlayer$ You | ValidCause$ SpellAbility.OppCtrl | ForCost$ False | Description$ Spells and abilities your opponents control can't cause you to discard cards or sacrifice permanents.
|
||||||
S:Mode$ CantSacrifice | ValidCard$ Card.YouCtrl | ValidCause$ SpellAbility.OppCtrl | ForCost$ False | Secondary$ True | Description$ Spells and abilities your opponents control can't cause you to discard cards or sacrifice permanents.
|
S:Mode$ CantSacrifice | ValidCard$ Card.YouCtrl | ValidCause$ SpellAbility.OppCtrl | ForCost$ False | Secondary$ True | Description$ Spells and abilities your opponents control can't cause you to discard cards or sacrifice permanents.
|
||||||
A:AB$ NameCard | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | Defined$ You | ValidCards$ Card.nonLand | SubAbility$ DBDig | StackDescription$ SpellDescription | SpellDescription$ Choose a nonland card name, then reveal the top four cards of your library. Put all cards with the chosen name from among them into your hand and the rest into your graveyard.
|
A:AB$ NameCard | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | Defined$ You | ValidCards$ Card.nonLand | SubAbility$ DBDig | StackDescription$ SpellDescription | SpellDescription$ Choose a nonland card name, then reveal the top four cards of your library. Put all cards with the chosen name from among them into your hand and the rest into your graveyard.
|
||||||
SVar:DBDig:DB$ Dig | DigNum$ 4 | Reveal$ True | ChangeNum$ All | ChangeValid$ Card.NamedCard | DestinationZone2$ Graveyard
|
SVar:DBDig:DB$ Dig | DigNum$ 4 | Reveal$ True | ChangeNum$ All | ChangeValid$ Card.NamedCard | DestinationZone2$ Graveyard | SubAbility$ DBCleanup
|
||||||
|
SVar:DBCleanup:DB$ Cleanup | ClearNamedCard$ True
|
||||||
A:AB$ ChangeZone | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | TgtPrompt$ Choose target card in your graveyard | ValidTgts$ Card.YouCtrl | Origin$ Graveyard | Destination$ Hand | SpellDescription$ Return target card from your graveyard to your hand.
|
A:AB$ ChangeZone | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | TgtPrompt$ Choose target card in your graveyard | ValidTgts$ Card.YouCtrl | Origin$ Graveyard | Destination$ Hand | SpellDescription$ Return target card from your graveyard to your hand.
|
||||||
AI:RemoveDeck:All
|
AI:RemoveDeck:All
|
||||||
DeckHas:Ability$Graveyard
|
DeckHas:Ability$Graveyard
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ A:AB$ NameCard | Cost$ 2 T Exile<1/CARDNAME> | Defined$ You | SubAbility$ ExileY
|
|||||||
SVar:ExileYard:DB$ ChangeZone | ValidTgts$ Opponent | ChangeType$ Card.NamedCard | Origin$ Graveyard | DefinedPlayer$ Targeted | Chooser$ You | Destination$ Exile | ChangeNum$ Y | Hidden$ True | RememberChanged$ True | SubAbility$ ExileHand | StackDescription$ Search {p:Targeted}'s graveyard, hand, and library for up to four cards with that name and exile them.
|
SVar:ExileYard:DB$ ChangeZone | ValidTgts$ Opponent | ChangeType$ Card.NamedCard | Origin$ Graveyard | DefinedPlayer$ Targeted | Chooser$ You | Destination$ Exile | ChangeNum$ Y | Hidden$ True | RememberChanged$ True | SubAbility$ ExileHand | StackDescription$ Search {p:Targeted}'s graveyard, hand, and library for up to four cards with that name and exile them.
|
||||||
SVar:ExileHand:DB$ ChangeZone | Origin$ Hand | Destination$ Exile | DefinedPlayer$ Targeted | ChangeType$ Card.NamedCard | ChangeNum$ Y | Chooser$ You | SubAbility$ ExileLib | StackDescription$ None | RememberChanged$ True | Imprint$ True
|
SVar:ExileHand:DB$ ChangeZone | Origin$ Hand | Destination$ Exile | DefinedPlayer$ Targeted | ChangeType$ Card.NamedCard | ChangeNum$ Y | Chooser$ You | SubAbility$ ExileLib | StackDescription$ None | RememberChanged$ True | Imprint$ True
|
||||||
SVar:ExileLib:DB$ ChangeZone | Origin$ Library | Destination$ Exile | DefinedPlayer$ Targeted | ChangeType$ Card.NamedCard | ChangeNum$ Y | Chooser$ You | Shuffle$ True | StackDescription$ None | RememberChanged$ True | SubAbility$ DBDraw
|
SVar:ExileLib:DB$ ChangeZone | Origin$ Library | Destination$ Exile | DefinedPlayer$ Targeted | ChangeType$ Card.NamedCard | ChangeNum$ Y | Chooser$ You | Shuffle$ True | StackDescription$ None | RememberChanged$ True | SubAbility$ DBDraw
|
||||||
SVar:DBDraw:DB$ Draw | NumCards$ Z | Defined$ Targeted | SubAbility$ DBCleanup | StackDescription$ {p:Targeted} draw a card for each card exiled from their hand this way
|
SVar:DBDraw:DB$ Draw | NumCards$ Z | Defined$ Targeted | SubAbility$ DBCleanup | StackDescription$ {p:Targeted} shuffles, then draws a card for each card exiled from their hand this way.
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True | ClearNamedCard$ True
|
||||||
SVar:X:Remembered$Amount
|
SVar:X:Remembered$Amount
|
||||||
SVar:Y:SVar$X/NMinus.4
|
SVar:Y:SVar$X/NMinus.4
|
||||||
SVar:Z:Imprinted$Amount
|
SVar:Z:Imprinted$Amount
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
Name:Thought Hemorrhage
|
Name:Thought Hemorrhage
|
||||||
ManaCost:2 B R
|
ManaCost:2 B R
|
||||||
Types:Sorcery
|
Types:Sorcery
|
||||||
A:SP$ NameCard | Cost$ 2 B R | ValidCards$ Card.nonLand | SubAbility$ DBReveal | ValidDesc$ nonland | SpellDescription$ Choose a nonland card name. Target player reveals their hand. Thought Hemorrhage deals 3 damage to that player for each card with the chosen name revealed this way. Search that player's graveyard, hand, and library for all cards with that name and exile them. Then that player shuffles their library.
|
A:SP$ NameCard | Cost$ 2 B R | ValidCards$ Card.nonLand | SubAbility$ DBReveal | ValidDesc$ nonland | SpellDescription$ Choose a nonland card name. Target player reveals their hand. CARDNAME deals 3 damage to that player for each card with the chosen name revealed this way. Search that player's graveyard, hand, and library for all cards with that name and exile them. Then that player shuffles their library.
|
||||||
SVar:DBReveal:DB$ RevealHand | RememberRevealed$ True | ValidTgts$ Player | TgtPrompt$ Select target player | SubAbility$ DBDamage
|
SVar:DBReveal:DB$ RevealHand | RememberRevealed$ True | ValidTgts$ Player | TgtPrompt$ Select target player | SubAbility$ DBDamage
|
||||||
SVar:DBDamage:DB$ DealDamage | Defined$ Targeted | NumDmg$ X | SubAbility$ ExileYard
|
SVar:DBDamage:DB$ DealDamage | Defined$ Targeted | NumDmg$ X | SubAbility$ ExileYard
|
||||||
SVar:ExileYard:DB$ ChangeZoneAll | Origin$ Graveyard | Destination$ Exile | Defined$ Targeted | ChangeType$ Card.NamedCard | SubAbility$ ExileHand | StackDescription$ None
|
SVar:ExileYard:DB$ ChangeZoneAll | Origin$ Graveyard | Destination$ Exile | Defined$ Targeted | ChangeType$ Card.NamedCard | SubAbility$ ExileHand | StackDescription$ None
|
||||||
@@ -9,7 +9,7 @@ SVar:ExileHand:DB$ ChangeZone | Origin$ Hand | Destination$ Exile | DefinedPlaye
|
|||||||
SVar:ExileLib:DB$ ChangeZone | Origin$ Library | Destination$ Exile | DefinedPlayer$ Targeted | ChangeType$ Card.NamedCard | ChangeNum$ NumInLib | Chooser$ You | Search$ True | Shuffle$ True | SubAbility$ DBCleanup | StackDescription$ None
|
SVar:ExileLib:DB$ ChangeZone | Origin$ Library | Destination$ Exile | DefinedPlayer$ Targeted | ChangeType$ Card.NamedCard | ChangeNum$ NumInLib | Chooser$ You | Search$ True | Shuffle$ True | SubAbility$ DBCleanup | StackDescription$ None
|
||||||
SVar:NumInLib:TargetedPlayer$CardsInLibrary
|
SVar:NumInLib:TargetedPlayer$CardsInLibrary
|
||||||
SVar:NumInHand:TargetedPlayer$CardsInHand
|
SVar:NumInHand:TargetedPlayer$CardsInHand
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearNamedCard$ True
|
||||||
SVar:X:Remembered$Valid Card.NamedCard/Times.3
|
SVar:X:Remembered$Valid Card.NamedCard/Times.3
|
||||||
AI:RemoveDeck:All
|
AI:RemoveDeck:All
|
||||||
Oracle:Choose a nonland card name. Target player reveals their hand. Thought Hemorrhage deals 3 damage to that player for each card with the chosen name revealed this way. Search that player's graveyard, hand, and library for all cards with that name and exile them. Then that player shuffles.
|
Oracle:Choose a nonland card name. Target player reveals their hand. Thought Hemorrhage deals 3 damage to that player for each card with the chosen name revealed this way. Search that player's graveyard, hand, and library for all cards with that name and exile them. Then that player shuffles.
|
||||||
|
|||||||
7
forge-gui/res/cardsfolder/upcoming/day_of_the_moon.txt
Normal file
7
forge-gui/res/cardsfolder/upcoming/day_of_the_moon.txt
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
Name:Day of the Moon
|
||||||
|
ManaCost:2 R
|
||||||
|
Types:Enchantment Saga
|
||||||
|
K:Saga:3:DBChoose,DBChoose,DBChoose
|
||||||
|
SVar:DBChoose:DB$ NameCard | ValidCards$ Creature | ValidDesc$ creature | SubAbility$ DBGoad | SpellDescription$ Choose a creature card name, then goad all creatures with a name chosen for CARDNAME. (Until your next turn, they attack each combat if able and attack a player other than you if able.)
|
||||||
|
SVar:DBGoad:DB$ Goad | Defined$ Valid Creature.NamedCard
|
||||||
|
Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI, II, III — Choose a creature card name, then goad all creatures with a name chosen for Day of the Moon. (Until your next turn, they attack each combat if able and attack a player other than you if able.)
|
||||||
@@ -4,6 +4,6 @@ Types:Artifact
|
|||||||
A:AB$ NameCard | Cost$ 3 T | ValidTgts$ Player | TgtPrompt$ Select target player | SubAbility$ DBDig | AILogic$ MostProminentInComputerDeckNonToken | SpellDescription$ Target player chooses a card name, then reveals the top card of their library. If that card has the chosen name, the player puts it into their hand. Otherwise, the player puts it into their graveyard and CARDNAME deals 2 damage to them.
|
A:AB$ NameCard | Cost$ 3 T | ValidTgts$ Player | TgtPrompt$ Select target player | SubAbility$ DBDig | AILogic$ MostProminentInComputerDeckNonToken | SpellDescription$ Target player chooses a card name, then reveals the top card of their library. If that card has the chosen name, the player puts it into their hand. Otherwise, the player puts it into their graveyard and CARDNAME deals 2 damage to them.
|
||||||
SVar:DBDig:DB$ Dig | DigNum$ 1 | Defined$ Targeted | ChangeNum$ All | ChangeValid$ Card.NamedCard | DestinationZone2$ Graveyard | Reveal$ True | RememberChanged$ True | SubAbility$ DBDamage
|
SVar:DBDig:DB$ Dig | DigNum$ 1 | Defined$ Targeted | ChangeNum$ All | ChangeValid$ Card.NamedCard | DestinationZone2$ Graveyard | Reveal$ True | RememberChanged$ True | SubAbility$ DBDamage
|
||||||
SVar:DBDamage:DB$ DealDamage | NumDmg$ 2 | Defined$ Targeted | ConditionDefined$ Remembered | ConditionPresent$ Card.NamedCard | ConditionCompare$ EQ0 | SubAbility$ DBCleanup
|
SVar:DBDamage:DB$ DealDamage | NumDmg$ 2 | Defined$ Targeted | ConditionDefined$ Remembered | ConditionPresent$ Card.NamedCard | ConditionCompare$ EQ0 | SubAbility$ DBCleanup
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearNamedCard$ True
|
||||||
AI:RemoveDeck:All
|
AI:RemoveDeck:All
|
||||||
Oracle:{3}, {T}: Target player chooses a card name, then reveals the top card of their library. If that card has the chosen name, that player puts it into their hand. Otherwise, they put it into their graveyard and Vexing Arcanix deals 2 damage to them.
|
Oracle:{3}, {T}: Target player chooses a card name, then reveals the top card of their library. If that card has the chosen name, that player puts it into their hand. Otherwise, they put it into their graveyard and Vexing Arcanix deals 2 damage to them.
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ ManaCost:G U
|
|||||||
Types:Creature Human Druid
|
Types:Creature Human Druid
|
||||||
PT:1/1
|
PT:1/1
|
||||||
A:AB$ NameCard | Cost$ T | Defined$ You | ValidCards$ Card.Creature | ValidDesc$ creature | SubAbility$ DBDig | SpellDescription$ Choose a creature card name. Reveal the top four cards of your library and put all of them with that name into your hand. Put the rest into your graveyard.
|
A:AB$ NameCard | Cost$ T | Defined$ You | ValidCards$ Card.Creature | ValidDesc$ creature | SubAbility$ DBDig | SpellDescription$ Choose a creature card name. Reveal the top four cards of your library and put all of them with that name into your hand. Put the rest into your graveyard.
|
||||||
SVar:DBDig:DB$ Dig | DigNum$ 4 | Reveal$ True | ChangeNum$ All | ChangeValid$ Card.NamedCard | DestinationZone2$ Graveyard
|
SVar:DBDig:DB$ Dig | DigNum$ 4 | Reveal$ True | ChangeNum$ All | ChangeValid$ Card.NamedCard | DestinationZone2$ Graveyard | SubAbility$ DBCleanup
|
||||||
|
SVar:DBCleanup:DB$ Cleanup | ClearNamedCard$ True
|
||||||
AI:RemoveDeck:All
|
AI:RemoveDeck:All
|
||||||
Oracle:{T}: Choose a creature card name. Reveal the top four cards of your library and put all of them with that name into your hand. Put the rest into your graveyard.
|
Oracle:{T}: Choose a creature card name. Reveal the top four cards of your library and put all of them with that name into your hand. Put the rest into your graveyard.
|
||||||
|
|||||||
@@ -501,18 +501,15 @@ public class CardDetailUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// named card
|
// named card
|
||||||
if (!card.getNamedCard().isEmpty()) {
|
if (card.getNamedCard() != null && !card.getNamedCard().isEmpty()) {
|
||||||
if (area.length() != 0) {
|
if (area.length() != 0) {
|
||||||
area.append("\n");
|
area.append("\n");
|
||||||
}
|
}
|
||||||
area.append("(named card: ");
|
area.append("(named card").append(card.getNamedCard().size() > 1 ? "s" : "").append(": ");
|
||||||
if (card.isFaceDown() && state.getState() == CardStateName.FaceDown) {
|
if (card.isFaceDown() && state.getState() == CardStateName.FaceDown) {
|
||||||
area.append("Hidden");
|
area.append("Hidden");
|
||||||
} else {
|
} else {
|
||||||
area.append(card.getNamedCard());
|
area.append(StringUtils.join(card.getNamedCard(), ", "));
|
||||||
if (!card.getNamedCard2().isEmpty()) {
|
|
||||||
area.append(", ").append(card.getNamedCard2());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
area.append(")");
|
area.append(")");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user