mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-14 01:38:13 +00:00
Merge remote-tracking branch 'upstream/master' into deck-importer-decks-file-format
This commit is contained in:
@@ -149,6 +149,19 @@ public final class CardDb implements ICardDatabase, IDeckGenPool {
|
||||
return !StringUtils.isNumeric(s);
|
||||
}
|
||||
|
||||
private static CardRequest fromPreferredArtEntry(String preferredArt, boolean isFoil){
|
||||
// Preferred Art Entry are supposed to be cardName|setCode|artIndex only
|
||||
String[] info = TextUtil.split(preferredArt, NameSetSeparator);
|
||||
if (info.length != 3)
|
||||
return null;
|
||||
try {
|
||||
String cardName = info[0];
|
||||
String setCode = info[1];
|
||||
int artIndex = Integer.parseInt(info[2]);
|
||||
return new CardRequest(cardName, setCode, artIndex, isFoil, IPaperCard.NO_COLLECTOR_NUMBER);
|
||||
} catch (NumberFormatException ex){ return null; }
|
||||
}
|
||||
|
||||
public static CardRequest fromString(String reqInfo) {
|
||||
if (reqInfo == null)
|
||||
return null;
|
||||
@@ -180,21 +193,25 @@ public final class CardDb implements ICardDatabase, IDeckGenPool {
|
||||
cardName = cardName.substring(0, cardName.length() - foilSuffix.length());
|
||||
isFoil = true;
|
||||
}
|
||||
|
||||
String preferredArt = artPrefs.get(cardName);
|
||||
int artIndex = artPos > 0 ? Integer.parseInt(info[artPos]) : IPaperCard.NO_ART_INDEX; // default: no art index
|
||||
if (preferredArt != null) { //account for preferred art if needed
|
||||
System.err.println("I AM HERE - DECIDE WHAT TO DO");
|
||||
}
|
||||
String collectorNumber = cNrPos > 0 ? info[cNrPos].substring(1, info[cNrPos].length() - 1) : IPaperCard.NO_COLLECTOR_NUMBER;
|
||||
String setName = setPos > 0 ? info[setPos] : null;
|
||||
if (setName != null && setName.equals(CardEdition.UNKNOWN.getCode())) { // ???
|
||||
setName = null;
|
||||
String setCode = setPos > 0 ? info[setPos] : null;
|
||||
if (setCode != null && setCode.equals(CardEdition.UNKNOWN.getCode())) { // ???
|
||||
setCode = null;
|
||||
}
|
||||
if (setCode == null) {
|
||||
String preferredArt = artPrefs.get(cardName);
|
||||
if (preferredArt != null) { //account for preferred art if needed
|
||||
CardRequest request = fromPreferredArtEntry(preferredArt, isFoil);
|
||||
if (request != null) // otherwise, simply discard it and go on.
|
||||
return request;
|
||||
System.err.println(String.format("[LOG]: Faulty Entry in Preferred Art for Card %s - Please check!", cardName));
|
||||
}
|
||||
}
|
||||
// finally, check whether any between artIndex and CollectorNumber has been set
|
||||
if (collectorNumber.equals(IPaperCard.NO_COLLECTOR_NUMBER) && artIndex == IPaperCard.NO_ART_INDEX)
|
||||
artIndex = IPaperCard.DEFAULT_ART_INDEX;
|
||||
return new CardRequest(cardName, setName, artIndex, isFoil, collectorNumber);
|
||||
return new CardRequest(cardName, setCode, artIndex, isFoil, collectorNumber);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -374,11 +391,11 @@ public final class CardDb implements ICardDatabase, IDeckGenPool {
|
||||
return pc;
|
||||
}
|
||||
|
||||
public boolean setPreferredArt(String cardName, String preferredArt) {
|
||||
CardRequest request = CardRequest.fromString(cardName + NameSetSeparator + preferredArt);
|
||||
PaperCard pc = tryGetCard(request);
|
||||
public boolean setPreferredArt(String cardName, String setCode, int artIndex) {
|
||||
String cardRequestForPreferredArt = CardRequest.compose(cardName, setCode, artIndex);
|
||||
PaperCard pc = this.getCard(cardRequestForPreferredArt);
|
||||
if (pc != null) {
|
||||
artPrefs.put(cardName, preferredArt);
|
||||
artPrefs.put(cardName, cardRequestForPreferredArt);
|
||||
uniqueCardsByName.put(cardName, pc);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -221,23 +221,23 @@ public final class GameActionUtil {
|
||||
continue;
|
||||
}
|
||||
|
||||
final SpellAbility flashback = sa.copy(activator);
|
||||
flashback.setAlternativeCost(AlternativeCost.Flashback);
|
||||
flashback.getRestrictions().setZone(ZoneType.Graveyard);
|
||||
SpellAbility flashback = null;
|
||||
|
||||
// there is a flashback cost (and not the cards cost)
|
||||
if (keyword.contains(":")) {
|
||||
if (keyword.contains(":")) { // K:Flashback:Cost:ExtraParams:ExtraDescription
|
||||
final String[] k = keyword.split(":");
|
||||
flashback.setPayCosts(new Cost(k[1], false));
|
||||
flashback = sa.copyWithManaCostReplaced(activator, new Cost(k[1], false));
|
||||
String extraParams = k.length > 2 ? k[2] : "";
|
||||
if (!extraParams.isEmpty()) {
|
||||
Map<String, String> extraParamMap =
|
||||
Maps.newHashMap(AbilityFactory.getMapParams(extraParams));
|
||||
for (Map.Entry<String, String> param : extraParamMap.entrySet()) {
|
||||
for (Map.Entry<String, String> param : AbilityFactory.getMapParams(extraParams).entrySet()) {
|
||||
flashback.putParam(param.getKey(), param.getValue());
|
||||
}
|
||||
}
|
||||
} else { // same cost as original (e.g. Otaria plane)
|
||||
flashback = sa.copy(activator);
|
||||
}
|
||||
flashback.setAlternativeCost(AlternativeCost.Flashback);
|
||||
flashback.getRestrictions().setZone(ZoneType.Graveyard);
|
||||
alternatives.add(flashback);
|
||||
} else if (keyword.startsWith("Foretell")) {
|
||||
// Foretell cast only from Exile
|
||||
|
||||
@@ -2169,40 +2169,25 @@ public class CardFactoryUtil {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("Event$ Moved | ValidCard$ Card.Self | Origin$ Stack | ExcludeDestination$ Exile ");
|
||||
sb.append("| ValidStackSa$ Spell.Flashback | Description$ Flashback");
|
||||
String reminderInsert = "";
|
||||
|
||||
// K:Flashback:Cost:ExtraParams:ExtraDescription:cost for display:reminder text insert
|
||||
if (keyword.contains(":")) {
|
||||
if (keyword.contains(":")) { // K:Flashback:Cost:ExtraParams:ExtraDescription
|
||||
final String[] k = keyword.split(":");
|
||||
final Cost cost = new Cost(k[1], false);
|
||||
sb.append(cost.isOnlyManaCost() ? " " : "—");
|
||||
sb.append(cost.isOnlyManaCost() ? " " : "—").append(cost.toSimpleString());
|
||||
sb.append(cost.isOnlyManaCost() ? "" : ".");
|
||||
|
||||
String prettyCost = k.length > 4 ? k[4] : "";
|
||||
if (!prettyCost.isEmpty()) {
|
||||
sb.append(prettyCost);
|
||||
} else {
|
||||
sb.append(cost.toSimpleString());
|
||||
}
|
||||
|
||||
if (!cost.isOnlyManaCost()) {
|
||||
sb.append(".");
|
||||
}
|
||||
String extraDesc = k.length > 3 ? k[3] : "";
|
||||
if (!extraDesc.isEmpty()) {
|
||||
if (!cost.isOnlyManaCost()) {
|
||||
sb.append(" ").append(extraDesc);
|
||||
} else {
|
||||
sb.append(". ").append(extraDesc);
|
||||
}
|
||||
if (!extraDesc.isEmpty()) { // extra params added in GameActionUtil, desc added here
|
||||
sb.append(cost.isOnlyManaCost() ? ". " : " ").append(extraDesc);
|
||||
}
|
||||
reminderInsert = k.length > 5 ? k[5] : "";
|
||||
}
|
||||
|
||||
sb.append(" (");
|
||||
if (!reminderInsert.isEmpty()) {
|
||||
if (host.hasStartOfKeyword("AlternateAdditionalCost")
|
||||
|| !host.getFirstSpellAbility().getPayCosts().isOnlyManaCost()) {
|
||||
String reminder = inst.getReminderText();
|
||||
sb.append(reminder, 0, 65).append(" ");
|
||||
sb.append(reminderInsert).append(reminder, 65, 81);
|
||||
sb.append(reminder, 0, 65).append(" and any additional costs");
|
||||
sb.append(reminder, 65, 81);
|
||||
} else {
|
||||
sb.append(inst.getReminderText());
|
||||
}
|
||||
|
||||
@@ -2193,6 +2193,58 @@ public class CardDbTestCase extends ForgeCardMockTestCase {
|
||||
assertEquals(counterSpellCard.getName(), cardNameCounterspell);
|
||||
}
|
||||
|
||||
@Test void prepareTestCaseForSetPreferredArtTest(){
|
||||
String setCode = this.editionsCounterspell[0];
|
||||
int artIndex = 4; // non-existing
|
||||
String cardRequest = CardDb.CardRequest.compose(this.cardNameCounterspell, setCode, artIndex);
|
||||
PaperCard nonExistingCounterSpell = this.cardDb.getCard(cardRequest);
|
||||
assertNull(nonExistingCounterSpell);
|
||||
}
|
||||
|
||||
@Test void setPreferredArtForCard(){
|
||||
String cardName = "Mountain";
|
||||
String setCode = "3ED";
|
||||
int artIndex = 5;
|
||||
assertFalse(this.cardDb.setPreferredArt(cardName, setCode, artIndex));
|
||||
assertTrue(this.cardDb.setPreferredArt(cardName, setCode, 1));
|
||||
}
|
||||
|
||||
|
||||
@Test void testThatWithCardPreferenceSetAndNoRequestForSpecificEditionAlwaysReturnsPreferredArt(){
|
||||
String cardRequest = CardDb.CardRequest.compose("Island", "MIR", 3);
|
||||
PaperCard islandCard = this.cardDb.getCard(cardRequest);
|
||||
assertNotNull(islandCard);
|
||||
assertEquals(islandCard.getName(), "Island");
|
||||
assertEquals(islandCard.getEdition(), "MIR");
|
||||
assertEquals(islandCard.getArtIndex(), 3);
|
||||
|
||||
// now set preferred art
|
||||
assertTrue(this.cardDb.setPreferredArt("Island", "MIR", 3));
|
||||
// Now requesting for a different Island
|
||||
cardRequest = CardDb.CardRequest.compose("Island", "TMP", 1);
|
||||
islandCard = this.cardDb.getCard(cardRequest);
|
||||
assertNotNull(islandCard);
|
||||
// Now card should be from the preferred art no matter the request
|
||||
assertEquals(islandCard.getName(), "Island");
|
||||
assertEquals(islandCard.getEdition(), "TMP");
|
||||
assertEquals(islandCard.getArtIndex(), 1);
|
||||
|
||||
// Now just asking for an Island
|
||||
islandCard = this.cardDb.getCard("Island");
|
||||
assertNotNull(islandCard);
|
||||
assertEquals(islandCard.getName(), "Island");
|
||||
assertEquals(islandCard.getEdition(), "MIR");
|
||||
assertEquals(islandCard.getArtIndex(), 3);
|
||||
|
||||
// Now asking for a foiled island - I will get the one from preferred art - but foiled
|
||||
cardRequest = CardDb.CardRequest.compose("Island", true);
|
||||
islandCard = this.cardDb.getCard(cardRequest);
|
||||
assertNotNull(islandCard);
|
||||
assertEquals(islandCard.getName(), "Island");
|
||||
assertEquals(islandCard.getEdition(), "MIR");
|
||||
assertEquals(islandCard.getArtIndex(), 3);
|
||||
assertTrue(islandCard.isFoil());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1281,7 +1281,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
||||
if (result != card) {
|
||||
cardManager.replaceAll(card, result);
|
||||
}
|
||||
prefs.setPreferredArt(result.getEdition() + CardDb.NameSetSeparator + result.getArtIndex());
|
||||
prefs.setPreferredArt(result.getEdition(), result.getArtIndex());
|
||||
CardPreferences.save();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ Types:Instant
|
||||
K:Madness:R
|
||||
K:Cycling:1 R
|
||||
K:Kicker:2 R
|
||||
K:Flashback 3 R
|
||||
K:Flashback:3 R
|
||||
K:Buyback:4 R
|
||||
A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SubAbility$ DBToken | SpellDescription$ CARDNAME deals 2 damage to target creature or player.
|
||||
SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ r_1_1_goblin | TokenOwner$ You | Condition$ Kicked | LegacyImage$ r 1 1 goblin ugl | ConditionDescription$ If CARDNAME was kicked, create a 1/1 red Goblin creature token.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
Name:Gaze of Justice
|
||||
ManaCost:W
|
||||
Types:Sorcery
|
||||
K:Flashback:5 W tapXType<3/Creature.White/white creature>
|
||||
A:SP$ ChangeZone | Cost$ W tapXType<3/Creature.White> | ValidTgts$ Creature | TgtPrompt$ Select target creature | Origin$ Battlefield | Destination$ Exile | CostDesc$ As an additional cost to cast this spell, tap three untapped white creatures you control. | SpellDescription$ Exile target creature.
|
||||
K:Flashback:5 W
|
||||
A:SP$ ChangeZone | Cost$ W tapXType<3/Creature.White/white creature> | ValidTgts$ Creature | TgtPrompt$ Select target creature | Origin$ Battlefield | Destination$ Exile | CostDesc$ As an additional cost to cast this spell, tap three untapped white creatures you control. | SpellDescription$ Exile target creature.
|
||||
Oracle:As an additional cost to cast this spell, tap three untapped white creatures you control.\nExile target creature.\nFlashback {5}{W} (You may cast this card from your graveyard for its flashback cost and any additional costs. Then exile it.)
|
||||
|
||||
@@ -5,6 +5,6 @@ PT:3/2
|
||||
K:Flash
|
||||
K:Vigilance
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPhaseOut | TriggerDescription$ When CARDNAME enters the battlefield, any number of other target creatures you control phase out. (Treat them and anything attached to them as though they don't exist until their controller's next turn.)
|
||||
SVar:TrigPhaseOut:DB$ Phases | ValidTgts$ Creature.Other+YouCtrl | TgtPrompt$ Select target artifact, creature or land | TargetMin$ 0 | TargetMax$ MaxTgts | SelectPrompt$ Choose any number of non-Angel creatures you control | Duration$ UntilHostLeavesPlay
|
||||
SVar:TrigPhaseOut:DB$ Phases | ValidTgts$ Creature.Other+YouCtrl | TgtPrompt$ Select other creature | TargetMin$ 0 | TargetMax$ MaxTgts | SelectPrompt$ Choose any number of creatures you control | Duration$ UntilHostLeavesPlay
|
||||
SVar:MaxTgts:Count$Valid Creature.Other+YouCtrl
|
||||
Oracle:Flash\nVigilance\nWhen Guardian of Faith enters the battlefield, any number of other target creatures you control phase out. (Treat them and anything attached to them as though they don't exist until their controller's next turn.)
|
||||
|
||||
@@ -2,7 +2,7 @@ Name:Candlelit Cavalry
|
||||
ManaCost:4 G
|
||||
Types:Creature Human Knight
|
||||
PT:5/5
|
||||
T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Battlefield | CheckSVar$ X | SVarCompare$ GE3 | Execute$ TrigPump | TriggerDescription$ Coven – At the beginning of combat on your turn, if you control three or more creatures with different powers, CARDNAME gains trample until end of turn.
|
||||
T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Battlefield | CheckSVar$ X | SVarCompare$ GE3 | Execute$ TrigPump | TriggerDescription$ Coven — At the beginning of combat on your turn, if you control three or more creatures with different powers, CARDNAME gains trample until end of turn.
|
||||
SVar:TrigPump:DB$ Pump | Defined$ Self | KW$ Trample
|
||||
SVar:X:Count$DifferentPower_Creature.YouCtrl
|
||||
Oracle:Coven — At the beginning of combat on your turn, if you control three or more creatures with different powers, Candlelit Cavalry gains trample until end of turn.
|
||||
|
||||
10
forge-gui/res/cardsfolder/upcoming/contortionist_troupe.txt
Normal file
10
forge-gui/res/cardsfolder/upcoming/contortionist_troupe.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
Name:Contortionist Troupe
|
||||
ManaCost:X G
|
||||
Types:Creature Human
|
||||
PT:0/0
|
||||
K:etbCounter:P1P1:X
|
||||
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | CheckSVar$ X | SVarCompare$ GE3 | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Coven — At the beginning of your end step, if you control three or more creatures with different powers, put a +1/+1 counter on target creature you control.
|
||||
SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | CounterType$ P1P1 | CounterNum$ 1
|
||||
SVar:X:Count$DifferentPower_Creature.YouCtrl
|
||||
DeckHas:Ability$Counters
|
||||
Oracle:Contortionist Troupe enters the battlefield with X +1/+1 counters on it.\nCoven — At the beginning of your end step, if you control three or more creatures with different powers, put a +1/+1 counter on target creature you control.
|
||||
@@ -1,11 +1,9 @@
|
||||
Name:Corpse Cobble
|
||||
ManaCost:U B
|
||||
Types:Instant
|
||||
#Text:As an additional cost to cast this spell, sacrifice any number of creatures.
|
||||
A:SP$ Token | Cost$ U B Sac<X/Creature/creature> | RememberCostCards$ True | TokenScript$ ub_x_x_zombie_menace | TokenPower$ Y | TokenToughness$ Y | SubAbility$ DBCleanup | SpellDescription$ Create an X/X blue and black Zombie creature token with menace, where X is the total power of the sacrificed creatures.
|
||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||
K:Flashback:3 U B Sac<X/Creature>:::{3}{U}{B}:and any additional costs
|
||||
A:SP$ Token | Cost$ U B Sac<X/Creature/creature> | TokenScript$ ub_x_x_zombie_menace | TokenPower$ Y | TokenToughness$ Y | SpellDescription$ Create an X/X blue and black Zombie creature token with menace, where X is the total power of the sacrificed creatures.
|
||||
K:Flashback:3 U B
|
||||
SVar:X:Count$xPaid
|
||||
SVar:Y:RememberedLKI$CardPower
|
||||
SVar:Y:Sacrificed$CardPower
|
||||
DeckHas:Ability$Sacrifice & Ability$Token
|
||||
Oracle:As an additional cost to cast this spell, sacrifice any number of creatures.\nCreate an X/X blue and black Zombie creature token with menace, where X is the total power of the sacrificed creatures.\nFlashback {3}{U}{B} (You may cast this card from your graveyard for its flashback cost and any additional costs. Then exile it.)
|
||||
|
||||
12
forge-gui/res/cardsfolder/upcoming/curse_of_silence.txt
Normal file
12
forge-gui/res/cardsfolder/upcoming/curse_of_silence.txt
Normal file
@@ -0,0 +1,12 @@
|
||||
Name:Curse of Silence
|
||||
ManaCost:W
|
||||
Types:Enchantment Aura Curse
|
||||
K:Enchant player
|
||||
A:SP$ Attach | ValidTgts$ Player | AILogic$ Curse
|
||||
K:ETBReplacement:Other:DBNameCard
|
||||
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.
|
||||
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.
|
||||
SVar:TrigDraw:AB$ Draw | Cost$ Sac<1/CARDNAME> | NumCards$ 1
|
||||
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.
|
||||
@@ -0,0 +1,26 @@
|
||||
Name:Devoted Grafkeeper
|
||||
ManaCost:W U
|
||||
Types:Creature Human Peasant
|
||||
PT:2/1
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigMill | TriggerDescription$ When CARDNAME enters the battlefield, mill two cards.
|
||||
SVar:TrigMill:DB$ Mill | NumCards$ 2 | Defined$ You
|
||||
T:Mode$ SpellCast | ValidCard$ Card.wasCastFromGraveyard | ValidActivatingPlayer$ You | Execute$ TrigTap | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a spell from your graveyard, tap target creature you don't control.
|
||||
SVar:TrigTap:DB$ Tap | ValidTgts$ Creature.YouDontCtrl | TgtPrompt$ Select target creature you don't control
|
||||
DeckHas:Ability$Mill
|
||||
DeckHints:Ability$Graveyard
|
||||
K:Disturb:1 W U
|
||||
AlternateMode:DoubleFaced
|
||||
Oracle:When Devoted Grafkeeper enters the battlefield, mill two cards.\nWhenever you cast a spell from your graveyard, tap target creature you don't control.\nDisturb {1}{W}{U} (You may cast this card from your graveyard transformed for its disturb cost.)
|
||||
|
||||
ALTERNATE
|
||||
|
||||
Name:Departed Soulkeeper
|
||||
ManaCost:no cost
|
||||
Colors:white,blue
|
||||
Types:Creature Spirit
|
||||
PT:3/1
|
||||
K:Flying
|
||||
S:Mode$ CantBlockBy | ValidAttacker$ Creature.withoutFlying | ValidBlocker$ Creature.Self | Description$ CARDNAME can block only creatures with flying.
|
||||
R:Event$ Moved | ValidCard$ Card.Self | Destination$ Graveyard | ReplaceWith$ Exile | Description$ If CARDNAME would be put into a graveyard from anywhere, exile it instead.
|
||||
SVar:Exile:DB$ ChangeZone | Hidden$ True | Origin$ All | Destination$ Exile | Defined$ ReplacedCard
|
||||
Oracle:Flying\nDeparted Soulkeeper can block only creatures with flying.\nIf Departed Soulkeeper would be put into a graveyard from anywhere, exile it instead.
|
||||
9
forge-gui/res/cardsfolder/upcoming/hobbling_zombie.txt
Normal file
9
forge-gui/res/cardsfolder/upcoming/hobbling_zombie.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Name:Hobbling Zombie
|
||||
ManaCost:2 B
|
||||
Types:Creature Zombie
|
||||
PT:2/2
|
||||
K:Deathtouch
|
||||
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME dies, create a 2/2 black Zombie creature with decayed. (It can't block. When it attacks, sacrifice it at end of combat.)
|
||||
SVar:TrigToken:DB$ Token | TokenScript$ b_2_2_zombie_decayed
|
||||
DeckHas:Ability$Token
|
||||
Oracle:Deathtouch\nWhen Hobbling Zombie dies, create a 2/2 black Zombie creature with decayed. (It can't block. When it attacks, sacrifice it at end of combat.)
|
||||
@@ -2,9 +2,9 @@ Name:Leinore, Autumn Sovereign
|
||||
ManaCost:2 G W
|
||||
Types:Legendary Creature Human Sovereign
|
||||
PT:0/4
|
||||
T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Coven – At the beginning of combat on your turn, put a +1/+1 counter on target creature you control. Then if you control three or more creatures with different powers, draw a card.
|
||||
T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Coven — At the beginning of combat on your turn, put a +1/+1 counter on target creature you control. Then if you control three or more creatures with different powers, draw a card.
|
||||
SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Select target creature you control | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBDraw
|
||||
SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 1 | ConditionCheckSVar$ X | ConditionSVarCompare$ GE3
|
||||
SVar:X:Count$DifferentPower_Creature.YouCtrl
|
||||
DeckHas:Ability$Counters
|
||||
Oracle:Coven – At the beginning of combat on your turn, put a +1/+1 counter on up to one creature you control. Then if you control three or more creatures with different powers, draw a card.
|
||||
Oracle:Coven — At the beginning of combat on your turn, put a +1/+1 counter on up to one creature you control. Then if you control three or more creatures with different powers, draw a card.
|
||||
|
||||
@@ -5,6 +5,6 @@ A:SP$ DealDamage | Cost$ X R | ValidTgts$ Creature,Player,Planeswalker | TgtProm
|
||||
SVar:X:Count$xPaid
|
||||
SVar:Y:Targeted$Valid Creature,Planeswalker
|
||||
SVar:Z:SVar$X/Plus.Y
|
||||
K:Flashback:XCantBe0 3 R RemoveAnyCounter<X/LOYALTY/Planeswalker.YouCtrl/among planeswalkers you control>::If you cast this spell this way, X can't be 0.:{3}{R}, Remove X loyalty counters from among planeswalkers you control
|
||||
K:Flashback:XCantBe0 3 R RemoveAnyCounter<X/LOYALTY/Planeswalker.YouCtrl/among planeswalkers you control>::If you cast this spell this way, X can't be 0.
|
||||
DeckHints:Type$Planeswalker
|
||||
Oracle:Light Up the Night deals X damage to any target. It deals X plus 1 damage instead if that target is a creature or planeswalker.\nFlashback—{3}{R}, Remove X loyalty counters from among planeswalkers you control. If you cast this spell this way, X can't be 0. (You may cast this card from your graveyard for its flashback cost. Then exile it.)
|
||||
|
||||
@@ -5,8 +5,8 @@ PT:4/4
|
||||
K:Flying
|
||||
K:Trample
|
||||
S:Mode$ Continuous | Affected$ Creature.Human+YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Humans you control get +1/+1.
|
||||
T:Mode$ Attacks | ValidCard$ Card.Self | CheckSVar$ X | SVarCompare$ GE3 | Execute$ TrigDig | TriggerDescription$ Coven - Whenever Sigarda attacks, if you control three or more creatures with different powers, look at the top five cards of your library. You may reveal a Human creature card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.
|
||||
T:Mode$ Attacks | ValidCard$ Card.Self | CheckSVar$ X | SVarCompare$ GE3 | Execute$ TrigDig | TriggerDescription$ Coven — Whenever Sigarda attacks, if you control three or more creatures with different powers, look at the top five cards of your library. You may reveal a Human creature card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.
|
||||
SVar:TrigDig:DB$ Dig | DigNum$ 5 | ChangeNum$ 1 | Optional$ True | ChangeValid$ Creature.Human
|
||||
SVar:X:Count$DifferentPower_Creature.YouCtrl
|
||||
DeckNeeds:Type$Human
|
||||
Oracle:Flying, trample\nHumans you control get +1/+1\nCoven - Whenever Sigarda attacks, if you control three or more creatures with different powers, look at the top five cards of your library. You may reveal a Human creature card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.
|
||||
Oracle:Flying, trample\nHumans you control get +1/+1\nCoven — Whenever Sigarda attacks, if you control three or more creatures with different powers, look at the top five cards of your library. You may reveal a Human creature card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.
|
||||
|
||||
@@ -3,4 +3,4 @@ Name:Commander
|
||||
Type:Casual
|
||||
Subtype:Commander
|
||||
Order:137
|
||||
Banned:Adriana's Valor; Advantageous Proclamation; Ashnod's Coupon; Assemble the Rank and Vile; Backup Plan; Brago's Favor; Double Cross; Double Deal; Double Dip; Double Play; Double Stroke; Double Take; Echoing Boon; Emissary's Ploy; Enter the Dungeon; Flash; Hired Heist; Hold the Perimeter; Hullbreacher; Hymn of the Wilds; Immediate Action; Incendiary Dissent; Iterative Analysis; Lutri, the Spellchaser; Magical Hacker; Mox Lotus; Muzzio's Preparations; Natural Unity; Once More with Feeling; Power Play; R&D's Secret Lair; Richard Garfield, Ph.D.; Secret Summoning; Secrets of Paradise; Sentinel Dispatch; Sovereign's Realm; Staying Power; Summoner's Bond; Time Machine; Unexpected Potential; Weight Advantage; Worldknit; Amulet of Quoz; Bronze Tablet; Contract from Below; Darkpact; Demonic Attorney; Jeweled Bird; Rebirth; Tempest Efreet; Timmerian Fiends; Ancestral Recall; Balance; Biorhythm; Black Lotus; Braids, Cabal Minion; Chaos Orb; Coalition Victory; Channel; Emrakul, the Aeons Torn; Erayo, Soratami Ascendant; Falling Star; Fastbond; Gifts Ungiven; Griselbrand; Iona, Shield of Emeria; Karakas; Leovold, Emissary of Trest; Library of Alexandria; Limited Resources; Mox Emerald; Mox Jet; Mox Pearl; Mox Ruby; Mox Sapphire; Panoptic Mirror; Paradox Engine; Primeval Titan; Prophet of Kruphix; Recurring Nightmare; Rofellos, Llanowar Emissary; Shahrazad; Sundering Titan; Sway of the Stars; Sylvan Primordial; Time Vault; Time Walk; Tinker; Tolarian Academy; Trace Secrets; Upheaval; Worldfire; Yawgmoth's Bargain
|
||||
Banned:Adriana's Valor; Advantageous Proclamation; Ashnod's Coupon; Assemble the Rank and Vile; Backup Plan; Brago's Favor; Double Cross; Double Deal; Double Dip; Double Play; Double Stroke; Double Take; Echoing Boon; Emissary's Ploy; Enter the Dungeon; Flash; Hired Heist; Hold the Perimeter; Hullbreacher; Hymn of the Wilds; Immediate Action; Incendiary Dissent; Iterative Analysis; Lutri, the Spellchaser; Magical Hacker; Mox Lotus; Muzzio's Preparations; Natural Unity; Once More with Feeling; Power Play; R&D's Secret Lair; Richard Garfield, Ph.D.; Secret Summoning; Secrets of Paradise; Sentinel Dispatch; Sovereign's Realm; Staying Power; Summoner's Bond; Time Machine; Unexpected Potential; Weight Advantage; Worldknit; Amulet of Quoz; Bronze Tablet; Contract from Below; Darkpact; Demonic Attorney; Jeweled Bird; Rebirth; Tempest Efreet; Timmerian Fiends; Ancestral Recall; Balance; Biorhythm; Black Lotus; Braids, Cabal Minion; Chaos Orb; Coalition Victory; Channel; Emrakul, the Aeons Torn; Erayo, Soratami Ascendant; Falling Star; Fastbond; Gifts Ungiven; Griselbrand; Iona, Shield of Emeria; Karakas; Leovold, Emissary of Trest; Library of Alexandria; Limited Resources; Mox Emerald; Mox Jet; Mox Pearl; Mox Ruby; Mox Sapphire; Panoptic Mirror; Paradox Engine; Primeval Titan; Prophet of Kruphix; Recurring Nightmare; Rofellos, Llanowar Emissary; Shahrazad; Sundering Titan; Sway of the Stars; Sylvan Primordial; Time Vault; Time Walk; Tinker; Tolarian Academy; Trade Secrets; Upheaval; Worldfire; Yawgmoth's Bargain; Cleanse; Crusade; Imprison; Invoke Prejudice; Jihad; Pradesh Gypsies; Stone-Throwing Devils
|
||||
|
||||
@@ -3,4 +3,4 @@ Name:Oathbreaker
|
||||
Type:Casual
|
||||
Subtype:Commander
|
||||
Order:141
|
||||
Banned:Adriana's Valor; Advantageous Proclamation; Assemble the Rank and Vile; Backup Plan; Brago's Favor; Double Stroke; Echoing Boon; Emissary's Ploy; Hired Heist; Hold the Perimeter; Hymn of the Wilds; Immediate Action; Incendiary Dissent; Iterative Analysis; Muzzio's Preparations; Natural Unity; Power Play; Secret Summoning; Secrets of Paradise; Sentinel Dispatch; Sovereign's Realm; Summoner's Bond; Unexpected Potential; Weight Advantage; Worldknit; Amulet of Quoz; Bronze Tablet; Contract from Below; Darkpact; Demonic Attorney; Jeweled Bird; Rebirth; Tempest Efreet; Timmerian Fiends; Chaos Orb; Falling Star; Shahrazad; Ad Nauseam; Ancestral Recall; Balance; Biorhythm; Black Lotus; Channel; Doomsday; Emrakul, the Aeons Torn; Expropriate; Fastbond; Gifts Ungiven; Griselbrand; High Tide; Library of Alexandria; Limited Resources; Lion's Eye Diamond; Mana Crypt; Mana Geyser; Mana Vault; Mox Emerald; Mox Jet; Mox Pearl; Mox Ruby; Mox Sapphire; Natural Order; Painter's Servant; Panoptic Mirror; Primal Surge; Recurring Nightmare; Saheeli, the Gifted; Sol Ring; Sundering Titan; Sway of the Stars; Sylvan Primordial; Time Vault; Time Walk; Tinker; Tolarian Academy; Tooth and Nail; Trade Secrets; Upheaval; Worldfire; Yawgmoth's Bargain
|
||||
Banned:Adriana's Valor; Advantageous Proclamation; Assemble the Rank and Vile; Backup Plan; Brago's Favor; Double Stroke; Echoing Boon; Emissary's Ploy; Hired Heist; Hold the Perimeter; Hymn of the Wilds; Immediate Action; Incendiary Dissent; Iterative Analysis; Muzzio's Preparations; Natural Unity; Power Play; Secret Summoning; Secrets of Paradise; Sentinel Dispatch; Sovereign's Realm; Summoner's Bond; Unexpected Potential; Weight Advantage; Worldknit; Amulet of Quoz; Bronze Tablet; Contract from Below; Darkpact; Demonic Attorney; Jeweled Bird; Rebirth; Tempest Efreet; Timmerian Fiends; Chaos Orb; Falling Star; Shahrazad; Ad Nauseam; Ancestral Recall; Balance; Biorhythm; Black Lotus; Channel; Doomsday; Emrakul, the Aeons Torn; Expropriate; Fastbond; Gifts Ungiven; Griselbrand; High Tide; Library of Alexandria; Limited Resources; Lion's Eye Diamond; Mana Crypt; Mana Geyser; Mana Vault; Mox Emerald; Mox Jet; Mox Pearl; Mox Ruby; Mox Sapphire; Natural Order; Painter's Servant; Panoptic Mirror; Primal Surge; Saheeli, the Gifted; Sol Ring; Sundering Titan; Sylvan Primordial; Time Vault; Time Walk; Tinker; Tolarian Academy; Tooth and Nail; Trade Secrets; Upheaval; Yawgmoth's Bargain; Cleanse; Crusade; Dark Ritual; Imprison; Invoke Prejudice; Jeweled Lotus; Jihad; Pradesh Gypsies; Stone-Throwing Devils
|
||||
|
||||
@@ -4,4 +4,4 @@ Order:108
|
||||
Subtype:Custom
|
||||
Type:Casual
|
||||
Rarities:L, C
|
||||
Banned:Arcum's Astrolabe; Cloud of Faeries; Cloudpost; Cranial Plating; Daze; Empty the Warrens; Expedition Map; Fall from Favor; Frantic Search; Gitaxian Probe; Grapeshot; Gush; Invigorate; Mystic Sanctuary; Peregrine Drake; Temporal Fissure; Treasure Cruise
|
||||
Banned:Arcum's Astrolabe; Chatterstorm; Cloud of Faeries; Cloudpost; Cranial Plating; Daze; Expedition Map; Empty the Warrens; Fall from Favor; Frantic Search; Gitaxian Probe; Grapeshot; Gush; High Tide; Hymn to Tourach; Invigorate; Mystic Sanctuary; Peregrine Drake; Sinkhole; Sojourner's Companion; Temporal Fissure; Treasure Cruise
|
||||
|
||||
@@ -5,4 +5,4 @@ Subtype:Extended
|
||||
Effective:2013-07-19
|
||||
Retired:2013-10-08
|
||||
Sets:ZEN, WWK, ROE, M11, SOM, MBS, NPH, M12, ISD, DKA, AVR, M13, RTR, GTC, DGM, M14
|
||||
Banned:Jace, the Mind Sculptor; Mental Misstep; Ponder; Preordain; Stoneforge Mystic
|
||||
Banned:Mental Misstep; Ponder
|
||||
|
||||
@@ -4,4 +4,4 @@ Order:105
|
||||
Subtype:Legacy
|
||||
Type:Sanctioned
|
||||
Sets:7ED, 9ED, ORI, M14, M15, 6ED, 8ED, M11, 3ED, M10, M12, 10E, M13, G18, M21, M20, M19, 5ED, 2ED, 4ED, LEB, LEA, 5DN, SOM, KTK, THS, DIS, JOU, MOR, TMP, SOI, FEM, USG, ALL, ROE, EXO, TSP, LRW, TOR, ALA, RIX, DGM, DKA, MBS, AER, RNA, GTC, CSP, HML, NPH, OGW, ZNR, EMN, UDS, SHM, BNG, SOK, EVE, INV, THB, DOM, NMS, VIS, WAR, GRN, PCY, SCG, MRD, XLN, ONS, IKO, MMQ, CHK, ULG, AKH, MIR, ISD, AVR, KLD, APC, RTR, WWK, PLC, HOU, LEG, AFR, ARN, ICE, STX, LGN, ARB, KHM, CFX, TSB, ZEN, ELD, JUD, GPT, BFZ, BOK, DTK, FRF, FUT, WTH, ODY, RAV, ATQ, DRK, PLS, STH, DST, TD2, HA1, ME4, HA3, HA2, HA5, HA4, MED, ANB, ME3, KLR, PZ2, ANA, PRM, PZ1, AJMP, ME2, TD1, TD0, TPR, VMA, AKR, MBP, PZEN, PGTW, PL21, PFUT, PWAR, PAL01, PJUD, PAL00, PTKDF, PWOR, PWP12, PSTH, POGW, PFRF, PG07, PSUS, PUST, J18, PWP10, PAL02, PAL03, PWP11, J19, PGRN, PM10, PDP14, PRTR, PMPS06, PBNG, PJ21, G09, PNPH, PM15, PAL06, G08, PDST, J20, PMBS, PMPS07, PEXO, PDOM, PONS, PRW2, PMPS11, PMPS, PM19, PWWK, PCEL, PAL04, PAL05, PMPS10, PDTK, PALP, F10, F04, PMOR, PAL99, PEMN, PCNS, PPLC, PRAV, PPP1, PI14, PXLN, PF20, PTSP, F05, F11, PSCG, PBOOK, F07, F13, PODY, PM12, P08, PSS1, P2HG, P09, PTOR, PDP13, F12, F06, PALA, PXTC, F02, F16, PHOU, PSOM, PI13, PCON, PDGM, PIDW, PMRD, PRNA, P9ED, PHEL, F17, F03, PURL, F15, F01, PWOS, PPC1, PBOK, PTMP, PS19, PS18, PF19, PGPT, PCHK, FNM, F14, PISD, PAKH, PDP15, PRIX, PS15, PPCY, OLGC, OVNT, PLGN, PS14, P03, PDTP, PM14, FS, PPLS, MPR, PKTK, PS16, PRWK, PS17, PBFZ, PSS2, PINV, G03, P8ED, PARL, P04, P10, PSDC, JGP, G99, WW, P11, P05, PDIS, PROE, PDP10, F08, P10E, PELP, PMH1, P07, P5DN, PGRU, SHC, PM11, P06, PUSG, PCMP, PULG, F09, PUDS, PARB, DRC94, PMPS09, PORI, J12, G06, PMMQ, G07, J13, PMPS08, PM20, PSOI, PJSE, G05, G11, PNAT, PSOK, PEVE, PRED, G10, G04, PSHM, PPRO, PAPC, PJJT, ARENA, PKLD, G00, J14, PLGM, P15A, PCSP, PWPN, PJAS, PWP21, PWP09, PDKA, PNEM, PPTK, J15, G01, PG08, PLRW, PMEI, PM13, PHJ, PGTC, J17, PRES, PWCQ, PJOU, PDP12, PAER, PAVR, PTHS, G02, J16, PSUM, PGPX, UGF, PSS3, MM2, MM3, MB1, FMB1, A25, 2XM, MMA, PLIST, CHR, EMA, IMA, TSR, UMA, PUMA, E02, DPA, ATH, MD1, GK1, GK2, CST, BRB, BTD, DKM, FVE, V17, V13, STA, MPS_RNA, V16, SLD, V12, CC1, MPS_GRN, DRB, FVR, SS3, SS1, MPS_AKH, FVL, V15, MPS_KLD, ZNE, PDS, SS2, PD3, SLU, V14, PD2, EXP, MPS_WAR, DDQ, DDE, GS1, DDS, DDU, DD1, DDL, DDF, DDP, DD2, DDR, DDH, DDT, DDK, DDG, DDC, DDM, DDJ, DDO, GVL, JVC, DDI, DVD, DDN, EVG, DDD, C18, C19, C21, C20, C13, CMA, C14, C15, KHC, ZNC, AFC, C17, C16, COM, CM1, CM2, PO2, S99, W16, W17, S00, PTK, CP3, POR, CP1, CP2, CMR, MH2, H1R, CNS, BBD, MH1, CN2, JMP, PCA, GNT, ARC, GN2, PC2, E01, HOP, PLG20, PLG21
|
||||
Banned:Adriana's Valor; Advantageous Proclamation; Arcum's Astrolabe; Assemble the Rank and Vile; Backup Plan; Brago's Favor; Deathrite Shaman; Double Stroke; Dreadhorde Arcanist; Echoing Boon; Emissary's Ploy; Gitaxian Probe; Hired Heist; Hold the Perimeter; Hymn of the Wilds; Immediate Action; Incendiary Dissent; Iterative Analysis; Lurrus of the Dream-Den; Muzzio's Preparations; Natural Unity; Oko, Thief of Crowns; Power Play; Secret Summoning; Secrets of Paradise; Sentinel Dispatch; Sovereign's Realm; Summoner's Bond; Underworld Breach; Unexpected Potential; Weight Advantage; Worldknit; Amulet of Quoz; Bronze Tablet; Contract from Below; Darkpact; Demonic Attorney; Jeweled Bird; Rebirth; Tempest Efreet; Timmerian Fiends; Ancestral Recall; Balance; Bazaar of Baghdad; Black Lotus; Channel; Chaos Orb; Demonic Consultation; Demonic Tutor; Dig Through Time; Earthcraft; Falling Star; Fastbond; Flash; Frantic Search; Goblin Recruiter; Gush; Hermit Druid; Imperial Seal; Library of Alexandria; Mana Crypt; Mana Drain; Mana Vault; Memory Jar; Mental Misstep; Mind Twist; Mind's Desire; Mishra's Workshop; Mox Emerald; Mox Jet; Mox Pearl; Mox Ruby; Mox Sapphire; Mystical Tutor; Necropotence; Oath of Druids; Sensei's Divining Top; Shahrazad; Skullclamp; Sol Ring; Strip Mine; Survival of the Fittest; Time Vault; Time Walk; Timetwister; Tinker; Tolarian Academy; Treasure Cruise; Vampiric Tutor; Wheel of Fortune; Windfall; Wrenn and Six; Yawgmoth's Bargain; Yawgmoth's Will; Zirda, the Dawnwaker
|
||||
Banned:Adriana's Valor; Advantageous Proclamation; Arcum's Astrolabe; Assemble the Rank and Vile; Backup Plan; Brago's Favor; Deathrite Shaman; Double Stroke; Dreadhorde Arcanist; Echoing Boon; Emissary's Ploy; Gitaxian Probe; Hired Heist; Hold the Perimeter; Hymn of the Wilds; Immediate Action; Incendiary Dissent; Iterative Analysis; Lurrus of the Dream-Den; Muzzio's Preparations; Natural Unity; Oko, Thief of Crowns; Power Play; Secret Summoning; Secrets of Paradise; Sentinel Dispatch; Sovereign's Realm; Summoner's Bond; Underworld Breach; Unexpected Potential; Weight Advantage; Worldknit; Amulet of Quoz; Bronze Tablet; Contract from Below; Darkpact; Demonic Attorney; Jeweled Bird; Rebirth; Tempest Efreet; Timmerian Fiends; Ancestral Recall; Balance; Bazaar of Baghdad; Black Lotus; Channel; Chaos Orb; Demonic Consultation; Demonic Tutor; Dig Through Time; Earthcraft; Falling Star; Fastbond; Flash; Frantic Search; Goblin Recruiter; Gush; Hermit Druid; Imperial Seal; Library of Alexandria; Mana Crypt; Mana Drain; Mana Vault; Memory Jar; Mental Misstep; Mind Twist; Mind's Desire; Mishra's Workshop; Mox Emerald; Mox Jet; Mox Pearl; Mox Ruby; Mox Sapphire; Mystical Tutor; Necropotence; Oath of Druids; Sensei's Divining Top; Shahrazad; Skullclamp; Sol Ring; Strip Mine; Survival of the Fittest; Time Vault; Time Walk; Timetwister; Tinker; Tolarian Academy; Treasure Cruise; Vampiric Tutor; Wheel of Fortune; Windfall; Wrenn and Six; Yawgmoth's Bargain; Yawgmoth's Will; Zirda, the Dawnwaker; Cleanse; Crusade; Imprison; Invoke Prejudice; Jihad; Pradesh Gypsies; Stone-Throwing Devils
|
||||
|
||||
@@ -4,4 +4,4 @@ Order:101
|
||||
Subtype:Standard
|
||||
Type:Sanctioned
|
||||
Sets:ELD, THB, IKO, M21, ZNR, KHM, STX, AFR
|
||||
Banned:Cauldron Familiar; Escape to the Wilds; Fires of Invention; Lucky Clover; Oko, Thief of Crowns; Omnath, Locus of Creation; Once Upon a Time; Uro, Titan of Nature's Wrath; Veil of Summer
|
||||
Banned:Cauldron Familiar; Escape to the Wilds; Fires of Invention; Lucky Clover; Oko, Thief of Crowns; Omnath, Locus of Creation; Once Upon a Time; Uro, Titan of Nature's Wrath
|
||||
|
||||
@@ -4,5 +4,5 @@ Order:104
|
||||
Subtype:Vintage
|
||||
Type:Sanctioned
|
||||
Sets:7ED, 9ED, ORI, M14, M15, 6ED, 8ED, M11, 3ED, M10, M12, 10E, M13, G18, M21, M20, M19, 5ED, 2ED, 4ED, LEB, LEA, 5DN, SOM, KTK, THS, DIS, JOU, MOR, TMP, SOI, FEM, USG, ALL, ROE, EXO, TSP, LRW, TOR, ALA, RIX, DGM, DKA, MBS, AER, RNA, GTC, CSP, HML, NPH, OGW, ZNR, EMN, UDS, SHM, BNG, SOK, EVE, INV, THB, DOM, NMS, VIS, WAR, GRN, PCY, SCG, MRD, XLN, ONS, IKO, MMQ, CHK, ULG, AKH, MIR, ISD, AVR, KLD, APC, RTR, WWK, PLC, HOU, LEG, AFR, ARN, ICE, STX, LGN, ARB, KHM, CFX, TSB, ZEN, ELD, JUD, GPT, BFZ, BOK, DTK, FRF, FUT, WTH, ODY, RAV, ATQ, DRK, PLS, STH, DST, TD2, HA1, ME4, HA3, HA2, HA5, HA4, MED, ANB, ME3, KLR, PZ2, ANA, PRM, PZ1, AJMP, ME2, TD1, TD0, TPR, VMA, AKR, MBP, PZEN, PGTW, PL21, PFUT, PWAR, PAL01, PJUD, PAL00, PTKDF, PWOR, PWP12, PSTH, POGW, PFRF, PG07, PSUS, PUST, J18, PWP10, PAL02, PAL03, PWP11, J19, PGRN, PM10, PDP14, PRTR, PMPS06, PBNG, PJ21, G09, PNPH, PM15, PAL06, G08, PDST, J20, PMBS, PMPS07, PEXO, PDOM, PONS, PRW2, PMPS11, PMPS, PM19, PWWK, PCEL, PAL04, PAL05, PMPS10, PDTK, PALP, F10, F04, PMOR, PAL99, PEMN, PCNS, PPLC, PRAV, PPP1, PI14, PXLN, PF20, PTSP, F05, F11, PSCG, PBOOK, F07, F13, PODY, PM12, P08, PSS1, P2HG, P09, PTOR, PDP13, F12, F06, PALA, PXTC, F02, F16, PHOU, PSOM, PI13, PCON, PDGM, PIDW, PMRD, PRNA, P9ED, PHEL, F17, F03, PURL, F15, F01, PWOS, PPC1, PBOK, PTMP, PS19, PS18, PF19, PGPT, PCHK, FNM, F14, PISD, PAKH, PDP15, PRIX, PS15, PPCY, OLGC, OVNT, PLGN, PS14, P03, PDTP, PM14, FS, PPLS, MPR, PKTK, PS16, PRWK, PS17, PBFZ, PSS2, PINV, G03, P8ED, PARL, P04, P10, PSDC, JGP, G99, WW, P11, P05, PDIS, PROE, PDP10, F08, P10E, PELP, PMH1, P07, P5DN, PGRU, SHC, PM11, P06, PUSG, PCMP, PULG, F09, PUDS, PARB, DRC94, PMPS09, PORI, J12, G06, PMMQ, G07, J13, PMPS08, PM20, PSOI, PJSE, G05, G11, PNAT, PSOK, PEVE, PRED, G10, G04, PSHM, PPRO, PAPC, PJJT, ARENA, PKLD, G00, J14, PLGM, P15A, PCSP, PWPN, PJAS, PWP21, PWP09, PDKA, PNEM, PPTK, J15, G01, PG08, PLRW, PMEI, PM13, PHJ, PGTC, J17, PRES, PWCQ, PJOU, PDP12, PAER, PAVR, PTHS, G02, J16, PSUM, PGPX, UGF, PSS3, MM2, MM3, MB1, FMB1, A25, 2XM, MMA, PLIST, CHR, EMA, IMA, TSR, UMA, PUMA, E02, DPA, ATH, MD1, GK1, GK2, CST, BRB, BTD, DKM, FVE, V17, V13, STA, MPS_RNA, V16, SLD, V12, CC1, MPS_GRN, DRB, FVR, SS3, SS1, MPS_AKH, FVL, V15, MPS_KLD, ZNE, PDS, SS2, PD3, SLU, V14, PD2, EXP, MPS_WAR, DDQ, DDE, GS1, DDS, DDU, DD1, DDL, DDF, DDP, DD2, DDR, DDH, DDT, DDK, DDG, DDC, DDM, DDJ, DDO, GVL, JVC, DDI, DVD, DDN, EVG, DDD, C18, C19, C21, C20, C13, CMA, C14, C15, KHC, ZNC, AFC, C17, C16, COM, CM1, CM2, PO2, S99, W16, W17, S00, PTK, CP3, POR, CP1, CP2, CMR, MH2, H1R, CNS, BBD, MH1, CN2, JMP, PCA, GNT, ARC, GN2, PC2, E01, HOP, PLG20, PLG21
|
||||
Banned:Adriana's Valor; Advantageous Proclamation; Assemble the Rank and Vile; Backup Plan; Brago's Favor; Double Stroke; Echoing Boon; Emissary's Ploy; Hired Heist; Hold the Perimeter; Hymn of the Wilds; Immediate Action; Incendiary Dissent; Iterative Analysis; Muzzio's Preparations; Natural Unity; Power Play; Secret Summoning; Secrets of Paradise; Sentinel Dispatch; Sovereign's Realm; Summoner's Bond; Unexpected Potential; Weight Advantage; Worldknit; Amulet of Quoz; Bronze Tablet; Contract from Below; Darkpact; Demonic Attorney; Jeweled Bird; Rebirth; Tempest Efreet; Timmerian Fiends; Chaos Orb; Falling Star; Shahrazad
|
||||
Banned:Adriana's Valor; Advantageous Proclamation; Assemble the Rank and Vile; Backup Plan; Brago's Favor; Double Stroke; Echoing Boon; Emissary's Ploy; Hired Heist; Hold the Perimeter; Hymn of the Wilds; Immediate Action; Incendiary Dissent; Iterative Analysis; Muzzio's Preparations; Natural Unity; Power Play; Secret Summoning; Secrets of Paradise; Sentinel Dispatch; Sovereign's Realm; Summoner's Bond; Unexpected Potential; Weight Advantage; Worldknit; Amulet of Quoz; Bronze Tablet; Contract from Below; Darkpact; Demonic Attorney; Jeweled Bird; Rebirth; Tempest Efreet; Timmerian Fiends; Chaos Orb; Falling Star; Shahrazad; Cleanse; Crusade; Imprison; Invoke Prejudice; Jihad; Pradesh Gypsies; Stone-Throwing Devils
|
||||
Restricted:Ancestral Recall; Balance; Black Lotus; Brainstorm; Chalice of the Void; Channel; Demonic Consultation; Demonic Tutor; Dig Through Time; Flash; Gitaxian Probe; Golgari Grave-Troll; Gush; Imperial Seal; Karn, the Great Creator; Library of Alexandria; Lion's Eye Diamond; Lodestone Golem; Lotus Petal; Mana Crypt; Mana Vault; Memory Jar; Mental Misstep; Merchant Scroll; Mind's Desire; Monastery Mentor; Mox Emerald; Mox Jet; Mox Pearl; Mox Ruby; Mox Sapphire; Mystic Forge; Mystical Tutor; Narset, Parter of Veils; Necropotence; Ponder; Sol Ring; Strip Mine; Thorn of Amethyst; Time Vault; Time Walk; Timetwister; Tinker; Tolarian Academy; Treasure Cruise; Trinisphere; Vampiric Tutor; Wheel of Fortune; Windfall; Yawgmoth's Will
|
||||
|
||||
@@ -29,7 +29,7 @@ Image=natures_vengeance.jpg
|
||||
1 Cultivate|C18
|
||||
1 Deathreap Ritual|C18
|
||||
1 Decimate|C18
|
||||
#1 Emissary of Grudges|C18
|
||||
1 Emissary of Grudges|C18
|
||||
1 Evolving Wilds|C18
|
||||
1 Explore|C18
|
||||
1 Explosive Vegetation|C18
|
||||
|
||||
@@ -8,6 +8,8 @@ import java.util.Map;
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
|
||||
import forge.card.CardDb;
|
||||
import forge.util.TextUtil;
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
import org.w3c.dom.NodeList;
|
||||
@@ -113,8 +115,31 @@ public class CardPreferences {
|
||||
}
|
||||
if (preferredArt0.equals(preferredArt)) { return; }
|
||||
|
||||
if (FModel.getMagicDb().getCommonCards().setPreferredArt(cardName, preferredArt0)) {
|
||||
preferredArt = preferredArt0;
|
||||
try {
|
||||
String infoCardName;
|
||||
String infoSetCode;
|
||||
int infoArtIndex;
|
||||
String[] prefArtInfos =TextUtil.split(preferredArt0, CardDb.NameSetSeparator);
|
||||
if (prefArtInfos.length == 2){
|
||||
// legacy format
|
||||
infoCardName = this.cardName;
|
||||
infoSetCode = prefArtInfos[0];
|
||||
infoArtIndex = Integer.parseInt(prefArtInfos[1]);
|
||||
} else {
|
||||
infoCardName = prefArtInfos[0];
|
||||
infoSetCode = prefArtInfos[1];
|
||||
infoArtIndex = Integer.parseInt(prefArtInfos[2]);
|
||||
}
|
||||
if (!this.cardName.equals(infoCardName)) // extra sanity check
|
||||
return;
|
||||
if (FModel.getMagicDb().getCommonCards().setPreferredArt(cardName, infoSetCode, infoArtIndex))
|
||||
preferredArt = preferredArt0;
|
||||
} catch (NumberFormatException ex){
|
||||
System.err.println("ERROR with Existing Preferred Card Entry: " + preferredArt0);
|
||||
}
|
||||
}
|
||||
|
||||
public void setPreferredArt(String setCode, int artIndex) {
|
||||
this.setPreferredArt(setCode + CardDb.NameSetSeparator + artIndex);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user