mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 03:38:01 +00:00
- Reverting r29415-29422 for now because the UTF-8 characters prove to be problematic for the player unless they are transparent enough when searching for cards and typing card names (including the deck editor).
- Before having to revert these changes I managed to get the game to recognize both accented and unaccented card names in decks and for the purposes of card picture file names. However, I was not successful in implementing the similar level of transparency in the deck editor and in the card search box (e.g. "Add Card To Hand" - that type of thing). - To continue working on this project, feel free to revert this commit locally and update the functionality to be more transparent and intuitive for the end user.
This commit is contained in:
@@ -42,7 +42,6 @@ public final class CardDb implements ICardDatabase, IDeckGenPool {
|
|||||||
// need this to obtain cardReference by name+set+artindex
|
// need this to obtain cardReference by name+set+artindex
|
||||||
private final ListMultimap<String, PaperCard> allCardsByName = Multimaps.newListMultimap(new TreeMap<String,Collection<PaperCard>>(String.CASE_INSENSITIVE_ORDER), CollectionSuppliers.<PaperCard>arrayLists());
|
private final ListMultimap<String, PaperCard> allCardsByName = Multimaps.newListMultimap(new TreeMap<String,Collection<PaperCard>>(String.CASE_INSENSITIVE_ORDER), CollectionSuppliers.<PaperCard>arrayLists());
|
||||||
private final Map<String, PaperCard> uniqueCardsByName = new TreeMap<String, PaperCard>(String.CASE_INSENSITIVE_ORDER);
|
private final Map<String, PaperCard> uniqueCardsByName = new TreeMap<String, PaperCard>(String.CASE_INSENSITIVE_ORDER);
|
||||||
private final Map<String, String> accentedCardNameEquivalents = new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER);
|
|
||||||
private final Map<String, CardRules> rulesByName;
|
private final Map<String, CardRules> rulesByName;
|
||||||
private static Map<String, String> artPrefs = new HashMap<String, String>();
|
private static Map<String, String> artPrefs = new HashMap<String, String>();
|
||||||
|
|
||||||
@@ -166,7 +165,7 @@ public final class CardDb implements ICardDatabase, IDeckGenPool {
|
|||||||
|
|
||||||
for (CardRules cr : rulesByName.values()) {
|
for (CardRules cr : rulesByName.values()) {
|
||||||
if (!allCardsByName.containsKey(cr.getName())) {
|
if (!allCardsByName.containsKey(cr.getName())) {
|
||||||
System.err.println(String.format("The card %s was not assigned to any set. Adding it to UNKNOWN set... to fix see res/editions/ folder. ", cr.getName()));
|
System.err.println("The card " + cr.getName() + " was not assigned to any set. Adding it to UNKNOWN set... to fix see res/cardeditions/ folder. ");
|
||||||
addCard(new PaperCard(cr, CardEdition.UNKNOWN.getCode(), CardRarity.Special, 1));
|
addCard(new PaperCard(cr, CardEdition.UNKNOWN.getCode(), CardRarity.Special, 1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -185,13 +184,6 @@ public final class CardDb implements ICardDatabase, IDeckGenPool {
|
|||||||
uniqueCardsByName.put(kv.getKey(), getFirstWithImage(kv.getValue()));
|
uniqueCardsByName.put(kv.getKey(), getFirstWithImage(kv.getValue()));
|
||||||
allCards.addAll(kv.getValue());
|
allCards.addAll(kv.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
for (String name : allCardsByName.keySet()) {
|
|
||||||
if (StringUtils.containsAny(name, "áàâéèêúùûíìîóòô")) {
|
|
||||||
String equivName = StringUtils.replaceChars(name, "áàâéèêúùûíìîóòô", "aaaeeeuuuiiiooo");
|
|
||||||
accentedCardNameEquivalents.put(equivName, name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static PaperCard getFirstWithImage(final Collection<PaperCard> cards) {
|
private static PaperCard getFirstWithImage(final Collection<PaperCard> cards) {
|
||||||
@@ -547,15 +539,6 @@ public final class CardDb implements ICardDatabase, IDeckGenPool {
|
|||||||
return new PaperCard(CardRules.getUnsupportedCardNamed(request.cardName), cE.getCode(), cR, 1);
|
return new PaperCard(CardRules.getUnsupportedCardNamed(request.cardName), cE.getCode(), cR, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public String getEquivalentCardName(String name) {
|
|
||||||
boolean hasSetInfo = name.indexOf('|') != -1;
|
|
||||||
String cardName = !hasSetInfo ? name : StringUtils.substring(name, 0, name.indexOf('|'));
|
|
||||||
String setInfo = !hasSetInfo ? "" : StringUtils.substring(name, name.indexOf("|"));
|
|
||||||
return accentedCardNameEquivalents.containsKey(cardName) ? String.format("%s%s", accentedCardNameEquivalents.get(cardName), setInfo) :
|
|
||||||
String.format("%s%s", name, setInfo);
|
|
||||||
}
|
|
||||||
|
|
||||||
private final Editor editor = new Editor();
|
private final Editor editor = new Editor();
|
||||||
public Editor getEditor() { return editor; }
|
public Editor getEditor() { return editor; }
|
||||||
public class Editor {
|
public class Editor {
|
||||||
@@ -620,6 +603,5 @@ public final class CardDb implements ICardDatabase, IDeckGenPool {
|
|||||||
public void setImmediateReindex(boolean immediateReindex) {
|
public void setImmediateReindex(boolean immediateReindex) {
|
||||||
this.immediateReindex = immediateReindex;
|
this.immediateReindex = immediateReindex;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,20 +63,9 @@ public class CardPool extends ItemPool<PaperCard> {
|
|||||||
// NOTE: ART indices are "1" -based
|
// NOTE: ART indices are "1" -based
|
||||||
public void add(String cardName, String setCode, final int artIndex, final int amount) {
|
public void add(String cardName, String setCode, final int artIndex, final int amount) {
|
||||||
PaperCard cp = StaticData.instance().getCommonCards().getCard(cardName, setCode, artIndex);
|
PaperCard cp = StaticData.instance().getCommonCards().getCard(cardName, setCode, artIndex);
|
||||||
String equivName = StaticData.instance().getCommonCards().getEquivalentCardName(cardName);
|
|
||||||
|
|
||||||
if (cp == null && !cardName.equals(equivName)) {
|
|
||||||
// try the equivalent card name
|
|
||||||
cp = StaticData.instance().getCommonCards().getCard(equivName, setCode, artIndex);
|
|
||||||
}
|
|
||||||
|
|
||||||
boolean isCommonCard = cp != null;
|
boolean isCommonCard = cp != null;
|
||||||
if (!isCommonCard) {
|
if (!isCommonCard) {
|
||||||
cp = StaticData.instance().getVariantCards().getCard(cardName, setCode);
|
cp = StaticData.instance().getVariantCards().getCard(cardName, setCode);
|
||||||
if (cp == null && !cardName.equals(equivName)) {
|
|
||||||
// try the equivalent card name
|
|
||||||
cp = StaticData.instance().getVariantCards().getCard(equivName, setCode, artIndex);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean artIndexExplicitlySet = artIndex > 0 || Character.isDigit(cardName.charAt(cardName.length()-1)) && cardName.charAt(cardName.length()-2) == CardDb.NameSetSeparator;
|
boolean artIndexExplicitlySet = artIndex > 0 || Character.isDigit(cardName.charAt(cardName.length()-1)) && cardName.charAt(cardName.length()-2) == CardDb.NameSetSeparator;
|
||||||
|
|||||||
@@ -8,14 +8,15 @@ import forge.card.CardDb;
|
|||||||
import forge.card.CardRules;
|
import forge.card.CardRules;
|
||||||
import forge.card.CardSplitType;
|
import forge.card.CardSplitType;
|
||||||
import forge.item.PaperCard;
|
import forge.item.PaperCard;
|
||||||
|
import forge.util.Base64Coder;
|
||||||
|
|
||||||
public class ImageUtil {
|
public class ImageUtil {
|
||||||
public static float getNearestHQSize(final float baseSize, final float actualSize) {
|
public static float getNearestHQSize(float baseSize, float actualSize) {
|
||||||
//get nearest power of actualSize to baseSize so that the image renders good
|
//get nearest power of actualSize to baseSize so that the image renders good
|
||||||
return Math.round(actualSize) * (float)Math.pow(2, Math.round(Math.log(baseSize / actualSize) / Math.log(2)));
|
return (float)Math.round(actualSize) * (float)Math.pow(2, (double)Math.round(Math.log((double)(baseSize / actualSize)) / Math.log(2)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static PaperCard getPaperCardFromImageKey(final String key) {
|
public static PaperCard getPaperCardFromImageKey(String key) {
|
||||||
if ( key == null ) {
|
if ( key == null ) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -27,15 +28,15 @@ public class ImageUtil {
|
|||||||
return cp;
|
return cp;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getImageRelativePath(final PaperCard cp, final boolean backFace, final boolean includeSet, final boolean isDownloadUrl) {
|
public static String getImageRelativePath(PaperCard cp, boolean backFace, boolean includeSet, boolean isDownloadUrl) {
|
||||||
final String nameToUse = cp == null ? null : getNameToUse(cp, backFace);
|
final String nameToUse = cp == null ? null : getNameToUse(cp, backFace);
|
||||||
if (nameToUse == null) {
|
if (nameToUse == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
final StringBuilder s = new StringBuilder();
|
StringBuilder s = new StringBuilder();
|
||||||
|
|
||||||
final CardRules card = cp.getRules();
|
CardRules card = cp.getRules();
|
||||||
final String edition = cp.getEdition();
|
String edition = cp.getEdition();
|
||||||
s.append(toMWSFilename(nameToUse));
|
s.append(toMWSFilename(nameToUse));
|
||||||
|
|
||||||
final int cntPictures;
|
final int cntPictures;
|
||||||
@@ -46,19 +47,18 @@ public class ImageUtil {
|
|||||||
hasManyPictures = cntPictures > 1;
|
hasManyPictures = cntPictures > 1;
|
||||||
} else {
|
} else {
|
||||||
// without set number of pictures equals number of urls provided in Svar:Picture
|
// without set number of pictures equals number of urls provided in Svar:Picture
|
||||||
final String urls = card.getPictureUrl(backFace);
|
String urls = card.getPictureUrl(backFace);
|
||||||
cntPictures = StringUtils.countMatches(urls, "\\") + 1;
|
cntPictures = StringUtils.countMatches(urls, "\\") + 1;
|
||||||
|
|
||||||
// raise the art index limit to the maximum of the sets this card was printed in
|
// raise the art index limit to the maximum of the sets this card was printed in
|
||||||
final int maxCntPictures = db.getMaxPrintCount(card.getName());
|
int maxCntPictures = db.getMaxPrintCount(card.getName());
|
||||||
hasManyPictures = maxCntPictures > 1;
|
hasManyPictures = maxCntPictures > 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int artIdx = cp.getArtIndex() - 1;
|
int artIdx = cp.getArtIndex() - 1;
|
||||||
if (hasManyPictures) {
|
if (hasManyPictures) {
|
||||||
if ( cntPictures <= artIdx ) {
|
if ( cntPictures <= artIdx ) // prevent overflow
|
||||||
artIdx = cntPictures == 0 ? 0 : artIdx % cntPictures;
|
artIdx = cntPictures == 0 ? 0 : artIdx % cntPictures;
|
||||||
}
|
|
||||||
s.append(artIdx + 1);
|
s.append(artIdx + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -76,49 +76,41 @@ public class ImageUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (includeSet) {
|
if (includeSet) {
|
||||||
final String editionAliased = isDownloadUrl ? StaticData.instance().getEditions().getCode2ByCode(edition) : ImageKeys.getSetFolder(edition);
|
String editionAliased = isDownloadUrl ? StaticData.instance().getEditions().getCode2ByCode(edition) : ImageKeys.getSetFolder(edition);
|
||||||
return String.format("%s/%s", editionAliased, fname);
|
return String.format("%s/%s", editionAliased, fname);
|
||||||
} else {
|
} else {
|
||||||
return fname;
|
return fname;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean hasBackFacePicture(final PaperCard cp) {
|
public static boolean hasBackFacePicture(PaperCard cp) {
|
||||||
final CardSplitType cst = cp.getRules().getSplitType();
|
CardSplitType cst = cp.getRules().getSplitType();
|
||||||
return cst == CardSplitType.Transform || cst == CardSplitType.Flip;
|
return cst == CardSplitType.Transform || cst == CardSplitType.Flip;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getNameToUse(final PaperCard cp, final boolean backFace) {
|
public static String getNameToUse(PaperCard cp, boolean backFace) {
|
||||||
final CardRules card = cp.getRules();
|
final CardRules card = cp.getRules();
|
||||||
final String nameToUse;
|
|
||||||
if (backFace ) {
|
if (backFace ) {
|
||||||
if (hasBackFacePicture(cp)) {
|
if ( hasBackFacePicture(cp) )
|
||||||
nameToUse = card.getOtherPart().getName();
|
return card.getOtherPart().getName();
|
||||||
} else {
|
else
|
||||||
return null;
|
return null;
|
||||||
}
|
|
||||||
} else if(CardSplitType.Split == cp.getRules().getSplitType()) {
|
} else if(CardSplitType.Split == cp.getRules().getSplitType()) {
|
||||||
nameToUse = card.getMainPart().getName() + card.getOtherPart().getName();
|
return card.getMainPart().getName() + card.getOtherPart().getName();
|
||||||
} else {
|
} else {
|
||||||
nameToUse = cp.getName();
|
return cp.getName();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return formatName(nameToUse);
|
public static String getImageKey(PaperCard cp, boolean backFace, boolean includeSet) {
|
||||||
}
|
|
||||||
|
|
||||||
private static String formatName(final String name) {
|
|
||||||
return StringUtils.replaceChars(name, "áàâéèêúùûíìîóòô", "aaaeeeuuuiiiooo");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getImageKey(final PaperCard cp, final boolean backFace, final boolean includeSet) {
|
|
||||||
return getImageRelativePath(cp, backFace, includeSet, false);
|
return getImageRelativePath(cp, backFace, includeSet, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getDownloadUrl(final PaperCard cp, final boolean backFace) {
|
public static String getDownloadUrl(PaperCard cp, boolean backFace) {
|
||||||
return getImageRelativePath(cp, backFace, true, true);
|
return getImageRelativePath(cp, backFace, true, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String toMWSFilename(final String in) {
|
public static String toMWSFilename(String in) {
|
||||||
final StringBuffer out = new StringBuffer();
|
final StringBuffer out = new StringBuffer();
|
||||||
char c;
|
char c;
|
||||||
for (int i = 0; i < in.length(); i++) {
|
for (int i = 0; i < in.length(); i++) {
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ public final class SResizingUtil {
|
|||||||
existingComponents.add(c);
|
existingComponents.add(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
// This is the core of the pixel-perfect layout. To avoid ±1 px errors on borders
|
// This is the core of the pixel-perfect layout. To avoid <EFBFBD>1 px errors on borders
|
||||||
// from rounding individual panels, the intermediate values (exactly accurate, in %)
|
// from rounding individual panels, the intermediate values (exactly accurate, in %)
|
||||||
// for width and height are rounded based on comparison to other panels in the
|
// for width and height are rounded based on comparison to other panels in the
|
||||||
// layout. This is to avoid errors such as:
|
// layout. This is to avoid errors such as:
|
||||||
|
|||||||
@@ -8,31 +8,6 @@ Forge Beta: #-#-2015 ver 1.5.39
|
|||||||
Release Notes
|
Release Notes
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
- Special characters in card names -
|
|
||||||
Many cards with special characters in their names, most notably those whose name
|
|
||||||
contains "Lim-Dûl", have been fixed to contain those characters. Your deck
|
|
||||||
files will be updated automatically if you load them in deck editor and save
|
|
||||||
them, there should be no need for manual intervention. The full list of cards is
|
|
||||||
as follows:
|
|
||||||
- Dandân
|
|
||||||
- Déjà Vu
|
|
||||||
- El Hallâj
|
|
||||||
- Ghazbán Ogre
|
|
||||||
- Ifh-Bíff Efreet
|
|
||||||
- Junún Efreet
|
|
||||||
- Juzám Djinn
|
|
||||||
- Khabál Ghoul
|
|
||||||
- Legions of Lim-Dûl
|
|
||||||
- Lim-Dûl the Necromancer
|
|
||||||
- Lim-Dûl's Cohort
|
|
||||||
- Lim-Dûl's Hex
|
|
||||||
- Lim-Dûl's High Guard
|
|
||||||
- Lim-Dûl's Paladin
|
|
||||||
- Lim-Dûl's Vault
|
|
||||||
- Márton Stromgald
|
|
||||||
- Oath of Lim-Dûl
|
|
||||||
- Séance
|
|
||||||
|
|
||||||
- Morph/Manifest images -
|
- Morph/Manifest images -
|
||||||
Forge now supports proper images for face-down creatures. In order to correctly
|
Forge now supports proper images for face-down creatures. In order to correctly
|
||||||
use these images, it's necessary to remove a file in your picture directory
|
use these images, it's necessary to remove a file in your picture directory
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
Name:Dandân
|
Name:Dandan
|
||||||
ManaCost:U U
|
ManaCost:U U
|
||||||
Types:Creature Fish
|
Types:Creature Fish
|
||||||
PT:4/1
|
PT:4/1
|
||||||
@@ -7,4 +7,4 @@ T:Mode$ Always | TriggerZones$ Battlefield | IsPresent$ Island.YouCtrl | Present
|
|||||||
SVar:TrigSac:AB$Sacrifice | Cost$ 0 | Defined$ Self
|
SVar:TrigSac:AB$Sacrifice | Cost$ 0 | Defined$ Self
|
||||||
SVar:NeedsToPlay:Island.YouCtrl
|
SVar:NeedsToPlay:Island.YouCtrl
|
||||||
SVar:Picture:http://resources.wizards.com/magic/cards/tsb/en-us/card106631.jpg
|
SVar:Picture:http://resources.wizards.com/magic/cards/tsb/en-us/card106631.jpg
|
||||||
Oracle:Dandân can't attack unless defending player controls an Island.\nWhen you control no Islands, sacrifice Dandân.
|
Oracle:Dandan can't attack unless defending player controls an Island.\nWhen you control no Islands, sacrifice Dandan.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
Name:Déjà Vu
|
Name:Deja Vu
|
||||||
ManaCost:2 U
|
ManaCost:2 U
|
||||||
Types:Sorcery
|
Types:Sorcery
|
||||||
A:SP$ ChangeZone | Cost$ 2 U | Origin$ Graveyard | Destination$ Hand | TgtPrompt$ Choose target sorcery card in your graveyard | ValidTgts$ Sorcery.YouCtrl | SpellDescription$ Return target sorcery card from your graveyard to your hand.
|
A:SP$ ChangeZone | Cost$ 2 U | Origin$ Graveyard | Destination$ Hand | TgtPrompt$ Choose target sorcery card in your graveyard | ValidTgts$ Sorcery.YouCtrl | SpellDescription$ Return target sorcery card from your graveyard to your hand.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
Name:El-Hajjâj
|
Name:El-Hajjaj
|
||||||
ManaCost:1 B B
|
ManaCost:1 B B
|
||||||
Types:Creature Human Wizard
|
Types:Creature Human Wizard
|
||||||
PT:1/1
|
PT:1/1
|
||||||
@@ -7,4 +7,4 @@ SVar:TrigGain:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ X | References$
|
|||||||
SVar:X:TriggerCount$DamageAmount
|
SVar:X:TriggerCount$DamageAmount
|
||||||
SVar:HasCombatEffect:TRUE
|
SVar:HasCombatEffect:TRUE
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/el_hajjaj.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/el_hajjaj.jpg
|
||||||
Oracle:Whenever El-Hajjâj deals damage, you gain that much life.
|
Oracle:Whenever El-Hajjaj deals damage, you gain that much life.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
Name:Ghazbán Ogre
|
Name:Ghazban Ogre
|
||||||
ManaCost:G
|
ManaCost:G
|
||||||
Types:Creature Ogre
|
Types:Creature Ogre
|
||||||
PT:2/2
|
PT:2/2
|
||||||
@@ -6,4 +6,4 @@ T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | A
|
|||||||
SVar:TrigOppControl:AB$ GainControl | Cost$ 0 | Defined$ Self | NewController$ Player.withMostLife
|
SVar:TrigOppControl:AB$ GainControl | Cost$ 0 | Defined$ Self | NewController$ Player.withMostLife
|
||||||
SVar:RemAIDeck:True
|
SVar:RemAIDeck:True
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/ghazban_ogre.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/ghazban_ogre.jpg
|
||||||
Oracle:At the beginning of your upkeep, if a player has more life than each other player, the player with the most life gains control of Ghazbán Ogre.
|
Oracle:At the beginning of your upkeep, if a player has more life than each other player, the player with the most life gains control of Ghazban Ogre.
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
Name:Ifh-Bíff Efreet
|
Name:Ifh-Biff Efreet
|
||||||
ManaCost:2 G G
|
ManaCost:2 G G
|
||||||
Types:Creature Efreet
|
Types:Creature Efreet
|
||||||
PT:3/3
|
PT:3/3
|
||||||
K:Flying
|
K:Flying
|
||||||
A:AB$ DamageAll | Cost$ G | NumDmg$ 1 | ValidCards$ Creature.withFlying | ValidPlayers$ Each | ValidDescription$ each creature with flying and each player. | AnyPlayer$ True | SpellDescription$ CARDNAME deals 1 damage to each creature with flying and each player. Any player may activate this ability.
|
A:AB$ DamageAll | Cost$ G | NumDmg$ 1 | ValidCards$ Creature.withFlying | ValidPlayers$ Each | ValidDescription$ each creature with flying and each player. | AnyPlayer$ True | SpellDescription$ CARDNAME deals 1 damage to each creature with flying and each player. Any player may activate this ability.
|
||||||
SVar:Picture:http://resources.wizards.com/magic/cards/an/en-us/card947.jpg
|
SVar:Picture:http://resources.wizards.com/magic/cards/an/en-us/card947.jpg
|
||||||
Oracle:Flying\n{G}: Ifh-Bíff Efreet deals 1 damage to each creature with flying and each player. Any player may activate this ability.
|
Oracle:Flying\n{G}: Ifh-Biff Efreet deals 1 damage to each creature with flying and each player. Any player may activate this ability.
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
Name:Junún Efreet
|
Name:Junun Efreet
|
||||||
ManaCost:1 B B
|
ManaCost:1 B B
|
||||||
Types:Creature Efreet
|
Types:Creature Efreet
|
||||||
PT:3/3
|
PT:3/3
|
||||||
K:Flying
|
K:Flying
|
||||||
K:At the beginning of your upkeep, sacrifice CARDNAME unless you pay B B
|
K:At the beginning of your upkeep, sacrifice CARDNAME unless you pay B B
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/junun_efreet.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/junun_efreet.jpg
|
||||||
Oracle:Flying\nAt the beginning of your upkeep, sacrifice Junún Efreet unless you pay {B}{B}.
|
Oracle:Flying\nAt the beginning of your upkeep, sacrifice Junun Efreet unless you pay {B}{B}.
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
Name:Juzám Djinn
|
Name:Juzam Djinn
|
||||||
ManaCost:2 B B
|
ManaCost:2 B B
|
||||||
Types:Creature Djinn
|
Types:Creature Djinn
|
||||||
PT:5/5
|
PT:5/5
|
||||||
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ At the beginning of your upkeep, CARDNAME deals 1 damage to you.
|
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ At the beginning of your upkeep, CARDNAME deals 1 damage to you.
|
||||||
SVar:TrigDealDamage:AB$DealDamage | Cost$ 0 | Defined$ You | NumDmg$ 1
|
SVar:TrigDealDamage:AB$DealDamage | Cost$ 0 | Defined$ You | NumDmg$ 1
|
||||||
SVar:Picture:http://resources.wizards.com/magic/cards/an/en-us/card922.jpg
|
SVar:Picture:http://resources.wizards.com/magic/cards/an/en-us/card922.jpg
|
||||||
Oracle:At the beginning of your upkeep, Juzám Djinn deals 1 damage to you.
|
Oracle:At the beginning of your upkeep, Juzam Djinn deals 1 damage to you.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
Name:Khabál Ghoul
|
Name:Khabal Ghoul
|
||||||
ManaCost:2 B
|
ManaCost:2 B
|
||||||
Types:Creature Zombie
|
Types:Creature Zombie
|
||||||
PT:1/1
|
PT:1/1
|
||||||
@@ -6,4 +6,4 @@ T:Mode$ Phase | Phase$ End of Turn | TriggerZones$ Battlefield | Execute$ TrigPu
|
|||||||
SVar:TrigPutCounter:AB$PutCounter | Cost$ 0 | Defined$ Self | CounterType$ P1P1 | CounterNum$ X | References$ X
|
SVar:TrigPutCounter:AB$PutCounter | Cost$ 0 | Defined$ Self | CounterType$ P1P1 | CounterNum$ X | References$ X
|
||||||
SVar:X:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature
|
SVar:X:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/khabal_ghoul.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/khabal_ghoul.jpg
|
||||||
Oracle:At the beginning of each end step, put a +1/+1 counter on Khabál Ghoul for each creature that died this turn.
|
Oracle:At the beginning of each end step, put a +1/+1 counter on Khabal Ghoul for each creature that died this turn.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
Name:Legions of Lim-Dûl
|
Name:Legions of Lim-Dul
|
||||||
ManaCost:1 B B
|
ManaCost:1 B B
|
||||||
Types:Creature Zombie
|
Types:Creature Zombie
|
||||||
PT:2/3
|
PT:2/3
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
Name:Lim-Dûl the Necromancer
|
Name:Lim-Dul the Necromancer
|
||||||
ManaCost:5 B B
|
ManaCost:5 B B
|
||||||
Types:Legendary Creature Human Wizard
|
Types:Legendary Creature Human Wizard
|
||||||
PT:4/4
|
PT:4/4
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
Name:Lim-Dûl's Cohort
|
Name:Lim-Dul's Cohort
|
||||||
ManaCost:1 B B
|
ManaCost:1 B B
|
||||||
Types:Creature Zombie
|
Types:Creature Zombie
|
||||||
PT:2/3
|
PT:2/3
|
||||||
@@ -7,4 +7,4 @@ T:Mode$ AttackerBlockedByCreature | ValidCard$ Card.Self | ValidBlocker$ Creatur
|
|||||||
SVar:TrigBlocks:AB$Pump | Cost$ 0 | Defined$ TriggeredAttacker | KW$ HIDDEN CARDNAME can't be regenerated.
|
SVar:TrigBlocks:AB$Pump | Cost$ 0 | Defined$ TriggeredAttacker | KW$ HIDDEN CARDNAME can't be regenerated.
|
||||||
SVar:TrigBlocked:AB$Pump | Cost$ 0 | Defined$ TriggeredBlocker | KW$ HIDDEN CARDNAME can't be regenerated.
|
SVar:TrigBlocked:AB$Pump | Cost$ 0 | Defined$ TriggeredBlocker | KW$ HIDDEN CARDNAME can't be regenerated.
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/lim_duls_cohort.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/lim_duls_cohort.jpg
|
||||||
Oracle:Whenever Lim-Dûl's Cohort blocks or becomes blocked by a creature, that creature can't be regenerated this turn.
|
Oracle:Whenever Lim-Dul's Cohort blocks or becomes blocked by a creature, that creature can't be regenerated this turn.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
Name:Lim-Dûl's Hex
|
Name:Lim-Dul's Hex
|
||||||
ManaCost:1 B
|
ManaCost:1 B
|
||||||
Types:Enchantment
|
Types:Enchantment
|
||||||
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigRepeat | TriggerDescription$ At the beginning of your upkeep, for each player, CARDNAME deals 1 damage to that player unless he or she pays {B} or {3}.
|
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigRepeat | TriggerDescription$ At the beginning of your upkeep, for each player, CARDNAME deals 1 damage to that player unless he or she pays {B} or {3}.
|
||||||
@@ -7,4 +7,4 @@ SVar:DBChoose:DB$ GenericChoice | Defined$ Player.IsRemembered | Choices$ PayB,P
|
|||||||
SVar:PayB:DB$ DealDamage | Defined$ Player.IsRemembered | NumDmg$ 1 | UnlessCost$ B | UnlessPayer$ Player.IsRemembered | SpellDescription$ CARDNAME deals 1 damage to you unless you pay {B}
|
SVar:PayB:DB$ DealDamage | Defined$ Player.IsRemembered | NumDmg$ 1 | UnlessCost$ B | UnlessPayer$ Player.IsRemembered | SpellDescription$ CARDNAME deals 1 damage to you unless you pay {B}
|
||||||
SVar:Pay3:DB$ DealDamage | Defined$ Player.IsRemembered | NumDmg$ 1 | UnlessCost$ 3 | UnlessPayer$ Player.IsRemembered | SpellDescription$ CARDNAME deals 1 damage to you unless you pay {3}
|
SVar:Pay3:DB$ DealDamage | Defined$ Player.IsRemembered | NumDmg$ 1 | UnlessCost$ 3 | UnlessPayer$ Player.IsRemembered | SpellDescription$ CARDNAME deals 1 damage to you unless you pay {3}
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/lim_duls_hex.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/lim_duls_hex.jpg
|
||||||
Oracle:At the beginning of your upkeep, for each player, Lim-Dûl's Hex deals 1 damage to that player unless he or she pays {B} or {3}.
|
Oracle:At the beginning of your upkeep, for each player, Lim-Dul's Hex deals 1 damage to that player unless he or she pays {B} or {3}.
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
Name:Lim-Dûl's High Guard
|
Name:Lim-Dul's High Guard
|
||||||
ManaCost:1 B B
|
ManaCost:1 B B
|
||||||
Types:Creature Skeleton
|
Types:Creature Skeleton
|
||||||
PT:2/1
|
PT:2/1
|
||||||
K:First Strike
|
K:First Strike
|
||||||
A:AB$ Regenerate | Cost$ 1 B | SpellDescription$ Regenerate CARDNAME.
|
A:AB$ Regenerate | Cost$ 1 B | SpellDescription$ Regenerate CARDNAME.
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/lim_duls_high_guard.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/lim_duls_high_guard.jpg
|
||||||
Oracle:First strike\n{1}{B}: Regenerate Lim-Dûl's High Guard.
|
Oracle:First strike\n{1}{B}: Regenerate Lim-Dul's High Guard.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
Name:Lim-Dûl's Paladin
|
Name:Lim-Dul's Paladin
|
||||||
ManaCost:2 B R
|
ManaCost:2 B R
|
||||||
Types:Creature Human Knight
|
Types:Creature Human Knight
|
||||||
PT:0/3
|
PT:0/3
|
||||||
@@ -16,4 +16,4 @@ SVar:DBLoseLife:DB$ LoseLife | Defined$ DefendingPlayer | LifeAmount$ 4
|
|||||||
SVar:X:Remembered$Amount
|
SVar:X:Remembered$Amount
|
||||||
SVar:RemAIDeck:True
|
SVar:RemAIDeck:True
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/lim_duls_paladin.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/lim_duls_paladin.jpg
|
||||||
Oracle:Trample\nAt the beginning of your upkeep, you may discard a card. If you don't, sacrifice Lim-Dûl's Paladin and draw a card.\nWhenever Lim-Dûl's Paladin becomes blocked, it gets +6/+3 until end of turn.\nWhenever Lim-Dûl's Paladin attacks and isn't blocked, it assigns no combat damage to defending player this turn and that player loses 4 life.
|
Oracle:Trample\nAt the beginning of your upkeep, you may discard a card. If you don't, sacrifice Lim-Dul's Paladin and draw a card.\nWhenever Lim-Dul's Paladin becomes blocked, it gets +6/+3 until end of turn.\nWhenever Lim-Dul's Paladin attacks and isn't blocked, it assigns no combat damage to defending player this turn and that player loses 4 life.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
Name:Lim-Dûl's Vault
|
Name:Lim-Dul's Vault
|
||||||
ManaCost:U B
|
ManaCost:U B
|
||||||
Types:Instant
|
Types:Instant
|
||||||
A:SP$ Dig | Cost$ U B | DigNum$ 5 | NoMove$ True | SubAbility$ DBRepeat | RememberRevealed$ True | StackDescription$ SpellDescription | SpellDescription$ Look at the top five cards of your library. As many times as you choose, you may pay 1 life, put those cards on the bottom of your library in any order, then look at the top five cards of your library. Then shuffle your library and put the last cards you looked at this way on top of it in any order.
|
A:SP$ Dig | Cost$ U B | DigNum$ 5 | NoMove$ True | SubAbility$ DBRepeat | RememberRevealed$ True | StackDescription$ SpellDescription | SpellDescription$ Look at the top five cards of your library. As many times as you choose, you may pay 1 life, put those cards on the bottom of your library in any order, then look at the top five cards of your library. Then shuffle your library and put the last cards you looked at this way on top of it in any order.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
Name:Márton Stromgald
|
Name:Marton Stromgald
|
||||||
ManaCost:2 R R
|
ManaCost:2 R R
|
||||||
Types:Legendary Creature Human Knight
|
Types:Legendary Creature Human Knight
|
||||||
PT:1/1
|
PT:1/1
|
||||||
@@ -9,4 +9,4 @@ T:Mode$ Blocks | ValidCard$ Card.Self | Triggerzones$ Battlefield | Execute$ Tri
|
|||||||
SVar:TrigPumpBlock:AB$ PumpAll | Cost$ 0 | ValidCards$ Creature.blocking+Other | NumAtt$ Y | NumDef$ Y | References$ Y
|
SVar:TrigPumpBlock:AB$ PumpAll | Cost$ 0 | ValidCards$ Creature.blocking+Other | NumAtt$ Y | NumDef$ Y | References$ Y
|
||||||
SVar:Y:Count$Valid Creature.blocking+Other
|
SVar:Y:Count$Valid Creature.blocking+Other
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/marton_stromgald.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/marton_stromgald.jpg
|
||||||
Oracle:Whenever Márton Stromgald attacks, other attacking creatures get +1/+1 until end of turn for each attacking creature other than Márton Stromgald.\nWhenever Márton Stromgald blocks, other blocking creatures get +1/+1 until end of turn for each blocking creature other than Márton Stromgald.
|
Oracle:Whenever Marton Stromgald attacks, other attacking creatures get +1/+1 until end of turn for each attacking creature other than Marton Stromgald.\nWhenever Marton Stromgald blocks, other blocking creatures get +1/+1 until end of turn for each blocking creature other than Marton Stromgald.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
Name:Oath of Lim-Dûl
|
Name:Oath of Lim-Dul
|
||||||
ManaCost:3 B
|
ManaCost:3 B
|
||||||
Types:Enchantment
|
Types:Enchantment
|
||||||
T:Mode$ LifeLost | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigLimDulSac | TriggerDescription$ Whenever you lose life, for each 1 life you lost, sacrifice a permanent other than CARDNAME unless you discard a card. (Damage dealt to you causes you to lose life.)
|
T:Mode$ LifeLost | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigLimDulSac | TriggerDescription$ Whenever you lose life, for each 1 life you lost, sacrifice a permanent other than CARDNAME unless you discard a card. (Damage dealt to you causes you to lose life.)
|
||||||
@@ -8,4 +8,4 @@ A:AB$ Draw | Cost$ B B | NumCards$ 1 | SpellDescription$ Draw a card.
|
|||||||
SVar:X:TriggerCount$LifeAmount
|
SVar:X:TriggerCount$LifeAmount
|
||||||
SVar:RemAIDeck:True
|
SVar:RemAIDeck:True
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/oath_of_lim_dul.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/oath_of_lim_dul.jpg
|
||||||
Oracle:Whenever you lose life, for each 1 life you lost, sacrifice a permanent other than Oath of Lim-Dûl unless you discard a card. (Damage dealt to you causes you to lose life.)\n{B}{B}: Draw a card.
|
Oracle:Whenever you lose life, for each 1 life you lost, sacrifice a permanent other than Oath of Lim-Dul unless you discard a card. (Damage dealt to you causes you to lose life.)\n{B}{B}: Draw a card.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
Name:Séance
|
Name:Seance
|
||||||
ManaCost:2 W W
|
ManaCost:2 W W
|
||||||
Types:Enchantment
|
Types:Enchantment
|
||||||
T:Mode$ Phase | Phase$ Upkeep | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigExile | TriggerDescription$ At the beginning of each upkeep, you may exile target creature card from your graveyard. If you do, put a token onto the batttlefield that's a copy of that card except it's a Spirit in addition to its other types. Exile it at the beginning of the next end step.
|
T:Mode$ Phase | Phase$ Upkeep | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigExile | TriggerDescription$ At the beginning of each upkeep, you may exile target creature card from your graveyard. If you do, put a token onto the batttlefield that's a copy of that card except it's a Spirit in addition to its other types. Exile it at the beginning of the next end step.
|
||||||
|
|||||||
@@ -15,34 +15,34 @@ Name=ArabianExtended
|
|||||||
1 City in a Bottle|ARN
|
1 City in a Bottle|ARN
|
||||||
1 City of Brass|ARN
|
1 City of Brass|ARN
|
||||||
1 Dancing Scimitar|ARN
|
1 Dancing Scimitar|ARN
|
||||||
1 Dandân|ARN
|
1 Dandan|ARN
|
||||||
1 Desert|ARN
|
1 Desert|ARN
|
||||||
1 Desert Nomads|ARN
|
1 Desert Nomads|ARN
|
||||||
1 Desert Twister|ARN
|
1 Desert Twister|ARN
|
||||||
1 Diamond Valley|ARN
|
1 Diamond Valley|ARN
|
||||||
1 Drop of Honey|ARN
|
1 Drop of Honey|ARN
|
||||||
1 Ebony Horse|ARN
|
1 Ebony Horse|ARN
|
||||||
1 El-Hajjâj|ARN
|
1 El-Hajjaj|ARN
|
||||||
1 Elephant Graveyard|ARN
|
1 Elephant Graveyard|ARN
|
||||||
1 Erg Raiders|ARN
|
1 Erg Raiders|ARN
|
||||||
1 Erhnam Djinn|ARN
|
1 Erhnam Djinn|ARN
|
||||||
1 Fishliver Oil|ARN
|
1 Fishliver Oil|ARN
|
||||||
1 Flying Carpet|ARN
|
1 Flying Carpet|ARN
|
||||||
1 Flying Men|ARN
|
1 Flying Men|ARN
|
||||||
1 Ghazbán Ogre|ARN
|
1 Ghazban Ogre|ARN
|
||||||
1 Giant Tortoise|ARN
|
1 Giant Tortoise|ARN
|
||||||
1 Hasran Ogress|ARN
|
1 Hasran Ogress|ARN
|
||||||
1 Hurr Jackal|ARN
|
1 Hurr Jackal|ARN
|
||||||
1 Ifh-Bíff Efreet|ARN
|
1 Ifh-Biff Efreet|ARN
|
||||||
1 Island Fish Jasconius|ARN
|
1 Island Fish Jasconius|ARN
|
||||||
1 Island of Wak-Wak|ARN
|
1 Island of Wak-Wak|ARN
|
||||||
1 Jandor's Ring|ARN
|
1 Jandor's Ring|ARN
|
||||||
1 Jandor's Saddlebags|ARN
|
1 Jandor's Saddlebags|ARN
|
||||||
1 Jeweled Bird|ARN
|
1 Jeweled Bird|ARN
|
||||||
1 Jihad|ARN
|
1 Jihad|ARN
|
||||||
1 Junún Efreet|ARN
|
1 Junun Efreet|ARN
|
||||||
1 Juzám Djinn|ARN
|
1 Juzam Djinn|ARN
|
||||||
1 Khabál Ghoul|ARN
|
1 Khabal Ghoul|ARN
|
||||||
1 King Suleiman|ARN
|
1 King Suleiman|ARN
|
||||||
1 Kird Ape|ARN
|
1 Kird Ape|ARN
|
||||||
1 Library of Alexandria|ARN
|
1 Library of Alexandria|ARN
|
||||||
@@ -89,7 +89,7 @@ Name=ArabianExtended
|
|||||||
1 Telim'Tor's Edict|MIR
|
1 Telim'Tor's Edict|MIR
|
||||||
1 Unfulfilled Desires|MIR
|
1 Unfulfilled Desires|MIR
|
||||||
1 Drifting Djinn|USG
|
1 Drifting Djinn|USG
|
||||||
1 El-Hajjâj|3ED
|
1 El-Hajjaj|3ED
|
||||||
1 Emberwilde Caliph|MIR
|
1 Emberwilde Caliph|MIR
|
||||||
1 Island Fish Jasconius|3ED
|
1 Island Fish Jasconius|3ED
|
||||||
1 Mijae Djinn|3ED
|
1 Mijae Djinn|3ED
|
||||||
|
|||||||
@@ -103,10 +103,10 @@ R Lake of the Dead
|
|||||||
C Lat-Nam's Legacy
|
C Lat-Nam's Legacy
|
||||||
C Lat-Nam's Legacy
|
C Lat-Nam's Legacy
|
||||||
R Library of Lat-Nam
|
R Library of Lat-Nam
|
||||||
C Lim-Dûl's High Guard
|
C Lim-Dul's High Guard
|
||||||
C Lim-Dûl's High Guard
|
C Lim-Dul's High Guard
|
||||||
U Lim-Dûl's Paladin
|
U Lim-Dul's Paladin
|
||||||
U Lim-Dûl's Vault
|
U Lim-Dul's Vault
|
||||||
R Lodestone Bauble
|
R Lodestone Bauble
|
||||||
R Lord of Tresserhorn
|
R Lord of Tresserhorn
|
||||||
C Martyrdom
|
C Martyrdom
|
||||||
|
|||||||
@@ -28,14 +28,14 @@ U City of Brass
|
|||||||
C Cuombajj Witches
|
C Cuombajj Witches
|
||||||
U Cyclone
|
U Cyclone
|
||||||
R Dancing Scimitar
|
R Dancing Scimitar
|
||||||
C Dandân
|
C Dandan
|
||||||
C Desert
|
C Desert
|
||||||
C Desert Nomads
|
C Desert Nomads
|
||||||
U Desert Twister
|
U Desert Twister
|
||||||
U Diamond Valley
|
U Diamond Valley
|
||||||
R Drop of Honey
|
R Drop of Honey
|
||||||
R Ebony Horse
|
R Ebony Horse
|
||||||
R El-Hajjâj
|
R El-Hajjaj
|
||||||
R Elephant Graveyard
|
R Elephant Graveyard
|
||||||
C Erg Raiders
|
C Erg Raiders
|
||||||
C Erg Raiders
|
C Erg Raiders
|
||||||
@@ -45,23 +45,23 @@ C Fishliver Oil
|
|||||||
C Fishliver Oil
|
C Fishliver Oil
|
||||||
U Flying Carpet
|
U Flying Carpet
|
||||||
C Flying Men
|
C Flying Men
|
||||||
C Ghazbán Ogre
|
C Ghazban Ogre
|
||||||
C Giant Tortoise
|
C Giant Tortoise
|
||||||
C Giant Tortoise
|
C Giant Tortoise
|
||||||
R Guardian Beast
|
R Guardian Beast
|
||||||
C Hasran Ogress
|
C Hasran Ogress
|
||||||
C Hasran Ogress
|
C Hasran Ogress
|
||||||
C Hurr Jackal
|
C Hurr Jackal
|
||||||
R Ifh-Bíff Efreet
|
R Ifh-Biff Efreet
|
||||||
R Island Fish Jasconius
|
R Island Fish Jasconius
|
||||||
R Island of Wak-Wak
|
R Island of Wak-Wak
|
||||||
R Jandor's Ring
|
R Jandor's Ring
|
||||||
R Jandor's Saddlebags
|
R Jandor's Saddlebags
|
||||||
U Jeweled Bird
|
U Jeweled Bird
|
||||||
R Jihad
|
R Jihad
|
||||||
R Junún Efreet
|
R Junun Efreet
|
||||||
R Juzám Djinn
|
R Juzam Djinn
|
||||||
U Khabál Ghoul
|
U Khabal Ghoul
|
||||||
R King Suleiman
|
R King Suleiman
|
||||||
C Kird Ape
|
C Kird Ape
|
||||||
U Library of Alexandria
|
U Library of Alexandria
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ R Cyclone
|
|||||||
C D'Avenant Archer
|
C D'Avenant Archer
|
||||||
R Dakkon Blackblade
|
R Dakkon Blackblade
|
||||||
R Dance of Many
|
R Dance of Many
|
||||||
C Dandân
|
C Dandan
|
||||||
C Divine Offering
|
C Divine Offering
|
||||||
C Emerald Dragonfly
|
C Emerald Dragonfly
|
||||||
U Enchantment Alteration
|
U Enchantment Alteration
|
||||||
@@ -56,7 +56,7 @@ C Flash Flood
|
|||||||
C Fountain of Youth
|
C Fountain of Youth
|
||||||
R Gabriel Angelfire
|
R Gabriel Angelfire
|
||||||
R Gauntlets of Chaos
|
R Gauntlets of Chaos
|
||||||
C Ghazbán Ogre
|
C Ghazban Ogre
|
||||||
C Giant Slug
|
C Giant Slug
|
||||||
U Goblin Artisans
|
U Goblin Artisans
|
||||||
C Goblin Digging Team
|
C Goblin Digging Team
|
||||||
|
|||||||
@@ -202,7 +202,7 @@ C Hull Breach
|
|||||||
M Jeleva, Nephalia's Scourge
|
M Jeleva, Nephalia's Scourge
|
||||||
U Jund Charm
|
U Jund Charm
|
||||||
U Leafdrake Roost
|
U Leafdrake Roost
|
||||||
U Lim-Dûl's Vault
|
U Lim-Dul's Vault
|
||||||
M Marath, Will of the Wild
|
M Marath, Will of the Wild
|
||||||
M Mayael the Anima
|
M Mayael the Anima
|
||||||
U Naya Charm
|
U Naya Charm
|
||||||
|
|||||||
@@ -127,7 +127,7 @@ C Saving Grasp
|
|||||||
C Scorch the Fields
|
C Scorch the Fields
|
||||||
C Scorned Villager
|
C Scorned Villager
|
||||||
C Screeching Skaab
|
C Screeching Skaab
|
||||||
R Séance
|
R Seance
|
||||||
U Secrets of the Dead
|
U Secrets of the Dead
|
||||||
U Shattered Perception
|
U Shattered Perception
|
||||||
C Shriekgeist
|
C Shriekgeist
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ U Cursed Land
|
|||||||
C D'Avenant Archer
|
C D'Avenant Archer
|
||||||
R Dance of Many
|
R Dance of Many
|
||||||
R Dancing Scimitar
|
R Dancing Scimitar
|
||||||
C Dandân
|
C Dandan
|
||||||
C Dark Maze
|
C Dark Maze
|
||||||
C Dark Ritual
|
C Dark Ritual
|
||||||
C Death Speakers
|
C Death Speakers
|
||||||
@@ -172,7 +172,7 @@ U Fyndhorn Elder
|
|||||||
R Game of Chaos
|
R Game of Chaos
|
||||||
C Gaseous Form
|
C Gaseous Form
|
||||||
R Gauntlets of Chaos
|
R Gauntlets of Chaos
|
||||||
C Ghazbán Ogre
|
C Ghazban Ogre
|
||||||
C Giant Growth
|
C Giant Growth
|
||||||
C Giant Spider
|
C Giant Spider
|
||||||
C Giant Strength
|
C Giant Strength
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ C Dwarven Warriors
|
|||||||
U Earth Elemental
|
U Earth Elemental
|
||||||
R Earthquake
|
R Earthquake
|
||||||
R Ebony Horse
|
R Ebony Horse
|
||||||
R El-Hajjâj
|
R El-Hajjaj
|
||||||
R Elder Land Wurm
|
R Elder Land Wurm
|
||||||
U Elven Riders
|
U Elven Riders
|
||||||
R Elvish Archers
|
R Elvish Archers
|
||||||
@@ -188,7 +188,7 @@ R Jade Monolith
|
|||||||
R Jandor's Saddlebags
|
R Jandor's Saddlebags
|
||||||
R Jayemdae Tome
|
R Jayemdae Tome
|
||||||
C Jump
|
C Jump
|
||||||
U Junún Efreet
|
U Junun Efreet
|
||||||
U Karma
|
U Karma
|
||||||
U Keldon Warlord
|
U Keldon Warlord
|
||||||
U Killer Bees
|
U Killer Bees
|
||||||
|
|||||||
@@ -213,19 +213,19 @@ R Land Cap
|
|||||||
U Lapis Lazuli Talisman
|
U Lapis Lazuli Talisman
|
||||||
C Lava Burst
|
C Lava Burst
|
||||||
R Lava Tubes
|
R Lava Tubes
|
||||||
C Legions of Lim-Dûl
|
C Legions of Lim-Dul
|
||||||
U Leshrac's Rite
|
U Leshrac's Rite
|
||||||
U Leshrac's Sigil
|
U Leshrac's Sigil
|
||||||
R Lhurgoyf
|
R Lhurgoyf
|
||||||
R Lightning Blow
|
R Lightning Blow
|
||||||
C Lim-Dûl's Cohort
|
C Lim-Dul's Cohort
|
||||||
U Lim-Dûl's Hex
|
U Lim-Dul's Hex
|
||||||
R Lost Order of Jarkeld
|
R Lost Order of Jarkeld
|
||||||
U Lure
|
U Lure
|
||||||
U Maddening Wind
|
U Maddening Wind
|
||||||
R Magus of the Unseen
|
R Magus of the Unseen
|
||||||
U Malachite Talisman
|
U Malachite Talisman
|
||||||
R Márton Stromgald
|
R Marton Stromgald
|
||||||
U Melee
|
U Melee
|
||||||
U Melting
|
U Melting
|
||||||
R Mercenaries
|
R Mercenaries
|
||||||
@@ -255,7 +255,7 @@ R Naked Singularity
|
|||||||
U Nature's Lore
|
U Nature's Lore
|
||||||
R Necropotence
|
R Necropotence
|
||||||
C Norritt
|
C Norritt
|
||||||
R Oath of Lim-Dûl
|
R Oath of Lim-Dul
|
||||||
U Onyx Talisman
|
U Onyx Talisman
|
||||||
U Orcish Cannoneers
|
U Orcish Cannoneers
|
||||||
C Orcish Conscripts
|
C Orcish Conscripts
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ R Dakmor Sorceress
|
|||||||
U Dark Offering
|
U Dark Offering
|
||||||
R Deathcoil Wurm
|
R Deathcoil Wurm
|
||||||
U Deep Wood
|
U Deep Wood
|
||||||
C Déjà Vu
|
C Deja Vu
|
||||||
R Denizen of the Deep
|
R Denizen of the Deep
|
||||||
R Earthquake
|
R Earthquake
|
||||||
R Exhaustion
|
R Exhaustion
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ R Cruel Tutor
|
|||||||
U Deep Wood
|
U Deep Wood
|
||||||
U Deep-Sea Serpent
|
U Deep-Sea Serpent
|
||||||
U Defiant Stand
|
U Defiant Stand
|
||||||
C Déjà Vu
|
C Deja Vu
|
||||||
U Desert Drake
|
U Desert Drake
|
||||||
R Devastation
|
R Devastation
|
||||||
C Devoted Hero
|
C Devoted Hero
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ U Earth Elemental
|
|||||||
C Earthbind
|
C Earthbind
|
||||||
R Earthquake
|
R Earthquake
|
||||||
R Ebony Horse
|
R Ebony Horse
|
||||||
R El-Hajjâj
|
R El-Hajjaj
|
||||||
R Elvish Archers
|
R Elvish Archers
|
||||||
U Energy Flux
|
U Energy Flux
|
||||||
C Erg Raiders
|
C Erg Raiders
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ S Cockatrice
|
|||||||
S Consecrate Land
|
S Consecrate Land
|
||||||
S Conspiracy
|
S Conspiracy
|
||||||
S Craw Giant
|
S Craw Giant
|
||||||
S Dandân
|
S Dandan
|
||||||
S Darkness
|
S Darkness
|
||||||
S Dauthi Slayer
|
S Dauthi Slayer
|
||||||
S Defiant Vanguard
|
S Defiant Vanguard
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ U Knight of the Holy Nimbus
|
|||||||
U Krosan Grip
|
U Krosan Grip
|
||||||
R Liege of the Pit
|
R Liege of the Pit
|
||||||
C Lightning Axe
|
C Lightning Axe
|
||||||
R Lim-Dûl the Necromancer
|
R Lim-Dul the Necromancer
|
||||||
R Living End
|
R Living End
|
||||||
U Locket of Yesterdays
|
U Locket of Yesterdays
|
||||||
C Looter il-Kor
|
C Looter il-Kor
|
||||||
|
|||||||
@@ -51,8 +51,8 @@ Deck Type=constructed
|
|||||||
1 Illusionary Wall
|
1 Illusionary Wall
|
||||||
1 Illusions of Grandeur
|
1 Illusions of Grandeur
|
||||||
1 Imaginary Pet
|
1 Imaginary Pet
|
||||||
1 Junún Efreet
|
1 Junun Efreet
|
||||||
1 Juzám Djinn
|
1 Juzam Djinn
|
||||||
1 Kezzerdrix
|
1 Kezzerdrix
|
||||||
1 Kuro, Pitlord
|
1 Kuro, Pitlord
|
||||||
1 Liege of the Pit
|
1 Liege of the Pit
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ Deck Type=constructed
|
|||||||
1 Grasp of Darkness|SOM
|
1 Grasp of Darkness|SOM
|
||||||
1 Unholy Grotto|ONS
|
1 Unholy Grotto|ONS
|
||||||
1 Spined Basher|ONS
|
1 Spined Basher|ONS
|
||||||
1 Legions of Lim-Dûl|ICE
|
1 Legions of Lim-Dul|ICE
|
||||||
1 Stromgald Crusader|CSP
|
1 Stromgald Crusader|CSP
|
||||||
1 Dreg Reaver|ALA
|
1 Dreg Reaver|ALA
|
||||||
1 Dross Crocodile|10E
|
1 Dross Crocodile|10E
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ Deck Type=constructed
|
|||||||
1 Feeding Frenzy|ONS
|
1 Feeding Frenzy|ONS
|
||||||
1 Spineless Thug|10E
|
1 Spineless Thug|10E
|
||||||
1 Call to the Grave|SCG
|
1 Call to the Grave|SCG
|
||||||
1 Lim-Dûl the Necromancer|TSP
|
1 Lim-Dul the Necromancer|TSP
|
||||||
1 Lord of the Undead|PLS
|
1 Lord of the Undead|PLS
|
||||||
1 Vengeful Dead|SCG
|
1 Vengeful Dead|SCG
|
||||||
1 Grave Defiler|APC
|
1 Grave Defiler|APC
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ Deck Type=constructed
|
|||||||
1 Inundate
|
1 Inundate
|
||||||
2 Boomerang
|
2 Boomerang
|
||||||
2 Eye of Nowhere
|
2 Eye of Nowhere
|
||||||
1 Dandân
|
1 Dandan
|
||||||
4 Faerie Swarm
|
4 Faerie Swarm
|
||||||
1 Manta Ray
|
1 Manta Ray
|
||||||
2 Invisibility
|
2 Invisibility
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ Deck Type=constructed
|
|||||||
2 Concentrate
|
2 Concentrate
|
||||||
1 Kami of the Crescent Moon
|
1 Kami of the Crescent Moon
|
||||||
1 Thalakos Seer
|
1 Thalakos Seer
|
||||||
1 Dandân
|
1 Dandan
|
||||||
1 Manta Ray
|
1 Manta Ray
|
||||||
1 Serpent of the Endless Sea
|
1 Serpent of the Endless Sea
|
||||||
1 Amnesia
|
1 Amnesia
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ Deck Type=constructed
|
|||||||
4 Geralf's Mindcrusher
|
4 Geralf's Mindcrusher
|
||||||
1 Grixis Slavedriver
|
1 Grixis Slavedriver
|
||||||
4 Havengul Runebinder
|
4 Havengul Runebinder
|
||||||
1 Lim-Dûl the Necromancer
|
1 Lim-Dul the Necromancer
|
||||||
3 Lord of the Undead
|
3 Lord of the Undead
|
||||||
1 Mikaeus, the Unhallowed
|
1 Mikaeus, the Unhallowed
|
||||||
2 Relentless Skaabs
|
2 Relentless Skaabs
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ Deck Type=constructed
|
|||||||
Set=FUT
|
Set=FUT
|
||||||
Image=fate_blaster.jpg
|
Image=fate_blaster.jpg
|
||||||
[main]
|
[main]
|
||||||
1 Dandân|TSB
|
1 Dandan|TSB
|
||||||
1 Uthden Troll|TSB
|
1 Uthden Troll|TSB
|
||||||
2 Barbed Shocker|TSP
|
2 Barbed Shocker|TSP
|
||||||
2 Sage of Epityr|TSP
|
2 Sage of Epityr|TSP
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ Image=snowscape.jpg
|
|||||||
1 Arcum's Weathervane|ICE
|
1 Arcum's Weathervane|ICE
|
||||||
2 Drift of the Dead|ICE
|
2 Drift of the Dead|ICE
|
||||||
1 Gangrenous Zombies|ICE
|
1 Gangrenous Zombies|ICE
|
||||||
2 Legions of Lim-Dûl|ICE
|
2 Legions of Lim-Dul|ICE
|
||||||
2 Essence Flare|ICE
|
2 Essence Flare|ICE
|
||||||
1 Iceberg|ICE
|
1 Iceberg|ICE
|
||||||
2 Mistfolk|ICE
|
2 Mistfolk|ICE
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ Water Wurm
|
|||||||
|
|
||||||
[Group MaxCnt=4 Percentage=10]
|
[Group MaxCnt=4 Percentage=10]
|
||||||
Stonybrook Banneret
|
Stonybrook Banneret
|
||||||
Dandân
|
Dandan
|
||||||
Hammerhead Shark
|
Hammerhead Shark
|
||||||
[/Group]
|
[/Group]
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ Dross Prowler
|
|||||||
Feeding Frenzy
|
Feeding Frenzy
|
||||||
Headless Horseman
|
Headless Horseman
|
||||||
Infectious Host
|
Infectious Host
|
||||||
Lim-Dûl's Cohort
|
Lim-Dul's Cohort
|
||||||
Organ Grinder
|
Organ Grinder
|
||||||
Phyrexian Crusader
|
Phyrexian Crusader
|
||||||
Rotlung Reanimator
|
Rotlung Reanimator
|
||||||
@@ -82,7 +82,7 @@ Dripping Dead
|
|||||||
Geth, Lord of the Vault
|
Geth, Lord of the Vault
|
||||||
Grixis Slavedriver
|
Grixis Slavedriver
|
||||||
Helldozer
|
Helldozer
|
||||||
Lim-Dûl the Necromancer
|
Lim-Dul the Necromancer
|
||||||
Tresserhorn Skyknight
|
Tresserhorn Skyknight
|
||||||
Twisted Abomination
|
Twisted Abomination
|
||||||
[/Group]
|
[/Group]
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ Deck Type=constructed
|
|||||||
2 Dwarven Miner|MIR
|
2 Dwarven Miner|MIR
|
||||||
2 Gorilla Shaman|ALL
|
2 Gorilla Shaman|ALL
|
||||||
4 Icequake|ICE
|
4 Icequake|ICE
|
||||||
4 Juzám Djinn|ARN
|
4 Juzam Djinn|ARN
|
||||||
4 Knight of Stromgald|ICE
|
4 Knight of Stromgald|ICE
|
||||||
4 Mishra's Factory|ATQ
|
4 Mishra's Factory|ATQ
|
||||||
4 Mox Jet|LEB
|
4 Mox Jet|LEB
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ Description=Akongo plays John's Meta-Weenie PCL deck.
|
|||||||
Deck Type=constructed
|
Deck Type=constructed
|
||||||
[main]
|
[main]
|
||||||
11 Forest|MIR
|
11 Forest|MIR
|
||||||
4 Ghazbán Ogre|ARN
|
4 Ghazban Ogre|ARN
|
||||||
4 Giant Growth|LEB
|
4 Giant Growth|LEB
|
||||||
3 Granger Guildmage|MIR
|
3 Granger Guildmage|MIR
|
||||||
4 Incinerate|MIR
|
4 Incinerate|MIR
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ Deck Type=constructed
|
|||||||
1 Fetid Horror|MIR
|
1 Fetid Horror|MIR
|
||||||
1 Gravebane Zombie|MIR
|
1 Gravebane Zombie|MIR
|
||||||
2 Hypnotic Specter|LEB
|
2 Hypnotic Specter|LEB
|
||||||
2 Junún Efreet|ARN
|
2 Junun Efreet|ARN
|
||||||
1 Kaervek's Hex|MIR
|
1 Kaervek's Hex|MIR
|
||||||
1 Mox Jet|LEB
|
1 Mox Jet|LEB
|
||||||
1 Nocturnal Raid|MIR
|
1 Nocturnal Raid|MIR
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ Card Reward=14% chosen card sets:5ED,MIR,VIS rules:green,creature rarity:C,U des
|
|||||||
2 Berserk|LEB
|
2 Berserk|LEB
|
||||||
16 Forest|MIR
|
16 Forest|MIR
|
||||||
4 Llanowar Elves|5ED
|
4 Llanowar Elves|5ED
|
||||||
4 Ghazbán Ogre|ARN
|
4 Ghazban Ogre|ARN
|
||||||
4 Giant Growth|LEB
|
4 Giant Growth|LEB
|
||||||
3 Harvest Wurm|WTH
|
3 Harvest Wurm|WTH
|
||||||
2 Heart of Yavimaya|ALL
|
2 Heart of Yavimaya|ALL
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ Deck Type=constructed
|
|||||||
1 Fork|LEB
|
1 Fork|LEB
|
||||||
4 Gemstone Mine|WTH
|
4 Gemstone Mine|WTH
|
||||||
1 Ivory Tower|ATQ
|
1 Ivory Tower|ATQ
|
||||||
1 Juzám Djinn|ARN
|
1 Juzam Djinn|ARN
|
||||||
1 Library of Alexandria|ARN
|
1 Library of Alexandria|ARN
|
||||||
2 Lightning Bolt|LEB
|
2 Lightning Bolt|LEB
|
||||||
4 Lotus Petal|TMP
|
4 Lotus Petal|TMP
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ Deck Type=constructed
|
|||||||
2 Emerald Charm|VIS
|
2 Emerald Charm|VIS
|
||||||
3 Fallow Wurm|WTH
|
3 Fallow Wurm|WTH
|
||||||
16 Forest|MIR
|
16 Forest|MIR
|
||||||
3 Ghazbán Ogre|ARN
|
3 Ghazban Ogre|ARN
|
||||||
3 Giant Growth|5ED
|
3 Giant Growth|5ED
|
||||||
4 Harvest Wurm|WTH
|
4 Harvest Wurm|WTH
|
||||||
2 Heart of Yavimaya|ALL
|
2 Heart of Yavimaya|ALL
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ Deck Type=constructed
|
|||||||
2 Desert Twister|ARN
|
2 Desert Twister|ARN
|
||||||
24 Forest|MIR
|
24 Forest|MIR
|
||||||
4 Llanowar Elves|5ED
|
4 Llanowar Elves|5ED
|
||||||
3 Ghazbán Ogre|ARN
|
3 Ghazban Ogre|ARN
|
||||||
3 Giant Growth|5ED
|
3 Giant Growth|5ED
|
||||||
2 Hurricane|5ED
|
2 Hurricane|5ED
|
||||||
3 River Boa|VIS
|
3 River Boa|VIS
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ Deck Type=constructed
|
|||||||
2 Greed|LEG
|
2 Greed|LEG
|
||||||
2 Howl from Beyond|LEB
|
2 Howl from Beyond|LEB
|
||||||
4 Hypnotic Specter|4ED
|
4 Hypnotic Specter|4ED
|
||||||
2 Juzám Djinn|ARN
|
2 Juzam Djinn|ARN
|
||||||
2 Lord of the Pit|LEB
|
2 Lord of the Pit|LEB
|
||||||
1 Mind Twist|LEB
|
1 Mind Twist|LEB
|
||||||
1 Mox Jet|LEB
|
1 Mox Jet|LEB
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ Wins=30
|
|||||||
Card Reward=33% chosen card sets:3ED,4ED,ARN,ATQ,DRK,LEG rules:green desc:a Green card;chosen card sets:3ED,4ED,ARN,ATQ,DRK,LEG rules:green desc:a Green card;3 green rares;50% 1 green rare
|
Card Reward=33% chosen card sets:3ED,4ED,ARN,ATQ,DRK,LEG rules:green desc:a Green card;chosen card sets:3ED,4ED,ARN,ATQ,DRK,LEG rules:green desc:a Green card;3 green rares;50% 1 green rare
|
||||||
Credit Reward=250
|
Credit Reward=250
|
||||||
HumanExtras=Concordant Crossroads
|
HumanExtras=Concordant Crossroads
|
||||||
AIExtras=Ghazbán Ogre
|
AIExtras=Ghazban Ogre
|
||||||
[metadata]
|
[metadata]
|
||||||
Name=quest7
|
Name=quest7
|
||||||
Title=Green Castle (Green)
|
Title=Green Castle (Green)
|
||||||
@@ -23,7 +23,7 @@ Deck Type=constructed
|
|||||||
22 Forest|4ED
|
22 Forest|4ED
|
||||||
1 Gaea's Avenger|ATQ
|
1 Gaea's Avenger|ATQ
|
||||||
4 Gaea's Liege|4ED
|
4 Gaea's Liege|4ED
|
||||||
2 Ifh-Bíff Efreet|ARN
|
2 Ifh-Biff Efreet|ARN
|
||||||
1 Island of Wak-Wak|ARN
|
1 Island of Wak-Wak|ARN
|
||||||
1 Ivory Tower|ATQ
|
1 Ivory Tower|ATQ
|
||||||
2 Jayemdae Tome|4ED
|
2 Jayemdae Tome|4ED
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ Deck Type=constructed
|
|||||||
2 Ashes to Ashes|DRK
|
2 Ashes to Ashes|DRK
|
||||||
2 City of Brass|CHR
|
2 City of Brass|CHR
|
||||||
3 Drain Life|2ED
|
3 Drain Life|2ED
|
||||||
2 El-Hajjâj|ARN
|
2 El-Hajjaj|ARN
|
||||||
2 Erg Raiders|ARN
|
2 Erg Raiders|ARN
|
||||||
6 Forest|2ED
|
6 Forest|2ED
|
||||||
2 Fungusaur|LEB
|
2 Fungusaur|LEB
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ Deck Type=constructed
|
|||||||
4 Bayou|2ED
|
4 Bayou|2ED
|
||||||
2 City of Brass|CHR
|
2 City of Brass|CHR
|
||||||
3 Drain Life|2ED
|
3 Drain Life|2ED
|
||||||
2 El-Hajjâj|ARN
|
2 El-Hajjaj|ARN
|
||||||
2 Erg Raiders|ARN
|
2 Erg Raiders|ARN
|
||||||
2 Forest|2ED
|
2 Forest|2ED
|
||||||
2 Giant Growth|2ED
|
2 Giant Growth|2ED
|
||||||
@@ -19,7 +19,7 @@ Deck Type=constructed
|
|||||||
2 Greed|LEG
|
2 Greed|LEG
|
||||||
4 Healing Salve|2ED
|
4 Healing Salve|2ED
|
||||||
2 Hurricane|2ED
|
2 Hurricane|2ED
|
||||||
2 Juzám Djinn|ARN
|
2 Juzam Djinn|ARN
|
||||||
3 Onulet|ATQ
|
3 Onulet|ATQ
|
||||||
4 Plains|2ED
|
4 Plains|2ED
|
||||||
4 Savannah|2ED
|
4 Savannah|2ED
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ Deck Type=constructed
|
|||||||
2 Energy Flux|ATQ
|
2 Energy Flux|ATQ
|
||||||
7 Forest|2ED
|
7 Forest|2ED
|
||||||
7 Island|2ED
|
7 Island|2ED
|
||||||
2 Junún Efreet|ARN
|
2 Junun Efreet|ARN
|
||||||
2 Lord of the Pit|2ED
|
2 Lord of the Pit|2ED
|
||||||
2 Mahamoti Djinn|2ED
|
2 Mahamoti Djinn|2ED
|
||||||
2 Phantasmal Forces|2ED
|
2 Phantasmal Forces|2ED
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ Deck Type=constructed
|
|||||||
2 Erhnam Djinn|ARN
|
2 Erhnam Djinn|ARN
|
||||||
4 Forest|4ED
|
4 Forest|4ED
|
||||||
5 Island|4ED
|
5 Island|4ED
|
||||||
1 Junún Efreet|ARN
|
1 Junun Efreet|ARN
|
||||||
2 Lord of the Pit|2ED
|
2 Lord of the Pit|2ED
|
||||||
2 Mahamoti Djinn|2ED
|
2 Mahamoti Djinn|2ED
|
||||||
1 Phantasmal Forces|2ED
|
1 Phantasmal Forces|2ED
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ Deck Type=constructed
|
|||||||
3 Drudge Skeletons|4ED
|
3 Drudge Skeletons|4ED
|
||||||
3 Healing Salve|4ED
|
3 Healing Salve|4ED
|
||||||
3 Holy Strength|4ED
|
3 Holy Strength|4ED
|
||||||
2 Khabál Ghoul|ARN
|
2 Khabal Ghoul|ARN
|
||||||
2 Ornithopter|4ED
|
2 Ornithopter|4ED
|
||||||
3 Osai Vultures|LEG
|
3 Osai Vultures|LEG
|
||||||
3 Pestilence|4ED
|
3 Pestilence|4ED
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ Deck Type=constructed
|
|||||||
2 Fellwar Stone|DRK
|
2 Fellwar Stone|DRK
|
||||||
4 Hypnotic Specter|4ED
|
4 Hypnotic Specter|4ED
|
||||||
9 Island|4ED
|
9 Island|4ED
|
||||||
2 Junún Efreet|ARN
|
2 Junun Efreet|ARN
|
||||||
2 Mana Drain|LEG
|
2 Mana Drain|LEG
|
||||||
1 Mind Twist|LEB
|
1 Mind Twist|LEB
|
||||||
2 Phantasmal Forces|LEB
|
2 Phantasmal Forces|LEB
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ Deck Type=constructed
|
|||||||
3 Bog Rats|DRK
|
3 Bog Rats|DRK
|
||||||
3 Erg Raiders|ARN
|
3 Erg Raiders|ARN
|
||||||
2 Frozen Shade|LEB
|
2 Frozen Shade|LEB
|
||||||
2 Junún Efreet|ARN
|
2 Junun Efreet|ARN
|
||||||
2 Kormus Bell|LEB
|
2 Kormus Bell|LEB
|
||||||
4 Lord of the Pit|LEB
|
4 Lord of the Pit|LEB
|
||||||
4 Mishra's Factory|ATQ
|
4 Mishra's Factory|ATQ
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ Deck Type=constructed
|
|||||||
4 Animate Dead|LEB
|
4 Animate Dead|LEB
|
||||||
4 Black Knight|4ED
|
4 Black Knight|4ED
|
||||||
4 Erg Raiders|ARN
|
4 Erg Raiders|ARN
|
||||||
2 Khabál Ghoul|ARN
|
2 Khabal Ghoul|ARN
|
||||||
4 Lord of the Pit|LEB
|
4 Lord of the Pit|LEB
|
||||||
4 Mishra's Factory|ATQ
|
4 Mishra's Factory|ATQ
|
||||||
4 Nether Shadow|LEB
|
4 Nether Shadow|LEB
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ Deck Type=constructed
|
|||||||
[main]
|
[main]
|
||||||
3 Counterspell|4ED
|
3 Counterspell|4ED
|
||||||
4 Creature Bond|LEB
|
4 Creature Bond|LEB
|
||||||
4 Dandân|ARN
|
4 Dandan|ARN
|
||||||
4 Giant Tortoise|ARN
|
4 Giant Tortoise|ARN
|
||||||
22 Island|4ED
|
22 Island|4ED
|
||||||
2 Island Fish Jasconius|ARN
|
2 Island Fish Jasconius|ARN
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ Deck Type=constructed
|
|||||||
[main]
|
[main]
|
||||||
4 Azure Drake|LEG
|
4 Azure Drake|LEG
|
||||||
4 Counterspell|4ED
|
4 Counterspell|4ED
|
||||||
1 Dandân|ARN
|
1 Dandan|ARN
|
||||||
4 Giant Tortoise|ARN
|
4 Giant Tortoise|ARN
|
||||||
26 Island|4ED
|
26 Island|4ED
|
||||||
2 Island Fish Jasconius|ARN
|
2 Island Fish Jasconius|ARN
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ Deck Type=constructed
|
|||||||
4 Bad Moon|2ED
|
4 Bad Moon|2ED
|
||||||
4 Black Knight|2ED
|
4 Black Knight|2ED
|
||||||
2 Drudge Skeletons|2ED
|
2 Drudge Skeletons|2ED
|
||||||
3 El-Hajjâj|ARN
|
3 El-Hajjaj|ARN
|
||||||
2 Fear|LEB
|
2 Fear|LEB
|
||||||
2 Flying Carpet|ARN
|
2 Flying Carpet|ARN
|
||||||
2 Frozen Shade|LEB
|
2 Frozen Shade|LEB
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ Description=Black hard-to-block creatures with special abilities.
|
|||||||
Deck Type=constructed
|
Deck Type=constructed
|
||||||
[main]
|
[main]
|
||||||
3 Bad Moon|LEB
|
3 Bad Moon|LEB
|
||||||
4 El-Hajjâj|ARN
|
4 El-Hajjaj|ARN
|
||||||
4 Fear|LEB
|
4 Fear|LEB
|
||||||
2 Frozen Shade|LEB
|
2 Frozen Shade|LEB
|
||||||
4 Hypnotic Specter|2ED
|
4 Hypnotic Specter|2ED
|
||||||
|
|||||||
@@ -1,18 +1,16 @@
|
|||||||
package forge.limited;
|
package forge.limited;
|
||||||
|
|
||||||
|
import com.esotericsoftware.minlog.Log;
|
||||||
|
import forge.properties.ForgeConstants;
|
||||||
|
import forge.util.FileUtil;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
|
|
||||||
import com.esotericsoftware.minlog.Log;
|
|
||||||
|
|
||||||
import forge.properties.ForgeConstants;
|
|
||||||
import forge.util.FileUtil;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ReadDraftRankings class.
|
* ReadDraftRankings class.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
public class ReadDraftRankings {
|
public class ReadDraftRankings {
|
||||||
|
|
||||||
@@ -32,10 +30,6 @@ public class ReadDraftRankings {
|
|||||||
this.draftRankings = this.readFile(FileUtil.readFile(ForgeConstants.DRAFT_RANKINGS_FILE));
|
this.draftRankings = this.readFile(FileUtil.readFile(ForgeConstants.DRAFT_RANKINGS_FILE));
|
||||||
} // setup()
|
} // setup()
|
||||||
|
|
||||||
private static String getRankingCardName(final String name) {
|
|
||||||
return StringUtils.replaceChars(name.trim(), "-áàâéèêúùûíìîóòô", " aaaeeeuuuiiiooo").replaceAll("[^A-Za-z ]", "");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* readFile.
|
* readFile.
|
||||||
@@ -45,10 +39,10 @@ public class ReadDraftRankings {
|
|||||||
* a {@link java.io.File} object.
|
* a {@link java.io.File} object.
|
||||||
* @return a {@link java.util.Map} object.
|
* @return a {@link java.util.Map} object.
|
||||||
*/
|
*/
|
||||||
private Map<String, Map<String, Integer>> readFile(final List<String> lines) {
|
private Map<String, Map<String, Integer>> readFile(List<String> lines) {
|
||||||
|
|
||||||
final Map<String, Map<String, Integer>> map = new HashMap<String, Map<String, Integer>>();
|
final Map<String, Map<String, Integer>> map = new HashMap<String, Map<String, Integer>>();
|
||||||
for (final String line : lines) {
|
for (String line : lines) {
|
||||||
// stop reading if end of file or blank line is read
|
// stop reading if end of file or blank line is read
|
||||||
if (line == null || line.length() == 0) {
|
if (line == null || line.length() == 0) {
|
||||||
break;
|
break;
|
||||||
@@ -59,7 +53,7 @@ public class ReadDraftRankings {
|
|||||||
}
|
}
|
||||||
final String[] s = line.split("\\|");
|
final String[] s = line.split("\\|");
|
||||||
final String rankStr = s[0].trim().substring(1);
|
final String rankStr = s[0].trim().substring(1);
|
||||||
final String name = getRankingCardName(s[1]);
|
final String name = s[1].trim().replaceAll("-", " ").replaceAll("[^A-Za-z ]", "");
|
||||||
// final String rarity = s[2].trim();
|
// final String rarity = s[2].trim();
|
||||||
final String edition = s[3].trim();
|
final String edition = s[3].trim();
|
||||||
|
|
||||||
@@ -74,7 +68,7 @@ public class ReadDraftRankings {
|
|||||||
} else {
|
} else {
|
||||||
setSizes.put(edition, rank);
|
setSizes.put(edition, rank);
|
||||||
}
|
}
|
||||||
} catch (final NumberFormatException nfe) {
|
} catch (NumberFormatException nfe) {
|
||||||
Log.warn("NumberFormatException: " + nfe.getMessage());
|
Log.warn("NumberFormatException: " + nfe.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -91,17 +85,19 @@ public class ReadDraftRankings {
|
|||||||
* the card's edition
|
* the card's edition
|
||||||
* @return ranking
|
* @return ranking
|
||||||
*/
|
*/
|
||||||
public Double getRanking(final String cardName, final String edition) {
|
public Double getRanking(String cardName, String edition) {
|
||||||
|
Double rank = null;
|
||||||
|
|
||||||
if (draftRankings.containsKey(edition)) {
|
if (draftRankings.containsKey(edition)) {
|
||||||
final String safeName = getRankingCardName(cardName);
|
String safeName = cardName.replaceAll("-", " ").replaceAll("[^A-Za-z ]", "");
|
||||||
|
|
||||||
// If a card has no ranking, don't try to look it up --BBU
|
// If a card has no ranking, don't try to look it up --BBU
|
||||||
if (draftRankings.get(edition).get(safeName) == null) {
|
if (draftRankings.get(edition).get(safeName) == null) {
|
||||||
// System.out.println("WARNING! " + safeName + " NOT found in " + edition);
|
// System.out.println("WARNING! " + safeName + " NOT found in " + edition);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return Double.valueOf(draftRankings.get(edition).get(safeName).doubleValue() / setSizes.get(edition).doubleValue());
|
rank = (double) draftRankings.get(edition).get(safeName) / (double) setSizes.get(edition);
|
||||||
}
|
}
|
||||||
return null;
|
return rank;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user